@pieai/swimmer-ui-kit 2.13.0 → 2.14.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 CHANGED
@@ -5,7 +5,26 @@ Format: [Keep a Changelog](https://keepachangelog.com); versioning: semver.
5
5
 
6
6
  ## Unreleased
7
7
 
8
- ### 2.13.0 candidate — WO-UI-1
8
+ ## 2.14.0 — 2026-10-01
9
+
10
+ - Fix the stair-stepped top edge on every glossy liquid body: the gloss pass
11
+ added its light's alpha to the body's, so a half-covered edge pixel turned
12
+ opaque wherever the highlight was bright. The light is now clipped to the
13
+ body eroded by a pixel and feathered; the highlight itself is unchanged.
14
+ - Add `LiquidFill`: `LiquidGroup` and `LiquidSurface` take `fill={{ top,
15
+ bottom?, sheen? }}` for the coloured-liquid light (a narrow brighter band at
16
+ the top, a deeper foot). Colours may be tokens; bands are CSS `color-mix`.
17
+ - `LiquidSurface` takes `gloss` and `outline={{ amplitude, lobes? }}` to
18
+ override its form's light and rest lobing.
19
+ - 涟 (`LiquidPresence`, `LiquidReveal` material surface): the face carries its
20
+ light in the fill (top to foot) and casts a soft contact shadow along its
21
+ own outline through the new `--game-ui-liquid-presence-shadow` token; the
22
+ material panel drops its raised rim and stroke. The dark surface is unchanged.
23
+ - Compatibility: additive API; visual change to glossy edges and to 涟's
24
+ material face. Owner approved publication on 2026-10-01 (University
25
+ session, "品牌UI包要发布成新版"), with the repository kept to one main line.
26
+
27
+ ## 2.13.0 — 2026-09-29
9
28
 
10
29
  - Add opt-in `surface="plaque"` to `GameButton`, `GameIconButton` and
11
30
  `GameAvatar`, with opaque light/night copper token pairs derived from
@@ -20,8 +39,8 @@ Format: [Keep a Changelog](https://keepachangelog.com); versioning: semver.
20
39
  modal-test screenshots to `.devspace-visual/`, preserving retained scratch
21
40
  evidence and all existing assertions.
22
41
  - Compatibility: additive only; no new dependency or React peer change.
23
- This candidate is not published: Owner's private-publication instruction
24
- needs clarification before using this repository's public npm workflow.
42
+ Published through the existing npm Trusted Publishing workflow after
43
+ Owner clarified public publication (AuthKit remains private).
25
44
 
26
45
  ## 2.12.0 — 2026-09-29
27
46
 
package/README.md CHANGED
@@ -57,7 +57,7 @@ import '@pieai/swimmer-ui-kit/tailwind.css';
57
57
 
58
58
  ## What's inside
59
59
 
60
- - **Account primitives (2.13.0 local candidate, not published)**:
60
+ - **Account primitives (2.13.0)**:
61
61
  opt-in copper `surface="plaque"`, `GameOtpInput`, vertical `GameTabs`,
62
62
  and `GameListRow` with independent actions. See the
63
63
  [account-controls contract](docs/reference/design-system-guide.md#账号界面原件)
package/dist/index.d.ts CHANGED
@@ -2556,6 +2556,45 @@ export declare const LIQUID_FORMS: Readonly<Record<LiquidForm, LiquidFormSpec>>;
2556
2556
  */
2557
2557
  export declare const LIQUID_GOOEY_WAVINESS_MAX_FRACTION = 0.3;
2558
2558
 
2559
+ /**
2560
+ * A shared liquid silhouette behind crisp item content.
2561
+ *
2562
+ * Put the visual treatment on the group: `fill`, `stroke`, and `shadow` are
2563
+ * rebuilt on the merged silhouette. Do NOT add border, outline, or box-shadow
2564
+ * to children directly; those styles live on the content layer and cannot
2565
+ * merge with the liquid shape.
2566
+ *
2567
+ * Its motion vocabulary is intentionally small and semantic:
2568
+ *
2569
+ * | gesture | meaning |
2570
+ * | --- | --- |
2571
+ * | **merge** (Morph) | two things become one: reward settling, collecting, confirming |
2572
+ * | **follow** (Move) | selection, progress, dragging |
2573
+ * | **shape** (Morph shape) | the liquid changes size and corners like jelly |
2574
+ * | **bend** | speed bows the surface while content stays glued to it |
2575
+ * | **dissolve** | replacement, transition |
2576
+ * | **still** | THE DEFAULT |
2577
+ *
2578
+ * Liquid appears only on a state change the user caused. There is no ambient,
2579
+ * idle, or decorative liquid; keep the filter-area budget visible when more
2580
+ * than one group is on a screen.
2581
+ */
2582
+ /**
2583
+ * A liquid body's paint.
2584
+ *
2585
+ * A colour paints the body flat. `{ top, bottom }` is the light the coloured
2586
+ * liquid theme settled on (University, 2026-09-30): a narrow brighter band at
2587
+ * the top, the colour falling from `top` to `bottom`, and the foot a touch
2588
+ * deeper, so a body reads as having thickness without a white rim. `sheen` is
2589
+ * how far the top band leans to white (0–1, default 0.3). Colours may be tokens:
2590
+ * the bands are mixed with CSS `color-mix`, not computed here.
2591
+ */
2592
+ export declare type LiquidFill = string | {
2593
+ readonly top: string;
2594
+ readonly bottom?: string;
2595
+ readonly sheen?: number;
2596
+ };
2597
+
2559
2598
  /** Material is independent of a widget's meaning and a form's motion. */
2560
2599
  export declare type LiquidFinish = 'matte' | 'glossy';
2561
2600
 
@@ -2703,29 +2742,6 @@ export declare const LiquidGroup: ForwardRefExoticComponent<LiquidGroupProps & R
2703
2742
  Item: ForwardRefExoticComponent<LiquidItemProps & RefAttributes<HTMLDivElement>>;
2704
2743
  };
2705
2744
 
2706
- /**
2707
- * A shared liquid silhouette behind crisp item content.
2708
- *
2709
- * Put the visual treatment on the group: `fill`, `stroke`, and `shadow` are
2710
- * rebuilt on the merged silhouette. Do NOT add border, outline, or box-shadow
2711
- * to children directly; those styles live on the content layer and cannot
2712
- * merge with the liquid shape.
2713
- *
2714
- * Its motion vocabulary is intentionally small and semantic:
2715
- *
2716
- * | gesture | meaning |
2717
- * | --- | --- |
2718
- * | **merge** (Morph) | two things become one: reward settling, collecting, confirming |
2719
- * | **follow** (Move) | selection, progress, dragging |
2720
- * | **shape** (Morph shape) | the liquid changes size and corners like jelly |
2721
- * | **bend** | speed bows the surface while content stays glued to it |
2722
- * | **dissolve** | replacement, transition |
2723
- * | **still** | THE DEFAULT |
2724
- *
2725
- * Liquid appears only on a state change the user caused. There is no ambient,
2726
- * idle, or decorative liquid; keep the filter-area budget visible when more
2727
- * than one group is on a screen.
2728
- */
2729
2745
  export declare interface LiquidGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
2730
2746
  children: ReactNode;
2731
2747
  /** Goo blur sigma in px. Larger values bridge larger gaps. */
@@ -2739,8 +2755,11 @@ export declare interface LiquidGroupProps extends Omit<HTMLAttributes<HTMLDivEle
2739
2755
  gloss?: number;
2740
2756
  /** Optional named finish. An explicit raw gloss wins; omitted preserves the old rendering. */
2741
2757
  liquidFinish?: LiquidFinish;
2742
- /** Surface fill. Defaults to the kit's theme surface token. */
2743
- fill?: string;
2758
+ /**
2759
+ * Surface fill. Defaults to the kit's theme surface token. A colour paints
2760
+ * the body flat; `{ top, bottom }` gives it light (see `LiquidFill`).
2761
+ */
2762
+ fill?: LiquidFill;
2744
2763
  /** Extra filter-region slack in px for the silhouette's painted edges. */
2745
2764
  filterPadding?: number;
2746
2765
  /** Optional token-based box-shadow syntax rebuilt on the merged silhouette. */
@@ -2831,7 +2850,7 @@ export declare interface LiquidMetalButtonProps extends ButtonHTMLAttributes<HTM
2831
2850
 
2832
2851
  export declare type LiquidMetalRendererMode = 'auto' | 'css' | 'webgl';
2833
2852
 
2834
- export declare function LiquidSurface({ children, liquidFinish, form, active, fill, stroke, shadow: shadowOverride, radius, className, style, }: LiquidSurfaceProps): ReactNode;
2853
+ export declare function LiquidSurface({ children, liquidFinish, form, active, fill, stroke, shadow: shadowOverride, gloss: glossOverride, outline, radius, className, style, }: LiquidSurfaceProps): ReactNode;
2835
2854
 
2836
2855
  export declare interface LiquidSurfaceProps {
2837
2856
  children: ReactNode;
@@ -2845,7 +2864,20 @@ export declare interface LiquidSurfaceProps {
2845
2864
  */
2846
2865
  active?: boolean;
2847
2866
  /** Silhouette paint. Defaults to the kit's raised surface token. */
2848
- fill?: string;
2867
+ fill?: LiquidFill;
2868
+ /**
2869
+ * The body's light, overriding the form's own. The coloured liquid theme
2870
+ * uses a low value; with `liquidFinish="matte"` omitted, 0 means flat.
2871
+ */
2872
+ gloss?: number;
2873
+ /**
2874
+ * The rest outline's lobing, overriding the form's own: `amplitude` in px
2875
+ * swells outward, `lobes` is how many go round (2 lazy, 5 busy).
2876
+ */
2877
+ outline?: {
2878
+ readonly amplitude: number;
2879
+ readonly lobes?: number;
2880
+ };
2849
2881
  stroke?: string;
2850
2882
  /** Overrides the form's own cast shadow. `none` removes it. */
2851
2883
  shadow?: string;