defmodule <%= @module %> do
@moduledoc """
The `<%= @module %>` module provides a flexible and interactive stepper component
for Phoenix LiveView applications. It supports both horizontal and vertical layouts,
making it ideal for displaying multi-step processes, such as onboarding, forms, or any
workflow that requires users to follow a sequence of steps.
This module allows extensive customization options, including size, color themes, border styles,
and spacing between steps. Each step can display icons, titles, descriptions, and custom content.
The component also offers various step states like `current`, `loading`, `completed`, and `canceled`,
enabling a visual indication of the user's progress.
The `<%= @module %>` enhances user experience by providing a clear and concise representation
of step-by-step workflows, ensuring users can easily track their position and progress within the application.
"""
use Phoenix.Component
<%= if is_nil(@type) or "stepper" in @type do %>
@doc """
Renders a customizable `stepper` component that visually represents a multi-step process.
This component can be configured to display either horizontally or vertically, with various
styling options like color, size, and spacing.
## Examples
```elixir
<.stepper color="info" size="extra_large">
<.stepper_section step="current" title="First step" description="Create an account" />
<.stepper_section title="Second Step" description="Verify email" />
<.stepper_section title="Third Step" description="Get full access" />
```
"""
@doc type: :component
attr :id, :string,
default: nil,
doc: "A unique identifier is used to manage state and interaction"
attr :size, :string,
default: "small",
doc:
"Determines the overall size of the elements, including padding, font size, and other items"
attr :margin, :string, default: "medium", doc: "Determines the element margin"
attr :color, :string, default: "base", doc: "Determines color theme"
attr :space, :string, default: "", doc: "Space between items"
attr :border, :string, default: "extra_small", doc: "Determines border style"
attr :font_weight, :string,
default: "font-normal",
doc: "Determines custom class for the font weight"
attr :max_width, :string, default: "", doc: "Determines the style of element max width"
attr :seperator_size, :string, default: "extra_small", doc: "Determines the seperator size"
attr :variant, :string, default: "base", doc: "Determines the style"
attr :vertical, :boolean, default: false, doc: "Determines whether element is vertical"
attr :class, :string, default: nil, doc: "Custom CSS class for additional styling"
attr :col_step, :boolean, default: false, doc: "Custom CSS class for additional styling"
attr :col_step_position, :string, default: "start", doc: "Custom CSS class for additional styling"
attr :rest, :global,
doc:
"Global attributes can define defaults which are merged with attributes provided by the caller"
slot :inner_block, required: false, doc: "Inner block that renders HEEx content"
@spec stepper(map()) :: Phoenix.LiveView.Rendered.t()
def stepper(%{vertical: true} = assigns) do
~H"""
{render_slot(@inner_block)}
"""
end
def stepper(assigns) do
~H"""
{render_slot(@inner_block)}
"""
end
<% end %>
<%= if is_nil(@type) or "stepper_section" in @type do %>
@doc """
Renders a `stepper_section` within the stepper component, representing each individual step of
a multi-step process.
This section can display information such as the step number, title, description, and an icon.
It can also be customized to show different states, such as current, loading, completed, or canceled.
## Examples
Horizontal Step Section:
```elixir
<.stepper_section step="current" title="First step" description="Create an account" />
<.stepper_section title="Second Step" description="Verify email" />
<.stepper_section title="Third Step" description="Get full access" />
```
"""
@doc type: :component
attr :id, :string,
default: nil,
doc: "A unique identifier is used to manage state and interaction"
attr :class, :string, default: nil, doc: "Custom CSS class for additional styling"
attr :size, :string,
default: "small",
doc:
"Determines the overall size of the elements, including padding, font size, and other items"
attr :step, :string,
values: ["none", "current", "loading", "completed", "canceled"],
default: "none"
attr :icon, :string, default: nil, doc: "Icon displayed alongside of an item"
attr :title, :string, default: nil, doc: "Specifies the title of the element"
attr :description, :string, default: nil, doc: "Determines a short description"
attr :step_number, :integer, default: 1
attr :vertical, :boolean, default: false, doc: "Determines whether element is vertical"
attr :clickable, :boolean,
default: true,
doc: "Determines if the element can be activated on click"
attr :reverse, :boolean, default: false, doc: "Switches the order of the element and label"
attr :space, :string, default: "small", doc: "Switches the order of the element and label"
attr :border, :string, default: "", doc: "Determines border style"
slot :inner_block, required: false, doc: "Inner block that renders HEEx content"
def stepper_section(%{vertical: true} = assigns) do
~H"""
"""
end
def stepper_section(assigns) do
~H"""
"""
end
<% end %>
defp loader(assigns) do
~H"""
"""
end
defp step_visibility() do
[
"[&_.stepper-icon]:hidden",
"[&_.stepper-icon]:invisible",
"[&_.stepper-icon]:opacity-0",
"[&_.stepper-loading-icon]:block",
"[&_.stepper-loading-icon]:visible",
"[&_.stepper-loading-icon]:opacity-100",
"[&_.stepper-completed-step_.stepper-completed-icon]:block",
"[&_.stepper-completed-step_.stepper-completed-icon]:visible",
"[&_.stepper-completed-step_.stepper-completed-icon]:opacity-100",
"[&_.stepper-completed-step_.step-symbol]:hidden",
"[&_.stepper-completed-step_.step-symbol]:invisible",
"[&_.stepper-completed-step_.step-symbol]:opacity-0",
"[&_.stepper-loading-step_.step-symbol]:hidden",
"[&_.stepper-loading-step_.step-symbol]:invisible",
"[&_.stepper-loading-step_.step-symbol]:opacity-0"
]
end
defp content_space("extra_small", reverse?) do
[
(reverse? && "group-[:not(.col-step)_.stepper-content]:me-1") || "group-[:not(.col-step)_.stepper-content]:ms-1"
]
end
defp content_space("small", reverse?) do
[
(reverse? && "group-[:not(.col-step)_.stepper-content]:me-2") || "group-[:not(.col-step)_.stepper-content]:ms-2"
]
end
defp content_space("medium", reverse?) do
[
(reverse? && "group-[:not(.col-step)_.stepper-content]:me-3") || "group-[:not(.col-step)_.stepper-content]:ms-3"
]
end
defp content_space("large", reverse?) do
[
(reverse? && "group-[:not(.col-step)_.stepper-content]:me-4") || "group-[:not(.col-step)_.stepper-content]:ms-4"
]
end
defp content_space("extra_large", reverse?) do
[
(reverse? && "group-[:not(.col-step)_.stepper-content]:me-5") || "group-[:not(.col-step)_.stepper-content]:ms-5"
]
end
defp col_step_position("start") do
[
"[&.col-step-position>button]:items-start [&.col-step-position>button]:text-start"
]
end
defp col_step_position("end") do
[
"[&.col-step-position>button]:items-end [&.col-step-position>button]:text-end"
]
end
defp col_step_position("center") do
[
"[&.col-step-position>button]:items-center [&.col-step-position>button]:text-center"
]
end
defp seperator_margin("none") do
[
"[&_.stepper-seperator]:mx-0"
]
end
defp seperator_margin("extra_small") do
[
"[&_.stepper-seperator]:mx-1",
"xl:[&_.stepper-seperator]:mx-3"
]
end
defp seperator_margin("small") do
[
"[&_.stepper-seperator]:mx-2",
"xl:[&_.stepper-seperator]:mx-4"
]
end
defp seperator_margin("medium") do
[
"[&_.stepper-seperator]:mx-2",
"xl:[&_.stepper-seperator]:mx-6"
]
end
defp seperator_margin("large") do
[
"[&_.stepper-seperator]:mx-3",
"xl:[&_.stepper-seperator]:mx-8"
]
end
defp seperator_margin("extra_large") do
[
"[&_.stepper-seperator]:mx-3",
"xl:[&_.stepper-seperator]:mx-10"
]
end
defp seperator_margin(params) when is_binary(params), do: params
defp border_class("extra_small") do
[
"[&.vertical-stepper_.stepper-seperator]:border-s",
"[&:not(.vertical-stepper)_.stepper-seperator]:border-t"
]
end
defp border_class("small") do
[
"[&.vertical-stepper_.stepper-seperator]:border-s-2",
"[&:not(.vertical-stepper)_.stepper-seperator]:border-t-2"
]
end
defp border_class("medium") do
[
"[&.vertical-stepper_.stepper-seperator]:border-s-[3px]",
"[&:not(.vertical-stepper)_.stepper-seperator]:border-t-[3px]"
]
end
defp border_class("large") do
[
"[&.vertical-stepper_.stepper-seperator]:border-s-4",
"[&:not(.vertical-stepper)_.stepper-seperator]:border-t-4"
]
end
defp border_class("extra_large") do
[
"[&.vertical-stepper_.stepper-seperator]:border-s-[5px]",
"[&:not(.vertical-stepper)_.stepper-seperator]:border-t-[5px]"
]
end
defp border_class(params) when is_binary(params), do: params
<%= if is_nil(@space) or "extra_small" in @space do %>
defp space_class("extra_small"), do: "space-y-1"
<% end %>
<%= if is_nil(@space) or "small" in @space do %>
defp space_class("small"), do: "space-y-2"
<% end %>
<%= if is_nil(@space) or "medium" in @space do %>
defp space_class("medium"), do: "space-y-3"
<% end %>
<%= if is_nil(@space) or "large" in @space do %>
defp space_class("large"), do: "space-y-4"
<% end %>
<%= if is_nil(@space) or "extra_large" in @space do %>
defp space_class("extra_large"), do: "space-y-5"
<% end %>
defp space_class(params) when is_binary(params), do: params
defp wrapper_width("extra_small"), do: "max-w-1/4"
defp wrapper_width("small"), do: "max-w-2/4"
defp wrapper_width("medium"), do: "max-w-3/4"
defp wrapper_width("large"), do: "max-w-11/12"
defp wrapper_width("extra_large"), do: "max-"
defp wrapper_width(params) when is_binary(params), do: params
<%= if is_nil(@size) or "extra_small" in @size do %>
defp size_class("extra_small") do
[
"text-xs [&_.stepper-step]:size-7 [&_.stepper-icon]:size-4",
"[&_.vertical-step:not(:last-child)]:min-h-10",
"[&_.stepper-loading-icon]:w-8",
]
end
<% end %>
<%= if is_nil(@size) or "small" in @size do %>
defp size_class("small") do
[
"text-sm [&_.stepper-step]:size-8 [&_.stepper-icon]:size-5",
"[&_.vertical-step:not(:last-child)]:min-h-12",
"[&_.stepper-loading-icon]:w-10",
]
end
<% end %>
<%= if is_nil(@size) or "medium" in @size do %>
defp size_class("medium") do
[
"text-base [&_.stepper-step]:size-9 [&_.stepper-icon]:size-6",
"[&_.vertical-step:not(:last-child)]:min-h-14",
"[&_.stepper-loading-icon]:w-11",
]
end
<% end %>
<%= if is_nil(@size) or "large" in @size do %>
defp size_class("large") do
[
"text-lg [&_.stepper-step]:size-10 [&_.stepper-icon]:size-7",
"[&_.vertical-step:not(:last-child)]:min-h-16",
"[&_.stepper-loading-icon]:w-12",
]
end
<% end %>
<%= if is_nil(@size) or "extra_large" in @size do %>
defp size_class("extra_large") do
[
"text-xl [&_.stepper-step]:size-11 [&_.stepper-icon]:size-8",
"[&_.vertical-step:not(:last-child)]:min-h-20",
"[&_.stepper-loading-icon]:w-14",
]
end
<% end %>
defp size_class(params) when is_binary(params), do: params
defp seperator_size("extra_small"), do: "[&_.stepper-seperator]:h-px"
defp seperator_size("small"), do: "[&_.stepper-seperator]:h-0.5"
defp seperator_size("medium"), do: "[&_.stepper-seperator]:h-1"
defp seperator_size("large"), do: "[&_.stepper-seperator]:h-1.5"
defp seperator_size("extra_large"), do: "[&_.stepper-seperator]:h-2"
defp seperator_size(params) when is_binary(params), do: params
# colors
# stepper-loading-step, stepper-current-step, stepper-completed-step, stepper-canceled-step
<%= if is_nil(@variant) or "base" in @variant do %>
<%= if is_nil(@color) or "base" in @color do %>
defp color_variant("base", "base") do
[
"[&_.stepper-step]:bg-white [&_.stepper-step]:text-[#09090b] [&_.stepper-loading-icon]:fill-[#2563EB]",
"[&_.stepper-step]:border-[#e4e4e7] [&_.stepper-current-step_.stepper-step]:border-[#2563EB]",
"[&_.stepper-current-step_.stepper-step]:text-[#2563EB]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#14B8A6] [&_.stepper-completed-step_.stepper-step]:border-[#14B8A6]",
"[&_.stepper-completed-step_.stepper-step]:text-white",
"dark:[&_.stepper-step]:bg-[#18181B] dark:[&_.stepper-step]:text-[#FAFAFA] dark:[&_.stepper-step]:border-[#27272a]",
"dark:[&_.stepper-current-step_.stepper-step]:text-[#1971C2]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#1971C2]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#099268] dark:[&_.stepper-completed-step_.stepper-step]:border-[#099268]",
"dark:[&_.stepper-completed-step_.stepper-step]:text-white",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#FA5252] [&_.stepper-canceled-step_.stepper-step]:border-[#FA5252]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#E03131] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#E03131]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-white",
"[&_.stepper-seperator]:border-[#e4e4e7] dark:[&_.stepper-seperator]:border-[#27272a]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#14B8A6] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#099268]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#14B8A6]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#099268]"
]
end
<% end %>
<% end %>
<%= if is_nil(@variant) or "default" in @variant do %>
<%= if is_nil(@color) or "natural" in @color do %>
defp color_variant("natural", "default") do
[
"[&_.stepper-step]:bg-[#F3F3F3] [&_.stepper-step]:text-[#282828] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#282828]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#E8E8E8] [&_.stepper-completed-step_.stepper-step]:border-black",
"dark:[&_.stepper-step]:bg-[#4B4B4B] dark:[&_.stepper-step]:text-[#E8E8E8]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#E8E8E8]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#5E5E5E] dark:[&_.stepper-completed-step_.stepper-step]:border-white",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#282828] dark:[&_.stepper-seperator]:border-[#E8E8E8]",
"[&_.stepper-completed-step+.stepper-seperator]:border-black dark:[&_.stepper-completed-step+.stepper-seperator]:border-white",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-black",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-white"
]
end
<% end %>
<%= if is_nil(@color) or "primary" in @color do %>
defp color_variant("primary", "default") do
[
"[&_.stepper-step]:bg-[#E2F8FB] [&_.stepper-step]:text-[#016974] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#016974]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#CDEEF3] [&_.stepper-completed-step_.stepper-step]:border-[#1A535A]",
"dark:[&_.stepper-step]:bg-[#002D33] dark:[&_.stepper-step]:text-[#77D5E3]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#77D5E3]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#1A535A] dark:[&_.stepper-completed-step_.stepper-step]:border-[#B0E7EF]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#016974] dark:[&_.stepper-seperator]:border-[#77D5E3]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#1A535A] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#B0E7EF]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#1A535A]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#B0E7EF]"
]
end
<% end %>
<%= if is_nil(@color) or "secondary" in @color do %>
defp color_variant("secondary", "default") do
[
"[&_.stepper-step]:bg-[#EFF4FE] [&_.stepper-step]:text-[#175BCC] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#175BCC]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#DEE9FE] [&_.stepper-completed-step_.stepper-step]:border-[#1948A3]",
"dark:[&_.stepper-step]:bg-[#002661] dark:[&_.stepper-step]:text-[#A9C9FF]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#A9C9FF]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#1948A3] dark:[&_.stepper-completed-step_.stepper-step]:border-[#CDDEFF]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#175BCC] dark:[&_.stepper-seperator]:border-[#A9C9FF]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#1948A3] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#CDDEFF]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#1948A3]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#CDDEFF]"
]
end
<% end %>
<%= if is_nil(@color) or "success" in @color do %>
defp color_variant("success", "default") do
[
"[&_.stepper-step]:bg-[#EAF6ED] [&_.stepper-step]:text-[#166C3B] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#166C3B]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#D3EFDA] [&_.stepper-completed-step_.stepper-step]:border-[#0D572D]",
"dark:[&_.stepper-step]:bg-[#002F14] dark:[&_.stepper-step]:text-[#7FD99A]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#7FD99A]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#0D572D] dark:[&_.stepper-completed-step_.stepper-step]:border-[#B1EAC2]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#166C3B] dark:[&_.stepper-seperator]:border-[#7FD99A]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#0D572D] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#B1EAC2]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#0D572D]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#B1EAC2]"
]
end
<% end %>
<%= if is_nil(@color) or "warning" in @color do %>
defp color_variant("warning", "default") do
[
"[&_.stepper-step]:bg-[#FFF7E6] [&_.stepper-step]:text-[#976A01] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#976A01]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#FEEFCC] [&_.stepper-completed-step_.stepper-step]:border-[#654600]",
"dark:[&_.stepper-step]:bg-[#322300] dark:[&_.stepper-step]:text-[#FDD067]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#FDD067]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#654600] dark:[&_.stepper-completed-step_.stepper-step]:border-[#FEDF99]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#976A01] dark:[&_.stepper-seperator]:border-[#FDD067]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#654600] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#FEDF99]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#654600]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#FEDF99]"
]
end
<% end %>
<%= if is_nil(@color) or "danger" in @color do %>
defp color_variant("danger", "default") do
[
"[&_.stepper-step]:bg-[#FFF0EE] [&_.stepper-step]:text-[#BB032A] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#BB032A]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#FFE1DE] [&_.stepper-completed-step_.stepper-step]:border-[#950F22]",
"dark:[&_.stepper-step]:bg-[#520810] dark:[&_.stepper-step]:text-[#FFB2AB]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#FFB2AB]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#950F22] dark:[&_.stepper-completed-step_.stepper-step]:border-[#FFD2CD]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#BB032A] dark:[&_.stepper-seperator]:border-[#FFB2AB]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#950F22] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#FFD2CD]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#950F22]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#FFD2CD]"
]
end
<% end %>
<%= if is_nil(@color) or "info" in @color do %>
defp color_variant("info", "default") do
[
"[&_.stepper-step]:bg-[#E7F6FD] [&_.stepper-step]:text-[#08638C] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#08638C]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#CFEDFB] [&_.stepper-completed-step_.stepper-step]:border-[#06425D]",
"dark:[&_.stepper-step]:bg-[#03212F] dark:[&_.stepper-step]:text-[#6EC9F2]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#6EC9F2]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#06425D] dark:[&_.stepper-completed-step_.stepper-step]:border-[#9FDBF6]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#08638C] dark:[&_.stepper-seperator]:border-[#6EC9F2]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#06425D] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#9FDBF6]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#06425D]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#9FDBF6]"
]
end
<% end %>
<%= if is_nil(@color) or "misc" in @color do %>
defp color_variant("misc", "default") do
[
"[&_.stepper-step]:bg-[#F6F0FE] [&_.stepper-step]:text-[#653C94] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#653C94]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#EEE0FD] [&_.stepper-completed-step_.stepper-step]:border-[#442863]",
"dark:[&_.stepper-step]:bg-[#221431] dark:[&_.stepper-step]:text-[#CBA2FA]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#CBA2FA]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#44286] dark:[&_.stepper-completed-step_.stepper-step]:border-[#DDC1FC]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#653C94] dark:[&_.stepper-seperator]:border-[#CBA2FA]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#442863] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#DDC1FC]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#442863]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#DDC1FC]"
]
end
<% end %>
<%= if is_nil(@color) or "dawn" in @color do %>
defp color_variant("dawn", "default") do
[
"[&_.stepper-step]:bg-[#FBF2ED] [&_.stepper-step]:text-[#7E4B2A] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#7E4B2A]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#F6E5DA] [&_.stepper-completed-step_.stepper-step]:border-[#54321C]",
"dark:[&_.stepper-step]:bg-[#2A190E] dark:[&_.stepper-step]:text-[#E4B190]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#E4B190]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#54321C] dark:[&_.stepper-completed-step_.stepper-step]:border-[#EDCBB5]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#7E4B2A] dark:[&_.stepper-seperator]:border-[#E4B190]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#54321C] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#EDCBB5]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#54321C]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#EDCBB5]"
]
end
<% end %>
<%= if is_nil(@color) or "silver" in @color do %>
defp color_variant("silver", "default") do
[
"[&_.stepper-step]:bg-[#F3F3F3] [&_.stepper-step]:text-[#727272] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#727272]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#E8E8E8] [&_.stepper-completed-step_.stepper-step]:border-[#5E5E5E]",
"dark:[&_.stepper-step]:bg-[#4B4B4B] dark:[&_.stepper-step]:text-[#BBBBBB]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#BBBBBB]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#5E5E5E] dark:[&_.stepper-completed-step_.stepper-step]:border-[#DDDDDD]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#727272] dark:[&_.stepper-seperator]:border-[#BBBBBB]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#5E5E5E] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#DDDDDD]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#5E5E5E]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#DDDDDD]"
]
end
<% end %>
<% end %>
<%= if is_nil(@variant) or "gradient" in @variant do %>
<%= if is_nil(@color) or "natural" in @color do %>
defp color_variant("natural", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#282828] to-[#727272] [&_.stepper-step]:text-white",
"dark:from-[#A6A6A6] dark:to-[#FFFFFF] dark:[&_.stepper-step]:text-black",
"[&_.stepper-step]:text-[#282828] [&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#282828]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#E8E8E8] [&_.stepper-completed-step_.stepper-step]:border-black",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#E8E8E8]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#5E5E5E] dark:[&_.stepper-completed-step_.stepper-step]:border-white",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#282828] dark:[&_.stepper-seperator]:border-[#E8E8E8]",
"[&_.stepper-completed-step+.stepper-seperator]:border-black dark:[&_.stepper-completed-step+.stepper-seperator]:border-white",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-black",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-white"
]
end
<% end %>
<%= if is_nil(@color) or "primary" in @color do %>
defp color_variant("primary", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#016974] to-[#01B8CA] [&_.stepper-step]:text-white",
"dark:from-[#01B8CA] dark:to-[#B0E7EF] dark:[&_.stepper-step]:text-black",
"[&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#016974]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#CDEEF3] [&_.stepper-completed-step_.stepper-step]:border-[#1A535A]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#77D5E3]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#1A535A] dark:[&_.stepper-completed-step_.stepper-step]:border-[#B0E7EF]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#016974] dark:[&_.stepper-seperator]:border-[#77D5E3]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#1A535A] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#B0E7EF]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#1A535A]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#B0E7EF]"
]
end
<% end %>
<%= if is_nil(@color) or "secondary" in @color do %>
defp color_variant("secondary", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#175BCC] to-[#6DAAFB] [&_.stepper-step]:text-white",
"dark:from-[#6DAAFB] dark:to-[#CDDEFF] dark:[&_.stepper-step]:text-black",
"[&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#175BCC]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#DEE9FE] [&_.stepper-completed-step_.stepper-step]:border-[#1948A3]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#A9C9FF]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#1948A3] dark:[&_.stepper-completed-step_.stepper-step]:border-[#CDDEFF]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#175BCC] dark:[&_.stepper-seperator]:border-[#A9C9FF]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#1948A3] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#CDDEFF]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#1948A3]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#CDDEFF]"
]
end
<% end %>
<%= if is_nil(@color) or "success" in @color do %>
defp color_variant("success", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#166C3B] to-[#06C167] [&_.stepper-step]:text-white",
"dark:from-[#06C167] dark:to-[#B1EAC2] dark:[&_.stepper-step]:text-black",
"[&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#166C3B]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#D3EFDA] [&_.stepper-completed-step_.stepper-step]:border-[#0D572D]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#7FD99A]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#0D572D] dark:[&_.stepper-completed-step_.stepper-step]:border-[#B1EAC2]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#166C3B] dark:[&_.stepper-seperator]:border-[#7FD99A]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#0D572D] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#B1EAC2]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#0D572D]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#B1EAC2]"
]
end
<% end %>
<%= if is_nil(@color) or "warning" in @color do %>
defp color_variant("warning", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#976A01] to-[#FDC034] [&_.stepper-step]:text-white",
"dark:from-[#FDC034] dark:to-[#FEDF99] dark:[&_.stepper-step]:text-black",
"[&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#976A01]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#FEEFCC] [&_.stepper-completed-step_.stepper-step]:border-[#654600]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#FDD067]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#654600] dark:[&_.stepper-completed-step_.stepper-step]:border-[#FEDF99]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#976A01] dark:[&_.stepper-seperator]:border-[#FDD067]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#654600] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#FEDF99]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#654600]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#FEDF99]"
]
end
<% end %>
<%= if is_nil(@color) or "danger" in @color do %>
defp color_variant("danger", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#BB032A] to-[#FC7F79] [&_.stepper-step]:text-white",
"dark:from-[#FC7F79] dark:to-[#FFD2CD] dark:[&_.stepper-step]:text-black",
"[&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#BB032A]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#FFE1DE] [&_.stepper-completed-step_.stepper-step]:border-[#950F22]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#FFB2AB]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#950F22] dark:[&_.stepper-completed-step_.stepper-step]:border-[#FFD2CD]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#BB032A] dark:[&_.stepper-seperator]:border-[#FFB2AB]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#950F22] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#FFD2CD]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#950F22]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#FFD2CD]"
]
end
<% end %>
<%= if is_nil(@color) or "info" in @color do %>
defp color_variant("info", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#08638C] to-[#3EB7ED] [&_.stepper-step]:text-white",
"dark:from-[#3EB7ED] dark:to-[#9FDBF6] dark:[&_.stepper-step]:text-black",
"[&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#08638C]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#CFEDFB] [&_.stepper-completed-step_.stepper-step]:border-[#06425D]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#6EC9F2]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#06425D] dark:[&_.stepper-completed-step_.stepper-step]:border-[#9FDBF6]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#08638C] dark:[&_.stepper-seperator]:border-[#6EC9F2]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#06425D] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#9FDBF6]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#06425D]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#9FDBF6]"
]
end
<% end %>
<%= if is_nil(@color) or "misc" in @color do %>
defp color_variant("misc", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#653C94] to-[#BA83F9] [&_.stepper-step]:text-white",
"dark:from-[#BA83F9] dark:to-[#DDC1FC] dark:[&_.stepper-step]:text-black",
"[&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#653C94]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#EEE0FD] [&_.stepper-completed-step_.stepper-step]:border-[#442863]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#CBA2FA]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#44286] dark:[&_.stepper-completed-step_.stepper-step]:border-[#DDC1FC]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#653C94] dark:[&_.stepper-seperator]:border-[#CBA2FA]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#442863] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#DDC1FC]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#442863]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#DDC1FC]"
]
end
<% end %>
<%= if is_nil(@color) or "dawn" in @color do %>
defp color_variant("dawn", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#7E4B2A] to-[#DB976B] [&_.stepper-step]:text-white",
"dark:from-[#DB976B] dark:to-[#EDCBB5] dark:[&_.stepper-step]:text-black",
"[&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#7E4B2A]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#F6E5DA] [&_.stepper-completed-step_.stepper-step]:border-[#54321C]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#E4B190]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#54321C] dark:[&_.stepper-completed-step_.stepper-step]:border-[#EDCBB5]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#7E4B2A] dark:[&_.stepper-seperator]:border-[#E4B190]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#54321C] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#EDCBB5]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#54321C]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#EDCBB5]"
]
end
<% end %>
<%= if is_nil(@color) or "silver" in @color do %>
defp color_variant("silver", "gradient") do
[
"[&_.stepper-step]:bg-gradient-to-br from-[#5E5E5E] to-[#A6A6A6] [&_.stepper-step]:text-white",
"dark:from-[#868686] dark:to-[#BBBBBB] dark:[&_.stepper-step]:text-black",
"[&_.stepper-loading-icon]:fill-[#374151]",
"[&_.stepper-step]:border-transparent [&_.stepper-current-step_.stepper-step]:border-[#727272]",
"[&_.stepper-completed-step_.stepper-step]:bg-[#E8E8E8] [&_.stepper-completed-step_.stepper-step]:border-[#5E5E5E]",
"dark:[&_.stepper-current-step_.stepper-step]:border-[#BBBBBB]",
"dark:[&_.stepper-completed-step_.stepper-step]:bg-[#5E5E5E] dark:[&_.stepper-completed-step_.stepper-step]:border-[#DDDDDD]",
"[&_.stepper-canceled-step_.stepper-step]:bg-[#950F22] [&_.stepper-canceled-step_.stepper-step]:border-[#950F22]",
"[&_.stepper-canceled-step_.stepper-step]:text-white",
"dark:[&_.stepper-canceled-step_.stepper-step]:bg-[#FFD2CD] dark:[&_.stepper-canceled-step_.stepper-step]:border-[#FFD2CD]",
"dark:[&_.stepper-canceled-step_.stepper-step]:text-black",
"[&_.stepper-seperator]:border-[#727272] dark:[&_.stepper-seperator]:border-[#BBBBBB]",
"[&_.stepper-completed-step+.stepper-seperator]:border-[#5E5E5E] dark:[&_.stepper-completed-step+.stepper-seperator]:border-[#DDDDDD]",
"[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#5E5E5E]",
"dark:[&.vertical-stepper_.stepper-completed-step_.stepper-seperator]:border-[#DDDDDD]"
]
end
<% end %>
<% end %>
defp color_variant(_, params) when is_binary(params), do: params
attr :name, :string, required: true, doc: "Specifies the name of the element"
attr :class, :any, default: nil, doc: "Custom CSS class for additional styling"
defp icon(%{name: "hero-" <> _, class: class} = assigns) when is_list(class) do
~H"""
"""
end
defp icon(%{name: "hero-" <> _} = assigns) do
~H"""
"""
end
end