{% extends "public_base.html" %} {% import "marketplace/_macros.html" as mk %} {% block title %}{{ _("Product lines") }} ยท {{ _("Marketplace") }}{% endblock %} {% block hero %}

{{ _("Product lines") }}

{{ _("Each line is a Software Product Line, a variability model over marketplace features. Pick one and configure your own product.") }}

{% endblock %} {% block content %}
{% if spls %}
{% for spl in spls %}
{{ mk.icon("layers", 22) }}

{{ spl.name }}

{% if spl.description %}

{{ spl.description }}

{% endif %}
{% if spl.configure_url %} {{ mk.icon("sliders") }}{{ _("Configure this line") }} {% endif %}
{% if spl.mandatory %}
{{ mk.icon("check-circle") }} {{ _("Always included") }} {{ spl.mandatory | length }} {{ mk.icon("chevron-down") }}
{% for entry in spl.mandatory %}{{ mk.feature_chip(entry.short, external=entry.external) }}{% endfor %}
{% endif %} {% for group_name, group in spl.groups.items() %}
{{ mk.icon("git-branch") }} {{ group_name }} {% if group.kind == "alternative" %}{{ _("choose exactly one") }}{% else %}{{ group.kind }}{% endif %} {{ group.options | length }} {{ mk.icon("chevron-down") }}
{% for entry in group.options %}{{ mk.feature_chip(entry.short, external=entry.external) }}{% endfor %}
{% endfor %} {% if spl.optional %}
{{ mk.icon("plus") }} {{ _("Optional") }} {{ spl.optional | length }} {{ mk.icon("chevron-down") }}
{% for entry in spl.optional %}{{ mk.feature_chip(entry.short, external=entry.external) }}{% endfor %}
{% endif %}
{% endfor %}
{% else %}
{{ mk.icon("layers", 34) }}

{{ _("No product lines in the index yet.") }}

{% endif %}
{% endblock %}