Skip to main content

Layout Components

Relevant source files This document provides API reference and construction patterns for layout components in @ui8kit/core. Layout components orchestrate multiple UI components into complete application structures such as dashboards, landing pages, and admin panels. For basic primitive layout components (Grid, Flex, Stack), see Core Components. For UI component composition patterns, see UI Components. For general best practices on layout construction, see Best Practices.

Overview

The library provides three specialized layout components that compose primitives and UI components into application templates: These layouts sit at Layer 3 of the architecture and build upon Layer 1 primitives (Block, Box, Grid, Container) and Layer 2 UI components (Card, Button, Text, Title). Sources: src/layouts/DashLayout.tsx src/layouts/LayoutBlock.tsx src/layouts/SplitBlock.tsx README.md147-168

Component Relationships

Diagram: Layout component dependency tree showing how Layer 3 layouts compose Layer 2 UI components and Layer 1 primitives, plus external dependencies for advanced features. Sources: src/layouts/DashLayout.tsx1-99 src/layouts/LayoutBlock.tsx1-389 src/layouts/SplitBlock.tsx1-145

DashLayout

Dashboard layout component with resizable sidebar, navbar, and main content area. Built on react-resizable-panels for panel resizing functionality.

DashLayout Props

Minimal navbar with brand identity and theme toggle. Renders as semantic <nav> element with data-role="dash-navbar" attribute. Implementation: src/layouts/DashLayout.tsx34-49
Resizable sidebar container rendered as semantic <aside> element. Wraps children in Stack layout with optional title. Implementation: src/layouts/DashLayout.tsx14-25

Panel Structure

Diagram: DashLayout panel structure showing PanelGroup with resizable sidebar (20% default) and main content (80% default) separated by resize handle. Sources: src/layouts/DashLayout.tsx64-91

Import Pattern

Sources: src/layouts/DashLayout.tsx93-96

LayoutBlock

Flexible content section component supporting three layout modes: grid, flex, and stack. Includes content hook system for customizable rendering and default presenters for common patterns.

LayoutBlock Props

Sources: src/layouts/LayoutBlock.tsx32-84

Layout Modes

Content Hook System

Content hooks enable custom rendering logic at specific points in the layout lifecycle. Default hooks are provided for common patterns: Sources: src/layouts/LayoutBlock.tsx23-30 src/layouts/LayoutBlock.tsx229-254

Default Item Renderers

Diagram: Default item renderer selection logic based on layout mode and content structure. Sources: src/layouts/LayoutBlock.tsx123-227

Import Pattern

Sources: src/layouts/LayoutBlock.tsx256-389

SplitBlock

Two-column split layout component for hero sections and feature showcases. Supports left/right media positioning and optional container wrapping.

SplitBlock Props

Sources: src/layouts/SplitBlock.tsx17-55

Layout Modes

Content Hook System

Minimal hook system for content customization. Default content renderer applies hooks in sequence: Implementation: src/layouts/SplitBlock.tsx57-65

Import Pattern

Sources: src/layouts/SplitBlock.tsx67-145

Construction Patterns by Use Case

Landing Pages

Landing pages typically combine multiple LayoutBlock and SplitBlock components for hero sections, features, and CTAs.
Diagram: Common landing page structure using layout components. Import Pattern:
Example Structure:
Sources: src/layouts/LayoutBlock.tsx1-389 src/layouts/SplitBlock.tsx1-145

Dashboards

Dashboards use DashLayout as the primary container with resizable sidebar for navigation.
Diagram: Dashboard structure with DashLayout and nested content layouts. Import Pattern:
Example Structure:
Sources: src/layouts/DashLayout.tsx1-99 src/layouts/LayoutBlock.tsx1-389

Websites

Multi-page websites compose LayoutBlock sections with different layout modes for varied content types.
Diagram: Website page structure combining different layout types. Import Pattern:
Example Structure:
Sources: src/layouts/LayoutBlock.tsx1-389 src/layouts/SplitBlock.tsx1-145

Admin Panels

Admin panels extend the dashboard pattern with form layouts and data management interfaces.
Diagram: Admin panel structure with form layouts and data management components. Import Pattern:
Example Structure:
Sources: src/layouts/DashLayout.tsx1-99 src/layouts/LayoutBlock.tsx1-389

Common Composition Patterns

Responsive Grid Configurations

Sources: src/layouts/LayoutBlock.tsx280-324

Content Hook Composition

Sources: src/layouts/LayoutBlock.tsx388-389

Nested Layout Composition

Sources: src/layouts/LayoutBlock.tsx256-383 src/layouts/SplitBlock.tsx67-137

Data Attributes for Targeting

Layout components include data-class and data-role attributes for consistent DOM targeting: Sources: src/layouts/DashLayout.tsx18-48 src/layouts/LayoutBlock.tsx320-345 src/layouts/SplitBlock.tsx129