aboutsummaryrefslogtreecommitdiff
path: root/src/routes/+layout.svelte
Commit message (Collapse)AuthorAgeFilesLines
* fix(transitions): restore background-color on global anchor transitionFuwn5 days1-0/+1
| | | | | | | | | | | | Commit 485f1b11 narrowed :global(a) transition to color/opacity/ text-decoration-color, intentionally excluding background. That swallowed background-color animation across every anchor, including the dropdown items (Schedule, Profile) whose :hover toggles background-color from base01. Adds background-color to the narrowed list. The original intent of excluding background-image / shorthand background transitions still holds; only background-color was a real loss.
* style(breakpoints): consolidate 9 ad-hoc values into 5 SCSS tokensFuwn5 days1-1/+3
| | | | | | | | | | | | | | | | Adds src/styles/_breakpoints.scss with five canonical tokens (\$bp-sm 600, \$bp-md 800, \$bp-lg 1024, \$bp-xl 1280, \$bp-2xl 1600) and migrates all 15 @media (max-width: ...) occurrences across 9 files. Configures vite.config.ts with scss loadPaths so any file can @use "breakpoints" without relative paths. Conservative rounding-up where existing values were near-duplicates: 500 and 512 collapse to 600, 768 collapses to 800, 1000 collapses to 1024. Slightly more viewports get the smaller-layout treatment in those bands, which is usually beneficial on cramped widths. Converts 7 Svelte files from <style> to <style lang="scss"> to access the SCSS tokens. SCSS is a CSS superset, so existing rules stay valid.
* style(nav): add --base0011-strong for grounded glass on nav surfacesFuwn5 days1-3/+4
| | | | | | | | | | | | | | | | | The existing --base0011 glass tint is #ffffff80 / #0c0c0c80 (50% alpha), which is unusually transparent for floating UI. The desktop header and the mobile hamburger sit over scrolling content, so the content bleeds through and reads as distracting. Introduces --base0011-strong at #ffffffcc / #0c0c0ccc (80% alpha) for floating chrome. The backdrop blur still has enough content to soften, but the surface now reads as grounded rather than barely-present. Applied to: desktop .header background, mobile toggle background and hover, mobile open panel background. Other glass cards (CommandPalette dropdown, Dropdown component content, tooltips, hover covers) keep the softer --base0011 since they sit over relatively static surfaces and the see-through effect there is not distracting.
* style(motion): introduce --duration-base for panel-class transitionsFuwn5 days1-7/+7
| | | | | | | | | | | | | Adds 0.24s between --duration-fast (0.15s) and --duration-slow (0.4s) for animations that live in the touch-UI floor: panels, sheets, drawers, modals. 150ms reads as crisp on desktop but undershoots the 200-300ms range touch UI conventions prescribe (finger occludes the target during the tap, deliberation pace is slower, and high-DPI displays compress small translateY into less perceptible motion). Applies the new token to the mobile hamburger panel open/close transition and to the bar-morph that fires on the same tap, so the bars and the panel finish arriving together.
* feat(nav): restore scroll-hide and animate mobile hamburgerFuwn5 days1-8/+24
| | | | | | | | | | | | | | | | | | | | Three changes to the mobile floating header: - Restore the desktop scroll-driven hide/show on the corner button by dropping the transform:none override. Override the translate distance under 800px so the toggle (44px tall at top:1.25rem) and its 5px outline ring fully clear the viewport: translateY(calc(-100% - 2rem)) instead of -150%, which had been leaving 3px of ring poking through. - Replace display:none / display:flex on the open panel (uneanimatable) with always-rendered panel that flips opacity, transform, visibility, and pointer-events. Uses --duration-fast / --ease-out-quart so the motion vocabulary matches the rest of the project. transform-origin is top right so the scale grows from the toggle position. - Move per-item styling out of the .menu-open qualifier so items keep their block layout even while the panel is faded out, avoiding a layout reflow at the moment menu-open flips.
* fix(nav): close dropdowns and hamburger on touch / outside clickFuwn5 days1-1/+6
| | | | | | | | | | | | | | Two related touch fixes: - Dropdown :hover rule was sticky on touch devices after a tap, keeping the menu visible even when the click toggle set open to false. Gate the hover rule behind @media (hover: hover) so only true pointer devices use the hover path; touch uses the click-driven open class. - Hamburger menu had no outside-click close. Added a window click handler that closes isMenuOpen when the target is outside .header. Clicks on the toggle and on nav items stay inside .header, so opening and item navigation are unaffected.
* feat(nav): float header as a corner hamburger under 800pxFuwn5 days1-2/+130
| | | | | | | | | | | | | | | Below 800px the inline header overflows the viewport. Strips card chrome from .header itself and floats it position:fixed at top:1.25rem/right :1.25rem so it does not consume a horizontal band. The 44x44 toggle button carries the desktop banner's exact card recipe (--base0011 glass, shadow-card-emphasized + 5px --base02 ring, blur, 8px radius), and the open panel mirrors it as a separately-positioned card below. Menu closes on route navigation and Escape. Header stays visible while the menu is open so a scroll-driven hide does not chop the open sheet mid-interaction. Profile-avatar anchor and the bullet separator are hidden in the mobile menu (avatar is redundant alongside the Profile dropdown; separator reads as line noise vertically).
* fix(a11y): scope focus-visible ring to header itemsFuwn8 days1-0/+10
| | | | | | | | Add explicit .header-item:focus { outline: none } and .header-item:focus-visible rules in +layout.svelte so the navbar matches the dropdown menu's teal rounded ring on keyboard focus and stops leaking the browser default blue square ring on mouse click. Same pattern as the Dropdown component's scoped focus-visible rule.
* style(card): move backdrop blur to an opt-in .card-glass modifierFuwn8 days1-1/+1
| | | | | | | | | | | Strip backdrop-filter: blur(4px) from the base .card so the ~50 in-flow surfaces (landing panels, schedule rows, tool cards, user profile cards, badge wall, etc.) stop paying for a blur they don't need. Introduce .card-glass for the surfaces that actually float over other content: the sticky page header, header nav dropdowns, command palette, title-attribute tooltips, LinkedTooltip, and HoverCover. Popup, MediaRoulette, and Notification keep their existing parent-overlay or solid-background treatments.
* feat(a11y): respect prefers-reduced-motionFuwn9 days1-2/+4
| | | | | | | Add a global reduced-motion media query that collapses animation and transition durations and disables smooth scroll. Skip Lenis init when the same preference is set so the JS-driven smooth scroll falls back to the browser default, which the spec already honours.
* refactor(motion): introduce easing/duration tokensFuwn2026-05-081-4/+4
| | | | Add --ease-out-quart, --ease-in-out-quart, --duration-fast, --duration-slow in motion.css and migrate the global anchor, header, and theme-switch transitions to use them. Establishes a shared motion vocabulary for future polish.
* style(header): soften hide/show curve with ease-out-quartFuwn2026-05-081-1/+1
| | | | Replace transform 0.3s ease with 0.4s cubic-bezier(0.22, 1, 0.36, 1) so the header settles instead of snapping, pairing with Lenis-smoothed scroll.
* style(anchor): narrow global anchor transition to color/opacityFuwn2026-05-081-1/+4
| | | | Replace transition: all with explicit color, opacity, and text-decoration-color so unrelated property changes (transform, background) do not get incidentally tweened.
* fix(scroll): route LandingHero scroll-down through LenisFuwn2026-05-081-0/+5
| | | | Lenis disables native CSS smooth scroll, so window.scrollTo({behavior:"smooth"}) jumps instantly. Expose the Lenis instance via a store and scroll through it, falling back to native when unavailable.
* feat(scroll): add global smooth scrolling via LenisFuwn2026-05-081-0/+7
|
* feat(command-palette): add quick toggles, sync, and auth actionsFuwn2026-04-261-1/+12
| | | | | | | | Adds 13 reactive quick toggles (24h time, animations, blur adult, cover modes, hover cover, schedule list, reverse sort, data saver, notifications, language, title format cycle, outbound link target cycle), three sync actions (push/pull/disable), and login/logout entries gated on auth state. Names reflect current state so the palette doubles as a status surface.
* revert(ui): remove april fools executive modeFuwn2026-04-021-85/+12
|
* fix(ui): tune april fools notification copyFuwn2026-04-011-1/+1
|
* fix(ui): simplify april fools controlsFuwn2026-04-011-15/+52
|
* feat(ui): add april fools executive modeFuwn2026-04-011-12/+48
|
* fix(profile): restore owner controls for new accountsFuwn2026-03-271-7/+15
|
* chore(biome): drop formatter style overridesFuwn2026-03-011-131/+157
|
* chore(biome): re-enable noImplicitAnyLet ruleFuwn2026-03-011-1/+2
|
* chore(biome): enable svelte formattingFuwn2026-03-011-148/+147
|
* fix: Resolve all ESLint errors and warningsFuwn2026-01-291-1/+1
|
* feat(+layout.svelte): Add Web AnalyticsFuwn2026-01-261-0/+3
|
* refactor: Migrate event handlers to new Svelte 5 syntaxFuwn2026-01-231-1/+1
|
* refactor(layout): Replace empty p elements with reusable Spacer componentFuwn2026-01-231-1/+2
|
* fix(html): Replace self-closing non-void HTML elements with proper closing tagsFuwn2026-01-231-1/+1
|
* fix(notifications): Replace svelte-notifications with custom store for Svelte 5Fuwn2026-01-221-4/+3
|
* format: Apply Prettier formattingFuwn2026-01-221-7/+21
|
* format: Apply Prettier formattingFuwn2025-12-151-22/+8
|
* style(src): Remove self-closing p and div tagsFuwn2025-06-231-1/+1
|
* feat: Move remaining localStorage usages to localforageFuwn2025-06-121-14/+14
|
* fix: Migrate localStorage.removeItem to localforage for anime and manga storesFuwn2025-06-111-7/+24
|
* refactor(CommandPalette): Globally rename action typeFuwn2025-05-151-2/+2
|
* feat: Add command paletteFuwn2025-05-061-0/+5
|
* fix(layout): remove invalid local user entriesFuwn2025-01-281-2/+4
|
* chore(prettier): use spaces instead of tabsFuwn2024-10-091-318/+318
|
* refactor(Data): rename database referencesFuwn2024-08-241-1/+1
|
* refactor(Database): separate providersFuwn2024-07-251-3/+1
|
* feat: background notificationsFuwn2024-07-241-30/+11
|
* feat(layout): browser notificationsFuwn2024-07-241-27/+25
|
* feat(pwa): anilist notificationsFuwn2024-07-081-2/+40
|
* fix(layout): ensure navigation is loadedFuwn2024-06-141-1/+1
|
* fix(layout): wait for en localeFuwn2024-04-271-89/+102
|
* refactor(lib): move componenets to modulesFuwn2024-04-211-1/+1
|
* fix(layout): check if browserFuwn2024-04-181-1/+3
|
* feat(layout): semi-sticky headerFuwn2024-04-181-2/+24
|
* fix(layout): subtitle typesFuwn2024-04-071-1/+2
|