@santi020k/lumen 0.3.0 → 1.0.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.
- package/README.md +28 -2
- package/dist/cli.js +35 -9
- package/dist/consumer-rollout.d.ts +2 -0
- package/dist/consumer-rollout.d.ts.map +1 -1
- package/dist/consumer-rollout.js +33 -28
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +26 -8
- package/dist/integration-diagnostics.d.ts +21 -0
- package/dist/integration-diagnostics.d.ts.map +1 -0
- package/dist/integration-diagnostics.js +180 -0
- package/dist/registry-data.d.ts +224 -2
- package/dist/registry-data.d.ts.map +1 -1
- package/dist/registry-data.js +1761 -1246
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +18 -14
- package/dist/token-audit.d.ts.map +1 -1
- package/dist/token-audit.js +64 -9
- package/package.json +6 -4
- package/styles.css +958 -42
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { readdir, readFile, stat } from 'node:fs/promises';
|
|
3
|
+
import { extname, join, relative, resolve } from 'node:path';
|
|
4
|
+
import { lumenComponentBehavior, lumenStylingContracts } from '@santi020k/lumen-core';
|
|
5
|
+
const sourceExtensions = new Set(['.astro', '.css', '.js', '.jsx', '.mjs', '.ts', '.tsx']);
|
|
6
|
+
const ignoredDirectories = new Set(['.git', '.next', '.turbo', 'coverage', 'dist', 'node_modules']);
|
|
7
|
+
const publicRootSlots = new Set(Object.values(lumenStylingContracts).flatMap(contract => [contract.rootSlot, ...contract.parts]));
|
|
8
|
+
const findSourceFiles = async (root) => {
|
|
9
|
+
const files = [];
|
|
10
|
+
const visit = async (directory) => {
|
|
11
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
12
|
+
if (ignoredDirectories.has(entry.name))
|
|
13
|
+
continue;
|
|
14
|
+
const path = join(directory, entry.name);
|
|
15
|
+
if (entry.isDirectory())
|
|
16
|
+
await visit(path);
|
|
17
|
+
else if (sourceExtensions.has(extname(entry.name)))
|
|
18
|
+
files.push(path);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
await visit(root);
|
|
22
|
+
return files;
|
|
23
|
+
};
|
|
24
|
+
const importedNames = (source, packageName) => {
|
|
25
|
+
const names = [];
|
|
26
|
+
const pattern = new RegExp(`import\\s*\\{([\\s\\S]*?)\\}\\s*from\\s*['"]${packageName}['"]`, 'g');
|
|
27
|
+
for (const match of source.matchAll(pattern)) {
|
|
28
|
+
for (const entry of (match[1] ?? '').split(',')) {
|
|
29
|
+
const name = entry.trim().split(/\s+as\s+/u)[0];
|
|
30
|
+
if (name)
|
|
31
|
+
names.push(name);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return names;
|
|
35
|
+
};
|
|
36
|
+
const finding = (file, rule, message, remediation, severity = 'error') => ({ file, message, remediation, rule, severity });
|
|
37
|
+
const getFrameworks = (joined) => [
|
|
38
|
+
joined.includes('@santi020k/lumen-astro') && 'astro',
|
|
39
|
+
joined.includes('@santi020k/lumen-elements') && 'elements',
|
|
40
|
+
joined.includes('@santi020k/lumen-react') && 'react'
|
|
41
|
+
].filter((value) => Boolean(value));
|
|
42
|
+
const collectCompatibilityFindings = (root, sources) => sources.flatMap(item => {
|
|
43
|
+
const file = relative(root, item.file);
|
|
44
|
+
const findings = [];
|
|
45
|
+
if (/surface\s*=\s*["']glass["']/u.test(item.source)) {
|
|
46
|
+
findings.push(finding(file, 'deprecated-surface-glass', 'The surface="glass" compatibility alias is deprecated.', 'Replace it with the glass prop or attribute.', 'advisory'));
|
|
47
|
+
}
|
|
48
|
+
if (item.source.includes('ui:datatable-selection-change')) {
|
|
49
|
+
findings.push(finding(file, 'deprecated-datatable-event', 'The ui:datatable-selection-change event alias is deprecated.', 'Rename it to ui:data-table-selection-change.', 'advisory'));
|
|
50
|
+
}
|
|
51
|
+
return findings;
|
|
52
|
+
});
|
|
53
|
+
const getCatalogFingerprint = (sources) => {
|
|
54
|
+
const names = [...new Set(sources.flatMap(item => [
|
|
55
|
+
...importedNames(item.source, '@santi020k/lumen-astro'),
|
|
56
|
+
...importedNames(item.source, '@santi020k/lumen-react')
|
|
57
|
+
]))]
|
|
58
|
+
.filter(name => name in lumenComponentBehavior)
|
|
59
|
+
.sort();
|
|
60
|
+
const contracts = names.map(name => [name, lumenComponentBehavior[name]]);
|
|
61
|
+
return createHash('sha256').update(JSON.stringify(contracts)).digest('hex');
|
|
62
|
+
};
|
|
63
|
+
const collectRuntimeFindings = (root, sources, runtimeComponents) => {
|
|
64
|
+
const imports = sources.flatMap(item => importedNames(item.source, '@santi020k/lumen-astro').map(name => ({ file: item.file, name })));
|
|
65
|
+
const mounts = sources.filter(item => /<UIPrimitives(?:\s|\/|>)/u.test(item.source));
|
|
66
|
+
const findings = [];
|
|
67
|
+
if (runtimeComponents.length > 0 && mounts.length === 0) {
|
|
68
|
+
findings.push(finding(imports[0] ? relative(root, imports[0].file) : 'package.json', 'astro-runtime-missing', `Interactive Astro imports require UIPrimitives: ${runtimeComponents.join(', ')}.`, 'Mount <UIPrimitives /> once in the root layout.'));
|
|
69
|
+
}
|
|
70
|
+
for (const mount of mounts.slice(1)) {
|
|
71
|
+
findings.push(finding(relative(root, mount.file), 'astro-runtime-duplicate', 'UIPrimitives is mounted more than once.', 'Keep one mount in the application root layout.'));
|
|
72
|
+
}
|
|
73
|
+
return findings;
|
|
74
|
+
};
|
|
75
|
+
const collectCssFindings = (root, sources) => sources.filter(item => item.file.endsWith('.css')).flatMap(item => {
|
|
76
|
+
const layerIndex = item.source.indexOf('/layers.css');
|
|
77
|
+
const tailwindIndex = item.source.indexOf('tailwindcss');
|
|
78
|
+
const styleIndex = item.source.indexOf('/styles.css');
|
|
79
|
+
const findings = [];
|
|
80
|
+
if (tailwindIndex >= 0 &&
|
|
81
|
+
(layerIndex < 0 || styleIndex < 0 || !(layerIndex < tailwindIndex && tailwindIndex < styleIndex))) {
|
|
82
|
+
findings.push(finding(relative(root, item.file), 'tailwind-layer-order', 'Tailwind and Lumen imports do not use the verified cascade order.', 'Import Lumen layers.css, then tailwindcss, then the matching Lumen styles.css.'));
|
|
83
|
+
}
|
|
84
|
+
for (const match of item.source.matchAll(/\.ui-([a-z0-9-]+)/g)) {
|
|
85
|
+
const selector = match[1] ?? '';
|
|
86
|
+
if (!publicRootSlots.has(selector)) {
|
|
87
|
+
findings.push(finding(relative(root, item.file), 'internal-selector', `Selector .ui-${selector} is not a documented stable root hook.`, 'Prefer component props, semantic tokens, documented custom properties, or [data-slot].', 'advisory'));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return findings;
|
|
91
|
+
});
|
|
92
|
+
const styleImportByFramework = {
|
|
93
|
+
astro: '@santi020k/lumen-astro/styles.css',
|
|
94
|
+
elements: '@santi020k/lumen-elements/styles.css',
|
|
95
|
+
react: '@santi020k/lumen-react/styles.css'
|
|
96
|
+
};
|
|
97
|
+
const collectFrameworkStyleFindings = (root, sources, frameworks) => frameworks.flatMap(framework => {
|
|
98
|
+
const references = sources.filter(item => item.source.includes(styleImportByFramework[framework]));
|
|
99
|
+
if (references.length === 0) {
|
|
100
|
+
return [finding('styles', 'framework-style-missing', `No ${styleImportByFramework[framework]} import was found.`, 'Load the matching adapter stylesheet once in the application root.')];
|
|
101
|
+
}
|
|
102
|
+
return references.slice(1).map(item => finding(relative(root, item.file), 'framework-style-duplicate', `The ${framework} stylesheet is loaded more than once.`, 'Keep one stylesheet import in the application root.'));
|
|
103
|
+
});
|
|
104
|
+
const collectAdapterMismatchFindings = (joined, frameworks) => {
|
|
105
|
+
const adapters = [...joined.matchAll(/@santi020k\/lumen-(astro|elements|react)\/styles\.css/g)]
|
|
106
|
+
.map(match => match[1])
|
|
107
|
+
.filter((adapter) => adapter === 'astro' || adapter === 'elements' || adapter === 'react');
|
|
108
|
+
return [...new Set(adapters)]
|
|
109
|
+
.filter(adapter => !frameworks.includes(adapter))
|
|
110
|
+
.map(adapter => finding('styles', 'adapter-style-mismatch', `The ${adapter} stylesheet is loaded without matching ${adapter} imports.`, 'Load the stylesheet from the adapter used by this application boundary.'));
|
|
111
|
+
};
|
|
112
|
+
export const inspectLumenIntegration = async (repository) => {
|
|
113
|
+
const root = resolve(repository);
|
|
114
|
+
if (!(await stat(root)).isDirectory())
|
|
115
|
+
throw new Error(`Not a directory: ${root}`);
|
|
116
|
+
const files = await findSourceFiles(root);
|
|
117
|
+
const sources = await Promise.all(files.map(async (file) => ({ file, source: await readFile(file, 'utf8') })));
|
|
118
|
+
const joined = sources.map(item => item.source).join('\n');
|
|
119
|
+
const frameworks = getFrameworks(joined);
|
|
120
|
+
const astroNames = sources.flatMap(item => importedNames(item.source, '@santi020k/lumen-astro'));
|
|
121
|
+
const runtimeComponents = [...new Set(astroNames.filter(name => name in lumenComponentBehavior &&
|
|
122
|
+
lumenComponentBehavior[name].astro === 'ui-primitives'))];
|
|
123
|
+
const findings = [
|
|
124
|
+
...collectCompatibilityFindings(root, sources),
|
|
125
|
+
...collectRuntimeFindings(root, sources, runtimeComponents),
|
|
126
|
+
...collectCssFindings(root, sources),
|
|
127
|
+
...collectFrameworkStyleFindings(root, sources, frameworks),
|
|
128
|
+
...collectAdapterMismatchFindings(joined, frameworks)
|
|
129
|
+
];
|
|
130
|
+
return {
|
|
131
|
+
catalogFingerprint: getCatalogFingerprint(sources),
|
|
132
|
+
findings,
|
|
133
|
+
frameworks,
|
|
134
|
+
generatedAt: new Date().toISOString(),
|
|
135
|
+
healthy: findings.every(item => item.severity !== 'error'),
|
|
136
|
+
repository: root,
|
|
137
|
+
runtimeComponents
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
export const formatLumenDiagnostics = (report) => {
|
|
141
|
+
const heading = report.healthy ? 'Lumen integration is healthy.' : 'Lumen integration has blocking findings.';
|
|
142
|
+
if (report.findings.length === 0)
|
|
143
|
+
return heading;
|
|
144
|
+
return [
|
|
145
|
+
heading,
|
|
146
|
+
...report.findings.map(item => `[${item.severity}] ${item.file} ${item.rule}: ${item.message} ${item.remediation}`)
|
|
147
|
+
].join('\n');
|
|
148
|
+
};
|
|
149
|
+
export const createLumenSetup = (framework, tailwind = false) => {
|
|
150
|
+
const setupByFramework = {
|
|
151
|
+
astro: {
|
|
152
|
+
styles: '@import "@santi020k/lumen-astro/styles.css";',
|
|
153
|
+
tailwind: '@import "@santi020k/lumen-astro/layers.css";\n' +
|
|
154
|
+
'@import "tailwindcss";\n' +
|
|
155
|
+
'@import "@santi020k/lumen-astro/styles.css";'
|
|
156
|
+
},
|
|
157
|
+
elements: {
|
|
158
|
+
styles: '@import "@santi020k/lumen-elements/styles.css";',
|
|
159
|
+
tailwind: '@import "@santi020k/lumen-elements/layers.css";\n' +
|
|
160
|
+
'@import "tailwindcss";\n' +
|
|
161
|
+
'@import "@santi020k/lumen-elements/styles.css";'
|
|
162
|
+
},
|
|
163
|
+
react: {
|
|
164
|
+
styles: '@import "@santi020k/lumen-react/styles.css";',
|
|
165
|
+
tailwind: '@import "@santi020k/lumen-react/layers.css";\n' +
|
|
166
|
+
'@import "tailwindcss";\n' +
|
|
167
|
+
'@import "@santi020k/lumen-react/styles.css";'
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
const styles = tailwind ? setupByFramework[framework].tailwind : setupByFramework[framework].styles;
|
|
171
|
+
if (framework === 'astro') {
|
|
172
|
+
return `${styles}\n\n---\nimport { UIPrimitives } from '@santi020k/lumen-astro'\n---\n\n<UIPrimitives />`;
|
|
173
|
+
}
|
|
174
|
+
if (framework === 'elements') {
|
|
175
|
+
return `${styles}\n\n` +
|
|
176
|
+
'import { defineLumenElements } from \'@santi020k/lumen-elements/define\'\n\n' +
|
|
177
|
+
'defineLumenElements()';
|
|
178
|
+
}
|
|
179
|
+
return styles;
|
|
180
|
+
};
|
package/dist/registry-data.d.ts
CHANGED
|
@@ -27,6 +27,46 @@ export declare const lumenRegistry: {
|
|
|
27
27
|
readonly name: "rich-text-editor";
|
|
28
28
|
readonly type: "recipe";
|
|
29
29
|
readonly components: readonly ["RichTextEditor", "ButtonGroup", "ToggleGroup", "Textarea"];
|
|
30
|
+
}, {
|
|
31
|
+
readonly name: "data-visualization";
|
|
32
|
+
readonly type: "recipe";
|
|
33
|
+
readonly components: readonly ["Chart", "Sparkline", "BarChart", "LineChart", "PieChart", "Stat", "Meter"];
|
|
34
|
+
}, {
|
|
35
|
+
readonly name: "analytics-dashboard";
|
|
36
|
+
readonly type: "recipe";
|
|
37
|
+
readonly components: readonly ["Sidebar", "Stat", "Sparkline", "LineChart", "BarChart", "DateRangePicker", "Table", "Badge"];
|
|
38
|
+
}, {
|
|
39
|
+
readonly name: "saas-admin";
|
|
40
|
+
readonly type: "recipe";
|
|
41
|
+
readonly components: readonly ["Sidebar", "Stat", "Sparkline", "Alert", "Progress", "SearchField", "Table", "Badge"];
|
|
42
|
+
}, {
|
|
43
|
+
readonly name: "commerce-dashboard";
|
|
44
|
+
readonly type: "recipe";
|
|
45
|
+
readonly components: readonly ["Sidebar", "Stat", "Sparkline", "BarChart", "PieChart", "Progress", "Table", "Badge"];
|
|
46
|
+
}, {
|
|
47
|
+
readonly name: "project-workspace";
|
|
48
|
+
readonly type: "recipe";
|
|
49
|
+
readonly components: readonly ["Sidebar", "Stat", "Sparkline", "Progress", "Timeline", "Avatar", "Table", "Badge"];
|
|
50
|
+
}, {
|
|
51
|
+
readonly name: "auth-onboarding";
|
|
52
|
+
readonly type: "recipe";
|
|
53
|
+
readonly components: readonly ["Card", "Stepper", "Field", "Label", "Input", "Alert", "Checkbox", "Progress", "Button"];
|
|
54
|
+
}, {
|
|
55
|
+
readonly name: "docs-shell";
|
|
56
|
+
readonly type: "recipe";
|
|
57
|
+
readonly components: readonly ["SkipLink", "NavigationMenu", "ThemeToggle", "Sidebar", "Sheet", "Prose", "Pagination", "Code", "CodeTabs"];
|
|
58
|
+
}, {
|
|
59
|
+
readonly name: "marketing-shell";
|
|
60
|
+
readonly type: "recipe";
|
|
61
|
+
readonly components: readonly ["SkipLink", "NavigationMenu", "ButtonLink", "Card", "ScrollReveal", "BackToTop"];
|
|
62
|
+
}, {
|
|
63
|
+
readonly name: "dashboard-shell";
|
|
64
|
+
readonly type: "recipe";
|
|
65
|
+
readonly components: readonly ["NavigationMenu", "Sidebar", "Card", "Stat", "StatTrend", "Badge", "SearchField", "DateRangePicker", "Empty", "Table", "Chart"];
|
|
66
|
+
}, {
|
|
67
|
+
readonly name: "validated-form";
|
|
68
|
+
readonly type: "recipe";
|
|
69
|
+
readonly components: readonly ["Form", "Field", "FieldError", "Label", "Input", "NativeSelect", "Textarea", "Button"];
|
|
30
70
|
}, {
|
|
31
71
|
readonly name: "ai-docs";
|
|
32
72
|
readonly type: "documentation";
|
|
@@ -106,6 +146,13 @@ export declare const lumenRegistry: {
|
|
|
106
146
|
readonly category: "Data display";
|
|
107
147
|
readonly files: readonly ["packages/astro/components/Badge.astro", "packages/astro/styles/lumen.css"];
|
|
108
148
|
readonly dependencies: readonly ["styles"];
|
|
149
|
+
}, {
|
|
150
|
+
readonly name: "BarChart";
|
|
151
|
+
readonly type: "component";
|
|
152
|
+
readonly description: "Compares categorical or discrete-period values with grouped and stacked bars.";
|
|
153
|
+
readonly category: "Data display";
|
|
154
|
+
readonly files: readonly ["packages/astro/components/BarChart.astro", "packages/astro/components/Chart.astro", "packages/astro/styles/lumen.css"];
|
|
155
|
+
readonly dependencies: readonly ["Chart", "styles"];
|
|
109
156
|
}, {
|
|
110
157
|
readonly name: "Breadcrumb";
|
|
111
158
|
readonly type: "component";
|
|
@@ -155,6 +202,41 @@ export declare const lumenRegistry: {
|
|
|
155
202
|
readonly category: "Layout";
|
|
156
203
|
readonly files: readonly ["packages/astro/components/Card.astro", "packages/astro/styles/lumen.css"];
|
|
157
204
|
readonly dependencies: readonly ["styles"];
|
|
205
|
+
}, {
|
|
206
|
+
readonly name: "CardContent";
|
|
207
|
+
readonly type: "component";
|
|
208
|
+
readonly description: "Provides the main content region inside a card.";
|
|
209
|
+
readonly category: "Layout";
|
|
210
|
+
readonly files: readonly ["packages/astro/components/CardContent.astro", "packages/astro/styles/lumen.css"];
|
|
211
|
+
readonly dependencies: readonly ["Card", "styles"];
|
|
212
|
+
}, {
|
|
213
|
+
readonly name: "CardDescription";
|
|
214
|
+
readonly type: "component";
|
|
215
|
+
readonly description: "Adds supporting copy to a card header.";
|
|
216
|
+
readonly category: "Layout";
|
|
217
|
+
readonly files: readonly ["packages/astro/components/CardDescription.astro", "packages/astro/styles/lumen.css"];
|
|
218
|
+
readonly dependencies: readonly ["Card", "styles"];
|
|
219
|
+
}, {
|
|
220
|
+
readonly name: "CardFooter";
|
|
221
|
+
readonly type: "component";
|
|
222
|
+
readonly description: "Groups actions at the end of a card.";
|
|
223
|
+
readonly category: "Layout";
|
|
224
|
+
readonly files: readonly ["packages/astro/components/CardFooter.astro", "packages/astro/styles/lumen.css"];
|
|
225
|
+
readonly dependencies: readonly ["Card", "styles"];
|
|
226
|
+
}, {
|
|
227
|
+
readonly name: "CardHeader";
|
|
228
|
+
readonly type: "component";
|
|
229
|
+
readonly description: "Groups introductory content at the start of a card.";
|
|
230
|
+
readonly category: "Layout";
|
|
231
|
+
readonly files: readonly ["packages/astro/components/CardHeader.astro", "packages/astro/styles/lumen.css"];
|
|
232
|
+
readonly dependencies: readonly ["Card", "styles"];
|
|
233
|
+
}, {
|
|
234
|
+
readonly name: "CardTitle";
|
|
235
|
+
readonly type: "component";
|
|
236
|
+
readonly description: "Provides a semantic card title with a stable styling hook.";
|
|
237
|
+
readonly category: "Layout";
|
|
238
|
+
readonly files: readonly ["packages/astro/components/CardTitle.astro", "packages/astro/styles/lumen.css"];
|
|
239
|
+
readonly dependencies: readonly ["Card", "styles"];
|
|
158
240
|
}, {
|
|
159
241
|
readonly name: "Carousel";
|
|
160
242
|
readonly type: "component";
|
|
@@ -176,6 +258,13 @@ export declare const lumenRegistry: {
|
|
|
176
258
|
readonly category: "Forms";
|
|
177
259
|
readonly files: readonly ["packages/astro/components/Checkbox.astro", "packages/astro/styles/lumen.css"];
|
|
178
260
|
readonly dependencies: readonly ["styles"];
|
|
261
|
+
}, {
|
|
262
|
+
readonly name: "CheckboxGroup";
|
|
263
|
+
readonly type: "component";
|
|
264
|
+
readonly description: "Groups related checkbox choices under one legend.";
|
|
265
|
+
readonly category: "Forms";
|
|
266
|
+
readonly files: readonly ["packages/astro/components/CheckboxGroup.astro", "packages/astro/styles/lumen.css"];
|
|
267
|
+
readonly dependencies: readonly ["Checkbox", "styles"];
|
|
179
268
|
}, {
|
|
180
269
|
readonly name: "Collapsible";
|
|
181
270
|
readonly type: "component";
|
|
@@ -204,6 +293,20 @@ export declare const lumenRegistry: {
|
|
|
204
293
|
readonly category: "Forms";
|
|
205
294
|
readonly files: readonly ["packages/astro/components/Combobox.astro", "packages/astro/styles/lumen.css", "packages/astro/runtime/UIPrimitives.astro"];
|
|
206
295
|
readonly dependencies: readonly ["styles", "runtime"];
|
|
296
|
+
}, {
|
|
297
|
+
readonly name: "Container";
|
|
298
|
+
readonly type: "component";
|
|
299
|
+
readonly description: "Centers page content within responsive gutters and a maximum width.";
|
|
300
|
+
readonly category: "Layout";
|
|
301
|
+
readonly files: readonly ["packages/astro/components/Container.astro", "packages/astro/styles/lumen.css"];
|
|
302
|
+
readonly dependencies: readonly ["styles"];
|
|
303
|
+
}, {
|
|
304
|
+
readonly name: "CopyButton";
|
|
305
|
+
readonly type: "component";
|
|
306
|
+
readonly description: "Copies arbitrary text or the content of another element with accessible feedback.";
|
|
307
|
+
readonly category: "Actions";
|
|
308
|
+
readonly files: readonly ["packages/astro/components/CopyButton.astro", "packages/astro/styles/lumen.css", "packages/astro/runtime/UIPrimitives.astro"];
|
|
309
|
+
readonly dependencies: readonly ["styles", "runtime"];
|
|
207
310
|
}, {
|
|
208
311
|
readonly name: "Command";
|
|
209
312
|
readonly type: "component";
|
|
@@ -281,6 +384,13 @@ export declare const lumenRegistry: {
|
|
|
281
384
|
readonly category: "Feedback";
|
|
282
385
|
readonly files: readonly ["packages/astro/components/Empty.astro", "packages/astro/styles/lumen.css"];
|
|
283
386
|
readonly dependencies: readonly ["styles"];
|
|
387
|
+
}, {
|
|
388
|
+
readonly name: "ErrorSummary";
|
|
389
|
+
readonly type: "component";
|
|
390
|
+
readonly description: "Summarizes form errors and links people back to invalid controls.";
|
|
391
|
+
readonly category: "Forms";
|
|
392
|
+
readonly files: readonly ["packages/astro/components/ErrorSummary.astro", "packages/astro/styles/lumen.css"];
|
|
393
|
+
readonly dependencies: readonly ["styles"];
|
|
284
394
|
}, {
|
|
285
395
|
readonly name: "Eyebrow";
|
|
286
396
|
readonly type: "component";
|
|
@@ -295,6 +405,13 @@ export declare const lumenRegistry: {
|
|
|
295
405
|
readonly category: "Forms";
|
|
296
406
|
readonly files: readonly ["packages/astro/components/Input.astro", "packages/astro/components/Label.astro", "packages/astro/components/Field.astro", "packages/astro/styles/lumen.css"];
|
|
297
407
|
readonly dependencies: readonly ["Input", "Label", "styles"];
|
|
408
|
+
}, {
|
|
409
|
+
readonly name: "FieldError";
|
|
410
|
+
readonly type: "component";
|
|
411
|
+
readonly description: "Displays an error connected to a form control.";
|
|
412
|
+
readonly category: "Forms";
|
|
413
|
+
readonly files: readonly ["packages/astro/components/FieldError.astro", "packages/astro/styles/lumen.css"];
|
|
414
|
+
readonly dependencies: readonly ["Field", "styles"];
|
|
298
415
|
}, {
|
|
299
416
|
readonly name: "FloatingBadge";
|
|
300
417
|
readonly type: "component";
|
|
@@ -302,6 +419,13 @@ export declare const lumenRegistry: {
|
|
|
302
419
|
readonly category: "Data display";
|
|
303
420
|
readonly files: readonly ["packages/astro/components/FloatingBadge.astro", "packages/astro/styles/lumen.css"];
|
|
304
421
|
readonly dependencies: readonly ["styles"];
|
|
422
|
+
}, {
|
|
423
|
+
readonly name: "Form";
|
|
424
|
+
readonly type: "component";
|
|
425
|
+
readonly description: "Adds consistent validation and submission state to a native form.";
|
|
426
|
+
readonly category: "Forms";
|
|
427
|
+
readonly files: readonly ["packages/astro/components/Form.astro", "packages/astro/styles/lumen.css", "packages/astro/runtime/UIPrimitives.astro"];
|
|
428
|
+
readonly dependencies: readonly ["styles", "runtime"];
|
|
305
429
|
}, {
|
|
306
430
|
readonly name: "FormattedDate";
|
|
307
431
|
readonly type: "component";
|
|
@@ -379,6 +503,20 @@ export declare const lumenRegistry: {
|
|
|
379
503
|
readonly category: "Navigation";
|
|
380
504
|
readonly files: readonly ["packages/astro/components/Link.astro", "packages/astro/styles/lumen.css"];
|
|
381
505
|
readonly dependencies: readonly ["styles"];
|
|
506
|
+
}, {
|
|
507
|
+
readonly name: "LineChart";
|
|
508
|
+
readonly type: "component";
|
|
509
|
+
readonly description: "Shows ordered trends, multiple series, missing-value gaps, areas, markers, and reference values.";
|
|
510
|
+
readonly category: "Data display";
|
|
511
|
+
readonly files: readonly ["packages/astro/components/LineChart.astro", "packages/astro/components/Chart.astro", "packages/astro/styles/lumen.css"];
|
|
512
|
+
readonly dependencies: readonly ["Chart", "styles"];
|
|
513
|
+
}, {
|
|
514
|
+
readonly name: "ListBox";
|
|
515
|
+
readonly type: "component";
|
|
516
|
+
readonly description: "Presents a visible single- or multi-select option list.";
|
|
517
|
+
readonly category: "Forms";
|
|
518
|
+
readonly files: readonly ["packages/astro/components/ListBox.astro", "packages/astro/styles/lumen.css", "packages/astro/runtime/UIPrimitives.astro"];
|
|
519
|
+
readonly dependencies: readonly ["styles", "runtime"];
|
|
382
520
|
}, {
|
|
383
521
|
readonly name: "Marker";
|
|
384
522
|
readonly type: "component";
|
|
@@ -435,6 +573,13 @@ export declare const lumenRegistry: {
|
|
|
435
573
|
readonly category: "Navigation";
|
|
436
574
|
readonly files: readonly ["packages/astro/components/Pagination.astro", "packages/astro/styles/lumen.css"];
|
|
437
575
|
readonly dependencies: readonly ["styles"];
|
|
576
|
+
}, {
|
|
577
|
+
readonly name: "PasswordField";
|
|
578
|
+
readonly type: "component";
|
|
579
|
+
readonly description: "Combines a password input with guidance, errors, and a visibility toggle.";
|
|
580
|
+
readonly category: "Forms";
|
|
581
|
+
readonly files: readonly ["packages/astro/components/PasswordField.astro", "packages/astro/styles/lumen.css", "packages/astro/runtime/UIPrimitives.astro"];
|
|
582
|
+
readonly dependencies: readonly ["Button", "Field", "FieldError", "Input", "Label", "styles", "runtime"];
|
|
438
583
|
}, {
|
|
439
584
|
readonly name: "PhoneInput";
|
|
440
585
|
readonly type: "component";
|
|
@@ -442,6 +587,13 @@ export declare const lumenRegistry: {
|
|
|
442
587
|
readonly category: "Forms";
|
|
443
588
|
readonly files: readonly ["packages/astro/components/PhoneInput.astro", "packages/astro/styles/lumen.css"];
|
|
444
589
|
readonly dependencies: readonly ["Input", "NativeSelect", "styles"];
|
|
590
|
+
}, {
|
|
591
|
+
readonly name: "PieChart";
|
|
592
|
+
readonly type: "component";
|
|
593
|
+
readonly description: "Shows part-to-whole relationships as an accessible donut or pie chart.";
|
|
594
|
+
readonly category: "Data display";
|
|
595
|
+
readonly files: readonly ["packages/astro/components/PieChart.astro", "packages/astro/components/Chart.astro", "packages/astro/styles/lumen.css"];
|
|
596
|
+
readonly dependencies: readonly ["Chart", "styles"];
|
|
445
597
|
}, {
|
|
446
598
|
readonly name: "Pill";
|
|
447
599
|
readonly type: "component";
|
|
@@ -461,8 +613,8 @@ export declare const lumenRegistry: {
|
|
|
461
613
|
readonly type: "component";
|
|
462
614
|
readonly description: "Shows completion, loading progress, or quota usage.";
|
|
463
615
|
readonly category: "Feedback";
|
|
464
|
-
readonly files: readonly ["packages/astro/components/Progress.astro", "packages/astro/styles/lumen.css"];
|
|
465
|
-
readonly dependencies: readonly ["styles"];
|
|
616
|
+
readonly files: readonly ["packages/astro/components/Progress.astro", "packages/astro/styles/lumen.css", "packages/astro/runtime/UIPrimitives.astro"];
|
|
617
|
+
readonly dependencies: readonly ["styles", "runtime"];
|
|
466
618
|
}, {
|
|
467
619
|
readonly name: "Prose";
|
|
468
620
|
readonly type: "component";
|
|
@@ -498,6 +650,13 @@ export declare const lumenRegistry: {
|
|
|
498
650
|
readonly category: "Layout";
|
|
499
651
|
readonly files: readonly ["packages/astro/components/ScrollArea.astro", "packages/astro/styles/lumen.css"];
|
|
500
652
|
readonly dependencies: readonly ["styles"];
|
|
653
|
+
}, {
|
|
654
|
+
readonly name: "ScrollProgress";
|
|
655
|
+
readonly type: "component";
|
|
656
|
+
readonly description: "Shows how far a reader has progressed through the current document.";
|
|
657
|
+
readonly category: "Feedback";
|
|
658
|
+
readonly files: readonly ["packages/astro/components/ScrollProgress.astro", "packages/astro/styles/lumen.css", "packages/astro/runtime/UIPrimitives.astro"];
|
|
659
|
+
readonly dependencies: readonly ["styles", "runtime"];
|
|
501
660
|
}, {
|
|
502
661
|
readonly name: "Schedule";
|
|
503
662
|
readonly type: "component";
|
|
@@ -568,6 +727,13 @@ export declare const lumenRegistry: {
|
|
|
568
727
|
readonly category: "Feedback";
|
|
569
728
|
readonly files: readonly ["packages/astro/components/Sonner.astro", "packages/astro/styles/lumen.css", "packages/astro/runtime/UIPrimitives.astro"];
|
|
570
729
|
readonly dependencies: readonly ["styles", "runtime"];
|
|
730
|
+
}, {
|
|
731
|
+
readonly name: "Sparkline";
|
|
732
|
+
readonly type: "component";
|
|
733
|
+
readonly description: "Shows a compact, text-labelled trend beside an existing metric.";
|
|
734
|
+
readonly category: "Data display";
|
|
735
|
+
readonly files: readonly ["packages/astro/components/Sparkline.astro", "packages/astro/styles/lumen.css"];
|
|
736
|
+
readonly dependencies: readonly ["styles"];
|
|
571
737
|
}, {
|
|
572
738
|
readonly name: "Spinner";
|
|
573
739
|
readonly type: "component";
|
|
@@ -726,6 +892,48 @@ export declare const lumenRegistry: {
|
|
|
726
892
|
readonly category: "Data display";
|
|
727
893
|
readonly description: "A stat component.";
|
|
728
894
|
readonly files: readonly ["packages/astro/components/Stat.astro", "packages/react/src/components.tsx"];
|
|
895
|
+
}, {
|
|
896
|
+
readonly name: "StatDescription";
|
|
897
|
+
readonly type: "component";
|
|
898
|
+
readonly description: "Adds supporting context to a composed statistic.";
|
|
899
|
+
readonly category: "Data display";
|
|
900
|
+
readonly files: readonly ["packages/astro/components/StatDescription.astro", "packages/astro/styles/lumen.css"];
|
|
901
|
+
readonly dependencies: readonly ["Stat", "styles"];
|
|
902
|
+
}, {
|
|
903
|
+
readonly name: "StatIcon";
|
|
904
|
+
readonly type: "component";
|
|
905
|
+
readonly description: "Provides an icon region for a composed statistic.";
|
|
906
|
+
readonly category: "Data display";
|
|
907
|
+
readonly files: readonly ["packages/astro/components/StatIcon.astro", "packages/astro/styles/lumen.css"];
|
|
908
|
+
readonly dependencies: readonly ["Stat", "styles"];
|
|
909
|
+
}, {
|
|
910
|
+
readonly name: "StatLabel";
|
|
911
|
+
readonly type: "component";
|
|
912
|
+
readonly description: "Labels a composed statistic.";
|
|
913
|
+
readonly category: "Data display";
|
|
914
|
+
readonly files: readonly ["packages/astro/components/StatLabel.astro", "packages/astro/styles/lumen.css"];
|
|
915
|
+
readonly dependencies: readonly ["Stat", "styles"];
|
|
916
|
+
}, {
|
|
917
|
+
readonly name: "StatTrend";
|
|
918
|
+
readonly type: "component";
|
|
919
|
+
readonly description: "Communicates a metric delta with a semantic tone.";
|
|
920
|
+
readonly category: "Data display";
|
|
921
|
+
readonly files: readonly ["packages/astro/components/StatTrend.astro", "packages/astro/styles/lumen.css"];
|
|
922
|
+
readonly dependencies: readonly ["Stat", "styles"];
|
|
923
|
+
}, {
|
|
924
|
+
readonly name: "StatValue";
|
|
925
|
+
readonly type: "component";
|
|
926
|
+
readonly description: "Displays the prominent value in a composed statistic.";
|
|
927
|
+
readonly category: "Data display";
|
|
928
|
+
readonly files: readonly ["packages/astro/components/StatValue.astro", "packages/astro/styles/lumen.css"];
|
|
929
|
+
readonly dependencies: readonly ["Stat", "styles"];
|
|
930
|
+
}, {
|
|
931
|
+
readonly name: "Stack";
|
|
932
|
+
readonly type: "component";
|
|
933
|
+
readonly description: "Arranges children with tokenized direction, spacing, and alignment.";
|
|
934
|
+
readonly category: "Layout";
|
|
935
|
+
readonly files: readonly ["packages/astro/components/Stack.astro", "packages/astro/styles/lumen.css"];
|
|
936
|
+
readonly dependencies: readonly ["styles"];
|
|
729
937
|
}, {
|
|
730
938
|
readonly name: "Meter";
|
|
731
939
|
readonly type: "component";
|
|
@@ -876,6 +1084,20 @@ export declare const lumenRegistry: {
|
|
|
876
1084
|
readonly category: "Navigation";
|
|
877
1085
|
readonly description: "A floating action button with expandable sub-actions.";
|
|
878
1086
|
readonly files: readonly ["packages/astro/components/SpeedDial.astro", "packages/react/src/components.tsx"];
|
|
1087
|
+
}, {
|
|
1088
|
+
readonly name: "Grid";
|
|
1089
|
+
readonly type: "component";
|
|
1090
|
+
readonly category: "Layout";
|
|
1091
|
+
readonly description: "Arranges content in fixed or responsive tokenized columns.";
|
|
1092
|
+
readonly files: readonly ["packages/astro/components/Grid.astro", "packages/astro/styles/lumen.css"];
|
|
1093
|
+
readonly dependencies: readonly ["styles"];
|
|
1094
|
+
}, {
|
|
1095
|
+
readonly name: "VisuallyHidden";
|
|
1096
|
+
readonly type: "component";
|
|
1097
|
+
readonly category: "Layout";
|
|
1098
|
+
readonly description: "Keeps meaningful content available to assistive technology without displaying it.";
|
|
1099
|
+
readonly files: readonly ["packages/astro/components/VisuallyHidden.astro", "packages/astro/styles/lumen.css"];
|
|
1100
|
+
readonly dependencies: readonly ["styles"];
|
|
879
1101
|
}];
|
|
880
1102
|
};
|
|
881
1103
|
//# sourceMappingURL=registry-data.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-data.d.ts","sourceRoot":"","sources":["../src/registry-data.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"registry-data.d.ts","sourceRoot":"","sources":["../src/registry-data.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+sEQ,CAAA"}
|