@greensecurity/javascript-sdk 0.46.0-beta.10 → 0.46.0-beta.12

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 (183) hide show
  1. package/dist/commonjs/__tests__/apps/contract.test.js +288 -4
  2. package/dist/commonjs/__tests__/apps/contract.test.js.map +1 -1
  3. package/dist/commonjs/__tests__/apps/devpreview-routes.test.d.ts +2 -0
  4. package/dist/commonjs/__tests__/apps/devpreview-routes.test.d.ts.map +1 -0
  5. package/dist/commonjs/__tests__/apps/devpreview-routes.test.js +86 -0
  6. package/dist/commonjs/__tests__/apps/devpreview-routes.test.js.map +1 -0
  7. package/dist/commonjs/__tests__/apps/kit/example.test.js +84 -4
  8. package/dist/commonjs/__tests__/apps/kit/example.test.js.map +1 -1
  9. package/dist/commonjs/__tests__/apps/kit/pages.test.d.ts +2 -0
  10. package/dist/commonjs/__tests__/apps/kit/pages.test.d.ts.map +1 -0
  11. package/dist/commonjs/__tests__/apps/kit/pages.test.js +119 -0
  12. package/dist/commonjs/__tests__/apps/kit/pages.test.js.map +1 -0
  13. package/dist/commonjs/__tests__/apps/kit/render.test.js +24 -0
  14. package/dist/commonjs/__tests__/apps/kit/render.test.js.map +1 -1
  15. package/dist/commonjs/__tests__/apps/kit/store.test.d.ts +2 -0
  16. package/dist/commonjs/__tests__/apps/kit/store.test.d.ts.map +1 -0
  17. package/dist/commonjs/__tests__/apps/kit/store.test.js +123 -0
  18. package/dist/commonjs/__tests__/apps/kit/store.test.js.map +1 -0
  19. package/dist/commonjs/__tests__/apps/post-install-page.test.d.ts +2 -0
  20. package/dist/commonjs/__tests__/apps/post-install-page.test.d.ts.map +1 -0
  21. package/dist/commonjs/__tests__/apps/post-install-page.test.js +110 -0
  22. package/dist/commonjs/__tests__/apps/post-install-page.test.js.map +1 -0
  23. package/dist/commonjs/__tests__/apps/routes.test.d.ts +2 -0
  24. package/dist/commonjs/__tests__/apps/routes.test.d.ts.map +1 -0
  25. package/dist/commonjs/__tests__/apps/routes.test.js +238 -0
  26. package/dist/commonjs/__tests__/apps/routes.test.js.map +1 -0
  27. package/dist/commonjs/__tests__/vendors.test.js +1 -1
  28. package/dist/commonjs/__tests__/webhooks.test.js +1 -1
  29. package/dist/commonjs/__tests__/webhooks.test.js.map +1 -1
  30. package/dist/commonjs/__tests__/zones.test.js +22 -4
  31. package/dist/commonjs/__tests__/zones.test.js.map +1 -1
  32. package/dist/commonjs/apps/components.d.ts +321 -0
  33. package/dist/commonjs/apps/components.d.ts.map +1 -1
  34. package/dist/commonjs/apps/components.js +168 -2
  35. package/dist/commonjs/apps/components.js.map +1 -1
  36. package/dist/commonjs/apps/context.d.ts +24 -0
  37. package/dist/commonjs/apps/context.d.ts.map +1 -1
  38. package/dist/commonjs/apps/context.js.map +1 -1
  39. package/dist/commonjs/apps/devpreview.d.ts +20 -3
  40. package/dist/commonjs/apps/devpreview.d.ts.map +1 -1
  41. package/dist/commonjs/apps/devpreview.js +18 -7
  42. package/dist/commonjs/apps/devpreview.js.map +1 -1
  43. package/dist/commonjs/apps/hooks/index.d.ts +33 -2
  44. package/dist/commonjs/apps/hooks/index.d.ts.map +1 -1
  45. package/dist/commonjs/apps/hooks/index.js +41 -1
  46. package/dist/commonjs/apps/hooks/index.js.map +1 -1
  47. package/dist/commonjs/apps/hooks/store.d.ts +48 -0
  48. package/dist/commonjs/apps/hooks/store.d.ts.map +1 -0
  49. package/dist/commonjs/apps/hooks/store.js +87 -0
  50. package/dist/commonjs/apps/hooks/store.js.map +1 -0
  51. package/dist/commonjs/apps/manifest.d.ts +64 -3
  52. package/dist/commonjs/apps/manifest.d.ts.map +1 -1
  53. package/dist/commonjs/apps/manifest.js +128 -27
  54. package/dist/commonjs/apps/manifest.js.map +1 -1
  55. package/dist/commonjs/apps/protocol.d.ts +1 -1
  56. package/dist/commonjs/apps/protocol.d.ts.map +1 -1
  57. package/dist/commonjs/apps/route.d.ts +11 -1
  58. package/dist/commonjs/apps/route.d.ts.map +1 -1
  59. package/dist/commonjs/apps/route.js +13 -7
  60. package/dist/commonjs/apps/route.js.map +1 -1
  61. package/dist/commonjs/apps/routes.d.ts +65 -0
  62. package/dist/commonjs/apps/routes.d.ts.map +1 -0
  63. package/dist/commonjs/apps/routes.js +202 -0
  64. package/dist/commonjs/apps/routes.js.map +1 -0
  65. package/dist/commonjs/apps/surfaces.d.ts +20 -2
  66. package/dist/commonjs/apps/surfaces.d.ts.map +1 -1
  67. package/dist/commonjs/apps/surfaces.js +45 -7
  68. package/dist/commonjs/apps/surfaces.js.map +1 -1
  69. package/dist/commonjs/apps/testing/index.d.ts +17 -1
  70. package/dist/commonjs/apps/testing/index.d.ts.map +1 -1
  71. package/dist/commonjs/apps/testing/index.js +50 -1
  72. package/dist/commonjs/apps/testing/index.js.map +1 -1
  73. package/dist/commonjs/apps/ui/index.d.ts +13 -0
  74. package/dist/commonjs/apps/ui/index.d.ts.map +1 -1
  75. package/dist/commonjs/apps/ui/index.js +19 -2
  76. package/dist/commonjs/apps/ui/index.js.map +1 -1
  77. package/dist/commonjs/lib/config.d.ts +2 -2
  78. package/dist/commonjs/lib/config.js +2 -2
  79. package/dist/esm/__tests__/apps/contract.test.js +289 -5
  80. package/dist/esm/__tests__/apps/contract.test.js.map +1 -1
  81. package/dist/esm/__tests__/apps/devpreview-routes.test.d.ts +2 -0
  82. package/dist/esm/__tests__/apps/devpreview-routes.test.d.ts.map +1 -0
  83. package/dist/esm/__tests__/apps/devpreview-routes.test.js +84 -0
  84. package/dist/esm/__tests__/apps/devpreview-routes.test.js.map +1 -0
  85. package/dist/esm/__tests__/apps/kit/example.test.js +85 -5
  86. package/dist/esm/__tests__/apps/kit/example.test.js.map +1 -1
  87. package/dist/esm/__tests__/apps/kit/pages.test.d.ts +2 -0
  88. package/dist/esm/__tests__/apps/kit/pages.test.d.ts.map +1 -0
  89. package/dist/esm/__tests__/apps/kit/pages.test.js +117 -0
  90. package/dist/esm/__tests__/apps/kit/pages.test.js.map +1 -0
  91. package/dist/esm/__tests__/apps/kit/render.test.js +25 -1
  92. package/dist/esm/__tests__/apps/kit/render.test.js.map +1 -1
  93. package/dist/esm/__tests__/apps/kit/store.test.d.ts +2 -0
  94. package/dist/esm/__tests__/apps/kit/store.test.d.ts.map +1 -0
  95. package/dist/esm/__tests__/apps/kit/store.test.js +121 -0
  96. package/dist/esm/__tests__/apps/kit/store.test.js.map +1 -0
  97. package/dist/esm/__tests__/apps/post-install-page.test.d.ts +2 -0
  98. package/dist/esm/__tests__/apps/post-install-page.test.d.ts.map +1 -0
  99. package/dist/esm/__tests__/apps/post-install-page.test.js +108 -0
  100. package/dist/esm/__tests__/apps/post-install-page.test.js.map +1 -0
  101. package/dist/esm/__tests__/apps/routes.test.d.ts +2 -0
  102. package/dist/esm/__tests__/apps/routes.test.d.ts.map +1 -0
  103. package/dist/esm/__tests__/apps/routes.test.js +236 -0
  104. package/dist/esm/__tests__/apps/routes.test.js.map +1 -0
  105. package/dist/esm/__tests__/vendors.test.js +1 -1
  106. package/dist/esm/__tests__/webhooks.test.js +1 -1
  107. package/dist/esm/__tests__/webhooks.test.js.map +1 -1
  108. package/dist/esm/__tests__/zones.test.js +22 -4
  109. package/dist/esm/__tests__/zones.test.js.map +1 -1
  110. package/dist/esm/apps/components.d.ts +321 -0
  111. package/dist/esm/apps/components.d.ts.map +1 -1
  112. package/dist/esm/apps/components.js +163 -1
  113. package/dist/esm/apps/components.js.map +1 -1
  114. package/dist/esm/apps/context.d.ts +24 -0
  115. package/dist/esm/apps/context.d.ts.map +1 -1
  116. package/dist/esm/apps/context.js.map +1 -1
  117. package/dist/esm/apps/devpreview.d.ts +20 -3
  118. package/dist/esm/apps/devpreview.d.ts.map +1 -1
  119. package/dist/esm/apps/devpreview.js +19 -8
  120. package/dist/esm/apps/devpreview.js.map +1 -1
  121. package/dist/esm/apps/hooks/index.d.ts +33 -2
  122. package/dist/esm/apps/hooks/index.d.ts.map +1 -1
  123. package/dist/esm/apps/hooks/index.js +37 -1
  124. package/dist/esm/apps/hooks/index.js.map +1 -1
  125. package/dist/esm/apps/hooks/store.d.ts +48 -0
  126. package/dist/esm/apps/hooks/store.d.ts.map +1 -0
  127. package/dist/esm/apps/hooks/store.js +84 -0
  128. package/dist/esm/apps/hooks/store.js.map +1 -0
  129. package/dist/esm/apps/manifest.d.ts +64 -3
  130. package/dist/esm/apps/manifest.d.ts.map +1 -1
  131. package/dist/esm/apps/manifest.js +116 -26
  132. package/dist/esm/apps/manifest.js.map +1 -1
  133. package/dist/esm/apps/protocol.d.ts +1 -1
  134. package/dist/esm/apps/protocol.d.ts.map +1 -1
  135. package/dist/esm/apps/route.d.ts +11 -1
  136. package/dist/esm/apps/route.d.ts.map +1 -1
  137. package/dist/esm/apps/route.js +14 -8
  138. package/dist/esm/apps/route.js.map +1 -1
  139. package/dist/esm/apps/routes.d.ts +65 -0
  140. package/dist/esm/apps/routes.d.ts.map +1 -0
  141. package/dist/esm/apps/routes.js +194 -0
  142. package/dist/esm/apps/routes.js.map +1 -0
  143. package/dist/esm/apps/surfaces.d.ts +20 -2
  144. package/dist/esm/apps/surfaces.d.ts.map +1 -1
  145. package/dist/esm/apps/surfaces.js +39 -2
  146. package/dist/esm/apps/surfaces.js.map +1 -1
  147. package/dist/esm/apps/testing/index.d.ts +17 -1
  148. package/dist/esm/apps/testing/index.d.ts.map +1 -1
  149. package/dist/esm/apps/testing/index.js +49 -1
  150. package/dist/esm/apps/testing/index.js.map +1 -1
  151. package/dist/esm/apps/ui/index.d.ts +13 -0
  152. package/dist/esm/apps/ui/index.d.ts.map +1 -1
  153. package/dist/esm/apps/ui/index.js +17 -1
  154. package/dist/esm/apps/ui/index.js.map +1 -1
  155. package/dist/esm/lib/config.d.ts +2 -2
  156. package/dist/esm/lib/config.js +2 -2
  157. package/examples/apps/hello-green/src/store.ts +15 -0
  158. package/jsr.json +1 -1
  159. package/package.json +1 -1
  160. package/src/__tests__/apps/contract.test.ts +305 -4
  161. package/src/__tests__/apps/devpreview-routes.test.ts +103 -0
  162. package/src/__tests__/apps/kit/example.test.ts +94 -5
  163. package/src/__tests__/apps/kit/pages.test.ts +137 -0
  164. package/src/__tests__/apps/kit/render.test.ts +35 -1
  165. package/src/__tests__/apps/kit/store.test.ts +149 -0
  166. package/src/__tests__/apps/post-install-page.test.ts +126 -0
  167. package/src/__tests__/apps/routes.test.ts +318 -0
  168. package/src/__tests__/vendors.test.ts +1 -1
  169. package/src/__tests__/webhooks.test.ts +1 -1
  170. package/src/__tests__/zones.test.ts +22 -4
  171. package/src/apps/components.ts +183 -1
  172. package/src/apps/context.ts +25 -0
  173. package/src/apps/devpreview.ts +20 -7
  174. package/src/apps/hooks/index.ts +42 -2
  175. package/src/apps/hooks/store.ts +115 -0
  176. package/src/apps/manifest.ts +151 -27
  177. package/src/apps/protocol.ts +1 -1
  178. package/src/apps/route.ts +22 -10
  179. package/src/apps/routes.ts +230 -0
  180. package/src/apps/surfaces.ts +45 -12
  181. package/src/apps/testing/index.ts +48 -2
  182. package/src/apps/ui/index.ts +18 -1
  183. package/src/lib/config.ts +2 -2
@@ -0,0 +1,194 @@
1
+ /*
2
+ * Hand-written (not generated by Speakeasy). Part of the third-party app platform contract;
3
+ * see docs/third-party-apps/fullpageview-plan.md.
4
+ *
5
+ * App page routes (`ui_extensions.routes[]`): the path grammar, the uniqueness rule and the one
6
+ * matcher every consumer shares (the host, `apps-cli validate`, the contract tests). Deliberately
7
+ * dependency-free (no zod) so the host renderer can import it without bundling zod; `manifest.ts`
8
+ * re-exports it because it is part of the manifest contract.
9
+ *
10
+ * The server mirrors the grammar and `normalizeRoutePath` in Ruby and reads the same fixtures
11
+ * (`src/__tests__/apps/fixtures/routes.json`).
12
+ */
13
+ /** A static segment: lower-case letters, digits and inner hyphens. */
14
+ const STATIC_SEGMENT = "[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";
15
+ /** A param segment: `:` and a lower-case name. */
16
+ const PARAM_SEGMENT = ":[a-z][a-z0-9_]*";
17
+ /**
18
+ * A declared route path: `/`, or `/seg(/seg)*` where each segment is static or a `:param`. No dots,
19
+ * percent-escapes, upper case, empty segments or trailing slash, so no path can climb out of the
20
+ * app's own space. `pages` is not reserved inside that space: `/pages/foo` is an ordinary path.
21
+ */
22
+ export const ROUTE_PATH_PATTERN = "^/(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|:[a-z][a-z0-9_]*)(?:/(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|:[a-z][a-z0-9_]*))*)?$";
23
+ /** A concrete path an app navigates to (`{ type: "appPage" }`): the same grammar without params. */
24
+ export const CONCRETE_ROUTE_PATH_PATTERN = `^/(?:${STATIC_SEGMENT}(?:/${STATIC_SEGMENT})*)?$`;
25
+ export const ROUTE_PATH_MAX_CHARS = 200;
26
+ /** Segments in one path; `/` has none. */
27
+ export const ROUTE_PATH_MAX_SEGMENTS = 8;
28
+ /** Routes in one manifest. */
29
+ export const APP_ROUTES_MAX = 50;
30
+ /** What every param segment becomes in {@link normalizeRoutePath}. */
31
+ const PARAM_PLACEHOLDER = ":_";
32
+ const ROUTE_PATH_RE = new RegExp(ROUTE_PATH_PATTERN);
33
+ const CONCRETE_ROUTE_PATH_RE = new RegExp(CONCRETE_ROUTE_PATH_PATTERN);
34
+ const PARAM_SEGMENT_RE = new RegExp(`^${PARAM_SEGMENT}$`);
35
+ /** The segments of a path in the grammar; `/` has none. */
36
+ function segmentsOf(path) {
37
+ return path === "/" ? [] : path.slice(1).split("/");
38
+ }
39
+ function withinLimits(path) {
40
+ return path.length <= ROUTE_PATH_MAX_CHARS && segmentsOf(path).length <= ROUTE_PATH_MAX_SEGMENTS;
41
+ }
42
+ /** A declared route path: the {@link ROUTE_PATH_PATTERN} grammar, ≤ 200 characters and ≤ 8 segments. */
43
+ export function isRoutePath(value) {
44
+ return typeof value === "string" && ROUTE_PATH_RE.test(value) && withinLimits(value);
45
+ }
46
+ /** A concrete route path (no `:param` segments) within the same limits as a declared one. */
47
+ export function isConcreteRoutePath(value) {
48
+ return typeof value === "string" && CONCRETE_ROUTE_PATH_RE.test(value) && withinLimits(value);
49
+ }
50
+ /**
51
+ * Renames every param segment to `:_`. Two paths that normalize to the same string claim the same
52
+ * URLs (`/vendors/:id` and `/vendors/:vendor_id`), so a manifest may declare only one of them.
53
+ */
54
+ export function normalizeRoutePath(path) {
55
+ return path
56
+ .split("/")
57
+ .map((segment) => (segment.startsWith(":") ? PARAM_PLACEHOLDER : segment))
58
+ .join("/");
59
+ }
60
+ /**
61
+ * The rules over a set of routes that a pattern alone cannot express: the segment cap, a param
62
+ * name used twice in one path, two paths claiming the same URLs, and a repeated portal. Grammar,
63
+ * length and the per-field limits are the schema's job; a path that fails the grammar is skipped
64
+ * here. The zod schema and `apps-cli validate` both report these, and the server repeats them.
65
+ */
66
+ export function routeSetIssues(routes) {
67
+ const issues = [];
68
+ const claimed = new Map();
69
+ routes.forEach((route, index) => {
70
+ const portals = route.portals ?? [];
71
+ if (new Set(portals).size !== portals.length) {
72
+ issues.push({ index, field: "portals", message: "portals must not repeat" });
73
+ }
74
+ if (!ROUTE_PATH_RE.test(route.path))
75
+ return;
76
+ const segments = segmentsOf(route.path);
77
+ if (segments.length > ROUTE_PATH_MAX_SEGMENTS) {
78
+ issues.push({
79
+ index,
80
+ field: "path",
81
+ message: `${route.path} has ${segments.length} segments; the limit is ${ROUTE_PATH_MAX_SEGMENTS}`,
82
+ });
83
+ }
84
+ const params = segments.filter((s) => s.startsWith(":"));
85
+ if (new Set(params).size !== params.length) {
86
+ issues.push({ index, field: "path", message: `${route.path} uses a param name twice` });
87
+ }
88
+ // A sidebar entry links to one fixed address, and a path with params has none.
89
+ if (params.length > 0 && route.navigation !== undefined) {
90
+ issues.push({
91
+ index,
92
+ field: "navigation",
93
+ message: `${route.path} has params, so it cannot have a navigation entry; add one to a path without params`,
94
+ });
95
+ }
96
+ const normalized = normalizeRoutePath(route.path);
97
+ const earlier = claimed.get(normalized);
98
+ if (earlier === undefined) {
99
+ claimed.set(normalized, route.path);
100
+ }
101
+ else {
102
+ issues.push({
103
+ index,
104
+ field: "path",
105
+ message: `${route.path} is declared twice (as ${earlier}); each path takes one page`,
106
+ });
107
+ }
108
+ });
109
+ return issues;
110
+ }
111
+ /**
112
+ * Decodes one pathname segment into a param value, or returns `null` when it cannot be one: a
113
+ * malformed escape, an empty value, `.` or `..`, or a value containing `/` or `:` (raw or
114
+ * encoded). A param therefore never carries a path or a host-looking value into the app.
115
+ */
116
+ function paramValue(segment) {
117
+ if (segment.includes(":"))
118
+ return null;
119
+ let value;
120
+ try {
121
+ value = decodeURIComponent(segment);
122
+ }
123
+ catch {
124
+ return null;
125
+ }
126
+ if (value === "" || value === "." || value === ".." || value.includes("/") || value.includes(":"))
127
+ return null;
128
+ return value;
129
+ }
130
+ /**
131
+ * Finds the route a pathname in the app's own space renders (`/reports/7` for
132
+ * `/{portal}/apps/{appId}/pages/reports/7`), or `null` when none does.
133
+ *
134
+ * `pathname` is URL-encoded, as it appears in a URL: `/` or `/seg(/seg)*` with no empty segment,
135
+ * trailing slash, query or fragment (anything else matches nothing). A host that receives decoded
136
+ * segments encodes each with `encodeURIComponent` before joining them.
137
+ *
138
+ * A static route segment matches only the identical pathname segment. A param segment matches any
139
+ * other segment that decodes to a plain value (see `paramValue`); a segment containing `:` never
140
+ * matches a param. When several routes match, the one with a static segment at the first position
141
+ * where they differ wins (static before param, left to right); among equals, the first declared.
142
+ * Routes whose path is not in the grammar are ignored, so a stale or hand-edited feed entry can
143
+ * never match.
144
+ */
145
+ export function matchAppRoute(routes, pathname) {
146
+ if (!pathname.startsWith("/") || /[?#]/.test(pathname))
147
+ return null;
148
+ const segments = segmentsOf(pathname);
149
+ if (segments.some((s) => s === ""))
150
+ return null;
151
+ let best = null;
152
+ for (const [index, route] of routes.entries()) {
153
+ const candidate = matchOne(route, index, segments);
154
+ if (candidate !== null && (best === null || outranks(candidate.rank, best.rank)))
155
+ best = candidate;
156
+ }
157
+ return best === null ? null : best.match;
158
+ }
159
+ /** Matches one route against the pathname's segments, with its static/param rank. */
160
+ function matchOne(route, index, segments) {
161
+ if (!isRoutePath(route.path))
162
+ return null;
163
+ const pattern = segmentsOf(route.path);
164
+ if (pattern.length !== segments.length)
165
+ return null;
166
+ const params = {};
167
+ const rank = [];
168
+ for (let i = 0; i < pattern.length; i++) {
169
+ const expected = pattern[i] ?? "";
170
+ const actual = segments[i] ?? "";
171
+ if (PARAM_SEGMENT_RE.test(expected)) {
172
+ const value = paramValue(actual);
173
+ if (value === null)
174
+ return null;
175
+ params[expected.slice(1)] = value;
176
+ rank.push(false);
177
+ }
178
+ else {
179
+ if (expected !== actual)
180
+ return null;
181
+ rank.push(true);
182
+ }
183
+ }
184
+ return { match: { route, params, index }, rank };
185
+ }
186
+ /** Whether `a` has a static segment at the first position where it and `b` differ. */
187
+ function outranks(a, b) {
188
+ for (let i = 0; i < a.length; i++) {
189
+ if (a[i] !== b[i])
190
+ return a[i] === true;
191
+ }
192
+ return false;
193
+ }
194
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/apps/routes.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export type Portal = "vendor" | "company" | "facility" | "system";
2
- export type SurfaceKind = "navigation" | "drawer.default" | "overview" | "list" | "list.row_action" | "detail" | "detail.tabs" | "settings";
2
+ export type SurfaceKind = "navigation" | "drawer.default" | "overview" | "list" | "list.row_action" | "detail" | "detail.tabs" | "settings"
3
+ /** An app page: one of the app's own `ui_extensions.routes`, rendered full screen. */
4
+ | "page";
3
5
  /**
4
6
  * The kind of record a surface is showing. These match the public API resource each one is
5
7
  * read through (`/vendors`, `/vendors/credentials`, `/facilities`, `/companies`,
@@ -27,6 +29,19 @@ export interface SurfaceDef {
27
29
  /** Wave 1 surfaces are rendered by the host; Wave 2 ids are reserved and accepted in manifests. */
28
30
  readonly wave: 1 | 2;
29
31
  }
32
+ /**
33
+ * Host URL segment reserved for app pages: `/{portal}/apps/{appId}/pages{path}`. No host route may
34
+ * be defined under it except the screens that render app pages, so an app path can never shadow a
35
+ * host page. It is not reserved inside an app's own space: `/pages/foo` is an ordinary app path.
36
+ */
37
+ export declare const APP_PAGES_SEGMENT = "pages";
38
+ /**
39
+ * The host pathname of an app page: `/{portal}/apps/{appId}/pages{path}`, with the root path `/`
40
+ * at `/{portal}/apps/{appId}/pages`. Throws unless `appId` is a positive integer and `path` is a
41
+ * concrete route path (`isConcreteRoutePath`), so no input can resolve outside the app's own pages
42
+ * (`/../settings`, `//evil.example`).
43
+ */
44
+ export declare function appPagePathname(portal: Portal, appId: number, path: string): string;
30
45
  export declare const SURFACES: readonly SurfaceDef[];
31
46
  /**
32
47
  * A surface identifier. This is deliberately a plain `string`: the catalog is data-driven, so the
@@ -38,6 +53,9 @@ export declare function isSurfaceId(value: unknown): value is SurfaceId;
38
53
  export declare function getSurface(id: string): SurfaceDef | undefined;
39
54
  /** The fallback surface a portal resolves to when an app has no view for the exact surface. */
40
55
  export declare function drawerDefaultFor(portal: Portal): SurfaceId;
41
- /** Surfaces the host renders for a portal in the given wave (and earlier waves). */
56
+ /**
57
+ * Surfaces the host renders for a portal in the given wave (and earlier waves). Portal-less
58
+ * surfaces (`settings`, `page`) are never included: they belong to an app, not to a portal screen.
59
+ */
42
60
  export declare function surfacesForPortal(portal: Portal, wave?: 1 | 2): SurfaceDef[];
43
61
  //# sourceMappingURL=surfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"surfaces.d.ts","sourceRoot":"","sources":["../../../src/apps/surfaces.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAElE,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,gBAAgB,GAChB,UAAU,GACV,MAAM,GACN,iBAAiB,GACjB,QAAQ,GACR,aAAa,GACb,UAAU,CAAC;AAEf;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,mBAAmB,GACnB,UAAU,GACV,SAAS,GACT,aAAa,GACb,SAAS,GACT,OAAO,GACP,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mGAAmG;IACnG,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;CACtB;AAsED,eAAO,MAAM,QAAQ,EAAE,SAAS,UAAU,EAOxC,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAI/B,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE7D;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAE1D;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,CAAC,GAAG,CAAK,GAAG,UAAU,EAAE,CAE/E"}
1
+ {"version":3,"file":"surfaces.d.ts","sourceRoot":"","sources":["../../../src/apps/surfaces.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAElE,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,gBAAgB,GAChB,UAAU,GACV,MAAM,GACN,iBAAiB,GACjB,QAAQ,GACR,aAAa,GACb,UAAU;AACZ,sFAAsF;GACpF,MAAM,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GACpB,QAAQ,GAAG,mBAAmB,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAExH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mGAAmG;IACnG,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQnF;AA8ED,eAAO,MAAM,QAAQ,EAAE,SAAS,UAAU,EAWxC,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAI/B,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE7D;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAE1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,CAAC,GAAG,CAAK,GAAG,UAAU,EAAE,CAE/E"}
@@ -2,6 +2,28 @@
2
2
  * Hand-written (not generated by Speakeasy). Part of the third-party app platform contract;
3
3
  * see docs/third-party-apps/plan.md. Host (web-mobile-client) and SDK both import from here.
4
4
  */
5
+ import { isConcreteRoutePath } from "./routes.js";
6
+ /**
7
+ * Host URL segment reserved for app pages: `/{portal}/apps/{appId}/pages{path}`. No host route may
8
+ * be defined under it except the screens that render app pages, so an app path can never shadow a
9
+ * host page. It is not reserved inside an app's own space: `/pages/foo` is an ordinary app path.
10
+ */
11
+ export const APP_PAGES_SEGMENT = "pages";
12
+ /**
13
+ * The host pathname of an app page: `/{portal}/apps/{appId}/pages{path}`, with the root path `/`
14
+ * at `/{portal}/apps/{appId}/pages`. Throws unless `appId` is a positive integer and `path` is a
15
+ * concrete route path (`isConcreteRoutePath`), so no input can resolve outside the app's own pages
16
+ * (`/../settings`, `//evil.example`).
17
+ */
18
+ export function appPagePathname(portal, appId, path) {
19
+ if (!Number.isSafeInteger(appId) || appId <= 0) {
20
+ throw new RangeError(`appPagePathname: app id must be a positive integer, got ${String(appId)}`);
21
+ }
22
+ if (!isConcreteRoutePath(path)) {
23
+ throw new RangeError(`appPagePathname: not a concrete route path: ${JSON.stringify(path)}`);
24
+ }
25
+ return `/${portal}/apps/${appId}/${APP_PAGES_SEGMENT}${path === "/" ? "" : path}`;
26
+ }
5
27
  /** Expands a list surface into the surface itself and its row-action surface. */
6
28
  function list(portal, entity, objectType, route) {
7
29
  return [
@@ -60,7 +82,15 @@ function staffPortal(portal) {
60
82
  ];
61
83
  }
62
84
  function define(portal, wave, entries) {
63
- return entries.map(([id, kind, objectType, route, idParam]) => ({ id, portal, kind, objectType, route, idParam, wave }));
85
+ return entries.map(([id, kind, objectType, route, idParam]) => ({
86
+ id,
87
+ portal,
88
+ kind,
89
+ objectType,
90
+ route,
91
+ idParam,
92
+ wave,
93
+ }));
64
94
  }
65
95
  export const SURFACES = Object.freeze([
66
96
  ...define("company", 1, COMPANY),
@@ -69,6 +99,10 @@ export const SURFACES = Object.freeze([
69
99
  ...define("system", 2, staffPortal("system")),
70
100
  // The app's own settings page. Every portal has one, so the route names the portal as a segment.
71
101
  ...define(null, 1, [["settings", "settings", null, "/[portal]/apps/[appId]/settings", "appId"]]),
102
+ // Every app page (`ui_extensions.routes`), under the one prefix reserved for apps. Like
103
+ // `settings` it has no portal of its own, and it is not a view viewport or a `surface` target:
104
+ // apps declare pages as routes and reach them with `{ type: "appPage" }`.
105
+ ...define(null, 1, [["page", "page", null, `/[portal]/apps/[appId]/${APP_PAGES_SEGMENT}/[...path]`, "appId"]]),
72
106
  ]);
73
107
  const SURFACES_BY_ID = new Map(SURFACES.map((s) => [s.id, s]));
74
108
  export function isSurfaceId(value) {
@@ -81,7 +115,10 @@ export function getSurface(id) {
81
115
  export function drawerDefaultFor(portal) {
82
116
  return `gs.${portal}.drawer.default`;
83
117
  }
84
- /** Surfaces the host renders for a portal in the given wave (and earlier waves). */
118
+ /**
119
+ * Surfaces the host renders for a portal in the given wave (and earlier waves). Portal-less
120
+ * surfaces (`settings`, `page`) are never included: they belong to an app, not to a portal screen.
121
+ */
85
122
  export function surfacesForPortal(portal, wave = 1) {
86
123
  return SURFACES.filter((s) => s.portal === portal && s.wave <= wave);
87
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"surfaces.js","sourceRoot":"","sources":["../../../src/apps/surfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surfaces.js","sourceRoot":"","sources":["../../../src/apps/surfaces.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { RemoteReceiver, type RemoteReceiverElement, type RemoteReceiverNode } from "@remote-dom/core/receivers";
2
2
  import type { ReactElement } from "react";
3
3
  import { type ComponentName } from "../components.js";
4
- import { type AppTokens, type ExtensionContext } from "../context.js";
4
+ import { type AppTokens, type ExtensionContext, type PageRoute } from "../context.js";
5
5
  import type { HostApi } from "../protocol.js";
6
6
  import { REMOTE_FRAGMENT_TAG } from "../runtime/elements.js";
7
7
  import { type SandboxRuntime } from "../runtime/sandbox.js";
@@ -17,8 +17,24 @@ export declare function mockTokens(now?: number): AppTokens;
17
17
  * platform permissions such as `app_secrets.write` out of `auth.user.scope`: the server grants
18
18
  * them to the app's role only, so a real user token never carries them. The mock performs no
19
19
  * permission checks; stub the Secret Store's 403 yourself to test a missing grant.
20
+ *
21
+ * `environment.navParams` (what this app's own `navigate` passed as `envParams`) and
22
+ * `environment.queryParams` (an app page's URL query) both default to `{}`; set either to test a
23
+ * view opened by a navigation or from a link. Setting `environment.route` puts the view on an app
24
+ * page (see {@link mockPageRoute}).
20
25
  */
21
26
  export declare function getMockContext(overrides?: DeepPartial<ExtensionContext>): ExtensionContext;
27
+ /**
28
+ * The `environment.route` the host sends for `pathname` on the declared route `path`, with its
29
+ * params decoded the way the host does it (`matchAppRoute`). `pathname` defaults to `path`, so a
30
+ * route without params needs only one argument. Throws when `pathname` does not match `path`:
31
+ * the host would never render that page.
32
+ *
33
+ * ```ts
34
+ * mockPageRoute("/reports/:id", "/reports/7"); // { path: "/reports/:id", pathname: "/reports/7", params: { id: "7" } }
35
+ * ```
36
+ */
37
+ export declare function mockPageRoute(path: string, pathname?: string): PageRoute;
22
38
  export interface HostCall {
23
39
  method: keyof HostApi;
24
40
  args: unknown[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/apps/testing/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/apps/testing/index.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,14 @@
13
13
  * await view.find("Button")!.trigger("onPress");
14
14
  * expect(view.find("FocusView")!.props["shown"]).toBe(true);
15
15
  * ```
16
+ *
17
+ * An app page gets its route through the context:
18
+ *
19
+ * ```ts
20
+ * const page = await renderForTest(<ReportDetail />, {
21
+ * context: { environment: { route: mockPageRoute("/reports/:id", "/reports/7") } },
22
+ * });
23
+ * ```
16
24
  */
17
25
  var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
18
26
  if (kind === "m") throw new TypeError("Private method is not writable");
@@ -31,6 +39,7 @@ import { RemoteReceiver } from "@remote-dom/core/receivers";
31
39
  import { COMPONENTS } from "../components.js";
32
40
  import { PROTOCOL_VERSION } from "../context.js";
33
41
  import { REMOTE_FRAGMENT_TAG } from "../runtime/elements.js";
42
+ import { matchAppRoute } from "../routes.js";
34
43
  import { createSandboxExports } from "../runtime/sandbox.js";
35
44
  // Remote-dom node type constants (`NODE_TYPE_ELEMENT`, `NODE_TYPE_TEXT`).
36
45
  const NODE_TYPE_ELEMENT = 1;
@@ -50,8 +59,14 @@ export function mockTokens(now = Date.now()) {
50
59
  * platform permissions such as `app_secrets.write` out of `auth.user.scope`: the server grants
51
60
  * them to the app's role only, so a real user token never carries them. The mock performs no
52
61
  * permission checks; stub the Secret Store's 403 yourself to test a missing grant.
62
+ *
63
+ * `environment.navParams` (what this app's own `navigate` passed as `envParams`) and
64
+ * `environment.queryParams` (an app page's URL query) both default to `{}`; set either to test a
65
+ * view opened by a navigation or from a link. Setting `environment.route` puts the view on an app
66
+ * page (see {@link mockPageRoute}).
53
67
  */
54
68
  export function getMockContext(overrides = {}) {
69
+ const route = overrides.environment?.route;
55
70
  const base = {
56
71
  protocolVersion: PROTOCOL_VERSION,
57
72
  app: { id: 1, version: "1.0.0", permissions: [], csp: { connectSrc: [], imageSrc: [] } },
@@ -61,12 +76,45 @@ export function getMockContext(overrides = {}) {
61
76
  portal: "company",
62
77
  platform: "web",
63
78
  queryParams: {},
79
+ navParams: {},
64
80
  constants: {},
65
81
  apiBaseUrl: "https://api.example.test/api",
66
82
  },
67
83
  auth: mockTokens(),
68
84
  };
69
- return deepMerge(base, overrides);
85
+ // An app page is rendered on the `page` surface; an explicit `surfaceId` still wins.
86
+ if (route !== undefined)
87
+ base.environment.surfaceId = "page";
88
+ const merged = deepMerge(base, overrides);
89
+ if (route !== undefined)
90
+ merged.environment.route = completeRoute(route);
91
+ return merged;
92
+ }
93
+ /**
94
+ * The `environment.route` the host sends for `pathname` on the declared route `path`, with its
95
+ * params decoded the way the host does it (`matchAppRoute`). `pathname` defaults to `path`, so a
96
+ * route without params needs only one argument. Throws when `pathname` does not match `path`:
97
+ * the host would never render that page.
98
+ *
99
+ * ```ts
100
+ * mockPageRoute("/reports/:id", "/reports/7"); // { path: "/reports/:id", pathname: "/reports/7", params: { id: "7" } }
101
+ * ```
102
+ */
103
+ export function mockPageRoute(path, pathname = path) {
104
+ const match = matchAppRoute([{ path }], pathname);
105
+ if (!match)
106
+ throw new Error(`${pathname} does not match the route ${path}`);
107
+ return { path, pathname, params: match.params };
108
+ }
109
+ /** Fills a partial `environment.route` override: a missing pathname is the path, missing params are `{}`. */
110
+ function completeRoute(route) {
111
+ const path = route.path ?? route.pathname ?? "/";
112
+ const params = {};
113
+ for (const [name, value] of Object.entries(route.params ?? {})) {
114
+ if (typeof value === "string")
115
+ params[name] = value;
116
+ }
117
+ return { path, pathname: route.pathname ?? path, params };
70
118
  }
71
119
  function isPlainObject(value) {
72
120
  return typeof value === "object" && value !== null && !Array.isArray(value) &&
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/apps/testing/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/apps/testing/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,12 @@ import { type UiProps } from "./factory.js";
3
3
  export type { UiProps } from "./factory.js";
4
4
  export declare const ContextView: import("react").FunctionComponent<UiProps<"ContextView">>;
5
5
  export declare const SettingsView: import("react").FunctionComponent<UiProps<"SettingsView">>;
6
+ /**
7
+ * An app page (`ui_extensions.routes`), full width inside the portal's own chrome. `title` is the
8
+ * page header; the `actions` slot joins the header's actions and `banner` sits above the body.
9
+ * Read the route's params with `usePageRoute()` from `apps/hooks`.
10
+ */
11
+ export declare const PageView: import("react").FunctionComponent<UiProps<"PageView">>;
6
12
  export type FocusViewProps = UiProps<"FocusView"> & {
7
13
  /**
8
14
  * Stripe-style setter. The host calls it with `false` when the user asks to close the view
@@ -67,4 +73,11 @@ export declare const Radio: import("react").FunctionComponent<UiProps<"Radio">>;
67
73
  export declare const Switch: import("react").FunctionComponent<UiProps<"Switch">>;
68
74
  export declare const DateField: import("react").FunctionComponent<UiProps<"DateField">>;
69
75
  export declare const FormFieldGroup: import("react").FunctionComponent<UiProps<"FormFieldGroup">>;
76
+ export declare const BarChart: import("react").FunctionComponent<UiProps<"BarChart">>;
77
+ export declare const HorizontalBarChart: import("react").FunctionComponent<UiProps<"HorizontalBarChart">>;
78
+ export declare const StackedBarChart: import("react").FunctionComponent<UiProps<"StackedBarChart">>;
79
+ export declare const LineChart: import("react").FunctionComponent<UiProps<"LineChart">>;
80
+ export declare const AreaChart: import("react").FunctionComponent<UiProps<"AreaChart">>;
81
+ export declare const ComboChart: import("react").FunctionComponent<UiProps<"ComboChart">>;
82
+ export declare const PieChart: import("react").FunctionComponent<UiProps<"PieChart">>;
70
83
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/apps/ui/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAE/D,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,eAAO,MAAM,WAAW,2DAAmD,CAAC;AAC5E,eAAO,MAAM,YAAY,4DAAoD,CAAC;AAI9E,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG;IAClD;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAa1D;AAGD,eAAO,MAAM,GAAG,mDAA2C,CAAC;AAC5D,eAAO,MAAM,MAAM,sDAA8C,CAAC;AAClE,eAAO,MAAM,OAAO,uDAA+C,CAAC;AACpE,eAAO,MAAM,IAAI,oDAA4C,CAAC;AAG9D,eAAO,MAAM,IAAI,oDAA4C,CAAC;AAC9D,eAAO,MAAM,OAAO,uDAA+C,CAAC;AACpE,eAAO,MAAM,KAAK,qDAA6C,CAAC;AAChE,eAAO,MAAM,MAAM,sDAA8C,CAAC;AAClE,eAAO,MAAM,OAAO,uDAA+C,CAAC;AACpE,eAAO,MAAM,QAAQ,wDAAgD,CAAC;AACtE,eAAO,MAAM,IAAI,oDAA4C,CAAC;AAC9D,eAAO,MAAM,GAAG,mDAA2C,CAAC;AAC5D,eAAO,MAAM,MAAM,sDAA8C,CAAC;AAGlE,eAAO,MAAM,MAAM,sDAA8C,CAAC;AAClE,eAAO,MAAM,WAAW,2DAAmD,CAAC;AAC5E,eAAO,MAAM,IAAI,oDAA4C,CAAC;AAC9D,eAAO,MAAM,IAAI,oDAA4C,CAAC;AAC9D,eAAO,MAAM,SAAS,yDAAiD,CAAC;AACxE,eAAO,MAAM,QAAQ,wDAAgD,CAAC;AAGtE,eAAO,MAAM,SAAS,yDAAiD,CAAC;AACxE,eAAO,MAAM,aAAa,6DAAqD,CAAC;AAChF,eAAO,MAAM,IAAI,oDAA4C,CAAC;AAC9D,eAAO,MAAM,QAAQ,wDAAgD,CAAC;AACtE,eAAO,MAAM,YAAY,4DAAoD,CAAC;AAC9E,eAAO,MAAM,gBAAgB,gEAAwD,CAAC;AACtF,eAAO,MAAM,KAAK,qDAA6C,CAAC;AAChE,eAAO,MAAM,SAAS,yDAAiD,CAAC;AACxE,eAAO,MAAM,SAAS,yDAAiD,CAAC;AACxE,eAAO,MAAM,QAAQ,wDAAgD,CAAC;AACtE,eAAO,MAAM,eAAe,+DAAuD,CAAC;AACpF,eAAO,MAAM,SAAS,yDAAiD,CAAC;AACxE,eAAO,MAAM,IAAI,oDAA4C,CAAC;AAC9D,eAAO,MAAM,OAAO,uDAA+C,CAAC;AACpE,eAAO,MAAM,GAAG,mDAA2C,CAAC;AAC5D,eAAO,MAAM,SAAS,yDAAiD,CAAC;AACxE,eAAO,MAAM,QAAQ,wDAAgD,CAAC;AAItE,eAAO,MAAM,SAAS,yDAAiD,CAAC;AACxE,eAAO,MAAM,QAAQ,wDAAgD,CAAC;AACtE,eAAO,MAAM,MAAM,sDAA8C,CAAC;AAClE,eAAO,MAAM,YAAY,4DAAoD,CAAC;AAC9E,eAAO,MAAM,QAAQ,wDAAgD,CAAC;AACtE,eAAO,MAAM,UAAU,0DAAkD,CAAC;AAC1E,eAAO,MAAM,KAAK,qDAA6C,CAAC;AAChE,eAAO,MAAM,MAAM,sDAA8C,CAAC;AAClE,eAAO,MAAM,SAAS,yDAAiD,CAAC;AACxE,eAAO,MAAM,cAAc,8DAAsD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/apps/ui/index.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,16 @@
9
9
  */
10
10
  import { createElement } from "react";
11
11
  import { createUiComponent } from "./factory.js";
12
- // View roots. A view component renders exactly one ContextView or SettingsView at its top.
12
+ // View roots. A view component renders exactly one of these at its top: ContextView on a surface,
13
+ // SettingsView on the settings page, PageView on an app page.
13
14
  export const ContextView = /* @__PURE__ */ createUiComponent("ContextView");
14
15
  export const SettingsView = /* @__PURE__ */ createUiComponent("SettingsView");
16
+ /**
17
+ * An app page (`ui_extensions.routes`), full width inside the portal's own chrome. `title` is the
18
+ * page header; the `actions` slot joins the header's actions and `banner` sits above the body.
19
+ * Read the route's params with `usePageRoute()` from `apps/hooks`.
20
+ */
21
+ export const PageView = /* @__PURE__ */ createUiComponent("PageView");
15
22
  const FocusViewElement = /* @__PURE__ */ createUiComponent("FocusView");
16
23
  /**
17
24
  * A full-screen (mobile) or large modal (web) view opened from a ContextView. The app owns
@@ -89,4 +96,13 @@ export const Radio = /* @__PURE__ */ createUiComponent("Radio");
89
96
  export const Switch = /* @__PURE__ */ createUiComponent("Switch");
90
97
  export const DateField = /* @__PURE__ */ createUiComponent("DateField");
91
98
  export const FormFieldGroup = /* @__PURE__ */ createUiComponent("FormFieldGroup");
99
+ // Charts. Data only: pick a palette with `theme`; `onClick` receives a `ChartClickEvent`
100
+ // (`index`, `label`, `value` and, on multi-series charts, `series`).
101
+ export const BarChart = /* @__PURE__ */ createUiComponent("BarChart");
102
+ export const HorizontalBarChart = /* @__PURE__ */ createUiComponent("HorizontalBarChart");
103
+ export const StackedBarChart = /* @__PURE__ */ createUiComponent("StackedBarChart");
104
+ export const LineChart = /* @__PURE__ */ createUiComponent("LineChart");
105
+ export const AreaChart = /* @__PURE__ */ createUiComponent("AreaChart");
106
+ export const ComboChart = /* @__PURE__ */ createUiComponent("ComboChart");
107
+ export const PieChart = /* @__PURE__ */ createUiComponent("PieChart");
92
108
  //# sourceMappingURL=index.js.map