Skip to main content

priv/registry/card.json

{
  "files": [
    {
      "content": "defmodule Shadix.Components.Card do\n  @moduledoc \"\"\"\n  Card component, translated from the shadcn/ui (new-york-v4) card.\n\n  Provides `card/1` and its subcomponents `card_header/1`, `card_title/1`,\n  `card_description/1`, `card_action/1`, `card_content/1`, and `card_footer/1`.\n  Each renders a `<div>` carrying a stable `data-slot` and the verbatim shadcn\n  Tailwind classes. These are presentational only.\n  \"\"\"\n  use Phoenix.Component\n\n  import Shadix.Cn\n\n  @card \"flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm\"\n  @card_header \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\"\n  @card_title \"leading-none font-semibold\"\n  @card_description \"text-sm text-muted-foreground\"\n  @card_action \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\"\n  @card_content \"px-6\"\n  @card_footer \"flex items-center px-6 [.border-t]:pt-6\"\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n  slot(:inner_block, required: true)\n\n  def card(assigns) do\n    assigns = assign(assigns, :computed_class, cn([@card, assigns.class]))\n\n    ~H\"\"\"\n    <div data-slot=\"card\" 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 card_header(assigns) do\n    assigns = assign(assigns, :computed_class, cn([@card_header, assigns.class]))\n\n    ~H\"\"\"\n    <div data-slot=\"card-header\" 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 card_title(assigns) do\n    assigns = assign(assigns, :computed_class, cn([@card_title, assigns.class]))\n\n    ~H\"\"\"\n    <div data-slot=\"card-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 card_description(assigns) do\n    assigns = assign(assigns, :computed_class, cn([@card_description, assigns.class]))\n\n    ~H\"\"\"\n    <div data-slot=\"card-description\" 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 card_action(assigns) do\n    assigns = assign(assigns, :computed_class, cn([@card_action, assigns.class]))\n\n    ~H\"\"\"\n    <div data-slot=\"card-action\" 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 card_content(assigns) do\n    assigns = assign(assigns, :computed_class, cn([@card_content, assigns.class]))\n\n    ~H\"\"\"\n    <div data-slot=\"card-content\" 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 card_footer(assigns) do\n    assigns = assign(assigns, :computed_class, cn([@card_footer, assigns.class]))\n\n    ~H\"\"\"\n    <div data-slot=\"card-footer\" class={@computed_class} {@rest}>\n      {render_slot(@inner_block)}\n    </div>\n    \"\"\"\n  end\nend\n",
      "path": "card.ex"
    }
  ],
  "hooks": [],
  "name": "card",
  "npm_deps": [],
  "registry_deps": [
    "cn"
  ]
}