job-market-teaser

Information

Folder
src/components/patterns/teasers/job-market-teaser

Files

Schema
Mocks
Template
// src/components/patterns/teasers/job-market-teaser/job-market-teaser.twig

{{ attach_library("circle_dot/pattern-job-market-teaser") }}

{# Set default values for optional properties #}
{% set week_badge = week_badge|default(false) %}
{% set image = image|default(null) %}
{% set company_name = company_name|default(null) %}
{% set location = location|default(null) %}
{% set url = url|default(null) %}
{% set external_link_url = external_link_url|default(null) %}

{# Build class list #}
{% set classes = [
	'JobMarketTeaser',
	'JobMarketTeaser--list',
	week_badge ? 'JobMarketTeaser--withBadge' : null,
	not image ? 'JobMarketTeaser--noImage' : null
] %}

<article class="{{ classes|join(' ')|trim }}" data-theme="{{ theme }}">
	{# Teaser link (stretched to cover entire teaser) #}
	{% if url %}
		<a href="{{ url }}" class="JobMarketTeaser-link" target="_blank" rel="noopener noreferrer">
			<span class="u-hiddenVisually">{{ heading }}</span>
		</a>
	{% endif %}

	<div class="JobMarketTeaser-topRow">
		{# Company logo/image - always rendered with placeholder if no image #}
		<div class="JobMarketTeaser-imageWrapper{% if not image %} JobMarketTeaser-imageWrapper--placeholder{% endif %}">
			{% if image %}
				{{ image }}
			{% else %}
				<div class="JobMarketTeaser-placeholder">
					{% include "@elements/icon/icon.twig" with {
						name: 'beck_stellenmarkt',
						label: 'Beck Stellenmarkt'
					} only %}
				</div>
			{% endif %}
		</div>

		{# Badge container (positioned top-right) #}
		{% if week_badge %}
			{% include "@elements/badge/badge.twig" with {
				type: 'week',
				label: 'Stelle der woche'
			} only %}
		{% endif %}
	</div>

	<div class="JobMarketTeaser-content">
		{# Job title (required, with ellipsis truncation) #}
		<h3 class="JobMarketTeaser-heading">{{ heading }}</h3>

		{# Company name - conditionally rendered #}
		{% if company_name %}
			<p class="JobMarketTeaser-company">{{ company_name }}</p>
		{% endif %}

		{# Location row with pin icon and optional external link - conditionally rendered #}
		{% if location or external_link_icon %}
			<div class="JobMarketTeaser-location">
				{% if location %}
					<div class="JobMarketTeaser-locationWrapper">
						{{ location_icon }}
						<span class="JobMarketTeaser-locationText">{{ location }}</span>
					</div>
				{% endif %}

				{% if external_link_icon and external_link_url %}
					<a href="{{ external_link_url }}" class="JobMarketTeaser-externalLink" target="_blank" rel="noopener noreferrer">
						{{ external_link_icon }}
					</a>
				{% endif %}
			</div>
		{% endif %}
	</div>
</article>

Error: schema is invalid: data/properties must be object

Variants

default
Open

default mock data

Raw
Resolved
Full
Open

Full mock data

Raw
Resolved
No badge
Open

No badge mock data

Raw
Resolved
No image
Open

No image mock data

Raw
Resolved
No external link
Open

No external link mock data

Raw
Resolved
No location
Open

No location mock data

Raw
Resolved
No company name
Open

No company name mock data

Raw
Resolved
Minimal
Open

Minimal mock data

Raw
Resolved