Commit Graph

39 Commits

Author SHA1 Message Date
Alexander e8cb8f8232 header: add colored icon fills for active nav links, cospend icons
Active nav icons now fill with per-link colors (recipes, faith, cospend).
Cospend gets Lucide icons with background shape fills for Wallet and
RefreshCw. Shrink profile picture and use solid grey for inactive nav text.
2026-03-01 20:41:38 +01:00
Alexander fdbbca3942 feat: add light/dark mode toggle with header view transitions
Add theme cycling (system/light/dark) with localStorage persistence
and FOUC prevention. Restructure CSS color tokens to respond to
data-theme attribute across all components. Redesign header as a
floating glass pill bar with smooth view transitions including
clip-reveal logo animation.
2026-03-01 16:15:49 +01:00
Alexander 12c64bd6ef header: thinner active page underline, closer to text 2026-02-27 20:14:43 +01:00
Alexander 912e2b3fd5 recipes: view transitions for recipe detail navigation
Image morphs between CompactCard thumbnail and hero, title block
slides up from bottom, header persists across transitions. Only
activates for recipe detail navigations, not between list pages.
2026-02-17 18:59:24 +01:00
Alexander 66eb4a1628 fix: render desktop nav at all widths when no links, fix profile menu positioning
Skip mobile sidebar/hamburger entirely when no links snippet is provided.
The nav with .no-links class stays in desktop layout at all screen widths.
Override UserHeader mobile styles from .no-links context to keep dropdown
opening downward with tail centered below the profile picture.
2026-02-17 15:59:13 +01:00
Alexander f2d8b29fd5 fix: language selector speech bubble, profile menu on mobile, hide redundant hamburger
- LanguageSelector: add speech bubble tail, replace green active with
  nord8 blue + dark text, remove floating gap
- Header: hide hamburger menu on mobile when no links, show profile
  picture directly in top bar instead
- UserHeader: center mobile dropdown, fix tail color/position, add
  profile picture overlay to tuck tail behind, add drop shadow
- Main layout: stop passing empty links snippet
2026-02-17 13:22:20 +01:00
Alexander 051b1fa931 refactor: slimmer header, JS-less hamburger menu, bottom-aligned mobile nav
- Reduce header height to 3rem with CSS variable --header-h
- Scale logo via --symbol-size variable, decrease nav link font sizes
- Replace JS-driven sidebar toggle with checkbox hack (:has selector)
- Separate drop shadow into own element for correct z-index layering
  (top bar > sidebar > shadow)
- Bottom-align mobile nav links via ::before flex spacer
- Slide-in transition scoped to :has(:checked) to prevent resize artifacts
2026-02-17 10:32:02 +01:00
Alexander bb87e29065 fix: footer hidden behind recipe hero parallax section
The hero-section's scaleY transform created a stacking context that
painted over the footer, and margin-bottom: -20vh over-compensated
for the parallax gap, pulling the footer into the recipe cards.
Derive margin-bottom from actual parallax parameters and make the
footer position: relative so it paints above the transform layer.
2026-02-17 09:03:15 +01:00
Alexander 068434fb7c fonts: consolidate font-family to global stack, self-host subset emoji font
Remove redundant `font-family: sans-serif` from 18 component-level
declarations — they now inherit the Helvetica/Arial/Noto Sans stack
from the global `*` selector in app.css.

Add self-hosted NotoColorEmoji subset (56 KB, down from 11 MB) as
fallback for systems without the Noto Color Emoji font installed.
The subset is generated at prebuild time via pyftsubset with a fixed
list of the ~32 emojis actually used on the site.
2026-02-16 21:34:12 +01:00
Alexander c5e33d5573 css: replace hardcoded values with design tokens
Replace 30 border-radius: 1000px → var(--radius-pill), 6 border-radius:
20px → var(--radius-card), 21 transition: 100ms → var(--transition-fast),
and 32 transition: 200ms → var(--transition-normal) across the codebase.
2026-02-16 09:45:56 +01:00
Alexander e38879d8be css: consolidate stylesheets into single source of truth
Merge nordtheme.css tokens and utility classes into app.css, import
app.css once in root layout, delete redundant files (nordtheme.css,
form.css, rosenkranz.css), move domain CSS to layouts, fix broken
shake keyframe in action_button.css, and scope form styles to the
two pages that need them. 10 CSS files → 6, 41 redundant imports removed.
2026-02-15 22:26:27 +01:00
Alexander 356890420a refactor: replace shadow span with box-shadow on button_wrapper
Remove separate .button_wrapper_shadow element and apply box-shadow
directly to .button_wrapper in mobile view. Reduces DOM by 1 node.
2026-01-25 20:50:43 +01:00
Alexander 5f5b1e828f fix: force white color for Login link in production with !important
The Login link was appearing light blue and nord purple when visited
in production/preview builds due to CSS specificity conflicts with
global nordtheme.css link styles. Added !important flags to enforce
white color for all link states and nord8 for hover/focus states.
2026-01-05 23:08:32 +01:00
Alexander 5ad38e47d0 fix: improve logo alignment and reduce focus area padding
- Removed 'entry' class from desktop logo to match mobile implementation
- Added left padding to nav for consistent logo alignment across viewports
- Reduces excessive padding when tabbing through logo links
2026-01-05 22:33:31 +01:00
Alexander be77437d41 fix: ensure Login link uses consistent white styling like other header links
Updated CSS selectors to specifically target 'a.entry' instead of '.entry' to properly apply styling to the Login link. This ensures the link appears white in both light and dark modes, matching the styling of other navigation links.
2026-01-05 22:29:25 +01:00
Alexander 33718f0788 feat: improve accessibility and update color scheme based on PageSpeed insights
- Add aria-labels to icon-only links (add button, edit button, logo, nav toggle)
- Add main landmark element for better page structure
- Fix heading hierarchy on recipe pages (h1 → h2 → h3 progression)
- Add role="status" to loading placeholders to allow aria-label usage
- Update link colors from red to blue for better contrast in both light and dark modes
- Change hover colors from orange/red to light blue across all interactive elements
- Reduce font size of section labels (Season, Keywords) while maintaining semantic structure

These changes address PageSpeed accessibility recommendations including low-contrast text,
missing accessible names, prohibited ARIA attributes, missing landmarks, and improper
heading order.
2026-01-05 16:14:37 +01:00
Alexander 1825976248 migrate from deprecated slots to snippets and fix event handlers
- Replace deprecated <slot> syntax with modern {#snippet} and {@render} patterns
- Add TypeScript types for snippet props in Header component
- Convert on:click event handlers to onclick attribute throughout
- Update all layout files to use new snippet-based composition pattern
2025-12-27 12:24:30 +01:00
Alexander 0c1969a01a fix mobile hamburger menu positioning and layout
Improve profile picture and navigation alignment on mobile:
- Position UserHeader fixed 2rem from viewport bottom (avoids browser UI issues)
- Center UserHeader horizontally within hamburger menu
- Add 2rem margin to links wrapper for better spacing
- Align navigation items to flex-start for left alignment
2025-12-27 10:24:44 +01:00
Alexander f4db2d6adc improve header navigation styling and active link highlighting
Optimize header link spacing and add visual feedback for active pages:
- Reduce link padding and gap for more compact navigation
- Shorten German labels: "In Saison" to "Saison", "Stichwörter" to "Tags"
- Remove "Tipps" section from navigation menu

Add active page highlighting across all layouts:
- Highlight current page links in red (matching hover color)
- Desktop: animated red underline that smoothly slides between links
- Mobile: static red underline for active links in hamburger menu
- Underline aligns precisely with text width (excludes padding)

Improve transitions:
- Fix color transition to only animate color, not layout properties
- Disable underline transition during window resize to prevent lag
- Underline updates immediately on resize for perfect alignment
2025-12-27 10:15:16 +01:00
Alexander 65d25a011b fix mobile header shadow appearing over hamburger menu
Separate the drop shadow from the button wrapper into its own fixed
element with a lower z-index. This prevents the shadow from appearing
over the hamburger menu when it's pulled out on mobile.

- Create separate button_wrapper_shadow element
- Move box-shadow styling to shadow element
- Set shadow z-index to 9 to stay below menu but above page content
- Use fixed positioning with pointer-events: none
2025-12-27 09:54:17 +01:00
Alexander 4f410a309c refactor language selector into separate component
Extract language switching functionality from UserHeader into a new
LanguageSelector component. In mobile view, the selector appears in
the top bar next to the hamburger menu. In desktop view, it appears
in the navigation bar to the left of the UserHeader.

- Create LanguageSelector component with local element bindings
- Update Header component with language_selector_mobile and
  language_selector_desktop slots
- Remove language selector code from UserHeader
- Update recipe and main layouts to use new component
- Hide desktop language selector inside mobile hamburger menu
2025-12-27 09:46:04 +01:00
Alexander 3e28661123 fix: remove scale transform on homepage icon hover 2025-12-12 22:55:43 +01:00
Alexander d6f0080303 "fix" symbol in header on mobile 2024-02-20 20:27:33 +01:00
Alexander c8b09959d5 move globals out of component into css file 2024-02-18 23:34:14 +01:00
Alexander 0d14c4378c slightly improve js-free Card rendering 2024-01-21 10:34:23 +01:00
Alexander 8a69c085fa fix Login/PFP falling below viewport 2024-01-20 17:49:20 +01:00
Alexander 0c0e805b63 Header: add box-shadow 2024-01-20 16:29:47 +01:00
Alexander a6b110fd1e dark theme implemented 2024-01-20 00:39:53 +01:00
Alexander 1c73c63807 finally fix symbol on mobile 2023-10-04 22:53:03 +02:00
Alexander ae0363df9f fix mess-up on hover 2023-07-23 12:48:12 +02:00
Alexander c541fcc7a1 user displayed in navbar with option to logout 2023-07-19 14:52:50 +02:00
Alexander ec76c626fd fix global .icon for action_button 2023-07-18 18:11:47 +02:00
Alexander 45db421ed0 fix global .icon for action_button 2023-07-18 18:10:57 +02:00
Alexander bfd61735a3 symbol in Header 2023-07-18 18:09:31 +02:00
Alexander a6b8685f91 First fully working user management, move to layout groups 2023-07-18 14:18:52 +02:00
Alexander 73cdd93124 break word 2023-07-13 23:15:13 +02:00
Alexander d8a41d9cb1 less mislicks, switched to :focus where appropriate 2023-07-13 18:27:02 +02:00
Alexander e612b06662 Card hover effect smooth, mobile navbar hides on click 2023-07-13 13:54:42 +02:00
Alexander f589d6946f API routes now return proper Responses and basic errors are handled
slight improvements in layouting
2023-07-02 23:39:31 +02:00