@cosmicdrift/kumiko-renderer-web 0.123.0 → 0.123.1

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-renderer-web",
3
- "version": "0.123.0",
3
+ "version": "0.123.1",
4
4
  "description": "Web-platform bindings for @cosmicdrift/kumiko-renderer. HTML default-primitives, browser history-based navigation, EventSource-backed live events, and a one-call createKumikoApp that mounts the whole stack via react-dom.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -16,9 +16,9 @@
16
16
  "./styles.css": "./src/styles.css"
17
17
  },
18
18
  "dependencies": {
19
- "@cosmicdrift/kumiko-dispatcher-live": "0.123.0",
20
- "@cosmicdrift/kumiko-headless": "0.123.0",
21
- "@cosmicdrift/kumiko-renderer": "0.123.0",
19
+ "@cosmicdrift/kumiko-dispatcher-live": "0.123.1",
20
+ "@cosmicdrift/kumiko-headless": "0.123.1",
21
+ "@cosmicdrift/kumiko-renderer": "0.123.1",
22
22
  "@radix-ui/react-dialog": "^1.1.15",
23
23
  "@radix-ui/react-dropdown-menu": "^2.1.16",
24
24
  "@radix-ui/react-label": "^2.1.8",
package/src/index.ts CHANGED
@@ -124,7 +124,12 @@ export type { WorkspaceSwitcherProps } from "./layout/workspace-switcher";
124
124
  export { WorkspaceSwitcher } from "./layout/workspace-switcher";
125
125
  export { cn } from "./lib/cn";
126
126
  export { postWithDownload } from "./lib/download";
127
- export { BareFormProvider, DefaultCard as Card, defaultPrimitives } from "./primitives";
127
+ export {
128
+ BareFormProvider,
129
+ DefaultCard as Card,
130
+ defaultPrimitives,
131
+ FormScreenShell,
132
+ } from "./primitives";
128
133
  export type { ActionMenuProps, MenuItemDef } from "./primitives/action-menu";
129
134
  export { ActionMenu } from "./primitives/action-menu";
130
135
  export {
@@ -1382,7 +1382,7 @@ function DefaultForm({
1382
1382
  data-testid={testId}
1383
1383
  className="flex flex-col w-full"
1384
1384
  >
1385
- <div className="px-6 pt-6 pb-12 max-w-3xl w-full mx-auto">
1385
+ <FormScreenShell>
1386
1386
  <div className={cn(cardSurface(), "overflow-hidden")}>
1387
1387
  {(title !== undefined || subtitle !== undefined) && (
1388
1388
  <div className="px-6 pb-2 pt-5">
@@ -1426,11 +1426,32 @@ function DefaultForm({
1426
1426
  </div>
1427
1427
  )}
1428
1428
  </div>
1429
- </div>
1429
+ </FormScreenShell>
1430
1430
  </form>
1431
1431
  );
1432
1432
  }
1433
1433
 
1434
+ // Kanonische Form/Settings-Shell: zentrierte max-w-3xl-Spalte mit Standard-
1435
+ // Screen-Padding. DefaultForm (configEdit/entityEdit) UND custom Settings-
1436
+ // Screens (url-settings, privacy-center) teilen sie → einheitliche Breite +
1437
+ // Zentrierung statt per-Screen-Wildwuchs. Inhalt nutzt Card-Primitives;
1438
+ // `className` (z.B. "flex flex-col gap-6") für Multi-Card-Stacks.
1439
+ export function FormScreenShell({
1440
+ children,
1441
+ className,
1442
+ testId,
1443
+ }: {
1444
+ readonly children: ReactNode;
1445
+ readonly className?: string;
1446
+ readonly testId?: string;
1447
+ }): ReactNode {
1448
+ return (
1449
+ <div data-testid={testId} className={cn("px-6 pt-6 pb-12 max-w-3xl w-full mx-auto", className)}>
1450
+ {children}
1451
+ </div>
1452
+ );
1453
+ }
1454
+
1434
1455
  function DefaultSection({ title, subtitle, children, actions, testId }: SectionProps): ReactNode {
1435
1456
  const insideForm = useContext(InsideFormContext);
1436
1457