From 34f8087fe805a5c680e9f58b5c5d74489949775e Mon Sep 17 00:00:00 2001 From: dev Date: Fri, 12 Jun 2026 22:16:48 +0200 Subject: [PATCH] fix(eidos): QrCode size tokens use literal var names (recipe contract) Size was applied via `var(--qr-code-size-${resolvedSize})` (interpolated), so the literal token names never appeared in source and the recipe-css-contract test flagged --qr-code-size-{xs..xl} as orphaned. Use an explicit literal map so each name appears verbatim; behaviour unchanged. Co-Authored-By: Claude Opus 4.8 --- src/uix/eidos/components/qr-code/qr-code.svelte | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/uix/eidos/components/qr-code/qr-code.svelte b/src/uix/eidos/components/qr-code/qr-code.svelte index 306631be0..3adb9a5fc 100644 --- a/src/uix/eidos/components/qr-code/qr-code.svelte +++ b/src/uix/eidos/components/qr-code/qr-code.svelte @@ -28,8 +28,17 @@ const eidos = ActiveEidos.require(); const resolvedSize = $derived(eidos.resolve(size, 'md')); + // Literal map (not interpolated) so each --qr-code-size-* token name appears + // verbatim in the source — the recipe contract scans for exact token names. + const SIZE_VARS = { + xs: 'var(--qr-code-size-xs)', + sm: 'var(--qr-code-size-sm)', + md: 'var(--qr-code-size-md)', + lg: 'var(--qr-code-size-lg)', + xl: 'var(--qr-code-size-xl)' + } as const; const px = $derived( - typeof resolvedSize === 'number' ? `${resolvedSize}px` : `var(--qr-code-size-${resolvedSize})` + typeof resolvedSize === 'number' ? `${resolvedSize}px` : SIZE_VARS[resolvedSize] ); // A logo needs max redundancy + a cleared centre to stay scannable.