Layout & structure
IContainer
A centred, max-width wrapper with the page's horizontal gutter. Use one per page region instead of repeating mx-auto max-w-… px-… by hand.
vue
<IContainer size="lg">
<IPageHeader title="Invoices" />
<ITable :columns="columns" :rows="rows" />
</IContainer>Sizes
Every size is wider than this column, so the five are drawn to scale against xl:
sm768px
md1024px
lg1152px
xl1280px
fullno cap
size | Max width |
|---|---|
sm | max-w-3xl — 768px |
md | max-w-5xl — 1024px |
lg | max-w-6xl — 1152px |
xl | max-w-7xl — 1280px (default) |
full | No maximum; still centres and still takes the gutter |
A container caps a whole page. For a readable line length, constrain the text itself inside one.
Gutter
The gutter is the horizontal padding that keeps content off the window edge on small screens. none is for when the child draws its own — a full-bleed image, or a table that should touch the edges on a phone.
gutter none
gutter sm
gutter md
gutter lg
Inside the app shell
IAppShell sets no width of its own. Put a container inside its main region:
vue
<IAppShell>
<template #sidebar>
<ISidebar :items="sections" />
</template>
<IContainer class="py-8">
<IPageHeader title="Invoices" />
<ITable :columns="columns" :rows="rows" />
</IContainer>
</IAppShell>Props
| Prop | Type | Default | Description |
|---|---|---|---|
size | 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'xl' | Maximum width |
gutter | 'none' | 'sm' | 'md' | 'lg' | 'md' | Horizontal padding |
as | string | 'div' | Element to render |
asChild | boolean | false | Render the child instead, forwarding props |
unstyled | boolean | — | Drop built-in classes |
class | string | — | Merged with the built-in classes |
ui | { root? } | — | Per-slot class overrides |
The widths come from Tailwind v4's width scale.