{# Card Display Component Library #} {# Usage: {{ import '_card_display.html' }} then call card macros #} {# Card Thumbnail Macro Parameters: - name (str): Card name (required) - size (str): 'small' (160px), 'medium' (230px), 'large' (360px) (default: 'medium') - layout (str): Card layout type ('modal_dfc', 'transform', 'normal', etc.) - version (str): Scryfall image version ('small', 'normal', 'large') (auto-selected by size) - loading (str): 'lazy', 'eager' (default: 'lazy') - show_flip (bool): Show flip button for dual-faced cards (default: True) - show_name (bool): Show card name label below image (default: False) - classes (str): Additional CSS classes for container - img_classes (str): Additional CSS classes for img tag - data_attrs (dict): Additional data attributes as key-value pairs - role (str): Card role (commander, ramp, removal, etc.) - tags (list or str): Theme/mechanic tags (list or comma-separated string) - overlaps (list or str): Theme overlaps - count (int): Card count in deck - lqip (bool): Use low-quality image placeholder (default: True) - onclick (str): JavaScript onclick handler Examples: {{ card_thumb('Sol Ring', size='medium') }} {{ card_thumb('Halana, Kessig Ranger', size='large', show_name=True) }} {{ card_thumb('Delver of Secrets', layout='transform', show_flip=True) }} {{ card_thumb('Rampant Growth', role='ramp', tags=['Ramp', 'Green']) }} #} {% macro card_thumb(name, size='medium', layout='normal', version='', loading='lazy', show_flip=True, show_name=False, classes='', img_classes='', data_attrs={}, role='', tags='', overlaps='', count=0, lqip=True, onclick='') %} {%- set base_name = name.split(' // ')[0] if ' // ' in name else name -%} {%- set is_dfc = layout in ['modal_dfc', 'transform', 'double_faced_token', 'reversible_card'] -%} {# Auto-select Scryfall image version based on size #} {%- if not version -%} {%- if size == 'small' -%} {%- set version = 'small' -%} {%- elif size == 'large' -%} {%- set version = 'normal' -%} {%- else -%} {%- set version = 'small' -%} {%- endif -%} {%- endif -%} {# Build CSS classes #} {%- set size_class = 'card-thumb-' + size -%} {%- set dfc_class = 'card-thumb-dfc' if is_dfc else '' -%} {%- set container_classes = ['card-thumb-container', size_class, dfc_class, classes]|select|join(' ') -%} {%- set img_base_classes = 'card-thumb' -%} {%- set all_img_classes = [img_base_classes, img_classes]|select|join(' ') -%} {# Build data attributes #} {%- set all_data_attrs = { 'card-name': base_name, 'layout': layout } -%} {%- if role -%} {%- set _ = all_data_attrs.update({'role': role}) -%} {%- endif -%} {%- if tags -%} {%- set tags_str = tags if tags is string else tags|join(', ') -%} {%- set _ = all_data_attrs.update({'tags': tags_str}) -%} {%- endif -%} {%- if overlaps -%} {%- set overlaps_str = overlaps if overlaps is string else overlaps|join(',') -%} {%- set _ = all_data_attrs.update({'overlaps': overlaps_str}) -%} {%- endif -%} {%- if count > 0 -%} {%- set _ = all_data_attrs.update({'count': count|string}) -%} {%- endif -%} {%- if lqip -%} {%- set _ = all_data_attrs.update({'lqip': '1'}) -%} {%- endif -%} {%- set _ = all_data_attrs.update(data_attrs) -%}