{# Shadcn-style Button Components for FastAPI Shadcn Admin These macros render buttons matching the Shadcn/UI design system. #} {# Button variants #} {% set button_base = "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" %} {% set button_variants = { "default": "bg-primary text-primary-foreground hover:bg-primary/90", "destructive": "bg-destructive text-destructive-foreground hover:bg-destructive/90", "outline": "border border-input bg-background hover:bg-accent hover:text-accent-foreground", "secondary": "bg-secondary text-secondary-foreground hover:bg-secondary/80", "ghost": "hover:bg-accent hover:text-accent-foreground", "link": "text-primary underline-offset-4 hover:underline" } %} {% set button_sizes = { "default": "h-10 px-4 py-2", "sm": "h-9 rounded-md px-3", "lg": "h-11 rounded-md px-8", "icon": "h-10 w-10" } %} {# Primary button #} {% macro button(text, type="button", variant="default", size="default", disabled=false, class="") %} {% endmacro %} {# Button with icon #} {% macro icon_button(icon_html, text="", variant="ghost", size="icon", disabled=false, class="") %} {% endmacro %} {# Link styled as button #} {% macro link_button(href, text, variant="default", size="default", class="") %} {{ text }} {% endmacro %} {# Submit button #} {% macro submit_button(text="Save", variant="default", size="default", disabled=false, class="") %} {% endmacro %} {# Delete button with confirmation #} {% macro delete_button(url, text="Delete", confirm_message="Are you sure?", class="") %} {% endmacro %} {# Button group #} {% macro button_group() %}