{% extends "base.html.twig" %}
{% block title %}{{ 'sheet.title'|trans }}{% endblock %}
{% set meta_description = 'sheet.description'|trans %}
{% block styles %}{{ encore_entry_link_tags('css/sheet') }}{% endblock %}
{% set body_class = 'body-sheet' %}
{% block body %}
{% if name is defined and name|length %}
<header>
<h1 id="title" class="title">{{ name }}</h1>
</header>
{% endif %}
{% for data in groups %}
{% set team = data.team %}
{% set teamId = team.identifier %}
{% embed 'includes/details.html.twig' with {
open: teamId not in ['traveller', 'fabled'],
id: 'wrapper-' ~ teamId,
class: 'edition' ~ (data.characters|length ? '' : ' is-empty')
} %}
{% block summary %}
<span class="edition__heading-text">{{ team.name }}</span>
{% endblock %}
{% block body %}
<div id="team-{{ teamId }}" class="edition__team">
{% for character in data.characters %}
<div class="edition__role">
<p class="edition__name">{{ character.name }}</p>
<div class="edition__icon">
<img src="{{ character.image }}" alt="" class="edition__image" width="177" height="124" aria-hidden="true" loading="lazy">
</div>
<div class="edition__ability">{{ character.ability }}</div>
<div class="edition__jinxes">
{% for jinx in character.jinxes|default([]) %}
{% if jinx.active|default(false) %}
<div class="edition__jinx">
<img src="{{ jinx.trick.image }}" alt="{{ 'sheet.jinx'|trans }}: {{ jinx.trick.name }}" title="{{ jinx.reason }}" width="177" height="124" loading="lazy">
</div>
{% endif %}
{% endfor %}
</div>
</div>
{% endfor %}
</div>
{% endblock %}
{% endembed %}
{% endfor %}
{% if jinxes|length %}
{% embed 'includes/details.html.twig' with {
open: true,
id: 'wrapper-jinx',
class: 'edition edition--jinx'
} %}
{% block summary %}
<span class="edition__heading-text">{{ 'jinxes.title'|trans }}</span>
{% endblock %}
{% block body %}
<div id="team-jinx" class="edition__team">
{% for jinx in jinxes %}
<div class="edition__role edition__role--jinx">
<div class="edition__icon edition__icon--target">
<img src="{{ jinx.target.image }}" alt="{{ jinx.target.name }}" width="177" height="124" loading="lazy">
</div>
<div class="edition__icon edition__icon--trick">
<img src="{{ jinx.trick.image }}" alt="{{ jinx.trick.name }}" width="177" height="124" loading="lazy">
</div>
<div class="edition__ability">{{ jinx.reason }}</div>
</div>
{% endfor %}
</div>
{% endblock %}
{% endembed %}
{% endif %}
{% if nights is defined %}
{% embed 'includes/details.html.twig' with {
open: false,
id: 'wrapper-nights',
class: 'edition edition--nights'
} %}
{% block summary %}
<span class="edition__heading-text">{{ 'night_order.title'|trans }}</span>
{% endblock %}
{% block body %}
<div id="team-nights" class="edition__team">
<div class="edition__row--nights">
<h4>First Night:</h4>
<div>
{% for character in nights['first'] %}
<div class="edition__role--nights">
<img src="{{ character.image }}" alt="{{ character.name }}" width="177" height="124" aria-hidden="true" loading="lazy">
<p>{{ character.name }}</p>
</div>
{% endfor %}
</div>
</div>
<div class="edition__row--nights">
<h4>Other Nights:</h4>
<div>
{% for character in nights['other'] %}
<div class="edition__role--nights">
<img src="{{ character.image }}" alt="{{ character.name }}" width="177" height="124" aria-hidden="true" loading="lazy">
<p>{{ character.name }}</p>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock %}
{% endembed %}
{% endif %}
<p><small>{{ 'sheet.each_night'|trans }}</small></p>
<div class="breakdown no-print">
<table class="breakdown__table">
<caption class="sr-only">{{ 'sheet.breakdown'|trans }}</caption>
<tbody>
{% for group, count in breakdown %}
{% set isPlayers = loop.first %}
<tr class="breakdown__row breakdown__row--{{ group }}">
<th scope="row" class="breakdown__heading">{{ ('groups.' ~ group)|trans }}</th>
{% for count in count %}
{% if isPlayers %}
<th scope="col" class="breakdown__cell">{{ loop.last ? 'sheet.count_plus'|trans({ '%count%': count }) : count }}</th>
{% else %}
<td class="breakdown__cell">{{ count }}</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
<footer>
<p><button type="button" class="button" data-dialog="#qr-code-dialog">{{ 'sheet.get_qr_code'|trans }}</button></p>
<form id="locale-form" class="locale-form locale-form--sheet">
<label for="select-locale" class="locale-form__label">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" aria-labelledby="language-icon" class="locale-form__label-icon"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><title id="language-icon">{{ 'setup.buttons.language'|trans }}</title><path style="fill: currentColor;" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg>
</label>
<select name="select-locale" id="select-locale" class="locale-form__dropdown" data-no-store>
{% set params = { characters: app.request.get('characters') } %}
{% if app.request.get('name') is not empty %}
{% set params = params|merge({ name: app.request.get('name') }) %}
{% endif %}
{% if app.request.get('game') is not empty %}
{% set params = params|merge({ game: app.request.get('game') }) %}
{% endif %}
{% if app.request.get('traveller') is not empty %}
{% set params = params|merge({ traveller: app.request.get('traveller') }) %}
{% endif %}
{% if app.request.get('fabled') is not empty %}
{% set params = params|merge({ fabled: app.request.get('fabled') }) %}
{% endif %}
{% for locale in locales() %}
<option value="{{ path('sheet', params|merge({ '_locale': locale[0] })) }}" lang="{{ locale[0]|replace({ '_': '-' }) }}" dir="{{ locale[0] in ['he_IL'] ? 'rtl' : 'ltr' }}" {{ app.request.locale == locale[0] ? 'selected' }}>{{ locale[1] }}</option>
{% endfor %}
</select>
<button type="submit" class="button locale-form__action">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" aria-labelledby="tick-icon" class="locale-form__icon"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><title id="tick-icon">{{ 'setup.buttons.set_language'|trans }}</title><path style="fill: currentColor;" d="M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"/></svg>
</button>
</form>
<p><small>{{ 'sheet.credit'|trans|raw }}</small></p>
</footer>
{% embed 'includes/dialog.html.twig' with {
id: 'qr-code-dialog',
background: 'blur',
title: 'sheet.get_sheet'|trans
} %}
{% block body %}
<div id="qr-code" class="qr"></div>
{% endblock %}
{% endembed %}
{% endblock %}
{% block javascript %}
{{ encore_entry_script_tags('js/sheet') }}
{% endblock %}