studio-engine 0.142.0 → 0.143.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: 9778730aefa3dc031248a8ff2535362cfb258443e2e10d8ded26997417720ef1
4
- data.tar.gz: db87fa943c1ca9c97fa0323144dc7d395478e69788ad6bc248d669fb8c68323b
3
+ metadata.gz: 4d62fbddea6a9c5e292f2f8d56849b87817e6f8ad2291bfae07e694018ecbd9f
4
+ data.tar.gz: 845b1121620e936c87cee20fbeabdce6c4da5db6b8460d3cd0cbf2b8397f443a
5
5
  SHA512:
6
- metadata.gz: 31af4a95d22ab3a24a72e97cccda1670d061e1287bf9c8146fadba9b1c399720729f364a13188669827fa7623bbd61bf558f1e79c8aa235bac73e1e8a3454109
7
- data.tar.gz: 66fb861fb188b09e76f5bfb068947d46a28bfc2ab1add0f4605b8315edfc4faa8cd2426356d23ab764324a51e811f9055bc6d4a61a41a8f850845aecfde5c5bd
6
+ metadata.gz: 1df9ec21d9280b70635da28104416490dc798db689709d0e831e08410ed3a1070860611c359ee7be54f5ea3eaa76053b5886c48fc764e8beab33b0e9a8c83037
7
+ data.tar.gz: 1c2394ffa46070b4dd647d2e440a574ceff00f619f21ef9544ba7c6c87a2535a886cd9745e5859635f8e9aa334235f18129fa4c93e5f2e27ce0cda4ca52b598f
data/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@ The format is [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). This pro
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.143.0 — 2026-11-10
8
+
9
+ ### Fixed
10
+
11
+ - **`.edge-rotate-glow` no longer widens a phone page.** The bloom layer (its `::after`) carried a transparent border of 2 x bloom so its mask had room for the blur, which put its box 28px past the host on every side. That box is layout: at 390px the living style guide measured 402px wide, from glow cards in a 16px gutter, also at opacity 0. The bloom is now cut by an evenodd `clip-path` (drawn after the filter, but not layout), so its box stops 8px past the host and the blur spreads past it as ink. The halo looks the same on desktop, except that its corners now follow the host's radius. Keep a glow host 8px or more from the viewport edge. A consumer that overrides the bloom's `inset` (as the glass button rule does) uses `calc(-1 * (var(--edge-rotate-glow-thickness) + 4px))`. The deprecated `.studio-team-glow` alias gets the same fix.
12
+
7
13
  ## 0.142.0 — 2026-11-09
8
14
 
9
15
  ### Added
@@ -573,6 +573,10 @@
573
573
  The host must still NOT be clipped by an overflow-hidden ancestor near its
574
574
  border, or the ring is cut off with it.
575
575
 
576
+ ON A PHONE the bloom does not widen the page: its blur reaches past its box as
577
+ ink, and a clip-path (not a mask) cuts it, so only 8px past the host is layout.
578
+ Keep a glow host 8px or more from the viewport edge. The bloom rule says why.
579
+
576
580
  Usage: <button class="btn btn-primary edge-rotate-glow">Save</button>
577
581
  wrapper shape, when the face is its own element:
578
582
  <div class="edge-rotate-glow rounded-xl">
@@ -678,20 +682,41 @@
678
682
  /* Blurred bloom twin, a touch larger: its wedges reach 4px PAST the ring, which
679
683
  is what makes the bloom read as a halo, not a soft edge on the ring. Drop the
680
684
  4px and every WRAPPER consumer's ring visibly lightens (measured: 26% of the
681
- pixels on style/_modal_specimen, 13% on the hub's release-phase-meter). The
682
- box then carries a transparent BORDER of bloom-reach on top of that, and the
683
- mask still holes out the host's box — so the blur
684
- spreads outward into that reach and is cut where it has already faded, while
685
- the inward half is cut at the host's edge (invisible: that edge is either the
686
- card's own or the wrapper child's). Mask applies AFTER filter, which is why
687
- the reach has to out-measure the blur — without it the halo ends on a hard
688
- line at the layer's own box. */
689
- inset: calc(-1 * (var(--edge-rotate-glow-thickness) + 4px + var(--edge-rotate-glow-bloom) * 2));
685
+ pixels on style/_modal_specimen, 13% on the hub's release-phase-meter).
686
+
687
+ THE BOX STOPS THERE, and the blur spreads past it. A filter's spread is ink
688
+ overflow, which never widens a page. A box is layout, and it does. This layer
689
+ used to carry a transparent border of 2 x bloom so the mask (clipped to the
690
+ border box) had room for the blur: 28px past the host on every side, and that
691
+ box widened a 390px phone page to 402px wherever a glow host sat in a 16px
692
+ gutter, at opacity 0 too (task edge-glow-phone-overflow).
693
+
694
+ So the cut is a clip-path, not a mask. clip-path also applies AFTER filter,
695
+ but its shape may reach past the box and it is not layout. The shape is the
696
+ same region the mask cut: out to 2 x bloom past this box, where the blur has
697
+ faded, minus the host's own box (the hole; the inward half of the blur is cut
698
+ at the host's edge, invisible because that edge is the card's own or the
699
+ wrapper child's). evenodd makes the inner rectangle a hole. Measured at
700
+ 1280px against the mask version: the same halo, except that the bloom's
701
+ corners now follow the host's radius.
702
+
703
+ What is still layout: this box, 8px past the host (4px ring + 4px), and the
704
+ ring, 4px. Keep a glow host 8px or more from the viewport edge. */
705
+ inset: calc(-1 * (var(--edge-rotate-glow-thickness) + 4px));
690
706
  padding: calc(var(--edge-rotate-glow-thickness) + 4px);
691
- border: calc(var(--edge-rotate-glow-bloom) * 2) solid transparent;
692
- /* The wedges stop at the padding box (host + ring + the 4px); the border is empty
693
- room the blur is allowed to spread into. */
694
- background-clip: padding-box;
707
+ -webkit-mask: none;
708
+ mask: none;
709
+ clip-path: polygon(evenodd,
710
+ calc(var(--edge-rotate-glow-bloom) * -2) calc(var(--edge-rotate-glow-bloom) * -2),
711
+ calc(100% + var(--edge-rotate-glow-bloom) * 2) calc(var(--edge-rotate-glow-bloom) * -2),
712
+ calc(100% + var(--edge-rotate-glow-bloom) * 2) calc(100% + var(--edge-rotate-glow-bloom) * 2),
713
+ calc(var(--edge-rotate-glow-bloom) * -2) calc(100% + var(--edge-rotate-glow-bloom) * 2),
714
+ calc(var(--edge-rotate-glow-bloom) * -2) calc(var(--edge-rotate-glow-bloom) * -2),
715
+ calc(var(--edge-rotate-glow-thickness) + 4px) calc(var(--edge-rotate-glow-thickness) + 4px),
716
+ calc(var(--edge-rotate-glow-thickness) + 4px) calc(100% - var(--edge-rotate-glow-thickness) - 4px),
717
+ calc(100% - var(--edge-rotate-glow-thickness) - 4px) calc(100% - var(--edge-rotate-glow-thickness) - 4px),
718
+ calc(100% - var(--edge-rotate-glow-thickness) - 4px) calc(var(--edge-rotate-glow-thickness) + 4px),
719
+ calc(var(--edge-rotate-glow-thickness) + 4px) calc(var(--edge-rotate-glow-thickness) + 4px));
695
720
  z-index: -2;
696
721
  filter: blur(var(--edge-rotate-glow-bloom)) saturate(1.35);
697
722
  }
@@ -2852,7 +2852,7 @@ html[data-theme-flip]::view-transition-new(*) {
2852
2852
  box-shadow: var(--lit-inset-pressed);
2853
2853
  }
2854
2854
  html[data-surface-style="glass"] .btn:is(.edge-rotate-glow, .studio-team-glow):not(.btn-outline, :disabled, [aria-disabled="true"])::after {
2855
- inset: calc(-1 * (var(--edge-rotate-glow-thickness) + 4px + var(--edge-rotate-glow-bloom) * 2));
2855
+ inset: calc(-1 * (var(--edge-rotate-glow-thickness) + 4px));
2856
2856
  box-shadow: none;
2857
2857
  }
2858
2858
  html[data-surface-style="glass"] .btn.studio-border-glow:not(.btn-outline, :disabled, [aria-disabled="true"])::after {
@@ -1,3 +1,3 @@
1
1
  module Studio
2
- VERSION = "0.142.0"
2
+ VERSION = "0.143.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: studio-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.142.0
4
+ version: 0.143.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex McRitchie