defmodule Shino.UI.Badge do @moduledoc """ Provides badge related components. ## References * [shadcn/ui - Badge](https://ui.shadcn.com/docs/components/badge). """ use Shino.UI, :component @doc """ Renders a badge. ## Examples ```heex <.badge>Default <.badge variant="secondary">Secondary <.badge variant="outline">Outline <.badge variant="destructive">Destructive ``` """ attr :class, :string, default: nil attr :variant, :string, values: ["default", "secondary", "outline", "destructive"], default: "default" attr :rest, :global slot :inner_block, required: true def badge(assigns) do ~H"""
<%= render_slot(@inner_block) %>
""" end @variant_classes %{ "default" => "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", "secondary" => "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", "outline" => "text-foreground", "destructive" => "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80" } defp variant_classes(variant) do Map.fetch!(@variant_classes, variant) end end