Auto-responsive equal-width grid — no manual breakpoints required.
Two operating modes:
colspreset — sets responsive breakpoints automatically:grid-cols-1 sm:grid-cols-2 md:grid-cols-N lg:grid-cols-Nmin_child_width(CSS auto-fit) — uses inline style withrepeat(auto-fit, minmax(min(Xpx, 100%), 1fr))so columns form and dissolve automatically as the container resizes. Themin()wrapper prevents overflow when the container is narrower thanmin_child_width.
When container_query is enabled, the grid uses @container query classes
(@sm:, @md:, etc.) instead of viewport breakpoints, so columns respond to
the container width rather than the viewport.
Examples
<%!-- 3-col responsive with preset breakpoints --%>
<.simple_grid cols={3} gap={4}>
<.card>A</.card>
<.card>B</.card>
<.card>C</.card>
<.card>D</.card>
</.simple_grid>
<%!-- Auto-fit: any number of cols from 200px children --%>
<.simple_grid min_child_width="200px" gap={4}>
<%= for item <- @items do %>
<.card>{item}</.card>
<% end %>
</.simple_grid>
<%!-- Container-query mode: responds to parent width --%>
<.simple_grid cols={3} gap={4} container_query>
<.card>A</.card>
<.card>B</.card>
<.card>C</.card>
</.simple_grid>
Summary
Functions
Renders an auto-responsive equal-width grid.
Functions
Renders an auto-responsive equal-width grid.
Attributes
cols(:integer) - Preset column count (1–6). Sets responsivesm/md/lgbreakpoints automatically. Defaults tonil.min_child_width(:string) - CSS width (e.g."200px") forauto-fit minmax. Takes priority overcols. Defaults tonil.gap(:any) - Uniform gap (0–12) →gap-N. Accepts integer or responsive map. Defaults to4.container_query(:boolean) - Use@containerquery classes instead of viewport breakpoints. Defaults tofalse.class(:string) - Additional CSS classes merged via cn/1. Defaults tonil.- Global attributes are accepted. HTML attributes forwarded to the root element.
Slots
inner_block(required) - Grid children.