{
"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"
]
}