defmodule Paleta.Components.Input do use Phoenix.Component import Paleta.Components.FieldHelper attr(:label, :string, required: true) attr(:name, :string, default: nil) attr(:value, :string, default: nil) attr(:field, Phoenix.HTML.FormField, default: nil) attr(:required, :boolean, default: false) attr(:placeholder, :string, default: "") attr(:class, :string, default: "") attr(:rest, :global) attr(:errors, :list, default: []) def text(%{class: class} = assigns) do assigns = assigns |> assign_basic_attrs() |> assign( :class, "form-input mt-1.5 w-full rounded-lg border border-slate-300 bg-transparent px-3 py-2 placeholder:text-slate-400/70 hover:border-slate-400 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent #{class}" ) ~H""" """ end attr(:label, :string, required: true) attr(:name, :string, required: true) attr(:value, :string, default: nil) attr(:required, :boolean, default: false) attr(:field, Phoenix.HTML.FormField, default: nil) attr(:placeholder, :string, default: "") attr(:class, :string, default: "") attr(:rest, :global) attr(:errors, :list, default: []) slot(:sufix, required: true) def input_group(%{class: class} = assigns) do assigns = assigns |> assign_basic_attrs() |> assign( :class, "form-input w-full rounded-l-lg border border-slate-300 bg-transparent px-3 py-2 placeholder:text-slate-400/70 hover:z-10 hover:border-slate-400 focus:z-10 focus:border-primary dark:border-navy-450 dark:hover:border-navy-400 dark:focus:border-accent #{class}" ) ~H"""
<%= @label %>* <%= msg %>
""" end attr(:label, :string, required: true) attr(:name, :string, required: true) attr(:value, :string, default: nil) attr(:field, Phoenix.HTML.FormField, default: nil) attr(:required, :boolean, default: false) attr(:placeholder, :string, default: "") attr(:rest, :global) attr(:errors, :list, default: []) def datepicker(assigns) do assigns = assigns |> assign_basic_attrs() ~H""" """ end attr(:name, :string, default: nil) attr(:value, :string, default: nil) attr(:rest, :global) attr(:field, Phoenix.HTML.FormField, default: nil) def hidden_input(assigns) do assigns = assigns |> assign_basic_attrs() ~H""" """ end attr(:label, :string, required: true) attr(:name, :string, default: nil) attr(:value, :string, default: nil) attr(:field, Phoenix.HTML.FormField, default: nil) attr(:placeholder, :string, default: "") attr(:rows, :integer, default: 4) attr(:required, :boolean, default: false) attr(:rest, :global) attr(:errors, :list, default: []) def textarea(assigns) do assigns = assigns |> assign_basic_attrs() ~H""" """ end @doc """ Generates a generic error message. """ slot(:inner_block, required: true) def error(assigns) do ~H"""

<%= render_slot(@inner_block) %>

""" end end