@oddkin/workbench 0.0.0-stage → 1.0.0-beta.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 (223) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -2
  3. package/dist/app/copy.d.ts +43 -0
  4. package/dist/app/copy.d.ts.map +1 -0
  5. package/dist/app/copy.js +47 -0
  6. package/dist/app/copy.js.map +1 -0
  7. package/dist/app/define.d.ts +3 -0
  8. package/dist/app/define.d.ts.map +1 -0
  9. package/dist/app/define.js +10 -0
  10. package/dist/app/define.js.map +1 -0
  11. package/dist/app/details.d.ts +22 -0
  12. package/dist/app/details.d.ts.map +1 -0
  13. package/dist/app/details.js +16 -0
  14. package/dist/app/details.js.map +1 -0
  15. package/dist/app/index.d.ts +12 -0
  16. package/dist/app/index.d.ts.map +1 -0
  17. package/dist/app/index.js +9 -0
  18. package/dist/app/index.js.map +1 -0
  19. package/dist/app/routes.d.ts +26 -0
  20. package/dist/app/routes.d.ts.map +1 -0
  21. package/dist/app/routes.js +94 -0
  22. package/dist/app/routes.js.map +1 -0
  23. package/dist/app/search.d.ts +17 -0
  24. package/dist/app/search.d.ts.map +1 -0
  25. package/dist/app/search.js +52 -0
  26. package/dist/app/search.js.map +1 -0
  27. package/dist/app/shell.d.ts +29 -0
  28. package/dist/app/shell.d.ts.map +1 -0
  29. package/dist/app/shell.js +435 -0
  30. package/dist/app/shell.js.map +1 -0
  31. package/dist/app/styles.d.ts +2 -0
  32. package/dist/app/styles.d.ts.map +1 -0
  33. package/dist/app/styles.js +373 -0
  34. package/dist/app/styles.js.map +1 -0
  35. package/dist/app/theme-studio.d.ts +12 -0
  36. package/dist/app/theme-studio.d.ts.map +1 -0
  37. package/dist/app/theme-studio.js +14 -0
  38. package/dist/app/theme-studio.js.map +1 -0
  39. package/dist/app/views.d.ts +34 -0
  40. package/dist/app/views.d.ts.map +1 -0
  41. package/dist/app/views.js +230 -0
  42. package/dist/app/views.js.map +1 -0
  43. package/dist/config/index.d.ts +170 -0
  44. package/dist/config/index.d.ts.map +1 -0
  45. package/dist/config/index.js +148 -0
  46. package/dist/config/index.js.map +1 -0
  47. package/dist/conformance/button.d.ts +2 -0
  48. package/dist/conformance/button.d.ts.map +1 -0
  49. package/dist/conformance/button.js +233 -0
  50. package/dist/conformance/button.js.map +1 -0
  51. package/dist/conformance/index.d.ts +107 -0
  52. package/dist/conformance/index.d.ts.map +1 -0
  53. package/dist/conformance/index.js +60 -0
  54. package/dist/conformance/index.js.map +1 -0
  55. package/dist/data/build.d.ts +36 -0
  56. package/dist/data/build.d.ts.map +1 -0
  57. package/dist/data/build.js +248 -0
  58. package/dist/data/build.js.map +1 -0
  59. package/dist/data/import-map.d.ts +53 -0
  60. package/dist/data/import-map.d.ts.map +1 -0
  61. package/dist/data/import-map.js +160 -0
  62. package/dist/data/import-map.js.map +1 -0
  63. package/dist/data/index.d.ts +14 -0
  64. package/dist/data/index.d.ts.map +1 -0
  65. package/dist/data/index.js +10 -0
  66. package/dist/data/index.js.map +1 -0
  67. package/dist/data/theme-studio.d.ts +21 -0
  68. package/dist/data/theme-studio.d.ts.map +1 -0
  69. package/dist/data/theme-studio.js +116 -0
  70. package/dist/data/theme-studio.js.map +1 -0
  71. package/dist/data/types.d.ts +169 -0
  72. package/dist/data/types.d.ts.map +1 -0
  73. package/dist/data/types.js +4 -0
  74. package/dist/data/types.js.map +1 -0
  75. package/dist/examples/index.d.ts +101 -0
  76. package/dist/examples/index.d.ts.map +1 -0
  77. package/dist/examples/index.js +106 -0
  78. package/dist/examples/index.js.map +1 -0
  79. package/dist/frame/index.d.ts +9 -0
  80. package/dist/frame/index.d.ts.map +1 -0
  81. package/dist/frame/index.js +468 -0
  82. package/dist/frame/index.js.map +1 -0
  83. package/dist/internal/diagnostics.d.ts +17 -0
  84. package/dist/internal/diagnostics.d.ts.map +1 -0
  85. package/dist/internal/diagnostics.js +19 -0
  86. package/dist/internal/diagnostics.js.map +1 -0
  87. package/dist/node/bin.d.ts +3 -0
  88. package/dist/node/bin.d.ts.map +1 -0
  89. package/dist/node/bin.js +12 -0
  90. package/dist/node/bin.js.map +1 -0
  91. package/dist/node/cli.d.ts +17 -0
  92. package/dist/node/cli.d.ts.map +1 -0
  93. package/dist/node/cli.js +198 -0
  94. package/dist/node/cli.js.map +1 -0
  95. package/dist/node/config.d.ts +28 -0
  96. package/dist/node/config.d.ts.map +1 -0
  97. package/dist/node/config.js +80 -0
  98. package/dist/node/config.js.map +1 -0
  99. package/dist/node/generated.d.ts +19 -0
  100. package/dist/node/generated.d.ts.map +1 -0
  101. package/dist/node/generated.js +109 -0
  102. package/dist/node/generated.js.map +1 -0
  103. package/dist/node/html.d.ts +35 -0
  104. package/dist/node/html.d.ts.map +1 -0
  105. package/dist/node/html.js +51 -0
  106. package/dist/node/html.js.map +1 -0
  107. package/dist/node/index.d.ts +24 -0
  108. package/dist/node/index.d.ts.map +1 -0
  109. package/dist/node/index.js +15 -0
  110. package/dist/node/index.js.map +1 -0
  111. package/dist/node/inputs.d.ts +24 -0
  112. package/dist/node/inputs.d.ts.map +1 -0
  113. package/dist/node/inputs.js +259 -0
  114. package/dist/node/inputs.js.map +1 -0
  115. package/dist/node/packages.d.ts +35 -0
  116. package/dist/node/packages.d.ts.map +1 -0
  117. package/dist/node/packages.js +87 -0
  118. package/dist/node/packages.js.map +1 -0
  119. package/dist/node/preload.d.ts +10 -0
  120. package/dist/node/preload.d.ts.map +1 -0
  121. package/dist/node/preload.js +61 -0
  122. package/dist/node/preload.js.map +1 -0
  123. package/dist/node/server.d.ts +42 -0
  124. package/dist/node/server.d.ts.map +1 -0
  125. package/dist/node/server.js +369 -0
  126. package/dist/node/server.js.map +1 -0
  127. package/dist/node/static.d.ts +33 -0
  128. package/dist/node/static.d.ts.map +1 -0
  129. package/dist/node/static.js +141 -0
  130. package/dist/node/static.js.map +1 -0
  131. package/dist/node/workbench.d.ts +43 -0
  132. package/dist/node/workbench.d.ts.map +1 -0
  133. package/dist/node/workbench.js +183 -0
  134. package/dist/node/workbench.js.map +1 -0
  135. package/dist/pages/build.d.ts +22 -0
  136. package/dist/pages/build.d.ts.map +1 -0
  137. package/dist/pages/build.js +363 -0
  138. package/dist/pages/build.js.map +1 -0
  139. package/dist/pages/defaults.d.ts +16 -0
  140. package/dist/pages/defaults.d.ts.map +1 -0
  141. package/dist/pages/defaults.js +88 -0
  142. package/dist/pages/defaults.js.map +1 -0
  143. package/dist/pages/index.d.ts +14 -0
  144. package/dist/pages/index.d.ts.map +1 -0
  145. package/dist/pages/index.js +10 -0
  146. package/dist/pages/index.js.map +1 -0
  147. package/dist/pages/navigation.d.ts +48 -0
  148. package/dist/pages/navigation.d.ts.map +1 -0
  149. package/dist/pages/navigation.js +83 -0
  150. package/dist/pages/navigation.js.map +1 -0
  151. package/dist/pages/types.d.ts +143 -0
  152. package/dist/pages/types.d.ts.map +1 -0
  153. package/dist/pages/types.js +3 -0
  154. package/dist/pages/types.js.map +1 -0
  155. package/dist/panels/catalog-define.d.ts +3 -0
  156. package/dist/panels/catalog-define.d.ts.map +1 -0
  157. package/dist/panels/catalog-define.js +7 -0
  158. package/dist/panels/catalog-define.js.map +1 -0
  159. package/dist/panels/catalog.d.ts +33 -0
  160. package/dist/panels/catalog.d.ts.map +1 -0
  161. package/dist/panels/catalog.js +54 -0
  162. package/dist/panels/catalog.js.map +1 -0
  163. package/dist/panels/component-define.d.ts +3 -0
  164. package/dist/panels/component-define.d.ts.map +1 -0
  165. package/dist/panels/component-define.js +6 -0
  166. package/dist/panels/component-define.js.map +1 -0
  167. package/dist/panels/component-detail.d.ts +46 -0
  168. package/dist/panels/component-detail.d.ts.map +1 -0
  169. package/dist/panels/component-detail.js +1120 -0
  170. package/dist/panels/component-detail.js.map +1 -0
  171. package/dist/panels/component.d.ts +17 -0
  172. package/dist/panels/component.d.ts.map +1 -0
  173. package/dist/panels/component.js +10 -0
  174. package/dist/panels/component.js.map +1 -0
  175. package/dist/panels/foundation-define.d.ts +3 -0
  176. package/dist/panels/foundation-define.d.ts.map +1 -0
  177. package/dist/panels/foundation-define.js +6 -0
  178. package/dist/panels/foundation-define.js.map +1 -0
  179. package/dist/panels/foundation-detail.d.ts +23 -0
  180. package/dist/panels/foundation-detail.d.ts.map +1 -0
  181. package/dist/panels/foundation-detail.js +216 -0
  182. package/dist/panels/foundation-detail.js.map +1 -0
  183. package/dist/panels/foundation.d.ts +15 -0
  184. package/dist/panels/foundation.d.ts.map +1 -0
  185. package/dist/panels/foundation.js +9 -0
  186. package/dist/panels/foundation.js.map +1 -0
  187. package/dist/panels/model.d.ts +173 -0
  188. package/dist/panels/model.d.ts.map +1 -0
  189. package/dist/panels/model.js +462 -0
  190. package/dist/panels/model.js.map +1 -0
  191. package/dist/panels/styles.d.ts +3 -0
  192. package/dist/panels/styles.d.ts.map +1 -0
  193. package/dist/panels/styles.js +316 -0
  194. package/dist/panels/styles.js.map +1 -0
  195. package/dist/panels/theme-model.d.ts +49 -0
  196. package/dist/panels/theme-model.d.ts.map +1 -0
  197. package/dist/panels/theme-model.js +146 -0
  198. package/dist/panels/theme-model.js.map +1 -0
  199. package/dist/panels/theme-studio.d.ts +32 -0
  200. package/dist/panels/theme-studio.d.ts.map +1 -0
  201. package/dist/panels/theme-studio.js +312 -0
  202. package/dist/panels/theme-studio.js.map +1 -0
  203. package/dist/preview/frame.d.ts +44 -0
  204. package/dist/preview/frame.d.ts.map +1 -0
  205. package/dist/preview/frame.js +250 -0
  206. package/dist/preview/frame.js.map +1 -0
  207. package/dist/preview/index.d.ts +26 -0
  208. package/dist/preview/index.d.ts.map +1 -0
  209. package/dist/preview/index.js +58 -0
  210. package/dist/preview/index.js.map +1 -0
  211. package/dist/preview/theme-generation.d.ts +33 -0
  212. package/dist/preview/theme-generation.d.ts.map +1 -0
  213. package/dist/preview/theme-generation.js +48 -0
  214. package/dist/preview/theme-generation.js.map +1 -0
  215. package/dist/protocol/index.d.ts +207 -0
  216. package/dist/protocol/index.d.ts.map +1 -0
  217. package/dist/protocol/index.js +261 -0
  218. package/dist/protocol/index.js.map +1 -0
  219. package/dist/testing/index.d.ts +47 -0
  220. package/dist/testing/index.d.ts.map +1 -0
  221. package/dist/testing/index.js +145 -0
  222. package/dist/testing/index.js.map +1 -0
  223. package/package.json +118 -4
@@ -0,0 +1,435 @@
1
+ /**
2
+ * `<oddkin-workbench>`: the Workbench shell (workbench.md §2.1, workbench-pages.md §3). It loads the
3
+ * index, runs an `@oddkin/app` application whose router is generated from the page registry, and
4
+ * renders into the light DOM, because it owns the document's landmarks, skip link, and fragments.
5
+ */
6
+ import { createApp } from '@oddkin/app/app';
7
+ import { pageLifecycle } from '@oddkin/app/lifecycle';
8
+ import { createRouter } from '@oddkin/app/router';
9
+ import { OddkinElement, prop } from '@oddkin/core/element';
10
+ import { settled, signal, untracked } from '@oddkin/core/reactive';
11
+ import { html, nothing } from '@oddkin/core/template';
12
+ import { DATA_VERSION, INDEX_FORMAT, PAGE_FORMAT, } from '../data/types.js';
13
+ import { href as registryHref } from '../pages/navigation.js';
14
+ import { COPY } from './copy.js';
15
+ import { shellRoutes } from './routes.js';
16
+ import { search, searchItems } from './search.js';
17
+ import { shellStyles } from './styles.js';
18
+ import { appearanceControl, header, inline, messagePage, overviewBody, pageHeader, sectionsBody, sidebarView, toc, } from './views.js';
19
+ const APPEARANCE_KEY = 'oddkin-workbench:appearance';
20
+ const SEARCH_LIMIT = 20;
21
+ function readAppearance(storage) {
22
+ try {
23
+ const value = storage?.getItem(APPEARANCE_KEY);
24
+ return value === 'light' || value === 'dark' ? value : 'system';
25
+ }
26
+ catch {
27
+ return 'system';
28
+ }
29
+ }
30
+ async function fetchJson(url, signal) {
31
+ const response = await fetch(url, { signal });
32
+ if (!response.ok)
33
+ throw new Error(`${response.status} ${response.statusText}`.trim());
34
+ return response.json();
35
+ }
36
+ const isIndex = (value) => typeof value === 'object' &&
37
+ value !== null &&
38
+ value.format === INDEX_FORMAT &&
39
+ value.version === DATA_VERSION;
40
+ const isComponentPageData = (value) => {
41
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
42
+ return false;
43
+ const page = value;
44
+ return (page.format === PAGE_FORMAT &&
45
+ page.version === DATA_VERSION &&
46
+ page.kind === 'component' &&
47
+ typeof page.tag === 'string' &&
48
+ typeof page.package === 'string' &&
49
+ typeof page.module === 'string' &&
50
+ typeof page.declaration === 'object' &&
51
+ page.declaration !== null &&
52
+ Array.isArray(page.examples));
53
+ };
54
+ const isThemeStudioPageData = (value) => {
55
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
56
+ return false;
57
+ const page = value;
58
+ return (page.format === PAGE_FORMAT &&
59
+ page.version === DATA_VERSION &&
60
+ page.kind === 'tool' &&
61
+ typeof page.studio === 'object' &&
62
+ page.studio !== null &&
63
+ Array.isArray(page.studio.roles));
64
+ };
65
+ const isFoundationPageData = (value) => {
66
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
67
+ return false;
68
+ const page = value;
69
+ return (page.format === PAGE_FORMAT &&
70
+ page.version === DATA_VERSION &&
71
+ page.kind === 'foundation' &&
72
+ typeof page.foundation === 'object' &&
73
+ page.foundation !== null &&
74
+ Array.isArray(page.tokens));
75
+ };
76
+ export class OddkinWorkbench extends OddkinElement.with({
77
+ index: prop.string({ default: '', description: 'URL of the Workbench index (`index.json`).' }),
78
+ events: prop.string({
79
+ default: '',
80
+ description: 'URL of the live-update event stream; set by the dev server.',
81
+ }),
82
+ }) {
83
+ static shadowRootOptions = null;
84
+ static styles = shellStyles;
85
+ /** Replaces HTTP loading, for embedding and tests. Read when the element connects. */
86
+ source;
87
+ #index = signal(undefined);
88
+ #failure = signal(undefined);
89
+ #router = signal(undefined);
90
+ #stale = signal(undefined);
91
+ #expanded = signal(false);
92
+ #query = signal('');
93
+ #appearance = signal('system');
94
+ #items = [];
95
+ #previewFrameUrl = '';
96
+ /** Theme Studio's module, imported on the first visit to its route. */
97
+ #studio;
98
+ #studioError = signal('');
99
+ #loadStudio() {
100
+ this.#studio ??= import('./theme-studio.js').catch((error) => {
101
+ this.#studio = undefined;
102
+ this.#studioError.value = error instanceof Error ? error.message : String(error);
103
+ });
104
+ }
105
+ connected(scope) {
106
+ const doc = this.ownerDocument;
107
+ const win = doc.defaultView;
108
+ this.#appearance.value = readAppearance(win?.localStorage);
109
+ scope.effect(() => {
110
+ doc.documentElement.dataset['oddMode'] = this.#appearance.value;
111
+ });
112
+ scope.listen(doc, 'keydown', (event) => {
113
+ const target = event.target;
114
+ const editing = target?.closest('input, textarea, select, [contenteditable]');
115
+ if (event.key !== '/' || editing || event.ctrlKey || event.metaKey || event.altKey)
116
+ return;
117
+ const input = this.querySelector('.wb-search input');
118
+ if (!input)
119
+ return;
120
+ event.preventDefault();
121
+ input.focus();
122
+ });
123
+ const indexUrl = new URL(this.index || '_oddkin/index.json', doc.baseURI);
124
+ this.#previewFrameUrl = this.source?.previewFrameUrl ?? new URL('frame.html', indexUrl).href;
125
+ const source = this.source ?? {
126
+ index: (signal) => fetchJson(indexUrl, signal),
127
+ page: (file, signal) => fetchJson(new URL(file, indexUrl), signal),
128
+ };
129
+ const events = this.events ? new URL(this.events, doc.baseURI) : undefined;
130
+ // One application per connection. The page lifecycle service suspends it while the page is
131
+ // in the back/forward cache, which closes the live-update stream (Firefox keeps a cached
132
+ // page's connection open otherwise, and six of them exhaust its connections to the host).
133
+ const app = createApp({
134
+ name: 'oddkin-workbench',
135
+ setup: ({ use, scope: root }) => {
136
+ use(pageLifecycle(app));
137
+ if (events)
138
+ use(this.#updates(events, source, root));
139
+ void this.#load(source, root);
140
+ },
141
+ });
142
+ app.start();
143
+ scope.add(() => app.stop());
144
+ }
145
+ #run;
146
+ /** Load the index; (re)start the router when it is new or changed. */
147
+ async #load(source, root) {
148
+ let value;
149
+ try {
150
+ value = await source.index(root.signal);
151
+ }
152
+ catch (error) {
153
+ if (!root.signal.aborted)
154
+ this.#failure.value = `${COPY.indexFailed}: ${error instanceof Error ? error.message : String(error)}`;
155
+ return;
156
+ }
157
+ if (root.signal.aborted)
158
+ return;
159
+ if (!isIndex(value)) {
160
+ const { format, version } = (value ?? {});
161
+ this.#failure.value = `${COPY.indexIncompatible} (${String(format)} ${String(version)}).`;
162
+ return;
163
+ }
164
+ const current = this.#index.value;
165
+ if (current && JSON.stringify(current) === JSON.stringify(value))
166
+ return;
167
+ if (!current)
168
+ performance.mark('oddkin-workbench:index');
169
+ this.#run?.dispose();
170
+ this.#failure.value = undefined;
171
+ this.#index.value = value;
172
+ this.#items = searchItems(value.registry);
173
+ this.#start(value, source, root.child());
174
+ }
175
+ /** One router over the registry's routes, owned by `run`. */
176
+ #start(index, source, run) {
177
+ this.#run = run;
178
+ const { registry } = index;
179
+ const brand = index.branding.name;
180
+ const router = run.use(createRouter({
181
+ name: 'oddkin-workbench',
182
+ base: registry.basePath,
183
+ mode: registry.routing,
184
+ routes: shellRoutes(registry, (page, { signal }) => {
185
+ const file = index.pages[page.id];
186
+ return file ? source.page(file, signal) : undefined;
187
+ }),
188
+ formatTitle: (title, state) => state.status === 'not-found'
189
+ ? `${COPY.notFound} · ${brand}`
190
+ : title && title !== brand
191
+ ? `${title} · ${brand}`
192
+ : brand,
193
+ focus: () => this.querySelector('main h1') ?? this.querySelector('main'),
194
+ }));
195
+ this.#router.value = router;
196
+ run.add(() => {
197
+ if (this.#router.value === router)
198
+ this.#router.value = undefined;
199
+ });
200
+ // Collapse the narrow sidebar after each navigation; mark the first rendered page once.
201
+ let marked = false;
202
+ let path;
203
+ run.effect(() => {
204
+ const state = router.state.value;
205
+ if (state.status === 'idle')
206
+ return;
207
+ untracked(() => {
208
+ if (state.location?.path !== path)
209
+ this.#expanded.value = false;
210
+ path = state.location?.path;
211
+ if (!marked) {
212
+ marked = true;
213
+ void settled().then(() => performance.mark('oddkin-workbench:ready'));
214
+ }
215
+ });
216
+ });
217
+ }
218
+ /**
219
+ * The dev server's updates as an application service: the stream closes while the page is
220
+ * suspended, and reopens on restoration with the index read again for missed changes.
221
+ */
222
+ #updates(url, source, root) {
223
+ let events;
224
+ const open = () => {
225
+ events = new EventSource(url);
226
+ events.addEventListener('update', (event) => this.#onUpdate(JSON.parse(event.data), source, root));
227
+ };
228
+ const close = () => {
229
+ events?.close();
230
+ events = undefined;
231
+ };
232
+ return {
233
+ connect: (scope) => {
234
+ open();
235
+ scope.add(close);
236
+ },
237
+ suspend: close,
238
+ resume: () => {
239
+ open();
240
+ void this.#load(source, root);
241
+ },
242
+ };
243
+ }
244
+ #onUpdate(update, source, root) {
245
+ if (update.shell) {
246
+ this.ownerDocument.defaultView?.location.reload();
247
+ return;
248
+ }
249
+ if (!update.ok) {
250
+ this.#stale.value = update.diagnostics.filter((d) => d.severity === 'error').length;
251
+ return;
252
+ }
253
+ this.#stale.value = undefined;
254
+ // Changed component code needs a fresh realm: a registration cannot be redefined in place.
255
+ if (update.modules?.length)
256
+ void this.querySelector('oddkin-workbench-component')?.replacePreview();
257
+ if (update.index) {
258
+ void this.#load(source, root);
259
+ return;
260
+ }
261
+ const view = this.#view(this.#router.value?.state.value);
262
+ if (view?.kind === 'page' && update.pages.includes(view.page.id))
263
+ void this.#router.value?.refresh();
264
+ }
265
+ #view(state) {
266
+ const leaf = state?.matches.at(-1);
267
+ return leaf?.status === 'ready' ? leaf.data : undefined;
268
+ }
269
+ #searchView(ctx) {
270
+ const query = this.#query.value;
271
+ const { results, total } = search(this.#items, query, SEARCH_LIMIT);
272
+ const clear = () => (this.#query.value = '');
273
+ return html `<form class="wb-search" role="search" @submit=${(e) => e.preventDefault()}>
274
+ <label class="wb-visually-hidden" for="wb-search-input">${COPY.search}</label>
275
+ <input
276
+ id="wb-search-input"
277
+ type="search"
278
+ autocomplete="off"
279
+ placeholder=${COPY.searchPlaceholder}
280
+ aria-describedby="wb-search-status"
281
+ aria-controls="wb-search-results"
282
+ .value=${query}
283
+ @input=${(e) => (this.#query.value = e.target.value)}
284
+ @keydown=${(e) => {
285
+ if (e.key === 'Escape')
286
+ clear();
287
+ }}
288
+ />
289
+ <p id="wb-search-status" class="wb-visually-hidden" aria-live="polite">
290
+ ${query.trim() ? COPY.searchResults(results.length, total) : ''}
291
+ </p>
292
+ <ul id="wb-search-results" class="wb-search-results" ?hidden=${!query.trim() || !total}>
293
+ ${results.map((item) => html `<li>
294
+ <a href=${ctx.href(item.route)} @click=${clear}
295
+ >${item.title}${item.summary ? html `<small>${inline(item.summary)}</small>` : nothing}</a
296
+ >
297
+ </li>`)}
298
+ </ul>
299
+ </form>`;
300
+ }
301
+ #pageView(ctx, state, current) {
302
+ if (!state || state.status === 'idle')
303
+ return html `<p role="status">${COPY.loading}</p>`;
304
+ const first = ctx.registry.pages.find((p) => p.id === ctx.registry.primaryNav[0]);
305
+ if (state.status === 'not-found')
306
+ return messagePage(ctx, COPY.notFound, COPY.notFoundText(state.location?.path ?? '/'), first);
307
+ if (state.status === 'error') {
308
+ const error = state.error;
309
+ return messagePage(ctx, COPY.pageFailed, error instanceof Error ? error.message : String(error), first);
310
+ }
311
+ const view = this.#view(state);
312
+ if (view?.kind === 'notice')
313
+ return messagePage(ctx, 'Products and modes', COPY.productsDisabled, first);
314
+ if (!current)
315
+ return nothing;
316
+ const kind = current.kind;
317
+ const data = view?.kind === 'page' ? view.data : undefined;
318
+ const index = this.#index.value;
319
+ const studio = kind === 'tool' && isThemeStudioPageData(data) ? data : undefined;
320
+ if (studio)
321
+ this.#loadStudio();
322
+ const body = kind === 'overview'
323
+ ? overviewBody(ctx, current)
324
+ : kind === 'tool'
325
+ ? studio
326
+ ? html `<div class="wb-body">
327
+ ${this.#studioError.value
328
+ ? html `<p role="alert">
329
+ Theme Studio could not load: ${this.#studioError.value}
330
+ </p>`
331
+ : nothing}
332
+ <oddkin-workbench-theme-studio
333
+ .page=${studio}
334
+ .frameUrl=${this.#previewFrameUrl}
335
+ ></oddkin-workbench-theme-studio>
336
+ </div>`
337
+ : html `<div class="wb-body"><p class="wb-muted">${COPY.toolPending}</p></div>`
338
+ : kind === 'component' && isComponentPageData(data) && index
339
+ ? html `<div class="wb-body">
340
+ <oddkin-workbench-component
341
+ .page=${data}
342
+ .index=${index}
343
+ .href=${ctx.href}
344
+ .frameUrl=${this.#previewFrameUrl}
345
+ ></oddkin-workbench-component>
346
+ </div>`
347
+ : kind === 'foundation' && isFoundationPageData(data) && index
348
+ ? html `<div class="wb-body">
349
+ <oddkin-workbench-foundation
350
+ .page=${data}
351
+ .index=${index}
352
+ .href=${ctx.href}
353
+ ></oddkin-workbench-foundation>
354
+ </div>`
355
+ : sectionsBody(current);
356
+ const contents = toc(ctx, current);
357
+ return html `<div class=${contents === nothing ? 'wb-page' : 'wb-page wb-has-toc'}>
358
+ ${pageHeader(ctx, current)} ${contents} ${body}
359
+ </div>`;
360
+ }
361
+ render() {
362
+ const failure = this.#failure.value;
363
+ if (failure)
364
+ return html `<main id="main" class="wb-main" tabindex="-1">
365
+ <p role="alert">${failure}</p>
366
+ </main>`;
367
+ const index = this.#index.value;
368
+ if (!index)
369
+ return html `<p class="wb-loading" role="status">${COPY.loading}</p>`;
370
+ const router = this.#router.value;
371
+ const state = router?.state.value;
372
+ const view = this.#view(state);
373
+ const current = view?.kind === 'page' ? view.page : undefined;
374
+ const ctx = {
375
+ registry: index.registry,
376
+ href: (to) => router?.href(to) ?? registryHref(index.registry, to),
377
+ lang: this.ownerDocument.documentElement.lang || 'en',
378
+ ...(current?.section === 'components' && current.kind === 'overview'
379
+ ? {
380
+ catalog: {
381
+ query: new URLSearchParams(state?.location?.search).get('q') ?? '',
382
+ category: new URLSearchParams(state?.location?.search).get('category') ?? '',
383
+ update: (query, category) => {
384
+ const params = new URLSearchParams(this.#router.value?.state.value.location?.search);
385
+ if (query.trim())
386
+ params.set('q', query.trim());
387
+ else
388
+ params.delete('q');
389
+ if (category)
390
+ params.set('category', category);
391
+ else
392
+ params.delete('category');
393
+ const suffix = params.toString();
394
+ void this.#router.value?.navigate(`${current.route}${suffix ? `?${suffix}` : ''}`, {
395
+ replace: true,
396
+ });
397
+ },
398
+ },
399
+ }
400
+ : {}),
401
+ };
402
+ const stale = this.#stale.value;
403
+ const side = current
404
+ ? sidebarView(ctx, current, this.#expanded.value, () => {
405
+ this.#expanded.value = !this.#expanded.value;
406
+ })
407
+ : nothing;
408
+ const tools = html `${this.#searchView(ctx)}
409
+ ${appearanceControl(this.#appearance.value, (value) => {
410
+ this.#appearance.value = value;
411
+ try {
412
+ this.ownerDocument.defaultView?.localStorage.setItem(APPEARANCE_KEY, value);
413
+ }
414
+ catch {
415
+ // Storage may be unavailable (private mode, quota); the choice still applies now.
416
+ }
417
+ })}`;
418
+ return html `<a
419
+ class="wb-skip"
420
+ href="#main"
421
+ @click=${(event) => {
422
+ event.preventDefault();
423
+ this.querySelector('main')?.focus();
424
+ }}
425
+ >${COPY.skip}</a
426
+ >
427
+ ${header(ctx, index.branding, current, tools)}
428
+ ${stale === undefined ? nothing : html `<p class="wb-banner" role="status">${COPY.stale(stale)}</p>`}
429
+ <div class=${side === nothing ? 'wb-layout wb-no-sidebar' : 'wb-layout'}>
430
+ ${side}
431
+ <main id="main" class="wb-main" tabindex="-1">${this.#pageView(ctx, state, current)}</main>
432
+ </div>`;
433
+ }
434
+ }
435
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/app/shell.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAmB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAiC,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,GAKZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,GAAG,GAGJ,MAAM,YAAY,CAAC;AAqBpB,MAAM,cAAc,GAAG,6BAA6B,CAAC;AACrD,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,SAAS,cAAc,CAAC,OAA4B;IAClD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/C,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAQ,EAAE,MAAmB;IACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACtF,OAAO,QAAQ,CAAC,IAAI,EAAsB,CAAC;AAC7C,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,KAAc,EAA2B,EAAE,CAC1D,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACb,KAAwB,CAAC,MAAM,KAAK,YAAY;IAChD,KAAwB,CAAC,OAAO,KAAK,YAAY,CAAC;AAErD,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAA8B,EAAE;IACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,IAAI,GAAG,KAAmC,CAAC;IACjD,OAAO,CACL,IAAI,CAAC,MAAM,KAAK,WAAW;QAC3B,IAAI,CAAC,OAAO,KAAK,YAAY;QAC7B,IAAI,CAAC,IAAI,KAAK,WAAW;QACzB,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;QAC5B,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAChC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAC/B,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;QACpC,IAAI,CAAC,WAAW,KAAK,IAAI;QACzB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC7B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAgC,EAAE;IAC7E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,IAAI,GAAG,KAAqC,CAAC;IACnD,OAAO,CACL,IAAI,CAAC,MAAM,KAAK,WAAW;QAC3B,IAAI,CAAC,OAAO,KAAK,YAAY;QAC7B,IAAI,CAAC,IAAI,KAAK,MAAM;QACpB,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAC/B,IAAI,CAAC,MAAM,KAAK,IAAI;QACpB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CACjC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAA+B,EAAE;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,IAAI,GAAG,KAAoC,CAAC;IAClD,OAAO,CACL,IAAI,CAAC,MAAM,KAAK,WAAW;QAC3B,IAAI,CAAC,OAAO,KAAK,YAAY;QAC7B,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QACnC,IAAI,CAAC,UAAU,KAAK,IAAI;QACxB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,eAAgB,SAAQ,aAAa,CAAC,IAAI,CAAC;IACtD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;IAC9F,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,6DAA6D;KAC3E,CAAC;CACH,CAAC;IACA,MAAM,CAAU,iBAAiB,GAAG,IAAI,CAAC;IACzC,MAAM,CAAU,MAAM,GAAG,WAAW,CAAC;IAErC,sFAAsF;IACtF,MAAM,CAA8B;IAE3B,MAAM,GAAG,MAAM,CAA6B,SAAS,CAAC,CAAC;IACvD,QAAQ,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;IACjD,OAAO,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;IAChD,MAAM,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;IAC/C,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACpB,WAAW,GAAG,MAAM,CAAa,QAAQ,CAAC,CAAC;IACpD,MAAM,GAAiB,EAAE,CAAC;IAC1B,gBAAgB,GAAG,EAAE,CAAC;IACtB,uEAAuE;IACvE,OAAO,CAA+B;IAC7B,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAEnC,WAAW;QACT,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACpE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC;IAEkB,SAAS,CAAC,KAAY;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC3D,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;YAChB,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAClE,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,KAAoB,EAAE,EAAE;YACpD,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4B,CAAC;YAClD,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,4CAA4C,CAAC,CAAC;YAC9E,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO;YAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAmB,kBAAkB,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC;QAC7F,MAAM,MAAM,GAAoB,IAAI,CAAC,MAAM,IAAI;YAC7C,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC9C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnE,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,2FAA2F;QAC3F,yFAAyF;QACzF,0FAA0F;QAC1F,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC9B,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,MAAM;oBAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACrD,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChC,CAAC;SACF,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAoB;IAExB,sEAAsE;IACtE,KAAK,CAAC,KAAK,CAAC,MAAuB,EAAE,IAAW;QAC9C,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;gBACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,WAAW,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzG,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QAChC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4C,CAAC;YACrF,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,iBAAiB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAC1F,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAClC,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QACzE,IAAI,CAAC,OAAO;YAAE,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,KAAqB,EAAE,MAAuB,EAAE,GAAU;QAC/D,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CACpB,YAAY,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,QAAQ,CAAC,QAAQ;YACvB,IAAI,EAAE,QAAQ,CAAC,OAAO;YACtB,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;gBACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtD,CAAC,CAAC;YACF,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC5B,KAAK,CAAC,MAAM,KAAK,WAAW;gBAC1B,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,MAAM,KAAK,EAAE;gBAC/B,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK;oBACxB,CAAC,CAAC,GAAG,KAAK,MAAM,KAAK,EAAE;oBACvB,CAAC,CAAC,KAAK;YACb,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SACzE,CAAC,CACH,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;QAC5B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;YACX,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,MAAM;gBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;QACpE,CAAC,CAAC,CAAC;QACH,wFAAwF;QACxF,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,IAAwB,CAAC;QAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;YACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACjC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO;YACpC,SAAS,CAAC,GAAG,EAAE;gBACb,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI;oBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;gBAChE,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;gBAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,GAAG,IAAI,CAAC;oBACd,KAAK,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,GAAQ,EAAE,MAAuB,EAAE,IAAW;QACrD,IAAI,MAA+B,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAE,KAA8B,CAAC,IAAI,CAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CACzF,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,MAAM,EAAE,KAAK,EAAE,CAAC;YAChB,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC,CAAC;QACF,OAAO;YACL,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,EAAE,CAAC;gBACP,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;YACD,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,GAAG,EAAE;gBACX,IAAI,EAAE,CAAC;gBACP,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,MAAuB,EAAE,IAAW;QAC5D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;YACpF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;QAC9B,2FAA2F;QAC3F,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM;YACxB,KAAK,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,EAAE,cAAc,EAAE,CAAC;QAC1E,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,KAA8B;QAClC,MAAM,IAAI,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAE,IAAI,CAAC,IAA8B,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,CAAC;IAED,WAAW,CAAC,GAAgB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAA,iDAAiD,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;gEAChC,IAAI,CAAC,MAAM;;;;;sBAKrD,IAAI,CAAC,iBAAiB;;;iBAG3B,KAAK;iBACL,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;mBACtE,CAAC,CAAgB,EAAE,EAAE;YAC9B,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,KAAK,EAAE,CAAC;QAClC,CAAC;;;UAGC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;;qEAEF,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK;UAClF,OAAO,CAAC,GAAG,CACX,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAA;wBACQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK;mBACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,UAAU,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;;kBAEnF,CACT;;YAEG,CAAC;IACX,CAAC;IAED,SAAS,CAAC,GAAgB,EAAE,KAA8B,EAAE,OAA8B;QACxF,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA,oBAAoB,IAAI,CAAC,OAAO,MAAM,CAAC;QACzF,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;YAC9B,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAChG,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,OAAO,WAAW,CAChB,GAAG,EACH,IAAI,CAAC,UAAU,EACf,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,KAAK,CACN,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ;YACzB,OAAO,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,IAAI,MAAM;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GACR,IAAI,KAAK,UAAU;YACjB,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC;YAC5B,CAAC,CAAC,IAAI,KAAK,MAAM;gBACf,CAAC,CAAC,MAAM;oBACN,CAAC,CAAC,IAAI,CAAA;kBAEA,IAAI,CAAC,YAAY,CAAC,KAAK;wBACrB,CAAC,CAAC,IAAI,CAAA;uDAC6B,IAAI,CAAC,YAAY,CAAC,KAAK;2BACnD;wBACP,CAAC,CAAC,OACN;;0BAEU,MAAM;8BACF,IAAI,CAAC,gBAAgB;;qBAE9B;oBACT,CAAC,CAAC,IAAI,CAAA,4CAA4C,IAAI,CAAC,WAAW,YAAY;gBAChF,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,KAAK;oBAC1D,CAAC,CAAC,IAAI,CAAA;;0BAEQ,IAAI;2BACH,KAAK;0BACN,GAAG,CAAC,IAAI;8BACJ,IAAI,CAAC,gBAAgB;;qBAE9B;oBACT,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,KAAK;wBAC5D,CAAC,CAAC,IAAI,CAAA;;4BAEQ,IAAI;6BACH,KAAK;4BACN,GAAG,CAAC,IAAI;;uBAEb;wBACT,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,IAAI,CAAA,cAAc,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB;QAC5E,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,QAAQ,IAAI,IAAI;WACzC,CAAC;IACV,CAAC;IAEkB,MAAM;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpC,IAAI,OAAO;YACT,OAAO,IAAI,CAAA;0BACS,OAAO;cACnB,CAAC;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA,uCAAuC,IAAI,CAAC,OAAO,MAAM,CAAC;QACjF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,GAAG,GAAgB;YACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI;YACrD,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,YAAY,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU;gBAClE,CAAC,CAAC;oBACE,OAAO,EAAE;wBACP,KAAK,EAAE,IAAI,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;wBAClE,QAAQ,EAAE,IAAI,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;wBAC5E,MAAM,EAAE,CAAC,KAAa,EAAE,QAAgB,EAAE,EAAE;4BAC1C,MAAM,MAAM,GAAG,IAAI,eAAe,CAChC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CACjD,CAAC;4BACF,IAAI,KAAK,CAAC,IAAI,EAAE;gCAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;;gCAC3C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;4BACxB,IAAI,QAAQ;gCAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;;gCAC1C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;4BAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;4BACjC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gCACjF,OAAO,EAAE,IAAI;6BACd,CAAC,CAAC;wBACL,CAAC;qBACF;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO;YAClB,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE;gBACnD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC/C,CAAC,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC;QACZ,MAAM,KAAK,GAAG,IAAI,CAAA,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;MACxC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACpD,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAC9E,CAAC;YAAC,MAAM,CAAC;gBACP,kFAAkF;YACpF,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,IAAI,CAAA;;;iBAGE,CAAC,KAAY,EAAE,EAAE;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAc,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;WACE,IAAI,CAAC,IAAI;;QAEZ,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC;QAC3C,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,sCAAsC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;mBACtF,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,WAAW;UACnE,IAAI;wDAC0C,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC;aAC9E,CAAC;IACZ,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const shellStyles: import("@oddkin/core/styles").CSSResult;
2
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/app/styles.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,WAAW,yCA0WvB,CAAC"}