diff --git a/shaarli-pro/css/custom_views.css b/shaarli-pro/css/custom_views.css index 794b8a2..534852f 100644 --- a/shaarli-pro/css/custom_views.css +++ b/shaarli-pro/css/custom_views.css @@ -452,275 +452,283 @@ body.view-notes .content-container { border-top-color: rgba(255, 255, 255, 0.12); } -.note-modal-tags.is-empty { - display: none; -} + .note-modal-tags.is-empty { + display: none; + } -.note-modal-tags .note-tag { - display: inline-flex; - align-items: center; - gap: 6px; - background: rgba(0, 0, 0, 0.06); - border: 1px solid rgba(0, 0, 0, 0.14); - color: inherit; - border-radius: 999px; - padding: 4px 8px; - font-size: 0.72rem; - letter-spacing: 0.02em; -} + .note-modal-tags .note-tag { + display: inline-flex; + align-items: center; + gap: 0.25rem; + background: var(--tag-bg); + color: var(--tag-text); + border-radius: 999px; + padding: 0.25rem 0.5rem; + font-size: 0.75rem; + font-weight: 500; + } -.note-modal-tags .note-tag-text { - line-height: 1.2; -} + .note-modal-tags .note-tag-text { + line-height: 1.2; + } -.note-modal-tags .note-tag-remove-btn { - display: inline-flex; - align-items: center; - justify-content: center; - width: 18px; - height: 18px; - border: none; - border-radius: 999px; - background: rgba(0, 0, 0, 0.12); - color: currentColor; - cursor: pointer; - padding: 0; - line-height: 1; - font-size: 14px; - opacity: 0.9; -} + .note-modal-tags .note-tag-remove-btn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 1.1rem; + height: 1.1rem; + border: none; + border-radius: 999px; + background: rgba(0, 0, 0, 0.12); + color: currentColor; + cursor: pointer; + padding: 0; + line-height: 1; + font-size: 0.8rem; + } -[data-theme="dark"] .note-modal-tags .note-tag-remove-btn { - background: rgba(255, 255, 255, 0.18); -} + [data-theme="dark"] .note-modal-tags .note-tag-remove-btn { + background: rgba(255, 255, 255, 0.18); + } -.note-modal-actions { - display: flex; - align-items: center; - justify-content: space-between; - gap: 6px; - padding: 8px 12px; - border-top: 1px solid rgba(0, 0, 0, 0.12); - background: rgba(0, 0, 0, 0.03); - flex-shrink: 0; - flex-wrap: wrap; -} + .note-modal-actions { + display: flex; + align-items: center; + justify-content: space-between; + gap: 6px; + padding: 8px 12px; + border-top: 1px solid rgba(0, 0, 0, 0.12); + background: rgba(0, 0, 0, 0.03); + flex-shrink: 0; + flex-wrap: wrap; + } -[data-theme="dark"] .note-modal-actions { - border-top-color: rgba(255, 255, 255, 0.12); - background: rgba(255, 255, 255, 0.06); -} + [data-theme="dark"] .note-modal-actions { + border-top-color: rgba(255, 255, 255, 0.12); + background: rgba(255, 255, 255, 0.06); + } -.note-modal-actions-left { - display: flex; - align-items: center; - gap: 2px; - flex-wrap: wrap; -} + .note-modal-actions-left { + display: flex; + align-items: center; + gap: 2px; + flex-wrap: wrap; + } -.note-modal-actions-left > button, -.note-modal-actions-left > a, -.note-modal-actions-left > .note-modal-color-picker > button { - background: transparent; - border: none; - color: inherit; - opacity: 0.9; - width: 32px; - height: 32px; - border-radius: 50%; - display: inline-flex; - align-items: center; - justify-content: center; - cursor: pointer; - text-decoration: none; -} + .note-modal-actions-left > button, + .note-modal-actions-left > a, + .note-modal-actions-left > .note-modal-color-picker > button { + background: transparent; + border: none; + color: inherit; + opacity: 0.9; + width: 32px; + height: 32px; + border-radius: 50%; + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; + text-decoration: none; + } -.note-modal-actions-left > button:hover, -.note-modal-actions-left > a:hover, -.note-modal-actions-left > .note-modal-color-picker > button:hover { - opacity: 1; - background: rgba(0, 0, 0, 0.08); -} + .note-modal-actions-left > button:hover, + .note-modal-actions-left > a:hover, + .note-modal-actions-left > .note-modal-color-picker > button:hover { + opacity: 1; + background: rgba(0, 0, 0, 0.08); + } -[data-theme="dark"] .note-modal-actions-left > button:hover, -[data-theme="dark"] .note-modal-actions-left > a:hover, -[data-theme="dark"] .note-modal-actions-left > .note-modal-color-picker > button:hover { - background: rgba(255, 255, 255, 0.14); -} + [data-theme="dark"] .note-modal-actions-left > button:hover, + [data-theme="dark"] .note-modal-actions-left > a:hover, + [data-theme="dark"] .note-modal-actions-left > .note-modal-color-picker > button:hover { + background: rgba(255, 255, 255, 0.14); + } -.note-modal-close-btn { - background: transparent; - border: none; - color: inherit; - font-weight: 600; - border-radius: 8px; - padding: 6px 10px; - cursor: pointer; -} + .note-modal-close-btn { + background: transparent; + border: none; + color: inherit; + font-weight: 600; + border-radius: 8px; + padding: 6px 10px; + cursor: pointer; + } -.note-modal-close-btn:hover { - background: rgba(0, 0, 0, 0.08); -} + .note-modal-close-btn:hover { + background: rgba(0, 0, 0, 0.08); + } -[data-theme="dark"] .note-modal-close-btn:hover { - background: rgba(255, 255, 255, 0.14); -} + [data-theme="dark"] .note-modal-close-btn:hover { + background: rgba(255, 255, 255, 0.14); + } -.note-modal-pin-toggle { - background: transparent; - border: none; - color: inherit; - opacity: 0.85; - width: 34px; - height: 34px; - border-radius: 50%; - display: inline-flex; - align-items: center; - justify-content: center; - cursor: pointer; - flex-shrink: 0; -} + .note-modal-pin-toggle { + background: transparent; + border: none; + color: inherit; + opacity: 0.85; + width: 34px; + height: 34px; + border-radius: 50%; + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; + flex-shrink: 0; + } -.note-modal-pin-toggle:hover, -.note-modal-pin-toggle.active { - opacity: 1; - background-color: rgba(0, 0, 0, 0.08); -} + .note-modal-pin-toggle:hover, + .note-modal-pin-toggle.active { + opacity: 1; + background-color: rgba(0, 0, 0, 0.08); + } -[data-theme="dark"] .note-modal-pin-toggle:hover, -[data-theme="dark"] .note-modal-pin-toggle.active { - background-color: rgba(255, 255, 255, 0.14); -} + [data-theme="dark"] .note-modal-pin-toggle:hover, + [data-theme="dark"] .note-modal-pin-toggle.active { + background-color: rgba(255, 255, 255, 0.14); + } -/* --- CARD STYLING --- */ -.note-card { - background-color: var(--background-secondary, #ffffff); - border: 1px solid #e0e0e0; - border-radius: 8px; - margin-bottom: 16px; - break-inside: avoid; - position: relative; - transition: box-shadow 0.2s, transform 0.2s, background-color 0.2s; - overflow: visible; - color: var(--note-card-fg, #202124); -} + /* --- CARD STYLING --- */ + .note-card { + background-color: var(--background-secondary, #ffffff); + border: 1px solid #e0e0e0; + border-radius: 8px; + margin-bottom: 16px; + break-inside: avoid; + position: relative; + transition: box-shadow 0.2s, transform 0.2s, background-color 0.2s; + overflow: visible; + color: var(--note-card-fg, #202124); + } -[data-theme="dark"] .note-card { - background-color: #202124; - border: 1px solid #5f6368; - color: #e8eaed; -} + [data-theme="dark"] .note-card { + background-color: #202124; + border: 1px solid #5f6368; + color: #e8eaed; + } -.note-card:hover { - box-shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15); -} + .note-card:hover { + box-shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15); + } -[data-theme="dark"] .note-card:hover { - background-color: #202124; -} + [data-theme="dark"] .note-card:hover { + background-color: #202124; + } -/* Cover Image */ -.note-cover { - overflow: hidden; - border-radius: 8px 8px 0 0; -} + /* Cover Image */ + .note-cover { + overflow: hidden; + border-radius: 8px 8px 0 0; + } -.note-cover img { - width: 100%; - height: auto; - display: block; - object-fit: cover; -} + .note-cover img { + width: 100%; + height: auto; + display: block; + object-fit: cover; + } -/* Inner Content */ -.note-inner { - padding: 12px 16px; - display: flex; - flex-direction: column; - gap: 8px; -} + /* Inner Content */ + .note-inner { + padding: 12px 16px; + display: flex; + flex-direction: column; + gap: 8px; + } -/* Title */ -.note-title { - font-size: 1rem; - font-weight: 500; - margin: 0; - line-height: 1.5rem; - color: var(--text-color, #202124); -} + /* Title */ + .note-title { + font-size: 1rem; + font-weight: 500; + margin: 0; + line-height: 1.5rem; + color: var(--text-color, #202124); + } -[data-theme="dark"] .note-title { - color: #e8eaed; -} + [data-theme="dark"] .note-title { + color: #e8eaed; + } -/* Body (Truncated) */ -.note-body { - font-size: 0.875rem; - line-height: 1.25rem; - color: var(--text-color, #202124); - word-wrap: break-word; - display: -webkit-box; - -webkit-line-clamp: 12; - line-clamp: 12; - -webkit-box-orient: vertical; - overflow: hidden; - max-height: 300px; -} + /* Body (Truncated) */ + .note-body { + font-size: 0.875rem; + line-height: 1.25rem; + color: var(--text-color, #202124); + word-wrap: break-word; + display: -webkit-box; + -webkit-line-clamp: 12; + line-clamp: 12; + -webkit-box-orient: vertical; + overflow: hidden; + max-height: 300px; + } -[data-theme="dark"] .note-body { - color: #e8eaed; -} + [data-theme="dark"] .note-body { + color: #e8eaed; + } -/* Tags */ -.note-tags { - display: flex; - flex-wrap: wrap; - gap: 6px; - margin-top: 4px; -} + /* Tags */ + .note-tags { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin-top: 4px; + } -.note-tag { - display: inline-flex; - align-items: center; - gap: 6px; - background: rgba(0, 0, 0, 0.06); - padding: 2px 8px; - border-radius: 999px; - font-size: 0.7rem; - color: var(--text-light); -} + .note-tag { + display: inline-flex; + align-items: center; + gap: 0.25rem; + background: var(--tag-bg); + padding: 0.25rem 0.5rem; + border-radius: 999px; + font-size: 0.75rem; + font-weight: 500; + color: var(--tag-text); + } -[data-theme="dark"] .note-tag { - background: rgba(255, 255, 255, 0.1); - color: #9aa0a6; -} + [data-theme="dark"] .note-tag { + background: var(--tag-bg); + color: var(--tag-text); + } -.note-tag-text { - line-height: 1.2; -} + .note-tag-text { + line-height: 1.2; + } -.note-tag-remove-btn { - display: inline-flex; - align-items: center; - justify-content: center; - width: 18px; - height: 18px; - border: none; - border-radius: 999px; - background: rgba(0, 0, 0, 0.12); - color: currentColor; - cursor: pointer; - padding: 0; - line-height: 1; - font-size: 14px; - opacity: 0.9; -} + .note-tag-remove-btn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 1.1rem; + height: 1.1rem; + border: none; + border-radius: 999px; + background: rgba(0, 0, 0, 0.12); + color: currentColor; + cursor: pointer; + padding: 0; + line-height: 1; + font-size: 0.8rem; + } [data-theme="dark"] .note-tag-remove-btn { background: rgba(255, 255, 255, 0.18); } -/* Hover Actions */ +.note-tag:hover, +.note-modal-tags .note-tag:hover { + background: var(--primary); + color: white; +} + +.note-tag:hover .note-tag-remove-btn, +.note-modal-tags .note-tag:hover .note-tag-remove-btn { + background: rgba(255, 255, 255, 0.22); +} + .note-hover-actions { display: flex; align-items: center; diff --git a/shaarli-pro/css/style.css b/shaarli-pro/css/style.css index d9622b8..05f4354 100644 --- a/shaarli-pro/css/style.css +++ b/shaarli-pro/css/style.css @@ -401,8 +401,11 @@ input:checked+.theme-slider:before { .header-nav-link { display: flex; align-items: center; - gap: 0.375rem; - padding: 0.5rem 1rem; + justify-content: center; + gap: 0; + width: 38px; + height: 38px; + padding: 0; color: rgba(255, 255, 255, 0.85); font-weight: 500; font-size: 0.9rem; @@ -421,10 +424,14 @@ input:checked+.theme-slider:before { } .header-nav-link.active { - background: rgba(255, 255, 255, 0.2); + background: rgba(255, 255, 255, 0.15); color: white; } +.header-nav-link span { + display: none; +} + .header-nav-link i { font-size: 1.125rem; } @@ -660,6 +667,66 @@ input:checked+.theme-slider:before { display: flex; } +.modal-overlay, +.qrcode-modal-overlay { + position: fixed; + inset: 0; + display: none; + align-items: center; + justify-content: center; + padding: 1rem; + background: rgba(6, 10, 22, 0.65); + z-index: 520; +} + +.modal-overlay.show, +.qrcode-modal-overlay.show { + display: flex; +} + +.modal-content, +.qrcode-modal-content { + position: relative; + width: min(900px, 92vw); + max-height: 85vh; + overflow: auto; + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: 0.75rem; + box-shadow: 0 24px 60px rgba(0, 0, 0, 0.35); + padding: 1rem; +} + +.modal-close, +.qrcode-modal-close { + position: absolute; + top: 0.5rem; + right: 0.5rem; + display: inline-flex; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + border: 1px solid var(--border); + border-radius: 0.375rem; + background: var(--bg-card); + color: var(--text-secondary); + font-size: 1.1rem; + line-height: 1; + cursor: pointer; +} + +.modal-close:hover, +.qrcode-modal-close:hover { + background: var(--primary-light); + color: var(--primary); +} + +.modal-body, +#qrcode-modal-body { + margin-top: 1.75rem; +} + @keyframes fadeIn { from { opacity: 0; @@ -1504,7 +1571,7 @@ body.view-notes .paging { } .view-grid .link-footer { - flex-direction: column-reverse; + flex-direction: column; align-items: flex-end; gap: 0.5rem; } @@ -1529,6 +1596,7 @@ body.view-notes .paging { font-size: 0.75rem; font-weight: 500; transition: all 0.15s ease; + max-width: 100%; } .link-tag.is-tech-tag { @@ -1540,6 +1608,31 @@ body.view-notes .paging { text-decoration: none; display: inline-block; line-height: 1.2; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.tag-remove-btn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 1.1rem; + height: 1.1rem; + border: none; + border-radius: 999px; + background: rgba(0, 0, 0, 0.12); + color: inherit; + font-size: 0.8rem; + line-height: 1; + padding: 0; + cursor: pointer; + transition: background-color 0.15s ease, color 0.15s ease; +} + +[data-theme="dark"] .tag-remove-btn { + background: rgba(255, 255, 255, 0.18); } .link-tag:hover { @@ -1547,47 +1640,29 @@ body.view-notes .paging { color: white; } -.link-tag:hover .link-tag-link { - color: inherit; -} - -.link-tag .tag-remove-btn { - display: inline-flex; - align-items: center; - justify-content: center; - width: 18px; - height: 18px; - border: none; - border-radius: 999px; - background: rgba(0, 0, 0, 0.12); - color: currentColor; - cursor: pointer; - padding: 0; - line-height: 1; - font-size: 14px; - opacity: 0.9; -} - -[data-theme="dark"] .link-tag .tag-remove-btn { - background: rgba(255, 255, 255, 0.18); -} - .link-tag:hover .tag-remove-btn { background: rgba(255, 255, 255, 0.22); } .view-grid .link-tag-list { - align-self: stretch; + order: 2; + width: 100%; justify-content: flex-end; } +.view-grid .link-actions { + order: 1; +} + /* Actions */ .link-actions { display: flex; gap: 0.25rem; flex-shrink: 0; align-items: center; - flex-wrap: nowrap; + flex-wrap: wrap; + justify-content: flex-end; + max-width: 100%; margin-left: auto; /* Force alignment to the right */ } @@ -1805,6 +1880,124 @@ body.view-notes .paging { background: var(--primary-hover); } +/* ===== Footer ===== */ +.footer-main { + margin-top: 1.25rem; + padding: 1rem 0 1.25rem; + border-top: 1px solid var(--border); + color: var(--text-secondary); +} + +.footer-main p { + margin: 0; + font-size: 0.95rem; +} + +.footer-feeds { + margin-top: 0.55rem; + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 0.45rem; + font-size: 0.95rem; +} + +.footer-separator { + color: var(--text-muted); +} + +.plugin-footer-text { + margin-top: 0.5rem; + color: var(--text-secondary); +} + +/* ===== Media Player Bar ===== */ +.media-player-bar { + position: fixed; + left: var(--sidebar-width); + right: 0; + bottom: 0; + z-index: 155; + padding: 0.7rem 1.2rem; + border-top: 1px solid var(--border); + background: var(--bg-card); + box-shadow: 0 -6px 24px rgba(0, 0, 0, 0.15); + display: none; +} + +.media-player-bar.show { + display: block; +} + +.media-player-inner { + display: grid; + grid-template-columns: auto minmax(180px, 1fr) auto auto auto; + gap: 0.75rem; + align-items: center; +} + +.media-player-btn { + width: 34px; + height: 34px; + border: 1px solid var(--border); + border-radius: 0.5rem; + background: var(--bg-body); + color: var(--text-main); + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; +} + +.media-player-btn:hover { + background: var(--primary-light); + color: var(--primary); +} + +.media-player-title { + font-size: 0.88rem; + color: var(--text-main); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.media-player-time { + font-variant-numeric: tabular-nums; + color: var(--text-secondary); + font-size: 0.8rem; + min-width: 82px; + text-align: right; +} + +.media-player-progress, +.media-player-volume { + width: 100%; +} + +.media-player-volume-wrap { + width: 130px; + display: flex; + align-items: center; + gap: 0.4rem; +} + +@media (max-width: 991px) { + .media-player-bar { + left: 0; + } +} + +@media (max-width: 768px) { + .media-player-inner { + grid-template-columns: auto minmax(120px, 1fr) auto; + } + + .media-player-volume-wrap { + display: none; + } +} + /* ===== Sticky Links ===== */ .link-outer.is-sticky { border-left: 3px solid var(--primary); diff --git a/shaarli-pro/linklist.paging.html b/shaarli-pro/linklist.paging.html index e6cee56..d6ed7e2 100644 --- a/shaarli-pro/linklist.paging.html +++ b/shaarli-pro/linklist.paging.html @@ -29,10 +29,4 @@
{$paging_label} {$from} - {$to} / {$total}
- {loop="$action_plugin"} -
- {$plugin_html=$value.html} - {$plugin_html} -
- {/loop} \ No newline at end of file diff --git a/shaarli-pro/page.footer.html b/shaarli-pro/page.footer.html index e2e5009..0660558 100644 --- a/shaarli-pro/page.footer.html +++ b/shaarli-pro/page.footer.html @@ -13,10 +13,6 @@ Daily - {loop="$plugins_footer.text"} - - {/loop} - {loop="$plugins_footer.js"} {/loop} diff --git a/shaarli-pro/page.header.html b/shaarli-pro/page.header.html index a9583ef..c1b1f65 100644 --- a/shaarli-pro/page.header.html +++ b/shaarli-pro/page.header.html @@ -22,11 +22,11 @@ Bookmarklet detection logic Tous les bookmarks - + Épinglés - Nuage de tags @@ -40,15 +40,15 @@ Bookmarklet detection logic Quotidien - + Mes tâches - + Notes - + Read It Later @@ -110,12 +110,17 @@ Bookmarklet detection logic