From c712f72aa8815c899119092472bf237b9b5f77c3 Mon Sep 17 00:00:00 2001 From: Max Veytsman Date: Wed, 12 Oct 2022 15:03:16 -0400 Subject: [PATCH] Allow stroke, stroke-width and fill to be overloaded --- assets/heroicons.exs | 34 +- lib/heroicons.ex | 5614 ++++++++++++++++++++++++++++----------- test/heroicons_test.exs | 27 +- 3 files changed, 4163 insertions(+), 1512 deletions(-) diff --git a/assets/heroicons.exs b/assets/heroicons.exs index db4d275..4e9764b 100644 --- a/assets/heroicons.exs +++ b/assets/heroicons.exs @@ -50,35 +50,45 @@ defmodule Heroicons do """ use Phoenix.Component - defp svg(assigns, outline, solid, mini) do + defp svg(assigns) do case assigns do - %{mini: false, solid: false} -> svg_outline(assign(assigns, paths: outline)) - %{solid: true, mini: false} -> svg_solid(assign(assigns, paths: solid)) - %{mini: true, solid: false} -> svg_mini(assign(assigns, paths: mini)) + %{mini: false, solid: false} -> + ~H"<.svg_outline {@rest}><%%= {:safe, @paths[:outline]} %>" + %{solid: true, mini: false} -> + ~H"<.svg_solid {@rest}><%%= {:safe, @paths[:solid]} %>" + %{mini: true, solid: false} -> + ~H"<.svg_mini {@rest}><%%= {:safe, @paths[:mini]} %>" %{} -> raise ArgumentError, "expected either mini or solid, but got both." end end + + attr :rest, :global, default: %{"aria-hidden": "true", fill: "none", viewBox: "0 0 24 24", "stroke-width": "1.5", stroke: "currentColor"} + slot :inner_block, required: true defp svg_outline(assigns) do ~H""" -