sdxc

[ @sdxc/u/layout ]

grid-auto-columns

Applies grid-auto-columns to the *implicit* columns a grid creates past its explicit tracks.

import { gridAutoColumns } from "@sdxc/u/layout";

Quick reference

Every documented call, beside the CSS it emits.

CallCSS
u.gridAutoColumns(40)css({ gridAutoColumns: "calc(var(--ui-spacing, 0.25rem) * 40)" })
u.gridAutoColumns("minmax(10rem, 1fr)")css({ gridAutoColumns: "minmax(10rem, 1fr)" })
u.gridAutoColumns("max-content")css({ gridAutoColumns: "max-content" })

Examples

Basic example

Use gridAutoColumns(n) to size the columns a grid creates on its own, here one per item with gridAutoFlow("column"):

01
02
03
<div mix={[grid(), gridAutoFlow("column"), gridAutoColumns(24), gap(4)]}>
	<div mix={[...]}>01</div>
	<div mix={[...]}>02</div>
	<div mix={[...]}>03</div>
</div>

Sharing the width

Pass a track size like gridAutoColumns("minmax(0, 1fr)") to make every implicit column an equal share of the grid's width:

01
02
03
04
<div mix={[grid(), gridAutoFlow("column"), gridAutoColumns("minmax(0, 1fr)"), gap(4)]}>
	<div mix={[...]}>01</div>
	<div mix={[...]}>02</div>
	<div mix={[...]}>03</div>
	<div mix={[...]}>04</div>
</div>

Sizing to content

Use gridAutoColumns("max-content") to make each implicit column as wide as its content:

<nav mix={[grid(), gridAutoFlow("column"), gridAutoColumns("max-content"), gap(4)]}>
	<a href="/" mix={[...]}>
		Home
	</a>
	<a href="/docs" mix={[...]}>
		Documentation
	</a>
	<a href="/api" mix={[...]}>
		API
	</a>
</nav>

Using a custom value

Every scale argument also takes a raw CSS value, which passes through untouched.

u.gridAutoColumns("2.75rem")

Applying on a state

Wrap the call in a state utility to scope it to one selector.

u.hover(u.gridAutoColumns(40))

Responsive design

Wrap the call in a container query to scope it to one width.

u.at("md", u.gridAutoColumns(40))

Customizing your theme

Customizing spacing

Every numeric step multiplies --ui-spacing, so redefining it rescales every spacing and sizing utility at once:

:root {
	--ui-spacing: 0.25rem;
}

Every call that names the step now reads the new value:

gridAutoColumns(4)

Signature

u.gridAutoColumns(value: SizeValue)

Written by Sergio Xalambrí. Follow @sergiodxa for new packages, or sponsor the work.