Packages

Generates type-safe Phoenix.Component modules from DaisyUI documentation. Parses DaisyUI docs, detects variants, and creates production-ready components.

Current section

Files

Jump to
oopsie_daisy lib oopsie_daisy_components alert.ex
Raw

lib/oopsie_daisy_components/alert.ex

defmodule OopsieDaisy.Components.Alert do
@moduledoc """
Alert component with DaisyUI styling.
Generated from: tmp/daisyui/packages/docs/src/routes/(routes)/components/alert/+page.md
## Examples
<.alert>Content</.alert>
"""
use Phoenix.Component
# Component
attr(:rest, :global, include: ~w(disabled form name value type))
@doc "Additional CSS classes"
attr(:class, :string, default: "")
@doc "Color variant"
attr(:variant, :atom, default: nil, values: [nil, :info, :success, :warning, :error])
@doc "Style variant"
attr(:style, :atom, default: nil, values: [nil, :soft, :outline, :dash])
@doc """
Renders a Alert component.
"""
slot(:inner_block, required: true)
def alert(assigns) do
~H"""
<div class={["alert", variant_class(@variant), style_class(@style), @class]} {@rest}>
<%= render_slot(@inner_block) %>
</div>
"""
end
# Helper functions for class composition
defp variant_class(nil), do: nil
defp variant_class(:info), do: "alert-info"
defp variant_class(:success), do: "alert-success"
defp variant_class(:warning), do: "alert-warning"
defp variant_class(:error), do: "alert-error"
defp style_class(nil), do: nil
defp style_class(:soft), do: "alert-soft"
defp style_class(:outline), do: "alert-outline"
defp style_class(:dash), do: "alert-dash"
end