Skip to content

feat: CSS Container Query Driven Responsive Layout System (#66)#74

Merged
elizabetheonoja-art merged 5 commits into
Utility-Protocol:mainfrom
Kami-no-san:fix/issue-66-container-query-layout
Jun 24, 2026
Merged

feat: CSS Container Query Driven Responsive Layout System (#66)#74
elizabetheonoja-art merged 5 commits into
Utility-Protocol:mainfrom
Kami-no-san:fix/issue-66-container-query-layout

Conversation

@Kami-no-san

Copy link
Copy Markdown
Contributor

Summary

Implements Issue #66: CSS Container Query Driven Responsive Layout System for Multi-Form-Factor Operational Dashboards.

Changes

CSS System:

  • src/styles/containers.css@container queries defining containment contexts for sidebar, map-panel, data-grid, and charts-area. Each region responds independently to its container's inline size with compact/medium/expanded breakpoints.
  • src/styles/breakpoints.css — CSS custom properties for breakpoint thresholds, consumed by the useContainerSize hook

Components (pure CSS container query driven):

  • Sidebar.tsx — 64px icon-only at <400px, 220px medium at 400-800px, 320px expanded at >=800px. Icon sizes use container query units (5cqw).
  • MapPanel.tsx — Controls toolbar switches between vertical (compact) and horizontal (expanded) via container queries
  • DataGrid.tsx — Secondary columns hidden via CSS in compact mode (<600px). Row density and font size scale with container width.
  • ChartsArea.tsx — Grid layout (expanded >=500px) vs stacked (compact <500px). Aspect ratio switches between 16:9 and 4:3.

Hook:

  • useContainerSize.ts — ResizeObserver hook for imperative use (chart resize callbacks). Reads breakpoints from CSS custom properties on :root.

Utilities:

  • container-fluid-text / container-fluid-heading classes for intrinsic typography scaling
  • grid-container-auto helper using minmax with cqw units
  • @supports not (container-type: inline-size) fallback with media query approximations
  • Smooth 0.3s CSS transitions on container resizes

Tests:

  • Unit tests for useContainerSize hook (6 tests covering initial state, ResizeObserver updates, custom thresholds, selector strings)
  • Playwright integration test verifying container query CSS delivery

Closes #66

…tility-Protocol#66)

- Create src/styles/containers.css with @container queries for sidebar, map-panel, data-grid, and charts-area
- Create src/styles/breakpoints.css with CSS custom property thresholds consumed by useContainerSize hook
- Implement useContainerSize hook with ResizeObserver and CSS custom property reading
- Build Sidebar component with pure CSS container-query-driven width and label visibility
- Build MapPanel component with CSS container-query-driven control button layout
- Build DataGrid component with CSS-driven column visibility and row density
- Build ChartsArea component with CSS-driven grid/stacked layout and imperative chart resize
- Add container-fluid-text and container-fluid-heading typography utilities
- Add @supports fallback for browsers without container-type support
- Write unit tests for useContainerSize hook
- Write Playwright integration test for container query CSS delivery
- Import container CSS files in globals.css
@elizabetheonoja-art

Copy link
Copy Markdown
Contributor

ci failed

@elizabetheonoja-art elizabetheonoja-art left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@elizabetheonoja-art elizabetheonoja-art merged commit 187130e into Utility-Protocol:main Jun 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CSS Container Query Driven Responsive Layout System for Multi-Form-Factor Operational Dashboards

2 participants