{% extends "baseTemplate/index.html" %} {% load static %} {% comment %} Full-page preview of a single template. When the catalogue row carries a previewURL the live page is shown in a sandboxed iframe — `sandbox` withholds same-origin and top-navigation, and the URL itself was already restricted to http(s) by views._safe_external_url, so a hand-edited catalogue row cannot turn this page into an open redirect or reach back into the panel session. When there is no preview URL we show the template sheet instead: sections, palette and type pairing. {% endcomment %} {% block title %}{{ tpl.name }} · Template preview{% endblock %} {% block styles %} {% endblock %} {% block content %}
{{ templateJSON|json_script:"cpBuilderTemplate" }} {{ canBuild|json_script:"cpBuilderCanBuild" }}

{{ tpl.name }} {% if tpl.isPremium %} Premium {% endif %}

{{ tpl.description }}

{% if canBuild == 1 %} Use this template {% endif %}
{% if tpl.previewURL %}

This preview is loaded from {{ tpl.previewURL }} in an isolated frame.

{% else %}
This template has no hosted preview. The layout it will produce is summarised below — the real page is generated from your own business description.
{% endif %}

Page layout

{% if tpl.sections %}
    {% for section in tpl.sections %}
  1. {{ section }}
  2. {% endfor %}
{% else %}

This template does not declare its sections; the generator will choose a structure that fits your description.

{% endif %}

Design

Palette
{% if tpl.colorList %}
{% for swatch in tpl.colorList %}
{{ swatch.name }}
{% endfor %}
{% else %}

Uses your chosen primary colour.

{% endif %}
Typography
{% if tpl.fontList %}
    {% for font in tpl.fontList %}
  • {{ font.name }}: {{ font.value }}
  • {% endfor %}
{% else %}

System font stack.

{% endif %} {% if tpl.tags %}
Tags
{% for tag in tpl.tags %}{{ tag }}{% endfor %}
{% endif %}
Back to {{ tpl.categoryName }}
{% endblock %} {% block scripts %} {% endblock %}