@pieai/swimmer-ui-kit 2.6.0 → 2.7.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.
- package/CHANGELOG.md +42 -5
- package/README.md +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.js +1248 -1166
- package/dist/styles.css +1 -1
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,43 @@
|
|
|
3
3
|
All notable changes to `@pieai/swimmer-ui-kit`.
|
|
4
4
|
Format: [Keep a Changelog](https://keepachangelog.com); versioning: semver.
|
|
5
5
|
|
|
6
|
+
## 2.7.0 — 2026-09-16
|
|
7
|
+
|
|
8
|
+
Minor: shared optional help for creator-facing products. Existing controls and
|
|
9
|
+
their defaults remain compatible.
|
|
10
|
+
|
|
11
|
+
- Add `GameHelpTip`: one named, 44px, non-submit help trigger for short text.
|
|
12
|
+
Hover, keyboard focus and tap/click open the same explanation; Escape and
|
|
13
|
+
outside interaction dismiss it. Hovering the explanation keeps it readable.
|
|
14
|
+
- Use the maintained `@floating-ui/react` dependency for positioning, collision
|
|
15
|
+
avoidance and interaction composition instead of building another popup
|
|
16
|
+
engine. Other controls retain their existing native implementations.
|
|
17
|
+
- Keep help inside an enclosing native dialog's top layer. It does not portal
|
|
18
|
+
into the inert page, move focus into noninteractive text, or close the account
|
|
19
|
+
dialog when the user dismisses help.
|
|
20
|
+
- Required errors, action labels and cost confirmation must remain visible;
|
|
21
|
+
this is not a menu, rich interactive popover or a replacement for instructions
|
|
22
|
+
needed to complete an action. Products own the words, not a second help service.
|
|
23
|
+
|
|
24
|
+
## 2.6.1 — 2026-09-12
|
|
25
|
+
|
|
26
|
+
Patch: production CSS behavior, not a new material or API.
|
|
27
|
+
|
|
28
|
+
- Preserve the liquid button/icon's independent `scale` and `translate` resets
|
|
29
|
+
through CSS minification. The compiler folded literal identity values into
|
|
30
|
+
`transform: none`, but transform does not reset the independent properties:
|
|
31
|
+
development looked correct while the published native hit target shrank on
|
|
32
|
+
press. Explicit CSS `initial` resets survive the build and a consumer rebuild.
|
|
33
|
+
- Fix static-button press specificity so the normal 3px lip travel does not win
|
|
34
|
+
over the static opt-out. Ordinary buttons keep their intentional press motion.
|
|
35
|
+
- Add real-browser tests against actually minified CSS to `pnpm verify`, with
|
|
36
|
+
an ordinary-button positive control. Source-only and screenshot-at-rest checks
|
|
37
|
+
did not establish this built interaction contract.
|
|
38
|
+
|
|
39
|
+
Consumers should use **2.6.1** rather than 2.6.0. No import/prop migration is
|
|
40
|
+
needed from 2.6.0; existing release versions are not overwritten. The two finishes,
|
|
41
|
+
six liquid control categories and native-select state preservation remain unchanged.
|
|
42
|
+
|
|
6
43
|
## 2.6.0 — 2026-09-12
|
|
7
44
|
|
|
8
45
|
Minor: new optional material selection and native controls. Existing root
|
|
@@ -139,7 +176,7 @@ every liquid body was missing.
|
|
|
139
176
|
|
|
140
177
|
- **A cast shadow on the single-body forms.** `LiquidSurface` accepted a
|
|
141
178
|
`shadow` and no form set one, so every liquid button floated: the flat button
|
|
142
|
-
standing next to it carries a solid lip
|
|
179
|
+
standing next to it carries a solid lip _and_ `--game-ui-shadow-button`, and
|
|
143
180
|
the liquid one carried neither. `press`, `settle`, `drain`, and the new
|
|
144
181
|
`swell`, `reach`, `ripple` and `set` now carry two layers each — a tight,
|
|
145
182
|
barely-offset seat that says the body is touching, and a wide low cast that
|
|
@@ -442,7 +479,7 @@ removed member never worked makes the removal correct, not non-breaking.
|
|
|
442
479
|
|
|
443
480
|
- **The budget warnings were dead in every published build.** Both budget
|
|
444
481
|
fallbacks — the animation engine's and Melt/dissolve's — were gated on
|
|
445
|
-
`import.meta.env.DEV`. That flag resolves when
|
|
482
|
+
`import.meta.env.DEV`. That flag resolves when _this package_ is built, not
|
|
446
483
|
when the app importing it is, so it was baked to `false` in the artifact and
|
|
447
484
|
the guard minified to `if (this.budgetWarningEmitted || !0) return;` — an
|
|
448
485
|
unconditional early return. The kit degraded to static rendering silently,
|
|
@@ -496,7 +533,7 @@ removed member never worked makes the removal correct, not non-breaking.
|
|
|
496
533
|
- **The rest of the donor's liquid vocabulary.** `morph.shape` gives the
|
|
497
534
|
surface a timeline instead of a resize — the mass travels to the new centre,
|
|
498
535
|
size follows, corners sharpen last. `morph.contentBlur` acts on your content
|
|
499
|
-
rather than the silhouette, which is what makes text read as sitting
|
|
536
|
+
rather than the silhouette, which is what makes text read as sitting _in_ the
|
|
500
537
|
liquid instead of on it. `effect="bend"` deforms the body with velocity while
|
|
501
538
|
staying glued to its content, and publishes `--lg-bend-x/y` plus unitless
|
|
502
539
|
twins so the content can lean with it. `effect="melt"` runs two images into
|
|
@@ -631,7 +668,7 @@ removed member never worked makes the removal correct, not non-breaking.
|
|
|
631
668
|
### Fixed
|
|
632
669
|
|
|
633
670
|
- **Every tooltip was invisible on the night theme.** `.game-ui-tooltip
|
|
634
|
-
|
|
671
|
+
[role='tooltip']` painted `background: var(--game-ui-text)` with
|
|
635
672
|
`color: var(--game-ui-text-on-dark)`. On light that is a dark chip over a
|
|
636
673
|
pale page and reads correctly. On night `--game-ui-text` flips to cream, so
|
|
637
674
|
the chip became cream-on-cream at **1.15:1**. The light theme looking right
|
|
@@ -734,7 +771,7 @@ file a bug, because it reads as a design choice rather than a missing step.
|
|
|
734
771
|
The sculpted PNGs were never missing — 350 files travel inside the package, in
|
|
735
772
|
`dist/assets`. What was missing was any route from there to a path the host
|
|
736
773
|
actually serves. `CLAY_ASSET_BASE_PATH` names an absolute URL on the
|
|
737
|
-
|
|
774
|
+
_consumer's_ origin, and nothing copied, exported or explained it. The kit's own
|
|
738
775
|
Storybook worked throughout, because its assets sit in `public/`.
|
|
739
776
|
|
|
740
777
|
### Added
|
package/README.md
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1698,6 +1698,20 @@ export declare interface GameFieldProps {
|
|
|
1698
1698
|
className?: string;
|
|
1699
1699
|
}
|
|
1700
1700
|
|
|
1701
|
+
/** Optional help, not an action menu or a place to hide required information.
|
|
1702
|
+
* Floating UI owns collision avoidance, hover/focus/click and dismissal. The
|
|
1703
|
+
* native help button never submits its surrounding form. Inside a native modal
|
|
1704
|
+
* the portal stays in that modal's top layer, not in the inert document body.
|
|
1705
|
+
*/
|
|
1706
|
+
export declare function GameHelpTip({ label, children }: GameHelpTipProps): ReactNode;
|
|
1707
|
+
|
|
1708
|
+
export declare interface GameHelpTipProps {
|
|
1709
|
+
/** Accessible name of the help button, in the product's language. */
|
|
1710
|
+
label: string;
|
|
1711
|
+
/** Short, noninteractive explanation. Actions and required errors stay visible. */
|
|
1712
|
+
children: string;
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1701
1715
|
export declare function GameHistoryPanel({ entries, label }: GameHistoryPanelProps): ReactNode;
|
|
1702
1716
|
|
|
1703
1717
|
export declare interface GameHistoryPanelProps {
|