Package-level declarations
Types
WCAG thresholds used by the color generator.
The design system's full palette. It is a superset of what M3's ColorScheme can express: accent and muted have no exact M3 slot.
Functions
WCAG 2.x contrast ratio between two opaque colors, in [1, 21].
Generates a random dark scheme. Shorthand for tabotaboDarkColorScheme(Hue.random(random)). Each call picks its own hue; build light and dark from one Hue when switching between them.
Generates a random light scheme. Shorthand for tabotaboLightColorScheme(Hue.random(random)). Each call picks its own hue; build light and dark from one Hue when switching between them.
Remembers a HueState for the session. The hue survives recomposition and configuration changes; a new one is generated on every cold launch / page load.
Builds the full palette for hue from the skill's HSL tone table, then nudges every text role's lightness away from the background until it reaches ContrastTargets.Text against both background and surface. TabotaboColors.outlineStrong gets the same nudge to ContrastTargets.Graphics; TabotaboColors.outline is left as is.
Dark M3 scheme for hue.
Light M3 scheme for hue.
Maps the palette onto Material3 roles so stock M3 components follow the scheme. Secondary and tertiary reuse TabotaboColors.primary (single hue), every surface container is TabotaboColors.surface, and surfaceTint is transparent so tonal elevation never tints. M3 outline (important boundaries) is TabotaboColors.outlineStrong and outlineVariant (decorative) is TabotaboColors.outline. The error roles are not overridden: they keep Material's own light / dark values.