@cosmicdrift/kumiko-renderer 0.140.0 → 0.142.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.
Files changed (2) hide show
  1. package/package.json +3 -3
  2. package/src/primitives.tsx +13 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-renderer",
3
- "version": "0.140.0",
3
+ "version": "0.142.0",
4
4
  "description": "Platform-agnostic React renderer for Kumiko screens. Contains the shared logic — primitives-contract, hooks, KumikoScreen, navigation & SSE abstractions — that any platform-specific renderer (web, native) composes. No DOM, no EventSource, no react-dom.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -15,8 +15,8 @@
15
15
  }
16
16
  },
17
17
  "dependencies": {
18
- "@cosmicdrift/kumiko-framework": "0.140.0",
19
- "@cosmicdrift/kumiko-headless": "0.140.0",
18
+ "@cosmicdrift/kumiko-framework": "0.142.0",
19
+ "@cosmicdrift/kumiko-headless": "0.142.0",
20
20
  "react": "^19.2.6"
21
21
  },
22
22
  "devDependencies": {
@@ -75,8 +75,10 @@ export type ButtonProps = {
75
75
  /** Barrierefreies Label — Pflicht bei icon-only-Buttons (children ist nur
76
76
  * ein Icon/Zeichen), sonst hat der Button keinen zugänglichen Namen. */
77
77
  readonly ariaLabel?: string;
78
- /** Volle Breite des Containers für CTA-Buttons in Karten/Panels. */
79
- readonly fullWidth?: boolean;
78
+ /** Breite default="auto" (inhaltsbreit). "full" streckt CTA-Buttons auf
79
+ * die Container-Breite (Karten/Panels). Andere Breiten sind Layout-Sache
80
+ * des Containers, kein Button-Prop (Kit hält arbiträres Sizing draußen). */
81
+ readonly width?: "full" | "auto";
80
82
  readonly children: ReactNode;
81
83
  readonly testId?: string;
82
84
  };
@@ -150,6 +152,12 @@ export type InputProps =
150
152
  /** Browser-Autofill / Native-Keyboard-Hint. Web setzt das auf
151
153
  * `<input autocomplete=...>`, Native auf `textContentType`. */
152
154
  readonly autoComplete?: string;
155
+ /** `data-testid` aufs echte `<input>` — App-Tests adressieren das
156
+ * Element direkt (getByTestId + readOnly/disabled-Assertions). */
157
+ readonly testId?: string;
158
+ /** Read-only Input (z.B. gewürfelter Free-Tier-Slug). Nicht `disabled`
159
+ * — bleibt fokussier-/kopierbar. */
160
+ readonly readOnly?: boolean;
153
161
  }
154
162
  | {
155
163
  readonly kind: "email";
@@ -164,6 +172,7 @@ export type InputProps =
164
172
  /** Default "email". Apps die "username" wollen (Login-Form mit
165
173
  * Username-or-Email) reichen das durch. */
166
174
  readonly autoComplete?: string;
175
+ readonly testId?: string;
167
176
  }
168
177
  | {
169
178
  readonly kind: "password";
@@ -178,6 +187,7 @@ export type InputProps =
178
187
  * Browser-Password-Manager nutzen das für die Speicherentscheidung.
179
188
  * Native: textContentType="password" / "newPassword". */
180
189
  readonly autoComplete?: "current-password" | "new-password";
190
+ readonly testId?: string;
181
191
  }
182
192
  | {
183
193
  readonly kind: "number";
@@ -188,6 +198,7 @@ export type InputProps =
188
198
  readonly disabled?: boolean;
189
199
  readonly required?: boolean;
190
200
  readonly hasError?: boolean;
201
+ readonly testId?: string;
191
202
  }
192
203
  | {
193
204
  readonly kind: "range";