css_class_generators.ts view source
<T1 = string, T2 = string, T3 = string>(template: ClassTemplateFn<T1, T2, T3>, values: Iterable<T1>, secondary?: Iterable<T2> | undefined, tertiary?: Iterable<...> | undefined): Record<...> import {generate_classes} from '@fuzdev/fuz_css/css_class_generators.js'; Generates CSS class declarations from templates.
Supports up to 3 dimensions of multiplicative combinations.
template
function that generates CSS from values, can return null to skip
values
primary iterable of values
type Iterable<T1, any, any>
secondary?
optional second dimension (makes it multiplicative)
type Iterable<T2, any, any>
optional
tertiary?
optional third dimension for even more combinations
type Iterable<T3, any, any>
optional
generics
generate_classes<T1 = string, T2 = string, T3 = string> examples
generate_classes(
v => ({ name: `position_${v}`, css: `position: ${v};` }),
['static', 'relative', 'absolute']
)
generate_classes(
(dir, size) => ({ name: `m${dir}_${size}`, css: `margin-${dir}: ${size};` }),
['top', 'bottom'],
['0', '1px', '2px']
)