@oddkin/workbench 0.0.0-stage → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +66 -2
  3. package/dist/app/card-previews.d.ts +14 -0
  4. package/dist/app/card-previews.d.ts.map +1 -0
  5. package/dist/app/card-previews.js +140 -0
  6. package/dist/app/card-previews.js.map +1 -0
  7. package/dist/app/copy.d.ts +48 -0
  8. package/dist/app/copy.d.ts.map +1 -0
  9. package/dist/app/copy.js +52 -0
  10. package/dist/app/copy.js.map +1 -0
  11. package/dist/app/define.d.ts +3 -0
  12. package/dist/app/define.d.ts.map +1 -0
  13. package/dist/app/define.js +10 -0
  14. package/dist/app/define.js.map +1 -0
  15. package/dist/app/details.d.ts +22 -0
  16. package/dist/app/details.d.ts.map +1 -0
  17. package/dist/app/details.js +17 -0
  18. package/dist/app/details.js.map +1 -0
  19. package/dist/app/index.d.ts +12 -0
  20. package/dist/app/index.d.ts.map +1 -0
  21. package/dist/app/index.js +9 -0
  22. package/dist/app/index.js.map +1 -0
  23. package/dist/app/routes.d.ts +26 -0
  24. package/dist/app/routes.d.ts.map +1 -0
  25. package/dist/app/routes.js +96 -0
  26. package/dist/app/routes.js.map +1 -0
  27. package/dist/app/search.d.ts +17 -0
  28. package/dist/app/search.d.ts.map +1 -0
  29. package/dist/app/search.js +52 -0
  30. package/dist/app/search.js.map +1 -0
  31. package/dist/app/shell.d.ts +29 -0
  32. package/dist/app/shell.d.ts.map +1 -0
  33. package/dist/app/shell.js +478 -0
  34. package/dist/app/shell.js.map +1 -0
  35. package/dist/app/styles.d.ts +2 -0
  36. package/dist/app/styles.d.ts.map +1 -0
  37. package/dist/app/styles.js +356 -0
  38. package/dist/app/styles.js.map +1 -0
  39. package/dist/app/theme-studio.d.ts +12 -0
  40. package/dist/app/theme-studio.d.ts.map +1 -0
  41. package/dist/app/theme-studio.js +14 -0
  42. package/dist/app/theme-studio.js.map +1 -0
  43. package/dist/app/views.d.ts +38 -0
  44. package/dist/app/views.d.ts.map +1 -0
  45. package/dist/app/views.js +252 -0
  46. package/dist/app/views.js.map +1 -0
  47. package/dist/config/index.d.ts +170 -0
  48. package/dist/config/index.d.ts.map +1 -0
  49. package/dist/config/index.js +148 -0
  50. package/dist/config/index.js.map +1 -0
  51. package/dist/conformance/button.d.ts +2 -0
  52. package/dist/conformance/button.d.ts.map +1 -0
  53. package/dist/conformance/button.js +233 -0
  54. package/dist/conformance/button.js.map +1 -0
  55. package/dist/conformance/index.d.ts +107 -0
  56. package/dist/conformance/index.d.ts.map +1 -0
  57. package/dist/conformance/index.js +60 -0
  58. package/dist/conformance/index.js.map +1 -0
  59. package/dist/data/build.d.ts +36 -0
  60. package/dist/data/build.d.ts.map +1 -0
  61. package/dist/data/build.js +260 -0
  62. package/dist/data/build.js.map +1 -0
  63. package/dist/data/import-map.d.ts +59 -0
  64. package/dist/data/import-map.d.ts.map +1 -0
  65. package/dist/data/import-map.js +195 -0
  66. package/dist/data/import-map.js.map +1 -0
  67. package/dist/data/index.d.ts +14 -0
  68. package/dist/data/index.d.ts.map +1 -0
  69. package/dist/data/index.js +10 -0
  70. package/dist/data/index.js.map +1 -0
  71. package/dist/data/theme-studio.d.ts +21 -0
  72. package/dist/data/theme-studio.d.ts.map +1 -0
  73. package/dist/data/theme-studio.js +112 -0
  74. package/dist/data/theme-studio.js.map +1 -0
  75. package/dist/data/types.d.ts +187 -0
  76. package/dist/data/types.d.ts.map +1 -0
  77. package/dist/data/types.js +4 -0
  78. package/dist/data/types.js.map +1 -0
  79. package/dist/examples/index.d.ts +101 -0
  80. package/dist/examples/index.d.ts.map +1 -0
  81. package/dist/examples/index.js +106 -0
  82. package/dist/examples/index.js.map +1 -0
  83. package/dist/frame/index.d.ts +9 -0
  84. package/dist/frame/index.d.ts.map +1 -0
  85. package/dist/frame/index.js +482 -0
  86. package/dist/frame/index.js.map +1 -0
  87. package/dist/internal/diagnostics.d.ts +17 -0
  88. package/dist/internal/diagnostics.d.ts.map +1 -0
  89. package/dist/internal/diagnostics.js +19 -0
  90. package/dist/internal/diagnostics.js.map +1 -0
  91. package/dist/node/bin.d.ts +3 -0
  92. package/dist/node/bin.d.ts.map +1 -0
  93. package/dist/node/bin.js +12 -0
  94. package/dist/node/bin.js.map +1 -0
  95. package/dist/node/cli.d.ts +17 -0
  96. package/dist/node/cli.d.ts.map +1 -0
  97. package/dist/node/cli.js +198 -0
  98. package/dist/node/cli.js.map +1 -0
  99. package/dist/node/config.d.ts +28 -0
  100. package/dist/node/config.d.ts.map +1 -0
  101. package/dist/node/config.js +80 -0
  102. package/dist/node/config.js.map +1 -0
  103. package/dist/node/example-modules.d.ts +8 -0
  104. package/dist/node/example-modules.d.ts.map +1 -0
  105. package/dist/node/example-modules.js +28 -0
  106. package/dist/node/example-modules.js.map +1 -0
  107. package/dist/node/generated.d.ts +19 -0
  108. package/dist/node/generated.d.ts.map +1 -0
  109. package/dist/node/generated.js +109 -0
  110. package/dist/node/generated.js.map +1 -0
  111. package/dist/node/html.d.ts +35 -0
  112. package/dist/node/html.d.ts.map +1 -0
  113. package/dist/node/html.js +51 -0
  114. package/dist/node/html.js.map +1 -0
  115. package/dist/node/index.d.ts +24 -0
  116. package/dist/node/index.d.ts.map +1 -0
  117. package/dist/node/index.js +15 -0
  118. package/dist/node/index.js.map +1 -0
  119. package/dist/node/inputs.d.ts +26 -0
  120. package/dist/node/inputs.d.ts.map +1 -0
  121. package/dist/node/inputs.js +282 -0
  122. package/dist/node/inputs.js.map +1 -0
  123. package/dist/node/packages.d.ts +35 -0
  124. package/dist/node/packages.d.ts.map +1 -0
  125. package/dist/node/packages.js +87 -0
  126. package/dist/node/packages.js.map +1 -0
  127. package/dist/node/preload.d.ts +10 -0
  128. package/dist/node/preload.d.ts.map +1 -0
  129. package/dist/node/preload.js +61 -0
  130. package/dist/node/preload.js.map +1 -0
  131. package/dist/node/server.d.ts +42 -0
  132. package/dist/node/server.d.ts.map +1 -0
  133. package/dist/node/server.js +410 -0
  134. package/dist/node/server.js.map +1 -0
  135. package/dist/node/static.d.ts +43 -0
  136. package/dist/node/static.d.ts.map +1 -0
  137. package/dist/node/static.js +157 -0
  138. package/dist/node/static.js.map +1 -0
  139. package/dist/node/workbench.d.ts +43 -0
  140. package/dist/node/workbench.d.ts.map +1 -0
  141. package/dist/node/workbench.js +204 -0
  142. package/dist/node/workbench.js.map +1 -0
  143. package/dist/pages/build.d.ts +22 -0
  144. package/dist/pages/build.d.ts.map +1 -0
  145. package/dist/pages/build.js +363 -0
  146. package/dist/pages/build.js.map +1 -0
  147. package/dist/pages/defaults.d.ts +16 -0
  148. package/dist/pages/defaults.d.ts.map +1 -0
  149. package/dist/pages/defaults.js +88 -0
  150. package/dist/pages/defaults.js.map +1 -0
  151. package/dist/pages/index.d.ts +14 -0
  152. package/dist/pages/index.d.ts.map +1 -0
  153. package/dist/pages/index.js +10 -0
  154. package/dist/pages/index.js.map +1 -0
  155. package/dist/pages/navigation.d.ts +48 -0
  156. package/dist/pages/navigation.d.ts.map +1 -0
  157. package/dist/pages/navigation.js +83 -0
  158. package/dist/pages/navigation.js.map +1 -0
  159. package/dist/pages/types.d.ts +148 -0
  160. package/dist/pages/types.d.ts.map +1 -0
  161. package/dist/pages/types.js +3 -0
  162. package/dist/pages/types.js.map +1 -0
  163. package/dist/panels/catalog-define.d.ts +3 -0
  164. package/dist/panels/catalog-define.d.ts.map +1 -0
  165. package/dist/panels/catalog-define.js +7 -0
  166. package/dist/panels/catalog-define.js.map +1 -0
  167. package/dist/panels/catalog-layout-styles.d.ts +2 -0
  168. package/dist/panels/catalog-layout-styles.d.ts.map +1 -0
  169. package/dist/panels/catalog-layout-styles.js +54 -0
  170. package/dist/panels/catalog-layout-styles.js.map +1 -0
  171. package/dist/panels/catalog-styles.d.ts +2 -0
  172. package/dist/panels/catalog-styles.d.ts.map +1 -0
  173. package/dist/panels/catalog-styles.js +106 -0
  174. package/dist/panels/catalog-styles.js.map +1 -0
  175. package/dist/panels/catalog.d.ts +37 -0
  176. package/dist/panels/catalog.d.ts.map +1 -0
  177. package/dist/panels/catalog.js +74 -0
  178. package/dist/panels/catalog.js.map +1 -0
  179. package/dist/panels/component-define.d.ts +3 -0
  180. package/dist/panels/component-define.d.ts.map +1 -0
  181. package/dist/panels/component-define.js +6 -0
  182. package/dist/panels/component-define.js.map +1 -0
  183. package/dist/panels/component-detail.d.ts +49 -0
  184. package/dist/panels/component-detail.d.ts.map +1 -0
  185. package/dist/panels/component-detail.js +1352 -0
  186. package/dist/panels/component-detail.js.map +1 -0
  187. package/dist/panels/component.d.ts +17 -0
  188. package/dist/panels/component.d.ts.map +1 -0
  189. package/dist/panels/component.js +10 -0
  190. package/dist/panels/component.js.map +1 -0
  191. package/dist/panels/example-styles.d.ts +2 -0
  192. package/dist/panels/example-styles.d.ts.map +1 -0
  193. package/dist/panels/example-styles.js +343 -0
  194. package/dist/panels/example-styles.js.map +1 -0
  195. package/dist/panels/foundation-define.d.ts +3 -0
  196. package/dist/panels/foundation-define.d.ts.map +1 -0
  197. package/dist/panels/foundation-define.js +6 -0
  198. package/dist/panels/foundation-define.js.map +1 -0
  199. package/dist/panels/foundation-detail.d.ts +23 -0
  200. package/dist/panels/foundation-detail.d.ts.map +1 -0
  201. package/dist/panels/foundation-detail.js +216 -0
  202. package/dist/panels/foundation-detail.js.map +1 -0
  203. package/dist/panels/foundation.d.ts +15 -0
  204. package/dist/panels/foundation.d.ts.map +1 -0
  205. package/dist/panels/foundation.js +9 -0
  206. package/dist/panels/foundation.js.map +1 -0
  207. package/dist/panels/model.d.ts +184 -0
  208. package/dist/panels/model.d.ts.map +1 -0
  209. package/dist/panels/model.js +488 -0
  210. package/dist/panels/model.js.map +1 -0
  211. package/dist/panels/styles.d.ts +3 -0
  212. package/dist/panels/styles.d.ts.map +1 -0
  213. package/dist/panels/styles.js +265 -0
  214. package/dist/panels/styles.js.map +1 -0
  215. package/dist/panels/theme-model.d.ts +69 -0
  216. package/dist/panels/theme-model.d.ts.map +1 -0
  217. package/dist/panels/theme-model.js +166 -0
  218. package/dist/panels/theme-model.js.map +1 -0
  219. package/dist/panels/theme-studio.d.ts +32 -0
  220. package/dist/panels/theme-studio.d.ts.map +1 -0
  221. package/dist/panels/theme-studio.js +375 -0
  222. package/dist/panels/theme-studio.js.map +1 -0
  223. package/dist/preview/frame.d.ts +44 -0
  224. package/dist/preview/frame.d.ts.map +1 -0
  225. package/dist/preview/frame.js +260 -0
  226. package/dist/preview/frame.js.map +1 -0
  227. package/dist/preview/index.d.ts +26 -0
  228. package/dist/preview/index.d.ts.map +1 -0
  229. package/dist/preview/index.js +58 -0
  230. package/dist/preview/index.js.map +1 -0
  231. package/dist/preview/theme-generation.d.ts +33 -0
  232. package/dist/preview/theme-generation.d.ts.map +1 -0
  233. package/dist/preview/theme-generation.js +48 -0
  234. package/dist/preview/theme-generation.js.map +1 -0
  235. package/dist/protocol/index.d.ts +222 -0
  236. package/dist/protocol/index.d.ts.map +1 -0
  237. package/dist/protocol/index.js +272 -0
  238. package/dist/protocol/index.js.map +1 -0
  239. package/dist/testing/index.d.ts +47 -0
  240. package/dist/testing/index.d.ts.map +1 -0
  241. package/dist/testing/index.js +145 -0
  242. package/dist/testing/index.js.map +1 -0
  243. package/package.json +118 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/app/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { PageKind, PageRegistry } from '../pages/types.js';
2
+ export interface SearchItem {
3
+ readonly id: string;
4
+ readonly kind: PageKind;
5
+ readonly title: string;
6
+ readonly summary?: string;
7
+ readonly tags: readonly string[];
8
+ readonly route: string;
9
+ }
10
+ /** Search entries of the registry, with each page's kind (component, foundation, …). */
11
+ export declare function searchItems(registry: PageRegistry): SearchItem[];
12
+ /** Items matching every word of `query`, best first, at most `limit`; `total` counts them all. */
13
+ export declare function search(items: readonly SearchItem[], query: string, limit?: number): {
14
+ results: SearchItem[];
15
+ total: number;
16
+ };
17
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/app/search.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,UAAU,EAAE,CAMhE;AA6BD,kGAAkG;AAClG,wBAAgB,MAAM,CACpB,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,GACT;IAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQ1C"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Searchable navigation (workbench-pages.md §2): entries are projected from the page registry,
3
+ * so search can never list a page that navigation does not have. DOM-free.
4
+ */
5
+ import { searchEntries } from '../pages/navigation.js';
6
+ /** Search entries of the registry, with each page's kind (component, foundation, …). */
7
+ export function searchItems(registry) {
8
+ const kinds = new Map(registry.pages.map((p) => [p.id, p.kind]));
9
+ return searchEntries(registry).map((entry) => ({
10
+ ...entry,
11
+ kind: kinds.get(entry.id),
12
+ }));
13
+ }
14
+ /** Most relevant first: title, then the id (a tag name), then tags, then the summary. */
15
+ function score(item, words) {
16
+ const title = item.title.toLowerCase();
17
+ const id = item.id.toLowerCase();
18
+ const tags = item.tags.map((t) => t.toLowerCase());
19
+ const summary = (item.summary ?? '').toLowerCase();
20
+ let total = 0;
21
+ for (const word of words) {
22
+ const points = title.startsWith(word)
23
+ ? 8
24
+ : title.split(/\s+/).some((w) => w.startsWith(word))
25
+ ? 6
26
+ : title.includes(word)
27
+ ? 5
28
+ : id.includes(word)
29
+ ? 4
30
+ : tags.some((t) => t.includes(word))
31
+ ? 3
32
+ : summary.includes(word)
33
+ ? 1
34
+ : 0;
35
+ if (points === 0)
36
+ return 0;
37
+ total += points;
38
+ }
39
+ return total;
40
+ }
41
+ /** Items matching every word of `query`, best first, at most `limit`; `total` counts them all. */
42
+ export function search(items, query, limit = 20) {
43
+ const words = query.toLowerCase().split(/\s+/).filter(Boolean);
44
+ if (words.length === 0)
45
+ return { results: [], total: 0 };
46
+ const ranked = items
47
+ .map((item) => ({ item, points: score(item, words) }))
48
+ .filter((r) => r.points > 0)
49
+ .sort((a, b) => b.points - a.points || a.item.title.localeCompare(b.item.title));
50
+ return { results: ranked.slice(0, limit).map((r) => r.item), total: ranked.length };
51
+ }
52
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/app/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { OddkinElement } from '@oddkin/core/element';
2
+ import type { Scope } from '@oddkin/core/scope';
3
+ /** Where the shell reads its data; the default fetches the index and page files over HTTP. */
4
+ export interface WorkbenchSource {
5
+ index(signal: AbortSignal): Promise<unknown>;
6
+ page(file: string, signal: AbortSignal): Promise<unknown>;
7
+ /** Optional frame document URL for injected sources; HTTP sources derive this from `index`. */
8
+ readonly previewFrameUrl?: string;
9
+ }
10
+ declare const OddkinWorkbench_base: import("@oddkin/core/element").WithProps<typeof OddkinElement, {
11
+ readonly index: import("@oddkin/core/element").PropDefinition<string>;
12
+ readonly events: import("@oddkin/core/element").PropDefinition<string>;
13
+ }>;
14
+ export declare class OddkinWorkbench extends OddkinWorkbench_base {
15
+ #private;
16
+ static shadowRootOptions: null;
17
+ static styles: import("@oddkin/core").CSSResult[];
18
+ /** Replaces HTTP loading, for embedding and tests. Read when the element connects. */
19
+ source: WorkbenchSource | undefined;
20
+ protected connected(scope: Scope): void;
21
+ protected render(): import("@oddkin/core/template").TemplateResult;
22
+ }
23
+ declare global {
24
+ interface HTMLElementTagNameMap {
25
+ 'oddkin-workbench': OddkinWorkbench;
26
+ }
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/app/shell.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAQ,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAiChD,8FAA8F;AAC9F,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,+FAA+F;IAC/F,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;;;;;AA+ED,qBAAa,eAAgB,SAAQ,oBAMnC;;IACA,OAAgB,iBAAiB,OAAQ;IACzC,OAAgB,MAAM,qCAAgC;IAEtD,sFAAsF;IACtF,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IA2BpC,UAAmB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAsC/C;IAqQD,UAAmB,MAAM,mDAwExB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,eAAe,CAAC;KACrC;CACF"}
@@ -0,0 +1,478 @@
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 { cardPreviews } from './card-previews.js';
16
+ import { shellRoutes } from './routes.js';
17
+ import { search, searchItems } from './search.js';
18
+ import { shellStyles } from './styles.js';
19
+ import { catalogStyles } from '../panels/catalog-styles.js';
20
+ import { appearanceControl, header, inline, messagePage, overviewBody, pageHeader, sectionsBody, sidebarView, toc, } from './views.js';
21
+ const APPEARANCE_KEY = 'oddkin-workbench:appearance';
22
+ const SEARCH_LIMIT = 20;
23
+ function readAppearance(storage) {
24
+ try {
25
+ const value = storage?.getItem(APPEARANCE_KEY);
26
+ return value === 'light' || value === 'dark' ? value : 'system';
27
+ }
28
+ catch {
29
+ return 'system';
30
+ }
31
+ }
32
+ async function fetchJson(url, signal) {
33
+ const response = await fetch(url, { signal });
34
+ if (!response.ok)
35
+ throw new Error(`${response.status} ${response.statusText}`.trim());
36
+ return response.json();
37
+ }
38
+ const isIndex = (value) => typeof value === 'object' &&
39
+ value !== null &&
40
+ value.format === INDEX_FORMAT &&
41
+ value.version === DATA_VERSION;
42
+ const isComponentPageData = (value) => {
43
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
44
+ return false;
45
+ const page = value;
46
+ return (page.format === PAGE_FORMAT &&
47
+ page.version === DATA_VERSION &&
48
+ page.kind === 'component' &&
49
+ typeof page.tag === 'string' &&
50
+ typeof page.package === 'string' &&
51
+ typeof page.module === 'string' &&
52
+ typeof page.declaration === 'object' &&
53
+ page.declaration !== null &&
54
+ Array.isArray(page.examples));
55
+ };
56
+ const isThemeStudioPageData = (value) => {
57
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
58
+ return false;
59
+ const page = value;
60
+ return (page.format === PAGE_FORMAT &&
61
+ page.version === DATA_VERSION &&
62
+ page.kind === 'tool' &&
63
+ typeof page.studio === 'object' &&
64
+ page.studio !== null &&
65
+ Array.isArray(page.studio.roles));
66
+ };
67
+ const isFoundationPageData = (value) => {
68
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
69
+ return false;
70
+ const page = value;
71
+ return (page.format === PAGE_FORMAT &&
72
+ page.version === DATA_VERSION &&
73
+ page.kind === 'foundation' &&
74
+ typeof page.foundation === 'object' &&
75
+ page.foundation !== null &&
76
+ Array.isArray(page.tokens));
77
+ };
78
+ export class OddkinWorkbench extends OddkinElement.with({
79
+ index: prop.string({ default: '', description: 'URL of the Workbench index (`index.json`).' }),
80
+ events: prop.string({
81
+ default: '',
82
+ description: 'URL of the live-update event stream; set by the dev server.',
83
+ }),
84
+ }) {
85
+ static shadowRootOptions = null;
86
+ static styles = [shellStyles, catalogStyles];
87
+ /** Replaces HTTP loading, for embedding and tests. Read when the element connects. */
88
+ source;
89
+ #index = signal(undefined);
90
+ #failure = signal(undefined);
91
+ #router = signal(undefined);
92
+ #stale = signal(undefined);
93
+ #expanded = signal(false);
94
+ #query = signal('');
95
+ #appearance = signal('system');
96
+ #items = [];
97
+ #previewFrameUrl = '';
98
+ #source;
99
+ /** The catalog cards' live previews, while the catalog shows. */
100
+ #cards;
101
+ /** Bumped when the cards' previews must be built again (changed component code). */
102
+ #cardsVersion = signal(0);
103
+ /** Theme Studio's module, imported on the first visit to its route. */
104
+ #studio;
105
+ #studioError = signal('');
106
+ #loadStudio() {
107
+ this.#studio ??= import('./theme-studio.js').catch((error) => {
108
+ this.#studio = undefined;
109
+ this.#studioError.value = error instanceof Error ? error.message : String(error);
110
+ });
111
+ }
112
+ connected(scope) {
113
+ const doc = this.ownerDocument;
114
+ const win = doc.defaultView;
115
+ this.#appearance.value = readAppearance(win?.localStorage);
116
+ scope.effect(() => {
117
+ doc.documentElement.dataset['oddMode'] = this.#appearance.value;
118
+ });
119
+ scope.listen(doc, 'keydown', (event) => {
120
+ const target = event.target;
121
+ const editing = target?.closest('input, textarea, select, [contenteditable]');
122
+ if (event.key !== '/' || editing || event.ctrlKey || event.metaKey || event.altKey)
123
+ return;
124
+ const input = this.querySelector('.wb-search input');
125
+ if (!input)
126
+ return;
127
+ event.preventDefault();
128
+ input.focus();
129
+ });
130
+ const indexUrl = new URL(this.index || '_oddkin/index.json', doc.baseURI);
131
+ this.#previewFrameUrl = this.source?.previewFrameUrl ?? new URL('frame.html', indexUrl).href;
132
+ const source = this.source ?? {
133
+ index: (signal) => fetchJson(indexUrl, signal),
134
+ page: (file, signal) => fetchJson(new URL(file, indexUrl), signal),
135
+ };
136
+ this.#source = source;
137
+ scope.add(() => this.#disposeCards());
138
+ const events = this.events ? new URL(this.events, doc.baseURI) : undefined;
139
+ // One application per connection. The page lifecycle service suspends it while the page is
140
+ // in the back/forward cache, which closes the live-update stream (Firefox keeps a cached
141
+ // page's connection open otherwise, and six of them exhaust its connections to the host).
142
+ const app = createApp({
143
+ name: 'oddkin-workbench',
144
+ setup: ({ use, scope: root }) => {
145
+ use(pageLifecycle(app));
146
+ if (events)
147
+ use(this.#updates(events, source, root));
148
+ void this.#load(source, root);
149
+ },
150
+ });
151
+ app.start();
152
+ scope.add(() => app.stop());
153
+ }
154
+ #run;
155
+ /** Load the index; (re)start the router when it is new or changed. */
156
+ async #load(source, root) {
157
+ let value;
158
+ try {
159
+ value = await source.index(root.signal);
160
+ }
161
+ catch (error) {
162
+ if (!root.signal.aborted)
163
+ this.#failure.value = `${COPY.indexFailed}: ${error instanceof Error ? error.message : String(error)}`;
164
+ return;
165
+ }
166
+ if (root.signal.aborted)
167
+ return;
168
+ if (!isIndex(value)) {
169
+ const { format, version } = (value ?? {});
170
+ this.#failure.value = `${COPY.indexIncompatible} (${String(format)} ${String(version)}).`;
171
+ return;
172
+ }
173
+ const current = this.#index.value;
174
+ if (current && JSON.stringify(current) === JSON.stringify(value))
175
+ return;
176
+ if (!current)
177
+ performance.mark('oddkin-workbench:index');
178
+ this.#run?.dispose();
179
+ this.#disposeCards();
180
+ this.#failure.value = undefined;
181
+ this.#index.value = value;
182
+ this.#items = searchItems(value.registry);
183
+ this.#start(value, source, root.child());
184
+ }
185
+ /** One router over the registry's routes, owned by `run`. */
186
+ #start(index, source, run) {
187
+ this.#run = run;
188
+ const { registry } = index;
189
+ const brand = index.branding.name;
190
+ const router = run.use(createRouter({
191
+ name: 'oddkin-workbench',
192
+ base: registry.basePath,
193
+ mode: registry.routing,
194
+ routes: shellRoutes(registry, (page, { signal }) => {
195
+ const file = index.pages[page.id];
196
+ return file ? source.page(file, signal) : undefined;
197
+ }),
198
+ formatTitle: (title, state) => state.status === 'not-found'
199
+ ? `${COPY.notFound} · ${brand}`
200
+ : title && title !== brand
201
+ ? `${title} · ${brand}`
202
+ : brand,
203
+ focus: () => this.querySelector('main h1') ?? this.querySelector('main'),
204
+ }));
205
+ this.#router.value = router;
206
+ run.add(() => {
207
+ if (this.#router.value === router)
208
+ this.#router.value = undefined;
209
+ });
210
+ // Collapse the narrow sidebar after each navigation; mark the first rendered page once.
211
+ let marked = false;
212
+ let path;
213
+ run.effect(() => {
214
+ const state = router.state.value;
215
+ if (state.status === 'idle')
216
+ return;
217
+ untracked(() => {
218
+ if (state.location?.path !== path)
219
+ this.#expanded.value = false;
220
+ path = state.location?.path;
221
+ if (!marked) {
222
+ marked = true;
223
+ void settled().then(() => performance.mark('oddkin-workbench:ready'));
224
+ }
225
+ });
226
+ });
227
+ }
228
+ /**
229
+ * The dev server's updates as an application service: the stream closes while the page is
230
+ * suspended, and reopens on restoration with the index read again for missed changes.
231
+ */
232
+ #updates(url, source, root) {
233
+ let events;
234
+ const open = () => {
235
+ events = new EventSource(url);
236
+ events.addEventListener('update', (event) => this.#onUpdate(JSON.parse(event.data), source, root));
237
+ };
238
+ const close = () => {
239
+ events?.close();
240
+ events = undefined;
241
+ };
242
+ return {
243
+ connect: (scope) => {
244
+ open();
245
+ scope.add(close);
246
+ },
247
+ suspend: close,
248
+ resume: () => {
249
+ open();
250
+ void this.#load(source, root);
251
+ },
252
+ };
253
+ }
254
+ #onUpdate(update, source, root) {
255
+ if (update.shell) {
256
+ this.ownerDocument.defaultView?.location.reload();
257
+ return;
258
+ }
259
+ if (!update.ok) {
260
+ this.#stale.value = update.diagnostics.filter((d) => d.severity === 'error').length;
261
+ return;
262
+ }
263
+ this.#stale.value = undefined;
264
+ // Changed component code needs a fresh realm: a registration cannot be redefined in place.
265
+ if (update.modules?.length) {
266
+ void this.querySelector('oddkin-workbench-component')?.replacePreview();
267
+ if (this.#cards) {
268
+ this.#disposeCards();
269
+ this.#cardsVersion.value++;
270
+ }
271
+ }
272
+ if (update.index) {
273
+ void this.#load(source, root);
274
+ return;
275
+ }
276
+ const view = this.#view(this.#router.value?.state.value);
277
+ if (view?.kind === 'page' && update.pages.includes(view.page.id))
278
+ void this.#router.value?.refresh();
279
+ }
280
+ #view(state) {
281
+ const leaf = state?.matches.at(-1);
282
+ return leaf?.status === 'ready' ? leaf.data : undefined;
283
+ }
284
+ #disposeCards() {
285
+ this.#cards?.dispose();
286
+ this.#cards = undefined;
287
+ }
288
+ /** Live previews for the catalog's cards: each component's first example in a frame. */
289
+ #cardPreview(index) {
290
+ void this.#cardsVersion.value;
291
+ const source = this.#source;
292
+ if (!source || !index.previews?.length)
293
+ return undefined;
294
+ const cards = (this.#cards ??= cardPreviews({
295
+ document: this.ownerDocument,
296
+ frameUrl: this.#previewFrameUrl,
297
+ page: async (id, signal) => {
298
+ const file = index.pages[id];
299
+ const data = file ? await source.page(file, signal) : undefined;
300
+ return isComponentPageData(data) ? data : undefined;
301
+ },
302
+ }));
303
+ // Only components with a registration get a preview area; the others keep a plain card.
304
+ const previews = new Set(index.previews);
305
+ return (entry) => (previews.has(entry.id) ? cards.preview(entry) : undefined);
306
+ }
307
+ #searchView(ctx) {
308
+ const query = this.#query.value;
309
+ const { results, total } = search(this.#items, query, SEARCH_LIMIT);
310
+ const clear = () => (this.#query.value = '');
311
+ return html `<form class="wb-search" role="search" @submit=${(e) => e.preventDefault()}>
312
+ <label class="wb-visually-hidden" for="wb-search-input">${COPY.search}</label>
313
+ <input
314
+ id="wb-search-input"
315
+ type="search"
316
+ autocomplete="off"
317
+ placeholder=${COPY.searchPlaceholder}
318
+ aria-describedby="wb-search-status"
319
+ aria-controls="wb-search-results"
320
+ .value=${query}
321
+ @input=${(e) => (this.#query.value = e.target.value)}
322
+ @keydown=${(e) => {
323
+ if (e.key === 'Escape')
324
+ clear();
325
+ }}
326
+ />
327
+ <p id="wb-search-status" class="wb-visually-hidden" aria-live="polite">
328
+ ${query.trim() ? COPY.searchResults(results.length, total) : ''}
329
+ </p>
330
+ <ul id="wb-search-results" class="wb-search-results" ?hidden=${!query.trim() || !total}>
331
+ ${results.map((item) => html `<li>
332
+ <a href=${ctx.href(item.route)} @click=${clear}
333
+ >${item.title}${item.summary ? html `<small>${inline(item.summary)}</small>` : nothing}</a
334
+ >
335
+ </li>`)}
336
+ </ul>
337
+ </form>`;
338
+ }
339
+ #pageView(ctx, state, current) {
340
+ if (!state || state.status === 'idle')
341
+ return html `<p role="status">${COPY.loading}</p>`;
342
+ const first = ctx.registry.pages.find((p) => p.id === ctx.registry.primaryNav[0]);
343
+ if (state.status === 'not-found')
344
+ return messagePage(ctx, COPY.notFound, COPY.notFoundText(state.location?.path ?? '/'), first);
345
+ if (state.status === 'error') {
346
+ const error = state.error;
347
+ return messagePage(ctx, COPY.pageFailed, error instanceof Error ? error.message : String(error), first);
348
+ }
349
+ const view = this.#view(state);
350
+ if (view?.kind === 'notice')
351
+ return messagePage(ctx, 'Products and modes', COPY.productsDisabled, first);
352
+ if (!current)
353
+ return nothing;
354
+ const kind = current.kind;
355
+ const data = view?.kind === 'page' ? view.data : undefined;
356
+ const index = this.#index.value;
357
+ const studio = kind === 'tool' && isThemeStudioPageData(data) ? data : undefined;
358
+ if (studio)
359
+ this.#loadStudio();
360
+ const body = kind === 'overview'
361
+ ? overviewBody(ctx, current)
362
+ : kind === 'tool'
363
+ ? studio
364
+ ? html `<div class="wb-body">
365
+ ${this.#studioError.value
366
+ ? html `<p role="alert">
367
+ Theme Studio could not load: ${this.#studioError.value}
368
+ </p>`
369
+ : nothing}
370
+ <oddkin-workbench-theme-studio
371
+ .page=${studio}
372
+ .frameUrl=${this.#previewFrameUrl}
373
+ ></oddkin-workbench-theme-studio>
374
+ </div>`
375
+ : html `<div class="wb-body"><p class="wb-muted">${COPY.toolPending}</p></div>`
376
+ : kind === 'component' && isComponentPageData(data) && index
377
+ ? html `<div class="wb-body">
378
+ <oddkin-workbench-component
379
+ .page=${data}
380
+ .index=${index}
381
+ .href=${ctx.href}
382
+ .frameUrl=${this.#previewFrameUrl}
383
+ ></oddkin-workbench-component>
384
+ </div>`
385
+ : kind === 'foundation' && isFoundationPageData(data) && index
386
+ ? html `<div class="wb-body">
387
+ <oddkin-workbench-foundation
388
+ .page=${data}
389
+ .index=${index}
390
+ .href=${ctx.href}
391
+ ></oddkin-workbench-foundation>
392
+ </div>`
393
+ : sectionsBody(current);
394
+ const contents = toc(ctx, current);
395
+ return html `<div class=${contents === nothing ? 'wb-page' : 'wb-page wb-has-toc'}>
396
+ ${pageHeader(ctx, current)} ${contents} ${body}
397
+ </div>`;
398
+ }
399
+ render() {
400
+ const failure = this.#failure.value;
401
+ if (failure)
402
+ return html `<main id="main" class="wb-main" tabindex="-1">
403
+ <p role="alert">${failure}</p>
404
+ </main>`;
405
+ const index = this.#index.value;
406
+ if (!index)
407
+ return html `<p class="wb-loading" role="status">${COPY.loading}</p>`;
408
+ const router = this.#router.value;
409
+ const state = router?.state.value;
410
+ const view = this.#view(state);
411
+ const current = view?.kind === 'page' ? view.page : undefined;
412
+ const catalog = current?.section === 'components' && current.kind === 'overview';
413
+ if (!catalog)
414
+ this.#disposeCards();
415
+ const preview = catalog ? this.#cardPreview(index) : undefined;
416
+ const ctx = {
417
+ registry: index.registry,
418
+ href: (to) => router?.href(to) ?? registryHref(index.registry, to),
419
+ lang: this.ownerDocument.documentElement.lang || 'en',
420
+ ...(current && catalog
421
+ ? {
422
+ catalog: {
423
+ ...(preview ? { preview } : {}),
424
+ query: new URLSearchParams(state?.location?.search).get('q') ?? '',
425
+ category: new URLSearchParams(state?.location?.search).get('category') ?? '',
426
+ update: (query, category) => {
427
+ const params = new URLSearchParams(this.#router.value?.state.value.location?.search);
428
+ if (query.trim())
429
+ params.set('q', query.trim());
430
+ else
431
+ params.delete('q');
432
+ if (category)
433
+ params.set('category', category);
434
+ else
435
+ params.delete('category');
436
+ const suffix = params.toString();
437
+ void this.#router.value?.navigate(`${current.route}${suffix ? `?${suffix}` : ''}`, {
438
+ replace: true,
439
+ });
440
+ },
441
+ },
442
+ }
443
+ : {}),
444
+ };
445
+ const stale = this.#stale.value;
446
+ const side = current
447
+ ? sidebarView(ctx, current, this.#expanded.value, () => {
448
+ this.#expanded.value = !this.#expanded.value;
449
+ })
450
+ : nothing;
451
+ const tools = html `${this.#searchView(ctx)}
452
+ ${appearanceControl(this.#appearance.value, (value) => {
453
+ this.#appearance.value = value;
454
+ try {
455
+ this.ownerDocument.defaultView?.localStorage.setItem(APPEARANCE_KEY, value);
456
+ }
457
+ catch {
458
+ // Storage may be unavailable (private mode, quota); the choice still applies now.
459
+ }
460
+ })}`;
461
+ return html `<a
462
+ class="wb-skip"
463
+ href="#main"
464
+ @click=${(event) => {
465
+ event.preventDefault();
466
+ this.querySelector('main')?.focus();
467
+ }}
468
+ >${COPY.skip}</a
469
+ >
470
+ ${header(ctx, index.branding, current, tools)}
471
+ ${stale === undefined ? nothing : html `<p class="wb-banner" role="status">${COPY.stale(stale)}</p>`}
472
+ <div class=${side === nothing ? 'wb-layout wb-no-sidebar' : 'wb-layout'}>
473
+ ${side}
474
+ <main id="main" class="wb-main" tabindex="-1">${this.#pageView(ctx, state, current)}</main>
475
+ </div>`;
476
+ }
477
+ }
478
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/app/shell.ts"],"names":[],"mappings":"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"}
@@ -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,yCAyVvB,CAAC"}