Cinder.Theme.DslModule (Cinder v0.12.1)

Copy Markdown View Source

DSL module for creating custom Cinder themes.

This module provides the use Cinder.Theme functionality that allows users to define custom themes using a simple macro-based DSL.

Usage

defmodule MyApp.CustomTheme do
  use Cinder.Theme

  # Table
  set :container_class, "my-custom-table-container"
  set :row_class, "my-custom-row hover:bg-blue-50"

  # Filters
  set :filter_container_class, "my-filter-container"
  set :filter_text_input_class, "my-text-input"
end

Theme Inheritance

You can extend built-in theme presets:

defmodule MyApp.DarkTheme do
  use Cinder.Theme
  extends :modern

  # Override just what you need
  set :container_class, "bg-gray-900 text-white"
  set :row_class, "border-gray-700 hover:bg-gray-800"
end

Or extend your own custom themes:

defmodule MyApp.BaseTheme do
  use Cinder.Theme

  set :container_class, "my-base-container"
  set :row_class, "my-base-row"
end

defmodule MyApp.SpecializedTheme do
  use Cinder.Theme
  extends MyApp.BaseTheme

  # Override container, inherit row_class from BaseTheme
  set :container_class, "my-specialized-container"
end

Note: When extending custom themes, make sure the base theme module is compiled before the extending theme. In Phoenix applications, define your base themes before themes that extend them, or place them in separate files with appropriate compilation order.

Summary

Functions

Before compile callback to generate the theme configuration function.

Deprecated: component grouping is no longer needed.

Macro for extending from another theme.

Resolves a base theme at compile time.

Resolves a theme module's DSL configuration into a theme map.

Macro for setting a theme property.

Validates that all overrides in a theme module are valid.

Functions

__before_compile__(env)

(macro)

Before compile callback to generate the theme configuration function.

component(component, list)

(macro)

Deprecated: component grouping is no longer needed.

This macro is kept for backwards compatibility but does nothing. Run mix cinder.upgrade to update your themes to the new flat syntax.

extends(base_theme)

(macro)

Macro for extending from another theme.

resolve_base_theme(base_preset)

Resolves a base theme at compile time.

resolve_theme(theme_module)

Resolves a theme module's DSL configuration into a theme map.

set(key, value)

(macro)

Macro for setting a theme property.

validate_theme(theme_module)

Validates that all overrides in a theme module are valid.