ArcaneJaspr Codex
Documentation
ArcaneContainer
Centered container with max-width constraints
Live Demo
Contained content

ArcaneContainer#

A layout component that centers content with a maximum width, commonly used for page-level content containment.

Basic Usage#

ArcaneContainer(
  children: [
    ArcaneHeading(text: 'Page Content'),
    ArcaneParagraph(text: 'Content is centered with max-width.'),
  ],
)

Properties#

PropertyTypeDefaultDescription
children List<Component> [] Child components
maxWidth ContainerMaxWidth lg Maximum width constraint
padding PaddingPreset? null Container padding
styles ArcaneStyleData? null Additional styling

Max Width Sizes#

// Extra small (max-width: 480px)
ArcaneContainer(
  maxWidth: ContainerMaxWidth.xs,
  children: [...],
)

// Small (max-width: 640px)
ArcaneContainer(
  maxWidth: ContainerMaxWidth.sm,
  children: [...],
)

// Medium (max-width: 768px)
ArcaneContainer(
  maxWidth: ContainerMaxWidth.md,
  children: [...],
)

// Large (max-width: 1024px) - Default
ArcaneContainer(
  maxWidth: ContainerMaxWidth.lg,
  children: [...],
)

// Extra large (max-width: 1280px)
ArcaneContainer(
  maxWidth: ContainerMaxWidth.xl,
  children: [...],
)

// 2XL (max-width: 1536px)
ArcaneContainer(
  maxWidth: ContainerMaxWidth.xl2,
  children: [...],
)

// Full width (no max-width)
ArcaneContainer(
  maxWidth: ContainerMaxWidth.full,
  children: [...],
)

With Padding#

ArcaneContainer(
  maxWidth: ContainerMaxWidth.lg,
  padding: PaddingPreset.xl,
  children: [
    ArcaneHeading(text: 'Padded Container'),
    ArcaneParagraph(text: 'Content with comfortable padding.'),
  ],
)

Examples#

Page Layout#

ArcaneContainer(
  maxWidth: ContainerMaxWidth.xl,
  padding: PaddingPreset.lg,
  children: [
    ArcaneHeading(text: 'Dashboard'),
    ArcaneDiv(
      styles: const ArcaneStyleData(
        display: Display.grid,
        gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',
        gap: Gap.lg,
      ),
      children: [
        ArcaneCard(child: ArcaneText('Card 1')),
        ArcaneCard(child: ArcaneText('Card 2')),
        ArcaneCard(child: ArcaneText('Card 3')),
      ],
    ),
  ],
)

Narrow Content#

ArcaneContainer(
  maxWidth: ContainerMaxWidth.sm,
  padding: PaddingPreset.xl,
  children: [
    ArcaneHeading(text: 'Sign In'),
    ArcaneTextInput(label: 'Email'),
    ArcaneTextInput(label: 'Password', type: TextInputType.password),
    ArcaneButton.primary(label: 'Sign In', onPressed: () {}),
  ],
)

Blog Post#

ArcaneContainer(
  maxWidth: ContainerMaxWidth.md,
  padding: PaddingPreset.xl,
  styles: const ArcaneStyleData(
    paddingTop: Spacing.xl3,
    paddingBottom: Spacing.xl3,
  ),
  children: [
    ArcaneHeadline(text: 'Article Title'),
    ArcaneDiv(
      styles: const ArcaneStyleData(
        display: Display.flex,
        gap: Gap.sm,
        marginBottom: Spacing.lg,
      ),
      children: [
        ArcaneBadge(label: 'Tutorial'),
        ArcaneText('5 min read'),
      ],
    ),
    ArcaneParagraph(text: 'Article content goes here...'),
  ],
)

Hero Section#

ArcaneContainer(
  maxWidth: ContainerMaxWidth.xl,
  styles: const ArcaneStyleData(
    display: Display.flex,
    flexDirection: FlexDirection.column,
    alignItems: AlignItems.center,
    textAlign: TextAlign.center,
    paddingTop: Spacing.xl4,
    paddingBottom: Spacing.xl4,
  ),
  children: [
    ArcaneHeadline(text: 'Build faster with Arcane'),
    ArcaneSubheadline(text: 'A comprehensive UI component library'),
    ArcaneDiv(
      styles: const ArcaneStyleData(
        display: Display.flex,
        gap: Gap.md,
        marginTop: Spacing.xl,
      ),
      children: [
        ArcaneButton.primary(label: 'Get Started', onPressed: () {}),
        ArcaneButton.ghost(label: 'Learn More', onPressed: () {}),
      ],
    ),
  ],
)