Skip to main content

Tokens

Static spacing, radius, and breakpoint constants used throughout Catalyst. Unlike ColorScheme, Typography, Motion, and Shadows, Spacing and Radii are not threaded through ThemeData — they are plain static constant classes you reference directly. Breakpoints is the exception: it is a ThemeData sub-object, accessed via context.breakpoints.

Spacing

Standard spacing values on a 4 px base grid. The naming convention is s followed by an integer; the value is 4 px × that integer.

FieldTypeValue
Spacing.s1double4 px
Spacing.s2double8 px
Spacing.s3double12 px
Spacing.s4double16 px
Spacing.s5double20 px
Spacing.s6double24 px
Spacing.s8double32 px
Spacing.s10double40 px
Spacing.s12double48 px
Spacing.s16double64 px

Spacing is an abstract final class — a namespace of static const values, not something you instantiate or pass to ThemeData. Override it by supplying custom EdgeInsets/doubles directly where components accept them, or by using your own spacing constants instead.

Radii

Standard border-radius values used across Catalyst components. Each named value is available as both a raw double and a pre-built BorderRadius (suffixed All).

FieldTypeValue
Radii.xsdouble4 px
Radii.smdouble8 px
Radii.mddouble12 px
Radii.lgdouble14 px
Radii.xldouble16 px
Radii.xxldouble24 px
Radii.pilldouble1000 px — effectively infinite radius
Radii.xsAllBorderRadiusBorderRadius.all(Radius.circular(Radii.xs))
Radii.smAllBorderRadiusBorderRadius.all(Radius.circular(Radii.sm))
Radii.mdAllBorderRadiusBorderRadius.all(Radius.circular(Radii.md))
Radii.lgAllBorderRadiusBorderRadius.all(Radius.circular(Radii.lg))
Radii.xlAllBorderRadiusBorderRadius.all(Radius.circular(Radii.xl))
Radii.xxlAllBorderRadiusBorderRadius.all(Radius.circular(Radii.xxl))
Radii.pillAllBorderRadiusBorderRadius.all(Radius.circular(Radii.pill))

Like Spacing, Radii is an abstract final class of static const values.

Breakpoints

The minimum widths (in logical pixels) at which each named Breakpoint becomes active. Defaults follow common web conventions. Unlike Spacing and Radii, Breakpoints is part of ThemeData and is accessed via context.breakpoints.

FieldTypeDefault
smdouble640 px
mddouble768 px
lgdouble1024 px
xldouble1280 px
xxldouble1536 px

Breakpoints.resolve(double width) returns the active Breakpoint for a given width, checking from widest to narrowest and falling back to Breakpoint.xs.

Breakpoint is an enhanced enum — xs, sm, md, lg, xl, xxl — with comparison operators (>=, >, <=, <) so you can write breakpoint >= Breakpoint.md instead of comparing raw widths.

Overriding

Breakpoints supports copyWith, like the other ThemeData sub-objects:

ThemeData.light(
iconography: appIconography,
breakpoints: const Breakpoints(md: 900, lg: 1200),
);

Spacing and Radii are not part of ThemeData, so there is nothing to override there — reference the constants directly (Spacing.s4, Radii.mdAll) or define your own equivalent constants for components that accept raw double/EdgeInsets/BorderRadius values.