Skip to main content

priv/registry/alert.json

{
  "files": [
    {
      "content": "defmodule Shadix.Components.Alert do\n  @moduledoc \"\"\"\n  Alert component translated from the shadcn-ui \"alert\" component.\n\n  Provides `alert/1`, `alert_title/1`, and `alert_description/1` as\n  presentational Phoenix function components.\n  \"\"\"\n  use Phoenix.Component\n  import Shadix.Cn\n\n  @base \"relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\"\n\n  @variants %{\n    \"default\" => \"bg-card text-card-foreground\",\n    \"destructive\" =>\n      \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current\"\n  }\n\n  attr(:variant, :string, default: \"default\", values: ~w(default destructive))\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n  slot(:inner_block, required: true)\n\n  def alert(assigns) do\n    class = cn([@base, Map.fetch!(@variants, assigns.variant), assigns.class])\n    assigns = assign(assigns, :computed_class, class)\n\n    ~H\"\"\"\n    <div role=\"alert\" data-slot=\"alert\" data-variant={@variant} class={@computed_class} {@rest}>\n      {render_slot(@inner_block)}\n    </div>\n    \"\"\"\n  end\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n  slot(:inner_block, required: true)\n\n  def alert_title(assigns) do\n    class = cn([\"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\", assigns.class])\n    assigns = assign(assigns, :computed_class, class)\n\n    ~H\"\"\"\n    <div data-slot=\"alert-title\" class={@computed_class} {@rest}>\n      {render_slot(@inner_block)}\n    </div>\n    \"\"\"\n  end\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n  slot(:inner_block, required: true)\n\n  def alert_description(assigns) do\n    class =\n      cn([\n        \"col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed\",\n        assigns.class\n      ])\n\n    assigns = assign(assigns, :computed_class, class)\n\n    ~H\"\"\"\n    <div data-slot=\"alert-description\" class={@computed_class} {@rest}>\n      {render_slot(@inner_block)}\n    </div>\n    \"\"\"\n  end\nend\n",
      "path": "alert.ex"
    }
  ],
  "hooks": [],
  "name": "alert",
  "npm_deps": [],
  "registry_deps": [
    "cn"
  ]
}