Packages
mbta_metro
0.2.2
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.65
0.0.64
0.0.62
0.0.61
0.0.60
0.0.58
0.0.57
0.0.56
0.0.55
0.0.54
0.0.53
0.0.52
0.0.51
0.0.50
0.0.49
0.0.48
0.0.47
0.0.46
0.0.45
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.34
0.0.30
0.0.27
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
0.0.1-alpha
A Phoenix LiveView component library
Current section
Files
Jump to
Current section
Files
lib/mbta_metro/components/badge.ex
defmodule MbtaMetro.Components.Badge do
@moduledoc false
use Phoenix.Component
attr :class, :string, default: ""
attr :variant, :string, default: "square", values: ["circle", "pill", "square"]
slot :inner_block, required: true
def badge(%{variant: "circle"} = assigns) do
assigns
|> assign(:variant_class, "px-0.5 py-1 w-6 h-6 rounded-full font-semibold")
|> base_badge()
end
def badge(%{variant: "pill"} = assigns) do
assigns
|> assign(:variant_class, "px-2 py-1 rounded-full font-semibold")
|> base_badge()
end
def badge(%{variant: "square"} = assigns) do
assigns
|> assign(:variant_class, "px-2 py-1 rounded-md min-w-8 font-bold")
|> base_badge()
end
defp base_badge(assigns) do
~H"""
<div class={[
"inline-flex items-center justify-center whitespace-nowrap leading-none",
@variant_class,
@class
]}>
{render_slot(@inner_block)}
</div>
"""
end
end