--- ### ALL PAGES ### layout: themes/[ site.theme.id ]/frontend/core/base ### PAGE CONFIG ### # Hero Section hero: headline: "The right plans," headline_accent: "for the right price" subheadline: "Simple and affordable pricing. No hidden fees, no surprises." # Pricing Section pricing: price_per_unit: enabled: true feature_id: "credits" label: "credit" definitions: - id: "credits" definition: "Credits are used to generate content. Each generation consumes 1 credit." - id: "exports" definition: "Export your creations in various formats. Watermarked exports include a small logo." - id: "api_access" definition: "Access our REST API to integrate with your own applications and workflows." - id: "priority_support" definition: "Get faster response times and dedicated support from our team." - id: "team_collaboration" definition: "Invite team members to collaborate on projects and share resources." - id: "custom_branding" definition: "Remove our branding and add your own logo to exports." plans: - id: "basic" name: "Basic" tagline: "best for getting started" url: "/dashboard" features: - id: "credits" name: "Credits" icon: "sparkles" - id: "exports" name: "Exports" icon: "download" - id: "storage" name: "Logo storage" icon: "clock" - id: "plus" name: "Plus" tagline: "best for individuals" url: null features: - id: "credits" name: "Credits" icon: "sparkles" - id: "exports" name: "Exports" icon: "download" - id: "api_access" name: "API access" icon: "code" - id: "priority_support" name: "Priority support" icon: "headset" - id: "pro" name: "Pro" tagline: "best for small businesses" url: null popular: true features: - id: "credits" name: "Credits" icon: "sparkles" - id: "exports" name: "Exports" icon: "download" - id: "max" name: "Max" tagline: "best for growing businesses" url: null features: - id: "credits" name: "Credits" icon: "sparkles" - id: "exports" name: "Exports" icon: "download" - id: "team_collaboration" name: "Team collaboration" icon: "users" - id: "custom_branding" name: "Custom branding" icon: "palette" # Feature Comparison Section feature_comparison: superheadline: icon: "sparkles" text: "Features" headline: "Compare all" headline_accent: "plans" subheadline: "See exactly what's included in each plan" # Social Proof Section social_proof: items: - number: "5M" label: "Customers" color: "blue" - number: "#1" label: "Product of the month" color: "pink" - number: "4.8" label: "Capterra" color: "yellow" - number: "4.8" label: "G2" color: "green" # CTA Section cta: superheadline: icon: "comments" text: "Support" headline: "Need help finding the right plan for your" headline_accent: "needs?" subheadline: "Talk to our support team 24/7" button: text: "Talk to us" icon: "headset" href: "/contact" # FAQs Section faqs: superheadline: icon: "messages-question" text: "FAQs" headline: "Frequently asked" headline_accent: "questions" subheadline: "Everything you need to know about {{ site.brand.name }} billing & subscriptions." items: - question: "Can I cancel at any time?" answer: "Yes, you can cancel anytime, no questions asked. However, we would highly appreciate it if you could give us some feedback so we can improve." - question: "Is there a free trial?" answer: "Yes, there is a 14-day free trial of the paid plans. You can cancel your subscription at any time during the trial period for a full refund." - question: "What is your refund policy?" answer: "We offer a 14-day free trial of the premium plans. You can cancel any time during your trial for a full refund. After the trial period, you can cancel and you may receive a prorated refund for the remaining time on your subscription." --- {% comment %} NEOBRUTALISM PRICING Same data contract + price-resolution Liquid as the classy pricing page, but a neobrutalist STRUCTURE: ink-framed plan blocks where the popular plan is an oversized accent block, a hard square billing toggle, oversized color-block social-proof, and a full-bleed CTA. See docs/themes.md. {% endcomment %}
{% uj_icon "tag", "me-1" %}Pricing

{{ page.resolved.hero.headline }} {{ page.resolved.hero.headline_accent }}

{% iftruthy page.resolved.hero.subheadline %}

{{ page.resolved.hero.subheadline }}

{% endiftruthy %}

{% uj_icon "shield-check", "me-1 text-success" %} Every paid plan backed by a 7-day money-back guarantee

{% assign plan_count = page.resolved.pricing.plans | size %} {% comment %} Detect common features across ALL plans (same logic as classy) {% endcomment %} {% assign common_feature_ids = "" | split: "," %} {% if plan_count > 0 %} {% assign first_plan = page.resolved.pricing.plans[0] %} {% for first_feature in first_plan.features %} {% assign is_common = true %} {% for check_plan in page.resolved.pricing.plans %} {% assign found_in_plan = false %} {% for check_feature in check_plan.features %} {% if check_feature.id == first_feature.id %}{% assign found_in_plan = true %}{% break %}{% endif %} {% endfor %} {% unless found_in_plan %}{% assign is_common = false %}{% break %}{% endunless %} {% endfor %} {% if is_common %}{% assign common_feature_ids = common_feature_ids | push: first_feature.id %}{% endif %} {% endfor %} {% endif %}
{% for plan in page.resolved.pricing.plans %} {% comment %} Shared pricing math (assigns _plan_monthly/_plan_annually/per-unit into this scope) {% endcomment %} {% include core/pricing/resolve-plan.html plan=plan %}
{% if plan.popular %} Most Popular {% endif %}

{{ plan.name }}

{{ plan.tagline }}

{% if _plan_monthly == 0 %} Free {% else %} ${{ _plan_annually | divided_by: 12 | round }}/mo {% endif %}
{% if page.resolved.pricing.price_per_unit.enabled %}

{% if monthly_price_per_unit %} ${{ annual_price_per_unit }} per {{ page.resolved.pricing.price_per_unit.label }} {% elsif _plan_monthly == 0 %} Perfect for trying out {% endif %}

{% endif %}
{% if _plan_monthly == 0 %}{% assign _cta_class = "btn-outline-primary" %}{% else %}{% assign _cta_class = "btn-primary" %}{% endif %} {% iftruthy plan.url %} {% if _plan_monthly == 0 %}Get started{% elsif plan.trial.days > 0 %}Get free trial{% else %}Get started{% endif %} {% endiftruthy %} {% iffalsy plan.url %} {% endiffalsy %}

{% if _plan_monthly == 0 %} No credit card required {% else %} Billed ${{ _plan_annually | uj_commaify }} annually {% endif %}

{% if _plan_monthly > 0 %} {% uj_icon "shield-check", "me-1 text-success" %}7-day money-back guarantee {% else %} {% uj_icon "rocket", "me-1 text-success" %}Upgrade any time {% endif %}


{% comment %} Feature list — same tier-inheritance logic as classy: 1. Common features (vary by plan, shown on every card) 2. Basic (first plan): "What you get:" + its unique features 3. Other plans: "Everything in , and more:" + only the ADDED features Helpers below render a value + the name (wrapped in a tooltip span when the feature has a definition). {% endcomment %}
    {% for feature in plan.features %} {% if common_feature_ids contains feature.id %} {% assign _feature_value = feature.value %} {% if _config_product and _feature_value == nil %} {% assign _config_limit = nil %}{% for _lim in _config_product.limits %}{% if _lim[0] == feature.id %}{% assign _config_limit = _lim[1] %}{% break %}{% endif %}{% endfor %} {% if _config_limit == -1 %}{% assign _feature_value = "Unlimited" %}{% elsif _config_limit %}{% assign _feature_value = _config_limit %}{% endif %} {% endif %} {% assign feature_definition = nil %} {% for def in page.resolved.pricing.definitions %}{% if def.id == feature.id %}{% assign feature_definition = def.definition %}{% break %}{% endif %}{% endfor %}
  • {% uj_icon feature.icon, "fa-sm" %} {% if _feature_value == "Unlimited" %}Unlimited{% elsif _feature_value == "24/7" %}{{ _feature_value }}{% elsif _feature_value == true or _feature_value == "Included" or _feature_value == "Available" or _feature_value == "Full" %}{% else %}{{ _feature_value | uj_commaify }}{% endif %} {% iftruthy feature_definition %}{{ feature.name }}{% endiftruthy %} {% iffalsy feature_definition %}{{ feature.name }}{% endiffalsy %}
  • {% endif %} {% endfor %}
{% comment %} Does this plan add any non-common (unique) features? {% endcomment %} {% assign has_additional = false %} {% for feature in plan.features %}{% unless common_feature_ids contains feature.id %}{% assign has_additional = true %}{% break %}{% endunless %}{% endfor %} {% if forloop.index == 1 %} {% if has_additional %}

What you get:

{% endif %} {% else %} {% assign _prev_index = forloop.index0 | minus: 1 %} {% assign _prev_plan = page.resolved.pricing.plans[_prev_index] %}

Everything in {{ _prev_plan.name }}{% if has_additional %}, and more:{% endif %}

{% endif %} {% if has_additional %}
    {% for feature in plan.features %} {% unless common_feature_ids contains feature.id %} {% assign _feature_value = feature.value %} {% if _config_product and _feature_value == nil %} {% assign _config_limit = nil %}{% for _lim in _config_product.limits %}{% if _lim[0] == feature.id %}{% assign _config_limit = _lim[1] %}{% break %}{% endif %}{% endfor %} {% if _config_limit == -1 %}{% assign _feature_value = "Unlimited" %}{% elsif _config_limit %}{% assign _feature_value = _config_limit %}{% endif %} {% endif %} {% assign feature_definition = nil %} {% for def in page.resolved.pricing.definitions %}{% if def.id == feature.id %}{% assign feature_definition = def.definition %}{% break %}{% endif %}{% endfor %}
  • {% uj_icon feature.icon, "fa-sm" %} {% if _feature_value == "Unlimited" %}Unlimited{% elsif _feature_value == "24/7" %}{{ _feature_value }}{% elsif _feature_value == true or _feature_value == "Included" or _feature_value == "Available" or _feature_value == "Full" %}{% else %}{{ _feature_value | uj_commaify }}{% endif %} {% iftruthy feature_definition %}{{ feature.name }}{% endiftruthy %} {% iffalsy feature_definition %}{{ feature.name }}{% endiffalsy %}
  • {% endunless %} {% endfor %}
{% endif %}
{% endfor %}

Enterprise

Custom solutions for large organizations. Advanced security and flexible pricing based on your needs.

{% for item in page.resolved.social_proof.items %} {% assign stat_bg = "text-bg-primary" %} {% case item.color %} {% when "pink" %}{% assign stat_bg = "text-bg-secondary" %} {% when "green" %}{% assign stat_bg = "text-bg-success" %} {% when "yellow" %}{% assign stat_bg = "text-bg-warning" %} {% when "info" %}{% assign stat_bg = "text-bg-info" %} {% else %}{% assign stat_bg = "text-bg-primary" %} {% endcase %}
{{ item.number }} {{ item.label }}
{% endfor %}
{% iftruthy page.resolved.faqs.superheadline.text %} {% uj_icon page.resolved.faqs.superheadline.icon, "me-1" %}{{ page.resolved.faqs.superheadline.text }} {% endiftruthy %}

{{ page.resolved.faqs.headline }} {{ page.resolved.faqs.headline_accent }}

{% if page.resolved.faqs.items %}
{% for faq in page.resolved.faqs.items %}

{{ faq.answer }}
{% endfor %}
{% endif %}
{% iftruthy page.resolved.cta.superheadline.text %} {% uj_icon page.resolved.cta.superheadline.icon, "me-1" %}{{ page.resolved.cta.superheadline.text }} {% endiftruthy %}

{{ page.resolved.cta.headline }} {{ page.resolved.cta.headline_accent }}

{% iftruthy page.resolved.cta.subheadline %}

{{ page.resolved.cta.subheadline }}

{% endiftruthy %}
{{ content | uj_content_format }}