feat(ui): add decorative style primitives

This commit is contained in:
vince 2026-06-18 20:07:03 +02:00
parent 975e17cd02
commit 51b97246a8
10 changed files with 476 additions and 0 deletions

View file

@ -12,6 +12,8 @@ const requiredStoryFiles = [
"DashboardFrame.stories.svelte",
"DashboardHeader.stories.svelte",
"DashboardOnePager.stories.svelte",
"CornerBracketFrame.stories.svelte",
"DiagonalStripeField.stories.svelte",
"FooterCell.stories.svelte",
"FooterStatusCell.stories.svelte",
"GridFrame.stories.svelte",
@ -24,10 +26,12 @@ const requiredStoryFiles = [
"ServiceGroupPanel.stories.svelte",
"ServicePanel.stories.svelte",
"ServiceRow.stories.svelte",
"SignalTrace.stories.svelte",
"Sparkline.stories.svelte",
"StatusBadge.stories.svelte",
"StatusStrip.stories.svelte",
"SystemState.stories.svelte",
"ScanlineField.stories.svelte",
"TelemetryCard.stories.svelte",
"TelemetryGrid.stories.svelte",
"TelemetryStrip.stories.svelte",
@ -79,6 +83,36 @@ describe("Storybook inventory", () => {
}
});
test("includes style-only decorative primitives in the reusable UI inventory", () => {
for (const component of [
"CornerBracketFrame",
"DiagonalStripeField",
"ScanlineField",
"SignalTrace",
]) {
expect(existsSync(join(componentsDir, `${component}.svelte`)), `${component} is missing`).toBe(
true,
);
expect(
existsSync(join(storiesDir, `${component}.stories.svelte`)),
`${component}.stories.svelte is missing`,
).toBe(true);
}
});
test("keeps decorative primitives hidden from assistive technology", () => {
for (const component of [
"CornerBracketFrame",
"DiagonalStripeField",
"ScanlineField",
"SignalTrace",
]) {
const source = readFileSync(join(componentsDir, `${component}.svelte`), "utf8");
expect(source).toContain('aria-hidden="true"');
}
});
test("does not add deferred form/navigation primitives", () => {
for (const component of ["Input", "ToggleGroup", "ScrollArea"]) {
expect(existsSync(join(root, `src/lib/ui/components/${component}.svelte`))).toBe(false);