diff --git a/assets/css/app.css b/assets/css/app.css index 30ef540..60f6ebf 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -102,14 +102,14 @@ /* Make LiveView wrapper divs transparent for layout */ [data-phx-session], [data-phx-teleported-src] { display: contents } -/* Spinning wheel animation — items repeated 5× in DOM, scroll through 4 full cycles */ +/* Spinning wheel animation — end position and duration set per-wheel via CSS vars */ @keyframes spin-wheel { 0% { transform: translateY(0); } - 100% { transform: translateY(-80%); } + 100% { transform: translateY(var(--wheel-end, -80%)); } } .wheel-inner.spinning { - animation: spin-wheel 3s cubic-bezier(0.05, 0.8, 0.3, 1.0) forwards; + animation: spin-wheel var(--wheel-duration, 3s) cubic-bezier(0.17, 0.67, 0.35, 1.0) forwards; } .wheel-item { diff --git a/lib/mtg_wheel_web/live/wheel_live.ex b/lib/mtg_wheel_web/live/wheel_live.ex index 71a06c2..5aa0cd3 100644 --- a/lib/mtg_wheel_web/live/wheel_live.ex +++ b/lib/mtg_wheel_web/live/wheel_live.ex @@ -2,7 +2,8 @@ defmodule MtgWheelWeb.WheelLive do use MtgWheelWeb, :live_view alias MtgWheel.DeckGenerator - @spin_duration_ms 3000 + @spin_duration_ms 3700 + @item_height_px 112 @impl true def mount(_params, _session, socket) do @@ -37,10 +38,10 @@ defmodule MtgWheelWeb.WheelLive do

MTG Deck Wheel

- <.wheel label="Budget" items={Enum.map(@budgets, &"$#{&1}")} result={@result && @result.budget} spinning={@spinning} /> - <.wheel label="Archetype" items={@archetypes} result={@result && @result.archetype} spinning={@spinning} /> - <.wheel label="Subtheme" items={@subthemes} result={@result && @result.subtheme} spinning={@spinning} /> - <.wheel label="Colors" items={@color_combos} result={@result && @result.colors} spinning={@spinning} color?={true} /> + <.wheel label="Budget" items={Enum.map(@budgets, &"$#{&1}")} result={@result && @result.budget} spinning={@spinning} duration={2500} /> + <.wheel label="Archetype" items={@archetypes} result={@result && @result.archetype} spinning={@spinning} duration={2900} /> + <.wheel label="Subtheme" items={@subthemes} result={@result && @result.subtheme} spinning={@spinning} duration={3300} /> + <.wheel label="Colors" items={@color_combos} result={@result && @result.colors} spinning={@spinning} color?={true} duration={3600} />