{% set default_button_classes = 'border inline-flex items-center px-4 py-2 shadow-sm text-sm font-medium rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-300' %}
{% set icon_button_classes = 'p-1 inline-flex items-center border border-transparent rounded-full shadow-sm text-gray-400 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-300' %}
{% set button_variants = {
'standard': 'border-gray-300 text-gray-700 bg-white hover:bg-gray-50',
'primary': 'border-transparent text-white bg-blue-600 hover:bg-blue-700',
'danger': 'border-transparent text-white bg-red-600 hover:bg-red-700',
} %}
{% macro link_button(label, url, icon_name='', variant='standard') %}
{% set classes = button_variants[variant] %}
{% if icon_name %}
{% set button_classes = classes + ' ' + 'gap-2' %}
{% endif %}
{% if icon_name %}
{{ icon(icon_name) }}
{% endif %}
{{ label }}
{% endmacro %}
{% macro primary_link_button(label, url, icon_name='') %}
{{ link_button(label, url, icon_name, 'primary') }}
{% endmacro %}
{% macro danger_link_button(label, url, icon_name='') %}
{{ link_button(label, url, icon_name, 'danger') }}
{% endmacro %}
{% set icon_button_variants = {
'standard': 'hover:bg-gray-100',
'danger': 'hover:bg-red-100 hover:text-red-900',
} %}
{% macro icon_button(icon_name, variant='standard', class='') %}
{% set classes = icon_button_classes + ' ' + icon_button_variants[variant] %}
{% endmacro %}
{% macro link_icon_button(url, icon_name, variant='standard') %}
{% set classes = icon_button_classes + ' ' + icon_button_variants[variant] %}
{{ icon(icon_name) }}
{% endmacro %}
{% macro button(label, icon_name='', variant='standard', name='', type='submit', class='') %}
{% set classes = button_variants[variant] %}
{% if icon_name %}
{% set classes = button_classes + ' ' + 'gap-2' %}
{% endif %}
{% set classes = classes + ' ' + class %}
{% endmacro %}
{% macro primary_button(label, icon_name='', name='', type='submit') %}
{{ button(label, icon_name, variant='primary', name=name, type=type) }}
{% endmacro %}
{% macro danger_button(label, icon_name='', name='', type='submit') %}
{{ button(label, icon_name, variant='danger', name=name, type=type) }}
{% endmacro %}