{% set c = module.content %}
{% set s = module.style %}
{% set b = module.behavior %}
{% set spacing = module.spacing %}
{% set a = module.advanced %}
{# Build CSS classes. Visual styling comes from the global accordion system
(css/components/accordion.css); this module only adds module-chrome classes
plus the global .accordion--* variant hooks for icon type / position. #}
{% set module_classes = "accordion" %}
{% set module_classes = module_classes ~ " accordion--align-" ~ s.layout.alignment %}
{% if s.icon_style.position == "left" %}
{% set module_classes = module_classes ~ " accordion--icon-left" %}
{% endif %}
{% if s.icon_style.type == "plus" %}
{% set module_classes = module_classes ~ " accordion--plus" %}
{% elif s.icon_style.type == "arrow" %}
{% set module_classes = module_classes ~ " accordion--arrow" %}
{% elif s.icon_style.type == "none" %}
{% set module_classes = module_classes ~ " accordion--none" %}
{% endif %}
{% if s.layout.dividers %}
{% set module_classes = module_classes ~ " accordion--dividers" %}
{% endif %}
{% if s.card_style.border %}
{% set module_classes = module_classes ~ " accordion--bordered" %}
{% endif %}
{% if s.card_style.shadow == "sm" %}
{% set module_classes = module_classes ~ " accordion--shadow" %}
{% endif %}
{% if a.custom_class %}
{% set module_classes = module_classes ~ " " ~ a.custom_class %}
{% endif %}
{# Generate unique ID for JS targeting #}
{% set accordion_id = a.custom_id ? a.custom_id : "accordion-" ~ module.id %}
{# Section Header #}
{% if c.section_heading or c.section_subheading %}
{% if c.section_heading %}
{{ c.section_heading|escape }}
{% endif %}
{% if c.section_subheading %}
{{ c.section_subheading|escape }}
{% endif %}
{% endif %}
{# Accordion Items — native / styled by the global accordion
system. The expand/collapse icon is supplied by the global summary::after
(icon type/position come from the .accordion--* classes on the section). #}
{% for item in c.items %}
{{ item.question|escape }}
{{ item.answer }}
{% endfor %}
{# FAQ Schema Markup for SEO #}
{% if b.enable_schema and c.items|length > 0 %}
{% endif %}
{# module.css is auto-attached by HubSpot for custom modules — no explicit
require_css needed (it risked a duplicate stylesheet request). #}
{% if not b.allow_multiple %}
{% require_js position="footer" defer=true %}
{% end_require_js %}
{% endif %}