Skip to main content

Valid value constants

Overview

The valid* constant arrays enumerate every accepted value for the shared Bulma helper props — public API you can import to build prop types and validation. Each is a readonly as const tuple, so (typeof validColors)[number] gives you the exact string-literal union. useBulmaClasses (and the per-concern hooks) silently ignore values outside these lists, so validating against them tells you exactly what will produce a class.


Import

import {
validColors,
validSizes,
validViewports,
} from '@allxsmith/bestax-bulma';

All 18 constants are importable the same way.


Constants

ConstantValuesUsed by prop family
validColors'primary', 'link', 'info', 'success', 'warning', 'danger', 'black''white', 'light', 'dark' (17 values)color, backgroundColor (also component color props)
validColorShades'00', '05''95', 'invert', 'light', 'dark', 'soft', 'bold', 'on-scheme'colorShade, backgroundColorShade
validSizes'0''6', 'auto'Spacing: m, mt, mr, mb, ml, mx, my, p, pt, … px, py
validTextSizes'1''7'textSize (+ textSizeMobiletextSizeFullhd)
validAlignments'centered', 'justified', 'left', 'right'textAlign (+ viewport variants)
validTextTransforms'capitalized', 'lowercase', 'uppercase', 'italic'textTransform
validTextWeights'light', 'normal', 'medium', 'semibold', 'bold'textWeight
validFontFamilies'sans-serif', 'monospace', 'primary', 'secondary', 'code'fontFamily
validDisplays'block', 'flex', 'inline', 'inline-block', 'inline-flex'display (+ displayMobiledisplayFullhd)
validVisibilities'hidden', 'sr-only', 'invisible'visibility (+ viewport variants)
validFlexDirections'row', 'row-reverse', 'column', 'column-reverse'flexDirection
validFlexWraps'nowrap', 'wrap', 'wrap-reverse'flexWrap
validJustifyContents'flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly', 'start', 'end', 'left', 'right'justifyContent
validAlignContents'flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly', 'stretch'alignContent
validAlignItems'stretch', 'flex-start', 'flex-end', 'center', 'baseline', 'start', 'end'alignItems
validAlignSelfs'auto', 'flex-start', 'flex-end', 'center', 'baseline', 'stretch'alignSelf
validFlexGrowShrink'0''5'flexGrow, flexShrink
validViewports'mobile', 'tablet', 'desktop', 'widescreen', 'fullhd'viewport (responsive modifier)

Typing with (typeof …)[number]

Because the arrays are as const, indexing them with number yields the union of their literal values — the same idiom the library uses internally for its prop types:

import { validColors, validSizes } from '@allxsmith/bestax-bulma';

type Color = (typeof validColors)[number]; // 'primary' | 'link' | … | 'dark'
type Spacing = (typeof validSizes)[number]; // '0' | '1' | … | '6' | 'auto'

interface MyComponentProps {
color?: Color;
m?: Spacing;
}

They also work as runtime validators:

function isColor(value: string): value is (typeof validColors)[number] {
return (validColors as readonly string[]).includes(value);
}
validSizes is for spacing, not element sizes

validSizes ('0''6' | 'auto') enumerates the spacing helper scale — the values for m/p props like m="4" (→ m-4). Element size props are a different axis: Button, Icon, and friends declare an inline union such as 'small' | 'medium' | 'large' (Button adds 'normal'), not validSizes. Don't use validSizes to type a component's size prop.


See Also

  • useBulmaClasses: The hook that consumes these values and generates the helper classes.
  • Helper guides: Task-oriented walkthroughs of the helper-prop system (color, spacing, typography, flex, visibility).