Skip to content

Add global page filter controls with UI sheet and CSS variables#23

Open
Ring-wdr wants to merge 1 commit intomainfrom
codex/add-custom-backdrop-filter-to-footer
Open

Add global page filter controls with UI sheet and CSS variables#23
Ring-wdr wants to merge 1 commit intomainfrom
codex/add-custom-backdrop-filter-to-footer

Conversation

@Ring-wdr
Copy link
Copy Markdown
Owner

@Ring-wdr Ring-wdr commented Mar 6, 2026

Motivation

  • Add a user-facing control to adjust a global backdrop filter (brightness/contrast/saturation/hue) for the whole page.
  • Surface a page-level filter layer to enable real-time visual adjustments without changing component internals.

Description

  • Inserted a div.page-filter-layer into the root layout (src/app/[locale]/layout.tsx) so the global filter can be rendered above the background and behind content.
  • Added CSS custom properties --page-filter-brightness, --page-filter-contrast, --page-filter-saturation, and --page-filter-hue and a .page-filter-layer utility in src/app/globals.css that applies backdrop-filter using those variables.
  • Implemented client-side footer controls in src/shared/ui/footer.tsx (added "use client") including a filter button, a slide-up sheet with range inputs for brightness/contrast/saturation/hue, persistence via root CSS properties, a reset action, and related icons/UI.
  • Minor formatting/indentation cleanups in layout.tsx and globals.css for consistent styling.

Testing

  • Ran a TypeScript type check with tsc --noEmit and it succeeded.
  • Ran linting with npm run lint and there were no new issues.
  • Verified the production build with next build which completed successfully.

Codex Task

@vercel
Copy link
Copy Markdown

vercel bot commented Mar 6, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
next-portfolio Ready Ready Preview, Comment Mar 6, 2026 8:02am

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4d23b46876

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

)}
>
<div className="pointer-events-none fixed inset-0 -z-10 bg-[radial-gradient(circle_at_15%_15%,color-mix(in_oklch,var(--color-highlight),transparent_84%),transparent_42%),radial-gradient(circle_at_85%_0%,color-mix(in_oklch,var(--color-surface-strong),transparent_86%),transparent_48%),linear-gradient(180deg,var(--background),color-mix(in_oklch,var(--background),black_5%))]" />
<div className="page-filter-layer pointer-events-none fixed inset-0 z-30" />
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Ensure global filter also affects sticky header

The new page filter layer is fixed at z-30, but the header is rendered at z-40 (src/shared/ui/header.tsx), so the header is always painted above the filter. Since backdrop-filter only applies to content behind the layer, moving the sliders updates the body content but leaves the sticky nav unfiltered on every page, which breaks the expected page-wide behavior of this control.

Useful? React with 👍 / 👎.

Comment on lines +114 to +117
<p className="text-sm font-semibold">Global Backdrop Filter</p>
<p className="text-xs text-muted-foreground">
실시간으로 전체 페이지 필터를 조절합니다.
</p>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Localize the new filter sheet labels

This commit adds user-facing copy directly in the component instead of next-intl messages, including a Korean-only helper sentence in the sheet. In the English locale, users will see mixed-language UI for the new control, and these labels cannot be translated consistently like the rest of the footer. Move these strings into locale message files and read them via useTranslations.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant