@celestia-island/hikari 0.55.35 → 0.55.37
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.
package/package.json
CHANGED
|
@@ -29,7 +29,10 @@
|
|
|
29
29
|
width: 1.125rem;
|
|
30
30
|
height: 1.125rem;
|
|
31
31
|
border-radius: var(--radius-sm, 4px);
|
|
32
|
-
|
|
32
|
+
/* The resting outline is the palette border slot at FULL strength:
|
|
33
|
+
* --hi-color-border is the faint divider channel (15% alpha) and melts
|
|
34
|
+
* into white/dark surfaces. */
|
|
35
|
+
border: 1px solid rgb(var(--color-border, 100 100 100));
|
|
33
36
|
background: var(--hi-color-surface, rgba(240,244,248,0.95));
|
|
34
37
|
transition:
|
|
35
38
|
border-color var(--duration-normal, 0.3s) ease,
|
|
@@ -452,21 +452,30 @@
|
|
|
452
452
|
}
|
|
453
453
|
|
|
454
454
|
.hk-modal-content {
|
|
455
|
-
//
|
|
456
|
-
//
|
|
457
|
-
//
|
|
458
|
-
//
|
|
459
|
-
//
|
|
460
|
-
//
|
|
461
|
-
//
|
|
462
|
-
//
|
|
463
|
-
//
|
|
464
|
-
//
|
|
465
|
-
//
|
|
466
|
-
//
|
|
467
|
-
//
|
|
455
|
+
// Phone-sheet transition = clip-path ONLY (2026-09-21, two Xiaomi
|
|
456
|
+
// WebView chest reports same day):
|
|
457
|
+
//
|
|
458
|
+
// ① IME cap-chase: on adjustResize engines the keyboard animation
|
|
459
|
+
// steps the layout viewport — and the 100dvh term of the
|
|
460
|
+
// max-height cap — every frame. With max-height in the transition
|
|
461
|
+
// list each step RETARGETS a 150ms transition, so a cap-bound
|
|
462
|
+
// sheet (tall content: wizards, model pickers) stays permanently
|
|
463
|
+
// mid-transition chasing its own viewport. The cap now follows
|
|
464
|
+
// the viewport INSTANTLY — exactly how native sheets track the
|
|
465
|
+
// keyboard.
|
|
466
|
+
//
|
|
467
|
+
// ② Step-change shrink flicker: useSizeMorph's clip mode pins
|
|
468
|
+
// growth instantly and sweeps the top edge paint-only, but
|
|
469
|
+
// SHRINKS still route through this height transition — 150ms of
|
|
470
|
+
// per-frame layout on a fixed full-width layer, re-rastering the
|
|
471
|
+
// moving edge every frame (wizard Prev/Next between
|
|
472
|
+
// different-height steps showed black blocks along the top).
|
|
473
|
+
// Shrinks now SNAP: one layout, one paint — the native-sheet
|
|
474
|
+
// direction change. Growth keeps its animated reveal via the
|
|
475
|
+
// clip-path sweep (the only transition left on phones).
|
|
476
|
+
//
|
|
477
|
+
// Desktop keeps the full base list (height + max-height + clip-path).
|
|
468
478
|
transition:
|
|
469
|
-
height var(--duration-fast, 0.15s) var(--ease-standard, cubic-bezier(0.4, 0, 0.2, 1)),
|
|
470
479
|
clip-path var(--duration-fast, 0.15s) var(--ease-standard, cubic-bezier(0.4, 0, 0.2, 1));
|
|
471
480
|
// !important beats the inline maxWidth (width prop); base width: 100%
|
|
472
481
|
// already applies at every viewport, so only the cap is re-asserted.
|
|
@@ -74,24 +74,28 @@ describe("HkModal mobile sheet spacing contract", () => {
|
|
|
74
74
|
expect(content).not.toMatch(/max-height:\s*none/);
|
|
75
75
|
});
|
|
76
76
|
|
|
77
|
-
// 2026-09-21
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
|
|
77
|
+
// 2026-09-21 phone-sheet transition contract (two Xiaomi WebView
|
|
78
|
+
// chest reports the same day): the mobile list carries ONLY the
|
|
79
|
+
// clip-path reveal.
|
|
80
|
+
// ① IME cap-chase: the keyboard animation steps the 100dvh cap every
|
|
81
|
+
// frame; max-height in the transition list made cap-bound sheets
|
|
82
|
+
// chase their own viewport. The cap follows the viewport instantly.
|
|
83
|
+
// ② Step-change shrink flicker: useSizeMorph routes clip-mode
|
|
84
|
+
// SHRINKS through the height transition — 150ms of per-frame
|
|
85
|
+
// layout on a fixed layer re-rastering the moving edge (wizard
|
|
86
|
+
// Prev/Next between different-height steps showed black blocks).
|
|
87
|
+
// With height out of the list, shrinks snap (one layout, one
|
|
88
|
+
// paint — native-sheet behavior); growth keeps its animated
|
|
89
|
+
// reveal through the clip-path sweep.
|
|
90
|
+
it("narrows the phone sheet transition to clip-path only (IME + shrink guards)", () => {
|
|
87
91
|
// Extraction self-check: the mobile rule must exist and MUST carry
|
|
88
92
|
// a transition declaration at all (its absence is the regression,
|
|
89
93
|
// not a vacuous pass).
|
|
90
94
|
expect(content.length, "mobile .hk-modal-content rule extracted").toBeGreaterThan(0);
|
|
91
95
|
const tr = content.match(/transition:\s*([^;]+);/)?.[1] ?? "";
|
|
92
96
|
expect(tr.length, "mobile sheet transition declaration present").toBeGreaterThan(0);
|
|
93
|
-
expect(tr).toMatch(/\bheight\b/);
|
|
94
97
|
expect(tr).toMatch(/\bclip-path\b/);
|
|
98
|
+
expect(tr).not.toMatch(/\bheight\b/);
|
|
95
99
|
expect(tr).not.toMatch(/\bmax-height\b/);
|
|
96
100
|
});
|
|
97
101
|
|
|
@@ -44,7 +44,10 @@
|
|
|
44
44
|
align-items: center;
|
|
45
45
|
justify-content: center;
|
|
46
46
|
border-radius: 50%;
|
|
47
|
-
border
|
|
47
|
+
/* The resting outline is the palette border slot at FULL strength:
|
|
48
|
+
* --hi-color-border is the faint divider channel (15% alpha) and melts
|
|
49
|
+
* into white/dark surfaces. */
|
|
50
|
+
border: 1px solid rgb(var(--color-border, 100 100 100));
|
|
48
51
|
background: var(--hi-color-surface);
|
|
49
52
|
transition:
|
|
50
53
|
border-color var(--duration-normal, 0.3s) ease,
|
|
@@ -85,9 +85,13 @@ export interface SizeMorphOptions {
|
|
|
85
85
|
* transition, same "content rides rigidly" grammar as the modal unveil,
|
|
86
86
|
* but paint/compositor-level: no per-frame layout and no per-frame
|
|
87
87
|
* backdrop-filter re-raster over the resizing fixed layer (the mobile
|
|
88
|
-
* patchy-flicker source, 2026-09-15 chest report).
|
|
89
|
-
*
|
|
90
|
-
*
|
|
88
|
+
* patchy-flicker source, 2026-09-15 chest report). Height-mode
|
|
89
|
+
* surfaces and the select sheet keep the height transition for shrinks
|
|
90
|
+
* (their stylesheets list it); the phone MODAL sheet narrowed its list
|
|
91
|
+
* to clip-path-only (2026-09-21 step-change shrink report — 150ms of
|
|
92
|
+
* per-frame layout on the fixed layer re-rastered the moving edge), so
|
|
93
|
+
* its shrinks snap: the L291-style pin flip lands instantly when the
|
|
94
|
+
* stylesheet no longer transitions height.
|
|
91
95
|
*
|
|
92
96
|
* Reduced motion / the global animation switch stay honored: the frame's
|
|
93
97
|
* transition-duration collapses to one frame under
|