Skip to main content

priv/registry/breadcrumb.json

{
  "files": [
    {
      "content": "defmodule Shadix.Components.Breadcrumb do\n  @moduledoc \"\"\"\n  Breadcrumb component, translated from the shadcn/ui `breadcrumb` component.\n\n  Exposes one function per shadcn subcomponent:\n  `breadcrumb/1`, `breadcrumb_list/1`, `breadcrumb_item/1`, `breadcrumb_link/1`,\n  `breadcrumb_page/1`, `breadcrumb_separator/1`, and `breadcrumb_ellipsis/1`.\n  \"\"\"\n  use Phoenix.Component\n  import Shadix.Cn\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n  slot(:inner_block, required: true)\n\n  def breadcrumb(assigns) do\n    assigns = assign(assigns, :computed_class, cn([assigns.class]))\n\n    ~H\"\"\"\n    <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" class={@computed_class} {@rest}>\n      {render_slot(@inner_block)}\n    </nav>\n    \"\"\"\n  end\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n  slot(:inner_block, required: true)\n\n  def breadcrumb_list(assigns) do\n    class =\n      cn([\n        \"flex flex-wrap items-center gap-1.5 text-sm break-words text-muted-foreground sm:gap-2.5\",\n        assigns.class\n      ])\n\n    assigns = assign(assigns, :computed_class, class)\n\n    ~H\"\"\"\n    <ol data-slot=\"breadcrumb-list\" class={@computed_class} {@rest}>\n      {render_slot(@inner_block)}\n    </ol>\n    \"\"\"\n  end\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n  slot(:inner_block, required: true)\n\n  def breadcrumb_item(assigns) do\n    class = cn([\"inline-flex items-center gap-1.5\", assigns.class])\n    assigns = assign(assigns, :computed_class, class)\n\n    ~H\"\"\"\n    <li data-slot=\"breadcrumb-item\" class={@computed_class} {@rest}>\n      {render_slot(@inner_block)}\n    </li>\n    \"\"\"\n  end\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global, include: ~w(href hreflang target rel download))\n  slot(:inner_block, required: true)\n\n  def breadcrumb_link(assigns) do\n    class = cn([\"transition-colors hover:text-foreground\", assigns.class])\n    assigns = assign(assigns, :computed_class, class)\n\n    ~H\"\"\"\n    <a data-slot=\"breadcrumb-link\" class={@computed_class} {@rest}>\n      {render_slot(@inner_block)}\n    </a>\n    \"\"\"\n  end\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n  slot(:inner_block, required: true)\n\n  def breadcrumb_page(assigns) do\n    class = cn([\"font-normal text-foreground\", assigns.class])\n    assigns = assign(assigns, :computed_class, class)\n\n    ~H\"\"\"\n    <span\n      data-slot=\"breadcrumb-page\"\n      role=\"link\"\n      aria-disabled=\"true\"\n      aria-current=\"page\"\n      class={@computed_class}\n      {@rest}\n    >\n      {render_slot(@inner_block)}\n    </span>\n    \"\"\"\n  end\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n  slot(:inner_block)\n\n  def breadcrumb_separator(assigns) do\n    class = cn([\"[&>svg]:size-3.5\", assigns.class])\n    assigns = assign(assigns, :computed_class, class)\n\n    ~H\"\"\"\n    <li\n      data-slot=\"breadcrumb-separator\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      class={@computed_class}\n      {@rest}\n    >\n      <%= if @inner_block == [] do %>\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          width=\"24\"\n          height=\"24\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          stroke=\"currentColor\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        >\n          <path d=\"m9 18 6-6-6-6\" />\n        </svg>\n      <% else %>\n        {render_slot(@inner_block)}\n      <% end %>\n    </li>\n    \"\"\"\n  end\n\n  attr(:class, :string, default: nil)\n  attr(:rest, :global)\n\n  def breadcrumb_ellipsis(assigns) do\n    class = cn([\"flex size-9 items-center justify-center\", assigns.class])\n    assigns = assign(assigns, :computed_class, class)\n\n    ~H\"\"\"\n    <span\n      data-slot=\"breadcrumb-ellipsis\"\n      role=\"presentation\"\n      aria-hidden=\"true\"\n      class={@computed_class}\n      {@rest}\n    >\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"24\"\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        class=\"size-4\"\n      >\n        <circle cx=\"12\" cy=\"12\" r=\"1\" />\n        <circle cx=\"19\" cy=\"12\" r=\"1\" />\n        <circle cx=\"5\" cy=\"12\" r=\"1\" />\n      </svg>\n      <span class=\"sr-only\">More</span>\n    </span>\n    \"\"\"\n  end\nend\n",
      "path": "breadcrumb.ex"
    }
  ],
  "hooks": [],
  "name": "breadcrumb",
  "npm_deps": [],
  "registry_deps": [
    "cn"
  ]
}