{% 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 %}