@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,88 @@
1
+ /**
2
+ * Built-in titles for pages and sections (workbench-pages.md §4–§8). Generic structure only:
3
+ * no library facts. Moves to the localizable `./content` catalog with the shell (M5).
4
+ */
5
+ /** Foundation ids (oddkin-metadata v1) → page slug and title, in default order. */
6
+ export const FOUNDATIONS = [
7
+ { id: 'tokens', slug: 'token-architecture', title: 'Token architecture' },
8
+ { id: 'color', slug: 'color', title: 'Color' },
9
+ { id: 'typography', slug: 'typography', title: 'Typography' },
10
+ { id: 'spacing', slug: 'spacing', title: 'Spacing' },
11
+ { id: 'borders-and-radii', slug: 'borders-and-radii', title: 'Borders and radii' },
12
+ { id: 'elevation', slug: 'elevation', title: 'Elevation' },
13
+ { id: 'motion', slug: 'motion', title: 'Motion' },
14
+ { id: 'themes', slug: 'themes', title: 'Themes' },
15
+ { id: 'responsive', slug: 'responsive-behavior', title: 'Responsive behavior' },
16
+ ];
17
+ export const SECTION_TITLES = {
18
+ // Foundations
19
+ 'tiers-and-naming': 'Tiers and naming',
20
+ pipeline: 'Source-to-output pipeline',
21
+ 'trace-a-token': 'Trace a token',
22
+ consumption: 'Consumption',
23
+ 'aliases-and-overrides': 'Aliases and overrides',
24
+ 'dependency-policy': 'Dependency policy and direct reads',
25
+ 'every-token': 'Every token',
26
+ palettes: 'Palettes and ramps',
27
+ 'semantic-roles': 'Semantic roles',
28
+ 'interactive-states': 'Interactive states',
29
+ 'product-variations': 'Product variations',
30
+ 'contrast-pairs': 'Contrast pairs',
31
+ families: 'Families',
32
+ scale: 'Scale',
33
+ 'composite-styles': 'Composite styles',
34
+ specimens: 'Specimens',
35
+ vocabulary: 'Semantic vocabulary',
36
+ precedence: 'Precedence and layout behavior',
37
+ 'border-widths': 'Border widths and styles',
38
+ 'border-colors': 'Border colour roles',
39
+ radii: 'Radii',
40
+ 'component-mappings': 'Component mappings',
41
+ samples: 'Samples',
42
+ levels: 'Levels',
43
+ 'theme-variations': 'Theme variations',
44
+ 'durations-and-easing': 'Durations and easing',
45
+ roles: 'Roles',
46
+ 'try-a-duration': 'Try a duration',
47
+ 'reduced-motion': 'Reduced motion',
48
+ 'themes-and-modes': 'Available themes and modes',
49
+ 'scope-contract': 'Scope contract',
50
+ composition: 'Composition and precedence',
51
+ comparisons: 'Comparisons',
52
+ usage: 'Usage snippets',
53
+ 'which-query': 'Which query to use',
54
+ conditions: 'Conditions and thresholds',
55
+ profiles: 'Profiles',
56
+ 'responsive-roles': 'Responsive roles',
57
+ recipes: 'Recipes',
58
+ 'resize-a-container': 'Resize a container',
59
+ reflow: 'Reflow and overflow',
60
+ source: 'Source',
61
+ // Components
62
+ overview: 'Overview',
63
+ 'interactive-example': 'Interactive example',
64
+ api: 'API',
65
+ examples: 'Examples',
66
+ tokens: 'Tokens',
67
+ 'behavior-and-accessibility': 'Behavior and accessibility',
68
+ guidance: 'Guidance',
69
+ 'known-limitations': 'Known limitations',
70
+ };
71
+ /** `contrast-pairs` → `Contrast pairs` for ids without a built-in title. */
72
+ export function sectionTitle(id) {
73
+ const known = SECTION_TITLES[id];
74
+ if (known)
75
+ return known;
76
+ const words = id.replace(/-/g, ' ');
77
+ return words.charAt(0).toUpperCase() + words.slice(1);
78
+ }
79
+ /** `DemoCounter` → `Demo counter`; `side-nav` → `Side nav`. */
80
+ export function humanize(name) {
81
+ const words = name
82
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
83
+ .replace(/[-_]+/g, ' ')
84
+ .trim()
85
+ .toLowerCase();
86
+ return words.charAt(0).toUpperCase() + words.slice(1);
87
+ }
88
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/pages/defaults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `@oddkin/workbench/pages` — the page registry (ADR 0023): one build-time source for routes,
3
+ * primary navigation, sidebars, overview cards, search, visibility, and legacy redirects.
4
+ * DOM-free; the M5 shell renders from it.
5
+ */
6
+ export { buildPageRegistry } from './build.js';
7
+ export type { RegistryInput } from './build.js';
8
+ export { cards, href, onThisPage, primaryNavigation, resolveLegacyRoute, searchEntries, sidebar, staticRedirects, } from './navigation.js';
9
+ export type { RedirectResult } from './navigation.js';
10
+ export { FOUNDATIONS } from './defaults.js';
11
+ export { PAGE_REGISTRY_SCHEMA } from './types.js';
12
+ export type { Availability, CemDeclaration, CemPackage, DocMetaLike, FactLike, FoundationMetaLike, OddkinMetadataLike, PageEntry, PageKind, PageRegistry, SectionEntry, } from './types.js';
13
+ export type { WorkbenchDiagnostic } from '../internal/diagnostics.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,OAAO,EACP,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,WAAW,EACX,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `@oddkin/workbench/pages` — the page registry (ADR 0023): one build-time source for routes,
3
+ * primary navigation, sidebars, overview cards, search, visibility, and legacy redirects.
4
+ * DOM-free; the M5 shell renders from it.
5
+ */
6
+ export { buildPageRegistry } from './build.js';
7
+ export { cards, href, onThisPage, primaryNavigation, resolveLegacyRoute, searchEntries, sidebar, staticRedirects, } from './navigation.js';
8
+ export { FOUNDATIONS } from './defaults.js';
9
+ export { PAGE_REGISTRY_SCHEMA } from './types.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,OAAO,EACP,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Projections of the registry. Every navigation surface reads from the same registry, so
3
+ * routes, primary navigation, sidebars, cards, and search cannot drift apart.
4
+ */
5
+ import type { PageEntry, PageRegistry } from './types.js';
6
+ /** Visible primary navigation entries in configured order. */
7
+ export declare function primaryNavigation(registry: PageRegistry): PageEntry[];
8
+ /** Contextual sidebar for a section, grouped when the section has groups. */
9
+ export declare function sidebar(registry: PageRegistry, section: string): {
10
+ group: string | undefined;
11
+ pages: PageEntry[];
12
+ }[];
13
+ /** Overview cards for a section (never Theme Studio). */
14
+ export declare function cards(registry: PageRegistry, section: string): PageEntry[];
15
+ /** Search entries: every visible page that opts into search. */
16
+ export declare function searchEntries(registry: PageRegistry): {
17
+ id: string;
18
+ title: string;
19
+ summary?: string;
20
+ tags: readonly string[];
21
+ route: string;
22
+ }[];
23
+ /** "On this page" entries: visible sections, only when there are at least two. */
24
+ export declare function onThisPage(page: PageEntry): {
25
+ id: string;
26
+ title: string;
27
+ }[];
28
+ /** URL for a route under the base path, in history or hash mode. */
29
+ export declare function href(registry: PageRegistry, route: string): string;
30
+ export type RedirectResult = {
31
+ readonly kind: 'redirect';
32
+ readonly to: string;
33
+ } | {
34
+ readonly kind: 'notice';
35
+ readonly code: 'products.disabled';
36
+ };
37
+ /**
38
+ * Resolve a legacy route (relative to the base path). `/playground?component=<tag>` goes to
39
+ * that component when it exists, keeping other parameters; `/foundations/products` without
40
+ * Products and modes gives a notice instead of a redirect.
41
+ */
42
+ export declare function resolveLegacyRoute(registry: PageRegistry, path: string, search?: string): RedirectResult | undefined;
43
+ /** Static redirect stubs for history-mode builds (meta refresh + canonical link). */
44
+ export declare function staticRedirects(registry: PageRegistry): {
45
+ from: string;
46
+ to: string;
47
+ }[];
48
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/pages/navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ1D,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,CAMrE;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CACrB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,EAAE,CAKrD;AAED,yDAAyD;AACzD,wBAAgB,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAE1E;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,YAAY,GACrB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAU3F;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAG3E;AAED,oEAAoE;AACpE,wBAAgB,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEpE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,MAAM,SAAK,GACV,cAAc,GAAG,SAAS,CAsB5B;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,CAKtF"}
@@ -0,0 +1,83 @@
1
+ const byOrder = (pages) => pages
2
+ .map((page, index) => ({ page, index }))
3
+ .sort((a, b) => (a.page.order ?? a.index) - (b.page.order ?? b.index) || a.index - b.index)
4
+ .map((p) => p.page);
5
+ /** Visible primary navigation entries in configured order. */
6
+ export function primaryNavigation(registry) {
7
+ const byId = new Map(registry.pages.map((p) => [p.id, p]));
8
+ return registry.primaryNav.flatMap((id) => {
9
+ const page = byId.get(id);
10
+ return page?.visible ? [page] : [];
11
+ });
12
+ }
13
+ /** Contextual sidebar for a section, grouped when the section has groups. */
14
+ export function sidebar(registry, section) {
15
+ const pages = registry.pages.filter((p) => p.visible && p.nav.sidebar && p.section === section);
16
+ const groups = new Map();
17
+ for (const page of pages)
18
+ groups.set(page.group, [...(groups.get(page.group) ?? []), page]);
19
+ return [...groups].map(([group, entries]) => ({ group, pages: byOrder(entries) }));
20
+ }
21
+ /** Overview cards for a section (never Theme Studio). */
22
+ export function cards(registry, section) {
23
+ return byOrder(registry.pages.filter((p) => p.visible && p.nav.card && p.section === section));
24
+ }
25
+ /** Search entries: every visible page that opts into search. */
26
+ export function searchEntries(registry) {
27
+ return registry.pages
28
+ .filter((p) => p.visible && p.nav.search)
29
+ .map((p) => ({
30
+ id: p.id,
31
+ title: p.title,
32
+ ...(p.summary ? { summary: p.summary } : {}),
33
+ tags: p.tags ?? [],
34
+ route: p.route,
35
+ }));
36
+ }
37
+ /** "On this page" entries: visible sections, only when there are at least two. */
38
+ export function onThisPage(page) {
39
+ const visible = page.sections.filter((s) => s.visible);
40
+ return visible.length >= 2 ? visible.map(({ id, title }) => ({ id, title })) : [];
41
+ }
42
+ /** URL for a route under the base path, in history or hash mode. */
43
+ export function href(registry, route) {
44
+ const relative = route.replace(/^\//, '');
45
+ return registry.routing === 'hash'
46
+ ? `${registry.basePath}#/${relative}`
47
+ : `${registry.basePath}${relative}`;
48
+ }
49
+ /**
50
+ * Resolve a legacy route (relative to the base path). `/playground?component=<tag>` goes to
51
+ * that component when it exists, keeping other parameters; `/foundations/products` without
52
+ * Products and modes gives a notice instead of a redirect.
53
+ */
54
+ export function resolveLegacyRoute(registry, path, search = '') {
55
+ const params = new URLSearchParams(search);
56
+ if (path === '/playground') {
57
+ const tag = params.get('component');
58
+ const target = tag
59
+ ? registry.pages.find((p) => p.id === `components/${tag}` && p.visible)
60
+ : undefined;
61
+ const owner = registry.pages.find((p) => p.visible && p.legacyRoutes?.includes(path));
62
+ if (!target && !owner)
63
+ return undefined;
64
+ params.delete('component');
65
+ const rest = params.toString();
66
+ return { kind: 'redirect', to: `${(target ?? owner)?.route}${rest ? `?${rest}` : ''}` };
67
+ }
68
+ const owner = registry.pages.find((p) => p.visible && p.legacyRoutes?.includes(path));
69
+ if (owner)
70
+ return { kind: 'redirect', to: `${owner.route}${search}` };
71
+ if (path === '/foundations/products' &&
72
+ !registry.pages.some((p) => p.id === 'products' && p.visible)) {
73
+ return { kind: 'notice', code: 'products.disabled' };
74
+ }
75
+ return undefined;
76
+ }
77
+ /** Static redirect stubs for history-mode builds (meta refresh + canonical link). */
78
+ export function staticRedirects(registry) {
79
+ if (registry.routing !== 'history')
80
+ return [];
81
+ return registry.pages.flatMap((p) => p.visible ? (p.legacyRoutes ?? []).map((from) => ({ from, to: p.route })) : []);
82
+ }
83
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/pages/navigation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ /** Page registry contracts (`page-registry.v1`, ADR 0023, workbench-pages.md §2). */
2
+ export declare const PAGE_REGISTRY_SCHEMA = "https://oddkin.dev/schemas/page-registry/v1.json";
3
+ export type PageKind = 'home' | 'overview' | 'foundation' | 'component' | 'tool' | 'products' | 'guide';
4
+ export type Availability = 'full' | 'partial' | 'unavailable';
5
+ export interface SectionEntry {
6
+ /** Stable section id; drives "On this page" anchors and authored content keys. */
7
+ readonly id: string;
8
+ readonly title: string;
9
+ readonly visible: boolean;
10
+ readonly source: 'generated' | 'built-in' | 'authored';
11
+ }
12
+ export interface PageEntry {
13
+ /** Stable id, e.g. `foundations/spacing`, `components/acme-button`, `theme-studio`. */
14
+ readonly id: string;
15
+ /** Relative to the base path, starting with `/`. */
16
+ readonly route: string;
17
+ readonly section: string;
18
+ readonly kind: PageKind;
19
+ readonly eyebrow?: string;
20
+ readonly title: string;
21
+ readonly summary?: string;
22
+ /** Sidebar and catalog group (component category). */
23
+ readonly group?: string;
24
+ readonly tags?: readonly string[];
25
+ /** ISO date, only from authored content or source history (ADR 0027); never build time. */
26
+ readonly updated?: string;
27
+ readonly order?: number;
28
+ readonly visible: boolean;
29
+ readonly availability: Availability;
30
+ /** Where the page appears. All false when the page is not visible. */
31
+ readonly nav: {
32
+ readonly primary?: boolean;
33
+ readonly sidebar?: boolean;
34
+ readonly card?: boolean;
35
+ readonly search?: boolean;
36
+ };
37
+ readonly sections: readonly SectionEntry[];
38
+ /** Old routes that redirect here. */
39
+ readonly legacyRoutes?: readonly string[];
40
+ }
41
+ export interface PageRegistry {
42
+ readonly schema: typeof PAGE_REGISTRY_SCHEMA;
43
+ readonly basePath: string;
44
+ readonly routing: 'history' | 'hash';
45
+ /** Ordered ids of visible pages shown in primary navigation. */
46
+ readonly primaryNav: readonly string[];
47
+ readonly pages: readonly PageEntry[];
48
+ }
49
+ export interface CemDeclaration {
50
+ readonly kind: string;
51
+ readonly name: string;
52
+ readonly customElement?: boolean;
53
+ readonly tagName?: string;
54
+ readonly summary?: string;
55
+ readonly description?: string;
56
+ readonly members?: readonly {
57
+ readonly kind: string;
58
+ readonly name: string;
59
+ readonly privacy?: string;
60
+ readonly static?: boolean;
61
+ }[];
62
+ readonly attributes?: readonly {
63
+ readonly name: string;
64
+ }[];
65
+ readonly events?: readonly {
66
+ readonly name: string;
67
+ }[];
68
+ readonly slots?: readonly {
69
+ readonly name: string;
70
+ }[];
71
+ readonly cssParts?: readonly {
72
+ readonly name: string;
73
+ }[];
74
+ readonly cssProperties?: readonly {
75
+ readonly name: string;
76
+ }[];
77
+ readonly cssStates?: readonly {
78
+ readonly name: string;
79
+ }[];
80
+ }
81
+ /** A Custom Elements Manifest (schema 2.x); only the fields the registry reads. */
82
+ export interface CemPackage {
83
+ readonly modules: readonly {
84
+ readonly path: string;
85
+ readonly declarations?: readonly CemDeclaration[];
86
+ }[];
87
+ }
88
+ export interface FactLike<T> {
89
+ readonly value?: T;
90
+ readonly known?: boolean;
91
+ readonly provenance: 'extracted' | 'authored' | 'observed' | 'verified';
92
+ }
93
+ export interface FoundationMetaLike {
94
+ readonly id: string;
95
+ readonly sections: readonly {
96
+ readonly id: string;
97
+ readonly available: boolean;
98
+ readonly reason?: string;
99
+ }[];
100
+ readonly tokens: readonly string[];
101
+ }
102
+ export interface DocMetaLike {
103
+ readonly title?: FactLike<string>;
104
+ readonly summary?: FactLike<string>;
105
+ readonly tags?: readonly string[];
106
+ readonly updated?: FactLike<string>;
107
+ readonly order?: number;
108
+ readonly visible?: boolean;
109
+ }
110
+ /** The oddkin-metadata v1 fields the registry reads. */
111
+ export interface OddkinMetadataLike {
112
+ readonly library?: {
113
+ readonly name?: string;
114
+ readonly prefix?: string;
115
+ };
116
+ readonly components?: Readonly<Record<string, {
117
+ readonly tag: string;
118
+ readonly category?: string;
119
+ readonly tokenReads?: readonly unknown[];
120
+ readonly styleMappings?: readonly unknown[];
121
+ readonly a11y?: unknown;
122
+ readonly keyboard?: unknown;
123
+ readonly limitations?: readonly unknown[];
124
+ }>>;
125
+ readonly tokens?: unknown;
126
+ readonly examples?: Readonly<Record<string, {
127
+ readonly component: string;
128
+ readonly name: string;
129
+ readonly incorrect?: object;
130
+ }>>;
131
+ readonly foundations?: Readonly<Record<string, FoundationMetaLike>>;
132
+ readonly categories?: Readonly<Record<string, {
133
+ readonly label: string;
134
+ readonly description?: string;
135
+ readonly order?: number;
136
+ }>>;
137
+ readonly products?: Readonly<Record<string, {
138
+ readonly id: string;
139
+ readonly source: string;
140
+ }>>;
141
+ readonly docs?: Readonly<Record<string, DocMetaLike>>;
142
+ }
143
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pages/types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,eAAO,MAAM,oBAAoB,qDAAqD,CAAC;AAEvF,MAAM,MAAM,QAAQ,GAClB,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AACnF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;CACxD;AAED,MAAM,WAAW,SAAS;IACxB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,GAAG,EAAE;QACZ,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,qCAAqC;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAKD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;KAC3B,EAAE,CAAC;IACJ,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3D;AAED,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;KACnD,EAAE,CAAC;CACL;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;CACzE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KAC1B,EAAE,CAAC;IACJ,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAC5B,MAAM,CACJ,MAAM,EACN;QACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;QACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;KAC3C,CACF,CACF,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAC1B,MAAM,CACJ,MAAM,EACN;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CACnF,CACF,CAAC;IACF,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAC5B,MAAM,CACJ,MAAM,EACN;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CACnF,CACF,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC/F,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;CACvD"}
@@ -0,0 +1,3 @@
1
+ /** Page registry contracts (`page-registry.v1`, ADR 0023, workbench-pages.md §2). */
2
+ export const PAGE_REGISTRY_SCHEMA = 'https://oddkin.dev/schemas/page-registry/v1.json';
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/pages/types.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,MAAM,CAAC,MAAM,oBAAoB,GAAG,kDAAkD,CAAC"}
@@ -0,0 +1,3 @@
1
+ /// <reference path="catalog.d.ts" preserve="true" />
2
+ import '@oddkin/components/define/card';
3
+ //# sourceMappingURL=catalog-define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-define.d.ts","sourceRoot":"","sources":["../../src/panels/catalog-define.ts"],"names":[],"mappings":";AAEA,OAAO,gCAAgC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /// <reference path="./catalog.ts" preserve="true" />
2
+ // Registers <oddkin-catalog-panel> and the card element its cards use.
3
+ import '@oddkin/components/define/card';
4
+ import { define } from '@oddkin/core/element';
5
+ import { OddkinCatalogPanel } from './catalog.js';
6
+ define('oddkin-catalog-panel', OddkinCatalogPanel);
7
+ //# sourceMappingURL=catalog-define.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-define.js","sourceRoot":"","sources":["../../src/panels/catalog-define.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,uEAAuE;AACvE,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * `<oddkin-catalog-panel>`: the components catalog (workbench-pages.md §6) as an embeddable
3
+ * panel: search, category filter, counts, and grouped cards from the page registry. Cards load
4
+ * no component modules and mount no previews. Filter changes update the panel and dispatch
5
+ * `oddkin-catalog-filter` so the host can mirror them in its URL.
6
+ */
7
+ import { OddkinElement } from '@oddkin/core/element';
8
+ import type { WorkbenchIndex } from '../data/types.js';
9
+ import type { StyleInput } from '@oddkin/core/styles';
10
+ export interface CatalogFilterDetail {
11
+ readonly query: string;
12
+ readonly category: string;
13
+ }
14
+ declare const OddkinCatalogPanel_base: import("@oddkin/core/element").WithProps<typeof OddkinElement, {
15
+ readonly index: import("@oddkin/core/element").PropDefinition<WorkbenchIndex | undefined>;
16
+ readonly href: import("@oddkin/core/element").PropDefinition<(route: string) => string>;
17
+ readonly query: import("@oddkin/core/element").PropDefinition<string>;
18
+ readonly category: import("@oddkin/core/element").PropDefinition<string>;
19
+ }>;
20
+ export declare class OddkinCatalogPanel extends OddkinCatalogPanel_base {
21
+ static styles: StyleInput;
22
+ protected render(): import("@oddkin/core/template").TemplateResult;
23
+ }
24
+ declare global {
25
+ interface HTMLElementTagNameMap {
26
+ 'oddkin-catalog-panel': OddkinCatalogPanel;
27
+ }
28
+ interface HTMLElementEventMap {
29
+ 'oddkin-catalog-filter': CustomEvent<CatalogFilterDetail>;
30
+ }
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/panels/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAQ,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;;;yEAI2B,MAAM,KAAK,MAAM;;;;AAF7C,qBAAa,kBAAmB,SAAQ,uBAgBtC;IACA,OAAgB,MAAM,EAAE,UAAU,CAAoC;IAEtE,UAAmB,MAAM,mDAyBxB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;IACD,UAAU,mBAAmB;QAC3B,uBAAuB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;KAC3D;CACF"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * `<oddkin-catalog-panel>`: the components catalog (workbench-pages.md §6) as an embeddable
3
+ * panel: search, category filter, counts, and grouped cards from the page registry. Cards load
4
+ * no component modules and mount no previews. Filter changes update the panel and dispatch
5
+ * `oddkin-catalog-filter` so the host can mirror them in its URL.
6
+ */
7
+ import { OddkinElement, prop } from '@oddkin/core/element';
8
+ import { html } from '@oddkin/core/template';
9
+ import { overviewBody } from '../app/views.js';
10
+ import { contentStyles, panelHostStyles } from './styles.js';
11
+ export class OddkinCatalogPanel extends OddkinElement.with({
12
+ index: prop.object({ description: 'The Workbench index.' }),
13
+ href: prop.custom({
14
+ default: () => (route) => route,
15
+ coerce: (value) => typeof value === 'function'
16
+ ? { ok: true, value: value }
17
+ : { ok: false, reason: 'expected a function' },
18
+ description: 'Maps a Workbench route to a URL.',
19
+ }),
20
+ query: prop.string({ default: '', attribute: false, description: 'Search text.' }),
21
+ category: prop.string({
22
+ default: '',
23
+ attribute: false,
24
+ description: "Category label to show; '' shows every category.",
25
+ }),
26
+ }) {
27
+ static styles = [panelHostStyles, contentStyles];
28
+ render() {
29
+ const index = this.index;
30
+ const page = index?.registry.pages.find((p) => p.id === 'components');
31
+ if (!index || !page)
32
+ return html `<div class="wb-content"></div>`;
33
+ const ctx = {
34
+ registry: index.registry,
35
+ href: (route) => this.href(route),
36
+ lang: this.ownerDocument.documentElement.lang || 'en',
37
+ catalog: {
38
+ query: this.query,
39
+ category: this.category,
40
+ update: (query, category) => {
41
+ this.query = query;
42
+ this.category = category;
43
+ this.dispatchEvent(new CustomEvent('oddkin-catalog-filter', {
44
+ bubbles: true,
45
+ composed: true,
46
+ detail: { query, category },
47
+ }));
48
+ },
49
+ },
50
+ };
51
+ return html `<div class="wb-content">${overviewBody(ctx, page)}</div>`;
52
+ }
53
+ }
54
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/panels/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAoB,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO7D,MAAM,OAAO,kBAAmB,SAAQ,aAAa,CAAC,IAAI,CAAC;IACzD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAiB,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;IAC3E,IAAI,EAAE,IAAI,CAAC,MAAM,CAA4B;QAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK;QACvC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,OAAO,KAAK,KAAK,UAAU;YACzB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAkC,EAAE;YACzD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE;QAClD,WAAW,EAAE,kCAAkC;KAChD,CAAC;IACF,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IAClF,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,kDAAkD;KAChE,CAAC;CACH,CAAC;IACA,MAAM,CAAU,MAAM,GAAe,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAEnD,MAAM;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA,gCAAgC,CAAC;QACjE,MAAM,GAAG,GAAgB;YACvB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI;YACrD,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzB,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAsB,uBAAuB,EAAE;wBAC5D,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;qBAC5B,CAAC,CACH,CAAC;gBACJ,CAAC;aACF;SACF,CAAC;QACF,OAAO,IAAI,CAAA,2BAA2B,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;IACxE,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ /// <reference path="component.d.ts" preserve="true" />
2
+ export {};
3
+ //# sourceMappingURL=component-define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-define.d.ts","sourceRoot":"","sources":["../../src/panels/component-define.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ /// <reference path="./component.ts" preserve="true" />
2
+ // Registers <oddkin-component-panel>.
3
+ import { define } from '@oddkin/core/element';
4
+ import { OddkinComponentPanel } from './component.js';
5
+ define('oddkin-component-panel', OddkinComponentPanel);
6
+ //# sourceMappingURL=component-define.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-define.js","sourceRoot":"","sources":["../../src/panels/component-define.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,sCAAsC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Component detail content (workbench-pages.md §7): every section of a component page, with the
3
+ * editable API table as the only control surface over one isolated preview (or a light/dark
4
+ * pair). Rendered by the public `<oddkin-component-panel>` (open shadow root) and by the shell
5
+ * (light DOM, so "On this page" fragments resolve).
6
+ */
7
+ import { OddkinElement } from '@oddkin/core/element';
8
+ import { type Scope } from '@oddkin/core/scope';
9
+ import type { ComponentPageData, WorkbenchIndex } from '../data/types.js';
10
+ import { type IsolatedPreview } from '../preview/frame.js';
11
+ import { type PreviewState } from './model.js';
12
+ import type { StyleInput } from '@oddkin/core/styles';
13
+ export interface EventLogEntry {
14
+ readonly id: number;
15
+ readonly name: string;
16
+ readonly time: number;
17
+ readonly bubbles: boolean;
18
+ readonly composed: boolean;
19
+ readonly target: string;
20
+ readonly detail?: string;
21
+ }
22
+ declare const ComponentDetailElement_base: import("@oddkin/core/element").WithProps<typeof OddkinElement, {
23
+ readonly page: import("@oddkin/core/element").PropDefinition<ComponentPageData | undefined>;
24
+ readonly index: import("@oddkin/core/element").PropDefinition<WorkbenchIndex | undefined>;
25
+ readonly href: import("@oddkin/core/element").PropDefinition<(route: string) => string>;
26
+ readonly frameUrl: import("@oddkin/core/element").PropDefinition<string>;
27
+ }>;
28
+ export declare class ComponentDetailElement extends ComponentDetailElement_base {
29
+ #private;
30
+ static styles: StyleInput;
31
+ constructor();
32
+ /** Current preview configuration (for tests and embedding); read-only snapshot. */
33
+ get previewState(): PreviewState;
34
+ /** Live preview frames, in order (light first when shown side by side). */
35
+ get previews(): readonly IsolatedPreview[];
36
+ protected connected(scope: Scope): void;
37
+ /**
38
+ * Replace the preview realms with fresh frame documents and mount the current configuration
39
+ * again. The shell calls this when component code changes (a registration cannot be redefined
40
+ * in the same realm).
41
+ */
42
+ replacePreview(): Promise<void>;
43
+ protected render(): import("@oddkin/core/template").TemplateResult;
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=component-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-detail.d.ts","sourceRoot":"","sources":["../../src/panels/component-detail.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAQ,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAc,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAElF,OAAO,EAqBL,KAAK,YAAY,EAElB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;;;;yEAqE2B,MAAM,KAAK,MAAM;;;AAH7C,qBAAa,sBAAuB,SAAQ,2BAgB1C;;IACA,OAAgB,MAAM,EAAE,UAAU,CAAoC;IA4BtE,cAGC;IAED,mFAAmF;IACnF,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,2EAA2E;IAC3E,IAAI,QAAQ,IAAI,SAAS,eAAe,EAAE,CAEzC;IAED,UAAmB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAU/C;IA8QD;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9B;IA6ED,UAAmB,MAAM,mDAkBxB;CA8vBF"}