From d98873787ec40938a4fafdb9bee562b494428f71 Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Sun, 15 Feb 2026 20:17:51 -0800 Subject: Vanilla JS (v3): Add Logout button, 'neko' cat emoji toggle, and mobile responsiveness with backdrop --- frontend-vanilla/src/store.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'frontend-vanilla/src/store.ts') diff --git a/frontend-vanilla/src/store.ts b/frontend-vanilla/src/store.ts index a7a99b0..a23934a 100644 --- a/frontend-vanilla/src/store.ts +++ b/frontend-vanilla/src/store.ts @@ -1,6 +1,6 @@ import type { Feed, Item, Category } from './types.ts'; -export type StoreEvent = 'feeds-updated' | 'tags-updated' | 'items-updated' | 'active-feed-updated' | 'active-tag-updated' | 'loading-state-changed' | 'filter-updated' | 'search-updated' | 'theme-updated'; +export type StoreEvent = 'feeds-updated' | 'tags-updated' | 'items-updated' | 'active-feed-updated' | 'active-tag-updated' | 'loading-state-changed' | 'filter-updated' | 'search-updated' | 'theme-updated' | 'sidebar-toggle'; export type FilterType = 'unread' | 'all' | 'starred'; @@ -16,6 +16,7 @@ export class Store extends EventTarget { hasMore: boolean = true; theme: string = localStorage.getItem('neko-theme') || 'light'; fontTheme: string = localStorage.getItem('neko-font-theme') || 'default'; + sidebarVisible: boolean = window.innerWidth > 768; setFeeds(feeds: Feed[]) { this.feeds = feeds; @@ -83,6 +84,15 @@ export class Store extends EventTarget { this.emit('theme-updated'); } + setSidebarVisible(visible: boolean) { + this.sidebarVisible = visible; + this.emit('sidebar-toggle'); + } + + toggleSidebar() { + this.setSidebarVisible(!this.sidebarVisible); + } + private emit(type: StoreEvent, detail?: any) { this.dispatchEvent(new CustomEvent(type, { detail })); } -- cgit v1.2.3