From b31428a67c1b2097408b09977a911e4461b76a80 Mon Sep 17 00:00:00 2001 From: Kuingsmile <96409857+Kuingsmile@users.noreply.github.com> Date: Tue, 12 Aug 2025 23:12:16 +0800 Subject: [PATCH] :sparkles: Feature(custom): optimize color under dark mode of gallery and setting page --- src/renderer/manage/pages/css/LoginPage.css | 1484 ++++---- src/renderer/pages/css/Gallery.css | 3030 ++++++++--------- src/renderer/pages/css/PicgoSetting.css | 2 +- src/renderer/pages/css/PluginPage.css | 1522 ++++----- src/renderer/pages/css/UploadPage.css | 2 +- src/renderer/pages/css/UploaderConfigPage.css | 590 ++-- src/renderer/pages/picbeds/index.vue | 1480 ++++---- src/renderer/public/errorLoading.png | Bin 3626 -> 80975 bytes 8 files changed, 4055 insertions(+), 4055 deletions(-) diff --git a/src/renderer/manage/pages/css/LoginPage.css b/src/renderer/manage/pages/css/LoginPage.css index f806e377..e391b3ae 100644 --- a/src/renderer/manage/pages/css/LoginPage.css +++ b/src/renderer/manage/pages/css/LoginPage.css @@ -1,743 +1,743 @@ -/* Container */ -.login-container { - padding: 1rem; - width: 100%; - margin: 0; - display: flex; - flex-direction: column; - gap: 1.25rem; - min-height: 100vh; - box-sizing: border-box; - overflow-y: auto; -} - -/* Card Base */ -.login-card { - background: var(--color-surface); - border: 1px solid var(--color-border-secondary); - border-radius: var(--radius-xl); - overflow: hidden; - transition: var(--transition-medium); - box-shadow: var(--shadow-sm); -} - -.login-card:hover { - box-shadow: var(--shadow-md); - border-color: var(--color-border); -} - -/* Header Card */ -.header-card .card-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 1rem 1.5rem; - border-bottom: 1px solid var(--color-border-secondary); - flex-wrap: wrap; - gap: 1rem; -} - -.header-content { - display: flex; - align-items: center; - gap: 1rem; - flex: 1; -} - -.header-icon { - color: var(--color-blue-common); - display: flex; - align-items: center; -} - -.header-content h1 { - font-size: 1.5rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0; - letter-spacing: -0.025em; -} - -.header-content p { - font-size: 0.875rem; - color: var(--color-text-secondary); - margin: 0; -} - -.header-actions { - display: flex; - align-items: center; - gap: 0.75rem; - flex-wrap: wrap; -} - -/* Action Button Base */ -.action-button { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.5rem 1rem; - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - background: var(--color-surface-elevated); - color: var(--color-text-primary); - font-size: 0.875rem; - font-weight: 500; - text-decoration: none; - transition: var(--transition-fast); - cursor: pointer; - white-space: nowrap; -} - -.action-button:hover { - background: var(--color-background-secondary); - border-color: var(--color-border-darker); - transform: translateY(-1px); - box-shadow: var(--shadow-sm); -} - -.action-button:active { - transform: translateY(0); - box-shadow: none; -} - -.action-button.primary { - background: var(--color-blue-common); - color: white; - border-color: var(--color-blue-common); -} - -.action-button.primary:hover { - background: var(--color-accent); - border-color: var(--color-accent); -} - -.action-button.secondary { - background: var(--color-background-secondary); - color: var(--color-text-secondary); -} - -.action-button.danger { - background: var(--color-danger); - color: white; - border-color: var(--color-danger); -} - -.action-button.danger:hover { - background: var(--color-danger); - border-color: var(--color-danger); -} - -/* Tabs */ -.tabs-card { - border-radius: var(--radius-lg); -} - -.tabs-container { - padding: 0.75rem 1rem; - overflow: hidden; -} - -.tabs-nav-wrapper { - position: relative; - display: flex; - align-items: center; -} - -.tabs-nav { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; - width: 100%; - align-items: center; -} - -.tab-button { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.5rem 1rem; - border: 1px solid var(--color-border-secondary); - border-radius: var(--radius-md); - background: var(--color-background-secondary); - color: var(--color-text-secondary); - font-size: 0.875rem; - font-weight: 500; - text-decoration: none; - transition: var(--transition-fast); - cursor: pointer; - white-space: nowrap; - min-width: fit-content; - flex: 0 0 auto; -} - -.tab-button:hover { - background: var(--color-surface-elevated); - border-color: var(--color-border); - color: var(--color-text-primary); -} - -.tab-button.active { - background: var(--color-primary); - color: white; - border-color: var(--color-primary); -} - -.tab-icon { - width: 16px; - height: 16px; - object-fit: contain; -} - -/* Content */ -.content-card { - flex: 1; -} - -.tab-content { - padding: 1.5rem; -} - -/* Config List */ -.config-list-container { - width: 100%; -} - -.empty-state { - text-align: center; - padding: 3rem 1rem; - color: var(--color-text-secondary); -} - -.empty-icon { - color: var(--color-text-tertiary); - margin-bottom: 1rem; -} - -.empty-state h3 { - margin: 0 0 0.5rem 0; - color: var(--color-text-primary); - font-size: 1.25rem; - font-weight: 600; -} - -.empty-state p { - margin: 0; - font-size: 0.875rem; -} - -.config-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); - gap: 1.5rem; -} - -.config-item { - background: var(--color-background-secondary); - border: 1px solid var(--color-border-secondary); - border-radius: var(--radius-lg); - padding: 1.25rem; - transition: var(--transition-medium); -} - -.config-item:hover { - border-color: var(--color-border); - box-shadow: var(--shadow-sm); -} - -.config-header { - display: flex; - align-items: center; - gap: 1rem; - margin-bottom: 1rem; -} - -.config-icon { - width: 40px; - height: 40px; - object-fit: contain; -} - -.config-info { - flex: 1; -} - -.config-alias { - margin: 0 0 0.25rem 0; - font-size: 1rem; - font-weight: 600; - color: var(--color-text-primary); -} - -.config-type { - margin: 0; - font-size: 0.875rem; - color: var(--color-text-secondary); -} - -.config-details { - margin-bottom: 1rem; -} - -.details-button { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.5rem; - border: none; - border-radius: var(--radius-md); - background: var(--color-surface-elevated); - color: var(--color-text-secondary); - font-size: 0.875rem; - cursor: pointer; - transition: var(--transition-fast); -} - -.details-button:hover { - background: var(--color-background-secondary); - color: var(--color-text-primary); -} - -.details-button .rotated { - transform: rotate(180deg); -} - -.config-table { - margin-top: 0.75rem; - border: 1px solid var(--color-border-secondary); - border-radius: var(--radius-md); - overflow: hidden; -} - -.table-row { - display: flex; - border-bottom: 1px solid var(--color-border-secondary); - cursor: pointer; - transition: var(--transition-fast); -} - -.table-row:hover { - background: var(--color-surface-elevated); -} - -.table-row:last-child { - border-bottom: none; -} - -.table-key, -.table-value { - padding: 0.5rem 0.75rem; - font-size: 0.875rem; -} - -.table-key { - background: var(--color-background-secondary); - color: var(--color-text-secondary); - font-weight: 500; - width: 120px; - flex-shrink: 0; -} - -.table-value { - flex: 1; - color: var(--color-text-primary); - word-break: break-all; -} - -.config-actions { - display: flex; - gap: 0.75rem; -} - -/* PicBed Config */ -.picbed-config-container { - width: 100%; -} - -.picbed-config { - max-width: 800px; - margin: 0 auto; -} - -.info-section { - margin-bottom: 2rem; -} - -.info-card { - display: flex; - align-items: flex-start; - gap: 1rem; - padding: 1rem; - border-radius: var(--radius-md); - margin-bottom: 1rem; -} - -.info-card.primary { - background: rgba(99, 102, 241, 0.1); - border: 1px solid rgba(99, 102, 241, 0.2); - color: var(--color-primary); -} - -.info-card.reference { - background: rgba(107, 114, 128, 0.1); - border: 1px solid rgba(107, 114, 128, 0.2); - color: var(--color-text-secondary); -} - -.info-card p { - margin: 0; - font-size: 0.875rem; - line-height: 1.5; -} - -.link-button { - color: var(--color-primary); - text-decoration: underline; - background: none; - border: none; - cursor: pointer; - font-size: inherit; - padding: 0; -} - -.link-button:hover { - color: var(--color-primary-hover); -} - -/* Form */ -.config-form { - margin-bottom: 2rem; -} - -.form-group { - margin-bottom: 1.5rem; -} - -.form-label { - display: flex; - align-items: center; - gap: 0.5rem; - font-size: 0.875rem; - font-weight: 500; - color: var(--color-text-primary); - margin-bottom: 0.5rem; -} - -.tooltip-button { - display: flex; - align-items: center; - justify-content: center; - width: 20px; - height: 20px; - border: none; - border-radius: 50%; - background: var(--color-background-secondary); - color: var(--color-text-tertiary); - cursor: help; - transition: var(--transition-fast); -} - -.tooltip-button:hover { - background: var(--color-border); - color: var(--color-text-secondary); -} - -.form-input, -.form-select { - width: 100%; - padding: 0.75rem; - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - background: var(--color-background-primary); - color: var(--color-text-primary); - font-size: 0.875rem; - transition: var(--transition-fast); -} - -.form-input:focus, -.form-select:focus { - outline: none; - border-color: var(--color-primary); - box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); -} - -.form-input:disabled { - background: var(--color-background-secondary); - color: var(--color-text-tertiary); - cursor: not-allowed; -} - -/* Custom Switch */ -.custom-switch { - position: relative; - display: inline-block; - width: 48px; - height: 24px; -} - -.custom-switch input { - opacity: 0; - width: 0; - height: 0; -} - -.switch-slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: var(--color-border); - transition: var(--transition-fast); - border-radius: 24px; -} - -.switch-slider:before { - position: absolute; - content: ""; - height: 18px; - width: 18px; - left: 3px; - bottom: 3px; - background-color: white; - transition: var(--transition-fast); - border-radius: 50%; -} - -input:checked + .switch-slider { - background-color: var(--color-success); -} - -input:checked + .switch-slider:before { - transform: translateX(24px); -} - -/* Action Section */ -.action-section { - display: flex; - justify-content: space-between; - align-items: center; - gap: 1rem; - margin-bottom: 2rem; - flex-wrap: wrap; -} - -.import-section { - flex: 1; -} - -.main-actions { - display: flex; - gap: 0.75rem; -} - -/* Dropdown */ -.dropdown-container { - position: relative; -} - -.dropdown-trigger { - justify-content: space-between; - min-width: 200px; -} - -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - right: 0; - background: var(--color-surface-elevated); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - box-shadow: var(--shadow-lg); - z-index: 50; - margin-top: 0.25rem; - max-height: 200px; - overflow-y: auto; -} - -.dropdown-item { - display: block; - width: 100%; - padding: 0.75rem; - border: none; - background: none; - color: var(--color-text-primary); - font-size: 0.875rem; - text-align: left; - cursor: pointer; - transition: var(--transition-fast); -} - -.dropdown-item:hover { - background: var(--color-background-secondary); -} - -/* Config Table Section */ -.config-table-section { - margin-top: 2rem; -} - -.config-table-section h3 { - margin: 0 0 1rem 0; - font-size: 1.125rem; - font-weight: 600; - color: var(--color-text-primary); -} - -.responsive-table { - overflow-x: auto; - border: 1px solid var(--color-border-secondary); - border-radius: var(--radius-md); -} - -.config-table { - width: 100%; - border-collapse: collapse; - font-size: 0.875rem; -} - -.config-table th { - background: var(--color-background-secondary); - color: var(--color-text-secondary); - font-weight: 500; - padding: 0.75rem; - text-align: center; - border-bottom: 1px solid var(--color-border-secondary); -} - -.config-table td { - padding: 0.75rem; - text-align: center; - border-bottom: 1px solid var(--color-border-secondary); - cursor: pointer; - transition: var(--transition-fast); -} - -.config-table td:hover { - background: var(--color-surface-elevated); -} - -.config-table tr:last-child td { - border-bottom: none; -} - -/* Responsive */ -@media (max-width: 768px) { - .login-container { - padding: 0.75rem; - gap: 1rem; - } - - .header-card .card-header { - padding: 0.75rem 1rem; - flex-direction: column; - align-items: flex-start; - gap: 0.75rem; - } - - .header-actions { - width: 100%; - justify-content: flex-end; - } - - .tabs-container { - padding: 0.5rem 0.75rem; - } - - .tabs-nav { - gap: 0.375rem; - } - - .tab-button { - padding: 0.5rem 0.75rem; - font-size: 0.8rem; - max-width: 150px; - } - - .tab-icon { - width: 14px; - height: 14px; - } - - .config-grid { - grid-template-columns: 1fr; - } - - .action-section { - flex-direction: column; - align-items: stretch; - } - - .main-actions { - width: 100%; - justify-content: stretch; - } - - .main-actions .action-button { - flex: 1; - } -} - -@media (max-width: 480px) { - .login-container { - padding: 0.5rem; - } - - .tabs-container { - padding: 0.5rem; - } - - .tab-button { - padding: 0.375rem 0.5rem; - font-size: 0.75rem; - max-width: 120px; - } - - .tab-button span { - display: none; - } - - .tab-button.active span { - display: inline; - } -} - -/* Form validation styles */ -.form-group.has-error .form-label { - color: var(--color-error); -} - -.form-input.error, -.form-select.error { - border-color: var(--color-error); - background-color: var(--color-error-surface); -} - -.form-input.error:focus, -.form-select.error:focus { - border-color: var(--color-error); - box-shadow: 0 0 0 2px var(--color-error-surface); -} - -.required-marker { - color: var(--color-error); - margin-left: 0.25rem; - font-size: 1rem; - font-weight: 600; -} - -.error-message { - color: var(--color-error); - font-size: 0.75rem; - margin-top: 0.25rem; - display: flex; - align-items: center; - gap: 0.25rem; -} - -.error-message::before { - content: "⚠"; - font-size: 0.875rem; +/* Container */ +.login-container { + padding: 1rem; + width: 100%; + margin: 0; + display: flex; + flex-direction: column; + gap: 1.25rem; + min-height: 100vh; + box-sizing: border-box; + overflow-y: auto; +} + +/* Card Base */ +.login-card { + background: var(--color-surface); + border: 1px solid var(--color-border-secondary); + border-radius: var(--radius-xl); + overflow: hidden; + transition: var(--transition-medium); + box-shadow: var(--shadow-sm); +} + +.login-card:hover { + box-shadow: var(--shadow-md); + border-color: var(--color-border); +} + +/* Header Card */ +.header-card .card-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem 1.5rem; + border-bottom: 1px solid var(--color-border-secondary); + flex-wrap: wrap; + gap: 1rem; +} + +.header-content { + display: flex; + align-items: center; + gap: 1rem; + flex: 1; +} + +.header-icon { + color: var(--color-blue-common); + display: flex; + align-items: center; +} + +.header-content h1 { + font-size: 1.5rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0; + letter-spacing: -0.025em; +} + +.header-content p { + font-size: 0.875rem; + color: var(--color-text-secondary); + margin: 0; +} + +.header-actions { + display: flex; + align-items: center; + gap: 0.75rem; + flex-wrap: wrap; +} + +/* Action Button Base */ +.action-button { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 1rem; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-surface-elevated); + color: var(--color-text-primary); + font-size: 0.875rem; + font-weight: 500; + text-decoration: none; + transition: var(--transition-fast); + cursor: pointer; + white-space: nowrap; +} + +.action-button:hover { + background: var(--color-background-secondary); + border-color: var(--color-border-darker); + transform: translateY(-1px); + box-shadow: var(--shadow-sm); +} + +.action-button:active { + transform: translateY(0); + box-shadow: none; +} + +.action-button.primary { + background: var(--color-blue-common); + color: white; + border-color: var(--color-blue-common); +} + +.action-button.primary:hover { + background: var(--color-accent); + border-color: var(--color-accent); +} + +.action-button.secondary { + background: var(--color-background-secondary); + color: var(--color-text-secondary); +} + +.action-button.danger { + background: var(--color-danger); + color: white; + border-color: var(--color-danger); +} + +.action-button.danger:hover { + background: var(--color-danger); + border-color: var(--color-danger); +} + +/* Tabs */ +.tabs-card { + border-radius: var(--radius-lg); +} + +.tabs-container { + padding: 0.75rem 1rem; + overflow: hidden; +} + +.tabs-nav-wrapper { + position: relative; + display: flex; + align-items: center; +} + +.tabs-nav { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + width: 100%; + align-items: center; +} + +.tab-button { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 1rem; + border: 1px solid var(--color-border-secondary); + border-radius: var(--radius-md); + background: var( --color-surface-elevated); + color: var(--color-text-secondary); + font-size: 0.875rem; + font-weight: 500; + text-decoration: none; + transition: var(--transition-fast); + cursor: pointer; + white-space: nowrap; + min-width: fit-content; + flex: 0 0 auto; +} + +.tab-button:hover { + background: var(--color-surface-elevated); + border-color: var(--color-border); + color: var(--color-text-primary); +} + +.tab-button.active { + background: var(--color-primary); + color: white; + border-color: var(--color-primary); +} + +.tab-icon { + width: 16px; + height: 16px; + object-fit: contain; +} + +/* Content */ +.content-card { + flex: 1; +} + +.tab-content { + padding: 1.5rem; +} + +/* Config List */ +.config-list-container { + width: 100%; +} + +.empty-state { + text-align: center; + padding: 3rem 1rem; + color: var(--color-text-secondary); +} + +.empty-icon { + color: var(--color-text-tertiary); + margin-bottom: 1rem; +} + +.empty-state h3 { + margin: 0 0 0.5rem 0; + color: var(--color-text-primary); + font-size: 1.25rem; + font-weight: 600; +} + +.empty-state p { + margin: 0; + font-size: 0.875rem; +} + +.config-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 1.5rem; +} + +.config-item { + background: var( --color-surface-elevated); + border: 1px solid var(--color-border-secondary); + border-radius: var(--radius-lg); + padding: 1.25rem; + transition: var(--transition-medium); +} + +.config-item:hover { + border-color: var(--color-border); + box-shadow: var(--shadow-sm); +} + +.config-header { + display: flex; + align-items: center; + gap: 1rem; + margin-bottom: 1rem; +} + +.config-icon { + width: 40px; + height: 40px; + object-fit: contain; +} + +.config-info { + flex: 1; +} + +.config-alias { + margin: 0 0 0.25rem 0; + font-size: 1rem; + font-weight: 600; + color: var(--color-text-primary); +} + +.config-type { + margin: 0; + font-size: 0.875rem; + color: var(--color-text-secondary); +} + +.config-details { + margin-bottom: 1rem; +} + +.details-button { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem; + border: none; + border-radius: var(--radius-md); + background: var(--color-surface-elevated); + color: var(--color-text-secondary); + font-size: 0.875rem; + cursor: pointer; + transition: var(--transition-fast); +} + +.details-button:hover { + background: var(--color-background-secondary); + color: var(--color-text-primary); +} + +.details-button .rotated { + transform: rotate(180deg); +} + +.config-table { + margin-top: 0.75rem; + border: 1px solid var(--color-border-secondary); + border-radius: var(--radius-md); + overflow: hidden; +} + +.table-row { + display: flex; + border-bottom: 1px solid var(--color-border-secondary); + cursor: pointer; + transition: var(--transition-fast); +} + +.table-row:hover { + background: var(--color-surface-elevated); +} + +.table-row:last-child { + border-bottom: none; +} + +.table-key, +.table-value { + padding: 0.5rem 0.75rem; + font-size: 0.875rem; +} + +.table-key { + background: var(--color-background-secondary); + color: var(--color-text-secondary); + font-weight: 500; + width: 120px; + flex-shrink: 0; +} + +.table-value { + flex: 1; + color: var(--color-text-primary); + word-break: break-all; +} + +.config-actions { + display: flex; + gap: 0.75rem; +} + +/* PicBed Config */ +.picbed-config-container { + width: 100%; +} + +.picbed-config { + max-width: 800px; + margin: 0 auto; +} + +.info-section { + margin-bottom: 2rem; +} + +.info-card { + display: flex; + align-items: flex-start; + gap: 1rem; + padding: 1rem; + border-radius: var(--radius-md); + margin-bottom: 1rem; +} + +.info-card.primary { + background: rgba(99, 102, 241, 0.1); + border: 1px solid rgba(99, 102, 241, 0.2); + color: var(--color-primary); +} + +.info-card.reference { + background: rgba(107, 114, 128, 0.1); + border: 1px solid rgba(107, 114, 128, 0.2); + color: var(--color-text-secondary); +} + +.info-card p { + margin: 0; + font-size: 0.875rem; + line-height: 1.5; +} + +.link-button { + color: var(--color-primary); + text-decoration: underline; + background: none; + border: none; + cursor: pointer; + font-size: inherit; + padding: 0; +} + +.link-button:hover { + color: var(--color-primary-hover); +} + +/* Form */ +.config-form { + margin-bottom: 2rem; +} + +.form-group { + margin-bottom: 1.5rem; +} + +.form-label { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 0.875rem; + font-weight: 500; + color: var(--color-text-primary); + margin-bottom: 0.5rem; +} + +.tooltip-button { + display: flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + border: none; + border-radius: 50%; + background: var(--color-background-secondary); + color: var(--color-text-tertiary); + cursor: help; + transition: var(--transition-fast); +} + +.tooltip-button:hover { + background: var(--color-border); + color: var(--color-text-secondary); +} + +.form-input, +.form-select { + width: 100%; + padding: 0.75rem; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-background-primary); + color: var(--color-text-primary); + font-size: 0.875rem; + transition: var(--transition-fast); +} + +.form-input:focus, +.form-select:focus { + outline: none; + border-color: var(--color-primary); + box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); +} + +.form-input:disabled { + background: var(--color-background-secondary); + color: var(--color-text-tertiary); + cursor: not-allowed; +} + +/* Custom Switch */ +.custom-switch { + position: relative; + display: inline-block; + width: 48px; + height: 24px; +} + +.custom-switch input { + opacity: 0; + width: 0; + height: 0; +} + +.switch-slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: var(--color-border); + transition: var(--transition-fast); + border-radius: 24px; +} + +.switch-slider:before { + position: absolute; + content: ""; + height: 18px; + width: 18px; + left: 3px; + bottom: 3px; + background-color: white; + transition: var(--transition-fast); + border-radius: 50%; +} + +input:checked + .switch-slider { + background-color: var(--color-success); +} + +input:checked + .switch-slider:before { + transform: translateX(24px); +} + +/* Action Section */ +.action-section { + display: flex; + justify-content: space-between; + align-items: center; + gap: 1rem; + margin-bottom: 2rem; + flex-wrap: wrap; +} + +.import-section { + flex: 1; +} + +.main-actions { + display: flex; + gap: 0.75rem; +} + +/* Dropdown */ +.dropdown-container { + position: relative; +} + +.dropdown-trigger { + justify-content: space-between; + min-width: 200px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + right: 0; + background: var(--color-surface-elevated); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + box-shadow: var(--shadow-lg); + z-index: 50; + margin-top: 0.25rem; + max-height: 200px; + overflow-y: auto; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.75rem; + border: none; + background: none; + color: var(--color-text-primary); + font-size: 0.875rem; + text-align: left; + cursor: pointer; + transition: var(--transition-fast); +} + +.dropdown-item:hover { + background: var(--color-background-secondary); +} + +/* Config Table Section */ +.config-table-section { + margin-top: 2rem; +} + +.config-table-section h3 { + margin: 0 0 1rem 0; + font-size: 1.125rem; + font-weight: 600; + color: var(--color-text-primary); +} + +.responsive-table { + overflow-x: auto; + border: 1px solid var(--color-border-secondary); + border-radius: var(--radius-md); +} + +.config-table { + width: 100%; + border-collapse: collapse; + font-size: 0.875rem; +} + +.config-table th { + background: var(--color-background-secondary); + color: var(--color-text-secondary); + font-weight: 500; + padding: 0.75rem; + text-align: center; + border-bottom: 1px solid var(--color-border-secondary); +} + +.config-table td { + padding: 0.75rem; + text-align: center; + border-bottom: 1px solid var(--color-border-secondary); + cursor: pointer; + transition: var(--transition-fast); +} + +.config-table td:hover { + background: var(--color-surface-elevated); +} + +.config-table tr:last-child td { + border-bottom: none; +} + +/* Responsive */ +@media (max-width: 768px) { + .login-container { + padding: 0.75rem; + gap: 1rem; + } + + .header-card .card-header { + padding: 0.75rem 1rem; + flex-direction: column; + align-items: flex-start; + gap: 0.75rem; + } + + .header-actions { + width: 100%; + justify-content: flex-end; + } + + .tabs-container { + padding: 0.5rem 0.75rem; + } + + .tabs-nav { + gap: 0.375rem; + } + + .tab-button { + padding: 0.5rem 0.75rem; + font-size: 0.8rem; + max-width: 150px; + } + + .tab-icon { + width: 14px; + height: 14px; + } + + .config-grid { + grid-template-columns: 1fr; + } + + .action-section { + flex-direction: column; + align-items: stretch; + } + + .main-actions { + width: 100%; + justify-content: stretch; + } + + .main-actions .action-button { + flex: 1; + } +} + +@media (max-width: 480px) { + .login-container { + padding: 0.5rem; + } + + .tabs-container { + padding: 0.5rem; + } + + .tab-button { + padding: 0.375rem 0.5rem; + font-size: 0.75rem; + max-width: 120px; + } + + .tab-button span { + display: none; + } + + .tab-button.active span { + display: inline; + } +} + +/* Form validation styles */ +.form-group.has-error .form-label { + color: var(--color-error); +} + +.form-input.error, +.form-select.error { + border-color: var(--color-error); + background-color: var(--color-error-surface); +} + +.form-input.error:focus, +.form-select.error:focus { + border-color: var(--color-error); + box-shadow: 0 0 0 2px var(--color-error-surface); +} + +.required-marker { + color: var(--color-error); + margin-left: 0.25rem; + font-size: 1rem; + font-weight: 600; +} + +.error-message { + color: var(--color-error); + font-size: 0.75rem; + margin-top: 0.25rem; + display: flex; + align-items: center; + gap: 0.25rem; +} + +.error-message::before { + content: "⚠"; + font-size: 0.875rem; } \ No newline at end of file diff --git a/src/renderer/pages/css/Gallery.css b/src/renderer/pages/css/Gallery.css index 97db3abc..f1364643 100644 --- a/src/renderer/pages/css/Gallery.css +++ b/src/renderer/pages/css/Gallery.css @@ -1,1515 +1,1515 @@ -/* Global scrolling behavior */ -html, body { - overflow-x: hidden; -} - -/* Custom Scrollbar Styles */ -.gallery-content::-webkit-scrollbar { - width: 8px; -} - -.gallery-content::-webkit-scrollbar-track { - background: var(--color-surface-elevated); - border-radius: var(--radius-md); -} - -.gallery-content::-webkit-scrollbar-thumb { - background: var(--color-border); - border-radius: var(--radius-md); - transition: var(--transition-fast); -} - -.gallery-content::-webkit-scrollbar-thumb:hover { - background: var(--color-text-secondary); -} - -/* Container */ -.gallery-container { - padding: 1rem; - width: 100%; - margin: 0; - display: flex; - flex-direction: column; - gap: 1.25rem; - height: 100vh; - box-sizing: border-box; - overflow: hidden; -} - -/* Card Base */ -.gallery-card { - background: var(--color-surface); - border: 1px solid var(--color-border-secondary); - border-radius: var(--radius-xl); - overflow: hidden; - transition: var(--transition-medium); - box-shadow: var(--shadow-sm); -} - -.gallery-card:hover { - box-shadow: var(--shadow-md); - border-color: var(--color-border); -} - -/* Header Card */ -.header-card .card-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 1rem 1.5rem; - border-bottom: 1px solid var(--color-border-secondary); - flex-wrap: wrap; - gap: 1rem; -} - -.header-content { - display: flex; - align-items: center; - gap: 1rem; - flex: 1; -} - -.header-icon { - color: var(--color-blue-common); - display: flex; - align-items: center; -} - -.header-content h1 { - font-size: 1.5rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0; - letter-spacing: -0.025em; -} - -.header-content p { - font-size: 0.875rem; - color: var(--color-text-secondary); - margin: 0; -} - -.header-actions { - display: flex; - align-items: center; - gap: 0.75rem; - flex-wrap: wrap; -} - -.action-button { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.625rem 1rem; - background: var(--color-blue-common); - color: white; - border: none; - border-radius: var(--radius-md); - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: var(--transition-fast); - font-family: inherit; -} - -.action-button:hover { - background: var(--color-blue-common); - transform: translateY(-1px); - box-shadow: var(--shadow-md); -} - -/* View Mode Toggle */ -.view-mode-toggle { - position: relative; -} - -.view-mode-toggle:hover { - background: var(--color-blue-common) !important; -} - -.sync-delete-toggle { - display: flex; - align-items: center; - gap: 0.5rem; -} - -.toggle-label { - font-size: 0.875rem; - color: var(--color-text-secondary); -} - -/* Custom Switch */ -.custom-switch { - position: relative; - display: inline-block; - width: 44px; - height: 24px; -} - -.custom-switch input { - opacity: 0; - width: 0; - height: 0; -} - -.switch-slider { - position: absolute; - cursor: pointer; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #ccc; - transition: 0.3s; - border-radius: 24px; -} - -.switch-slider:before { - position: absolute; - content: ""; - height: 18px; - width: 18px; - left: 3px; - bottom: 3px; - background-color: white; - transition: 0.3s; - border-radius: 50%; -} - -input:checked + .switch-slider { - background-color: var(--color-blue-common); -} - -input:checked + .switch-slider:before { - transform: translateX(20px); -} - -/* Filter Card */ -.filter-card { - border-radius: var(--radius-lg); -} - -.filter-content { - padding: 1rem; /* Reduced from 1.25rem for compactness */ -} - -.filter-row { - display: flex; - gap: 0.75rem; /* Reduced from 1rem for more compact layout */ - margin-bottom: 0.75rem; /* Reduced from 1rem */ - flex-wrap: wrap; - align-items: flex-start; -} - -.filter-row:last-child { - margin-bottom: 0; -} - -.filter-group { - display: flex; - flex-direction: column; - gap: 0.375rem; - min-width: 140px; - flex: 1 1 auto; - max-width: 220px; -} - -.filter-label { - font-size: 0.85rem; - font-weight: 500; - color: var(--color-text-primary); - margin-bottom: 0.125rem; - line-height: 1.4; -} - -/* Custom Select */ -.custom-select { - padding: 0.375rem 0.5rem; - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - text-align: center; - background: var(--color-surface); - color: var(--color-text-primary); - font-size: 0.85rem; - transition: var(--transition-fast); - cursor: pointer; - width: 100%; - min-width: 0; - height: 28px; - line-height: 1.4; -} - -.custom-select:focus { - outline: none; - border-color: var(--color-blue-common); - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); -} - -/* Custom Multiselect */ -.custom-multiselect { - position: relative; -} - -.multiselect-trigger { - display: flex; - align-items: center; - justify-content: space-between; - width: 100%; - padding: 0.375rem 0.5rem; - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - background: var(--color-surface); - color: var(--color-text-primary); - font-size: 0.85rem; - cursor: pointer; - transition: var(--transition-fast); - height: 28px; - line-height: 1.4; -} - -.multiselect-trigger:hover { - border-color: var(--color-blue-common); -} - -.multiselect-trigger:focus, -.multiselect-trigger.active { - border-color: var(--color-blue-common); - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1); -} - -.multiselect-dropdown { - position: fixed; - padding: 0.375rem 0.5rem; - z-index: 1000; - background: var(--color-surface); - color: var(--color-text-primary); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - box-shadow: var(--shadow-lg); - max-height: 280px; - min-width: 200px; - overflow-y: auto; - margin-top: 2px; -} - -.multiselect-option { - display: flex; - align-items: center; - justify-content: space-between; - background: var(--color-surface); - gap: 0.25rem; - padding: 0.25rem 0.5rem; - cursor: pointer; - transition: var(--transition-fast); - font-size: 0.95rem; - line-height: 1.4; - min-height: unset; -} - -.multiselect-option:hover { - background: var(--color-blue-common); -} - -.multiselect-option input[type="checkbox"] { - margin: 0; -} - -/* Date Range Picker */ -.date-range-picker { - display: flex; - align-items: center; - gap: 0.5rem; - width: 100%; -} - -.date-input { - padding: 0.375rem 0.5rem; - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - background: var(--color-surface); - color: var(--color-text-primary); - font-size: 0.75rem; - transition: var(--transition-fast); - flex: 1; - min-width: 0; - height: 28px; - line-height: 1.2; -} - -.date-input:focus { - outline: none; - border-color: var(--color-blue-common); - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); -} - -.date-separator { - color: var(--color-text-secondary); - font-weight: 500; - flex-shrink: 0; -} - -/* Sort Dropdown */ -.sort-dropdown { - position: relative; -} - -.sort-button { - display: flex; - align-items: center; - justify-content: space-between; - gap: 0.25rem; - padding: 0.375rem 0.5rem; - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - background: var(--color-surface); - color: var(--color-text-primary); - font-size: 0.85rem; - cursor: pointer; - transition: var(--transition-fast); - width: 100%; - height: 28px; - line-height: 1.4; -} - -.sort-button:hover { - border-color: var(--color-blue-common); -} - -.sort-button:focus, -.sort-button.active { - border-color: var(--color-blue-common); - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1); -} - -.sort-options { - position: fixed; - z-index: 1000; - background: var(--color-surface); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - box-shadow: var(--shadow-lg); - margin-top: 2px; - min-width: 160px; -} - -.sort-option { - display: block; - width: 100%; - padding: 0.25rem 0.5rem; - text-align: center; - border: none; - background: var(--color-surface); - color: var(--color-text-primary); - font-size: 0.95rem; - cursor: pointer; - transition: var(--transition-fast); - line-height: 1.4; - min-height: unset; -} - -.sort-option:hover { - background: var(--color-blue-common); -} - -/* Search Groups */ -.search-group { - display: flex; - flex-direction: column; - gap: 0.5rem; - min-width: 180px; - flex: 1 1 auto; - max-width: 260px; -} - -.search-input-wrapper { - position: relative; - display: flex; - align-items: center; -} - -.search-input { - padding: 0.5rem 0.75rem 0.5rem 2.25rem; - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - background: var(--color-surface); - color: var(--color-text-primary); - font-size: 0.8rem; - transition: var(--transition-fast); - width: 100%; -} - -.search-input:focus { - outline: none; - border-color: var(--color-blue-common); - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); -} - -.search-icon { - position: absolute; - left: 0.75rem; - color: var(--color-text-secondary); - z-index: 1; -} - -.clear-button { - position: absolute; - right: 0.75rem; - background: none; - border: none; - color: var(--color-text-secondary); - cursor: pointer; - padding: 0; - display: flex; - align-items: center; - transition: var(--transition-fast); -} - -.clear-button:hover { - color: var(--color-text-primary); -} - -/* Action Buttons */ -.action-buttons { - display: flex; - gap: 0.75rem; - flex-wrap: wrap; -} - -.action-btn { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.625rem 1rem; - border: none; - border-radius: var(--radius-md); - font-size: 0.875rem; - font-weight: 500; - cursor: not-allowed; - transition: var(--transition-fast); - opacity: 0.5; -} - -.action-btn.active { - cursor: pointer; - opacity: 1; - transform: translateY(0); -} - -.action-btn.active:hover { - transform: translateY(-1px); - box-shadow: var(--shadow-sm); -} - -.copy-btn { - background: var(--color-blue-common); - color: white; -} - -.copy-btn.active:hover { - background: var(--color-accent-hover); -} - -.edit-btn { - background: var(--color-success); - color: white; -} - -.edit-btn.active:hover { - background: #059669; -} - -.delete-btn { - background: var(--color-danger); - color: white; -} - -.delete-btn.active:hover { - background: var(--color-danger); -} - -.select-btn { - background: var(--color-warning); - color: white; -} - -.select-btn.active:hover { - background: #d97706; -} - -/* Filter Slide Animation */ -.filter-slide-enter-active, -.filter-slide-leave-active { - transition: all var(--transition-medium); - max-height: 300px; - overflow: hidden; -} - -.filter-slide-enter-from, -.filter-slide-leave-to { - max-height: 0; - opacity: 0; - transform: translateY(-10px); -} - -/* Gallery Content */ -.gallery-content { - flex: 1; - display: flex; - flex-direction: column; - min-height: 0; - overflow: hidden; -} - -.empty-state { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 4rem 2rem; - text-align: center; -} - -.empty-icon { - color: var(--color-text-secondary); - margin-bottom: 1rem; -} - -.empty-state h3 { - font-size: 1.25rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0 0 0.5rem 0; -} - -.empty-state p { - color: var(--color-text-secondary); - margin: 0; -} - -/* Gallery Grid */ -.gallery-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); - gap: 1.5rem; - padding: 1.5rem; -} - -.gallery-item { - background: var(--color-surface); - border: 1px solid var(--color-border-secondary); - border-radius: var(--radius-lg); - overflow: hidden; - transition: var(--transition-medium); - cursor: pointer; -} - -.gallery-item:hover { - transform: translateY(-2px); - box-shadow: var(--shadow-md); - border-color: var(--color-border); -} - -.gallery-item.selected { - border-color: var(--color-blue-common); - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2); -} - -/* Image Container */ -.image-container { - position: relative; - aspect-ratio: 16/9; - overflow: hidden; - background: var(--color-surface-elevated); -} - -.gallery-image { - transition: var(--transition-medium); -} - -.gallery-image.loading { - opacity: 0; -} - -.image-placeholder { - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; - color: var(--color-text-secondary); - background: var(--color-surface-elevated); -} - -.image-loader { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - display: flex; - align-items: center; - justify-content: center; - background: var(--color-surface-elevated); -} - -.loader-spinner { - width: 24px; - height: 24px; - border: 2px solid var(--color-border); - border-top: 2px solid var(--color-blue-common); - border-radius: 50%; - animation: spin 1s linear infinite; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} - -/* Image Info */ -.image-info { - padding: 1rem; -} - -.image-name { - font-size: 0.875rem; - font-weight: 500; - color: var(--color-text-primary); - margin-bottom: 0.75rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.image-actions { - display: flex; - align-items: center; - justify-content: space-between; -} - -.action-icons { - display: flex; - gap: 0.5rem; -} - -.icon-button { - display: flex; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - border: none; - border-radius: var(--radius-md); - background: var(--color-surface-elevated); - color: var(--color-text-secondary); - cursor: pointer; - transition: var(--transition-fast); -} - -.icon-button:hover { - color: var(--color-text-primary); - transform: translateY(-1px); -} - -.copy-icon:hover { - color: var(--color-copy); - background: rgba(6, 182, 212, 0.1); -} - -.edit-icon:hover { - color: var(--color-success); - background: rgba(16, 185, 129, 0.1); -} - -.delete-icon:hover { - color: var(--color-error); - background: rgba(239, 68, 68, 0.1); -} - -/* Custom Checkbox */ -.custom-checkbox { - position: relative; - display: flex; - align-items: center; - cursor: pointer; -} - -.custom-checkbox input[type="checkbox"] { - position: absolute; - opacity: 0; - cursor: pointer; - height: 0; - width: 0; -} - -.checkbox-mark { - display: inline-block; - width: 18px; - height: 18px; - border: 2px solid var(--color-border); - border-radius: var(--radius-sm); - position: relative; - transition: var(--transition-fast); -} - -.custom-checkbox input[type="checkbox"]:checked + .checkbox-mark { - background: var(--color-blue-common); - border-color: var(--color-blue-common); -} - -.custom-checkbox input[type="checkbox"]:checked + .checkbox-mark::after { - content: '✓'; - position: absolute; - top: -1px; - left: 3px; - color: white; - font-size: 12px; - font-weight: bold; -} - -/* Image Preview Modal */ -.image-preview-modal { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 1000; - display: flex; - align-items: center; - justify-content: center; -} - -.modal-backdrop { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(0, 0, 0, 0.8); -} - -.modal-content { - position: relative; - max-width: 90vw; - max-height: 90vh; - background: var(--color-surface); - border-radius: var(--radius-xl); - overflow: hidden; - box-shadow: var(--shadow-lg); -} - -.modal-close { - position: absolute; - top: 1rem; - right: 1rem; - z-index: 10; - display: flex; - align-items: center; - justify-content: center; - width: 40px; - height: 40px; - border: none; - border-radius: 50%; - background: rgba(0, 0, 0, 0.5); - color: white; - cursor: pointer; - transition: var(--transition-fast); -} - -.modal-close:hover { - background: rgba(0, 0, 0, 0.7); -} - -.image-navigation { - display: flex; - align-items: center; - position: relative; -} - -.nav-button { - position: absolute; - z-index: 10; - display: flex; - align-items: center; - justify-content: center; - width: 48px; - height: 48px; - border: none; - border-radius: 50%; - background: rgba(0, 0, 0, 0.5); - color: white; - cursor: pointer; - transition: var(--transition-fast); -} - -.nav-button:hover:not(:disabled) { - background: rgba(0, 0, 0, 0.7); -} - -.nav-button:disabled { - opacity: 0.5; - cursor: not-allowed; -} - -.nav-button.prev { - left: 1rem; -} - -.nav-button.next { - right: 1rem; -} - -.image-viewer { - width: 90vw; - height: 80vh; - display: flex; - align-items: center; - justify-content: center; - background: #000; -} - -.preview-image { - max-width: 100%; - max-height: 100%; - object-fit: contain; -} - -.image-details { - padding: 1rem 1.5rem; - border-top: 1px solid var(--color-border-secondary); - display: flex; - align-items: center; - justify-content: space-between; -} - -.image-details h3 { - font-size: 1rem; - font-weight: 500; - color: var(--color-text-primary); - margin: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - flex: 1; - margin-right: 1rem; -} - -.image-counter { - font-size: 0.875rem; - color: var(--color-text-secondary); - white-space: nowrap; -} - -/* Modal Overlay */ -.modal-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(0, 0, 0, 0.5); - display: flex; - align-items: center; - justify-content: center; - z-index: 1000; -} - -.modal-container { - background: var(--color-background-primary); - border-radius: var(--radius-xl); - box-shadow: var(--shadow-lg); - max-width: 500px; - width: 90%; - max-height: 90vh; - overflow-y: auto; -} - -.modal-container.large { - max-width: 700px; -} - -.modal-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 1.5rem; - border-bottom: 1px solid var(--color-border-secondary); -} - -.modal-header h3 { - font-size: 1.25rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0; -} - -.modal-close-btn { - display: flex; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - border: none; - border-radius: var(--radius-md); - background: var(--color-surface-elevated); - color: var(--color-text-secondary); - cursor: pointer; - transition: var(--transition-fast); -} - -.modal-close-btn:hover { - color: var(--color-text-primary); - background: var(--color-border-secondary); -} - -.modal-body { - padding: 1.5rem; -} - -.modal-footer { - display: flex; - justify-content: flex-end; - gap: 0.75rem; - padding: 1.5rem; - border-top: 1px solid var(--color-border-secondary); -} - -/* Form Elements */ -.form-group { - margin-bottom: 1.5rem; -} - -.form-group:last-child { - margin-bottom: 0; -} - -.form-label { - display: flex; - align-items: center; - gap: 0.5rem; - font-size: 0.875rem; - font-weight: 500; - color: var(--color-text-primary); - margin-bottom: 0.5rem; -} - -.form-input { - width: 100%; - padding: 0.75rem; - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - background: var(--color-surface); - color: var(--color-text-primary); - font-size: 0.875rem; - transition: var(--transition-fast); - box-sizing: border-box; -} - -.form-input:focus { - outline: none; - border-color: var(--color-blue-common); - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); -} - -.info-button { - display: flex; - align-items: center; - justify-content: center; - width: 20px; - height: 20px; - border: none; - border-radius: 50%; - background: var(--color-blue-common); - color: white; - cursor: pointer; - transition: var(--transition-fast); -} - -.info-button:hover { - background: var(--color-blue-common); -} - -.info-panel { - margin-top: 1rem; - padding: 1rem; - background: var(--color-surface-elevated); - border-radius: var(--radius-md); - border: 1px solid var(--color-border-secondary); -} - -.info-panel h4 { - font-size: 0.875rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0 0 0.75rem 0; -} - -.placeholder-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 0.5rem; -} - -.placeholder-item { - display: flex; - align-items: center; - gap: 0.5rem; -} - -.placeholder-item code { - font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; - font-size: 0.75rem; - background: var(--color-surface); - color: var(--color-blue-common); - padding: 0.25rem 0.5rem; - border-radius: var(--radius-sm); - border: 1px solid var(--color-border); -} - -.placeholder-item span { - font-size: 0.75rem; - color: var(--color-text-secondary); -} - -/* Buttons */ -.btn-primary { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.75rem 1.5rem; - background: var(--color-blue-common); - color: white; - border: none; - border-radius: var(--radius-md); - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: var(--transition-fast); - font-family: inherit; -} - -.btn-primary:hover { - background: var(--color-blue-common); - transform: translateY(-1px); - box-shadow: var(--shadow-sm); -} - -.btn-secondary { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.75rem 1.5rem; - background: var(--color-surface-elevated); - color: var(--color-text-primary); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: var(--transition-fast); - font-family: inherit; -} - -.btn-secondary:hover { - background: var(--color-border-secondary); - transform: translateY(-1px); - box-shadow: var(--shadow-sm); -} - -/* Responsive Design */ -@media (max-width: 768px) { - .gallery-container { - padding: 0.75rem; - gap: 1rem; - } - - .header-content { - flex-direction: column; - align-items: flex-start; - gap: 0.5rem; - } - - .header-actions { - width: 100%; - justify-content: flex-start; - } - - .filter-row { - flex-direction: column; - } - - .action-buttons { - width: 100%; - } - - .gallery-grid { - grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); - gap: 1rem; - padding: 1rem; - } - - .modal-container { - margin: 1rem; - width: calc(100% - 2rem); - } - - .image-viewer { - width: 90vw; - height: 50vh; - } - - .nav-button.prev { - left: 0.5rem; - } - - .nav-button.next { - right: 0.5rem; - } -} - -/* Lazy Loading */ -.load-more-trigger { - grid-column: 1 / -1; - display: flex; - justify-content: center; - align-items: center; - padding: 2rem; - min-height: 100px; -} - -.loading-indicator { - display: flex; - flex-direction: column; - align-items: center; - gap: 1rem; - color: var(--color-text-secondary); -} - -.loading-indicator span { - font-size: 0.875rem; -} - -/* Improve responsive layout for smaller screens */ -@media (max-width: 1024px) { - .filter-group, - .search-group { - min-width: 160px; - max-width: 220px; - } -} - -@media (max-width: 768px) { - .filter-group, - .search-group { - min-width: 140px; - max-width: 100%; - flex: 1 1 100%; - } - - .filter-row { - gap: 0.5rem; - } - - .filter-content { - padding: 0.75rem; - } - - .date-range-picker { - flex-direction: column; - gap: 0.5rem; - } - - .date-input { - width: 100%; - } - - .date-separator { - display: none; - } -} - -@media (max-width: 480px) { - .filter-content { - padding: 0.5rem; - } - - .filter-row { - gap: 0.5rem; - } - - .filter-group, - .search-group { - min-width: 100px; - } - - .filter-label { - font-size: 0.75rem; - } -} - -/* Virtual Scroller Styles */ -.virtual-gallery-scroller { - width: 100%; - flex: 1; - min-height: 0; -} - -.virtual-gallery-scroller .virtual-scroller { - height: 100%; - width: 100%; -} - -.virtual-gallery-scroller .virtual-scroller-item { - overflow: visible; - box-sizing: border-box; -} - -/* Ensure gallery items work well with virtual scroller */ -.virtual-gallery-scroller .gallery-item { - width: 100%; - height: calc(100% - 8px); - margin: 0; - box-sizing: border-box; - display: flex; - flex-direction: column; -} - -.virtual-gallery-scroller .image-container { - flex: 1; - min-height: 0; - aspect-ratio: auto; - display: flex; - align-items: center; - justify-content: center; - position: relative; - overflow: hidden; - background: var(--color-surface-elevated); -} - -.virtual-gallery-scroller .image-info { - flex-shrink: 0; - padding: 0.75rem; - min-height: 80px; - display: flex; - flex-direction: column; - justify-content: space-between; -} - -.virtual-gallery-scroller .gallery-image { - width: 100%; - height: 100%; - object-fit: contain; -} - -.virtual-gallery-scroller .image-loader { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - display: flex; - align-items: center; - justify-content: center; - background: var(--color-surface-elevated); -} - -/* Enhanced Image Preview Styles */ -.image-preview-modal { - outline: none; -} - -.zoom-controls { - position: absolute; - top: 1rem; - left: 1rem; - z-index: 10; - display: flex; - align-items: center; - gap: 0.5rem; - background: rgba(0, 0, 0, 0.7); - border-radius: var(--radius-lg); - padding: 0.5rem; -} - -.zoom-btn { - display: flex; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - border: none; - border-radius: var(--radius-md); - background: rgba(255, 255, 255, 0.1); - color: white; - cursor: pointer; - transition: var(--transition-fast); - font-size: 0.875rem; - font-weight: 600; -} - -.zoom-btn:hover:not(:disabled) { - background: rgba(255, 255, 255, 0.2); -} - -.zoom-btn:disabled { - opacity: 0.5; - cursor: not-allowed; -} - -.zoom-btn.reset-btn { - width: auto; - padding: 0 0.75rem; - font-size: 0.75rem; -} - -.zoom-level { - color: white; - font-size: 0.875rem; - font-weight: 500; - min-width: 50px; - text-align: center; -} - -.image-viewer { - overflow: hidden; - position: relative; - user-select: none; -} - -.preview-image { - display: block; - max-width: none; - max-height: none; - width: auto; - height: auto; - transform-origin: center center; -} - -.image-help-text { - font-size: 0.75rem; - color: var(--color-text-tertiary); - margin-top: 0.25rem; - text-align: center; -} - -.image-viewer:active { - cursor: grabbing !important; -} - -/* Responsive adjustments for mobile */ -@media (max-width: 768px) { - .zoom-controls { - top: 0.5rem; - left: 0.5rem; - gap: 0.25rem; - padding: 0.25rem; - } - - .zoom-btn { - width: 28px; - height: 28px; - font-size: 0.75rem; - } - - .zoom-level { - font-size: 0.75rem; - min-width: 40px; - } - - .modal-close { - top: 0.5rem; - right: 0.5rem; - width: 36px; - height: 36px; - } - - .nav-button { - width: 40px; - height: 40px; - } - - .nav-button.prev { - left: 0.5rem; - } - - .nav-button.next { - right: 0.5rem; - } -} - - -/* Placeholder Help Styles */ -.placeholder-help { - background: var(--color-background-tertiary); - border: 1px solid var(--color-border); - border-radius: 12px; - padding: 0; - margin-top: 0.75rem; - max-height: 400px; - overflow-y: auto; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); -} - -.placeholder-category { - border-bottom: 1px solid var(--color-border-light); -} - -.placeholder-category:last-child { - border-bottom: none; -} - -.category-title { - font-size: 0.875rem; - font-weight: 600; - color: var(--color-text-secondary); - padding: 0.875rem 1rem 0.5rem; - background: linear-gradient(135deg, var(--color-background-secondary) 0%, var(--color-background-tertiary) 100%); - border-bottom: 1px solid var(--color-border-light); - margin: 0; - letter-spacing: 0.02em; -} - -.placeholder-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); - gap: 0; - padding: 0.5rem 0; -} - -.placeholder-item { - display: flex; - align-items: center; - padding: 0.5rem 1rem; - font-size: 0.875rem; - line-height: 1.4; - border-radius: 0; - margin: 0; -} - -.placeholder-item:hover { - background: rgba(var(--color-accent-rgb), 0.08); -} - -.placeholder-item code { - background: var(--color-blue-common); - color: white; - padding: 0.3rem 0.6rem; - border-radius: 8px; - font-size: 1rem; - font-family: 'SF Mono', 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; - margin-right: 0.875rem; - min-width: 80px; - text-align: center; - font-weight: 600; - letter-spacing: 0.02em; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); - border: 1px solid rgba(255, 255, 255, 0.2); - flex-shrink: 0; -} - -.placeholder-item span { - color: var(--color-text-primary); - font-weight: 500; - flex: 1; -} +/* Global scrolling behavior */ +html, body { + overflow-x: hidden; +} + +/* Custom Scrollbar Styles */ +.gallery-content::-webkit-scrollbar { + width: 8px; +} + +.gallery-content::-webkit-scrollbar-track { + background: var(--color-surface-elevated); + border-radius: var(--radius-md); +} + +.gallery-content::-webkit-scrollbar-thumb { + background: var(--color-border); + border-radius: var(--radius-md); + transition: var(--transition-fast); +} + +.gallery-content::-webkit-scrollbar-thumb:hover { + background: var(--color-text-secondary); +} + +/* Container */ +.gallery-container { + padding: 1rem; + width: 100%; + margin: 0; + display: flex; + flex-direction: column; + gap: 1.25rem; + height: 100vh; + box-sizing: border-box; + overflow: hidden; +} + +/* Card Base */ +.gallery-card { + background: var(--color-surface); + border: 1px solid var(--color-border-secondary); + border-radius: var(--radius-xl); + overflow: hidden; + transition: var(--transition-medium); + box-shadow: var(--shadow-sm); +} + +.gallery-card:hover { + box-shadow: var(--shadow-md); + border-color: var(--color-border); +} + +/* Header Card */ +.header-card .card-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem 1.5rem; + border-bottom: 1px solid var(--color-border-secondary); + flex-wrap: wrap; + gap: 1rem; +} + +.header-content { + display: flex; + align-items: center; + gap: 1rem; + flex: 1; +} + +.header-icon { + color: var(--color-blue-common); + display: flex; + align-items: center; +} + +.header-content h1 { + font-size: 1.5rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0; + letter-spacing: -0.025em; +} + +.header-content p { + font-size: 0.875rem; + color: var(--color-text-secondary); + margin: 0; +} + +.header-actions { + display: flex; + align-items: center; + gap: 0.75rem; + flex-wrap: wrap; +} + +.action-button { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.625rem 1rem; + background: var(--color-blue-common); + color: white; + border: none; + border-radius: var(--radius-md); + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: var(--transition-fast); + font-family: inherit; +} + +.action-button:hover { + background: var(--color-blue-common); + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +/* View Mode Toggle */ +.view-mode-toggle { + position: relative; +} + +.view-mode-toggle:hover { + background: var(--color-blue-common) !important; +} + +.sync-delete-toggle { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.toggle-label { + font-size: 0.875rem; + color: var(--color-text-secondary); +} + +/* Custom Switch */ +.custom-switch { + position: relative; + display: inline-block; + width: 44px; + height: 24px; +} + +.custom-switch input { + opacity: 0; + width: 0; + height: 0; +} + +.switch-slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + transition: 0.3s; + border-radius: 24px; +} + +.switch-slider:before { + position: absolute; + content: ""; + height: 18px; + width: 18px; + left: 3px; + bottom: 3px; + background-color: white; + transition: 0.3s; + border-radius: 50%; +} + +input:checked + .switch-slider { + background-color: var(--color-blue-common); +} + +input:checked + .switch-slider:before { + transform: translateX(20px); +} + +/* Filter Card */ +.filter-card { + border-radius: var(--radius-lg); +} + +.filter-content { + padding: 1rem; /* Reduced from 1.25rem for compactness */ +} + +.filter-row { + display: flex; + gap: 0.75rem; /* Reduced from 1rem for more compact layout */ + margin-bottom: 0.75rem; /* Reduced from 1rem */ + flex-wrap: wrap; + align-items: flex-start; +} + +.filter-row:last-child { + margin-bottom: 0; +} + +.filter-group { + display: flex; + flex-direction: column; + gap: 0.375rem; + min-width: 140px; + flex: 1 1 auto; + max-width: 220px; +} + +.filter-label { + font-size: 0.85rem; + font-weight: 500; + color: var(--color-text-primary); + margin-bottom: 0.125rem; + line-height: 1.4; +} + +/* Custom Select */ +.custom-select { + padding: 0.375rem 0.5rem; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + text-align: center; + background: var(--color-surface); + color: var(--color-text-primary); + font-size: 0.85rem; + transition: var(--transition-fast); + cursor: pointer; + width: 100%; + min-width: 0; + height: 28px; + line-height: 1.4; +} + +.custom-select:focus { + outline: none; + border-color: var(--color-blue-common); + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); +} + +/* Custom Multiselect */ +.custom-multiselect { + position: relative; +} + +.multiselect-trigger { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + padding: 0.375rem 0.5rem; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-surface); + color: var(--color-text-primary); + font-size: 0.85rem; + cursor: pointer; + transition: var(--transition-fast); + height: 28px; + line-height: 1.4; +} + +.multiselect-trigger:hover { + border-color: var(--color-blue-common); +} + +.multiselect-trigger:focus, +.multiselect-trigger.active { + border-color: var(--color-blue-common); + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1); +} + +.multiselect-dropdown { + position: fixed; + padding: 0.375rem 0.5rem; + z-index: 1000; + background: var(--color-surface); + color: var(--color-text-primary); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + box-shadow: var(--shadow-lg); + max-height: 280px; + min-width: 200px; + overflow-y: auto; + margin-top: 2px; +} + +.multiselect-option { + display: flex; + align-items: center; + justify-content: space-between; + background: var(--color-surface); + gap: 0.25rem; + padding: 0.25rem 0.5rem; + cursor: pointer; + transition: var(--transition-fast); + font-size: 0.95rem; + line-height: 1.4; + min-height: unset; +} + +.multiselect-option:hover { + background: var(--color-blue-common); +} + +.multiselect-option input[type="checkbox"] { + margin: 0; +} + +/* Date Range Picker */ +.date-range-picker { + display: flex; + align-items: center; + gap: 0.5rem; + width: 100%; +} + +.date-input { + padding: 0.375rem 0.5rem; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-surface); + color: var(--color-text-primary); + font-size: 0.75rem; + transition: var(--transition-fast); + flex: 1; + min-width: 0; + height: 28px; + line-height: 1.2; +} + +.date-input:focus { + outline: none; + border-color: var(--color-blue-common); + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); +} + +.date-separator { + color: var(--color-text-secondary); + font-weight: 500; + flex-shrink: 0; +} + +/* Sort Dropdown */ +.sort-dropdown { + position: relative; +} + +.sort-button { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.25rem; + padding: 0.375rem 0.5rem; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-surface); + color: var(--color-text-primary); + font-size: 0.85rem; + cursor: pointer; + transition: var(--transition-fast); + width: 100%; + height: 28px; + line-height: 1.4; +} + +.sort-button:hover { + border-color: var(--color-blue-common); +} + +.sort-button:focus, +.sort-button.active { + border-color: var(--color-blue-common); + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1); +} + +.sort-options { + position: fixed; + z-index: 1000; + background: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + box-shadow: var(--shadow-lg); + margin-top: 2px; + min-width: 160px; +} + +.sort-option { + display: block; + width: 100%; + padding: 0.25rem 0.5rem; + text-align: center; + border: none; + background: var(--color-surface); + color: var(--color-text-primary); + font-size: 0.95rem; + cursor: pointer; + transition: var(--transition-fast); + line-height: 1.4; + min-height: unset; +} + +.sort-option:hover { + background: var(--color-blue-common); +} + +/* Search Groups */ +.search-group { + display: flex; + flex-direction: column; + gap: 0.5rem; + min-width: 180px; + flex: 1 1 auto; + max-width: 260px; +} + +.search-input-wrapper { + position: relative; + display: flex; + align-items: center; +} + +.search-input { + padding: 0.5rem 0.75rem 0.5rem 2.25rem; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-surface); + color: var(--color-text-primary); + font-size: 0.8rem; + transition: var(--transition-fast); + width: 100%; +} + +.search-input:focus { + outline: none; + border-color: var(--color-blue-common); + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); +} + +.search-icon { + position: absolute; + left: 0.75rem; + color: var(--color-text-secondary); + z-index: 1; +} + +.clear-button { + position: absolute; + right: 0.75rem; + background: none; + border: none; + color: var(--color-text-secondary); + cursor: pointer; + padding: 0; + display: flex; + align-items: center; + transition: var(--transition-fast); +} + +.clear-button:hover { + color: var(--color-text-primary); +} + +/* Action Buttons */ +.action-buttons { + display: flex; + gap: 0.75rem; + flex-wrap: wrap; +} + +.action-btn { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.625rem 1rem; + border: none; + border-radius: var(--radius-md); + font-size: 0.875rem; + font-weight: 500; + cursor: not-allowed; + transition: var(--transition-fast); + opacity: 0.5; +} + +.action-btn.active { + cursor: pointer; + opacity: 1; + transform: translateY(0); +} + +.action-btn.active:hover { + transform: translateY(-1px); + box-shadow: var(--shadow-sm); +} + +.copy-btn { + background: var(--color-blue-common); + color: white; +} + +.copy-btn.active:hover { + background: var(--color-accent-hover); +} + +.edit-btn { + background: var(--color-success); + color: white; +} + +.edit-btn.active:hover { + background: #059669; +} + +.delete-btn { + background: var(--color-danger); + color: white; +} + +.delete-btn.active:hover { + background: var(--color-danger); +} + +.select-btn { + background: var(--color-warning); + color: white; +} + +.select-btn.active:hover { + background: #d97706; +} + +/* Filter Slide Animation */ +.filter-slide-enter-active, +.filter-slide-leave-active { + transition: all var(--transition-medium); + max-height: 300px; + overflow: hidden; +} + +.filter-slide-enter-from, +.filter-slide-leave-to { + max-height: 0; + opacity: 0; + transform: translateY(-10px); +} + +/* Gallery Content */ +.gallery-content { + flex: 1; + display: flex; + flex-direction: column; + min-height: 0; + overflow: hidden; +} + +.empty-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 4rem 2rem; + text-align: center; +} + +.empty-icon { + color: var(--color-text-secondary); + margin-bottom: 1rem; +} + +.empty-state h3 { + font-size: 1.25rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0 0 0.5rem 0; +} + +.empty-state p { + color: var(--color-text-secondary); + margin: 0; +} + +/* Gallery Grid */ +.gallery-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + gap: 1.5rem; + padding: 1.5rem; +} + +.gallery-item { + background: var(--color-surface); + border: 1px solid var(--color-border-secondary); + border-radius: var(--radius-lg); + overflow: hidden; + transition: var(--transition-medium); + cursor: pointer; +} + +.gallery-item:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-md); + border-color: var(--color-border); +} + +.gallery-item.selected { + border-color: var(--color-blue-common); + box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2); +} + +/* Image Container */ +.image-container { + position: relative; + aspect-ratio: 16/9; + overflow: hidden; + background: var(--color-background-secondary); +} + +.gallery-image { + transition: var(--transition-medium); +} + +.gallery-image.loading { + opacity: 0; +} + +.image-placeholder { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + color: var(--color-text-secondary); + background: var(--color-surface-elevated); +} + +.image-loader { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + background: var(--color-surface-elevated); +} + +.loader-spinner { + width: 24px; + height: 24px; + border: 2px solid var(--color-border); + border-top: 2px solid var(--color-blue-common); + border-radius: 50%; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +/* Image Info */ +.image-info { + padding: 1rem; +} + +.image-name { + font-size: 0.875rem; + font-weight: 500; + color: var(--color-text-primary); + margin-bottom: 0.75rem; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.image-actions { + display: flex; + align-items: center; + justify-content: space-between; +} + +.action-icons { + display: flex; + gap: 0.5rem; +} + +.icon-button { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border: none; + border-radius: var(--radius-md); + background: var(--color-surface-elevated); + color: var(--color-text-secondary); + cursor: pointer; + transition: var(--transition-fast); +} + +.icon-button:hover { + color: var(--color-text-primary); + transform: translateY(-1px); +} + +.copy-icon:hover { + color: var(--color-copy); + background: rgba(6, 182, 212, 0.1); +} + +.edit-icon:hover { + color: var(--color-success); + background: rgba(16, 185, 129, 0.1); +} + +.delete-icon:hover { + color: var(--color-error); + background: rgba(239, 68, 68, 0.1); +} + +/* Custom Checkbox */ +.custom-checkbox { + position: relative; + display: flex; + align-items: center; + cursor: pointer; +} + +.custom-checkbox input[type="checkbox"] { + position: absolute; + opacity: 0; + cursor: pointer; + height: 0; + width: 0; +} + +.checkbox-mark { + display: inline-block; + width: 18px; + height: 18px; + border: 2px solid var(--color-border); + border-radius: var(--radius-sm); + position: relative; + transition: var(--transition-fast); +} + +.custom-checkbox input[type="checkbox"]:checked + .checkbox-mark { + background: var(--color-blue-common); + border-color: var(--color-blue-common); +} + +.custom-checkbox input[type="checkbox"]:checked + .checkbox-mark::after { + content: '✓'; + position: absolute; + top: -1px; + left: 3px; + color: white; + font-size: 12px; + font-weight: bold; +} + +/* Image Preview Modal */ +.image-preview-modal { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; + display: flex; + align-items: center; + justify-content: center; +} + +.modal-backdrop { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.8); +} + +.modal-content { + position: relative; + max-width: 90vw; + max-height: 90vh; + background: var(--color-surface); + border-radius: var(--radius-xl); + overflow: hidden; + box-shadow: var(--shadow-lg); +} + +.modal-close { + position: absolute; + top: 1rem; + right: 1rem; + z-index: 10; + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + border: none; + border-radius: 50%; + background: rgba(0, 0, 0, 0.5); + color: white; + cursor: pointer; + transition: var(--transition-fast); +} + +.modal-close:hover { + background: rgba(0, 0, 0, 0.7); +} + +.image-navigation { + display: flex; + align-items: center; + position: relative; +} + +.nav-button { + position: absolute; + z-index: 10; + display: flex; + align-items: center; + justify-content: center; + width: 48px; + height: 48px; + border: none; + border-radius: 50%; + background: rgba(0, 0, 0, 0.5); + color: white; + cursor: pointer; + transition: var(--transition-fast); +} + +.nav-button:hover:not(:disabled) { + background: rgba(0, 0, 0, 0.7); +} + +.nav-button:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.nav-button.prev { + left: 1rem; +} + +.nav-button.next { + right: 1rem; +} + +.image-viewer { + width: 90vw; + height: 80vh; + display: flex; + align-items: center; + justify-content: center; + background: #000; +} + +.preview-image { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} + +.image-details { + padding: 1rem 1.5rem; + border-top: 1px solid var(--color-border-secondary); + display: flex; + align-items: center; + justify-content: space-between; +} + +.image-details h3 { + font-size: 1rem; + font-weight: 500; + color: var(--color-text-primary); + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex: 1; + margin-right: 1rem; +} + +.image-counter { + font-size: 0.875rem; + color: var(--color-text-secondary); + white-space: nowrap; +} + +/* Modal Overlay */ +.modal-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; +} + +.modal-container { + background: var(--color-background-primary); + border-radius: var(--radius-xl); + box-shadow: var(--shadow-lg); + max-width: 500px; + width: 90%; + max-height: 90vh; + overflow-y: auto; +} + +.modal-container.large { + max-width: 700px; +} + +.modal-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1.5rem; + border-bottom: 1px solid var(--color-border-secondary); +} + +.modal-header h3 { + font-size: 1.25rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0; +} + +.modal-close-btn { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border: none; + border-radius: var(--radius-md); + background: var(--color-surface-elevated); + color: var(--color-text-secondary); + cursor: pointer; + transition: var(--transition-fast); +} + +.modal-close-btn:hover { + color: var(--color-text-primary); + background: var(--color-border-secondary); +} + +.modal-body { + padding: 1.5rem; +} + +.modal-footer { + display: flex; + justify-content: flex-end; + gap: 0.75rem; + padding: 1.5rem; + border-top: 1px solid var(--color-border-secondary); +} + +/* Form Elements */ +.form-group { + margin-bottom: 1.5rem; +} + +.form-group:last-child { + margin-bottom: 0; +} + +.form-label { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 0.875rem; + font-weight: 500; + color: var(--color-text-primary); + margin-bottom: 0.5rem; +} + +.form-input { + width: 100%; + padding: 0.75rem; + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-surface); + color: var(--color-text-primary); + font-size: 0.875rem; + transition: var(--transition-fast); + box-sizing: border-box; +} + +.form-input:focus { + outline: none; + border-color: var(--color-blue-common); + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); +} + +.info-button { + display: flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + border: none; + border-radius: 50%; + background: var(--color-blue-common); + color: white; + cursor: pointer; + transition: var(--transition-fast); +} + +.info-button:hover { + background: var(--color-blue-common); +} + +.info-panel { + margin-top: 1rem; + padding: 1rem; + background: var(--color-surface-elevated); + border-radius: var(--radius-md); + border: 1px solid var(--color-border-secondary); +} + +.info-panel h4 { + font-size: 0.875rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0 0 0.75rem 0; +} + +.placeholder-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 0.5rem; +} + +.placeholder-item { + display: flex; + align-items: center; + gap: 0.5rem; +} + +.placeholder-item code { + font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; + font-size: 0.75rem; + background: var(--color-surface); + color: var(--color-blue-common); + padding: 0.25rem 0.5rem; + border-radius: var(--radius-sm); + border: 1px solid var(--color-border); +} + +.placeholder-item span { + font-size: 0.75rem; + color: var(--color-text-secondary); +} + +/* Buttons */ +.btn-primary { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.75rem 1.5rem; + background: var(--color-blue-common); + color: white; + border: none; + border-radius: var(--radius-md); + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: var(--transition-fast); + font-family: inherit; +} + +.btn-primary:hover { + background: var(--color-blue-common); + transform: translateY(-1px); + box-shadow: var(--shadow-sm); +} + +.btn-secondary { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.75rem 1.5rem; + background: var(--color-surface-elevated); + color: var(--color-text-primary); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: var(--transition-fast); + font-family: inherit; +} + +.btn-secondary:hover { + background: var(--color-border-secondary); + transform: translateY(-1px); + box-shadow: var(--shadow-sm); +} + +/* Responsive Design */ +@media (max-width: 768px) { + .gallery-container { + padding: 0.75rem; + gap: 1rem; + } + + .header-content { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .header-actions { + width: 100%; + justify-content: flex-start; + } + + .filter-row { + flex-direction: column; + } + + .action-buttons { + width: 100%; + } + + .gallery-grid { + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + gap: 1rem; + padding: 1rem; + } + + .modal-container { + margin: 1rem; + width: calc(100% - 2rem); + } + + .image-viewer { + width: 90vw; + height: 50vh; + } + + .nav-button.prev { + left: 0.5rem; + } + + .nav-button.next { + right: 0.5rem; + } +} + +/* Lazy Loading */ +.load-more-trigger { + grid-column: 1 / -1; + display: flex; + justify-content: center; + align-items: center; + padding: 2rem; + min-height: 100px; +} + +.loading-indicator { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + color: var(--color-text-secondary); +} + +.loading-indicator span { + font-size: 0.875rem; +} + +/* Improve responsive layout for smaller screens */ +@media (max-width: 1024px) { + .filter-group, + .search-group { + min-width: 160px; + max-width: 220px; + } +} + +@media (max-width: 768px) { + .filter-group, + .search-group { + min-width: 140px; + max-width: 100%; + flex: 1 1 100%; + } + + .filter-row { + gap: 0.5rem; + } + + .filter-content { + padding: 0.75rem; + } + + .date-range-picker { + flex-direction: column; + gap: 0.5rem; + } + + .date-input { + width: 100%; + } + + .date-separator { + display: none; + } +} + +@media (max-width: 480px) { + .filter-content { + padding: 0.5rem; + } + + .filter-row { + gap: 0.5rem; + } + + .filter-group, + .search-group { + min-width: 100px; + } + + .filter-label { + font-size: 0.75rem; + } +} + +/* Virtual Scroller Styles */ +.virtual-gallery-scroller { + width: 100%; + flex: 1; + min-height: 0; +} + +.virtual-gallery-scroller .virtual-scroller { + height: 100%; + width: 100%; +} + +.virtual-gallery-scroller .virtual-scroller-item { + overflow: visible; + box-sizing: border-box; +} + +/* Ensure gallery items work well with virtual scroller */ +.virtual-gallery-scroller .gallery-item { + width: 100%; + height: calc(100% - 8px); + margin: 0; + box-sizing: border-box; + display: flex; + flex-direction: column; +} + +.virtual-gallery-scroller .image-container { + flex: 1; + min-height: 0; + aspect-ratio: auto; + display: flex; + align-items: center; + justify-content: center; + position: relative; + overflow: hidden; + background: var(--color-background-secondary); +} + +.virtual-gallery-scroller .image-info { + flex-shrink: 0; + padding: 0.75rem; + min-height: 80px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.virtual-gallery-scroller .gallery-image { + width: 100%; + height: 100%; + object-fit: contain; +} + +.virtual-gallery-scroller .image-loader { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + background: var(--color-surface-elevated); +} + +/* Enhanced Image Preview Styles */ +.image-preview-modal { + outline: none; +} + +.zoom-controls { + position: absolute; + top: 1rem; + left: 1rem; + z-index: 10; + display: flex; + align-items: center; + gap: 0.5rem; + background: rgba(0, 0, 0, 0.7); + border-radius: var(--radius-lg); + padding: 0.5rem; +} + +.zoom-btn { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + border: none; + border-radius: var(--radius-md); + background: rgba(255, 255, 255, 0.1); + color: white; + cursor: pointer; + transition: var(--transition-fast); + font-size: 0.875rem; + font-weight: 600; +} + +.zoom-btn:hover:not(:disabled) { + background: rgba(255, 255, 255, 0.2); +} + +.zoom-btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.zoom-btn.reset-btn { + width: auto; + padding: 0 0.75rem; + font-size: 0.75rem; +} + +.zoom-level { + color: white; + font-size: 0.875rem; + font-weight: 500; + min-width: 50px; + text-align: center; +} + +.image-viewer { + overflow: hidden; + position: relative; + user-select: none; +} + +.preview-image { + display: block; + max-width: none; + max-height: none; + width: auto; + height: auto; + transform-origin: center center; +} + +.image-help-text { + font-size: 0.75rem; + color: var(--color-text-tertiary); + margin-top: 0.25rem; + text-align: center; +} + +.image-viewer:active { + cursor: grabbing !important; +} + +/* Responsive adjustments for mobile */ +@media (max-width: 768px) { + .zoom-controls { + top: 0.5rem; + left: 0.5rem; + gap: 0.25rem; + padding: 0.25rem; + } + + .zoom-btn { + width: 28px; + height: 28px; + font-size: 0.75rem; + } + + .zoom-level { + font-size: 0.75rem; + min-width: 40px; + } + + .modal-close { + top: 0.5rem; + right: 0.5rem; + width: 36px; + height: 36px; + } + + .nav-button { + width: 40px; + height: 40px; + } + + .nav-button.prev { + left: 0.5rem; + } + + .nav-button.next { + right: 0.5rem; + } +} + + +/* Placeholder Help Styles */ +.placeholder-help { + background: var(--color-background-tertiary); + border: 1px solid var(--color-border); + border-radius: 12px; + padding: 0; + margin-top: 0.75rem; + max-height: 400px; + overflow-y: auto; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); +} + +.placeholder-category { + border-bottom: 1px solid var(--color-border-light); +} + +.placeholder-category:last-child { + border-bottom: none; +} + +.category-title { + font-size: 0.875rem; + font-weight: 600; + color: var(--color-text-secondary); + padding: 0.875rem 1rem 0.5rem; + background: linear-gradient(135deg, var(--color-background-secondary) 0%, var(--color-background-tertiary) 100%); + border-bottom: 1px solid var(--color-border-light); + margin: 0; + letter-spacing: 0.02em; +} + +.placeholder-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 0; + padding: 0.5rem 0; +} + +.placeholder-item { + display: flex; + align-items: center; + padding: 0.5rem 1rem; + font-size: 0.875rem; + line-height: 1.4; + border-radius: 0; + margin: 0; +} + +.placeholder-item:hover { + background: rgba(var(--color-accent-rgb), 0.08); +} + +.placeholder-item code { + background: var(--color-blue-common); + color: white; + padding: 0.3rem 0.6rem; + border-radius: 8px; + font-size: 1rem; + font-family: 'SF Mono', 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; + margin-right: 0.875rem; + min-width: 80px; + text-align: center; + font-weight: 600; + letter-spacing: 0.02em; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + border: 1px solid rgba(255, 255, 255, 0.2); + flex-shrink: 0; +} + +.placeholder-item span { + color: var(--color-text-primary); + font-weight: 500; + flex: 1; +} diff --git a/src/renderer/pages/css/PicgoSetting.css b/src/renderer/pages/css/PicgoSetting.css index 902486fa..7ba78b76 100644 --- a/src/renderer/pages/css/PicgoSetting.css +++ b/src/renderer/pages/css/PicgoSetting.css @@ -622,7 +622,7 @@ small { :root.auto.dark .settings-header, :root.auto.dark .tab-navigation, :root.auto.dark .settings-section { - background: var(--color-background-tertiary); + background: var(--color-background-secondary); border-color: var(--color-border); } diff --git a/src/renderer/pages/css/PluginPage.css b/src/renderer/pages/css/PluginPage.css index c59a8643..3a0d1884 100644 --- a/src/renderer/pages/css/PluginPage.css +++ b/src/renderer/pages/css/PluginPage.css @@ -1,761 +1,761 @@ -/* Global scrolling behavior */ -html, body { - overflow-x: hidden; -} - -/* Container */ -.plugin-container { - padding: 1rem; - width: 100%; - margin: 0; - display: flex; - flex-direction: column; - gap: 1.25rem; - min-height: 100vh; - box-sizing: border-box; - overflow-y: auto; -} - -/* Card Base */ -.plugin-card { - background: var(--color-surface); - border: 1px solid var(--color-border-secondary); - border-radius: var(--radius-xl); - overflow: hidden; - transition: var(--transition-medium); - box-shadow: var(--shadow-sm); -} - -.plugin-card:hover { - box-shadow: var(--shadow-md); - border-color: var(--color-border); -} - -/* Header Card */ -.header-card .card-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 1rem 1.5rem; - border-bottom: 1px solid var(--color-border-secondary); - flex-wrap: wrap; - gap: 1rem; -} - -.header-content { - display: flex; - align-items: center; - gap: 1rem; - flex: 1; -} - -.header-icon { - color: var(--color-accent); - display: flex; - align-items: center; -} - -.header-content h1 { - font-size: 1.5rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0; - letter-spacing: -0.025em; -} - -.header-content p { - font-size: 0.875rem; - color: var(--color-text-secondary); - margin: 0; -} - -.header-actions { - display: flex; - align-items: center; - gap: 0.75rem; - flex-wrap: wrap; -} - -.action-button { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.625rem 1rem; - background: var(--color-accent); - color: white; - border: none; - border-radius: var(--radius-md); - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: var(--transition-fast); - font-family: inherit; -} - -.action-button:hover { - background: var(--color-accent-hover); - transform: translateY(-1px); - box-shadow: var(--shadow-md); -} - -.action-button.secondary { - background: var(--color-surface-elevated); - color: var(--color-text-primary); - border: 1px solid var(--color-border); -} - -.action-button.secondary:hover { - background: var(--color-surface); - border-color: var(--color-accent); - color: var(--color-accent); -} - -.action-button.small { - padding: 0.5rem 0.75rem; - font-size: 0.75rem; -} - -/* Search Card */ -.search-card { - border-radius: var(--radius-lg); -} - -.search-container { - padding: 1rem 1.5rem; -} - -.search-input-wrapper { - position: relative; - display: flex; - align-items: center; -} - -.search-icon { - position: absolute; - left: 1rem; - color: var(--color-text-secondary); - z-index: 1; -} - -.search-input { - width: 100%; - padding: 0.75rem 1rem 0.75rem 3rem; - border: 1px solid var(--color-border); - border-radius: var(--radius-lg); - background: var(--color-surface-elevated); - color: var(--color-text-primary); - font-size: 0.875rem; - transition: var(--transition-fast); - font-family: inherit; -} - -.search-input:focus { - outline: none; - border-color: var(--color-accent); - box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.2); -} - -.search-input::placeholder { - color: var(--color-text-secondary); -} - -.clear-button { - position: absolute; - right: 0.5rem; - padding: 0.5rem; - background: transparent; - border: none; - color: var(--color-text-secondary); - cursor: pointer; - border-radius: var(--radius-md); - transition: var(--transition-fast); - display: flex; - align-items: center; -} - -.clear-button:hover { - background: var(--color-surface); - color: var(--color-text-primary); -} - -/* Notice Card */ -.notice-card { - border-radius: var(--radius-lg); - border-color: var(--color-warning); - background: linear-gradient(135deg, rgba(255, 193, 7, 0.1) 0%, var(--color-surface) 100%); -} - -.notice-content { - display: flex; - align-items: center; - gap: 1rem; - padding: 1rem 1.5rem; -} - -.notice-icon { - color: var(--color-warning); - flex-shrink: 0; -} - -.notice-text { - flex: 1; - font-size: 0.875rem; - font-weight: 500; - color: var(--color-text-primary); -} - -/* Loading */ -.loading-overlay { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(0, 0, 0, 0.5); - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - gap: 1rem; - z-index: 100; - border-radius: var(--radius-xl); -} - -.loading-spinner { - width: 40px; - height: 40px; - border: 3px solid var(--color-border); - border-top: 3px solid var(--color-accent); - border-radius: 50%; - animation: spin 1s linear infinite; -} - -.loading-text { - color: white; - font-size: 0.875rem; - font-weight: 500; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} - -/* Plugin Grid */ -.plugin-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); - gap: 1.25rem; - align-items: start; -} - -/* Plugin Item Card */ -.plugin-item-card { - position: relative; - border-radius: var(--radius-lg); - padding: 1.5rem; - transition: var(--transition-medium); - display: flex; - flex-direction: column; - min-height: 200px; - height: auto; -} - -.plugin-item-card:hover { - transform: translateY(-2px); - box-shadow: var(--shadow-lg); -} - -.plugin-item-card.disabled { - opacity: 0.7; -} - -/* Plugin Badges */ -.cli-badge, -.update-badge { - position: absolute; - top: 1rem; - right: 1rem; - padding: 0.25rem 0.5rem; - font-size: 0.75rem; - font-weight: 600; - border-radius: var(--radius-sm); - z-index: 1; -} - -.cli-badge { - background: var(--color-info); - color: var(--color-blue-common); -} - -.update-badge { - background: var(--color-success); - color: white; - right: 3.5rem; -} - -/* Plugin Header */ -.plugin-header { - display: flex; - align-items: flex-start; - gap: 1rem; - margin-bottom: 1rem; -} - -.plugin-logo { - width: 48px; - height: 48px; - border-radius: var(--radius-md); - object-fit: cover; - flex-shrink: 0; - border: 1px solid var(--color-border-secondary); -} - -.plugin-info { - flex: 1; - min-width: 0; -} - -.plugin-name { - font-size: 1rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0 0 0.25rem 0; - cursor: pointer; - transition: var(--transition-fast); - display: flex; - align-items: center; - gap: 0.5rem; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.plugin-name:hover { - color: var(--color-accent); -} - -.plugin-version { - font-size: 0.75rem; - font-weight: 400; - color: var(--color-text-secondary); - background: var(--color-surface-elevated); - padding: 0.125rem 0.375rem; - border-radius: var(--radius-sm); -} - -.plugin-author { - font-size: 0.875rem; - color: var(--color-text-secondary); - margin: 0; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -/* Plugin Description */ -.plugin-description { - margin-bottom: 1.5rem; - flex: 1; - display: flex; - align-items: flex-start; -} - -.plugin-description p { - font-size: 0.875rem; - color: var(--color-text-secondary); - line-height: 1.5; - margin: 0; - text-overflow: ellipsis; - overflow: hidden; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - min-height: 2.6rem; -} - -/* Plugin Actions */ -.plugin-actions { - margin-top: auto; - padding-top: 1rem; -} - -.plugin-button { - display: flex; - align-items: center; - gap: 0.5rem; - width: 100%; - padding: 0.75rem 1rem; - border: none; - border-radius: var(--radius-md); - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: var(--transition-fast); - font-family: inherit; -} - -.plugin-button:disabled { - cursor: not-allowed; - opacity: 0.6; -} - -.install-button { - background: var(--color-success); - color: white; -} - -.install-button:hover:not(:disabled) { - transform: translateY(-1px); -} - -.installing-button, -.processing-button { - background: var(--color-surface-elevated); - color: var(--color-text-secondary); - border: 1px solid var(--color-border); -} - -.installed-button { - background: var(--color-success-light); - color: var(--color-success); - border: 1px solid var(--color-success); -} - -.settings-button { - background: var(--color-accent); - color: white; -} - -.settings-button:hover:not(:disabled) { - background: var(--color-accent-hover); - transform: translateY(-1px); -} - -.disabled-button { - background: var(--color-surface-elevated); - color: var(--color-text-secondary); - border: 1px solid var(--color-border); -} - -.disabled-button:hover:not(:disabled) { - background: var(--color-surface); - border-color: var(--color-warning); - color: var(--color-warning); -} - -/* Button Spinner */ -.button-spinner { - width: 16px; - height: 16px; - border: 2px solid transparent; - border-top: 2px solid currentColor; - border-radius: 50%; - animation: spin 1s linear infinite; -} - -/* Empty State */ -.empty-state { - border-radius: var(--radius-lg); - padding: 3rem 2rem; -} - -.empty-content { - display: flex; - flex-direction: column; - align-items: center; - gap: 1rem; - text-align: center; -} - -.empty-icon { - color: var(--color-text-secondary); - opacity: 0.5; -} - -.empty-content h3 { - font-size: 1.125rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0; -} - -.empty-content p { - font-size: 0.875rem; - color: var(--color-text-secondary); - margin: 0; - max-width: 400px; -} - -/* Modal */ -.modal-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(0, 0, 0, 0.5); - display: flex; - align-items: center; - justify-content: center; - z-index: 1000; -} - -.modal-container { - background: var(--color-surface); - border-radius: var(--radius-xl); - box-shadow: var(--shadow-xl); - max-width: 70vw; - max-height: 80vh; - width: 100%; - margin: 2rem; - display: flex; - flex-direction: column; - border: 1px solid var(--color-border); -} - -.modal-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 1.5rem 1.5rem 0 1.5rem; -} - -.modal-title { - font-size: 1.25rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0; -} - -.modal-close { - display: flex; - align-items: center; - justify-content: center; - width: 2rem; - height: 2rem; - background: transparent; - border: none; - border-radius: var(--radius-md); - color: var(--color-text-secondary); - cursor: pointer; - transition: var(--transition-fast); -} - -.modal-close:hover { - background: var(--color-surface-elevated); - color: var(--color-text-primary); -} - -.modal-content { - flex: 1; - padding: 1.5rem; - overflow-y: auto; -} - -.modal-content::-webkit-scrollbar { - width: 6px; -} - -.modal-content::-webkit-scrollbar-track { - background: var(--color-surface-elevated); - border-radius: 3px; -} - -.modal-content::-webkit-scrollbar-thumb { - background: var(--color-border); - border-radius: 3px; -} - -.modal-content::-webkit-scrollbar-thumb:hover { - background: var(--color-text-secondary); -} - -.modal-footer { - display: flex; - align-items: center; - justify-content: flex-end; - gap: 0.75rem; - padding: 1.5rem; - border-top: 1px solid var(--color-border-secondary); -} - -/* Buttons */ -.btn { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.75rem 1.5rem; - border: none; - border-radius: var(--radius-md); - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: var(--transition-fast); - font-family: inherit; -} - -.btn:disabled { - cursor: not-allowed; - opacity: 0.6; -} - -.btn:hover:not(:disabled) { - transform: translateY(-1px); - box-shadow: var(--shadow-sm); -} - -.btn-primary { - background: var(--color-accent); - color: white; -} - -.btn-primary:hover:not(:disabled) { - background: var(--color-accent-hover); -} - -.btn-secondary { - background: var(--color-surface-elevated); - color: var(--color-text-primary); - border: 1px solid var(--color-border); -} - -.btn-secondary:hover:not(:disabled) { - background: var(--color-surface); - border-color: var(--color-accent); -} - -/* Transitions */ -.notice-enter-active, -.notice-leave-active { - transition: all var(--transition-medium); -} - -.notice-enter-from, -.notice-leave-to { - opacity: 0; - transform: translateY(-1rem); -} - -/* Responsive Design */ -@media (max-width: 768px) { - .plugin-container { - padding: 0.75rem; - gap: 1rem; - } - - .header-card .card-header { - flex-direction: column; - align-items: flex-start; - gap: 1rem; - } - - .header-actions { - width: 100%; - justify-content: flex-start; - flex-wrap: wrap; - } - - .plugin-grid { - grid-template-columns: 1fr; - } - - .modal-container { - max-width: 95vw; - margin: 1rem; - } - - .action-button { - min-width: 120px; - justify-content: center; - } -} - -@media (max-width: 480px) { - .plugin-container { - padding: 0.5rem; - } - - .plugin-item-card { - padding: 1rem; - } - - .header-actions { - flex-direction: column; - gap: 0.5rem; - width: 100%; - } - - .action-button { - width: 100%; - justify-content: center; - } -} - -/* Dark mode adjustments */ -:root.dark .plugin-container, -:root.auto.dark .plugin-container { - background: var(--color-background-secondary); -} - -:root.dark .plugin-card, -:root.auto.dark .plugin-card { - background: var(--color-surface); - border-color: var(--color-border-secondary); -} - -:root.dark .search-input, -:root.auto.dark .search-input { - background: var(--color-surface-elevated); - border-color: var(--color-border); - color: var(--color-text-primary); -} - -:root.dark .search-input:focus, -:root.auto.dark .search-input:focus { - border-color: var(--color-accent); -} - -:root.dark .modal-container, -:root.auto.dark .modal-container { - background: var(--color-surface); - border-color: var(--color-border); -} - -:root.dark .btn-secondary, -:root.auto.dark .btn-secondary { - background: var(--color-surface-elevated); - border-color: var(--color-border); -} - -:root.dark .btn-secondary:hover, -:root.auto.dark .btn-secondary:hover { - background: var(--color-surface); - border-color: var(--color-accent); -} - -/* Accessibility */ -@media (prefers-reduced-motion: reduce) { - * { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - } -} - -/* Focus styles for keyboard navigation */ -.action-button:focus-visible, -.plugin-button:focus-visible, -.btn:focus-visible, -.search-input:focus-visible, -.clear-button:focus-visible, -.modal-close:focus-visible { - outline: 2px solid var(--color-accent); - outline-offset: 2px; -} - -.plugin-name:focus-visible { - outline: 2px solid var(--color-accent); - outline-offset: 2px; - border-radius: var(--radius-sm); -} +/* Global scrolling behavior */ +html, body { + overflow-x: hidden; +} + +/* Container */ +.plugin-container { + padding: 1rem; + width: 100%; + margin: 0; + display: flex; + flex-direction: column; + gap: 1.25rem; + min-height: 100vh; + box-sizing: border-box; + overflow-y: auto; +} + +/* Card Base */ +.plugin-card { + background: var(--color-surface); + border: 1px solid var(--color-border-secondary); + border-radius: var(--radius-xl); + overflow: hidden; + transition: var(--transition-medium); + box-shadow: var(--shadow-sm); +} + +.plugin-card:hover { + box-shadow: var(--shadow-md); + border-color: var(--color-border); +} + +/* Header Card */ +.header-card .card-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem 1.5rem; + border-bottom: 1px solid var(--color-border-secondary); + flex-wrap: wrap; + gap: 1rem; +} + +.header-content { + display: flex; + align-items: center; + gap: 1rem; + flex: 1; +} + +.header-icon { + color: var(--color-accent); + display: flex; + align-items: center; +} + +.header-content h1 { + font-size: 1.5rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0; + letter-spacing: -0.025em; +} + +.header-content p { + font-size: 0.875rem; + color: var(--color-text-secondary); + margin: 0; +} + +.header-actions { + display: flex; + align-items: center; + gap: 0.75rem; + flex-wrap: wrap; +} + +.action-button { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.625rem 1rem; + background: var(--color-accent); + color: white; + border: none; + border-radius: var(--radius-md); + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: var(--transition-fast); + font-family: inherit; +} + +.action-button:hover { + background: var(--color-accent-hover); + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +.action-button.secondary { + background: var(--color-surface-elevated); + color: var(--color-text-primary); + border: 1px solid var(--color-border); +} + +.action-button.secondary:hover { + background: var(--color-surface); + border-color: var(--color-accent); + color: var(--color-accent); +} + +.action-button.small { + padding: 0.5rem 0.75rem; + font-size: 0.75rem; +} + +/* Search Card */ +.search-card { + border-radius: var(--radius-lg); +} + +.search-container { + padding: 1rem 1.5rem; +} + +.search-input-wrapper { + position: relative; + display: flex; + align-items: center; +} + +.search-icon { + position: absolute; + left: 1rem; + color: var(--color-text-secondary); + z-index: 1; +} + +.search-input { + width: 100%; + padding: 0.75rem 1rem 0.75rem 3rem; + border: 1px solid var(--color-border); + border-radius: var(--radius-lg); + background: var(--color-surface-elevated); + color: var(--color-text-primary); + font-size: 0.875rem; + transition: var(--transition-fast); + font-family: inherit; +} + +.search-input:focus { + outline: none; + border-color: var(--color-accent); + box-shadow: 0 0 0 2px rgba(0, 122, 255, 0.2); +} + +.search-input::placeholder { + color: var(--color-text-secondary); +} + +.clear-button { + position: absolute; + right: 0.5rem; + padding: 0.5rem; + background: transparent; + border: none; + color: var(--color-text-secondary); + cursor: pointer; + border-radius: var(--radius-md); + transition: var(--transition-fast); + display: flex; + align-items: center; +} + +.clear-button:hover { + background: var(--color-surface); + color: var(--color-text-primary); +} + +/* Notice Card */ +.notice-card { + border-radius: var(--radius-lg); + border-color: var(--color-warning); + background: linear-gradient(135deg, rgba(255, 193, 7, 0.1) 0%, var(--color-surface) 100%); +} + +.notice-content { + display: flex; + align-items: center; + gap: 1rem; + padding: 1rem 1.5rem; +} + +.notice-icon { + color: var(--color-warning); + flex-shrink: 0; +} + +.notice-text { + flex: 1; + font-size: 0.875rem; + font-weight: 500; + color: var(--color-text-primary); +} + +/* Loading */ +.loading-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1rem; + z-index: 100; + border-radius: var(--radius-xl); +} + +.loading-spinner { + width: 40px; + height: 40px; + border: 3px solid var(--color-border); + border-top: 3px solid var(--color-accent); + border-radius: 50%; + animation: spin 1s linear infinite; +} + +.loading-text { + color: white; + font-size: 0.875rem; + font-weight: 500; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +/* Plugin Grid */ +.plugin-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + gap: 1.25rem; + align-items: start; +} + +/* Plugin Item Card */ +.plugin-item-card { + position: relative; + border-radius: var(--radius-lg); + padding: 1.5rem; + transition: var(--transition-medium); + display: flex; + flex-direction: column; + min-height: 200px; + height: auto; +} + +.plugin-item-card:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +.plugin-item-card.disabled { + opacity: 0.7; +} + +/* Plugin Badges */ +.cli-badge, +.update-badge { + position: absolute; + top: 1rem; + right: 1rem; + padding: 0.25rem 0.5rem; + font-size: 0.75rem; + font-weight: 600; + border-radius: var(--radius-sm); + z-index: 1; +} + +.cli-badge { + background: var(--color-info); + color: var(--color-blue-common); +} + +.update-badge { + background: var(--color-success); + color: white; + right: 3.5rem; +} + +/* Plugin Header */ +.plugin-header { + display: flex; + align-items: flex-start; + gap: 1rem; + margin-bottom: 1rem; +} + +.plugin-logo { + width: 48px; + height: 48px; + border-radius: var(--radius-md); + object-fit: cover; + flex-shrink: 0; + border: 1px solid var(--color-border-secondary); +} + +.plugin-info { + flex: 1; + min-width: 0; +} + +.plugin-name { + font-size: 1rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0 0 0.25rem 0; + cursor: pointer; + transition: var(--transition-fast); + display: flex; + align-items: center; + gap: 0.5rem; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} + +.plugin-name:hover { + color: var(--color-accent); +} + +.plugin-version { + font-size: 0.75rem; + font-weight: 400; + color: var(--color-text-secondary); + background: var(--color-surface-elevated); + padding: 0.125rem 0.375rem; + border-radius: var(--radius-sm); +} + +.plugin-author { + font-size: 0.875rem; + color: var(--color-text-secondary); + margin: 0; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} + +/* Plugin Description */ +.plugin-description { + margin-bottom: 1.5rem; + flex: 1; + display: flex; + align-items: flex-start; +} + +.plugin-description p { + font-size: 0.875rem; + color: var(--color-text-secondary); + line-height: 1.5; + margin: 0; + text-overflow: ellipsis; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + min-height: 2.6rem; +} + +/* Plugin Actions */ +.plugin-actions { + margin-top: auto; + padding-top: 1rem; +} + +.plugin-button { + display: flex; + align-items: center; + gap: 0.5rem; + width: 100%; + padding: 0.75rem 1rem; + border: none; + border-radius: var(--radius-md); + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: var(--transition-fast); + font-family: inherit; +} + +.plugin-button:disabled { + cursor: not-allowed; + opacity: 0.6; +} + +.install-button { + background: var(--color-success); + color: white; +} + +.install-button:hover:not(:disabled) { + transform: translateY(-1px); +} + +.installing-button, +.processing-button { + background: var(--color-surface-elevated); + color: var(--color-text-secondary); + border: 1px solid var(--color-border); +} + +.installed-button { + background: var(--color-success-light); + color: var(--color-success); + border: 1px solid var(--color-success); +} + +.settings-button { + background: var(--color-accent); + color: white; +} + +.settings-button:hover:not(:disabled) { + background: var(--color-accent-hover); + transform: translateY(-1px); +} + +.disabled-button { + background: var(--color-surface-elevated); + color: var(--color-text-secondary); + border: 1px solid var(--color-border); +} + +.disabled-button:hover:not(:disabled) { + background: var(--color-surface); + border-color: var(--color-warning); + color: var(--color-warning); +} + +/* Button Spinner */ +.button-spinner { + width: 16px; + height: 16px; + border: 2px solid transparent; + border-top: 2px solid currentColor; + border-radius: 50%; + animation: spin 1s linear infinite; +} + +/* Empty State */ +.empty-state { + border-radius: var(--radius-lg); + padding: 3rem 2rem; +} + +.empty-content { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + text-align: center; +} + +.empty-icon { + color: var(--color-text-secondary); + opacity: 0.5; +} + +.empty-content h3 { + font-size: 1.125rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0; +} + +.empty-content p { + font-size: 0.875rem; + color: var(--color-text-secondary); + margin: 0; + max-width: 400px; +} + +/* Modal */ +.modal-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; +} + +.modal-container { + background: var(--color-surface); + border-radius: var(--radius-xl); + box-shadow: var(--shadow-xl); + max-width: 70vw; + max-height: 80vh; + width: 100%; + margin: 2rem; + display: flex; + flex-direction: column; + border: 1px solid var(--color-border); +} + +.modal-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1.5rem 1.5rem 0 1.5rem; +} + +.modal-title { + font-size: 1.25rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0; +} + +.modal-close { + display: flex; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + background: transparent; + border: none; + border-radius: var(--radius-md); + color: var(--color-text-secondary); + cursor: pointer; + transition: var(--transition-fast); +} + +.modal-close:hover { + background: var(--color-surface-elevated); + color: var(--color-text-primary); +} + +.modal-content { + flex: 1; + padding: 1.5rem; + overflow-y: auto; +} + +.modal-content::-webkit-scrollbar { + width: 6px; +} + +.modal-content::-webkit-scrollbar-track { + background: var(--color-surface-elevated); + border-radius: 3px; +} + +.modal-content::-webkit-scrollbar-thumb { + background: var(--color-border); + border-radius: 3px; +} + +.modal-content::-webkit-scrollbar-thumb:hover { + background: var(--color-text-secondary); +} + +.modal-footer { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 0.75rem; + padding: 1.5rem; + border-top: 1px solid var(--color-border-secondary); +} + +/* Buttons */ +.btn { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.75rem 1.5rem; + border: none; + border-radius: var(--radius-md); + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: var(--transition-fast); + font-family: inherit; +} + +.btn:disabled { + cursor: not-allowed; + opacity: 0.6; +} + +.btn:hover:not(:disabled) { + transform: translateY(-1px); + box-shadow: var(--shadow-sm); +} + +.btn-primary { + background: var(--color-accent); + color: white; +} + +.btn-primary:hover:not(:disabled) { + background: var(--color-accent-hover); +} + +.btn-secondary { + background: var(--color-surface-elevated); + color: var(--color-text-primary); + border: 1px solid var(--color-border); +} + +.btn-secondary:hover:not(:disabled) { + background: var(--color-surface); + border-color: var(--color-accent); +} + +/* Transitions */ +.notice-enter-active, +.notice-leave-active { + transition: all var(--transition-medium); +} + +.notice-enter-from, +.notice-leave-to { + opacity: 0; + transform: translateY(-1rem); +} + +/* Responsive Design */ +@media (max-width: 768px) { + .plugin-container { + padding: 0.75rem; + gap: 1rem; + } + + .header-card .card-header { + flex-direction: column; + align-items: flex-start; + gap: 1rem; + } + + .header-actions { + width: 100%; + justify-content: flex-start; + flex-wrap: wrap; + } + + .plugin-grid { + grid-template-columns: 1fr; + } + + .modal-container { + max-width: 95vw; + margin: 1rem; + } + + .action-button { + min-width: 120px; + justify-content: center; + } +} + +@media (max-width: 480px) { + .plugin-container { + padding: 0.5rem; + } + + .plugin-item-card { + padding: 1rem; + } + + .header-actions { + flex-direction: column; + gap: 0.5rem; + width: 100%; + } + + .action-button { + width: 100%; + justify-content: center; + } +} + +/* Dark mode adjustments */ +:root.dark .plugin-container, +:root.auto.dark .plugin-container { + background: var(--color-background-secondary); +} + +:root.dark .plugin-card, +:root.auto.dark .plugin-card { + background: var(--color-surface-elevated); + border-color: var(--color-border-secondary); +} + +:root.dark .search-input, +:root.auto.dark .search-input { + background: var(--color-surface-elevated); + border-color: var(--color-border); + color: var(--color-text-primary); +} + +:root.dark .search-input:focus, +:root.auto.dark .search-input:focus { + border-color: var(--color-accent); +} + +:root.dark .modal-container, +:root.auto.dark .modal-container { + background: var(--color-surface); + border-color: var(--color-border); +} + +:root.dark .btn-secondary, +:root.auto.dark .btn-secondary { + background: var(--color-surface-elevated); + border-color: var(--color-border); +} + +:root.dark .btn-secondary:hover, +:root.auto.dark .btn-secondary:hover { + background: var(--color-surface); + border-color: var(--color-accent); +} + +/* Accessibility */ +@media (prefers-reduced-motion: reduce) { + * { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } +} + +/* Focus styles for keyboard navigation */ +.action-button:focus-visible, +.plugin-button:focus-visible, +.btn:focus-visible, +.search-input:focus-visible, +.clear-button:focus-visible, +.modal-close:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 2px; +} + +.plugin-name:focus-visible { + outline: 2px solid var(--color-accent); + outline-offset: 2px; + border-radius: var(--radius-sm); +} diff --git a/src/renderer/pages/css/UploadPage.css b/src/renderer/pages/css/UploadPage.css index 0f26b8be..28a971f1 100644 --- a/src/renderer/pages/css/UploadPage.css +++ b/src/renderer/pages/css/UploadPage.css @@ -18,7 +18,7 @@ html, body { /* Card Base */ .upload-card { - background: var(--color-surface); + background: var(--color-background-secondary); border: 1px solid var(--color-border-secondary); border-radius: var(--radius-xl); overflow: hidden; diff --git a/src/renderer/pages/css/UploaderConfigPage.css b/src/renderer/pages/css/UploaderConfigPage.css index 39427878..4be2ab54 100644 --- a/src/renderer/pages/css/UploaderConfigPage.css +++ b/src/renderer/pages/css/UploaderConfigPage.css @@ -1,296 +1,296 @@ -/* Container */ -.config-container { - padding: 1rem; - width: 100%; - margin: 0; - display: flex; - flex-direction: column; - gap: 1.25rem; - min-height: 100vh; - box-sizing: border-box; - overflow-y: auto; -} - -/* Card Base */ -.config-card { - background: var(--color-surface); - border: 1px solid var(--color-border-secondary); - border-radius: var(--radius-xl); - overflow: hidden; - transition: var(--transition-medium); - box-shadow: var(--shadow-sm); -} - -.config-card:hover { - box-shadow: var(--shadow-md); - border-color: var(--color-border); -} - -/* Header Card */ -.header-card .card-header { - padding: 1.5rem 2rem; - border-bottom: 1px solid var(--color-border-secondary); -} - -.page-title { - font-size: 1.5rem; - font-weight: 600; - color: var(--color-text-primary); - margin: 0; - letter-spacing: -0.025em; -} - -/* Main Card */ -.main-card { - background: var( --color-background-tertiary); - padding: 1.5rem; -} - -.config-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); - gap: 1rem; - width: 100%; -} - -@media (max-width: 768px) { - .config-grid { - grid-template-columns: 1fr; - gap: 0.75rem; - } -} - -@media (min-width: 1200px) { - .config-grid { - grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); - gap: 1.25rem; - } -} - -/* Config Items */ -.config-item { - background: var(--color-surface-elevated); - border: 1px solid var(--color-border); - border-radius: var(--radius-lg); - padding: 1.25rem; - cursor: pointer; - transition: var(--transition-medium); - position: relative; - min-height: 120px; - display: flex; - flex-direction: column; - justify-content: space-between; -} - -.config-item:hover { - background: var(--color-surface); - border-color: var(--color-accent); - transform: translateY(-2px); - box-shadow: var(--shadow-md); -} - -.config-item.selected { - border-color: var(--color-accent); - background: var(--color-surface); - box-shadow: var(--shadow-md); -} - -.config-content { - flex: 1; - margin-right: 2rem; -} - -.config-name { - font-size: 1rem; - font-weight: 600; - color: var(--color-text-primary); - margin-bottom: 0.5rem; - line-height: 1.4; -} - -.config-update-time { - font-size: 0.875rem; - color: var(--color-text-secondary); - margin-bottom: 0.75rem; -} - -.default-badge { - display: inline-flex; - align-items: center; - padding: 0.25rem 0.75rem; - background: var(--color-accent); - color: white; - font-size: 0.75rem; - font-weight: 500; - border-radius: var(--radius-md); - text-transform: uppercase; - letter-spacing: 0.025em; -} - -.config-actions { - position: absolute; - top: 1rem; - right: 1rem; - display: flex; - gap: 0.5rem; -} - -.action-btn { - display: flex; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - background: var(--color-surface-elevated); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - cursor: pointer; - transition: var(--transition-fast); - color: var(--color-text-secondary); -} - -.action-btn:hover { - background: var(--color-surface); - transform: translateY(-1px); - box-shadow: var(--shadow-sm); -} - -.edit-btn:hover { - border-color: var(--color-accent); - color: var(--color-accent); -} - -.delete-btn:hover:not(.disabled) { - border-color: var(--color-danger); - color: var(--color-danger); -} - -.delete-btn.disabled { - cursor: not-allowed; - opacity: 0.5; -} - -/* Add New Config Item */ -.config-item-add { - border: 2px dashed var(--color-border); - background: var(--color-surface); - display: flex; - align-items: center; - justify-content: center; - min-height: 120px; -} - -.config-item-add:hover { - border-color: var(--color-accent); - background: var(--color-surface-elevated); - transform: translateY(-2px); -} - -.add-content { - display: flex; - flex-direction: column; - align-items: center; - gap: 0.75rem; - color: var(--color-text-secondary); - transition: var(--transition-fast); -} - -.config-item-add:hover .add-content { - color: var(--color-accent); -} - -.add-text { - font-size: 0.875rem; - font-weight: 500; -} - -/* Actions Card */ -.actions-card { - border-radius: var(--radius-lg); -} - -.card-actions { - padding: 1.25rem 1.5rem; - display: flex; - justify-content: center; -} - -.primary-button { - display: flex; - align-items: center; - gap: 0.5rem; - padding: 0.875rem 2rem; - background: var(--color-accent); - color: white; - border: none; - border-radius: var(--radius-lg); - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: var(--transition-fast); - font-family: inherit; - min-width: 200px; - justify-content: center; -} - -.primary-button:hover:not(:disabled) { - background: var(--color-accent-hover); - transform: translateY(-1px); - box-shadow: var(--shadow-md); -} - -.primary-button:disabled { - background: var(--color-border); - color: var(--color-text-secondary); - cursor: not-allowed; - transform: none; - box-shadow: none; -} - -/* Responsive Design */ -@media (max-width: 768px) { - .config-container { - padding: 0.75rem; - gap: 1rem; - } - - .header-card .card-header { - padding: 1rem 1.25rem; - } - - .page-title { - font-size: 1.25rem; - } - - .main-card { - padding: 1rem; - } - - .config-item { - padding: 1rem; - min-height: 100px; - } - - .config-actions { - top: 0.75rem; - right: 0.75rem; - } - - .action-btn { - width: 28px; - height: 28px; - } - - .primary-button { - padding: 0.75rem 1.5rem; - min-width: 180px; - } -} - -@media (min-width: 1024px) { - .config-container { - padding: 1.5rem 2rem; - max-width: 1200px; - margin: 0 auto; - } +/* Container */ +.config-container { + padding: 1rem; + width: 100%; + margin: 0; + display: flex; + flex-direction: column; + gap: 1.25rem; + min-height: 100vh; + box-sizing: border-box; + overflow-y: auto; +} + +/* Card Base */ +.config-card { + background: var(--color-surface); + border: 1px solid var(--color-border-secondary); + border-radius: var(--radius-xl); + overflow: hidden; + transition: var(--transition-medium); + box-shadow: var(--shadow-sm); +} + +.config-card:hover { + box-shadow: var(--shadow-md); + border-color: var(--color-border); +} + +/* Header Card */ +.header-card .card-header { + padding: 1.5rem 2rem; + border-bottom: 1px solid var(--color-border-secondary); +} + +.page-title { + font-size: 1.5rem; + font-weight: 600; + color: var(--color-text-primary); + margin: 0; + letter-spacing: -0.025em; +} + +/* Main Card */ +.main-card { + background: var( --color-background-secondary); + padding: 1.5rem; +} + +.config-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 1rem; + width: 100%; +} + +@media (max-width: 768px) { + .config-grid { + grid-template-columns: 1fr; + gap: 0.75rem; + } +} + +@media (min-width: 1200px) { + .config-grid { + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + gap: 1.25rem; + } +} + +/* Config Items */ +.config-item { + background: var(--color-surface-elevated); + border: 1px solid var(--color-border); + border-radius: var(--radius-lg); + padding: 1.25rem; + cursor: pointer; + transition: var(--transition-medium); + position: relative; + min-height: 120px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.config-item:hover { + background: var(--color-surface); + border-color: var(--color-accent); + transform: translateY(-2px); + box-shadow: var(--shadow-md); +} + +.config-item.selected { + border-color: var(--color-accent); + background: var(--color-surface); + box-shadow: var(--shadow-md); +} + +.config-content { + flex: 1; + margin-right: 2rem; +} + +.config-name { + font-size: 1rem; + font-weight: 600; + color: var(--color-text-primary); + margin-bottom: 0.5rem; + line-height: 1.4; +} + +.config-update-time { + font-size: 0.875rem; + color: var(--color-text-secondary); + margin-bottom: 0.75rem; +} + +.default-badge { + display: inline-flex; + align-items: center; + padding: 0.25rem 0.75rem; + background: var(--color-accent); + color: white; + font-size: 0.75rem; + font-weight: 500; + border-radius: var(--radius-md); + text-transform: uppercase; + letter-spacing: 0.025em; +} + +.config-actions { + position: absolute; + top: 1rem; + right: 1rem; + display: flex; + gap: 0.5rem; +} + +.action-btn { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + background: var(--color-surface-elevated); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + cursor: pointer; + transition: var(--transition-fast); + color: var(--color-text-secondary); +} + +.action-btn:hover { + background: var(--color-surface); + transform: translateY(-1px); + box-shadow: var(--shadow-sm); +} + +.edit-btn:hover { + border-color: var(--color-accent); + color: var(--color-accent); +} + +.delete-btn:hover:not(.disabled) { + border-color: var(--color-danger); + color: var(--color-danger); +} + +.delete-btn.disabled { + cursor: not-allowed; + opacity: 0.5; +} + +/* Add New Config Item */ +.config-item-add { + border: 2px dashed var(--color-border); + background: var(--color-surface); + display: flex; + align-items: center; + justify-content: center; + min-height: 120px; +} + +.config-item-add:hover { + border-color: var(--color-accent); + background: var(--color-surface-elevated); + transform: translateY(-2px); +} + +.add-content { + display: flex; + flex-direction: column; + align-items: center; + gap: 0.75rem; + color: var(--color-text-secondary); + transition: var(--transition-fast); +} + +.config-item-add:hover .add-content { + color: var(--color-accent); +} + +.add-text { + font-size: 0.875rem; + font-weight: 500; +} + +/* Actions Card */ +.actions-card { + border-radius: var(--radius-lg); +} + +.card-actions { + padding: 1.25rem 1.5rem; + display: flex; + justify-content: center; +} + +.primary-button { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.875rem 2rem; + background: var(--color-accent); + color: white; + border: none; + border-radius: var(--radius-lg); + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + transition: var(--transition-fast); + font-family: inherit; + min-width: 200px; + justify-content: center; +} + +.primary-button:hover:not(:disabled) { + background: var(--color-accent-hover); + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +.primary-button:disabled { + background: var(--color-border); + color: var(--color-text-secondary); + cursor: not-allowed; + transform: none; + box-shadow: none; +} + +/* Responsive Design */ +@media (max-width: 768px) { + .config-container { + padding: 0.75rem; + gap: 1rem; + } + + .header-card .card-header { + padding: 1rem 1.25rem; + } + + .page-title { + font-size: 1.25rem; + } + + .main-card { + padding: 1rem; + } + + .config-item { + padding: 1rem; + min-height: 100px; + } + + .config-actions { + top: 0.75rem; + right: 0.75rem; + } + + .action-btn { + width: 28px; + height: 28px; + } + + .primary-button { + padding: 0.75rem 1.5rem; + min-width: 180px; + } +} + +@media (min-width: 1024px) { + .config-container { + padding: 1.5rem 2rem; + max-width: 1200px; + margin: 0 auto; + } } \ No newline at end of file diff --git a/src/renderer/pages/picbeds/index.vue b/src/renderer/pages/picbeds/index.vue index 83a1d78d..03177a31 100644 --- a/src/renderer/pages/picbeds/index.vue +++ b/src/renderer/pages/picbeds/index.vue @@ -1,740 +1,740 @@ - - - - - - - + + + + + + + diff --git a/src/renderer/public/errorLoading.png b/src/renderer/public/errorLoading.png index 2c0768b7d449e0464e95554fa68cf9d11996fc88..0a352a9ba71891ccc8d608735b9f2b80813e2026 100644 GIT binary patch literal 80975 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 literal 3626 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 By&eDn