feat: add Shaarli Pro theme with new header, styling, and JavaScript.

This commit is contained in:
2026-01-14 12:29:13 -05:00
parent 16a76db547
commit 7fdf3edcf3
3 changed files with 358 additions and 13 deletions
+150 -1
View File
@@ -1076,6 +1076,12 @@ input:checked+.theme-slider:before {
color: var(--text-main);
}
.paging-total {
color: var(--text-muted);
font-size: 0.85rem;
margin-left: 0.25rem;
}
.paging a {
display: flex;
align-items: center;
@@ -2813,7 +2819,6 @@ select:focus {
}
}
/* ===== Print Styles ===== */
@media print {
.sidebar,
@@ -2832,4 +2837,148 @@ select:focus {
box-shadow: none;
border: 1px solid #ddd;
}
}
/* ===== Filter Active Indicator ===== */
.header-action-btn.has-active-filter {
position: relative;
background: rgba(59, 130, 246, 0.3);
border: 1px solid rgba(59, 130, 246, 0.5);
}
.header-action-btn.has-active-filter:hover {
background: rgba(59, 130, 246, 0.4);
}
.filter-badge {
position: absolute;
top: 4px;
right: 4px;
width: 8px;
height: 8px;
background: #ef4444;
border-radius: 50%;
border: 2px solid var(--header-bg);
animation: pulse-badge 2s infinite;
}
@keyframes pulse-badge {
0%,
100% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.2);
opacity: 0.8;
}
}
/* ===== Filter Info Banner ===== */
.filter-info-banner {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 0.875rem 1.25rem;
margin-bottom: 1rem;
background: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(99, 102, 241, 0.08));
border: 1px solid rgba(59, 130, 246, 0.25);
border-radius: 0.75rem;
color: var(--text-main);
animation: slideInBanner 0.3s ease;
}
[data-theme="dark"] .filter-info-banner {
background: linear-gradient(135deg, rgba(59, 130, 246, 0.15), rgba(99, 102, 241, 0.12));
border-color: rgba(59, 130, 246, 0.3);
}
@keyframes slideInBanner {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.filter-info-content {
display: flex;
align-items: center;
gap: 0.75rem;
font-size: 0.9rem;
}
.filter-info-content i {
font-size: 1.25rem;
color: #3b82f6;
}
.filter-info-content strong {
color: #3b82f6;
font-weight: 600;
}
[data-theme="dark"] .filter-info-content i,
[data-theme="dark"] .filter-info-content strong {
color: #60a5fa;
}
.filter-clear-btn {
display: flex;
align-items: center;
gap: 0.375rem;
padding: 0.5rem 0.875rem;
background: rgba(239, 68, 68, 0.1);
border: 1px solid rgba(239, 68, 68, 0.25);
border-radius: 0.5rem;
color: #ef4444;
font-size: 0.8125rem;
font-weight: 500;
font-family: inherit;
text-decoration: none;
transition: all 0.2s ease;
white-space: nowrap;
cursor: pointer;
}
.filter-clear-btn:hover {
background: rgba(239, 68, 68, 0.2);
border-color: rgba(239, 68, 68, 0.4);
color: #dc2626;
}
[data-theme="dark"] .filter-clear-btn {
background: rgba(239, 68, 68, 0.15);
border-color: rgba(239, 68, 68, 0.3);
color: #f87171;
}
[data-theme="dark"] .filter-clear-btn:hover {
background: rgba(239, 68, 68, 0.25);
color: #fca5a5;
}
.filter-clear-btn i {
font-size: 1rem;
}
/* Responsive adjustments for filter banner */
@media (max-width: 600px) {
.filter-info-banner {
flex-direction: column;
align-items: flex-start;
gap: 0.75rem;
padding: 0.75rem 1rem;
}
.filter-clear-btn {
align-self: flex-end;
}
}