LiveStyle.Compiler.CSS.Plugin behaviour (LiveStyle v0.12.0)
View SourceBehaviour for CSS plugins in the compilation pipeline.
Each plugin is responsible for generating a specific type of CSS output from the manifest (e.g., variables, keyframes, atomic rules).
Implementing a Plugin
defmodule MyAppWeb.CSS.CustomPlugin do
@behaviour LiveStyle.Compiler.CSS.Plugin
@impl true
def generate(manifest) do
# Generate CSS from manifest
"/* custom CSS */"
end
endRegistering Plugins
Add custom plugins to the pipeline via configuration:
config :live_style,
css_plugins: [
{100, MyAppWeb.CSS.CustomPlugin}
]The tuple format is {priority, module} where lower priority runs first.
Default Plugins
The default pipeline (in order):
LiveStyle.Compiler.CSS.Vars- @property rules for typed vars (priority 100)LiveStyle.Compiler.CSS.DynamicProperties- @property rules for dynamic vars (priority 150)LiveStyle.Compiler.CSS.Vars- :root variables (priority 200)LiveStyle.Compiler.CSS.Keyframes- @keyframes (priority 300)LiveStyle.Compiler.CSS.PositionTry- @position-try (priority 400)LiveStyle.Compiler.CSS.ViewTransitionClasses- view transitions (priority 500)LiveStyle.Compiler.CSS.Classes- style classes (priority 600)LiveStyle.Compiler.CSS.ThemeClasses- theme overrides (priority 700)
Summary
Callbacks
Generates CSS output from the manifest.
Functions
Returns custom plugins from configuration.
Returns the default plugin pipeline.
Returns the list of registered plugins, sorted by priority.
Callbacks
@callback generate(LiveStyle.Manifest.t()) :: String.t()
Generates CSS output from the manifest.
Returns a CSS string (may be empty if no relevant content).
Functions
Returns custom plugins from configuration.
Custom plugins can be specified as:
{priority, module}- callsmodule.generate/1{priority, {module, :function}}- callsmodule.function/1
Returns the default plugin pipeline.
The order matches StyleX:
- @property rules (typed vars)
- @property rules (dynamic vars)
- @keyframes animations
- :root variables
- @position-try rules
- View transition rules
- Atomic style rules
- Theme override rules
Returns the list of registered plugins, sorted by priority.
Each entry is a {priority, {module, function}} tuple.