@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 @@
1
+ {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/app/views.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * `@oddkin/workbench/config` — `defineWorkbenchConfig` and `defineDocs` with types matching the
3
+ * `workbench-config.v1` and `docs-content.v1` schemas, plus default resolution and validation.
4
+ * DOM-free. Values here describe presentation; generated facts always come from metadata
5
+ * and token inspection (ADR 0024).
6
+ */
7
+ import { type WorkbenchDiagnostic } from '../internal/diagnostics.js';
8
+ export type { WorkbenchDiagnostic } from '../internal/diagnostics.js';
9
+ export type Routing = 'history' | 'hash';
10
+ export type ProductPlacement = 'foundations' | 'primary';
11
+ export type ProductSource = {
12
+ readonly theme: string;
13
+ readonly product: string;
14
+ } | {
15
+ readonly package: string;
16
+ readonly export?: string;
17
+ } | {
18
+ readonly manifest: string;
19
+ readonly version: string;
20
+ };
21
+ export interface WorkbenchConfig {
22
+ readonly $schema?: string;
23
+ readonly library: {
24
+ readonly packages: readonly string[];
25
+ readonly cem?: readonly string[];
26
+ };
27
+ readonly branding?: {
28
+ readonly name?: string;
29
+ readonly logo?: string;
30
+ readonly theme?: string;
31
+ readonly links?: readonly {
32
+ readonly label: string;
33
+ readonly href: string;
34
+ }[];
35
+ };
36
+ readonly hosting?: {
37
+ readonly basePath?: string;
38
+ readonly routing?: Routing;
39
+ };
40
+ readonly navigation?: {
41
+ readonly home?: boolean;
42
+ /** Ordered section ids; defaults to foundations, components, theme-studio. */
43
+ readonly primary?: readonly string[];
44
+ readonly legacyRedirects?: boolean;
45
+ };
46
+ readonly categories?: {
47
+ readonly definitions?: readonly {
48
+ readonly id: string;
49
+ readonly label: string;
50
+ readonly description?: string;
51
+ readonly order?: number;
52
+ }[];
53
+ /** tag → category id overrides. */
54
+ readonly assign?: Readonly<Record<string, string>>;
55
+ readonly fallback?: string;
56
+ };
57
+ readonly themeStudio?: {
58
+ readonly enabled?: boolean;
59
+ readonly route?: string;
60
+ readonly themeConfig?: string;
61
+ readonly preview?: {
62
+ readonly recipe?: string;
63
+ readonly roles?: Readonly<Record<string, string | {
64
+ readonly component: string;
65
+ readonly example?: string;
66
+ readonly adapter?: string;
67
+ }>>;
68
+ };
69
+ };
70
+ readonly products?: {
71
+ readonly enabled?: boolean;
72
+ readonly placement?: readonly ProductPlacement[];
73
+ readonly sources?: readonly {
74
+ readonly id: string;
75
+ readonly from: ProductSource;
76
+ }[];
77
+ readonly discovery?: {
78
+ readonly workspace?: boolean;
79
+ readonly exclude?: readonly string[];
80
+ };
81
+ };
82
+ readonly content?: {
83
+ readonly files?: readonly string[];
84
+ readonly locales?: readonly string[];
85
+ readonly defaultLocale?: string;
86
+ };
87
+ readonly assets?: readonly string[];
88
+ }
89
+ /** A configuration with every default applied. */
90
+ export interface ResolvedWorkbenchConfig {
91
+ readonly library: WorkbenchConfig['library'];
92
+ readonly branding: NonNullable<WorkbenchConfig['branding']>;
93
+ readonly hosting: {
94
+ readonly basePath: string;
95
+ readonly routing: Routing;
96
+ };
97
+ readonly navigation: {
98
+ readonly home: boolean;
99
+ readonly primary: readonly string[];
100
+ readonly legacyRedirects: boolean;
101
+ };
102
+ readonly categories: {
103
+ readonly definitions: NonNullable<NonNullable<WorkbenchConfig['categories']>['definitions']>;
104
+ readonly assign: Readonly<Record<string, string>>;
105
+ readonly fallback: string;
106
+ };
107
+ readonly themeStudio: {
108
+ readonly enabled: boolean;
109
+ readonly route: string;
110
+ readonly themeConfig?: string;
111
+ readonly preview: NonNullable<NonNullable<WorkbenchConfig['themeStudio']>['preview']>;
112
+ };
113
+ readonly products: {
114
+ readonly enabled: boolean;
115
+ readonly placement: readonly ProductPlacement[];
116
+ readonly sources: NonNullable<NonNullable<WorkbenchConfig['products']>['sources']>;
117
+ readonly discovery: {
118
+ readonly workspace: boolean;
119
+ readonly exclude: readonly string[];
120
+ };
121
+ };
122
+ readonly content: NonNullable<WorkbenchConfig['content']>;
123
+ readonly assets: readonly string[];
124
+ }
125
+ /** Identity with types, for `oddkin.config.ts`. */
126
+ export declare function defineWorkbenchConfig(config: WorkbenchConfig): WorkbenchConfig;
127
+ export declare const DEFAULT_PRIMARY: readonly ['foundations', 'components', 'theme-studio'];
128
+ export declare const KNOWN_SECTIONS: string[];
129
+ /**
130
+ * Validate a configuration (from `oddkin.config.*` or JSON) and apply defaults. Returns
131
+ * `config: undefined` when there are errors.
132
+ */
133
+ export declare function resolveWorkbenchConfig(input: unknown): {
134
+ config: ResolvedWorkbenchConfig | undefined;
135
+ diagnostics: WorkbenchDiagnostic[];
136
+ };
137
+ export declare const DOCS_SCHEMA = "https://oddkin.dev/schemas/docs-content/v1.json";
138
+ export interface SectionContent {
139
+ readonly title?: string;
140
+ readonly guidance?: string;
141
+ readonly visible?: boolean;
142
+ readonly order?: number;
143
+ /** `example:<tag>/<name>` references. */
144
+ readonly examples?: readonly string[];
145
+ }
146
+ export interface PageContent {
147
+ readonly title?: string;
148
+ readonly eyebrow?: string;
149
+ readonly summary?: string;
150
+ readonly intro?: string;
151
+ readonly tags?: readonly string[];
152
+ /** ISO date (YYYY-MM-DD), declared by the author. */
153
+ readonly updated?: string;
154
+ readonly order?: number;
155
+ readonly visible?: boolean;
156
+ readonly useFor?: readonly string[];
157
+ readonly notFor?: readonly string[];
158
+ readonly sections?: Readonly<Record<string, SectionContent>>;
159
+ }
160
+ export interface DocsContent {
161
+ readonly schema: typeof DOCS_SCHEMA;
162
+ readonly locale?: string;
163
+ /** Renamed page/section id → current id. */
164
+ readonly aliases?: Readonly<Record<string, string>>;
165
+ /** Keyed by stable page id (`foundations/spacing`, `components/<tag>`, `theme-studio`). */
166
+ readonly pages: Readonly<Record<string, PageContent>>;
167
+ }
168
+ /** Identity with types, for `oddkin.docs.ts`; fills in the schema id. */
169
+ export declare function defineDocs(content: Omit<DocsContent, 'schema'>): DocsContent;
170
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * `@oddkin/workbench/config` — `defineWorkbenchConfig` and `defineDocs` with types matching the
3
+ * `workbench-config.v1` and `docs-content.v1` schemas, plus default resolution and validation.
4
+ * DOM-free. Values here describe presentation; generated facts always come from metadata
5
+ * and token inspection (ADR 0024).
6
+ */
7
+ import { DiagnosticList, isObject } from '../internal/diagnostics.js';
8
+ /** Identity with types, for `oddkin.config.ts`. */
9
+ export function defineWorkbenchConfig(config) {
10
+ return config;
11
+ }
12
+ export const DEFAULT_PRIMARY = ['foundations', 'components', 'theme-studio'];
13
+ export const KNOWN_SECTIONS = [
14
+ 'home',
15
+ 'foundations',
16
+ 'components',
17
+ 'theme-studio',
18
+ 'products',
19
+ 'guides',
20
+ ];
21
+ const TOP_LEVEL = new Set([
22
+ '$schema',
23
+ 'library',
24
+ 'branding',
25
+ 'hosting',
26
+ 'navigation',
27
+ 'categories',
28
+ 'themeStudio',
29
+ 'products',
30
+ 'content',
31
+ 'assets',
32
+ ]);
33
+ const BASE_PATH = /^\/(.*\/)?$/;
34
+ /**
35
+ * Validate a configuration (from `oddkin.config.*` or JSON) and apply defaults. Returns
36
+ * `config: undefined` when there are errors.
37
+ */
38
+ export function resolveWorkbenchConfig(input) {
39
+ const out = new DiagnosticList();
40
+ if (!isObject(input)) {
41
+ out.error('config.invalid', 'The Workbench configuration must be an object.');
42
+ return { config: undefined, diagnostics: out.items };
43
+ }
44
+ for (const key of Object.keys(input)) {
45
+ if (TOP_LEVEL.has(key))
46
+ continue;
47
+ out.error('config.key.unknown', key === 'playground'
48
+ ? 'There is no Playground destination: interactive examples live on each component page. Remove "playground"; legacy /playground links redirect to Components.'
49
+ : `Unknown configuration key "${key}".`, `/${key}`);
50
+ }
51
+ const c = input;
52
+ const packages = c.library?.packages;
53
+ if (!Array.isArray(packages) ||
54
+ packages.length === 0 ||
55
+ !packages.every((p) => typeof p === 'string')) {
56
+ out.error('config.library.missing', 'library.packages must list at least one package to document.', '/library/packages');
57
+ }
58
+ const basePath = c.hosting?.basePath ?? '/';
59
+ if (!BASE_PATH.test(basePath)) {
60
+ out.error('config.basePath.invalid', `hosting.basePath "${basePath}" must start and end with "/" (for example "/docs/").`, '/hosting/basePath');
61
+ }
62
+ const routing = c.hosting?.routing ?? 'history';
63
+ if (routing !== 'history' && routing !== 'hash') {
64
+ out.error('config.routing.invalid', 'hosting.routing must be "history" or "hash".', '/hosting/routing');
65
+ }
66
+ const primary = c.navigation?.primary ?? DEFAULT_PRIMARY;
67
+ primary.forEach((section, i) => {
68
+ if (!KNOWN_SECTIONS.includes(section)) {
69
+ out.warn('config.navigation.unknown', `navigation.primary entry "${section}" is not a Workbench section (${KNOWN_SECTIONS.join(', ')}).`, `/navigation/primary/${i}`);
70
+ }
71
+ });
72
+ const definitions = c.categories?.definitions ?? [];
73
+ const seen = new Set();
74
+ definitions.forEach((d, i) => {
75
+ if (seen.has(d.id)) {
76
+ out.error('config.category.duplicate', `Category id "${d.id}" is defined twice.`, `/categories/definitions/${i}`);
77
+ }
78
+ seen.add(d.id);
79
+ });
80
+ for (const [tag, id] of Object.entries(c.categories?.assign ?? {})) {
81
+ if (!seen.has(id)) {
82
+ out.error('config.category.unknown', `categories.assign maps <${tag}> to "${id}", which is not in categories.definitions.`, `/categories/assign/${tag}`);
83
+ }
84
+ }
85
+ const route = c.themeStudio?.route ?? '/theme-studio';
86
+ if (!route.startsWith('/')) {
87
+ out.error('config.route.invalid', `themeStudio.route "${route}" must start with "/".`, '/themeStudio/route');
88
+ }
89
+ const placement = c.products?.placement ?? ['foundations'];
90
+ placement.forEach((p, i) => {
91
+ if (p !== 'foundations' && p !== 'primary') {
92
+ out.error('config.products.placement', `products.placement "${String(p)}" must be "foundations" or "primary".`, `/products/placement/${i}`);
93
+ }
94
+ });
95
+ const productIds = new Set();
96
+ (c.products?.sources ?? []).forEach((source, i) => {
97
+ if (productIds.has(source.id)) {
98
+ out.error('config.product.duplicate', `Product id "${source.id}" is configured twice.`, `/products/sources/${i}`);
99
+ }
100
+ productIds.add(source.id);
101
+ });
102
+ if (out.hasErrors)
103
+ return { config: undefined, diagnostics: out.items };
104
+ const themeConfig = c.themeStudio?.themeConfig;
105
+ return {
106
+ config: {
107
+ library: c.library,
108
+ branding: c.branding ?? {},
109
+ hosting: { basePath, routing },
110
+ navigation: {
111
+ home: c.navigation?.home ?? false,
112
+ primary,
113
+ legacyRedirects: c.navigation?.legacyRedirects ?? true,
114
+ },
115
+ categories: {
116
+ definitions,
117
+ assign: c.categories?.assign ?? {},
118
+ fallback: c.categories?.fallback ?? 'Other components',
119
+ },
120
+ themeStudio: {
121
+ enabled: c.themeStudio?.enabled ?? true,
122
+ route,
123
+ ...(themeConfig === undefined ? {} : { themeConfig }),
124
+ preview: c.themeStudio?.preview ?? {},
125
+ },
126
+ products: {
127
+ enabled: c.products?.enabled ?? false,
128
+ placement,
129
+ sources: c.products?.sources ?? [],
130
+ discovery: {
131
+ workspace: c.products?.discovery?.workspace ?? false,
132
+ exclude: c.products?.discovery?.exclude ?? [],
133
+ },
134
+ },
135
+ content: c.content ?? {},
136
+ assets: c.assets ?? [],
137
+ },
138
+ diagnostics: out.items,
139
+ };
140
+ }
141
+ // ---------------------------------------------------------------------------
142
+ // Authored content (oddkin.docs.ts / Markdown front matter), docs-content.v1
143
+ export const DOCS_SCHEMA = 'https://oddkin.dev/schemas/docs-content/v1.json';
144
+ /** Identity with types, for `oddkin.docs.ts`; fills in the schema id. */
145
+ export function defineDocs(content) {
146
+ return { schema: DOCS_SCHEMA, ...content };
147
+ }
148
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const buttonConformance: import("./index.js").ConformanceSuite;
2
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/conformance/button.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,iBAAiB,uCAuN5B,CAAC"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Conformance suite for the `odd-button` foundation contract. Implementation-agnostic: it
3
+ * reaches the element only through its tag, public properties, native events, and the
4
+ * documented `control` anatomy role (a native, focusable `<button>`).
5
+ */
6
+ import { defineConformance } from './index.js';
7
+ const control = (ctx, host) => {
8
+ const part = ctx.adapter.part(host, 'control');
9
+ ctx.expect(part !== null, 'the implementation exposes its control').toBe(true);
10
+ return part;
11
+ };
12
+ const countClicks = (host) => {
13
+ const counter = { count: 0 };
14
+ host.addEventListener('click', () => counter.count++);
15
+ return counter;
16
+ };
17
+ export const buttonConformance = defineConformance({
18
+ id: 'oddkin.button',
19
+ version: '0.1.0',
20
+ contract: { component: 'component:odd-button', versions: '0.x' },
21
+ description: 'Interaction contract shared by odd-button and its product implementations.',
22
+ requires: {
23
+ properties: [
24
+ 'appearance',
25
+ 'size',
26
+ 'type',
27
+ 'disabled',
28
+ 'loading',
29
+ 'fullWidth',
30
+ 'name',
31
+ 'value',
32
+ 'label',
33
+ ],
34
+ events: ['click'],
35
+ slots: ['', 'start', 'end'],
36
+ anatomy: ['control'],
37
+ },
38
+ cases: [
39
+ {
40
+ id: 'properties-attributes',
41
+ title: 'Attributes convert to properties; boolean and enum state reflects',
42
+ kind: 'assertion',
43
+ async run(ctx) {
44
+ const host = (await ctx.mount({
45
+ attributes: { appearance: 'primary', 'full-width': '' },
46
+ content: 'Go',
47
+ }));
48
+ ctx.expect(host['appearance']).toBe('primary');
49
+ ctx.expect(host['fullWidth']).toBe(true);
50
+ host['disabled'] = true;
51
+ host['size'] = 'lg';
52
+ await ctx.adapter.settle(host);
53
+ ctx.expect(host.hasAttribute('disabled')).toBe(true);
54
+ ctx.expect(host.getAttribute('size')).toBe('lg');
55
+ },
56
+ },
57
+ {
58
+ id: 'native-control',
59
+ title: 'The control is a native button and the default slot names it',
60
+ kind: 'assertion',
61
+ async run(ctx) {
62
+ const host = await ctx.mount({ content: 'Save' });
63
+ const part = control(ctx, host);
64
+ ctx.expect(part.localName).toBe('button');
65
+ ctx.expect(part.type).toBe('button');
66
+ },
67
+ },
68
+ {
69
+ id: 'keyboard-activation',
70
+ title: 'Click, Enter, and Space each dispatch one click at the host',
71
+ kind: 'assertion',
72
+ async run(ctx) {
73
+ const host = await ctx.mount({ content: 'Save' });
74
+ const clicks = countClicks(host);
75
+ await ctx.user.click(host);
76
+ host.focus();
77
+ await ctx.user.keyboard('{Enter}');
78
+ await ctx.user.keyboard(' ');
79
+ ctx.expect(clicks.count).toBe(3);
80
+ },
81
+ },
82
+ {
83
+ id: 'focus',
84
+ title: 'Focusing the host focuses the control',
85
+ kind: 'assertion',
86
+ async run(ctx) {
87
+ const host = await ctx.mount({ content: 'Save' });
88
+ host.focus();
89
+ const active = host.shadowRoot?.activeElement ?? document.activeElement;
90
+ ctx.expect(active).toBe(control(ctx, host));
91
+ },
92
+ },
93
+ {
94
+ id: 'disabled',
95
+ title: 'Disabled ignores activation and is not focusable',
96
+ kind: 'assertion',
97
+ async run(ctx) {
98
+ const host = await ctx.mount({ attributes: { disabled: '' }, content: 'Save' });
99
+ const clicks = countClicks(host);
100
+ host.click();
101
+ control(ctx, host).click();
102
+ host.focus();
103
+ ctx.expect(clicks.count).toBe(0);
104
+ ctx.expect(host.shadowRoot?.activeElement ?? null).toBe(null);
105
+ },
106
+ },
107
+ {
108
+ id: 'loading',
109
+ title: 'Loading ignores activation but stays focusable and exposes aria-disabled',
110
+ kind: 'assertion',
111
+ async run(ctx) {
112
+ const host = await ctx.mount({ attributes: { loading: '' }, content: 'Save' });
113
+ const clicks = countClicks(host);
114
+ host.focus();
115
+ await ctx.user.keyboard('{Enter}');
116
+ host.click();
117
+ ctx.expect(clicks.count).toBe(0);
118
+ ctx.expect(host.shadowRoot?.activeElement).toBe(control(ctx, host));
119
+ ctx.expect(control(ctx, host).getAttribute('aria-disabled')).toBe('true');
120
+ },
121
+ },
122
+ {
123
+ id: 'form-submission',
124
+ title: 'type="submit" submits its form once, including name and value',
125
+ kind: 'assertion',
126
+ async run(ctx) {
127
+ const host = await ctx.mount({
128
+ attributes: { type: 'submit', name: 'intent', value: 'save' },
129
+ content: 'Save',
130
+ within: '<form><input name="q" value="a">{{element}}</form>',
131
+ });
132
+ const form = host.closest('form');
133
+ const submitted = [];
134
+ form.addEventListener('submit', (event) => {
135
+ event.preventDefault();
136
+ submitted.push([...new FormData(form, event.submitter)]);
137
+ });
138
+ await ctx.user.click(host);
139
+ await ctx.nextTask();
140
+ ctx.expect(submitted).toEqual([
141
+ [
142
+ ['q', 'a'],
143
+ ['intent', 'save'],
144
+ ],
145
+ ]);
146
+ },
147
+ },
148
+ {
149
+ id: 'cancelled-click',
150
+ title: 'A cancelled click does not submit',
151
+ kind: 'assertion',
152
+ async run(ctx) {
153
+ const host = await ctx.mount({
154
+ attributes: { type: 'submit' },
155
+ content: 'Save',
156
+ within: '<form>{{element}}</form>',
157
+ });
158
+ let submits = 0;
159
+ host.closest('form').addEventListener('submit', (event) => {
160
+ event.preventDefault();
161
+ submits++;
162
+ });
163
+ host.addEventListener('click', (event) => event.preventDefault());
164
+ await ctx.user.click(host);
165
+ await ctx.nextTask();
166
+ ctx.expect(submits).toBe(0);
167
+ },
168
+ },
169
+ {
170
+ id: 'reconnect',
171
+ title: 'Reconnecting neither leaks owned work nor duplicates activation',
172
+ kind: 'invariant',
173
+ change: 'reconnect',
174
+ async run(ctx) {
175
+ const host = await ctx.mount({
176
+ attributes: { type: 'submit' },
177
+ content: 'Save',
178
+ within: '<form>{{element}}</form>',
179
+ });
180
+ const form = host.closest('form');
181
+ const parent = host.parentNode;
182
+ const before = ctx.ownedWork();
183
+ for (let i = 0; i < 5; i++) {
184
+ host.remove();
185
+ parent.append(host);
186
+ await ctx.adapter.settle(host);
187
+ }
188
+ ctx.expect(ctx.ownedWork()).toEqual(before);
189
+ let submits = 0;
190
+ form.addEventListener('submit', (event) => {
191
+ event.preventDefault();
192
+ submits++;
193
+ });
194
+ await ctx.user.click(host);
195
+ await ctx.nextTask();
196
+ ctx.expect(submits).toBe(1);
197
+ },
198
+ },
199
+ {
200
+ id: 'programmatic-updates',
201
+ title: 'Programmatic property changes dispatch no user-intent events',
202
+ kind: 'invariant',
203
+ change: 'programmatic',
204
+ async run(ctx) {
205
+ const host = (await ctx.mount({ content: 'Save' }));
206
+ const events = [];
207
+ for (const type of ['click', 'input', 'change'])
208
+ host.addEventListener(type, () => events.push(type));
209
+ host['appearance'] = 'ghost';
210
+ host['value'] = 'x';
211
+ host['loading'] = true;
212
+ host['disabled'] = true;
213
+ await ctx.adapter.settle(host);
214
+ ctx.expect(events).toEqual([]);
215
+ },
216
+ },
217
+ {
218
+ id: 'theme-value',
219
+ title: 'A theme-value change keeps the control node and applies',
220
+ kind: 'invariant',
221
+ change: 'theme-value',
222
+ async run(ctx) {
223
+ const host = await ctx.mount({ content: 'Save' });
224
+ const before = control(ctx, host);
225
+ host.parentElement.style.setProperty('--odd-button-radius', '0px');
226
+ await ctx.adapter.settle(host);
227
+ ctx.expect(control(ctx, host)).toBe(before);
228
+ ctx.expect(getComputedStyle(before).borderTopLeftRadius).toBe('0px');
229
+ },
230
+ },
231
+ ],
232
+ });
233
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/conformance/button.ts"],"names":[],"mappings":"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"}