{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_00} from '@fuzdev/fuz_css/variables.js'; CSS framework and design system for semantic HTML
40 modules ยท 868 declarations
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {accent_95} from '@fuzdev/fuz_css/variables.js'; css_class_extractor.ts view source
AcornPlugin import type {AcornPlugin} from '@fuzdev/fuz_css/css_class_extractor.js'; Acorn plugin type - a function that extends the Parser class.
(call)type (BaseParser: typeof Parser): typeof Parser
BaseParsertypeof Parsertypeof ParserSet<string> import {ALL_MODIFIER_NAMES} from '@fuzdev/fuz_css/modifiers.js'; All modifier names for quick lookup
readonly ["00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100"] import {alpha_variants} from '@fuzdev/fuz_css/variable_data.js'; "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" import type {AlphaVariant} from '@fuzdev/fuz_css/variable_data.js'; Map<string, ModifierDefinition> import {ANCESTOR_MODIFIERS} from '@fuzdev/fuz_css/modifiers.js'; Map of ancestor modifier names to their CSS output
example_class_utilities.ts view source
string[] import {arrayClasses} from '@fuzdev/fuz_css/example_class_utilities.js'; Array - all elements extracted
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {background_image} from '@fuzdev/fuz_css/variables.js'; css_plugin_options.ts view source
BaseCssOption import type {BaseCssOption} from '@fuzdev/fuz_css/css_plugin_options.js'; Type for the base_css option used by CSS generators.
Supports four forms:
undefined - Use default style.css (framework defaults)null - Disable base styles entirely (explicit opt-out)string - Custom CSS to replace defaults(default_css) => string - Callback to modify default CSSSee module documentation for the undefined vs null convention.
BaseDiagnostic import type {BaseDiagnostic} from '@fuzdev/fuz_css/diagnostics.js'; Base diagnostic with common fields.
leveltype 'error' | 'warning'
messagetype string
suggestiontype string | null
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {bg_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_color_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_radius_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_radius_md} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_radius_sm} from '@fuzdev/fuz_css/variables.js'; readonly ["xs3", "xs2", "xs", "sm", "md", "lg", "xl"] import {border_radius_variants} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_radius_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_radius_xs} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_radius_xs2} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_radius_xs3} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_style} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width_1} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width_2} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width_3} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width_4} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width_5} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width_6} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width_7} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width_8} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {border_width_9} from '@fuzdev/fuz_css/variables.js'; readonly [1, 2, 3, 4, 5, 6, 7, 8, 9] import {border_width_variants} from '@fuzdev/fuz_css/variable_data.js'; "lg" | "md" | "sm" | "xs" | "xl" | "xs3" | "xs2" import type {BorderRadiusVariant} from '@fuzdev/fuz_css/variable_data.js'; 6 | 4 | 3 | 1 | 2 | 5 | 7 | 8 | 9 import type {BorderWidthVariant} from '@fuzdev/fuz_css/variable_data.js'; class_variable_index.ts view source
(definitions: Record<string, CssClassDefinition | undefined>): CssClassVariableIndex import {build_class_variable_index} from '@fuzdev/fuz_css/class_variable_index.js'; Builds an index of CSS variables used by each class definition.
definitionsCSS class definitions to index
Record<string, CssClassDefinition | undefined>CssClassVariableIndex CssClassVariableIndex with variable lookups
(variables: { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; }[], content_hash: string): VariableDependencyGraph import {build_variable_graph} from '@fuzdev/fuz_css/variable_graph.js'; Builds a dependency graph from an array of style variables.
variablesarray of StyleVariable objects
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; }[]content_hashhash of the source for cache invalidation
stringVariableDependencyGraph (variables: VariablesOption): VariableDependencyGraph import {build_variable_graph_from_options} from '@fuzdev/fuz_css/variable_graph.js'; Builds a variable dependency graph from a variables option. Handles all option forms: undefined (defaults), null (disabled), array, or callback.
variablesthe variables option from generator config
VariableDependencyGraph VariableDependencyGraph built from the resolved variables
bundled_resources.ts view source
BundledCssResources import type {BundledCssResources} from '@fuzdev/fuz_css/bundled_resources.js'; Bundled CSS resources needed to emit base styles and theme variables.
Build via create_bundled_resources; pass null for utility-only output.
style_rule_indextype StyleRuleIndex
variable_graphclass_variable_index{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {button_shadow} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {button_shadow_active} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {button_shadow_hover} from '@fuzdev/fuz_css/variables.js'; CacheDeps import type {CacheDeps} from '@fuzdev/fuz_css/deps.js'; Cache-related file system deps. Abstracted to enable test isolation from the actual filesystem.
Named CacheDeps (not FsDeps) because it only covers
the specific deps needed for cache management, not general
filesystem access.
read_textReads a text file.
Returns a not_found error if the file doesn't exist.
type (options: {path: string}) => Promise<Result<{value: string}, FsError>>
write_text_atomicWrites a text file atomically (temp file + rename for crash safety). Creates parent directories if they don't exist.
type (options: {path: string; content: string}) => Promise<Result<object, FsError>>
unlinkRemoves a file. Returns a not_found error if the file doesn't exist โ
callers that want rm -f semantics should ignore that kind explicitly.
type (options: {path: string}) => Promise<Result<object, FsError>>
CachedExtraction import type {CachedExtraction} from '@fuzdev/fuz_css/css_cache.js'; Cached extraction result for a single file.
Uses null instead of empty arrays to avoid allocation overhead.
vCache version - invalidates cache when bumped
type number
content_hashContent hash of the source file (BLAKE3 via hash_blake3)
type string
classesClasses as [name, locations] tuples, or null if none
type Array<[string, Array<SourceLocation>]> | null
explicit_classesClasses from @fuz-classes comments, or null if none
type Array<string> | null
diagnosticsExtraction diagnostics, or null if none
type Array<ExtractionDiagnostic> | null
elementsHTML elements found in the file, or null if none
type Array<string> | null
explicit_elementsElements from @fuz-elements comments, or null if none
type Array<string> | null
explicit_variablesVariables from @fuz-variables comments, or null if none
type Array<string> | null
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {caution_95} from '@fuzdev/fuz_css/variables.js'; (value: string): string | null import {check_calc_expression} from '@fuzdev/fuz_css/css_literal.js'; Checks if a value contains a possibly invalid calc expression.
valuethe formatted CSS value
stringstring | null warning message if suspicious, null otherwise
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_scale} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {chroma_shape_95} from '@fuzdev/fuz_css/variables.js'; ChromaRampKnobs import type {ChromaRampKnobs} from '@fuzdev/fuz_css/ramps.js'; Knobs for the symmetric mid-peaked chroma curve,
C(t) = min + (max - min) * pow(4t(1-t), curve).
The curve expresses the *request*; rendered stops are clamped by
PALETTE_CHROMA_CAPS per stop, and --chroma_scale multiplies above the
clamp (so vivid themes can knowingly push past the caps and gamut-clip).
chroma_minChroma requested at the ramp endpoints (stops 00/100), before capping.
type number
chroma_maxChroma requested at the ramp midpoint (stop 50), before capping.
type number
curveFalloff exponent of the peak; higher concentrates chroma at the middle.
type number
css_class_generators.ts view source
ClassTemplateFn<T1, T2, T3> import type {ClassTemplateFn} from '@fuzdev/fuz_css/css_class_generators.js'; ClassTemplateFn<T1 = string, T2 = string, T3 = string>T1stringT2stringT3stringclass_variable_index.ts view source
(index: CssClassVariableIndex, class_names: Iterable<string>): Set<string> import {collect_class_variables} from '@fuzdev/fuz_css/class_variable_index.js'; Collects all variables used by a set of classes.
indexthe class variable index
class_namesclass names to collect variables from
Iterable<string>Set<string> set of all variable names used by the classes
style_rule_parser.ts view source
(index: StyleRuleIndex, included_indices: Set<number>): Set<string> import {collect_rule_variables} from '@fuzdev/fuz_css/style_rule_parser.js'; Collects all CSS variables used by the included rules.
indexthe StyleRuleIndex
included_indicesset of rule indices to include
Set<number>Set<string> set of variable names (without -- prefix)
readonly ["light", "dark"] import {color_scheme_variants} from '@fuzdev/fuz_css/variable_data.js'; ColorScheme[] import {color_schemes} from '@fuzdev/fuz_css/theme.js'; ColorScheme import type {ColorScheme} from '@fuzdev/fuz_css/theme.js'; "light" | "dark" import type {ColorSchemeVariant} from '@fuzdev/fuz_css/variable_data.js'; style_rule_parser.ts view source
CoreReason import type {CoreReason} from '@fuzdev/fuz_css/style_rule_parser.js'; Reasons a rule is considered "core" and always included.
style_rule_parser.ts view source
CoreStyleRule import type {CoreStyleRule} from '@fuzdev/fuz_css/style_rule_parser.js'; A core style rule that is always included in output.
is_coretype true
core_reasontype CoreReason
bundled_resources.ts view source
(options: CreateBundledResourcesOptions): Promise<BundledCssResources> import {create_bundled_resources} from '@fuzdev/fuz_css/bundled_resources.js'; Builds the bundled CSS resources from generator options. The style.css index is always built (even when only theme output is enabled), matching the generators' prior behavior.
optionsPromise<BundledCssResources> (diagnostic: InterpreterDiagnostic, locations: SourceLocation[] | null): GenerationDiagnostic import {create_generation_diagnostic} from '@fuzdev/fuz_css/diagnostics.js'; Converts an InterpreterDiagnostic to a GenerationDiagnostic with locations.
diagnosticinterpreter diagnostic to convert
locationssource locations where the class was used
SourceLocation[] | nullGenerationDiagnostic style_rule_parser.ts view source
(css: string): StyleRuleIndex import {create_style_rule_index} from '@fuzdev/fuz_css/style_rule_parser.js'; Creates a StyleRuleIndex from a custom CSS string. Use this to parse user-provided base styles instead of loading from file.
cssraw CSS string to parse
stringStyleRuleIndex bundled_resources.ts view source
CreateBundledResourcesOptions import type {CreateBundledResourcesOptions} from '@fuzdev/fuz_css/bundled_resources.js'; base_cssBase CSS source: custom string, callback over the default, or default.
type BaseCssOption
variablesTheme variables source.
type VariablesOption
class_definitionsMerged class definitions, indexed to their referenced variables.
type Record<string, CssClassDefinition | undefined>
depsFilesystem deps for loading the default style.css.
type CacheDeps
6 import {CSS_CACHE_VERSION} from '@fuzdev/fuz_css/css_cache.js'; CSS cache version. Bump when any of these change:
extract_css_classes_with_locations() logic or outputv1: Initial version with classes and diagnostics
v2: Use null instead of empty arrays, add explicit_classes, elements, css_variables.
v3: Add explicit_elements, explicit_variables for @fuz-elements/@fuz-variables comments.
v4: Filter incomplete CSS variables in dynamic templates (e.g., var(--prefix_{expr})).
v5: Remove css_variables and explicit_variables (now detected via simple regex scan).
v6: Re-add explicit_variables for @fuz-variables comments (regex scan misses dynamic templates).
css_class_composites.ts view source
Record<string, CssClassDefinition | undefined> import {css_class_composites} from '@fuzdev/fuz_css/css_class_composites.js'; css_class_definitions.ts view source
Record<string, CssClassDefinition | undefined> import {css_class_definitions} from '@fuzdev/fuz_css/css_class_definitions.js'; All built-in CSS class definitions (token classes + composites).
``generate_classes_css``
css_class_interpreters.ts view source
CssClassDefinitionInterpreter[] import {css_class_interpreters} from '@fuzdev/fuz_css/css_class_interpreters.js'; Collection of all builtin interpreters for dynamic CSS class generation.
Order matters: modified_class_interpreter runs first to handle hover:box before
css_literal_interpreter tries to interpret it as hover:box (property:value).
css_class_generators.ts view source
readonly ["top", "right", "bottom", "left"] import {CSS_DIRECTIONS} from '@fuzdev/fuz_css/css_class_generators.js'; css_class_interpreters.ts view source
CssClassDefinitionInterpreter import {css_literal_interpreter} from '@fuzdev/fuz_css/css_class_interpreters.js'; Interpreter for CSS-literal classes (e.g., display:flex, hover:opacity:80%).
Generates full CSS rulesets including any modifier wrappers.
css_plugin_options.ts view source
CssCacheOptions import type {CssCacheOptions} from '@fuzdev/fuz_css/css_plugin_options.js'; Options for cache behavior.
cache_dir?Cache directory relative to project root.
type string
'.fuz/cache/css'deps?Filesystem deps for cache management. Defaults to production implementation. Override for testing.
type CacheDeps
css_class_generation.ts view source
CssClassDefinition import type {CssClassDefinition} from '@fuzdev/fuz_css/css_class_generation.js'; Full union including interpreters.
css_class_generation.ts view source
CssClassDefinitionBase import type {CssClassDefinitionBase} from '@fuzdev/fuz_css/css_class_generation.js'; comment?type string
css_class_generation.ts view source
CssClassDefinitionComposition import type {CssClassDefinitionComposition} from '@fuzdev/fuz_css/css_class_generation.js'; Pure utility composition (composes only).
composestype Array<string>
declaration?type never
ruleset?type never
css_class_generation.ts view source
CssClassDefinitionDeclaration import type {CssClassDefinitionDeclaration} from '@fuzdev/fuz_css/css_class_generation.js'; Custom CSS declaration (optionally seeded with composes).
declarationtype string
composes?type Array<string>
ruleset?type never
css_class_generation.ts view source
CssClassDefinitionInterpreter import type {CssClassDefinitionInterpreter} from '@fuzdev/fuz_css/css_class_generation.js'; Interpreter for dynamic CSS class generation based on pattern matching.
patterntype RegExp
interprettype (matched: RegExpMatchArray, ctx: CssClassInterpreterContext) => string | null
css_class_generation.ts view source
CssClassDefinitionRuleset import type {CssClassDefinitionRuleset} from '@fuzdev/fuz_css/css_class_generation.js'; Full ruleset with selectors.
rulesettype string
classes?type never
declaration?type never
css_class_generation.ts view source
CssClassDefinitionStatic import type {CssClassDefinitionStatic} from '@fuzdev/fuz_css/css_class_generation.js'; Static definitions (not interpreter-based).
import {CssClasses} from '@fuzdev/fuz_css/css_classes.js'; Collection of CSS classes extracted from source files.
Tracks classes per-file for efficient incremental updates.
Handles include/exclude filtering and explicit class tracking.
Uses null instead of empty collections to avoid allocation overhead.
constructorCreates a new CssClasses collection.
type new (additional_classes?: Set<string> | null, exclude_classes?: Set<string> | null): CssClasses
additional_classesclasses to always include (also treated as explicit for warnings)
Set<string> | nullnullexclude_classesclasses to exclude from output (also suppresses warnings)
Set<string> | nullnulladdAdds extraction results for a file. Replaces any previous classes and diagnostics for this file.
type (id: string, data: ExtractionData): void
idfile identifier
stringdataextraction data fields to store for this file
voiddeletetype (id: string): void
idstringvoidgetGets all unique class names as a Set (with exclude filter applied).
type (): Set<string>
Set<string>get_with_locationsGets all classes with their source locations (with exclude filter applied).
Locations from additional_classes are null.
type (): Map<string, SourceLocation[] | null>
Map<string, SourceLocation[] | null>get_allGets all classes and their locations in a single call.
More efficient than calling get() and get_with_locations() separately
when both are needed (avoids potential double recalculation).
Results have exclude filter applied and explicit_classes includes additional_classes.
type (): { all_classes: Set<string>; all_classes_with_locations: Map<string, SourceLocation[] | null>; explicit_classes: Set<string> | null; all_elements: Set<...>; explicit_elements: Set<...> | null; explicit_variables: Set<...> | null; }
{ all_classes: Set<string>; all_classes_with_locations: Map<string, SourceLocation[] | null>; explicit_classes: Set<string> | null; all_elements: Set<...>; explicit_elements: Set<...> | null; explicit_variables: Set<...> | null; }get_diagnosticsGets all extraction diagnostics from all files.
type (): ExtractionDiagnostic[]
ExtractionDiagnostic[]css_class_generation.ts view source
CssClassInterpreterContext import type {CssClassInterpreterContext} from '@fuzdev/fuz_css/css_class_generation.js'; Context passed to CSS class interpreters. Provides access to logging, diagnostics collection, and the class registry.
log?Optional logger for warnings/errors
type Logger
diagnosticsDiagnostics array to collect warnings and errors
type Array<InterpreterDiagnostic>
class_definitionsAll known CSS class definitions (token + composite classes)
type Record<string, CssClassDefinition | undefined>
css_propertiesValid CSS properties for literal validation, or null to skip validation
type Set<string> | null
css_plugin_options.ts view source
CssClassOptions import type {CssClassOptions} from '@fuzdev/fuz_css/css_plugin_options.js'; Options for CSS class definitions and interpretation. Controls how classes are defined and how dynamic classes are generated.
class_definitions?Additional class definitions to merge with defaults.
User definitions take precedence over defaults with the same name.
Required when include_default_classes is false.
type Record<string, CssClassDefinition | undefined>
include_default_classes?Whether to include default class definitions (token and composite classes).
When false, class_definitions is required.
type boolean
class_interpreters?Custom interpreters for dynamic class generation. Replaces the builtin interpreters entirely if provided.
type Array<CssClassDefinitionInterpreter>
class_variable_index.ts view source
CssClassVariableIndex import type {CssClassVariableIndex} from '@fuzdev/fuz_css/class_variable_index.js'; Index mapping class names to their CSS variable dependencies.
by_classMap from class name to set of variable names (without -- prefix)
type Map<string, Set<string>>
css_plugin_options.ts view source
CssDiagnosticsOptions import type {CssDiagnosticsOptions} from '@fuzdev/fuz_css/css_plugin_options.js'; Options for error and warning handling.
on_error?How to handle CSS-literal errors during generation.
type 'log' | 'throw'
'throw' in CI, 'log' otherwiseon_warning?How to handle warnings during generation.
type 'log' | 'throw' | 'ignore'
'log'css_class_generators.ts view source
"top" | "right" | "bottom" | "left" import type {CssDirection} from '@fuzdev/fuz_css/css_class_generators.js'; css_plugin_options.ts view source
CssExtractionOptions import type {CssExtractionOptions} from '@fuzdev/fuz_css/css_plugin_options.js'; Options for CSS class extraction from source files. Controls which files to scan and how to parse them.
filter_file?Filter function to determine which files to extract classes from. By default, extracts from .svelte, .html, .ts, .js, .tsx, .jsx files, excluding test files and .gen files.
type FileFilter
acorn_plugins?Additional acorn plugins for parsing.
Use acorn-jsx for React/Preact/Solid projects.
type Array<AcornPlugin>
import jsx from 'acorn-jsx';
gen_fuz_css({ acorn_plugins: [jsx()] });import {CssGenerationError} from '@fuzdev/fuz_css/diagnostics.js'; Error thrown when CSS generation encounters errors or warnings
(depending on on_error and on_warning settings).
Contains the full diagnostics array for programmatic access.
Errordiagnosticstype Array<Diagnostic>
constructortype new (diagnostics: Diagnostic[]): CssGenerationError
diagnosticsDiagnostic[]css_plugin_options.ts view source
CssGeneratorBaseOptions import type {CssGeneratorBaseOptions} from '@fuzdev/fuz_css/css_plugin_options.js'; Combined base options shared by both Gro and Vite plugins. These options work identically in both contexts.
CssLiteralOutput import type {CssLiteralOutput} from '@fuzdev/fuz_css/css_literal.js'; Information needed to generate CSS output for a CSS-literal class.
declarationCSS declaration (property: value;)
type string
selectorFull CSS selector including pseudo-classes/elements
type string
media_wrapperMedia query wrapper if any
type string | null
ancestor_wrapperAncestor wrapper if any
type string | null
CssLiteralParseResult import type {CssLiteralParseResult} from '@fuzdev/fuz_css/css_literal.js'; Result of parsing a CSS-literal class name.
Uses a discriminated union (Result type) because parsing a single class is binary: it either succeeds or fails entirely. This differs from ExtractionResult which uses embedded diagnostics because file extraction can partially succeed (some classes extracted, others have errors).
Uses | null for diagnostics to avoid allocating empty arrays.
Callers should use a guard pattern: if (result.diagnostics) { ... }
css_plugin_options.ts view source
CssOutputOptions import type {CssOutputOptions} from '@fuzdev/fuz_css/css_plugin_options.js'; Options for CSS output generation (theme + base + utilities). Controls how the three CSS layers are combined.
base_css?Base styles (element defaults) configuration.
undefined (default): Use default style.cssnull: Disable base styles entirelystring: Custom CSS to replace defaults(default_css) => string: Callback to modify default CSStype BaseCssOption
// Append custom reset
base_css: (css) => css + '\n\n* { box-sizing: border-box; }'
// Prepend custom styles
base_css: (css) => '.my-reset { margin: 0; }\n\n' + cssvariables?Theme variables configuration.
undefined (default): Use default variables from fuz_cssnull: Disable theme entirelyArray<StyleVariable>: Custom variable definitions (replaces defaults)(defaults) => Array<StyleVariable>: Callback to modify default variablestype VariablesOption
// Override specific variables
variables: (defaults) => defaults.map(v =>
v.name === 'hue_a' ? { ...v, light: '30' } : v
)
// Add custom variables
variables: (defaults) => [
...defaults,
{ name: 'my_brand', light: '#ff6600', dark: '#ff8833' }
]additional_classes?Classes to always include in the output, regardless of detection. Useful for dynamically generated class names that can't be statically extracted.
type Iterable<string>
additional_elements?Additional HTML elements to always include base styles for.
Use 'all' to include all base styles regardless of detection.
Useful for elements generated at runtime via document.createElement().
type Iterable<string> | 'all'
additional_variables?Additional CSS variables to always include in theme output.
Use 'all' to include all theme variables regardless of detection.
Useful for variables referenced dynamically.
type Iterable<string> | 'all'
exclude_classes?Classes to exclude from the output, even if detected. Useful for filtering out false positives from extraction.
type Iterable<string>
exclude_elements?Elements to exclude from base CSS output, even if detected. Useful for filtering out elements you don't want styles for.
type Iterable<string>
exclude_variables?CSS variables to exclude from theme output, even if referenced. Useful for filtering out variables you don't want in the theme.
type Iterable<string>
css_bundled_resolution.ts view source
CssResolutionOptions import type {CssResolutionOptions} from '@fuzdev/fuz_css/css_bundled_resolution.js'; Options for CSS resolution.
style_rule_indexIndex of style.css rules
type StyleRuleIndex
variable_graphDependency graph for theme variables
class_variable_indexIndex mapping classes to variables
detected_elementsHTML elements detected in source files
type Set<string>
detected_classesCSS classes detected in source files
type Set<string>
detected_css_variablesCSS variables directly referenced in source files
type Set<string>
utility_variables_usedCSS variables used by generated utility classes
type Set<string>
additional_elements?Additional elements to always include, or 'all' to include all base styles
type Iterable<string> | 'all'
additional_variables?Additional variables to always include, or 'all' to include all theme variables
type Iterable<string> | 'all'
include_stats?Whether to include resolution statistics in result
type boolean
warn_unmatched_elements?Warn when detected elements have no matching style rules (default false)
type boolean
exclude_elements?Elements to exclude from base CSS output, even if detected.
type Iterable<string>
exclude_variables?CSS variables to exclude from theme output, even if referenced.
type Iterable<string>
explicit_elements?Elements explicitly annotated via @fuz-elements comments.
These produce errors (not warnings) if they have no matching style rules.
type Set<string> | null
explicit_variables?Variables explicitly annotated via @fuz-variables comments.
These produce errors (not warnings) if they don't exist in the theme.
type Set<string> | null
css_bundled_resolution.ts view source
CssResolutionResult import type {CssResolutionResult} from '@fuzdev/fuz_css/css_bundled_resolution.js'; Result from CSS resolution.
theme_cssCSS for theme variables (light and dark)
type string
base_cssCSS for base styles (from style.css)
type string
resolved_variablesAll resolved variable names (including transitive deps)
type Set<string>
included_rule_indicesIndices of rules included from the style index
type Set<number>
included_elementsElement names that were matched
type Set<string>
diagnosticsDiagnostics from resolution
type Array<GenerationDiagnostic>
stats?Resolution statistics (only when include_stats is true)
type CssResolutionStats
css_bundled_resolution.ts view source
CssResolutionStats import type {CssResolutionStats} from '@fuzdev/fuz_css/css_bundled_resolution.js'; Statistics from CSS resolution (only included when include_stats is true).
element_countNumber of HTML elements included
type number
elementsList of HTML element names included
type Array<string>
included_rulesNumber of rules included from style.css
type number
total_rulesTotal number of rules in style.css
type number
variable_countNumber of CSS variables resolved (including transitive deps)
type number
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {darken_95} from '@fuzdev/fuz_css/variables.js'; readonly ["00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100"] import {darken_lighten_variants} from '@fuzdev/fuz_css/variable_data.js'; "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" import type {DarkenLightenVariant} from '@fuzdev/fuz_css/variable_data.js'; CacheDeps import {default_cache_deps} from '@fuzdev/fuz_css/deps_defaults.js'; Default filesystem deps using node:fs/promises.
".fuz/cache/css" import {DEFAULT_CACHE_DIR} from '@fuzdev/fuz_css/css_cache.js'; Default cache directory relative to project root.
Theme import {DEFAULT_THEME} from '@fuzdev/fuz_css/themes.js'; Theme[] import {default_themes} from '@fuzdev/fuz_css/themes.js'; The curated theme registry that theme pickers enumerate.
Registry themes are semantic-tier by policy: they move intent bindings (which palette letter a meaning points at) and levers (chroma scale, hue shift, curves, form knobs) but never the palette hues themselves, so the letters stay a stable vocabulary across every registered theme.
Themes live one module per theme under themes/ and every module ships as
an importable export โ registry membership, not file location, is what
separates builtins from shipped exemplars. Palette-tier themes (rotations,
duotone/monochrome collapses like themes/terminal.ts) and the expressive
exemplars (themes/necromancer.ts, themes/sunset_ember.ts,
themes/brutalish.ts) deliberately stay out of this list.
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; }[] import {default_variables} from '@fuzdev/fuz_css/variables.js'; These are implicitly the variables for the base theme.
See also the empty variables array of the base theme in themes.ts.
(deps: CacheDeps, cache_path: string): Promise<void> import {delete_cached_extraction} from '@fuzdev/fuz_css/css_cache.js'; Deletes a cached extraction file. Silently succeeds if the file doesn't exist.
depsfilesystem deps for dependency injection
cache_pathabsolute path to the cache file
stringPromise<void> example_class_utilities.ts view source
"mb_xs4" import {demo_class} from '@fuzdev/fuz_css/example_class_utilities.js'; *_class suffix (snake_case)
example_class_utilities.ts view source
"mb_xs3" import {DEMO_CLASS} from '@fuzdev/fuz_css/example_class_utilities.js'; SCREAMING_SNAKE_CASE naming
example_class_utilities.ts view source
"mb_xl3" import {demo_class_list} from '@fuzdev/fuz_css/example_class_utilities.js'; *class_list suffix (snake_case)
example_class_utilities.ts view source
"mb_xl5 ml_xl2" import {demo_class_lists} from '@fuzdev/fuz_css/example_class_utilities.js'; *class_lists suffix (snake_case) - plural, multiple classes
example_class_utilities.ts view source
"mb_md" import {demo_class_name} from '@fuzdev/fuz_css/example_class_utilities.js'; *class_name suffix (snake_case)
example_class_utilities.ts view source
"mb_xl ml_lg" import {demo_class_names} from '@fuzdev/fuz_css/example_class_utilities.js'; *class_names suffix (snake_case) - plural, multiple classes
example_class_utilities.ts view source
"mb_xs ml_sm" import {demo_classes} from '@fuzdev/fuz_css/example_class_utilities.js'; *_classes suffix (snake_case) - plural, multiple classes
example_class_utilities.ts view source
"mb_xs5" import {demoClass} from '@fuzdev/fuz_css/example_class_utilities.js'; *Class suffix (camelCase)
example_class_utilities.ts view source
"mb_xs2 ml_xs" import {demoClasses} from '@fuzdev/fuz_css/example_class_utilities.js'; *Classes suffix (camelCase) - plural, multiple classes
example_class_utilities.ts view source
"mb_xl2" import {demoClassList} from '@fuzdev/fuz_css/example_class_utilities.js'; *ClassList suffix (camelCase)
example_class_utilities.ts view source
"mb_xl4 ml_xl" import {demoClassLists} from '@fuzdev/fuz_css/example_class_utilities.js'; *ClassLists suffix (camelCase) - plural, multiple classes
example_class_utilities.ts view source
"mb_sm" import {demoClassName} from '@fuzdev/fuz_css/example_class_utilities.js'; *ClassName suffix (camelCase)
example_class_utilities.ts view source
"mb_lg ml_md" import {demoClassNames} from '@fuzdev/fuz_css/example_class_utilities.js'; *ClassNames suffix (camelCase) - plural, multiple classes
Diagnostic import type {Diagnostic} from '@fuzdev/fuz_css/diagnostics.js'; Union of all diagnostic types.
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {disabled_opacity} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {distance_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {distance_md} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {distance_sm} from '@fuzdev/fuz_css/variables.js'; readonly ["xs", "sm", "md", "lg", "xl"] import {distance_variants} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {distance_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {distance_xs} from '@fuzdev/fuz_css/variables.js'; "lg" | "md" | "sm" | "xs" | "xl" import type {DistanceVariant} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {duration_1} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {duration_2} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {duration_3} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {duration_4} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {duration_5} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {duration_6} from '@fuzdev/fuz_css/variables.js'; css_class_generation.ts view source
(name: string): string import {escape_css_selector} from '@fuzdev/fuz_css/css_class_generation.js'; Escapes special characters in a CSS class name for use in a selector.
CSS selectors require escaping of characters like :, %, (, ), etc.
namestringstring escape_css_selector('display:flex') // 'display\\:flex'
escape_css_selector('opacity:80%') // 'opacity\\:80\\%'
escape_css_selector('nth-child(2n)') // 'nth-child\\(2n\\)'(segments: string[], class_name: string): ModifierExtractionResult import {extract_and_validate_modifiers} from '@fuzdev/fuz_css/css_literal.js'; Extracts and validates modifiers from the beginning of a segments array. Modifiers are consumed from the front until a non-modifier segment is found.
Used by both CSS-literal parsing and modified class interpretation.
segmentsarray of colon-separated segments
string[]class_nameoriginal class name for error messages
stringModifierExtractionResult ModifierExtractionResult with modifiers and remaining segments, or error
(segment: string, prefix: string): string | null import {extract_balanced_parens} from '@fuzdev/fuz_css/modifiers.js'; Extracts content from balanced parentheses after a prefix. Supports nested parens for calc(), clamp(), min(), max(), etc.
segmentthe full segment to parse (e.g., "min-width(calc(100vw - 200px))")
stringprefixthe prefix before the opening paren (e.g., "min-width")
stringstring | null the content inside the balanced parens, or null if no match/unbalanced
extract_balanced_parens("min-width(800px)", "min-width") // "800px"
extract_balanced_parens("min-width(calc(100vw - 20px))", "min-width") // "calc(100vw - 20px)"
extract_balanced_parens("min-width(calc(100vw)", "min-width") // null (unbalanced)css_class_extractor.ts view source
(source: string, options?: ExtractCssClassesOptions): Set<string> | null import {extract_css_classes} from '@fuzdev/fuz_css/css_class_extractor.js'; Unified extraction function that auto-detects file type. Returns just the class names as a Set.
sourcethe file source code
stringoptionsextraction options
{}Set<string> | null set of class names, or null if none found
css_class_extractor.ts view source
(source: string, options?: ExtractCssClassesOptions): ExtractionResult import {extract_css_classes_with_locations} from '@fuzdev/fuz_css/css_class_extractor.js'; Unified extraction function that auto-detects file type. Returns full extraction result with locations and diagnostics.
sourcethe file source code
stringoptionsextraction options
{}ExtractionResult full extraction result with classes, tracked variables, and diagnostics
css_ruleset_parser.ts view source
(css: string, rules: ParsedRule[]): string | null import {extract_css_comment} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Extracts the CSS comment from a ruleset (if any). Looks for comments before the first rule.
cssraw CSS string
stringrulesparsed rules
ParsedRule[]string | null comment text without delimiters, or null if no comment
css_variable_utils.ts view source
(css: string): Set<string> import {extract_css_variables} from '@fuzdev/fuz_css/css_variable_utils.js'; Extracts CSS variable names from a CSS string.
Parses var(--name) patterns and returns the variable names
without the -- prefix. Handles fallback values by extracting
only the primary variable reference.
cssCSS string potentially containing var(--*) references
stringSet<string> set of variable names (without -- prefix)
extract_css_variables('color: var(--text_color);')
// โ Set { 'text_color' }
extract_css_variables('background: var(--bg_1, var(--bg_2));')
// โ Set { 'bg_1', 'bg_2' }
extract_css_variables('padding: 1rem;')
// โ Set {}extract_file_cached.ts view source
(options: ExtractFileCachedOptions): Promise<ExtractFileCachedResult> import {extract_file_cached} from '@fuzdev/fuz_css/extract_file_cached.js'; Loads the cached extraction when its content hash matches, otherwise extracts
fresh. On a miss with caching enabled, cache_path_to_write carries the path
the caller should write.
optionsPromise<ExtractFileCachedResult> css_class_extractor.ts view source
(source: string, file?: string): ExtractionResult import {extract_from_svelte} from '@fuzdev/fuz_css/css_class_extractor.js'; Extracts CSS classes from a Svelte file using AST parsing.
sourcethe Svelte file source code
stringfilefile path for location tracking
string'<unknown>'ExtractionResult extraction result with classes, tracked variables, elements, and diagnostics
css_class_extractor.ts view source
(source: string, file?: string, acorn_plugins?: AcornPlugin[] | undefined): ExtractionResult import {extract_from_ts} from '@fuzdev/fuz_css/css_class_extractor.js'; Extracts CSS classes from a TypeScript/JS file using AST parsing.
sourcethe TS/JS file source code
stringfilefile path for location tracking
string'<unknown>'acorn_plugins?additional acorn plugins (e.g., acorn-jsx for React)
AcornPlugin[] | undefinedExtractionResult extraction result with classes, tracked variables, elements, and diagnostics
css_class_generation.ts view source
(declaration: string): string | null import {extract_primary_property} from '@fuzdev/fuz_css/css_class_generation.js'; Extracts the CSS property name from a single-property declaration string.
Returns null for multi-property declarations (composites with multiple semicolons).
declarationstringstring | null extract_primary_property('border-radius: var(--border_radius_sm);') // 'border-radius'
extract_primary_property('display: flex; align-items: center;') // null(class_name: string): string[] import {extract_segments} from '@fuzdev/fuz_css/css_literal.js'; Extracts colon-separated segments from a class name, handling parentheses. Parenthesized content (like function arguments) is kept intact.
class_namestringstring[] extract_segments('md:hover:display:flex') // โ ['md', 'hover', 'display', 'flex']
extract_segments('nth-child(2n+1):color:red') // โ ['nth-child(2n+1)', 'color', 'red']
extract_segments('width:calc(100%-20px)') // โ ['width', 'calc(100%-20px)']css_class_extractor.ts view source
ExtractCssClassesOptions import type {ExtractCssClassesOptions} from '@fuzdev/fuz_css/css_class_extractor.js'; Options for CSS class extraction.
filename?File path used to determine extraction method (Svelte vs TS) and for location tracking in diagnostics.
type string
acorn_plugins?Additional acorn plugins to use when parsing TS/JS files.
Useful for adding JSX support via acorn-jsx for React projects.
type Array<AcornPlugin>
import jsx from 'acorn-jsx';
extract_css_classes(source, { acorn_plugins: [jsx()] });ExtractedModifiers import type {ExtractedModifiers} from '@fuzdev/fuz_css/css_literal.js'; Extracted modifiers from a class name. Used by both CSS-literal parsing and modified class interpretation.
mediaMedia modifier (breakpoint or feature query)
type ModifierDefinition | null
ancestorAncestor modifier (dark/light)
type ModifierDefinition | null
statesState modifiers in alphabetical order (can have multiple)
type Array<ModifierDefinition>
pseudo_elementPseudo-element modifier (before, after, etc.)
type ModifierDefinition | null
extract_file_cached.ts view source
ExtractFileCachedOptions import type {ExtractFileCachedOptions} from '@fuzdev/fuz_css/extract_file_cached.js'; depstype CacheDeps
contentSource file contents.
type string
content_hashContent hash to validate the cache against.
type string
cache_pathCache file path, or null to skip the cache (CI or caching disabled).
type string | null
filenameFile path, for parser selection and diagnostic locations.
type string
acorn_plugins?type Array<AcornPlugin>
extract_file_cached.ts view source
ExtractFileCachedResult import type {ExtractFileCachedResult} from '@fuzdev/fuz_css/extract_file_cached.js'; extractiontype ExtractionData
from_cacheWhether the extraction came from cache.
type boolean
cache_path_to_writeCache file to write (miss with caching enabled), or null.
type string | null
css_class_extractor.ts view source
ExtractionData import type {ExtractionData} from '@fuzdev/fuz_css/css_class_extractor.js'; Cacheable extraction data fields shared between extraction and caching layers.
Uses null instead of empty collections to avoid allocation overhead.
classesMap from class name to locations where it was used, or null if none. Keys = unique classes, values = locations for diagnostics/IDE integration.
type Map<string, Array<SourceLocation>> | null
explicit_classesClasses explicitly annotated via @fuz-classes comments, or null if none.
These produce errors if they can't be resolved during generation.
type Set<string> | null
diagnosticsDiagnostics from the extraction phase, or null if none
type Array<ExtractionDiagnostic> | null
elementsHTML elements found in the file, or null if none. Used for including only the style.css rules needed.
type Set<string> | null
explicit_elementsElements explicitly annotated via @fuz-elements comments, or null if none.
These should produce errors if they have no matching style rules.
type Set<string> | null
explicit_variablesVariables explicitly annotated via @fuz-variables comments, or null if none.
These produce errors if they can't be resolved to theme variables.
type Set<string> | null
ExtractionDiagnostic import type {ExtractionDiagnostic} from '@fuzdev/fuz_css/diagnostics.js'; Diagnostic from the extraction phase.
phasetype 'extraction'
locationtype SourceLocation
css_class_extractor.ts view source
ExtractionResult import type {ExtractionResult} from '@fuzdev/fuz_css/css_class_extractor.js'; Extraction result with classes mapped to their source locations.
Extends ExtractionData with tracked_vars which is internal to AST walking.
Uses embedded diagnostics (rather than a Result type) because file extraction can partially succeed: some classes may be extracted while others produce errors. This differs from CssLiteralParseResult which uses a discriminated union because single-class parsing is binary success/failure.
tracked_varsVariables that were used in class contexts, or null if none
type Set<string> | null
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {fg_95} from '@fuzdev/fuz_css/variables.js'; FileFilter import type {FileFilter} from '@fuzdev/fuz_css/file_filter.js'; Filter function to determine which files to process for CSS class extraction.
(call)type (path: string): boolean
pathstringboolean(path: string): boolean import {filter_file_default} from '@fuzdev/fuz_css/file_filter.js'; Default file filter for CSS class extraction.
Includes .svelte, .html, .ts, .js, .tsx, .jsx files.
Excludes test files (.test.ts, .spec.ts) and generated files (.gen.ts).
Excludes files in test directories (/test/, /tests/, /__tests__/, /__mocks__/).
pathstringboolean css_ruleset_parser.ts view source
(selector: string, class_pos: number): number import {find_compound_end} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Finds the end position of the compound selector containing the class at class_pos. A compound selector is a sequence of simple selectors without combinators.
selectorthe CSS selector string
stringclass_posposition of the . in .class_name
numbernumber position where state modifiers should be inserted (before any pseudo-element)
(graph: VariableDependencyGraph, name: string): string | null import {find_similar_variable} from '@fuzdev/fuz_css/variable_graph.js'; Finds the most similar variable in the graph to the given name. Returns null if no variable exceeds the similarity threshold.
graphthe variable dependency graph
namethe variable name to find similar matches for
stringstring | null the most similar variable name, or null if none are similar enough
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_family_mono} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_family_sans} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_family_serif} from '@fuzdev/fuz_css/variables.js'; readonly ["font_family_sans", "font_family_serif", "font_family_mono"] import {font_family_variants} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_md} from '@fuzdev/fuz_css/variables.js'; string[] import {font_size_names} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_sm} from '@fuzdev/fuz_css/variables.js'; readonly ["xs", "sm", "md", "lg", "xl", "xl2", "xl3", "xl4", "xl5", "xl6", "xl7", "xl8", "xl9"] import {font_size_variants} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xl2} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xl3} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xl4} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xl5} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xl6} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xl7} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xl8} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xl9} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_size_xs} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {font_weight} from '@fuzdev/fuz_css/variables.js'; "font_family_sans" | "font_family_serif" | "font_family_mono" import type {FontFamilyVariant} from '@fuzdev/fuz_css/variable_data.js'; (value: string): string import {format_css_value} from '@fuzdev/fuz_css/css_literal.js'; Formats a CSS-literal value for CSS output.
~ with space!importantvalueraw value from class name
stringstring formatted CSS value
(d: Diagnostic): string import {format_diagnostic} from '@fuzdev/fuz_css/diagnostics.js'; Formats a diagnostic for display.
dstring css_class_generators.ts view source
(value: string): string import {format_dimension_value} from '@fuzdev/fuz_css/css_class_generators.js'; Format width/height values for CSS (handles 0, auto, percentages, pixels, content values, and CSS variables). Used by width and height properties.
valuestringstring css_class_generators.ts view source
(value: string): string import {format_spacing_value} from '@fuzdev/fuz_css/css_class_generators.js'; Format spacing values for CSS (handles 0, auto, percentages, pixels, and CSS variables). Used by margin, padding, gap, inset, top/right/bottom/left, etc.
valuestringstring css_class_generators.ts view source
(str: string): string import {format_variable_name} from '@fuzdev/fuz_css/css_class_generators.js'; strstringstring (cached: CachedExtraction): ExtractionData import {from_cached_extraction} from '@fuzdev/fuz_css/css_cache.js'; Converts a cached extraction back to the runtime format. Preserves null semantics (null = empty).
cachedcached extraction data
ExtractionData example_class_utilities.ts view source
"shadow_lg" import {fromComment} from '@fuzdev/fuz_css/example_class_utilities.js'; Comment hint - extracted via @fuz-classes, NOT via variable name pattern.
Variable name fromComment doesn't end in class/classes/className.
vite_plugin_fuz_css.ts view source
"/* generated by vite_plugin_fuz_css */" import {FUZ_CSS_BANNER} from '@fuzdev/fuz_css/vite_plugin_fuz_css.js'; Banner comment at the top and bottom of generated CSS output.
"@layer fuz.base, fuz.theme, fuz.utilities;" import {FUZ_LAYER_ORDER_STATEMENT} from '@fuzdev/fuz_css/theme.js'; The fuz_css cascade layer order: defaults (variables + element styles) in
fuz.base, theme overrides in fuz.theme, generated utility classes in
fuz.utilities. Layer order beats specificity, so theme overrides win over
the statically imported defaults regardless of head insertion order, and
consumers' unlayered styles beat everything.
(options?: GenFuzCssOptions): Gen import {gen_fuz_css} from '@fuzdev/fuz_css/gen_fuz_css.js'; options{}Gen style_rule_parser.ts view source
(index: StyleRuleIndex, included_indices: Set<number>): string import {generate_base_css} from '@fuzdev/fuz_css/style_rule_parser.js'; Generates CSS from a StyleRuleIndex with only the included rules.
indexthe StyleRuleIndex
included_indicesset of rule indices to include
Set<number>string CSS string with only included rules, in original order
css_class_generators.ts view source
(values: Iterable<string>, formatter?: ((value: string) => string) | undefined): Record<string, CssClassDefinition> import {generate_border_radius_corners} from '@fuzdev/fuz_css/css_class_generators.js'; Generate border radius corner classes for all four corners. Creates classes for top-left, top-right, bottom-left, bottom-right corners.
valuesthe values to generate classes for
Iterable<string>formatter?optional function to format values
((value: string) => string) | undefinedRecord<string, CssClassDefinition> css_bundled_resolution.ts view source
(result: CssResolutionResult, utility_css: string, options?: GenerateBundledCssOptions): string import {generate_bundled_css} from '@fuzdev/fuz_css/css_bundled_resolution.js'; Generates combined CSS output from resolution result.
resultresolution result from resolve_css
utility_cssgenerated utility CSS (from generate_classes_css)
stringoptionsoutput options
{}string combined CSS string
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.
templatefunction that generates CSS from values, can return null to skip
ClassTemplateFn<T1, T2, T3>valuesprimary iterable of values
Iterable<T1>secondary?optional second dimension (makes it multiplicative)
Iterable<T2> | undefinedtertiary?optional third dimension for even more combinations
Iterable<T3> | undefinedRecord<string, CssClassDefinition> generate_classes<T1 = string, T2 = string, T3 = string>T1stringT2stringT3string// Simple list
generate_classes(
v => ({ name: `position_${v}`, css: `position: ${v};` }),
['static', 'relative', 'absolute']
)// Two dimensions (multiplicative)
generate_classes(
(dir, size) => ({ name: `m${dir}_${size}`, css: `margin-${dir}: ${size};` }),
['top', 'bottom'],
['0', '1px', '2px']
)css_class_generation.ts view source
(options: GenerateClassesCssOptions): GenerateClassesCssResult import {generate_classes_css} from '@fuzdev/fuz_css/css_class_generation.js'; optionsGenerateClassesCssResult (options: GenerateCssOptions): GenerateCssResult import {generate_css} from '@fuzdev/fuz_css/generate_css.js'; Runs the full CSS-generation pipeline: utility classes via
generate_classes_css, then โ when base or theme output is enabled and
bundled resources are available โ base styles and theme variables via
resolve_css + generate_bundled_css. Returns the combined CSS and every
diagnostic produced along the way.
optionsGenerateCssResult (output: CssLiteralOutput): string import {generate_css_literal_simple} from '@fuzdev/fuz_css/css_literal.js'; Generates simple CSS for a CSS-literal class (without grouping). Used by the interpreter for basic output.
outputthe CSS-literal output info
string CSS string for this class
(parsed: ParsedCssLiteral): string import {generate_declaration} from '@fuzdev/fuz_css/css_literal.js'; Generates the CSS declaration for a parsed CSS-literal class.
parsedstring css_class_generators.ts view source
(property: string, values: Iterable<string>, formatter?: ((v: string) => string) | undefined): Record<string, CssClassDefinition> import {generate_directional_classes} from '@fuzdev/fuz_css/css_class_generators.js'; Generate directional classes for properties like margin and padding. Creates classes for all directions: base, top, right, bottom, left, x (horizontal), y (vertical).
propertythe base CSS property name (e.g. 'margin', 'padding')
stringvaluesthe values to generate classes for
Iterable<string>formatter?optional function to format values (defaults to identity)
((v: string) => string) | undefinedRecord<string, CssClassDefinition> css_ruleset_parser.ts view source
(original_ruleset: string, original_class: string, new_class_escaped: string, state_css: string, pseudo_element_css: string, media_wrapper: string | null, ancestor_wrapper: string | null): ModifiedRulesetResult import {generate_modified_ruleset} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Generates CSS for a modified ruleset with applied modifiers.
Conflict handling is per-selector within selector lists:
.plain:hover, .plain:active with hover: modifier, only .plain:hover skips
the :hover addition; .plain:active still gets :hover appended.:hover:focus, each is checked individually; conflicting
states are skipped while non-conflicting ones are still applied.original_rulesetthe original CSS ruleset string
stringoriginal_classthe base class name
stringnew_class_escapedthe escaped new class name with modifiers
stringstate_cssstate modifier CSS (e.g., ":hover" or ":hover:focus")
stringpseudo_element_csspseudo-element modifier CSS (e.g., "::before")
stringmedia_wrappermedia query wrapper (e.g., "@media (width >= 48rem)")
string | nullancestor_wrapperancestor wrapper (e.g., ":root.dark")
string | nullModifiedRulesetResult result with generated CSS and information about skipped modifiers
css_class_generators.ts view source
(property: string, values: Iterable<string>, formatter?: ((value: string) => string) | undefined, prefix?: string): Record<string, CssClassDefinition> import {generate_property_classes} from '@fuzdev/fuz_css/css_class_generators.js'; Generate classes for a single CSS property with various values.
propertythe CSS property name (e.g. 'font-size', 'gap')
stringvaluesthe values to generate classes for
Iterable<string>formatter?optional function to format values (e.g. v => var(--space_${v}))
((value: string) => string) | undefinedprefixoptional class name prefix (defaults to property with dashes replaced by underscores)
stringformat_variable_name(property)Record<string, CssClassDefinition> (escaped_class_name: string, parsed: ParsedCssLiteral): string import {generate_selector} from '@fuzdev/fuz_css/css_literal.js'; Generates the CSS selector for a parsed CSS-literal class. Includes state pseudo-classes and pseudo-element in the selector.
escaped_class_namestringparsedstring css_class_generators.ts view source
(sizes: Iterable<string>, alpha_mapping: Record<string, string>): Record<string, CssClassDefinition> import {generate_shadow_classes} from '@fuzdev/fuz_css/css_class_generators.js'; Generate shadow classes for various shadow types and sizes. Creates classes for regular, top, bottom, inset, inset-top, and inset-bottom shadows. Each shadow uses color-mix with alpha values for transparency.
sizesthe shadow size variants (xs, sm, md, lg, xl)
Iterable<string>alpha_mappingmapping of sizes to alpha numbers (1-5)
Record<string, string>Record<string, CssClassDefinition> (graph: VariableDependencyGraph, resolved_variables: Set<string>): { light_css: string; dark_css: string; } import {generate_theme_css} from '@fuzdev/fuz_css/variable_graph.js'; Generates theme CSS for the resolved variables.
graphthe variable dependency graph
resolved_variablesset of variable names to include
Set<string>{ light_css: string; dark_css: string; } object with light_css and dark_css strings
css_bundled_resolution.ts view source
GenerateBundledCssOptions import type {GenerateBundledCssOptions} from '@fuzdev/fuz_css/css_bundled_resolution.js'; Options for bundled CSS output generation.
include_theme?Include theme variables section.
type boolean
trueinclude_base?Include base styles section.
type boolean
trueinclude_utilities?Include utility classes section.
type boolean
truecss_class_generation.ts view source
GenerateClassesCssOptions import type {GenerateClassesCssOptions} from '@fuzdev/fuz_css/css_class_generation.js'; class_namestype Iterable<string>
class_definitionstype Record<string, CssClassDefinition | undefined>
interpreterstype Array<CssClassDefinitionInterpreter>
css_propertiesValid CSS properties for literal validation, or null to skip validation
type Set<string> | null
log?type Logger
class_locations?type Map<string, Array<SourceLocation> | null>
explicit_classes?Classes that were explicitly annotated (via @fuz-classes or additional_classes).
Unresolved explicit classes produce warnings.
type Set<string> | null
css_class_generation.ts view source
GenerateClassesCssResult import type {GenerateClassesCssResult} from '@fuzdev/fuz_css/css_class_generation.js'; Result from CSS class generation.
csstype string
diagnosticstype Array<GenerationDiagnostic>
variables_usedCSS variables used by the generated classes (without -- prefix)
type Set<string>
GenerateCssOptions import type {GenerateCssOptions} from '@fuzdev/fuz_css/generate_css.js'; Inputs to generate_css. The first group mirrors the shape returned by
CssClasses.get_all() plus its diagnostics, so callers can forward it
directly.
all_classesAll detected class names, already exclude-filtered.
type Set<string>
all_classes_with_locationsSource locations per class, for diagnostics.
type Map<string, Array<SourceLocation> | null>
explicit_classesClasses from @fuz-classes/additional_classes; unresolved ones error.
type Set<string> | null
all_elementsAll detected HTML element names.
type Set<string>
explicit_elementsElements from @fuz-elements; unresolved ones error.
type Set<string> | null
explicit_variablesVariables from @fuz-variables; unresolved ones error.
type Set<string> | null
extraction_diagnosticsDiagnostics accumulated during extraction.
type Array<Diagnostic>
detected_css_variablesCSS variables referenced in source, already filtered to known theme
variables by the caller. @fuz-variables are merged in here automatically.
type Set<string>
class_definitionstype Record<string, CssClassDefinition | undefined>
interpreterstype Array<CssClassDefinitionInterpreter>
css_propertiesValid CSS properties for literal validation, or null to skip.
type Set<string> | null
include_basetype boolean
include_themetype boolean
resourcesBundled resources, or null for utility-only mode.
type BundledCssResources | null
additional_elements?type Iterable<string> | 'all'
additional_variables?type Iterable<string> | 'all'
exclude_elements?type Iterable<string>
exclude_variables?type Iterable<string>
log?Optional logger; only used to emit resolution stats when include_stats.
type Logger
include_stats?Whether to compute and log resolution statistics.
type boolean
GenerateCssResult import type {GenerateCssResult} from '@fuzdev/fuz_css/generate_css.js'; cssFinal CSS without banner comments โ callers add their own.
type string
diagnosticsExtraction + generation + resolution diagnostics, unfiltered.
type Array<Diagnostic>
css_class_generators.ts view source
GeneratedClassResult import type {GeneratedClassResult} from '@fuzdev/fuz_css/css_class_generators.js'; GenerationDiagnostic import type {GenerationDiagnostic} from '@fuzdev/fuz_css/diagnostics.js'; Diagnostic from the generation phase.
phasetype 'generation'
leveltype 'error' | 'warning'
messagetype string
suggestiontype string | null
identifierThe class name, element name, or variable name this diagnostic refers to
type string
locationsSource locations where this class was used, or null if from additional_classes
type Array<SourceLocation> | null
GenFuzCssOptions import type {GenFuzCssOptions} from '@fuzdev/fuz_css/gen_fuz_css.js'; Options for the Gro CSS generator. Extends the shared base options with Gro-specific settings.
include_stats?Whether to include file and resolution statistics in the output.
type boolean
falseproject_root?Project root directory. Source paths must be under this directory.
type string
process.cwd()concurrency?Max concurrent file processing (cache read + extract). Bottlenecked by CPU-bound AST parsing.
type number
8cache_io_concurrency?Max concurrent cache writes and deletes (I/O-bound).
type number
50(): string[] import {get_all_modifier_names} from '@fuzdev/fuz_css/modifiers.js'; Gets all modifier names for error message suggestions.
string[] (graph: VariableDependencyGraph): Set<string> import {get_all_variable_names} from '@fuzdev/fuz_css/variable_graph.js'; Gets all variable names from the graph.
graphthe variable dependency graph
Set<string> set of all variable names in the graph
(source_path: string, cache_dir: string, project_root: string): string import {get_cache_path} from '@fuzdev/fuz_css/css_cache.js'; Computes the cache file path for a source file.
Cache structure mirrors source tree: src/lib/Foo.svelte โ .fuz/cache/css/src/lib/Foo.svelte.json
source_pathabsolute path to the source file
stringcache_dirabsolute path to the cache directory
stringproject_rootnormalized project root (must end with /)
stringstring class_variable_index.ts view source
(index: CssClassVariableIndex, class_name: string): Set<string> | null import {get_class_variables} from '@fuzdev/fuz_css/class_variable_index.js'; Gets variables used by a specific class.
indexthe class variable index
class_namename of the class to lookup
stringSet<string> | null set of variable names (without -- prefix), or null if class not found
class_variable_index.ts view source
(index: CssClassVariableIndex, variable_name: string): string[] import {get_classes_using_variable} from '@fuzdev/fuz_css/class_variable_index.js'; Gets all class names that use a specific variable.
indexthe class variable index
variable_namevariable name to search for (without -- prefix)
stringstring[] array of class names that use this variable
(file_id: string, cache_dir: string, project_root: string): string import {get_file_cache_path} from '@fuzdev/fuz_css/css_cache.js'; Computes cache path for a file, handling both internal and external paths.
Internal files use relative paths mirroring source tree.
External files (outside project root) use hashed absolute paths in _external/.
file_idabsolute path to the source file
stringcache_dirabsolute path to the cache directory
stringproject_rootnormalized project root (must end with /)
stringstring style_rule_parser.ts view source
(index: StyleRuleIndex, detected_elements: Set<string>, detected_classes: Set<string>): Set<number> import {get_matching_rules} from '@fuzdev/fuz_css/style_rule_parser.js'; Gets rules that should be included based on detected elements and classes.
indexthe StyleRuleIndex to query
detected_elementsset of HTML element names found in source
Set<string>detected_classesset of CSS class names found in source
Set<string>Set<number> set of rule indices to include
(segment: string): (ModifierDefinition & { is_arbitrary?: boolean | undefined; }) | null import {get_modifier} from '@fuzdev/fuz_css/modifiers.js'; Gets the modifier definition for a segment. Handles both static modifiers and dynamic patterns (arbitrary breakpoints, parameterized states).
segmentstring(ModifierDefinition & { is_arbitrary?: boolean | undefined; }) | null the modifier definition or null if not a known modifier
css_variable_utils.ts view source
(css: string): boolean import {has_css_variables} from '@fuzdev/fuz_css/css_variable_utils.js'; Checks if a CSS string contains any CSS variable references.
More efficient than extract_css_variables when you only need to know if variables exist, not what they are.
cssCSS string to check
stringboolean true if the string contains var(--*) patterns
(modifiers: ExtractedModifiers): boolean import {has_extracted_modifiers} from '@fuzdev/fuz_css/css_literal.js'; Checks if extracted modifiers contain any modifier. Useful for tooling that needs to detect modified classes.
modifiersboolean css_class_extractor.ts view source
(data: ExtractionData): boolean import {has_extraction_data} from '@fuzdev/fuz_css/css_class_extractor.js'; Returns true if the extraction data has any non-null fields.
databoolean (parsed: ParsedCssLiteral): boolean import {has_modifiers} from '@fuzdev/fuz_css/css_literal.js'; Checks if a parsed CSS literal has any modifiers.
parsedboolean (graph: VariableDependencyGraph, name: string): boolean import {has_variable} from '@fuzdev/fuz_css/variable_graph.js'; Checks if a variable exists in the graph.
graphthe variable dependency graph
namevariable name to check (without -- prefix)
stringboolean true if the variable exists in the graph
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {heading_font_family} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_a} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_accent} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_b} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_c} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_caution} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_d} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_e} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_f} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_g} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_h} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_i} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_info} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_j} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_negative} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_neutral} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_positive} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {hue_shift_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {icon_size_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {icon_size_md} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {icon_size_sm} from '@fuzdev/fuz_css/variables.js'; readonly ["xs", "sm", "md", "lg", "xl", "xl2", "xl3"] import {icon_size_variants} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {icon_size_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {icon_size_xl2} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {icon_size_xl3} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {icon_size_xs} from '@fuzdev/fuz_css/variables.js'; { icon_size_xs: string; icon_size_sm: string; icon_size_md: string; icon_size_lg: string; icon_size_xl: string; icon_size_xl2: string; icon_size_xl3: string; } import {icon_sizes} from '@fuzdev/fuz_css/variable_data.js'; "lg" | "md" | "sm" | "xs" | "xl" | "xl2" | "xl3" import type {IconSizeVariant} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {info_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {input_fill} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {input_height} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {input_height_compact} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {input_padding_x} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {input_padding_y} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {input_width_min} from '@fuzdev/fuz_css/variables.js'; readonly ["00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100"] import {intensity_variants} from '@fuzdev/fuz_css/variable_data.js'; "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" import type {IntensityVariant} from '@fuzdev/fuz_css/variable_data.js'; readonly ["accent", "positive", "negative", "caution", "info"] import {intent_variants} from '@fuzdev/fuz_css/variable_data.js'; "accent" | "positive" | "negative" | "caution" | "info" import type {IntentVariant} from '@fuzdev/fuz_css/variable_data.js'; The semantic color intents that derive full scales through the shared
ramps. The neutral is also an intent (--hue_neutral) but is absent here
because its scales are shade_* and text_* rather than a
neutral_00โneutral_100 family.
(class_name: string, escaped_class_name: string, css_properties: Set<string> | null): InterpretCssLiteralResult import {interpret_css_literal} from '@fuzdev/fuz_css/css_literal.js'; Interprets a CSS-literal class and returns CSS generation info.
Callers should first check is_possible_css_literal() to filter non-CSS-literal classes.
class_namethe class name to interpret
stringescaped_class_namethe CSS-escaped version of the class name
stringcss_propertiesSet of valid CSS properties from load_css_properties()
Pass null to skip property validation.
Set<string> | nullInterpretCssLiteralResult result with output and warnings on success, or error on failure
InterpretCssLiteralResult import type {InterpretCssLiteralResult} from '@fuzdev/fuz_css/css_literal.js'; Result of interpreting a CSS-literal class.
Uses | null for warnings to avoid allocating empty arrays.
Callers should use a guard pattern: if (result.warnings) { ... }
InterpreterDiagnostic import type {InterpreterDiagnostic} from '@fuzdev/fuz_css/diagnostics.js'; Diagnostic from CSS class interpretation. Used internally by interpreters; converted to GenerationDiagnostic with locations.
leveltype 'error' | 'warning'
messagetype string
identifierThe class name, element name, or variable name this diagnostic refers to
type string
suggestiontype string | null
(class_name: string): boolean import {is_possible_css_literal} from '@fuzdev/fuz_css/css_literal.js'; Checks if a class name could be a CSS-literal class. Quick check before attempting full parse.
class_namethe class name to check
stringboolean true if it could be CSS-literal syntax
css_ruleset_parser.ts view source
(rules: ParsedRule[], escaped_class_name: string): boolean import {is_single_selector_ruleset} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Checks if a ruleset has only a single simple selector (just the class name). Used to detect rulesets that could be converted to declaration format.
rulesparsed rules from the ruleset
ParsedRule[]escaped_class_namethe CSS-escaped class name (e.g., "box" or "hover\\:card")
stringboolean true if there's exactly one rule with selector ".class_name"
(property: string, properties: Set<string> | null): boolean import {is_valid_css_property} from '@fuzdev/fuz_css/css_literal.js'; Checks if a property name is a valid CSS property. Custom properties (--*) always return true.
propertythe CSS property name to validate
stringpropertiesSet of valid CSS properties from load_css_properties()
Pass null to skip validation.
Set<string> | nullboolean true if valid CSS property or custom property
{ axis: KnobAxis; title: string; }[] import {knob_axes} from '@fuzdev/fuz_css/knobs.js'; The theme-space axes in editor display order, with display titles.
KnobAxis import type {KnobAxis} from '@fuzdev/fuz_css/knobs.js'; The axis of the theme-space taxonomy a knob moves.
KnobKind import type {KnobKind} from '@fuzdev/fuz_css/knobs.js'; The value kind of a knob, determining the editor widget and how the value
validates. text is the unenriched fallback kind.
KnobLeverage import type {KnobLeverage} from '@fuzdev/fuz_css/knobs.js'; Leverage tier: how much of the system a knob reshapes, which the editor
renders as control size (lg headline knobs down to sm escape hatches).
KnobTier import type {KnobTier} from '@fuzdev/fuz_css/knobs.js'; The two-tier theme policy: semantic-tier knobs (intent bindings + levers) are safe for registry themes; palette-tier knobs (the letter hues) mark a theme as an exemplar.
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {lighten_95} from '@fuzdev/fuz_css/variables.js'; LightnessRampKnobs import type {LightnessRampKnobs} from '@fuzdev/fuz_css/ramps.js'; Knobs for a pow-curve lightness ramp. The endpoints are the ramp's own 00/100 stops, so light and dark schemes differ only in values, never in formula โ no direction flag needed.
lightness_00OKLCH lightness at stop 00, in [0, 1].
type number
lightness_100OKLCH lightness at stop 100, in [0, 1].
type number
curveExponent bending the ramp between the endpoints; 1 is linear.
type number
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {line_height_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {line_height_md} from '@fuzdev/fuz_css/variables.js'; string[] import {line_height_names} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {line_height_sm} from '@fuzdev/fuz_css/variables.js'; readonly ["xs", "sm", "md", "lg", "xl"] import {line_height_variants} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {line_height_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {line_height_xs} from '@fuzdev/fuz_css/variables.js'; (c: number): number import {linear_component_to_srgb} from '@fuzdev/fuz_css/oklch.js'; Converts a linear-light sRGB component to gamma-encoded in [0, 1].
cnumbernumber "lg" | "md" | "sm" | "xs" | "xl" import type {LineHeightVariant} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {link_color} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {link_color_selected} from '@fuzdev/fuz_css/variables.js'; LiteralResolutionResult import type {LiteralResolutionResult} from '@fuzdev/fuz_css/css_literal.js'; Result of attempting to resolve a CSS literal for composition.
(deps: CacheDeps, cache_path: string): Promise<CachedExtraction | null> import {load_cached_extraction} from '@fuzdev/fuz_css/css_cache.js'; Loads a cached extraction result from disk.
Returns null if the cache is missing, corrupted, or has a version mismatch.
This makes the cache self-healing: any error triggers re-extraction.
depsfilesystem deps for dependency injection
cache_pathabsolute path to the cache file
stringPromise<CachedExtraction | null> (): Promise<Set<string>> import {load_css_properties} from '@fuzdev/fuz_css/css_literal.js'; Loads CSS properties from @webref/css.
Returns a fresh Set each time - callers should cache the result if needed.
Promise<Set<string>> style_rule_parser.ts view source
(deps: CacheDeps, style_css_path?: string | undefined): Promise<string> import {load_default_style_css} from '@fuzdev/fuz_css/style_rule_parser.js'; Loads the raw default style.css content.
depsfilesystem deps for dependency injection
style_css_path?string | undefinedPromise<string> promise resolving to the CSS string
style_rule_parser.ts view source
(deps: CacheDeps, style_css_path?: string | undefined): Promise<StyleRuleIndex> import {load_style_rule_index} from '@fuzdev/fuz_css/style_rule_parser.js'; Loads and parses the default style.css file.
depsfilesystem deps for dependency injection
style_css_path?string | undefinedPromise<StyleRuleIndex> promise resolving to StyleRuleIndex
example_class_utilities.ts view source
"mt_md" import {logicalClass} from '@fuzdev/fuz_css/example_class_utilities.js'; Logical AND - truthy value extracted
Map<string, ModifierDefinition> import {MEDIA_MODIFIERS} from '@fuzdev/fuz_css/modifiers.js'; Map of media modifier names to their CSS output
css_class_definitions.ts view source
(user_definitions: Record<string, CssClassDefinition | undefined> | undefined, include_defaults: boolean): Record<string, CssClassDefinition | undefined> import {merge_class_definitions} from '@fuzdev/fuz_css/css_class_definitions.js'; Merges user class definitions with the built-in defaults. User definitions take precedence over defaults with the same name.
user_definitionsuser-provided class definitions to merge
Record<string, CssClassDefinition | undefined> | undefinedinclude_defaultswhether to include built-in definitions
booleanRecord<string, CssClassDefinition | undefined> merged class definitions
Error - if `include_defaults` is false and no user definitions providedcss_class_interpreters.ts view source
CssClassDefinitionInterpreter import {modified_class_interpreter} from '@fuzdev/fuz_css/css_class_interpreters.js'; Interpreter for modified token/composite classes (e.g., hover:p_md, md:box, dark:hover:panel).
Applies modifiers to existing declaration-based or ruleset-based classes.
This interpreter must run BEFORE css_literal_interpreter to handle cases like hover:box
where box is a known class (not a CSS property).
css_ruleset_parser.ts view source
ModifiedRulesetResult import type {ModifiedRulesetResult} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Result from generating a modified ruleset.
Uses | null for skipped_modifiers to avoid allocating empty arrays.
Callers should use a guard pattern: if (result.skipped_modifiers) { ... }
cssThe generated CSS
type string
skipped_modifiersInformation about modifiers that were skipped for certain rules, or null if none
type Array<SkippedModifierInfo> | null
css_ruleset_parser.ts view source
ModifiedSelectorGroupResult import type {ModifiedSelectorGroupResult} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Result from modifying a selector group with conflict detection.
Uses | null for skipped_modifiers to avoid allocating empty arrays.
Callers should use a guard pattern: if (result.skipped_modifiers) { ... }
selectorThe modified selector list as a string
type string
skipped_modifiersInformation about modifiers skipped for specific selectors, or null if none
type Array<SkippedModifierInfo> | null
ModifierDefinition import type {ModifierDefinition} from '@fuzdev/fuz_css/modifiers.js'; Definition for a single modifier.
nameThe prefix used in class names (e.g., 'hover', 'md', 'dark')
type string
typeType determines position in modifier order and CSS output behavior
type ModifierType
cssThe CSS output - wrapper for media/ancestor, suffix for state/pseudo-element
type string
order?Optional ordering within type (for breakpoints, sorted by this value)
type number
ModifierExtractionResult import type {ModifierExtractionResult} from '@fuzdev/fuz_css/css_literal.js'; Result of extracting modifiers from segments.
ModifierDefinition[] import {MODIFIERS} from '@fuzdev/fuz_css/modifiers.js'; All modifier definitions in a single declarative structure. Adding a new modifier requires only adding to this array.
ModifierType import type {ModifierType} from '@fuzdev/fuz_css/modifiers.js'; Type of modifier determining its position in the class name and CSS output.
Order in class names: [media:][ancestor:][state...:][pseudo-element:]property:value
css_ruleset_parser.ts view source
(selector_group: string, original_class: string, new_class_escaped: string, states_to_add: string[], pseudo_element_css: string): ModifiedSelectorGroupResult import {modify_selector_group} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Modifies a selector list (comma-separated selectors) to add modifiers. Handles conflicts per-selector: if one selector in a list has a conflict, only that selector skips the modifier; other selectors still get it.
selector_groupCSS selector list (may contain commas)
stringoriginal_classthe base class name
stringnew_class_escapedthe escaped new class name
stringstates_to_addindividual state modifiers (e.g., [":hover", ":focus"])
string[]pseudo_element_csspseudo-element modifier CSS to insert (e.g., "::before")
stringModifiedSelectorGroupResult result with modified selector list and information about skipped modifiers
css_ruleset_parser.ts view source
(selector: string, original_class: string, new_class_escaped: string, state_css: string, pseudo_element_css: string): string import {modify_single_selector} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Modifies a single CSS selector to add modifiers.
selectora single CSS selector (not a selector list)
stringoriginal_classthe base class name (e.g., "menuitem")
stringnew_class_escapedthe escaped new class name (e.g., "hover\\:menuitem")
stringstate_cssstate modifier CSS to insert (e.g., ":hover")
stringpseudo_element_csspseudo-element modifier CSS to insert (e.g., "::before")
stringstring modified selector
modify_single_selector('.menuitem', 'menuitem', 'hover\\:menuitem', ':hover', '')
// โ '.hover\\:menuitem:hover'
modify_single_selector('.menuitem .icon', 'menuitem', 'hover\\:menuitem', ':hover', '')
// โ '.hover\\:menuitem:hover .icon'
modify_single_selector('.menuitem.selected', 'menuitem', 'hover\\:menuitem', ':hover', '')
// โ '.hover\\:menuitem.selected:hover'{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {negative_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {neutral_chroma} from '@fuzdev/fuz_css/variables.js'; Record<"light" | "dark", number> import {NEUTRAL_CHROMA} from '@fuzdev/fuz_css/ramps.js'; Peak chroma of the neutral (shade/text) scales. The neutral rides the palette's chroma shape scaled to this peak, which preserves the old behavior of constant HSL saturation: strong tint at mid lightness, nearly untinted near white and black.
number import {NEUTRAL_HUE} from '@fuzdev/fuz_css/ramps.js'; Default OKLCH hue angle of the neutral intent. In CSS the knob chains to the
palette (--hue_neutral: var(--hue_f)), porting the old tint_hue
behavior; this constant mirrors that default numerically.
style_rule_parser.ts view source
NonCoreStyleRule import type {NonCoreStyleRule} from '@fuzdev/fuz_css/style_rule_parser.js'; A non-core style rule included only when its elements/classes are detected.
is_coretype false
core_reasontype null
RegExp import {NTH_CHILD_PATTERN} from '@fuzdev/fuz_css/modifiers.js'; Pattern for parameterized nth-child: nth-child(2n+1):
RegExp import {NTH_LAST_CHILD_PATTERN} from '@fuzdev/fuz_css/modifiers.js'; Pattern for parameterized nth-last-child: nth-last-child(2n+1):
RegExp import {NTH_LAST_OF_TYPE_PATTERN} from '@fuzdev/fuz_css/modifiers.js'; Pattern for parameterized nth-last-of-type: nth-last-of-type(2n):
RegExp import {NTH_OF_TYPE_PATTERN} from '@fuzdev/fuz_css/modifiers.js'; Pattern for parameterized nth-of-type: nth-of-type(2n):
readonly ["00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100"] import {numeric_scale_variants} from '@fuzdev/fuz_css/variable_data.js'; readonly ["min", "00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100", "max"] import {numeric_scale_with_extremes} from '@fuzdev/fuz_css/variable_data.js'; "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" import type {NumericScaleVariant} from '@fuzdev/fuz_css/variable_data.js'; The standard numeric scale used across multiple variable families. Provides 13 steps from 00 (surface/subtle) to 100 (contrast/bold).
"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" | "min" | "max" import type {NumericScaleWithExtremesVariant} from '@fuzdev/fuz_css/variable_data.js'; Numeric scale with min/max extremes for scales that need untinted endpoints. Used by text and shade scales where min/max represent pure black/white values.
example_class_utilities.ts view source
{ mt_xl2: string; mt_xl3: string; } import {objectClasses} from '@fuzdev/fuz_css/example_class_utilities.js'; Object - keys extracted as class names
Oklab import type {Oklab} from '@fuzdev/fuz_css/oklch.js'; A color in OKLab: lightness in [0, 1], a/b roughly in [-0.4, 0.4].
([lightness, a, b]: Oklab): Oklch import {oklab_to_oklch} from '@fuzdev/fuz_css/oklch.js'; Converts OKLab to OKLCH. Hue is normalized to [0, 360); an achromatic color gets hue 0.
__0Oklch ([lightness, a, b]: Oklab): RgbUnit import {oklab_to_srgb} from '@fuzdev/fuz_css/oklch.js'; Converts OKLab to gamma-encoded sRGB.
__0RgbUnit components that may fall outside [0, 1] when the color is out of gamut
Oklch import type {Oklch} from '@fuzdev/fuz_css/oklch.js'; A color in OKLCH: lightness in [0, 1], chroma โฅ 0 (unbounded), hue in degrees.
(a: Oklch, b: Oklch): number import {oklch_delta_e} from '@fuzdev/fuz_css/oklch.js'; Computes ฮEOK between two OKLCH colors โ the Euclidean distance in OKLab. Just-noticeable differences sit around 0.02; css-color-4's gamut mapping uses 0.02 as its "local MINDE" threshold.
abnumber (lch: Oklch, epsilon?: number): boolean import {oklch_in_srgb_gamut} from '@fuzdev/fuz_css/oklch.js'; Checks whether an OKLCH color converts to sRGB with all components inside [0, 1].
lchepsilontolerance for float noise at the gamut boundary
number1e-6boolean (lightness: number, hue: number, precision?: number): number import {oklch_max_srgb_chroma} from '@fuzdev/fuz_css/oklch.js'; Finds the largest chroma at a given OKLCH lightness and hue such that every chroma below it is also inside the sRGB gamut. Returns 0 when the lightness itself is out of range.
This is deliberately the *safe* maximum for ramps, not the outermost gamut
intersection: the sRGB gamut is non-convex in OKLab (most visibly near the
blue primary), so the constant-(L, H) chroma ray can exit and re-enter the
gamut. A ramp needs the whole [0, C] segment representable, so the scan
stops at the first exit.
lightnessnumberhuenumberprecisionterminate when the refinement interval is smaller than this
number1e-5number ([lightness, chroma, hue]: Oklch): Oklab import {oklch_to_oklab} from '@fuzdev/fuz_css/oklch.js'; Converts OKLCH to OKLab.
__0Oklab (lch: Oklch): RgbUnit import {oklch_to_srgb} from '@fuzdev/fuz_css/oklch.js'; Converts OKLCH to gamma-encoded sRGB.
lchRgbUnit components that may fall outside [0, 1] when the color is out of gamut
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {outline_color} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {outline_style} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {outline_width} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {outline_width_active} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {outline_width_focus} from '@fuzdev/fuz_css/variables.js'; readonly ["focus", "active"] import {outline_width_variants} from '@fuzdev/fuz_css/variable_data.js'; "focus" | "active" import type {OutlineWidthVariant} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_a_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_b_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_c_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_95} from '@fuzdev/fuz_css/variables.js'; Record<"light" | "dark", Record<"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100", number>> import {PALETTE_CHROMA_CAPS} from '@fuzdev/fuz_css/ramps.js'; Worst-hue safe chroma caps per stop: the largest chroma at that stop's default lightness that stays inside sRGB for every one of the 10 default hues (see oklch_max_srgb_chroma for the non-convexity caveat). Computed at design time from PALETTE_HUES + PALETTE_LIGHTNESS_KNOBS, floored to stay conservative; a drift test recomputes them from the color math.
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_curve} from '@fuzdev/fuz_css/variables.js'; Record<"light" | "dark", ChromaRampKnobs> import {PALETTE_CHROMA_KNOBS} from '@fuzdev/fuz_css/ramps.js'; Fitted chroma-curve knobs for the palette ramps.
Re-fitted ("honest chroma" retune) so the requested curve hugs the
effective post-clamp chroma instead of sitting above the caps through the
mid-range โ turning the knobs down now responds immediately. Turning
chroma_max up remains cap-clamped by design; --chroma_scale is the
push-past-the-gamut knob. Residual vs the original port is small (mean
ฮEOK โ 0.005 light / 0.003 dark) except light stop 30 (โ0.028 C): the
symmetric mid-peaked model can't reach the light cap envelope's peak at
stop 30 โ recovering it would take an asymmetric shape (peak-position
knob).
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_max} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_chroma_min} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_d_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_e_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_f_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_g_95} from '@fuzdev/fuz_css/variables.js'; Record<"g" | "b" | "a" | "c" | "d" | "e" | "f" | "h" | "i" | "j", { color: string; binding?: "accent" | "positive" | "negative" | "caution" | "info" | "neutral" | undefined; }> import {palette_glosses} from '@fuzdev/fuz_css/variable_data.js'; Letter glosses: each palette slot's default color plus its default intent
binding where one exists. Display data for docs and the theme editor โ
themes recolor the slots, so these describe the defaults, not promises.
The neutral binds like an intent (--hue_neutral: var(--hue_f)) despite
being absent from intent_variants.
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_h_95} from '@fuzdev/fuz_css/variables.js'; Record<"g" | "b" | "a" | "c" | "d" | "e" | "f" | "h" | "i" | "j", number> import {PALETTE_HUES} from '@fuzdev/fuz_css/ramps.js'; OKLCH hue angles for the 10 palette hues, fitted from the HSL palette.
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_i_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_j_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {palette_lightness_curve} from '@fuzdev/fuz_css/variables.js'; Record<"light" | "dark", LightnessRampKnobs> import {PALETTE_LIGHTNESS_KNOBS} from '@fuzdev/fuz_css/ramps.js'; Fitted lightness knobs for the palette (palette_X_NN) ramps.
(letter: "g" | "b" | "a" | "c" | "d" | "e" | "f" | "h" | "i" | "j", stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100", scheme: "light" | "dark"): Oklch import {palette_stop_oklch} from '@fuzdev/fuz_css/ramps.js'; Computes the default OKLCH color of a palette stop (--palette_X_NN).
letter"g" | "b" | "a" | "c" | "d" | "e" | "f" | "h" | "i" | "j"stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"scheme"light" | "dark"Oklch readonly ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] import {palette_variants} from '@fuzdev/fuz_css/variable_data.js'; "g" | "b" | "a" | "c" | "d" | "e" | "f" | "h" | "i" | "j" import type {PaletteVariant} from '@fuzdev/fuz_css/variable_data.js'; (segment: string): string | null import {parse_arbitrary_breakpoint} from '@fuzdev/fuz_css/modifiers.js'; Parses an arbitrary breakpoint modifier. Supports nested parentheses for calc(), clamp(), min(), max(), var(). Requires value to start with a digit or known CSS function to catch obvious mistakes.
segmentstringstring | null the CSS media query or null if not an arbitrary breakpoint
parse_arbitrary_breakpoint("min-width(800px)") // "@media (width >= 800px)"
parse_arbitrary_breakpoint("min-width(calc(100vw - 200px))") // "@media (width >= calc(100vw - 200px))"
parse_arbitrary_breakpoint("min-width(px)") // null (invalid - no digit or function)(class_name: string, css_properties: Set<string> | null): CssLiteralParseResult import {parse_css_literal} from '@fuzdev/fuz_css/css_literal.js'; Parses a CSS-literal class name into its components.
class_namethe class name to parse
stringcss_propertiesSet of valid CSS properties from load_css_properties()
Pass null to skip property validation.
Set<string> | nullCssLiteralParseResult CssLiteralParseResult with parsed data or error
(segment: string): { name: string; css: string; type: "state"; } | null import {parse_parameterized_state} from '@fuzdev/fuz_css/modifiers.js'; Parses a parameterized state modifier (nth-child, nth-last-child, nth-of-type, nth-last-of-type).
segmentstring{ name: string; css: string; type: "state"; } | null object with name (including parameter) and CSS, or null if not parameterized
css_ruleset_parser.ts view source
(css: string): ParsedRuleset import {parse_ruleset} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Parses a CSS ruleset string using Svelte's CSS parser.
cssraw CSS string (e.g., ".box { display: flex; }")
stringParsedRuleset ParsedRuleset with structured rule data and positions
style_rule_parser.ts view source
(css: string, content_hash: string): StyleRuleIndex import {parse_style_css} from '@fuzdev/fuz_css/style_rule_parser.js'; Parses a CSS stylesheet into a StyleRuleIndex.
cssraw CSS string (e.g., contents of style.css)
stringcontent_hashhash of the CSS for cache invalidation
stringStyleRuleIndex StyleRuleIndex with rules and lookup maps
ParsedCssLiteral import type {ParsedCssLiteral} from '@fuzdev/fuz_css/css_literal.js'; Parsed CSS-literal class with all components extracted.
class_nameOriginal class name
type string
mediaMedia modifier (breakpoint or feature query)
type ModifierDefinition | null
ancestorAncestor modifier (dark/light)
type ModifierDefinition | null
statesState modifiers in alphabetical order (can have multiple)
type Array<ModifierDefinition>
pseudo_elementPseudo-element modifier (before, after, etc.)
type ModifierDefinition | null
propertyCSS property name
type string
valueCSS value (with ~ replaced by spaces)
type string
css_ruleset_parser.ts view source
ParsedRule import type {ParsedRule} from '@fuzdev/fuz_css/css_ruleset_parser.js'; A parsed CSS rule with its components and positions.
selectorFull selector string (e.g., ".box", ".selectable:hover")
type string
selector_startStart position of selector in original CSS (0-indexed)
type number
selector_endEnd position of selector in original CSS
type number
declarationsThe declarations block (without braces)
type string
rule_startStart position of the entire rule
type number
rule_endEnd position of the entire rule
type number
css_ruleset_parser.ts view source
ParsedRuleset import type {ParsedRuleset} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Result of parsing a CSS ruleset.
rulesAll rules in the ruleset
type Array<ParsedRule>
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {positive_95} from '@fuzdev/fuz_css/variables.js'; Map<string, ModifierDefinition> import {PSEUDO_ELEMENT_MODIFIERS} from '@fuzdev/fuz_css/modifiers.js'; Map of pseudo-element modifier names to their CSS output
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {radius_scale} from '@fuzdev/fuz_css/variables.js'; (scheme: "light" | "dark", stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100", chroma_scale?: number): number import {ramp_chroma} from '@fuzdev/fuz_css/ramps.js'; Evaluates the palette chroma at a stop: the knob curve clamped by that stop's worst-hue cap. chroma_scale multiplies above the clamp.
scheme"light" | "dark"stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"chroma_scalenumber1number (stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100", curve: number): number import {ramp_chroma_shape} from '@fuzdev/fuz_css/ramps.js'; Evaluates the normalized chroma shape pow(4t(1-t), curve) at a stop โ
0 at the endpoints, 1 at the midpoint.
stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"curvenumbernumber (knobs: LightnessRampKnobs, stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"): number import {ramp_lightness} from '@fuzdev/fuz_css/ramps.js'; Evaluates a lightness ramp at a stop.
knobsstop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"number (stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"): number import {ramp_stop_t} from '@fuzdev/fuz_css/ramps.js'; Converts a stop variant to its ramp position t in [0, 1].
stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"number readonly ("00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100")[] import {RAMP_STOPS} from '@fuzdev/fuz_css/ramps.js'; The 13 intensity stops in ramp order (00 โ 100).
RampFamily import type {RampFamily} from '@fuzdev/fuz_css/ramps.js'; The lightness ramp families and their CSS variable name prefixes.
(stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"): string import {render_chroma_shape_css} from '@fuzdev/fuz_css/ramps.js'; Renders the normalized chroma shape of a stop, shared by the palette chroma
ramp and the neutral scales: pow(4t(1-t), --palette_chroma_curve).
Exactly 0 at the endpoints and 1 at the midpoint.
stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"string (stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100", scheme: "light" | "dark"): string import {render_chroma_stop_css} from '@fuzdev/fuz_css/ramps.js'; Renders the capped default of a palette chroma ramp stop: the knob curve
clamped by that stop's worst-hue gamut cap. Per-scheme because the caps
differ; --chroma_scale multiplies outside this clamp, at the color stops.
stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"scheme"light" | "dark"string (stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100", scheme: "light" | "dark"): string import {render_hue_shift_offset_css} from '@fuzdev/fuz_css/ramps.js'; Renders a stop's hue-shift offset. --hue_shift is the total rotation in
degrees across a ramp, anchored at stop 50; the scheme sign flip is baked
into these per-scheme slots so positive values always rotate hue upward
toward the dark end.
stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"scheme"light" | "dark"string (family: RampFamily, stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"): string import {render_lightness_stop_css} from '@fuzdev/fuz_css/ramps.js'; Renders the derived default of an intermediate lightness ramp stop, e.g.
--palette_lightness_30: calc(var(--palette_lightness_00) + (var(--palette_lightness_100) - var(--palette_lightness_00)) * pow(0.3, var(--palette_lightness_curve))).
Stops 00/100 are the endpoint knobs themselves and have no derived form.
familystop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"string (family: "text" | "shade", stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"): string import {render_neutral_stop_css} from '@fuzdev/fuz_css/ramps.js'; Renders the derived default of a neutral (shade/text) stop. The neutral
rides the palette's chroma shape scaled by the --neutral_chroma peak.
family"text" | "shade"stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"string (letter: "g" | "b" | "a" | "c" | "d" | "e" | "f" | "h" | "i" | "j", stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"): string import {render_palette_stop_css} from '@fuzdev/fuz_css/ramps.js'; Renders the derived default of a palette color stop, e.g. --palette_a_50.
One definition serves both schemes โ the scheme flip lives in the knobs.
letter"g" | "b" | "a" | "c" | "d" | "e" | "f" | "h" | "i" | "j"stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"string (hue_reference: string, stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100", alpha?: string | undefined): string import {render_ramp_color_css} from '@fuzdev/fuz_css/ramps.js'; Renders a color derived from the palette ramps at a stop for an arbitrary
hue reference โ the shared template behind palette stops and intent stops
(--accent_50 renders with var(--hue_accent)).
hue_referencea CSS expression for the hue, e.g. var(--hue_accent)
stringstop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"alpha?optional CSS alpha (e.g. 40%) appended inside the oklch()
string | undefinedstring (theme: Theme, options?: RenderThemeStyleOptions): string import {render_theme_style} from '@fuzdev/fuz_css/theme.js'; themeoptions{}string (variable: { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; }, dark?: boolean, comments?: boolean): string import {render_theme_variable} from '@fuzdev/fuz_css/theme.js'; variable{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; }darkbooleanfalsecommentsbooleantruestring RenderThemeStyleOptions import type {RenderThemeStyleOptions} from '@fuzdev/fuz_css/theme.js'; comments?type boolean
id?type string | null
empty_default_theme?type boolean
layer?The cascade layer wrapping the rendered variables. Theme overrides
default to fuz.theme so they beat the fuz.base defaults by layer
order; pass null to render unlayered.
type string | null
style_rule_parser.ts view source
(base_css: BaseCssOption, deps: CacheDeps): Promise<StyleRuleIndex | null> import {resolve_base_css_option} from '@fuzdev/fuz_css/style_rule_parser.js'; Resolves a base_css option to a StyleRuleIndex.
Handles all option forms: undefined (defaults), null (disabled), string, or callback.
base_cssthe base_css option from generator config
depsfilesystem deps for loading default CSS
Promise<StyleRuleIndex | null> promise resolving to StyleRuleIndex, or null if disabled
css_class_resolution.ts view source
(def: CssClassDefinitionStatic, class_name: string, definitions: Record<string, CssClassDefinition | undefined>, css_properties?: Set<...> | null): ResolveComposesResult import {resolve_class_definition} from '@fuzdev/fuz_css/css_class_resolution.js'; Resolves a class definition's declaration, handling composes composition.
If the definition has a composes property, resolves those classes recursively
and combines with any explicit declaration. If no composes, returns the
explicit declaration directly.
defthe class definition to resolve
class_namethe name of the class being resolved (for error messages)
stringdefinitionsrecord of all known class definitions
Record<string, CssClassDefinition | undefined>css_propertiesset of valid CSS properties for literal validation, or null to skip
Set<string> | nullnullResolveComposesResult combined declaration or an error
css_class_resolution.ts view source
(class_names: string[], definitions: Record<string, CssClassDefinition | undefined>, resolution_stack: Set<string>, visited: Set<string>, original_class_name: string, css_properties?: Set<...> | null): ResolveComposesResult import {resolve_composes} from '@fuzdev/fuz_css/css_class_resolution.js'; Resolves an array of class names to their combined CSS declarations.
Recursively resolves nested composes arrays and combines all declarations.
Validates that referenced classes exist and are resolvable (not rulesets or interpreters).
Supports unmodified CSS literals (e.g., text-align:center) in the composes array.
Deduplication behavior:
class_namesarray of class names to resolve
string[]definitionsrecord of all known class definitions
Record<string, CssClassDefinition | undefined>resolution_stackset of class names currently being resolved (for cycle detection)
Set<string>visitedset of all class names already resolved (for deduplication)
Set<string>original_class_namethe class name being defined (for error messages)
stringcss_propertiesset of valid CSS properties for literal validation, or null to skip
Set<string> | nullnullResolveComposesResult combined declarations or an error
css_bundled_resolution.ts view source
(options: CssResolutionOptions): CssResolutionResult import {resolve_css} from '@fuzdev/fuz_css/css_bundled_resolution.js'; Resolves which CSS to include based on detected usage.
Algorithm:
optionsresolution options including indexes, detected usage, and config
CssResolutionResult resolution result with theme CSS, base CSS, and diagnostics
(variables: VariablesOption): { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; }[] import {resolve_variables_option} from '@fuzdev/fuz_css/variable_graph.js'; Resolves a variables option to a concrete array of style variables.
variablesthe variables option (undefined, null, array, or callback)
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; }[] resolved array of style variables, or empty array if null
(graph: VariableDependencyGraph, initial_variables: Iterable<string>): ResolveVariablesResult import {resolve_variables_transitive} from '@fuzdev/fuz_css/variable_graph.js'; Resolves variables transitively using DFS with cycle detection. When a variable is requested, all variables it depends on are included. Both light and dark dependencies are always resolved together.
graphthe variable dependency graph
initial_variablesinitial set of variable names to resolve
Iterable<string>ResolveVariablesResult ResolveVariablesResult with all transitive dependencies
css_class_resolution.ts view source
ResolveComposesResult import type {ResolveComposesResult} from '@fuzdev/fuz_css/css_class_resolution.js'; Result from resolving a composes array to combined declarations.
ResolveVariablesResult import type {ResolveVariablesResult} from '@fuzdev/fuz_css/variable_graph.js'; Result from transitive variable resolution.
variablesAll resolved variable names
type Set<string>
warningsWarning messages for cycles
type Array<string>
missingVariable names that were requested but not found in the graph
type Set<string>
RgbUnit import type {RgbUnit} from '@fuzdev/fuz_css/oklch.js'; An RGB color with components in the unit interval [0, 1]. Values are gamma-encoded sRGB unless a function documents linear-light. Out-of-gamut results are not clamped, so components may fall outside [0, 1].
css_ruleset_parser.ts view source
(rules: ParsedRule[], escaped_class_name: string): boolean import {ruleset_contains_class} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Checks if any selector in the ruleset contains the expected class name. Used to validate that ruleset definitions match their key.
rulesparsed rules from the ruleset
ParsedRule[]escaped_class_namethe CSS-escaped class name (e.g., "clickable" or "hover\\:card")
stringboolean true if at least one selector contains ".class_name"
(deps: CacheDeps, cache_path: string, content_hash: string, extraction: ExtractionData): Promise<void> import {save_cached_extraction} from '@fuzdev/fuz_css/css_cache.js'; Saves an extraction result to the cache. Uses atomic write (temp file + rename) for crash safety. Normalizes empty collections to null to avoid allocation overhead on load.
depsfilesystem deps for dependency injection
cache_pathabsolute path to the cache file
stringcontent_hashcontent hash of the source file contents
stringextractionextraction data to cache
Promise<void> { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {scale_factor} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {selection_color} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_lightness_curve} from '@fuzdev/fuz_css/variables.js'; Record<"light" | "dark", LightnessRampKnobs> import {SHADE_LIGHTNESS_KNOBS} from '@fuzdev/fuz_css/ramps.js'; Fitted lightness knobs for the shade (surface) ramps.
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_max} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shade_min} from '@fuzdev/fuz_css/variables.js'; readonly ["min", "00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100", "max"] import {shade_scale_variants} from '@fuzdev/fuz_css/variable_data.js'; (stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100", scheme: "light" | "dark"): Oklch import {shade_stop_oklch} from '@fuzdev/fuz_css/ramps.js'; Computes the default OKLCH color of a shade stop (--shade_NN).
stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"scheme"light" | "dark"Oklch readonly ["00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100"] import {shade_variants} from '@fuzdev/fuz_css/variable_data.js'; "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" | "min" | "max" import type {ShadeScaleVariant} from '@fuzdev/fuz_css/variable_data.js'; Full shade scale including min/max extremes for untinted surfaces.
"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" import type {ShadeVariant} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_alpha_scale} from '@fuzdev/fuz_css/variables.js'; readonly ["00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100"] import {shadow_alpha_variants} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_bottom_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_bottom_md} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_bottom_sm} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_bottom_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_bottom_xs} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_color_glow} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_color_highlight} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_color_shroud} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_color_umbra} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_bottom_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_bottom_md} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_bottom_sm} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_bottom_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_bottom_xs} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_md} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_sm} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_top_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_top_md} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_top_sm} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_top_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_top_xs} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_inset_xs} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_md} from '@fuzdev/fuz_css/variables.js'; readonly ["umbra", "highlight", "glow", "shroud"] import {shadow_semantic_values} from '@fuzdev/fuz_css/variable_data.js'; readonly ["xs", "sm", "md", "lg", "xl"] import {shadow_size_variants} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_sm} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_top_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_top_md} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_top_sm} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_top_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_top_xs} from '@fuzdev/fuz_css/variables.js'; readonly ["shadow_", "shadow_top_", "shadow_bottom_", "shadow_inset_", "shadow_inset_top_", "shadow_inset_bottom_"] import {shadow_variant_prefixes} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {shadow_xs} from '@fuzdev/fuz_css/variables.js'; "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" import type {ShadowAlphaVariant} from '@fuzdev/fuz_css/variable_data.js'; "umbra" | "highlight" | "glow" | "shroud" import type {ShadowSemanticValue} from '@fuzdev/fuz_css/variable_data.js'; "lg" | "md" | "sm" | "xs" | "xl" import type {ShadowSizeVariant} from '@fuzdev/fuz_css/variable_data.js'; "lg" | "md" | "sm" | "xs" | "xl" | "xl2" | "xl3" | "xl4" | "xl5" | "xl6" | "xl7" | "xl8" | "xl9" import type {SizeVariant} from '@fuzdev/fuz_css/variable_data.js'; css_ruleset_parser.ts view source
SkippedModifierInfo import type {SkippedModifierInfo} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Information about a modifier that was skipped for a selector during ruleset modification. The selector is still included in output, just without the conflicting modifier applied.
selectorThe specific selector where the modifier was skipped (not the full selector list)
type string
reasonReason the modifier was skipped
type 'pseudo_element_conflict' | 'state_conflict'
conflicting_modifierThe conflicting modifier that was not applied (e.g., "::before" or ":hover")
type string
css_class_extractor.ts view source
import {SourceIndex} from '@fuzdev/fuz_css/css_class_extractor.js'; Helper class for converting character offsets to line/column positions. Svelte template nodes (Comment, Text, ExpressionTag) only have char offsets, so this class enables efficient conversion.
Build: O(n) where n = source length Lookup: O(log m) where m = number of lines (binary search)
constructortype new (source: string): SourceIndex
sourcestringget_locationConverts a character offset to a source location.
type (offset: number, file: string): SourceLocation
offset0-based character offset in the source
numberfilefile path for the location
stringSourceLocation with 1-based line and column
SourceLocation import type {SourceLocation} from '@fuzdev/fuz_css/diagnostics.js'; Source location for IDE/LSP integration.
filetype string
line1-based line number
type number
column1-based column number
type number
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_lg} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_md} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_sm} from '@fuzdev/fuz_css/variables.js'; readonly ["xs5", "xs4", "xs3", "xs2", "xs", "sm", "md", "lg", "xl", "xl2", "xl3", "xl4", "xl5", "xl6", "xl7", "xl8", "xl9", "xl10", "xl11", "xl12", "xl13", "xl14", "xl15"] import {space_variants} from '@fuzdev/fuz_css/variable_data.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl11} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl12} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl13} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl14} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl15} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl2} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl3} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl4} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl5} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl6} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl7} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl8} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xl9} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xs} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xs2} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xs3} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xs4} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {space_xs5} from '@fuzdev/fuz_css/variables.js'; "lg" | "md" | "sm" | "xs" | "xl" | "xl2" | "xl3" | "xl4" | "xl5" | "xl6" | "xl7" | "xl8" | "xl9" | "xs5" | "xs4" | "xs3" | "xs2" | "xl10" | "xl11" | "xl12" | "xl13" | "xl14" | "xl15" import type {SpaceVariant} from '@fuzdev/fuz_css/variable_data.js'; css_ruleset_parser.ts view source
(selector_group: string): string[] import {split_selector_list} from '@fuzdev/fuz_css/css_ruleset_parser.js'; Splits a selector list by commas, respecting parentheses, brackets, and quoted strings.
selector_groupstringstring[] split_selector_list('.a, .b') // โ ['.a', '.b']
split_selector_list('.a:not(.b), .c') // โ ['.a:not(.b)', '.c']
split_selector_list('.a[data-x="a,b"], .c') // โ ['.a[data-x="a,b"]', '.c'](c: number): number import {srgb_component_to_linear} from '@fuzdev/fuz_css/oklch.js'; Converts a gamma-encoded sRGB component in [0, 1] to linear-light.
cnumbernumber ([r, g, b]: RgbUnit): number import {srgb_relative_luminance} from '@fuzdev/fuz_css/wcag.js'; Computes WCAG 2.x relative luminance of a gamma-encoded sRGB color.
__0number ([r, g, b]: RgbUnit): Oklab import {srgb_to_oklab} from '@fuzdev/fuz_css/oklch.js'; Converts gamma-encoded sRGB to OKLab.
__0Oklab (rgb: RgbUnit): Oklch import {srgb_to_oklch} from '@fuzdev/fuz_css/oklch.js'; Converts gamma-encoded sRGB to OKLCH.
rgbOklch Map<string, ModifierDefinition> import {STATE_MODIFIERS} from '@fuzdev/fuz_css/modifiers.js'; Map of state modifier names to their CSS output
RegExp import {STYLE_VARIABLE_NAME_MATCHER} from '@fuzdev/fuz_css/variable.js'; style_rule_parser.ts view source
StyleRule import type {StyleRule} from '@fuzdev/fuz_css/style_rule_parser.js'; A parsed style rule with metadata for filtering.
Discriminated union: check is_core to narrow to CoreStyleRule or NonCoreStyleRule.
All rules have a consistent shape - core_reason is null for non-core rules.
style_rule_parser.ts view source
StyleRuleBase import type {StyleRuleBase} from '@fuzdev/fuz_css/style_rule_parser.js'; Base fields shared by all style rules.
cssThe full CSS text for this rule (including selector and declarations)
type string
elementsHTML element names this rule targets (e.g., 'button', 'input')
type Set<string>
classesCSS class names this rule targets (e.g., 'unstyled', 'selected')
type Set<string>
variables_usedCSS variables referenced in declarations
type Set<string>
orderOriginal order in style.css (for preserving cascade)
type number
style_rule_parser.ts view source
StyleRuleIndex import type {StyleRuleIndex} from '@fuzdev/fuz_css/style_rule_parser.js'; Index of parsed style rules for efficient lookup.
rulesAll rules in original order
type Array<StyleRule>
by_elementRules indexed by element name
type Map<string, Array<number>>
by_classRules indexed by class name
type Map<string, Array<number>>
content_hashContent hash for cache invalidation
type string
ZodObject<{ name: ZodString; light: ZodOptional<ZodString>; dark: ZodOptional<ZodString>; summary: ZodOptional<ZodString>; }, $strip> import type {StyleVariable} from '@fuzdev/fuz_css/variable.js'; Zod schema for validating StyleVariable objects.
Use safeParse for validation; the StyleVariable type is defined separately
to preserve the Flavored brand on name.
StyleVariableInfo import type {StyleVariableInfo} from '@fuzdev/fuz_css/variable_graph.js'; Information about a single style variable and its dependencies.
nameVariable name (without -- prefix)
type string
light_depsVariables referenced in the light value
type Set<string>
dark_depsVariables referenced in the dark value
type Set<string>
light_cssThe CSS value for light mode, or undefined if not defined
type string | undefined
dark_cssThe CSS value for dark mode, or undefined if not defined
type string | undefined
ZodString import type {StyleVariableName} from '@fuzdev/fuz_css/variable.js'; (typo: string, properties: Set<string> | null): string | null import {suggest_css_property} from '@fuzdev/fuz_css/css_literal.js'; Suggests a correct property name for a typo using Levenshtein distance.
typothe mistyped property name
stringpropertiesSet of valid CSS properties from load_css_properties()
Pass null to skip suggestions.
Set<string> | nullstring | null the suggested property or null if no close match (Levenshtein distance > 2)
(typo: string): string | null import {suggest_modifier} from '@fuzdev/fuz_css/css_literal.js'; Suggests a correct modifier name for a typo using Levenshtein distance.
typothe mistyped modifier name
stringstring | null the suggested modifier or null if no close match (Levenshtein distance > 2)
example_class_utilities.ts view source
"mt_xs" | "mt_sm" import {ternaryClass} from '@fuzdev/fuz_css/example_class_utilities.js'; Ternary expression - both branches extracted
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_color} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_decoration} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_decoration_hover} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_decoration_selected} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_disabled} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_00} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_05} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_10} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_100} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_20} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_30} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_40} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_50} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_60} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_70} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_80} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_90} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_95} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_lightness_curve} from '@fuzdev/fuz_css/variables.js'; Record<"light" | "dark", LightnessRampKnobs> import {TEXT_LIGHTNESS_KNOBS} from '@fuzdev/fuz_css/ramps.js'; Fitted lightness knobs for the text ramps.
{ name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_max} from '@fuzdev/fuz_css/variables.js'; { name: string; light?: string | undefined; dark?: string | undefined; summary?: string | undefined; } import {text_min} from '@fuzdev/fuz_css/variables.js'; readonly ["min", "00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100", "max"] import {text_scale_variants} from '@fuzdev/fuz_css/variable_data.js'; (stop: "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100", scheme: "light" | "dark"): Oklch import {text_stop_oklch} from '@fuzdev/fuz_css/ramps.js'; Computes the default OKLCH color of a text stop (--text_NN).
stop"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100"scheme"light" | "dark"Oklch readonly ["00", "05", "10", "20", "30", "40", "50", "60", "70", "80", "90", "95", "100"] import {text_variants} from '@fuzdev/fuz_css/variable_data.js'; "00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" | "min" | "max" import type {TextScaleVariant} from '@fuzdev/fuz_css/variable_data.js'; Full text scale including min/max extremes for knockout text.
"00" | "05" | "10" | "20" | "30" | "40" | "50" | "60" | "70" | "80" | "90" | "95" | "100" import type {TextVariant} from '@fuzdev/fuz_css/variable_data.js'; Theme import type {Theme} from '@fuzdev/fuz_css/theme.js'; nametype string
variablestype Array<StyleVariable>
Map<string, ThemeKnob> import {theme_knob_by_name} from '@fuzdev/fuz_css/knobs.js'; The catalog indexed by variable name.
Set<string> import {theme_knob_hook_names} from '@fuzdev/fuz_css/knobs.js'; Names of hook knobs โ consumed by style.css via fallbacks, not declared in default_variables. Theme validation unions these with the declared variable names.
ThemeKnob[] import {theme_knobs} from '@fuzdev/fuz_css/knobs.js'; The theme knobs in editor display order: by axis, high leverage first, with the palette tier last within the color axis.
ThemeKnob import type {ThemeKnob} from '@fuzdev/fuz_css/knobs.js'; nametype StyleVariableName
kindtype KnobKind
axistype KnobAxis
leveragetype KnobLeverage
tiertype KnobTier
range?The safe envelope for scalar kinds โ editor sliders clamp to it, while direct numeric entry may exceed it knowingly.
type [number, number]
step?type number
values?Allowed values for the enum kind.
type Array<string>
hook?True for knobs consumed by style.css via var() fallbacks instead of
being declared in default_variables (e.g. heading_font_weight, whose
per-tier fallbacks flatten when set).
type boolean
bindable?True for hue knobs whose default is a palette-letter binding
(var(--hue_X)) โ the intent and neutral hues. Editors render these as
a letter picker with a custom-angle escape, and edits may write either a
binding or a literal angle.
type boolean
(class_name: string, css_properties: Set<string> | null, context_class_name: string): LiteralResolutionResult import {try_resolve_literal} from '@fuzdev/fuz_css/css_literal.js'; Attempts to resolve a class name as an unmodified CSS literal for composition.
Used by resolve_composes to support literals in composes arrays.
Returns the declaration if successful, null if not a literal, or an error
if it's a literal with issues (modifiers, invalid property, etc.).
class_namethe class name to try resolving
stringcss_propertiesset of valid CSS properties, or null to skip validation
Set<string> | nullcontext_class_namethe class being defined (for error messages)
stringLiteralResolutionResult resolution result with declaration, or error, or null if not a literal
VariableDependencyGraph import type {VariableDependencyGraph} from '@fuzdev/fuz_css/variable_graph.js'; Dependency graph for style variables.
variablesMap from variable name to its info
type Map<string, StyleVariableInfo>
content_hashContent hash for cache invalidation
type string
css_plugin_options.ts view source
VariablesOption import type {VariablesOption} from '@fuzdev/fuz_css/css_plugin_options.js'; Type for the variables option used by CSS generators.
Supports four forms:
undefined - Use default variables (framework defaults)null - Disable theme generation entirely (explicit opt-out)Array<StyleVariable> - Custom variables array (replaces defaults)(defaults) => Array<StyleVariable> - Callback to modify defaultsSee module documentation for the undefined vs null convention.
vite_plugin_fuz_css.ts view source
(options?: VitePluginFuzCssOptions): Plugin<any> import {vite_plugin_fuz_css} from '@fuzdev/fuz_css/vite_plugin_fuz_css.js'; Creates the fuz_css Vite plugin.
Extracts CSS classes from source files during Vite's transform phase
and generates optimized CSS via the virtual:fuz.css virtual module.
options{}Plugin<any> vite_plugin_fuz_css.ts view source
VitePluginFuzCssOptions import type {VitePluginFuzCssOptions} from '@fuzdev/fuz_css/vite_plugin_fuz_css.js'; Options for the fuz_css Vite plugin. Extends the shared base options (no additional Vite-specific options currently needed).
(a: RgbUnit, b: RgbUnit): number import {wcag_contrast_ratio} from '@fuzdev/fuz_css/wcag.js'; Computes the WCAG 2.x contrast ratio between two gamma-encoded sRGB colors, in [1, 21] regardless of argument order.
abnumber 2147483647 import {Z_INDEX_MAX} from '@fuzdev/fuz_css/variable_data.js'; Maximum value for CSS z-index property (32-bit signed integer max).