studio-engine 0.54.1 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b79896d29716fe1408c39d86c9e2d19d4e6dc12dd28749ff85054c29e5ba9a77
4
- data.tar.gz: 033a9a7e0e4799ef5ed0522e3fb6b6d1652ab4239d7de625add1e24ac81a5386
3
+ metadata.gz: 2e0f0009a05bd6e06865465368969671524d772ab938b78622539d846532d387
4
+ data.tar.gz: cf267435b701685424683ce6031948498b52a834551762d6be055cd126b46625
5
5
  SHA512:
6
- metadata.gz: dcd13075e85ee744c86ec901f62e749320f916a72c7c04b1530a5715dcdbcec3adcaa39dc1b8236327bc5a2de4238ef1585cf42853444ff92eeae0ff7cfcc702
7
- data.tar.gz: 6d242c947ec1d582202bb53652091f6ab4ed111cadfa721aab578df1f89f7b8b9a9bdb4bcd9f57b5b8a15ba9d8c9200b2358668ec2058d59f0c210072e93a79a
6
+ metadata.gz: 366f4b22dd590398e706f01b56b75ab5f82a60ca1bd6407f288a3898721cea9ab8914dc9e90c1865028ac3458ed299d9076d3768ae3bb3b86cb51ee26704fa70
7
+ data.tar.gz: a45734bb24a793ad91620694aa36457ce057ed12c86b1754cc3aa6a1365e552510fcbe2eb28932273a7a41e53c755f457395252d0f014e78ae6207dafd9fb5ee
data/CHANGELOG.md CHANGED
@@ -4,6 +4,80 @@ The format is [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). This pro
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ### Added
8
+
9
+ - **The hold-to-confirm button, with its fizz — a new ACTION family in
10
+ `engine-motion.css`.** A press-and-hold CTA for an action a host does not want
11
+ taken by accident, ported from Turf Monster where it confirms a contest entry.
12
+ Render `studio/hold_button`; the specimens are on `/admin/style` (Tricks →
13
+ "Hold to confirm").
14
+
15
+ What ships:
16
+
17
+ - **`.hold-btn`** — the face and its five states: idle, `.process` (holding,
18
+ with the ring filling over `--duration`), `.loading` (submitted, spinning
19
+ arc), `.success` (confirmed, white check) and `.error` (blocked). The idle
20
+ face is a gradient down the primary ramp; the confirmed face is a deeper cut
21
+ of the SAME ramp, because an off-family success color reads as a jump to
22
+ some other button.
23
+ - **`.hold-stack` / `.hold-fizz` / `.fizz-bit`** — the carbonation. The
24
+ bubbles are the button's SIBLING, never its child: the button's `transform`
25
+ makes it a stacking context, so a bubble inside it can never get behind its
26
+ background. They show only where they escape its edges.
27
+ - **Six zones, three colors each.** The button is cut into a 3×2 grid and a
28
+ bubble only wears the colors of its own zone, so a six-item palette reads as
29
+ six things standing around the button. Bind `--fizz-c-1..18` (three per zone,
30
+ in order) on the stack — statically with the `fizz_colors:` local, or live
31
+ with `fizz_bind:` (an Alpine expression). Turf Monster's board binds the six
32
+ picked teams' light / dark / alt colors. Anything unbound falls back to the
33
+ bubble's own hue, so the effect is never colorless.
34
+ - **Two levels.** `fizz_level: :lively` (the default) rests at a full boil and
35
+ on hover DOUBLES THE BUBBLE COUNT — a second layer, seeded apart so it lands
36
+ in the first one's gaps, fades in over it. `fizz_level: :calm` simmers at
37
+ rest and boils on hover, one layer.
38
+ - **Per-instance theming without new CSS.** Every color reads a `--hold-*`
39
+ input before its default, so an ancestor can restyle one button or a page of
40
+ them: `--hold-bg-from` / `--hold-bg-mid` / `--hold-bg-to` for the resting
41
+ face, `--hold-success-from` / `--hold-success-to` / `--hold-success-glow-rgb`
42
+ for the confirmed one.
43
+ - **`prefers-reduced-motion` switches the bubbles off**, with `!important`,
44
+ because the state rules are more specific than anything the media query can
45
+ write — without it a lively button keeps fizzing at someone who asked it not
46
+ to.
47
+
48
+ Per-instance behavior travels as `data-*` on the button and is evaluated
49
+ against the surrounding `x-data` scope: `guard`, `validate` / `validate_at`,
50
+ `early_action` / `early_action_at` / `early_action_guard`, `on_hold_start` and
51
+ `on_success`. `Studio::FizzHelper` owns the bubble table and is seeded per
52
+ `hold_id`, so a button scatters identically on every render (a Turbo-restored
53
+ page matches the one it replaced) and two buttons on a page do not fizz in
54
+ lockstep.
55
+
56
+ - **`.studio-team-glow` rings a host that paints its own background**, and can
57
+ carry **two colors**.
58
+
59
+ The ring previously needed an opaque CHILD in front to cover its middle,
60
+ because both wedge layers are pseudo-elements at `z-index: -1 / -2` and CSS
61
+ paints an element's background BEFORE its negative-z descendants. A live board
62
+ card cannot supply that child: Turbo targets the card element itself for
63
+ replace and remove, so a wrapper host is orphaned every time a card leaves the
64
+ board. The primitive now cuts the host's own box out of both layers
65
+ (`padding` + `mask-composite`, the trick §1's `.studio-border-glow` already
66
+ used), so the ring works on the card directly.
67
+
68
+ **No-op for the wrapper shape** — its child was already covering that
69
+ interior. Verified side by side against both live consumers
70
+ (`style/_modal_specimen` and the hub's release-phase-meter): pixel-equivalent
71
+ before and after.
72
+
73
+ `--studio-team-glow-color-b` colors the SECOND of the two opposed wedges and
74
+ defaults to the first, so one-color callers see no change and a caller with a
75
+ pair to show — a Pokémon's two types — gets one per wedge.
76
+
77
+ The bloom twin needed care: a mask applies AFTER a filter, so its box carries a
78
+ transparent border twice the blur radius and its wedges stop at the padding
79
+ box. Without that room the halo ends on a hard line at its own edge.
80
+
7
81
  ### Fixed
8
82
 
9
83
  - **`.conic-surface` keeps its wash inside its own box.** The wash was an