@cosmicdrift/kumiko-types 0.170.0 → 0.171.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-types",
3
- "version": "0.170.0",
3
+ "version": "0.171.0",
4
4
  "description": "Framework-Type-Definitions für Kumiko — FeatureDefinition, BootCheck-Types und die reinen Engine-Types. Erlaubt Downstream-Konsumenten, gegen die Type-Contracts zu bauen, ohne das ganze Framework-Package zu importieren. Enthaelt keine identitaets-sensitiven Runtime-Werte mehr (Error-Klassen leben seit #1629 in kumiko-framework, Brand-Symbole nutzen Symbol.for) und ist deshalb eine plain dependency, keine peerDependency.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
package/src/fields.ts CHANGED
@@ -112,6 +112,11 @@ export type PiiAnnotations = {
112
112
  * text-Feldern MIT Subject-Annotation erlaubt (Boot-Validator).
113
113
  * Siehe docs/plans/datenschutz/blind-index.md (kumiko-framework#818). */
114
114
  readonly lookupable?: true;
115
+ /** Foreign key into the `user` entity (authorId, assigneeId, ...) with no
116
+ * annotated content of its own. Triggers no encryption — feeds only the
117
+ * GDPR-hook-coverage boot guard, which otherwise can't see subject data
118
+ * that lives purely in an FK column. */
119
+ readonly subjectRef?: boolean;
115
120
  };
116
121
 
117
122
  // --- Retention (DSGVO Art. 5(1)(e) + HGB/AO Aufbewahrungspflichten) ---
package/src/screen.ts CHANGED
@@ -212,9 +212,11 @@ export type RowActionNavigate = {
212
212
  * AUSSCHLIESSLICH aus dem Pfad. Default: "id" wenn der Ziel-Screen
213
213
  * ein entityEdit ist. */
214
214
  readonly entityId?: string;
215
- /** Deklarative URL-Search-Params aus row-Context. Wird in actionForm-
216
- * Targets als initial values gelesen (actionForm pre-fillen).
217
- * `pick` extrahiert Felder gleichen Namens; `map` benennt um. */
215
+ /** Declarative URL search params extracted from the clicked row.
216
+ * Both actionForm and entityEdit-create targets read `params` as
217
+ * initial values (pre-filling the form). entityEdit-update does
218
+ * not — the existing record's values take precedence.
219
+ * `pick` extracts fields of the same name; `map` renames them. */
218
220
  readonly params?: RowFieldExtractor;
219
221
  /** Conditional Visibility pro Row. */
220
222
  readonly visible?: FieldCondition;
@@ -513,6 +515,13 @@ export type EditFieldSpec =
513
515
  readonly readOnly?: FieldCondition;
514
516
  readonly required?: FieldCondition;
515
517
  readonly renderer?: FieldRenderer;
518
+ /** Prefix icon on the input — symbolic key into the FIELD_ICONS
519
+ * registry (renderer-web), analogous to `ScreenNavSugar.icon`.
520
+ * Unknown key → no icon (clean fallback, no boot-fail). Only takes
521
+ * effect for `type: "text"` and `"number"` — other input kinds
522
+ * (select, combobox, date, …) have no icon slot and silently
523
+ * ignore the key. */
524
+ readonly icon?: string;
516
525
  };
517
526
 
518
527
  // A section is either a normal field-grid (default — `kind` omitted keeps
@@ -529,6 +538,12 @@ export type EditFieldsSection = {
529
538
  * Überschrift) — für flache Forms (Card-Titel + Felder direkt, ein
530
539
  * einzelner Abschnitt) wie bei den meisten shadcn-Form-Mustern. */
531
540
  readonly title?: string;
541
+ /** Optional help text under the block heading (i18n key or raw string,
542
+ * like `title`) — makes a form usable without training instead of
543
+ * falling back to custom JSX for help text. Renders through the same
544
+ * `subtitle` slot as `FormProps.subtitle`. Works without `title` too
545
+ * (subtitle-only section). */
546
+ readonly description?: string;
532
547
  readonly columns?: number;
533
548
  readonly fields: readonly EditFieldSpec[];
534
549
  };
@@ -539,8 +554,15 @@ export type EditExtensionSection = {
539
554
  readonly component: PlatformComponent;
540
555
  };
541
556
 
557
+ // Max width of the form container (see FormScreenShell in renderer-web).
558
+ export type FormWidth = "sm" | "3xl" | "4xl" | "full";
559
+
542
560
  export type EditLayout = {
543
561
  readonly sections: readonly EditSectionSpec[];
562
+ /** Default "3xl". "full" for dense multi-column masks (many sections,
563
+ * three-column fields) that would leave dead space on both sides in a
564
+ * 3xl column — see #1676. */
565
+ readonly width?: FormWidth;
544
566
  };
545
567
 
546
568
  export type EntityEditScreenDefinition = {