============== Template Tags ============== Django Palette provides custom template tags for building dynamic, reusable admin components. Loading the Template Tag Library ================================= Add this to the top of any template using django-palette tags: .. code-block:: django {% load palette %} palette_component ================= Define a reusable component with named blocks. **Syntax:** .. code-block:: django {% palette_component component_name %} {% palette_block block_name %} Default content {% endpalette_block %} {% endpalette_component %} **Parameters:** - ``component_name`` (required): Name of the component (unquoted identifier) **Description:** Creates a new component that can be rendered multiple times with ``palette_ui``. Components can have multiple ``palette_block`` areas that can be overridden when the component is rendered. **Example:** .. code-block:: django {% palette_component stat_card %}
{{ label }}
{% endpalette_block %}This is the default content.
{% endpalette_block %} When rendering the component, you can override this block: .. code-block:: django {% palette_ui file="palette/components/card.html" component="card" %} {% palette_override content %}This is custom content that replaces the default.
{% endpalette_override %} {% endpalette_ui %} **Block Naming:** Use descriptive names: - ``header`` - Header section - ``content`` - Main content area - ``footer`` - Footer section - ``actions`` - Action buttons - ``metadata`` - Additional information palette_ui ========== Render a component with context variables and optional overrides. **Syntax:** .. code-block:: django {% palette_ui file="path/to/template.html" component="component_name" with var1=value1 var2=value2 %} **Parameters:** - ``file`` (required): Path to the template file containing the component definition - ``component`` (required): Name of the component to render (unquoted identifier) - ``with`` (optional): Pass context variables to the component - Variables follow Django's ``with`` tag syntax **Description:** Renders a previously defined component. You can pass context variables that will be available inside the component. You can also override specific blocks using ``palette_override``. **Example 1: Basic Rendering** .. code-block:: django {% palette_ui file="palette/components/card.html" component="stat_card" with number="1,234" label="Total Users" %} This renders the ``stat_card`` component with: - ``number`` = "1,234" - ``label`` = "Total Users" Inside the component, you can access these variables: .. code-block:: django{{ label }}
**Example 2: With Overrides** .. code-block:: django {% palette_ui file="palette/components/card.html" component="stat_card" with number="89" label="Active Today" %} {% palette_override header %}Custom content goes here
{% endpalette_override %} {% endpalette_ui %} **Example 2: Multiple Overrides** .. code-block:: django {% palette_ui file="palette/components/card.html" component="card" with title="My Card" %} {% palette_override header %}Custom content in the body
{% endpalette_override %} {% palette_override footer %} Custom footer text {% endpalette_override %} {% endpalette_ui %} **Override with Variables:** You have access to all variables passed to ``palette_ui``: .. code-block:: django {% palette_ui file="palette/components/card.html" component="stat_card" with number=count label="My Stat" %} {% palette_override header %}{{ content }}
{% endpalette_block %}