From b737200b21c6e469cc9bf31ab3a1ef42b28b2816 Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Tue, 17 Feb 2026 13:54:53 -0500 Subject: [PATCH] Add pinned files and filter hiding --- main.py | 9 +- static/style.css | 74 +++++++++++++- templates/index.html | 227 ++++++++++++++++++++++++++++++++++--------- 3 files changed, 263 insertions(+), 47 deletions(-) diff --git a/main.py b/main.py index 2ba05f9..24b8362 100644 --- a/main.py +++ b/main.py @@ -656,12 +656,17 @@ def build_index_page( created_key_attr = "" if created_key is None else str(created_key) modified_ts = str(int(f.mtime)) pin_icon = "\U0001F4CC " if f.pinned else "" + display_title = f"{pin_icon}TODAY" if f.pinned else safe_title + pinned_attr = "server" if f.pinned else "" nav_items.append( f"" - f"{pin_icon}{safe_title}" + f"data-modified-ts='{modified_ts}' data-pinned='{pinned_attr}' " + f"data-file-path='{full_path}' href='{safe_href}'>" + f"{display_title}" f"{safe_path}" + f"" "" ) diff --git a/static/style.css b/static/style.css index 9f100f7..c04b209 100644 --- a/static/style.css +++ b/static/style.css @@ -106,6 +106,41 @@ nav { scrollbar-gutter: stable; } +.nav-toolbar-header { + margin-bottom: 0.6rem; +} + +.toggle-toolbar-btn { + border: 1px solid var(--line); + border-radius: 0.45rem; + background: var(--panel); + color: var(--ink-soft); + padding: 0.3rem 0.6rem; + font-size: 0.8rem; + cursor: pointer; + width: 100%; + text-align: left; +} + +.toggle-toolbar-btn:hover { + border-color: var(--accent); + color: var(--ink); +} + +.nav-toolbar { + overflow: hidden; + transition: max-height 0.2s ease, opacity 0.2s ease; + max-height: 500px; + opacity: 1; +} + +.nav-toolbar-hidden { + max-height: 0; + opacity: 0; + pointer-events: none; + margin: 0; +} + .search-wrap { display: grid; gap: 0.35rem; @@ -156,11 +191,12 @@ nav { .file-link { display: block; + position: relative; width: 100%; max-width: 100%; min-width: 0; margin-bottom: 0.5rem; - padding: 0.6rem 0.7rem; + padding: 0.6rem 2rem 0.6rem 0.7rem; border: 1px solid var(--line); border-radius: 0.5rem; color: var(--ink-soft); @@ -168,6 +204,11 @@ nav { background: var(--panel); } +.file-link[data-pinned="user"] { + border-color: color-mix(in srgb, var(--accent) 40%, var(--line)); + background: color-mix(in srgb, var(--accent-soft) 30%, var(--panel)); +} + .file-title { display: block; font-weight: 600; @@ -199,6 +240,37 @@ nav { font-weight: 600; } +.pin-toggle { + position: absolute; + top: 0.45rem; + right: 0.35rem; + border: none; + background: transparent; + cursor: pointer; + font-size: 0.82rem; + line-height: 1; + padding: 0.15rem; + border-radius: 0.25rem; + opacity: 0; + transition: opacity 0.15s; + color: var(--ink-soft); +} + +.file-link:hover .pin-toggle, +.file-link:focus-within .pin-toggle { + opacity: 0.5; +} + +.file-link:hover .pin-toggle:hover, +.file-link:focus-within .pin-toggle:hover { + opacity: 1; +} + +.file-link[data-pinned="user"] .pin-toggle, +.file-link[data-pinned="server"] .pin-toggle { + opacity: 1; +} + main { padding: 1.2rem; overflow: auto; diff --git a/templates/index.html b/templates/index.html index 56675c8..5195a13 100644 --- a/templates/index.html +++ b/templates/index.html @@ -17,12 +17,17 @@ Search titles -