{{ if isset .Site.Params "features" }}
{{ if .Site.Params.features.enable }}
{{ if gt (len .Site.Data.features) 0 }}
<section class="bar background-white">
    <div class="container">
		<div class="col-md-12">
            <div class="heading text-center">
                <!--<h2>{{ .Site.Params.features.title }}</h2> -->
				<h2>{{ "Use Cases" }}</h2>
            </div>
        </div>
        {{ range $index, $element := sort .Site.Data.features "weight" }}
		{{ if eq (mod $index 3) 0 }}
		<div class="col-md-12">
            <div class="row">
		{{ end }}
				<div class="col-md-4">
                    <div class="box-simple">
                      {{ if or (isset $element "icon") (isset $element "image") }}
                          {{ if isset $element "link"}}<a class="icon" href="{{ $element.link }}">{{ else }}<span class="icon">{{ end }}
                            {{ if isset $element "icon" }}
                              <i class="{{ $element.icon }}"></i>
                            {{ end }}
                            {{ if isset $element "image" }}
                              <img src="{{ $element.image }}">
                            {{ end }}
                          {{ if isset $element "link"}}</a>{{ else }}</span>{{ end }}
                        {{ end }}
                        <h3>
                          {{ if isset $element "link"}}<a href="{{ $element.link }}">{{ end }}
                            {{ $element.name }}
                          {{ if isset $element "link"}}</a>{{ end }}
                        </h3>
                        <p>{{ $element.description | markdownify }}</p>
                    </div>
                </div>
		{{ if or (eq (mod $index 3) 2) (eq $index (sub (len $.Site.Data.features) 1 )) }}
			</div>
		</div>
		{{ end }}
        {{ end }}
    </div>
</section>
{{ end }}
{{ end }}
{{ end }}
