@mosaic-media/sdui-react 0.1.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 (87) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +54 -0
  3. package/dist/components/controls.d.ts +34 -0
  4. package/dist/components/controls.d.ts.map +1 -0
  5. package/dist/components/controls.js +93 -0
  6. package/dist/components/controls.js.map +1 -0
  7. package/dist/components/definitions.d.ts +3 -0
  8. package/dist/components/definitions.d.ts.map +1 -0
  9. package/dist/components/definitions.js +494 -0
  10. package/dist/components/definitions.js.map +1 -0
  11. package/dist/components/definitions.layout.d.ts +3 -0
  12. package/dist/components/definitions.layout.d.ts.map +1 -0
  13. package/dist/components/definitions.layout.js +197 -0
  14. package/dist/components/definitions.layout.js.map +1 -0
  15. package/dist/components/feedback/Unknown.d.ts +4 -0
  16. package/dist/components/feedback/Unknown.d.ts.map +1 -0
  17. package/dist/components/feedback/Unknown.js +13 -0
  18. package/dist/components/feedback/Unknown.js.map +1 -0
  19. package/dist/components/feedback.d.ts +6 -0
  20. package/dist/components/feedback.d.ts.map +1 -0
  21. package/dist/components/feedback.js +10 -0
  22. package/dist/components/feedback.js.map +1 -0
  23. package/dist/components/host.d.ts +11 -0
  24. package/dist/components/host.d.ts.map +1 -0
  25. package/dist/components/host.js +15 -0
  26. package/dist/components/host.js.map +1 -0
  27. package/dist/components/index.d.ts +3 -0
  28. package/dist/components/index.d.ts.map +1 -0
  29. package/dist/components/index.js +60 -0
  30. package/dist/components/index.js.map +1 -0
  31. package/dist/components/layout.d.ts +9 -0
  32. package/dist/components/layout.d.ts.map +1 -0
  33. package/dist/components/layout.js +23 -0
  34. package/dist/components/layout.js.map +1 -0
  35. package/dist/components/media.d.ts +5 -0
  36. package/dist/components/media.d.ts.map +1 -0
  37. package/dist/components/media.js +15 -0
  38. package/dist/components/media.js.map +1 -0
  39. package/dist/components/primitives.d.ts +39 -0
  40. package/dist/components/primitives.d.ts.map +1 -0
  41. package/dist/components/primitives.js +75 -0
  42. package/dist/components/primitives.js.map +1 -0
  43. package/dist/components/shared.d.ts +13 -0
  44. package/dist/components/shared.d.ts.map +1 -0
  45. package/dist/components/shared.js +36 -0
  46. package/dist/components/shared.js.map +1 -0
  47. package/dist/index.d.ts +19 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +26 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/lib/platform.d.ts +12 -0
  52. package/dist/lib/platform.d.ts.map +1 -0
  53. package/dist/lib/platform.js +74 -0
  54. package/dist/lib/platform.js.map +1 -0
  55. package/dist/sdui/Renderer.d.ts +16 -0
  56. package/dist/sdui/Renderer.d.ts.map +1 -0
  57. package/dist/sdui/Renderer.js +40 -0
  58. package/dist/sdui/Renderer.js.map +1 -0
  59. package/dist/sdui/ShellProvider.d.ts +24 -0
  60. package/dist/sdui/ShellProvider.d.ts.map +1 -0
  61. package/dist/sdui/ShellProvider.js +110 -0
  62. package/dist/sdui/ShellProvider.js.map +1 -0
  63. package/dist/sdui/context.d.ts +17 -0
  64. package/dist/sdui/context.d.ts.map +1 -0
  65. package/dist/sdui/context.js +18 -0
  66. package/dist/sdui/context.js.map +1 -0
  67. package/dist/sdui/registry.d.ts +13 -0
  68. package/dist/sdui/registry.d.ts.map +1 -0
  69. package/dist/sdui/registry.js +26 -0
  70. package/dist/sdui/registry.js.map +1 -0
  71. package/dist/sdui/style.d.ts +81 -0
  72. package/dist/sdui/style.d.ts.map +1 -0
  73. package/dist/sdui/style.js +149 -0
  74. package/dist/sdui/style.js.map +1 -0
  75. package/dist/sdui/template.d.ts +19 -0
  76. package/dist/sdui/template.d.ts.map +1 -0
  77. package/dist/sdui/template.js +111 -0
  78. package/dist/sdui/template.js.map +1 -0
  79. package/dist/sdui/types.d.ts +96 -0
  80. package/dist/sdui/types.d.ts.map +1 -0
  81. package/dist/sdui/types.js +4 -0
  82. package/dist/sdui/types.js.map +1 -0
  83. package/dist/styles/components.css +772 -0
  84. package/dist/styles/global.css +80 -0
  85. package/dist/styles/index.css +5 -0
  86. package/dist/styles/tokens.css +150 -0
  87. package/package.json +37 -0
@@ -0,0 +1,149 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // SPDX-FileCopyrightText: 2026 the Mosaic authors
3
+ const ALIGN = {
4
+ start: "flex-start",
5
+ center: "center",
6
+ end: "flex-end",
7
+ stretch: "stretch",
8
+ baseline: "baseline",
9
+ };
10
+ const JUSTIFY = {
11
+ start: "flex-start",
12
+ center: "center",
13
+ end: "flex-end",
14
+ between: "space-between",
15
+ around: "space-around",
16
+ };
17
+ const color = (c) => (c ? `var(--color-${c})` : undefined);
18
+ const space = (n) => (n === undefined ? undefined : n === 0 ? "0" : `var(--space-${n})`);
19
+ const dim = (d) => {
20
+ if (d === undefined)
21
+ return undefined;
22
+ if (d === "full")
23
+ return "100%";
24
+ if (typeof d === "number")
25
+ return `${d}px`;
26
+ return d; // "auto" | "NN%"
27
+ };
28
+ /** Translate a token-based BoxStyle into concrete web CSS. */
29
+ export function boxToCss(s) {
30
+ const css = { boxSizing: "border-box" };
31
+ if (s.layout === "grid") {
32
+ css.display = "grid";
33
+ if (s.gridMin !== undefined)
34
+ css.gridTemplateColumns = `repeat(auto-fill, minmax(${s.gridMin}px, 1fr))`;
35
+ if (s.gridFlow)
36
+ css.gridAutoFlow = s.gridFlow;
37
+ if (s.gridAutoColumns !== undefined)
38
+ css.gridAutoColumns = `${s.gridAutoColumns}px`;
39
+ }
40
+ else {
41
+ css.display = "flex";
42
+ css.flexDirection = s.direction === "row" ? "row" : "column";
43
+ if (s.align)
44
+ css.alignItems = ALIGN[s.align];
45
+ if (s.justify)
46
+ css.justifyContent = JUSTIFY[s.justify];
47
+ if (s.wrap)
48
+ css.flexWrap = "wrap";
49
+ }
50
+ if (s.gap !== undefined)
51
+ css.gap = space(s.gap);
52
+ if (s.overflowX)
53
+ css.overflowX = s.overflowX;
54
+ if (s.snap)
55
+ css.scrollSnapType = `${s.snap} proximity`;
56
+ if (s.snapAlign)
57
+ css.scrollSnapAlign = s.snapAlign;
58
+ if (s.p !== undefined)
59
+ css.padding = space(s.p);
60
+ if (s.px !== undefined) {
61
+ css.paddingLeft = space(s.px);
62
+ css.paddingRight = space(s.px);
63
+ }
64
+ if (s.py !== undefined) {
65
+ css.paddingTop = space(s.py);
66
+ css.paddingBottom = space(s.py);
67
+ }
68
+ if (s.pt !== undefined)
69
+ css.paddingTop = space(s.pt);
70
+ if (s.pr !== undefined)
71
+ css.paddingRight = space(s.pr);
72
+ if (s.pb !== undefined)
73
+ css.paddingBottom = space(s.pb);
74
+ if (s.pl !== undefined)
75
+ css.paddingLeft = space(s.pl);
76
+ if (s.bg)
77
+ css.background = color(s.bg);
78
+ if (s.bgGradient) {
79
+ const stop = (c) => (c === "transparent" ? "transparent" : `var(--color-${c})`);
80
+ css.background = `linear-gradient(${s.bgGradient.angle ?? 180}deg, ${stop(s.bgGradient.from)}, ${stop(s.bgGradient.to)})`;
81
+ }
82
+ if (s.color)
83
+ css.color = color(s.color);
84
+ if (s.radius)
85
+ css.borderRadius = `var(--radius-${s.radius})`;
86
+ if (s.border)
87
+ css.border = `1px solid ${color(s.borderColor ?? "border")}`;
88
+ if (s.width !== undefined)
89
+ css.width = dim(s.width);
90
+ if (s.height !== undefined)
91
+ css.height = dim(s.height);
92
+ if (s.minWidth !== undefined)
93
+ css.minWidth = dim(s.minWidth);
94
+ if (s.maxWidth !== undefined)
95
+ css.maxWidth = dim(s.maxWidth);
96
+ if (s.minHeight !== undefined)
97
+ css.minHeight = dim(s.minHeight);
98
+ if (s.aspectRatio)
99
+ css.aspectRatio = s.aspectRatio;
100
+ if (s.flex !== undefined)
101
+ css.flex = s.flex;
102
+ if (s.grow)
103
+ css.flexGrow = 1;
104
+ if (s.position)
105
+ css.position = s.position;
106
+ if (s.top !== undefined)
107
+ css.top = space(s.top);
108
+ if (s.right !== undefined)
109
+ css.right = space(s.right);
110
+ if (s.bottom !== undefined)
111
+ css.bottom = space(s.bottom);
112
+ if (s.left !== undefined)
113
+ css.left = space(s.left);
114
+ if (s.overflow)
115
+ css.overflow = s.overflow;
116
+ if (s.shadow)
117
+ css.boxShadow = `var(--shadow-${s.shadow})`;
118
+ if (s.opacity !== undefined)
119
+ css.opacity = s.opacity;
120
+ return css;
121
+ }
122
+ /** Translate a token-based TextStyle into concrete web CSS. */
123
+ export function textToCss(s) {
124
+ const css = {};
125
+ if (s.variant)
126
+ css.fontSize = `var(--text-${s.variant})`;
127
+ if (s.weight)
128
+ css.fontWeight = `var(--weight-${s.weight})`;
129
+ if (s.color)
130
+ css.color = color(s.color);
131
+ if (s.align)
132
+ css.textAlign = s.align === "start" ? "left" : s.align === "end" ? "right" : "center";
133
+ if (s.transform)
134
+ css.textTransform = s.transform;
135
+ if (s.italic)
136
+ css.fontStyle = "italic";
137
+ if (s.mono)
138
+ css.fontFamily = "var(--font-mono)";
139
+ if (s.tabular)
140
+ css.fontVariantNumeric = "tabular-nums";
141
+ if (s.lineClamp) {
142
+ css.display = "-webkit-box";
143
+ css.WebkitLineClamp = s.lineClamp;
144
+ css.WebkitBoxOrient = "vertical";
145
+ css.overflow = "hidden";
146
+ }
147
+ return css;
148
+ }
149
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/sdui/style.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { UINode } from "./types";
2
+ export interface ComponentDefinition {
3
+ /** The node type this definition provides, e.g. "StatChip". */
4
+ name: string;
5
+ /** Default param values, overridden by the caller's props. */
6
+ params?: Record<string, unknown>;
7
+ /** The primitive tree, with $bind / $if / Outlet markers. */
8
+ template: UINode;
9
+ }
10
+ /**
11
+ * Register a component definition as a renderable node type. Calling this is
12
+ * exactly what a module does to contribute a component — here it happens in TS,
13
+ * but the same `ComponentDefinition` could arrive as JSON in a payload and be
14
+ * registered at runtime.
15
+ */
16
+ export declare function defineComponent(def: ComponentDefinition): void;
17
+ /** Register many definitions at once (e.g. a module's whole component pack). */
18
+ export declare function defineComponents(defs: ComponentDefinition[]): void;
19
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/sdui/template.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAItC,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAyFD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAmB9D;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAElE"}
@@ -0,0 +1,111 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { register } from "./registry";
3
+ import { RenderNode } from "./Renderer";
4
+ function isObj(v) {
5
+ return typeof v === "object" && v !== null;
6
+ }
7
+ function isBind(v) {
8
+ return isObj(v) && "$bind" in v;
9
+ }
10
+ function isMatch(v) {
11
+ return isObj(v) && "$match" in v;
12
+ }
13
+ /** Walk a dot path ("s.label") through args/objects. */
14
+ function getPath(root, path) {
15
+ return path.split(".").reduce((acc, key) => (isObj(acc) ? acc[key] : undefined), root);
16
+ }
17
+ /** Resolve a template value against args: bindings, matches, nested structures. */
18
+ function resolveValue(v, args) {
19
+ if (isBind(v))
20
+ return getPath(args, v.$bind);
21
+ if (isMatch(v)) {
22
+ const key = String(resolveValue(v.$match.on, args));
23
+ const chosen = key in v.$match.cases ? v.$match.cases[key] : v.$match.default;
24
+ return resolveValue(chosen, args);
25
+ }
26
+ if (Array.isArray(v))
27
+ return v.map((x) => resolveValue(x, args));
28
+ if (isObj(v)) {
29
+ const out = {};
30
+ for (const [k, val] of Object.entries(v))
31
+ out[k] = resolveValue(val, args);
32
+ return out;
33
+ }
34
+ return v;
35
+ }
36
+ /** Expand one template node into zero or more concrete nodes. */
37
+ function expandNode(tmpl, args, host) {
38
+ // Outlet → whatever the caller passed as children / a named slot.
39
+ if (tmpl.type === "Outlet") {
40
+ const name = tmpl.props?.name;
41
+ if (name) {
42
+ const slot = host.slots?.[name];
43
+ if (!slot)
44
+ return [];
45
+ return Array.isArray(slot) ? slot : [slot];
46
+ }
47
+ return host.children ?? [];
48
+ }
49
+ const rawProps = tmpl.props ?? {};
50
+ // $each — repeat this node once per item of a bound array, exposing the item
51
+ // (and its index) under $as. The repeated node is expanded without $each.
52
+ if ("$each" in rawProps) {
53
+ const arr = resolveValue(rawProps.$each, args);
54
+ if (!Array.isArray(arr))
55
+ return [];
56
+ const as = rawProps.$as ?? "item";
57
+ const rest = {};
58
+ for (const [k, val] of Object.entries(rawProps)) {
59
+ if (k !== "$each" && k !== "$as")
60
+ rest[k] = val;
61
+ }
62
+ const bare = { type: tmpl.type, id: tmpl.id, props: rest, children: tmpl.children, slots: tmpl.slots };
63
+ return arr.flatMap((item, i) => expandNode(bare, { ...args, [as]: item, [`${as}Index`]: i }, host));
64
+ }
65
+ // $if / $ifNot guards — drop the node (and its subtree) conditionally.
66
+ if ("$if" in rawProps && !resolveValue(rawProps.$if, args))
67
+ return [];
68
+ if ("$ifNot" in rawProps && resolveValue(rawProps.$ifNot, args))
69
+ return [];
70
+ const props = {};
71
+ for (const [k, val] of Object.entries(rawProps)) {
72
+ if (k === "$if" || k === "$ifNot")
73
+ continue;
74
+ props[k] = resolveValue(val, args);
75
+ }
76
+ const children = tmpl.children?.flatMap((c) => expandNode(c, args, host));
77
+ let slots;
78
+ if (tmpl.slots) {
79
+ slots = {};
80
+ for (const [k, val] of Object.entries(tmpl.slots)) {
81
+ const arr = Array.isArray(val) ? val : [val];
82
+ slots[k] = arr.flatMap((c) => expandNode(c, args, host));
83
+ }
84
+ }
85
+ return [{ type: tmpl.type, id: tmpl.id, props, children, slots }];
86
+ }
87
+ /**
88
+ * Register a component definition as a renderable node type. Calling this is
89
+ * exactly what a module does to contribute a component — here it happens in TS,
90
+ * but the same `ComponentDefinition` could arrive as JSON in a payload and be
91
+ * registered at runtime.
92
+ */
93
+ export function defineComponent(def) {
94
+ register(def.name, ({ node }) => {
95
+ const args = {
96
+ ...(def.params ?? {}),
97
+ ...(node.props ?? {}),
98
+ // Injected: lets a template branch on what the caller handed it, e.g.
99
+ // $if: { $bind: "$childCount" } for an empty-vs-populated rail.
100
+ $childCount: node.children?.length ?? 0,
101
+ $slots: node.slots ? Object.keys(node.slots) : [],
102
+ };
103
+ const expanded = expandNode(def.template, args, node);
104
+ return (_jsx(_Fragment, { children: expanded.map((n, i) => (_jsx(RenderNode, { node: n }, n.id ?? i))) }));
105
+ });
106
+ }
107
+ /** Register many definitions at once (e.g. a module's whole component pack). */
108
+ export function defineComponents(defs) {
109
+ defs.forEach(defineComponent);
110
+ }
111
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/sdui/template.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /** A single node in a server-driven UI tree. */
2
+ export interface UINode {
3
+ /** Component discriminator, e.g. "PosterCard". Open vocabulary. */
4
+ type: string;
5
+ /** Stable id — useful as a React key and for targeted updates. */
6
+ id?: string;
7
+ /** Component-specific data. Each component documents the props it reads. */
8
+ props?: Record<string, unknown>;
9
+ /** Ordered child nodes (the common case: containers). */
10
+ children?: UINode[];
11
+ /**
12
+ * Named slots for components that take structured regions rather than a
13
+ * single ordered list, e.g. a HeroBanner's `background` vs `actions`.
14
+ */
15
+ slots?: Record<string, UINode | UINode[]>;
16
+ }
17
+ /**
18
+ * A serialisable behaviour envelope. The Shell interprets each kind; the server
19
+ * only ever emits data. Add kinds as the surface grows — keep them declarative.
20
+ */
21
+ export type Action =
22
+ /** Push another server-defined screen by name (+ params for the query). */
23
+ {
24
+ kind: "navigate";
25
+ screen: string;
26
+ params?: Record<string, unknown>;
27
+ }
28
+ /** Go back in the Shell's navigation stack. */
29
+ | {
30
+ kind: "back";
31
+ }
32
+ /** Open an external URL in a new tab (validated by the Shell). */
33
+ | {
34
+ kind: "openUrl";
35
+ url: string;
36
+ }
37
+ /**
38
+ * Invoke a Platform GraphQL mutation by name with an input map, e.g.
39
+ * "importContent". The Shell resolves the caller/session; the server
40
+ * re-authorises (ADR 0017).
41
+ */
42
+ | {
43
+ kind: "invoke";
44
+ mutation: string;
45
+ input?: Record<string, unknown>;
46
+ }
47
+ /** Run a Platform query and (optionally) refresh a region with the result. */
48
+ | {
49
+ kind: "query";
50
+ query: string;
51
+ variables?: Record<string, unknown>;
52
+ into?: string;
53
+ }
54
+ /** Present a node as an overlay (modal / sheet / drawer). */
55
+ | {
56
+ kind: "openOverlay";
57
+ surface?: "modal" | "sheet" | "drawer";
58
+ node: UINode;
59
+ }
60
+ /** Dismiss the topmost overlay. */
61
+ | {
62
+ kind: "closeOverlay";
63
+ }
64
+ /** Ask the Shell to resolve & play a content Part (future playback module). */
65
+ | {
66
+ kind: "playPart";
67
+ partId: string;
68
+ nodeId?: string;
69
+ }
70
+ /** Show a transient toast. */
71
+ | {
72
+ kind: "toast";
73
+ message: string;
74
+ tone?: Tone;
75
+ }
76
+ /** Run several actions in order. */
77
+ | {
78
+ kind: "sequence";
79
+ actions: Action[];
80
+ };
81
+ export type Tone = "neutral" | "accent" | "success" | "warning" | "danger" | "info";
82
+ /** Result of dispatching an action, so callers can await network kinds. */
83
+ export interface ActionResult {
84
+ ok: boolean;
85
+ data?: unknown;
86
+ error?: {
87
+ category: PlatformErrorCategory;
88
+ message: string;
89
+ };
90
+ }
91
+ /**
92
+ * The Platform's fixed error categories (from CLAUDE.md / the contracts). The
93
+ * Shell maps every failure into one of these so feedback UI is uniform.
94
+ */
95
+ export type PlatformErrorCategory = "InvalidArgument" | "Unauthenticated" | "PermissionDenied" | "NotFound" | "Conflict" | "Unavailable" | "Internal";
96
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sdui/types.ts"],"names":[],"mappings":"AAmBA,gDAAgD;AAChD,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAC3C;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM;AAChB,2EAA2E;AACzE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;AACxE,+CAA+C;GAC7C;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;AAClB,kEAAkE;GAChE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE;AAClC;;;;GAIG;GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;AACvE,8EAA8E;GAC5E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;AACtF,6DAA6D;GAC3D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC/E,mCAAmC;GACjC;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE;AAC1B,+EAA+E;GAC7E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;AACvD,8BAA8B;GAC5B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE;AACjD,oCAAoC;GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE5C,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpF,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,QAAQ,EAAE,qBAAqB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAC7B,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,UAAU,GACV,UAAU,GACV,aAAa,GACb,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // SPDX-FileCopyrightText: 2026 the Mosaic authors
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sdui/types.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,kDAAkD"}