defmodule OopsieDaisy.Components.Button do @moduledoc """ Button component with DaisyUI styling. Generated from: tmp/daisyui/packages/docs/src/routes/(routes)/components/button/+page.md ## Examples <.button>Content """ use Phoenix.Component # Component attr(:rest, :global, include: ~w(disabled form name value type)) @doc "Additional CSS classes" attr(:class, :string, default: "") @doc "Button size" attr(:size, :atom, default: :sm, values: [:md, :xs, :sm, :lg, :xl]) @doc "Color variant" attr(:variant, :atom, default: nil, values: [nil, :neutral, :primary, :secondary, :accent, :info, :success, :warning, :error] ) @doc "Style variant" attr(:style, :atom, default: nil, values: [nil, :soft, :outline, :dash, :ghost, :link]) @doc "Modifier classes" attr(:modifier, :atom, default: nil, values: [nil, :active, :wide, :disabled, :square, :circle, :block] ) @doc """ Renders a Button component. """ slot(:inner_block, required: true) def button(assigns) do ~H""" """ end # Helper functions for class composition defp variant_class(nil), do: nil defp variant_class(:neutral), do: "btn-neutral" defp variant_class(:primary), do: "btn-primary" defp variant_class(:secondary), do: "btn-secondary" defp variant_class(:accent), do: "btn-accent" defp variant_class(:info), do: "btn-info" defp variant_class(:success), do: "btn-success" defp variant_class(:warning), do: "btn-warning" defp variant_class(:error), do: "btn-error" defp size_class(nil), do: nil defp size_class(:xs), do: "btn-xs" defp size_class(:sm), do: "btn-sm" defp size_class(:lg), do: "btn-lg" defp size_class(:xl), do: "btn-xl" defp style_class(nil), do: nil defp style_class(:soft), do: "btn-soft" defp style_class(:outline), do: "btn-outline" defp style_class(:dash), do: "btn-dash" defp style_class(:ghost), do: "btn-ghost" defp style_class(:link), do: "btn-link" defp modifier_class(nil), do: nil defp modifier_class(:active), do: "btn-active" defp modifier_class(:wide), do: "btn-wide" defp modifier_class(:disabled), do: "btn-disabled" defp modifier_class(:square), do: "btn-square" defp modifier_class(:circle), do: "btn-circle" defp modifier_class(:block), do: "btn-block" end