@hymarkx/compiler 0.0.2

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 (88) hide show
  1. package/LICENSE-APACHE +202 -0
  2. package/LICENSE-MIT +21 -0
  3. package/README.md +23 -0
  4. package/dist/analyze/index.d.ts +75 -0
  5. package/dist/analyze/index.d.ts.map +1 -0
  6. package/dist/analyze/index.js +455 -0
  7. package/dist/analyze/index.js.map +1 -0
  8. package/dist/components/authored.d.ts +30 -0
  9. package/dist/components/authored.d.ts.map +1 -0
  10. package/dist/components/authored.js +293 -0
  11. package/dist/components/authored.js.map +1 -0
  12. package/dist/components/builtins.d.ts +6 -0
  13. package/dist/components/builtins.d.ts.map +1 -0
  14. package/dist/components/builtins.js +205 -0
  15. package/dist/components/builtins.js.map +1 -0
  16. package/dist/components/styles.d.ts +3 -0
  17. package/dist/components/styles.d.ts.map +1 -0
  18. package/dist/components/styles.js +99 -0
  19. package/dist/components/styles.js.map +1 -0
  20. package/dist/components/types.d.ts +77 -0
  21. package/dist/components/types.d.ts.map +1 -0
  22. package/dist/components/types.js +2 -0
  23. package/dist/components/types.js.map +1 -0
  24. package/dist/components/validate.d.ts +14 -0
  25. package/dist/components/validate.d.ts.map +1 -0
  26. package/dist/components/validate.js +347 -0
  27. package/dist/components/validate.js.map +1 -0
  28. package/dist/diagnostic-origin.d.ts +11 -0
  29. package/dist/diagnostic-origin.d.ts.map +1 -0
  30. package/dist/diagnostic-origin.js +12 -0
  31. package/dist/diagnostic-origin.js.map +1 -0
  32. package/dist/diagnostics/render.d.ts +13 -0
  33. package/dist/diagnostics/render.d.ts.map +1 -0
  34. package/dist/diagnostics/render.js +92 -0
  35. package/dist/diagnostics/render.js.map +1 -0
  36. package/dist/emit/backend.d.ts +13 -0
  37. package/dist/emit/backend.d.ts.map +1 -0
  38. package/dist/emit/backend.js +2 -0
  39. package/dist/emit/backend.js.map +1 -0
  40. package/dist/emit/escape.d.ts +5 -0
  41. package/dist/emit/escape.d.ts.map +1 -0
  42. package/dist/emit/escape.js +52 -0
  43. package/dist/emit/escape.js.map +1 -0
  44. package/dist/emit/html.d.ts +16 -0
  45. package/dist/emit/html.d.ts.map +1 -0
  46. package/dist/emit/html.js +528 -0
  47. package/dist/emit/html.js.map +1 -0
  48. package/dist/emit/sanitize.d.ts +19 -0
  49. package/dist/emit/sanitize.d.ts.map +1 -0
  50. package/dist/emit/sanitize.js +383 -0
  51. package/dist/emit/sanitize.js.map +1 -0
  52. package/dist/events.d.ts +7 -0
  53. package/dist/events.d.ts.map +1 -0
  54. package/dist/events.js +16 -0
  55. package/dist/events.js.map +1 -0
  56. package/dist/expression.d.ts +133 -0
  57. package/dist/expression.d.ts.map +1 -0
  58. package/dist/expression.js +1248 -0
  59. package/dist/expression.js.map +1 -0
  60. package/dist/frontmatter.d.ts +15 -0
  61. package/dist/frontmatter.d.ts.map +1 -0
  62. package/dist/frontmatter.js +196 -0
  63. package/dist/frontmatter.js.map +1 -0
  64. package/dist/index.d.ts +18 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +92 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/islands.d.ts +23 -0
  69. package/dist/islands.d.ts.map +1 -0
  70. package/dist/islands.js +76 -0
  71. package/dist/islands.js.map +1 -0
  72. package/dist/runtime.d.ts +14 -0
  73. package/dist/runtime.d.ts.map +1 -0
  74. package/dist/runtime.js +487 -0
  75. package/dist/runtime.js.map +1 -0
  76. package/dist/styles.d.ts +33 -0
  77. package/dist/styles.d.ts.map +1 -0
  78. package/dist/styles.js +370 -0
  79. package/dist/styles.js.map +1 -0
  80. package/dist/suggestions.d.ts +3 -0
  81. package/dist/suggestions.d.ts.map +1 -0
  82. package/dist/suggestions.js +29 -0
  83. package/dist/suggestions.js.map +1 -0
  84. package/dist/types.d.ts +59 -0
  85. package/dist/types.d.ts.map +1 -0
  86. package/dist/types.js +2 -0
  87. package/dist/types.js.map +1 -0
  88. package/package.json +39 -0
@@ -0,0 +1,293 @@
1
+ import { createDiagnostic, visit } from '@hymarkx/ast';
2
+ import { parse } from '@hymarkx/parser';
3
+ import { setDiagnosticOrigin } from '../diagnostic-origin.js';
4
+ import { compileFrontmatter } from '../frontmatter.js';
5
+ import { componentHtmlDiagnostics, isAllowedDocumentUrl } from '../emit/sanitize.js';
6
+ import { builtinComponents } from './builtins.js';
7
+ const ATTRIBUTE_TYPES = new Set([
8
+ 'string',
9
+ 'number',
10
+ 'boolean',
11
+ 'enum',
12
+ 'url',
13
+ 'identifier',
14
+ ]);
15
+ const SCHEMA_KEYS = new Set(['type', 'values', 'required', 'default', 'min', 'max', 'description']);
16
+ const IDENTIFIER = /^[A-Za-z][A-Za-z0-9_-]*$/;
17
+ const authoredRenderers = new WeakMap();
18
+ function isMapping(value) {
19
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
20
+ }
21
+ function componentPath(component) {
22
+ return component.from ?? `${component.name}.hmx`;
23
+ }
24
+ function componentDiagnostic(component, span, code, severity, message) {
25
+ const diagnostic = createDiagnostic({ code, severity, message, span });
26
+ setDiagnosticOrigin(diagnostic, component.source, component.from);
27
+ return diagnostic;
28
+ }
29
+ function authoredDescription(component, propName) {
30
+ return `Property "${propName}" accepted by authored component "${component.name}".`;
31
+ }
32
+ function scalarDefault(value) {
33
+ return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'
34
+ ? String(value)
35
+ : undefined;
36
+ }
37
+ function validDefault(value, schema, trust) {
38
+ switch (schema.type) {
39
+ case 'string':
40
+ return true;
41
+ case 'number': {
42
+ const parsed = Number(value);
43
+ return (Number.isFinite(parsed) &&
44
+ Number.isInteger(parsed) &&
45
+ (schema.min === undefined || parsed >= schema.min) &&
46
+ (schema.max === undefined || parsed <= schema.max));
47
+ }
48
+ case 'boolean':
49
+ return value === 'true' || value === 'false';
50
+ case 'enum':
51
+ return schema.values?.includes(value) === true;
52
+ case 'identifier':
53
+ return IDENTIFIER.test(value);
54
+ case 'url':
55
+ return trust === 'app' || isAllowedDocumentUrl(value);
56
+ }
57
+ }
58
+ function propSchema(component, propName, value, span, trust, diagnostics) {
59
+ if (!isMapping(value)) {
60
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: schema for "${propName}" must be a mapping.`));
61
+ return undefined;
62
+ }
63
+ let malformed = false;
64
+ for (const key of Object.keys(value)) {
65
+ if (!SCHEMA_KEYS.has(key)) {
66
+ malformed = true;
67
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: unknown schema key "${key}" on "${propName}".`));
68
+ }
69
+ }
70
+ const typeValue = value.type;
71
+ if (typeof typeValue !== 'string' || !ATTRIBUTE_TYPES.has(typeValue)) {
72
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: "${propName}" has an invalid type.`));
73
+ return undefined;
74
+ }
75
+ const type = typeValue;
76
+ let values;
77
+ if (value.values !== undefined) {
78
+ if (!Array.isArray(value.values) || !value.values.every((item) => typeof item === 'string')) {
79
+ malformed = true;
80
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: "values" on "${propName}" must contain only strings.`));
81
+ }
82
+ else {
83
+ values = value.values;
84
+ }
85
+ }
86
+ if (type === 'enum' && (values === undefined || values.length === 0)) {
87
+ malformed = true;
88
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: enum prop "${propName}" requires values.`));
89
+ }
90
+ else if (type !== 'enum' && values !== undefined) {
91
+ malformed = true;
92
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: "values" is only valid for enum props.`));
93
+ }
94
+ const required = value.required;
95
+ if (required !== undefined && typeof required !== 'boolean') {
96
+ malformed = true;
97
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: "required" on "${propName}" must be boolean.`));
98
+ }
99
+ const min = value.min;
100
+ const max = value.max;
101
+ if ((min !== undefined && (typeof min !== 'number' || !Number.isFinite(min))) ||
102
+ (max !== undefined && (typeof max !== 'number' || !Number.isFinite(max))) ||
103
+ ((min !== undefined || max !== undefined) && type !== 'number') ||
104
+ (typeof min === 'number' && typeof max === 'number' && min > max)) {
105
+ malformed = true;
106
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: numeric bounds on "${propName}" are invalid.`));
107
+ }
108
+ const description = value.description;
109
+ if (description !== undefined && typeof description !== 'string') {
110
+ malformed = true;
111
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: "description" on "${propName}" must be a string.`));
112
+ }
113
+ const schemaWithoutDefault = {
114
+ type,
115
+ ...(values === undefined ? {} : { values }),
116
+ ...(typeof required === 'boolean' ? { required } : {}),
117
+ ...(typeof min === 'number' && type === 'number' ? { min } : {}),
118
+ ...(typeof max === 'number' && type === 'number' ? { max } : {}),
119
+ description: typeof description === 'string' ? description : authoredDescription(component, propName),
120
+ };
121
+ const defaultValue = value.default === undefined ? undefined : scalarDefault(value.default);
122
+ if (value.default !== undefined &&
123
+ (defaultValue === undefined || !validDefault(defaultValue, schemaWithoutDefault, trust))) {
124
+ malformed = true;
125
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: default for "${propName}" does not satisfy its schema.`));
126
+ }
127
+ return malformed
128
+ ? undefined
129
+ : {
130
+ ...schemaWithoutDefault,
131
+ ...(defaultValue === undefined ? {} : { default: defaultValue }),
132
+ };
133
+ }
134
+ function propsFromFrontmatter(component, value, span, trust, diagnostics) {
135
+ const props = value?.props;
136
+ if (props === undefined) {
137
+ return {};
138
+ }
139
+ if (!isMapping(props)) {
140
+ diagnostics.push(componentDiagnostic(component, span, 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: "props" must be a mapping.`));
141
+ return {};
142
+ }
143
+ const attributes = Object.create(null);
144
+ for (const [name, schemaValue] of Object.entries(props)) {
145
+ const schema = propSchema(component, name, schemaValue, span, trust, diagnostics);
146
+ if (schema !== undefined) {
147
+ attributes[name] = schema;
148
+ }
149
+ }
150
+ return attributes;
151
+ }
152
+ function childrenMarkers(root) {
153
+ const markers = [];
154
+ visit(root, (node) => {
155
+ if (node.type === 'leafDirective' && node.name === 'children') {
156
+ markers.push(node);
157
+ }
158
+ });
159
+ return markers;
160
+ }
161
+ function componentRawHtmlDiagnostics(root, component, source) {
162
+ const diagnostics = [];
163
+ visit(root, (node) => {
164
+ if (node.type !== 'html') {
165
+ return;
166
+ }
167
+ const styleOpening = /^<style[ \t]+scoped[ \t]*>/i.exec(node.value);
168
+ const styleClosing = node.value.toLowerCase().lastIndexOf('</style>');
169
+ if (styleOpening !== null &&
170
+ styleClosing >= styleOpening[0].length &&
171
+ node.value.slice(styleClosing + 8).trim() === '') {
172
+ if (/<\s*script\b/i.test(node.value.slice(styleOpening[0].length, styleClosing))) {
173
+ const diagnostic = createDiagnostic({
174
+ code: 'HMX3001',
175
+ severity: 'error',
176
+ message: 'Authored component styles cannot contain script markup.',
177
+ span: node.position,
178
+ });
179
+ setDiagnosticOrigin(diagnostic, source, component.from);
180
+ diagnostics.push(diagnostic);
181
+ }
182
+ return;
183
+ }
184
+ for (const diagnostic of componentHtmlDiagnostics(node.value, node.position)) {
185
+ setDiagnosticOrigin(diagnostic, source, component.from);
186
+ diagnostics.push(diagnostic);
187
+ }
188
+ });
189
+ return diagnostics;
190
+ }
191
+ function frontmatterNode(root) {
192
+ const node = root.children[0];
193
+ return node?.type === 'yaml' ? node : undefined;
194
+ }
195
+ function pointAt(source, offset) {
196
+ let line = 1;
197
+ let lineStart = 0;
198
+ for (let index = 0; index < offset; index += 1) {
199
+ if (source.charCodeAt(index) === 10) {
200
+ line += 1;
201
+ lineStart = index + 1;
202
+ }
203
+ }
204
+ return { line, column: offset - lineStart + 1, offset };
205
+ }
206
+ function frontmatterValueSpan(node, source) {
207
+ const openingLineEnd = source.indexOf('\n', node.position.start.offset);
208
+ const start = openingLineEnd === -1 ? node.position.start.offset : openingLineEnd + 1;
209
+ const end = Math.min(start + node.value.length, source.length);
210
+ return { start: pointAt(source, start), end: pointAt(source, end) };
211
+ }
212
+ function parsedComponent(component, options, diagnostics) {
213
+ const parseOptions = {
214
+ ...(component.from === undefined ? {} : { from: component.from }),
215
+ ...(options.gfm === undefined ? {} : { gfm: options.gfm }),
216
+ };
217
+ let parsed = parse(component.source, parseOptions);
218
+ for (const diagnostic of parsed.diagnostics) {
219
+ setDiagnosticOrigin(diagnostic, parsed.source, component.from);
220
+ }
221
+ diagnostics.push(...parsed.diagnostics);
222
+ const frontmatter = compileFrontmatter(parsed.root, parsed.source);
223
+ const yaml = frontmatterNode(parsed.root);
224
+ let value = frontmatter.value;
225
+ if (!frontmatter.recognized && yaml !== undefined && yaml.value.trim() !== '') {
226
+ diagnostics.push(componentDiagnostic({ ...component, source: parsed.source }, frontmatterValueSpan(yaml, parsed.source), 'HMX2051', 'error', `Malformed props in ${componentPath(component)}: component frontmatter must be a mapping.`));
227
+ value = undefined;
228
+ }
229
+ else if (!frontmatter.recognized) {
230
+ parsed = parse(component.source, { ...parseOptions, frontmatter: false });
231
+ for (const diagnostic of parsed.diagnostics) {
232
+ setDiagnosticOrigin(diagnostic, parsed.source, component.from);
233
+ }
234
+ diagnostics.push(...parsed.diagnostics);
235
+ }
236
+ else {
237
+ for (const diagnostic of frontmatter.diagnostics) {
238
+ setDiagnosticOrigin(diagnostic, parsed.source, component.from);
239
+ diagnostics.push(diagnostic);
240
+ }
241
+ }
242
+ const span = yaml === undefined ? parsed.root.position : frontmatterValueSpan(yaml, parsed.source);
243
+ const normalizedComponent = { ...component, source: parsed.source };
244
+ const attributes = propsFromFrontmatter(normalizedComponent, value, span, options.trust, diagnostics);
245
+ const markers = childrenMarkers(parsed.root);
246
+ diagnostics.push(...componentRawHtmlDiagnostics(parsed.root, component, parsed.source));
247
+ for (const duplicate of markers.slice(1)) {
248
+ diagnostics.push(componentDiagnostic(normalizedComponent, duplicate.position, 'HMX2053', 'error', `Authored component "${component.name}" contains more than one ::children directive.`));
249
+ }
250
+ return {
251
+ definition: {
252
+ name: component.name,
253
+ source: parsed.source,
254
+ root: parsed.root,
255
+ childrenMarkers: markers,
256
+ ...(component.from === undefined ? {} : { from: component.from }),
257
+ },
258
+ attributes,
259
+ };
260
+ }
261
+ /** Returns authored template metadata for a renderer created by {@link compileComponents}. */
262
+ export function authoredComponentFor(renderer) {
263
+ return authoredRenderers.get(renderer);
264
+ }
265
+ /** Parses HMX component sources and registers their schemas and compile-time templates. */
266
+ export function compileComponents(sources, options = {}) {
267
+ const schemas = Object.create(null);
268
+ const renderers = Object.create(null);
269
+ const diagnostics = [];
270
+ for (const component of sources) {
271
+ const parsed = parsedComponent(component, options, diagnostics);
272
+ if (Object.hasOwn(schemas, component.name)) {
273
+ diagnostics.push(componentDiagnostic({ ...component, source: parsed.definition.source }, parsed.definition.root.position, 'HMX2057', 'error', `Authored component "${component.name}" is registered more than once.`));
274
+ continue;
275
+ }
276
+ if (Object.hasOwn(builtinComponents.schemas, component.name)) {
277
+ diagnostics.push(componentDiagnostic({ ...component, source: parsed.definition.source }, parsed.definition.root.position, 'HMX2050', 'warning', `Authored component "${component.name}" shadows built-in component "${component.name}".`));
278
+ }
279
+ const renderer = () => ({ wrappers: [] });
280
+ authoredRenderers.set(renderer, parsed.definition);
281
+ schemas[component.name] = {
282
+ name: component.name,
283
+ kinds: ['container'],
284
+ attributes: parsed.attributes,
285
+ children: 'block',
286
+ label: 'forbidden',
287
+ description: `HMX-authored component "${component.name}".`,
288
+ };
289
+ renderers[component.name] = renderer;
290
+ }
291
+ return { registry: { schemas, renderers }, diagnostics };
292
+ }
293
+ //# sourceMappingURL=authored.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authored.js","sourceRoot":"","sources":["../../src/components/authored.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ComponentRegistry } from './types.js';
2
+ /** The built-in component schemas and their separate trusted renderers. */
3
+ export declare const builtinComponents: ComponentRegistry;
4
+ /** Merges caller components over the built-ins in each name-keyed lookup. */
5
+ export declare function mergeComponentRegistries(components: ComponentRegistry | undefined): ComponentRegistry;
6
+ //# sourceMappingURL=builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/components/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,YAAY,CAAA;AAiOnB,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,EAAE,iBAA0C,CAAA;AAE1E,6EAA6E;AAC7E,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,iBAAiB,GAAG,SAAS,GACxC,iBAAiB,CAQnB"}
@@ -0,0 +1,205 @@
1
+ const statusValues = ['info', 'warning', 'danger', 'success'];
2
+ const schemas = {
3
+ note: {
4
+ name: 'note',
5
+ kinds: ['container'],
6
+ attributes: {
7
+ type: {
8
+ type: 'enum',
9
+ values: statusValues,
10
+ default: 'info',
11
+ description: 'Visual status of the note.',
12
+ },
13
+ },
14
+ children: 'block',
15
+ label: 'optional',
16
+ description: 'A callout containing related information.',
17
+ },
18
+ card: {
19
+ name: 'card',
20
+ kinds: ['container'],
21
+ attributes: {},
22
+ children: 'block',
23
+ label: 'optional',
24
+ description: 'A grouped card of content.',
25
+ },
26
+ grid: {
27
+ name: 'grid',
28
+ kinds: ['container'],
29
+ attributes: {
30
+ columns: {
31
+ type: 'number',
32
+ default: '3',
33
+ min: 1,
34
+ max: 12,
35
+ description: 'Integer number of grid columns from 1 through 12.',
36
+ },
37
+ gap: {
38
+ type: 'number',
39
+ default: '4',
40
+ min: 0,
41
+ max: 16,
42
+ description: 'Integer grid gap from 0 through 16.',
43
+ },
44
+ },
45
+ children: 'block',
46
+ label: 'optional',
47
+ description: 'A grid layout for block content.',
48
+ },
49
+ metric: {
50
+ name: 'metric',
51
+ kinds: ['container'],
52
+ attributes: {},
53
+ children: 'block',
54
+ label: 'optional',
55
+ description: 'A labelled metric or key figure.',
56
+ },
57
+ badge: {
58
+ name: 'badge',
59
+ kinds: ['text'],
60
+ attributes: {
61
+ kind: {
62
+ type: 'enum',
63
+ values: statusValues,
64
+ default: 'info',
65
+ description: 'Visual status of the badge.',
66
+ },
67
+ },
68
+ children: 'phrasing',
69
+ label: 'optional',
70
+ description: 'An inline status badge.',
71
+ },
72
+ button: {
73
+ name: 'button',
74
+ kinds: ['container'],
75
+ attributes: {
76
+ type: {
77
+ type: 'enum',
78
+ values: ['button', 'submit', 'reset'],
79
+ default: 'button',
80
+ description: 'Native button behavior.',
81
+ },
82
+ },
83
+ children: 'block',
84
+ label: 'optional',
85
+ description: 'A native button used by event handlers.',
86
+ },
87
+ input: {
88
+ name: 'input',
89
+ kinds: ['leaf', 'container'],
90
+ attributes: {
91
+ type: {
92
+ type: 'enum',
93
+ values: ['text'],
94
+ default: 'text',
95
+ description: 'Native text-input type.',
96
+ },
97
+ value: {
98
+ type: 'string',
99
+ default: '',
100
+ description: 'Initial text-input value.',
101
+ },
102
+ name: {
103
+ type: 'string',
104
+ description: 'Native form field name.',
105
+ },
106
+ },
107
+ children: 'none',
108
+ label: 'forbidden',
109
+ description: 'A native text input used by input and change handlers.',
110
+ },
111
+ form: {
112
+ name: 'form',
113
+ kinds: ['container'],
114
+ attributes: {},
115
+ children: 'block',
116
+ label: 'forbidden',
117
+ description: 'A native form used by submit handlers.',
118
+ },
119
+ };
120
+ function classPlan(tag, className, labelTag, labelClass, attributeBindings) {
121
+ return {
122
+ wrappers: [{ tag, attributes: { class: className } }],
123
+ ...(labelTag === undefined || labelClass === undefined
124
+ ? {}
125
+ : { labelWrapper: { tag: labelTag, attributes: { class: labelClass } } }),
126
+ ...(attributeBindings === undefined ? {} : { attributeBindings }),
127
+ };
128
+ }
129
+ function classBinding(prefix, attributes, variant) {
130
+ const segments = [prefix];
131
+ if (variant !== undefined)
132
+ segments.push({ attribute: variant });
133
+ if (typeof attributes.class === 'string') {
134
+ segments.push(' ', { attribute: 'class' });
135
+ }
136
+ return { name: 'class', segments };
137
+ }
138
+ const renderers = {
139
+ note: (_node, attributes) => classPlan('aside', typeof attributes.type === 'string' ? `hmx-note hmx-note-${attributes.type}` : 'hmx-note', 'p', 'hmx-note-title', [classBinding('hmx-note hmx-note-', attributes, 'type')]),
140
+ card: (_node, attributes) => classPlan('article', 'hmx-card', 'h3', 'hmx-card-title', [
141
+ classBinding('hmx-card', attributes),
142
+ ]),
143
+ grid: (_node, attributes) => {
144
+ const numericStyle = typeof attributes.columns === 'number' && typeof attributes.gap === 'number'
145
+ ? { style: `--hmx-grid-columns:${attributes.columns};--hmx-grid-gap:${attributes.gap}` }
146
+ : {};
147
+ return {
148
+ wrappers: [{ tag: 'div', attributes: { class: 'hmx-grid', ...numericStyle } }],
149
+ attributeBindings: [
150
+ classBinding('hmx-grid', attributes),
151
+ {
152
+ name: 'style',
153
+ segments: [
154
+ '--hmx-grid-columns:',
155
+ { attribute: 'columns' },
156
+ ';--hmx-grid-gap:',
157
+ { attribute: 'gap' },
158
+ ],
159
+ },
160
+ ],
161
+ };
162
+ },
163
+ metric: (_node, attributes) => classPlan('div', 'hmx-metric', 'p', 'hmx-metric-label', [
164
+ classBinding('hmx-metric', attributes),
165
+ ]),
166
+ badge: (_node, attributes) => classPlan('span', typeof attributes.kind === 'string' ? `hmx-badge hmx-badge-${attributes.kind}` : 'hmx-badge', undefined, undefined, [classBinding('hmx-badge hmx-badge-', attributes, 'kind')]),
167
+ button: (_node, attributes) => ({
168
+ wrappers: [
169
+ {
170
+ tag: 'button',
171
+ attributes: {
172
+ type: typeof attributes.type === 'string' ? attributes.type : 'button',
173
+ },
174
+ },
175
+ ],
176
+ flattenSingleParagraph: true,
177
+ }),
178
+ input: (_node, attributes) => ({
179
+ wrappers: [
180
+ {
181
+ tag: 'input',
182
+ attributes: {
183
+ type: typeof attributes.type === 'string' ? attributes.type : 'text',
184
+ value: typeof attributes.value === 'string' ? attributes.value : '',
185
+ ...(typeof attributes.name === 'string' ? { name: attributes.name } : {}),
186
+ },
187
+ void: true,
188
+ },
189
+ ],
190
+ }),
191
+ form: () => ({ wrappers: [{ tag: 'form', attributes: {} }] }),
192
+ };
193
+ /** The built-in component schemas and their separate trusted renderers. */
194
+ export const builtinComponents = { schemas, renderers };
195
+ /** Merges caller components over the built-ins in each name-keyed lookup. */
196
+ export function mergeComponentRegistries(components) {
197
+ if (components === undefined) {
198
+ return builtinComponents;
199
+ }
200
+ return {
201
+ schemas: { ...builtinComponents.schemas, ...components.schemas },
202
+ renderers: { ...builtinComponents.renderers, ...components.renderers },
203
+ };
204
+ }
205
+ //# sourceMappingURL=builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../src/components/builtins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Returns design tokens and only the built-in rules selected by a document. */
2
+ export declare function builtinStylesFor(usedComponents: ReadonlySet<string>): string;
3
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/components/styles.ts"],"names":[],"mappings":"AAgGA,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAK5E"}
@@ -0,0 +1,99 @@
1
+ const TOKENS = `:where(:root) {
2
+ --hmx-color-surface: #f8fafc;
3
+ --hmx-color-text: #172033;
4
+ --hmx-color-muted: #526176;
5
+ --hmx-color-border: #cbd5e1;
6
+ --hmx-color-info: #2563eb;
7
+ --hmx-color-warning: #b45309;
8
+ --hmx-color-danger: #dc2626;
9
+ --hmx-color-success: #15803d;
10
+ --hmx-space-sm: 0.5rem;
11
+ --hmx-space-md: 1rem;
12
+ --hmx-space-lg: 1.5rem;
13
+ --hmx-radius: 0.5rem;
14
+ --hmx-border: 0.0625rem solid var(--hmx-color-border);
15
+ }
16
+ @media (prefers-color-scheme: dark) {
17
+ :where(:root) {
18
+ --hmx-color-surface: #172033;
19
+ --hmx-color-text: #f8fafc;
20
+ --hmx-color-muted: #cbd5e1;
21
+ --hmx-color-border: #475569;
22
+ --hmx-color-info: #60a5fa;
23
+ --hmx-color-warning: #fbbf24;
24
+ --hmx-color-danger: #f87171;
25
+ --hmx-color-success: #4ade80;
26
+ }
27
+ }`;
28
+ const COMPONENT_STYLES = {
29
+ note: `:where(.hmx-note) {
30
+ --hmx-status-color: var(--hmx-color-info);
31
+ border: var(--hmx-border);
32
+ border-inline-start: 0.25rem solid var(--hmx-status-color);
33
+ border-radius: var(--hmx-radius);
34
+ padding: var(--hmx-space-md);
35
+ background: var(--hmx-color-surface);
36
+ color: var(--hmx-color-text);
37
+ }
38
+ :where(.hmx-note-warning) { --hmx-status-color: var(--hmx-color-warning); }
39
+ :where(.hmx-note-danger) { --hmx-status-color: var(--hmx-color-danger); }
40
+ :where(.hmx-note-success) { --hmx-status-color: var(--hmx-color-success); }
41
+ :where(.hmx-note-title) {
42
+ margin-block: 0 var(--hmx-space-sm);
43
+ font-weight: 650;
44
+ }`,
45
+ card: `:where(.hmx-card) {
46
+ border: var(--hmx-border);
47
+ border-radius: var(--hmx-radius);
48
+ padding: var(--hmx-space-lg);
49
+ background: var(--hmx-color-surface);
50
+ color: var(--hmx-color-text);
51
+ }
52
+ :where(.hmx-card-title) {
53
+ margin-block: 0 var(--hmx-space-md);
54
+ font-size: 1.125rem;
55
+ }`,
56
+ grid: `:where(.hmx-grid) {
57
+ display: grid;
58
+ grid-template-columns: repeat(var(--hmx-grid-columns), minmax(0, 1fr));
59
+ gap: calc(var(--hmx-grid-gap) * 0.25rem);
60
+ }
61
+ @media (max-width: 40rem) {
62
+ :where(.hmx-grid) { grid-template-columns: minmax(0, 1fr); }
63
+ }`,
64
+ metric: `:where(.hmx-metric) {
65
+ border-block-start: 0.1875rem solid var(--hmx-color-info);
66
+ border-radius: var(--hmx-radius);
67
+ padding: var(--hmx-space-md);
68
+ background: var(--hmx-color-surface);
69
+ color: var(--hmx-color-text);
70
+ font-size: 1.75rem;
71
+ font-variant-numeric: tabular-nums;
72
+ }
73
+ :where(.hmx-metric-label) {
74
+ margin-block: 0 var(--hmx-space-sm);
75
+ color: var(--hmx-color-muted);
76
+ font-size: 0.875rem;
77
+ }`,
78
+ badge: `:where(.hmx-badge) {
79
+ --hmx-status-color: var(--hmx-color-info);
80
+ display: inline-flex;
81
+ align-items: center;
82
+ border: 0.0625rem solid var(--hmx-status-color);
83
+ border-radius: 999rem;
84
+ padding: 0.125rem var(--hmx-space-sm);
85
+ color: var(--hmx-status-color);
86
+ font-size: 0.8125rem;
87
+ line-height: 1.25;
88
+ }
89
+ :where(.hmx-badge-warning) { --hmx-status-color: var(--hmx-color-warning); }
90
+ :where(.hmx-badge-danger) { --hmx-status-color: var(--hmx-color-danger); }
91
+ :where(.hmx-badge-success) { --hmx-status-color: var(--hmx-color-success); }`,
92
+ };
93
+ const COMPONENT_ORDER = ['note', 'card', 'grid', 'metric', 'badge'];
94
+ /** Returns design tokens and only the built-in rules selected by a document. */
95
+ export function builtinStylesFor(usedComponents) {
96
+ const styles = COMPONENT_ORDER.flatMap((name) => usedComponents.has(name) ? [COMPONENT_STYLES[name] ?? ''] : []);
97
+ return styles.length === 0 ? '' : [TOKENS, ...styles].join('\n');
98
+ }
99
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/components/styles.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;EA0Bb,CAAA;AAEF,MAAM,gBAAgB,GAAqC;IACzD,IAAI,EAAE;;;;;;;;;;;;;;;EAeN;IACA,IAAI,EAAE;;;;;;;;;;EAUN;IACA,IAAI,EAAE;;;;;;;EAON;IACA,MAAM,EAAE;;;;;;;;;;;;;EAaR;IACA,KAAK,EAAE;;;;;;;;;;;;;6EAaoE;CAC5E,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AAE5E,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,cAAmC;IAClE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAC9C,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAC/D,CAAA;IACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAClE,CAAC"}