diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-14 16:22:27 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-14 16:22:27 -0800 |
| commit | 8235f6e4081ee2eae0828c4fe492b764a8508dbd (patch) | |
| tree | 32acc15f520e88539beb803fc743c6b95b89f2a3 /frontend/src | |
| parent | ad6b8187e5a7ba6b36f330b181434e4582bf2d74 (diff) | |
| download | neko-8235f6e4081ee2eae0828c4fe492b764a8508dbd.tar.gz neko-8235f6e4081ee2eae0828c4fe492b764a8508dbd.tar.bz2 neko-8235f6e4081ee2eae0828c4fe492b764a8508dbd.zip | |
UI: Improve consistency of settings, logout, and theme sections in sidebar (NK-v9e7r3)
Diffstat (limited to 'frontend/src')
| -rw-r--r-- | frontend/src/components/FeedList.css | 42 | ||||
| -rw-r--r-- | frontend/src/components/FeedListVariants.css | 342 |
2 files changed, 376 insertions, 8 deletions
diff --git a/frontend/src/components/FeedList.css b/frontend/src/components/FeedList.css index 35543b7..c63b426 100644 --- a/frontend/src/components/FeedList.css +++ b/frontend/src/components/FeedList.css @@ -140,19 +140,25 @@ .nav-section { margin-top: 2rem; - border-top: 1px solid var(--border-color, #999); - padding-top: 0.5rem; + border-top: 1px solid var(--border-color, #eee); + padding-top: 1rem; } .logout-link { text-align: left; width: 100%; color: #777; - /* Make logout less prominent */ + display: block; +} + +.nav-link, +.logout-link { + padding: 0.25rem 0; } .logout-link:hover { color: var(--link-color, blue); + text-decoration: underline; } .theme-section { @@ -162,20 +168,40 @@ .theme-selector { display: flex; gap: 0.5rem; + margin-top: 0.5rem; } .theme-selector button { - background: transparent; - border: 1px solid var(--border-color, #999); + background: rgba(0, 0, 0, 0.05); + border: none; cursor: pointer; - padding: 0.1rem 0.3rem; - font-size: 0.9rem; - border-radius: 0; + padding: 0.4rem; + font-size: 1rem; + border-radius: 8px; + line-height: 1; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; +} + +.theme-selector button:hover { + background: rgba(0, 0, 0, 0.1); + transform: translateY(-2px); } .theme-selector button.active { background: var(--border-color, #999); color: white; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); +} + +.theme-dark .theme-selector button { + background: rgba(255, 255, 255, 0.1); +} + +.theme-dark .theme-selector button:hover { + background: rgba(255, 255, 255, 0.2); } /* Scrollbar styling for webkit */ diff --git a/frontend/src/components/FeedListVariants.css b/frontend/src/components/FeedListVariants.css new file mode 100644 index 0000000..e97ea95 --- /dev/null +++ b/frontend/src/components/FeedListVariants.css @@ -0,0 +1,342 @@ +/* Glass Variant */ +.feed-list.variant-glass { + background: rgba(255, 255, 255, 0.05); + /* Very subtle tint */ + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-right: 1px solid rgba(255, 255, 255, 0.1); + padding: 1.5rem; + font-family: system-ui, -apple-system, sans-serif; + /* Modern sans */ + color: var(--text-color); +} + +.feed-list.variant-glass .logo { + font-size: 1.5rem; + background: transparent !important; + /* Override sticky bg */ + margin-bottom: 2rem; + opacity: 0.8; +} + +.feed-list.variant-glass .section-header { + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--text-color); + opacity: 0.5; + margin-top: 2rem; + font-weight: 600; +} + +.feed-list.variant-glass a, +.feed-list.variant-glass .feed-title, +.feed-list.variant-glass .tag-link { + padding: 0.4rem 0.8rem; + margin: 0.2rem 0; + border-radius: 8px; + transition: all 0.2s ease; + font-weight: 500; + text-decoration: none !important; + /* No underlines in glass */ + color: var(--text-color); + opacity: 0.8; + border: none; + /* No default borders */ +} + +.feed-list.variant-glass a:hover, +.feed-list.variant-glass .feed-title:hover, +.feed-list.variant-glass .tag-link:hover { + background: rgba(255, 255, 255, 0.1); + opacity: 1; + transform: translateX(4px); + color: var(--text-color); +} + +.feed-list.variant-glass a.active, +.feed-list.variant-glass .feed-title.active, +.feed-list.variant-glass .tag-link.active { + background: rgba(255, 255, 255, 0.25); + color: var(--text-color); + font-weight: 700; + opacity: 1; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); +} + +.feed-list.variant-glass .search-input { + border-radius: 20px; + background: rgba(0, 0, 0, 0.05); + border: 1px solid rgba(255, 255, 255, 0.1); + color: var(--text-color); + padding: 0.5rem 1rem; +} + +.feed-list.variant-glass .nav-section { + border-top: 1px solid rgba(255, 255, 255, 0.1); + margin-top: 2rem; + padding-top: 1.5rem; +} + +.feed-list.variant-glass .nav-link, +.feed-list.variant-glass .logout-link { + opacity: 0.6; + padding: 0.5rem 0.8rem; + border-radius: 8px; +} + +.feed-list.variant-glass .nav-link:hover, +.feed-list.variant-glass .logout-link:hover { + background: rgba(255, 255, 255, 0.05); + opacity: 1; + text-decoration: none; +} + +.feed-list.variant-glass .theme-selector button { + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 12px; +} + +.feed-list.variant-glass .theme-selector button.active { + background: rgba(255, 255, 255, 0.2); + border-color: rgba(255, 255, 255, 0.3); +} + + +/* Nano Banana Variant (Playful/Pop) */ +.feed-list.variant-banana { + background: #fdfdfd; + padding: 1rem; + font-family: 'Poppins', 'Verdana', sans-serif; + border-right: none; + box-shadow: 4px 0 24px rgba(0, 0, 0, 0.04); +} + +.theme-dark .feed-list.variant-banana { + background: #111; +} + +.feed-list.variant-banana .logo { + font-size: 2.5rem; + text-shadow: 2px 2px 0px #FFD700; + /* Banana yellow shadow */ + background: transparent; + transform: rotate(-3deg); + display: inline-block; + margin-bottom: 2rem; +} + +.feed-list.variant-banana .section-header { + background: #FFD700; + color: #000; + display: inline-block; + padding: 0.2rem 0.5rem; + transform: skew(-10deg); + font-size: 0.8rem; + font-weight: 800; + margin-bottom: 1rem; + border-radius: 4px; +} + +.feed-list.variant-banana .search-input { + border: 2px solid #000; + border-radius: 8px; + box-shadow: 2px 2px 0px #000; + transition: all 0.2s; +} + +.feed-list.variant-banana .search-input:focus { + transform: translate(1px, 1px); + box-shadow: 1px 1px 0px #000; + outline: none; +} + +.theme-dark .feed-list.variant-banana .search-input { + border-color: #fff; + box-shadow: 2px 2px 0px #fff; + background: #222; + color: #fff; +} + +.feed-list.variant-banana a, +.feed-list.variant-banana .feed-title, +.feed-list.variant-banana .tag-link { + border: 1px solid transparent; + padding: 0.5rem; + border-radius: 8px; + transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1); + font-weight: 600; + text-decoration: none !important; + color: var(--text-color); +} + +.feed-list.variant-banana a:hover, +.feed-list.variant-banana .feed-title:hover, +.feed-list.variant-banana .tag-link:hover { + transform: scale(1.05) rotate(1deg); + background: #fff9c4; + /* Light yellow */ + color: #000; + box-shadow: 0 4px 12px rgba(255, 215, 0, 0.3); +} + +.theme-dark .feed-list.variant-banana a:hover, +.theme-dark .feed-list.variant-banana .feed-title:hover, +.theme-dark .feed-list.variant-banana .tag-link:hover { + background: #333; + color: #FFD700; +} + + +.feed-list.variant-banana a.active, +.feed-list.variant-banana .feed-title.active, +.feed-list.variant-banana .tag-link.active { + background: #FFD700; + color: #000 !important; + transform: scale(1.02); + box-shadow: 3px 3px 0px rgba(0, 0, 0, 0.1); + border: 2px solid #000; +} + +.feed-list.variant-banana .nav-section { + border-top: 2px dashed #FFD700; + margin-top: 2rem; + padding-top: 1rem; +} + +.feed-list.variant-banana .theme-selector button { + border: 2px solid #000; + box-shadow: 2px 2px 0px #000; + border-radius: 4px; +} + +.feed-list.variant-banana .theme-selector button.active { + background: #FFD700; + transform: translate(1px, 1px); + box-shadow: 1px 1px 0px #000; +} + + +/* Type Variant (Swiss/Bold) */ +.feed-list.variant-type { + background: var(--bg-color); + padding: 2rem 1rem; + font-family: 'Helvetica Neue', 'Arial', sans-serif; + border-right: 4px solid var(--text-color); +} + +.feed-list.variant-type .logo { + font-size: 3rem; + letter-spacing: -2px; + font-weight: 900; + background: transparent; + line-height: 0.8; + margin-bottom: 3rem; + color: var(--text-color); +} + +.feed-list.variant-type .section-header { + font-size: 1.2rem; + font-weight: 900; + border-bottom: 2px solid var(--text-color); + padding-bottom: 0.5rem; + margin-top: 3rem; + margin-bottom: 1rem; + letter-spacing: -0.5px; + color: var(--text-color); +} + +.feed-list.variant-type a, +.feed-list.variant-type .feed-title, +.feed-list.variant-type .tag-link { + font-size: 1rem; + font-weight: 700; + text-decoration: none !important; + border-left: 0px solid var(--text-color); + padding-left: 0; + transition: padding-left 0.2s, border-left-width 0.2s; + opacity: 0.6; + color: var(--text-color); + padding: 0.5rem 0; + display: block; +} + +.feed-list.variant-type a:hover, +.feed-list.variant-type .feed-title:hover, +.feed-list.variant-type .tag-link:hover { + padding-left: 1rem; + border-left: 4px solid var(--text-color); + opacity: 1; + color: var(--text-color); +} + +.feed-list.variant-type a.active, +.feed-list.variant-type .feed-title.active, +.feed-list.variant-type .tag-link.active { + padding-left: 1rem; + border-left: 8px solid var(--text-color); + opacity: 1; + color: var(--text-color); +} + +.feed-list.variant-type .search-input { + border: none; + border-bottom: 2px solid var(--text-color); + background: transparent; + border-radius: 0; + padding: 1rem 0; + font-weight: bold; + font-size: 1.2rem; +} + +.feed-list.variant-type .search-input:focus { + outline: none; + border-bottom-width: 4px; +} +.feed-list.variant-type .nav-section { + border-top: 4px solid var(--text-color); + margin-top: 4rem; + padding-top: 1rem; +} + +.feed-list.variant-type .nav-link, +.feed-list.variant-type .logout-link { + font-size: 1.2rem; + font-weight: 900; +} + +.feed-list.variant-type .theme-selector button { + border-radius: 0; + border: 2px solid var(--text-color); + background: transparent; +} + +.feed-list.variant-type .theme-selector button.active { + background: var(--text-color); + color: var(--bg-color); +} + +.feed-list.variant-type .nav-section { + border-top: 4px solid var(--text-color); + margin-top: 4rem; + padding-top: 1rem; +} + +.feed-list.variant-type .nav-link, +.feed-list.variant-type .logout-link { + font-size: 1.2rem; + font-weight: 900; +} + +.feed-list.variant-type .theme-selector button { + border-radius: 0; + border: 2px solid var(--text-color); + background: transparent; +} + +.feed-list.variant-type .theme-selector button.active { + background: var(--text-color); + color: var(--bg-color); +} |
