{# Timeline Module - Modern animated timeline with lazy loading #} {% set timeline_id = "timeline-" ~ name %} {% set layout_class = "timeline-layout-" ~ module.layout.layout_type %} {% set mobile_class = module.layout.mobile_layout == "single" ? "timeline-mobile-single" : "" %} {% set animation_class = module.style.enable_animations ? "timeline-animation-" ~ module.style.animation_type : "" %} {# Critical inline styles for immediate render #} {% if theme.dark_mode.enabled %} {% endif %}
{# Timeline Header #} {% if module.content.timeline_title or module.content.subtitle %}
{% if module.content.timeline_title %}

{{ module.content.timeline_title }}

{% endif %} {% if module.content.subtitle %}

{{ module.content.subtitle }}

{% endif %}
{% endif %} {# Timeline Container #}
{# Timeline Line #} {% if module.layout.show_connecting_line %} {% endif %} {# Timeline Items #}
{% for item in module.content.timeline_items %}
{# Timeline Dot & Icon #} {# Timeline Content #}
{% if item.date %} {% endif %} {% if item.title %}

{{ item.title }}

{% endif %} {% if item.description %}
{{ item.description }}
{% endif %}
{% endfor %}
{# JavaScript for Intersection Observer and Animations — deferred to footer. #} {% require_js position="footer" %} {% end_require_js %}