@celestia-island/hikari 0.55.46 → 0.55.47

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celestia-island/hikari",
3
- "version": "0.55.46",
3
+ "version": "0.55.47",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Hikari Vue 3 component library — production-grade UI components based on shittim-chest design system",
@@ -71,9 +71,13 @@
71
71
  .hk-stepflow-body {
72
72
  // ENTER grammar (what a body computes once its `hk-stepflow-enter-pending`
73
73
  // class lifts at the phase-2 edge): a plain fade in place — the new
74
- // content never travels (2026-09-22 user directive).
74
+ // content never travels (2026-09-22 user directive). A STANDARD ease, not
75
+ // the expressive ease-out: the front-loaded curve put the first painted
76
+ // frame at ~50% opacity (half the distance in ~11% of the phase), which
77
+ // read on the device as the new content flashing in — the standard curve
78
+ // starts at ~20% instead (2026-09-22 device report, round 11).
75
79
  transition:
76
- opacity calc(var(--hk-stepflow-duration, 0.3s) / 2) cubic-bezier(0.16, 1, 0.3, 1);
80
+ opacity calc(var(--hk-stepflow-duration, 0.3s) / 2) cubic-bezier(0.4, 0, 0.2, 1);
77
81
  }
78
82
 
79
83
  .hk-stepflow-body.leaving {
@@ -89,11 +93,11 @@
89
93
  left: 0;
90
94
  right: 0;
91
95
  pointer-events: none;
92
- // LEAVE grammar: the sharp ease-in counterpart, applied for the whole
93
- // exit phase (the class lands on the same patch that flips the body
94
- // into `leaving`, so the slide starts from the already-painted state).
96
+ // LEAVE grammar: the slide keeps its accelerating ease-in; the FADE gets
97
+ // its own gentler curve so the old content eases out over several frames
98
+ // instead of dropping 0.40 -> 0.03 in one (same device report).
95
99
  transition:
96
- opacity calc(var(--hk-stepflow-duration, 0.3s) / 2) cubic-bezier(0.5, 0, 0.75, 0),
100
+ opacity calc(var(--hk-stepflow-duration, 0.3s) / 2) cubic-bezier(0.4, 0, 0.6, 1),
97
101
  transform calc(var(--hk-stepflow-duration, 0.3s) / 2) cubic-bezier(0.5, 0, 0.75, 0);
98
102
  }
99
103
 
@@ -91,7 +91,9 @@ describe("HkStepFlow two-phase swap contract", () => {
91
91
  const decl = transitions[0]!;
92
92
  expect(decl).toContain("opacity");
93
93
  expect(decl).toContain(PHASE);
94
- expect(decl).toContain("cubic-bezier(0.16, 1, 0.3, 1)");
94
+ // A STANDARD ease: the expressive ease-out put the first painted frame
95
+ // at ~50% opacity, which read as the new content flashing in.
96
+ expect(decl).toContain("cubic-bezier(0.4, 0, 0.2, 1)");
95
97
  expect(decl, "the enter phase never travels").not.toContain("transform");
96
98
  });
97
99
 
@@ -104,8 +106,10 @@ describe("HkStepFlow two-phase swap contract", () => {
104
106
  // (chest's LoginView renders this flow in a grid-stack crossfade).
105
107
  expect(rule).toContain("top: 0");
106
108
  expect(rule, "the default anchor is not the bottom").not.toContain("bottom: 0");
107
- // The classic sharp ease-in on leave, for BOTH opacity and travel.
109
+ // The slide keeps its classic accelerating ease-in; the fade gets its
110
+ // own gentler curve so the old content eases out over several frames.
108
111
  expect(rule).toContain("cubic-bezier(0.5, 0, 0.75, 0)");
112
+ expect(rule).toContain("cubic-bezier(0.4, 0, 0.6, 1)");
109
113
  expect(rule).toContain(PHASE);
110
114
  const transitions = rule.match(/transition:\s*[^;}]+/g) ?? [];
111
115
  expect(transitions).toHaveLength(1);