@motion-proto/live-tokens 0.86.0 → 0.87.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/CHANGELOG.md +11 -0
- package/package.json +1 -1
- package/src/editor/component-editor/VideoLightboxEditor.svelte +15 -2
- package/src/live-tokens/data/themes/autumn.json +12 -1
- package/src/live-tokens/data/themes/halloween.json +12 -1
- package/src/live-tokens/data/themes/midnight-study.json +12 -1
- package/src/live-tokens/data/themes/ocean.json +12 -1
- package/src/live-tokens/data/themes/royal-velvet.json +12 -1
- package/src/live-tokens/data/themes/sketchy.json +12 -1
- package/src/live-tokens/data/themes/spring-meadow.json +12 -1
- package/src/live-tokens/data/themes/sunset.json +12 -1
- package/src/system/components/VideoLightbox.svelte +75 -2
- package/src/testing-js/{chunk-OHU5BHGZ.js → chunk-FTLASW2R.js} +25 -3
- package/src/testing-js/{chunk-OHU5BHGZ.js.map → chunk-FTLASW2R.js.map} +1 -1
- package/src/testing-js/{chunk-Y6R7Z7VK.js → chunk-NXRFTTVL.js} +2 -2
- package/src/testing-js/component-behavior.contract.js +1 -1
- package/src/testing-js/component-editor.contract.js +1 -1
- package/src/testing-js/component-render.contract.js +1 -1
- package/src/testing-js/index.js +2 -2
- package/src/testing-js/page-compliance.contract.js +1 -1
- package/src/testing-js/vitest.js +2 -2
- /package/src/testing-js/{chunk-Y6R7Z7VK.js.map → chunk-NXRFTTVL.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../testing/contracts/index.ts","../testing/contracts/badge.ts","../testing/contracts/button.ts","../testing/contracts/callout.ts","../testing/contracts/card.ts","../testing/contracts/codesnippet.ts","../testing/contracts/collapsiblesection.ts","../testing/contracts/cornerbadge.ts","../testing/contracts/dialog.ts","../testing/contracts/iconbutton.ts","../testing/contracts/image.ts","../testing/contracts/imagelightbox.ts","../testing/contracts/inlineeditactions.ts","../testing/contracts/input.ts","../testing/contracts/menuselect.ts","../testing/contracts/notification.ts","../testing/contracts/panel.ts","../testing/contracts/progressbar.ts","../testing/contracts/radiobutton.ts","../testing/contracts/sectiondivider.ts","../testing/contracts/segmentedcontrol.ts","../testing/contracts/sidenavigation.ts","../testing/contracts/slider.ts","../testing/contracts/tabbar.ts","../testing/contracts/table.ts","../testing/contracts/toggle.ts","../testing/contracts/tooltip.ts","../testing/contracts/videolightbox.ts","../testing/contracts/videoframe.ts","../testing/contracts/slidepager.ts"],"sourcesContent":["import path from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { ComponentContract } from '../componentContract';\nimport { badgeContract } from './badge';\nimport { buttonContract } from './button';\nimport { calloutContract } from './callout';\nimport { cardContract } from './card';\nimport { codeSnippetContract } from './codesnippet';\nimport { collapsibleSectionContract } from './collapsiblesection';\nimport { cornerBadgeContract } from './cornerbadge';\nimport { dialogContract } from './dialog';\nimport { iconButtonContract } from './iconbutton';\nimport { imageContract } from './image';\nimport { imageLightboxContract } from './imagelightbox';\nimport { inlineEditActionsContract } from './inlineeditactions';\nimport { inputContract } from './input';\nimport { menuSelectContract } from './menuselect';\nimport { notificationContract } from './notification';\nimport { panelContract } from './panel';\nimport { progressBarContract } from './progressbar';\nimport { radioButtonContract } from './radiobutton';\nimport { sectionDividerContract } from './sectiondivider';\nimport { segmentedControlContract } from './segmentedcontrol';\nimport { sideNavigationContract } from './sidenavigation';\nimport { sliderContract } from './slider';\nimport { tabBarContract } from './tabbar';\nimport { tableContract } from './table';\nimport { toggleContract } from './toggle';\nimport { tooltipContract } from './tooltip';\nimport { videoLightboxContract } from './videolightbox';\nimport { videoFrameContract } from './videoframe';\nimport { slidePagerContract } from './slidepager';\n\nexport const shippedContracts: ComponentContract[] = [\n badgeContract,\n buttonContract,\n calloutContract,\n cardContract,\n codeSnippetContract,\n collapsibleSectionContract,\n cornerBadgeContract,\n dialogContract,\n iconButtonContract,\n imageContract,\n imageLightboxContract,\n inlineEditActionsContract,\n inputContract,\n menuSelectContract,\n notificationContract,\n panelContract,\n progressBarContract,\n radioButtonContract,\n sectionDividerContract,\n segmentedControlContract,\n sideNavigationContract,\n sliderContract,\n tabBarContract,\n tableContract,\n toggleContract,\n tooltipContract,\n videoLightboxContract,\n videoFrameContract,\n slidePagerContract,\n];\n\n/** Names the module `selectedContracts` loads a custom component's\n * `ComponentContract[]` from. The suite files are static Playwright entry\n * points with no argument to receive one through, so an env var plus a\n * dynamic import is the only route in. */\nexport const CONTRACTS_MODULE_ENV = 'LIVE_TOKENS_CONTRACTS_MODULE';\n\nasync function loadCustomContracts(): Promise<ComponentContract[]> {\n const modulePath = process.env[CONTRACTS_MODULE_ENV];\n if (!modulePath) return [];\n const mod = await import(pathToFileURL(path.resolve(modulePath)).href);\n const value = mod.default ?? mod.contracts;\n if (!Array.isArray(value)) {\n throw new Error(\n `${CONTRACTS_MODULE_ENV}=${modulePath} does not export a contracts array `\n + '(default export or a named \"contracts\" export)',\n );\n }\n return value as ComponentContract[];\n}\n\n/** The shipped list plus whatever `LIVE_TOKENS_CONTRACTS_MODULE` names,\n * unfiltered — what a \"no contract for this id\" error lists as declared. */\nexport async function allContracts(\n contracts: ComponentContract[] = shippedContracts,\n): Promise<ComponentContract[]> {\n const custom = await loadCustomContracts();\n return custom.length > 0 ? [...contracts, ...custom] : contracts;\n}\n\n/** The contracts a run covers, narrowed by `LIVE_TOKENS_COMPONENT`. */\nexport async function selectedContracts(\n contracts: ComponentContract[] = shippedContracts,\n): Promise<ComponentContract[]> {\n const all = await allContracts(contracts);\n const requested = process.env.LIVE_TOKENS_COMPONENT;\n return requested ? all.filter((contract) => contract.id === requested) : all;\n}\n\nexport {\n badgeContract,\n buttonContract,\n calloutContract,\n cardContract,\n codeSnippetContract,\n collapsibleSectionContract,\n cornerBadgeContract,\n dialogContract,\n iconButtonContract,\n imageContract,\n imageLightboxContract,\n inlineEditActionsContract,\n inputContract,\n menuSelectContract,\n notificationContract,\n panelContract,\n progressBarContract,\n radioButtonContract,\n sectionDividerContract,\n segmentedControlContract,\n sideNavigationContract,\n sliderContract,\n tabBarContract,\n tableContract,\n toggleContract,\n tooltipContract,\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Variant =\n | 'brand' | 'accent' | 'neutral' | 'alternate' | 'canvas'\n | 'special' | 'success' | 'warning' | 'danger' | 'info';\n\nconst variants: Variant[] = [\n 'brand', 'accent', 'neutral', 'alternate', 'canvas',\n 'special', 'success', 'warning', 'danger', 'info',\n];\n\nfunction basePaints(v: Variant): PaintMap {\n return {\n root: {\n paddingTop: `--badge-${v}-padding`,\n borderRadius: `--badge-${v}-radius`,\n borderTopWidth: `--badge-${v}-border-width`,\n boxShadow: `--badge-${v}-shadow`,\n fontFamily: `--badge-${v}-text-font-family`,\n fontSize: `--badge-${v}-text-font-size`,\n fontWeight: `--badge-${v}-text-font-weight`,\n lineHeight: `--badge-${v}-text-line-height`,\n },\n icon: { fontSize: `--badge-${v}-icon-size` },\n };\n}\n\nfunction colorPaints(v: Variant): PaintMap {\n return {\n root: {\n backgroundColor: `--badge-${v}-surface`,\n borderTopColor: `--badge-${v}-border`,\n color: `--badge-${v}-text`,\n },\n };\n}\n\nexport const badgeContract: ComponentContract = {\n id: 'badge',\n origin: 'system',\n view: { variant: 'Brand' },\n root: 'root',\n parts: {\n root: '.badge',\n icon: '.icon',\n },\n properties: [\n { variant: 'Brand', state: 'base', paints: basePaints('brand') },\n { variant: 'Brand', state: 'colors', paints: colorPaints('brand') },\n ...variants.filter((v) => v !== 'brand').flatMap((v) => [\n { variant: v.charAt(0).toUpperCase() + v.slice(1), state: 'base', paints: basePaints(v) },\n { variant: v.charAt(0).toUpperCase() + v.slice(1), state: 'colors', paints: colorPaints(v) },\n ]),\n ],\n states: [{ state: 'base' }, { state: 'colors' }],\n uncovered: {\n '--badge-brand-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-accent-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-neutral-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-alternate-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-canvas-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-special-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-success-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-warning-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-danger-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-info-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variant: 'Brand',\n state: 'base',\n variable: '--badge-brand-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--badge-brand-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--badge-brand-border-width', '--badge-brand-radius', '--badge-brand-padding'],\n unchanged: ['--badge-brand-shadow', '--badge-brand-icon-size'],\n aliasedTo: {\n '--badge-brand-border-width': '--border-width-3',\n '--badge-brand-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--badge-brand-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a badge is a static label with no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a badge declares no callback prop and answers no event: its props select paint, which the render obligation reads',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--badge-brand-surface', stroke: '--badge-brand-border' }],\n },\n};\n","import type { ComponentContract, PaintMap, PropertyExpectation } from '../componentContract';\n\ntype Variant = 'primary' | 'secondary' | 'outline' | 'success' | 'danger' | 'warning';\nconst variants: Variant[] = ['primary', 'secondary', 'outline', 'success', 'danger', 'warning'];\nconst cap = (v: string) => v.charAt(0).toUpperCase() + v.slice(1);\n\nfunction basePaints(v: Variant): PaintMap {\n return {\n root: {\n paddingTop: `--button-${v}-padding`,\n borderRadius: `--button-${v}-radius`,\n borderTopWidth: `--button-${v}-border-width`,\n fontFamily: `--button-${v}-text-font-family`,\n fontSize: `--button-${v}-text-font-size`,\n fontWeight: `--button-${v}-text-font-weight`,\n lineHeight: `--button-${v}-text-line-height`,\n },\n icon: { fontSize: `--button-${v}-icon-size` },\n };\n}\n\nfunction statePaints(v: Variant, s: 'default' | 'hover' | 'disabled'): PaintMap {\n const prefix = s === 'default' ? `--button-${v}` : `--button-${v}-${s}`;\n const textVar = s === 'default' ? `--button-${v}-text` : `--button-${v}-${s}-text`;\n return {\n root: {\n backgroundColor: `${prefix}-surface`,\n borderTopColor: `${prefix}-border`,\n color: textVar,\n },\n };\n}\n\nconst otherVariantProperties: PropertyExpectation[] = variants\n .filter((v) => v !== 'primary')\n .flatMap((v) => [\n { variant: cap(v), state: 'base', paints: basePaints(v) },\n { variant: cap(v), state: 'default', paints: statePaints(v, 'default') },\n { variant: cap(v), state: 'hover', paints: statePaints(v, 'hover') },\n { variant: cap(v), state: 'disabled', paints: statePaints(v, 'disabled') },\n ]);\n\nexport const buttonContract: ComponentContract = {\n id: 'button',\n origin: 'system',\n view: { variant: 'Primary' },\n root: 'root',\n parts: {\n root: '.button',\n icon: '.button i',\n },\n properties: [\n { variant: 'Primary', state: 'base', paints: basePaints('primary') },\n ...otherVariantProperties,\n { variant: 'Outline', state: 'active', paints: { root: { backgroundColor: '--button-outline-active-surface' } } },\n {\n setup: [{ kind: 'control', selector: '.preview-actions select', value: 'small' }],\n paints: {\n root: {\n paddingTop: '--button-small-padding',\n fontSize: '--button-small-text-font-size',\n fontWeight: '--button-small-text-font-weight',\n lineHeight: '--button-small-text-line-height',\n },\n icon: { fontSize: '--button-small-icon-size' },\n },\n },\n ],\n states: [\n { state: 'base' },\n { state: 'default', paints: statePaints('primary', 'default') },\n { state: 'hover', forceClass: 'force-hover', paints: statePaints('primary', 'hover') },\n {\n state: 'disabled',\n attributes: { root: { disabled: '' } },\n paints: statePaints('primary', 'disabled'),\n },\n ],\n uncovered: {\n '--button-shimmer': 'gates the ::before sweep with a display toggle, which no probe covers',\n '--button-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--button-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variant: 'Primary',\n state: 'base',\n variable: '--button-primary-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--button-primary-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--button-primary-border-width', '--button-primary-radius', '--button-primary-padding'],\n unchanged: ['--button-primary-icon-size'],\n aliasedTo: {\n '--button-primary-border-width': '--border-width-3',\n '--button-primary-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--button-primary-border-width' },\n },\n interaction: {\n part: 'root',\n role: 'button',\n cases: [\n {\n name: 'clicking a button focuses it',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: true },\n },\n {\n name: 'a disabled button refuses focus',\n state: 'disabled',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking a button hands the click on',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onclick', args: [{ type: 'click' }] },\n },\n {\n name: 'a disabled button stays silent',\n props: { disabled: true },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'no-callback', prop: 'onclick' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--button-primary-surface', stroke: '--button-primary-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Variant = 'info' | 'success' | 'warning' | 'danger';\nconst variants: Variant[] = ['info', 'success', 'warning', 'danger'];\n\nfunction paintsFor(v: Variant): PaintMap {\n return {\n root: {\n backgroundColor: `--callout-${v}-surface`,\n borderTopColor: `--callout-${v}-border`,\n borderTopWidth: `--callout-${v}-border-width`,\n borderLeftWidth: `--callout-${v}-indicator-width`,\n borderRadius: `--callout-${v}-radius`,\n paddingTop: `--callout-${v}-padding`,\n },\n label: {\n color: `--callout-${v}-label`,\n fontFamily: `--callout-${v}-label-font-family`,\n fontSize: `--callout-${v}-label-font-size`,\n fontWeight: `--callout-${v}-label-font-weight`,\n lineHeight: `--callout-${v}-label-line-height`,\n },\n message: {\n color: `--callout-${v}-text`,\n fontFamily: `--callout-${v}-text-font-family`,\n fontSize: `--callout-${v}-text-font-size`,\n fontWeight: `--callout-${v}-text-font-weight`,\n lineHeight: `--callout-${v}-text-line-height`,\n },\n };\n}\n\nexport const calloutContract: ComponentContract = {\n id: 'callout',\n origin: 'system',\n view: { variant: 'Info' },\n root: 'root',\n parts: {\n root: '.callout',\n label: '.callout-label',\n message: '.callout-message',\n },\n properties: variants.map((v) => ({ variant: v.charAt(0).toUpperCase() + v.slice(1), paints: paintsFor(v) })),\n states: {\n applicable: false,\n reason: 'each variant is one full preset with one state, so the editor renders no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--callout-info-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--callout-info-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--callout-info-border-width', '--callout-info-radius', '--callout-info-padding'],\n unchanged: ['--callout-info-label-font-size', '--callout-info-text-font-size'],\n aliasedTo: {\n '--callout-info-border-width': '--border-width-3',\n '--callout-info-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--callout-info-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a callout is a static box with no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a callout declares no callback prop and answers no event',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--callout-info-surface', stroke: '--callout-info-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const cardContract: ComponentContract = {\n id: 'card',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.card',\n header: '.card-header',\n icon: '.card-icon',\n title: '.card-title',\n body: '.card-body',\n },\n properties: [\n {\n paints: {\n root: {\n backgroundColor: '--card-default-surface',\n borderTopColor: '--card-default-border',\n borderTopWidth: '--card-default-border-width',\n borderRadius: '--card-default-radius',\n boxShadow: '--card-default-shadow',\n },\n header: {\n backgroundColor: '--card-default-header-surface',\n columnGap: '--card-default-header-gap',\n paddingTop: '--card-default-header-padding-top',\n paddingRight: '--card-default-header-padding-right',\n paddingBottom: '--card-default-header-padding-bottom',\n paddingLeft: '--card-default-header-padding-left',\n },\n icon: { fontSize: '--card-default-icon-size' },\n title: {\n color: '--card-default-title',\n fontFamily: '--card-default-title-font-family',\n fontSize: '--card-default-title-font-size',\n fontWeight: '--card-default-title-font-weight',\n lineHeight: '--card-default-title-line-height',\n },\n body: {\n color: '--card-default-body',\n fontFamily: '--card-default-body-font-family',\n fontSize: '--card-default-body-font-size',\n fontWeight: '--card-default-body-font-weight',\n lineHeight: '--card-default-body-line-height',\n paddingTop: '--card-default-body-padding-top',\n paddingRight: '--card-default-body-padding-right',\n paddingBottom: '--card-default-body-padding-bottom',\n paddingLeft: '--card-default-body-padding-left',\n },\n },\n },\n // `click({force:true})` leaves the pointer resting on `root`, so the\n // browser's real `.card:hover` rule applies afterward, no InteractionCase\n // needed. The editor's `.force-hover` reads these same gated tokens, so\n // the state entry below and this one have to agree.\n {\n setup: [{ kind: 'click', part: 'root' }],\n paints: {\n root: { borderTopColor: '--card-hover-border-enabled', boxShadow: '--card-hover-shadow-enabled' },\n },\n },\n // The per-side entry above drives `-padding-top` directly, which passes\n // regardless of what it's aliased to. This drives the base token instead,\n // proving the `-padding-top: var(--card-default-*-padding)` link itself.\n {\n paints: {\n header: { paddingTop: '--card-default-header-padding' },\n body: { paddingTop: '--card-default-body-padding' },\n },\n },\n ],\n states: [\n { state: 'default' },\n // The gate is off by default, so the hover tab has to show the resting\n // card. Naming the gated tokens is what pins that: `--card-hover-border`\n // resolves to `--border-neutral-strong` and would not match.\n {\n state: 'hover',\n forceClass: 'force-hover',\n paints: {\n root: { borderTopColor: '--card-hover-border-enabled', boxShadow: '--card-hover-shadow-enabled' },\n },\n },\n ],\n uncovered: {\n '--card-default-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n // `--card-hover-border-enabled` is an alias the editor repoints, so the\n // chain is not live and driving these two moves nothing. The runtime reads\n // them only through the per-instance `hover` prop (Card.svelte:47), which\n // the standardized preview never sets. Before force-hover honoured the\n // gate it read `--card-hover-border` directly and the hover state pinned\n // it; that path was the bug.\n '--card-hover-border': 'reachable only through the per-instance hover prop, which the preview does not set',\n '--card-hover-shadow': 'reachable only through the per-instance hover prop, which the preview does not set',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--card-default-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--card-default-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--card-default-border-width', '--card-default-radius'],\n unchanged: ['--card-default-icon-size'],\n aliasedTo: {\n '--card-default-border-width': '--border-width-3',\n '--card-default-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--card-default-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a card is a static container with no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a card declares no callback prop; its header and body arrive as snippets, which a mounted fixture cannot express',\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', fill: '--card-default-surface', stroke: '--card-default-border' },\n { part: 'header', fill: '--card-default-header-surface' },\n ],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const codeSnippetContract: ComponentContract = {\n id: 'codesnippet',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.codesnippet',\n code: '.code',\n copy: '.copy',\n },\n properties: [\n {\n paints: {\n root: {\n columnGap: '--codesnippet-gap',\n paddingTop: '--codesnippet-padding',\n backgroundColor: '--codesnippet-surface',\n borderTopColor: '--codesnippet-border',\n borderTopWidth: '--codesnippet-border-width',\n borderRadius: '--codesnippet-radius',\n },\n code: {\n color: '--codesnippet-code-text',\n fontFamily: '--codesnippet-code-font-family',\n fontSize: '--codesnippet-code-font-size',\n fontWeight: '--codesnippet-code-font-weight',\n lineHeight: '--codesnippet-code-line-height',\n },\n copy: {\n color: '--codesnippet-icon',\n fontSize: '--codesnippet-icon-size',\n },\n },\n },\n ],\n states: [\n { state: 'default' },\n {\n state: 'hover',\n forceClass: 'force-hover',\n paints: { copy: { color: '--codesnippet-hover-icon' } },\n },\n ],\n uncovered: {\n '--codesnippet-scrollbar-thumb': 'drawn via the ::-webkit-scrollbar-thumb pseudo-element and the scrollbar-color property, neither of which a probe can pin to one part',\n '--codesnippet-scrollbar-border-width': 'drives ::-webkit-scrollbar height, which a probe cannot read back verbatim',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--codesnippet-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--codesnippet-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--codesnippet-border-width', '--codesnippet-radius', '--codesnippet-padding', '--codesnippet-scrollbar-border-width'],\n unchanged: ['--codesnippet-icon-size'],\n aliasedTo: {\n '--codesnippet-border-width': '--border-width-3',\n '--codesnippet-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--codesnippet-border-width' },\n },\n interaction: {\n part: 'copy',\n role: 'button',\n cases: [\n {\n name: 'clicking copy focuses the button',\n action: { kind: 'click', part: 'copy' },\n expect: { kind: 'focused', part: 'copy', value: true },\n },\n ],\n },\n behavior: {\n applicable: false,\n reason: 'the copy control reports through the system clipboard and a timed popover, neither of which is a callback prop',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--codesnippet-surface', stroke: '--codesnippet-border' }],\n },\n};\n","import type { ComponentContract, PaintMap, SetupStep } from '../componentContract';\n\nfunction clickHover(): SetupStep[] {\n return [{ kind: 'control', selector: '.tabs-selectors.substrip .state-tab-btn:has-text(\"Hover\")' }];\n}\n\nfunction headerPaints(v: string, s: 'default' | 'hover'): PaintMap {\n const p = `--collapsiblesection-${v}-${s}`;\n const header: PaintMap[string] = {\n backgroundColor: `${p}-surface`,\n paddingTop: `${p}-padding`,\n };\n if (v === 'hairline') {\n header.borderBottomColor = `${p}-hairline-color`;\n header.borderBottomWidth = `${p}-hairline-width`;\n }\n return {\n header,\n label: {\n color: `${p}-label`,\n fontFamily: `${p}-label-font-family`,\n fontSize: `${p}-label-font-size`,\n fontWeight: `${p}-label-font-weight`,\n lineHeight: `${p}-label-line-height`,\n },\n icon: { color: `${p}-icon`, fontSize: `${p}-icon-size` },\n };\n}\n\nexport const collapsibleSectionContract: ComponentContract = {\n id: 'collapsiblesection',\n origin: 'system',\n view: { variant: 'Container', state: 'Body' },\n root: 'root',\n parts: {\n root: '.es-root',\n header: '.section-header',\n label: '.section-label',\n icon: '.toggle-icon',\n body: '.section-content',\n toggleButton: '.section-toggle-button',\n },\n properties: [\n {\n variant: 'Container',\n state: 'Container',\n paints: {\n root: {\n borderTopColor: '--collapsiblesection-container-frame-border',\n borderTopWidth: '--collapsiblesection-container-frame-border-width',\n borderRadius: '--collapsiblesection-container-frame-radius',\n },\n },\n },\n { variant: 'Container', state: 'Header', paints: headerPaints('container', 'default') },\n { variant: 'Container', state: 'Header', setup: clickHover(), paints: headerPaints('container', 'hover') },\n {\n variant: 'Container',\n state: 'Body',\n paints: { body: { backgroundColor: '--collapsiblesection-container-open-surface', paddingTop: '--collapsiblesection-container-open-padding' } },\n },\n { variant: 'Chromeless', state: 'Header', paints: headerPaints('chromeless', 'default') },\n { variant: 'Chromeless', state: 'Header', setup: clickHover(), paints: headerPaints('chromeless', 'hover') },\n { variant: 'Chromeless', state: 'Body', paints: { body: { paddingTop: '--collapsiblesection-chromeless-open-padding' } } },\n { variant: 'With Hairline', state: 'Header', paints: headerPaints('hairline', 'default') },\n { variant: 'With Hairline', state: 'Header', setup: clickHover(), paints: headerPaints('hairline', 'hover') },\n { variant: 'With Hairline', state: 'Body', paints: { body: { paddingTop: '--collapsiblesection-hairline-open-padding' } } },\n ],\n states: [{ state: 'Container' }, { state: 'Header' }, { state: 'Body' }],\n persistence: {\n cases: [\n {\n shape: 'token',\n variant: 'Container',\n state: 'Container',\n variable: '--collapsiblesection-container-frame-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--collapsiblesection-container-frame-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--collapsiblesection-container-frame-border-width', '--collapsiblesection-container-frame-radius'],\n unchanged: ['--collapsiblesection-container-default-icon-size'],\n aliasedTo: {\n '--collapsiblesection-container-frame-border-width': '--border-width-3',\n '--collapsiblesection-container-frame-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--collapsiblesection-container-frame-border-width' },\n },\n interaction: {\n part: 'toggleButton',\n role: 'button',\n // No activation case: CollapsibleSectionEditor's preview drives `open`\n // off the active state tab and never wires `ontoggle` back to it, so\n // clicking the real button here can't move `aria-expanded` (same\n // constraint documented on ToggleEditor in toggle.ts).\n cases: [\n {\n name: 'clicking the toggle button focuses it',\n action: { kind: 'click', part: 'toggleButton' },\n expect: { kind: 'focused', part: 'toggleButton', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking the chevron asks to toggle',\n props: { label: 'Details' },\n action: { kind: 'click', part: 'toggleButton' },\n expect: { kind: 'callback', prop: 'ontoggle', args: [] },\n },\n {\n name: 'open drives the chevron',\n props: { label: 'Details', open: true },\n expect: { kind: 'attribute', part: 'toggleButton', name: 'aria-expanded', value: 'true' },\n },\n {\n name: 'clicking leaves the section where the prop put it',\n props: { label: 'Details' },\n action: { kind: 'click', part: 'toggleButton' },\n expect: { kind: 'attribute', part: 'toggleButton', name: 'aria-expanded', value: 'false' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', stroke: '--collapsiblesection-container-frame-border' },\n { part: 'header', fill: '--collapsiblesection-container-default-surface' },\n { part: 'body', fill: '--collapsiblesection-container-open-surface' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Variant =\n | 'brand' | 'accent' | 'neutral' | 'alternate' | 'canvas'\n | 'special' | 'success' | 'warning' | 'danger' | 'info';\n\nconst variants: Variant[] = [\n 'brand', 'accent', 'neutral', 'alternate', 'canvas',\n 'special', 'success', 'warning', 'danger', 'info',\n];\n\nfunction colorPaints(v: Variant): PaintMap {\n return {\n badge: {\n backgroundColor: `--cornerbadge-${v}-surface`,\n borderTopColor: `--cornerbadge-${v}-border`,\n color: `--cornerbadge-${v}-text`,\n },\n };\n}\n\n/** Default anchor is bottom-right: TL=inner, TR=v-axis, BR=outer, BL=h-axis. */\nconst basePaints: PaintMap = {\n root: { bottom: '--cornerbadge-margin' },\n badge: {\n borderTopLeftRadius: '--cornerbadge-inner-radius',\n borderTopRightRadius: '--cornerbadge-v-axis-radius',\n borderBottomRightRadius: '--cornerbadge-outer-radius',\n borderBottomLeftRadius: '--cornerbadge-h-axis-radius',\n paddingTop: '--cornerbadge-padding',\n fontFamily: '--cornerbadge-text-font-family',\n fontSize: '--cornerbadge-text-font-size',\n fontWeight: '--cornerbadge-text-font-weight',\n lineHeight: '--cornerbadge-text-line-height',\n },\n};\n\nexport const cornerBadgeContract: ComponentContract = {\n id: 'cornerbadge',\n origin: 'system',\n view: { variant: 'Brand' },\n root: 'root',\n parts: {\n root: '.cornerbadge',\n badge: '.cornerbadge .badge',\n },\n properties: [\n {\n variant: 'Brand',\n paints: {\n root: basePaints.root,\n badge: { ...basePaints.badge, ...colorPaints('brand').badge },\n },\n },\n ...variants.filter((v) => v !== 'brand').map((v) => ({\n variant: v.charAt(0).toUpperCase() + v.slice(1),\n paints: colorPaints(v),\n })),\n ],\n states: [{ state: 'base' }, { state: 'colors' }],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--cornerbadge-outer-radius',\n observe: { part: 'badge', css: 'borderBottomRightRadius' },\n },\n ],\n resetVariable: '--cornerbadge-outer-radius',\n },\n theme: {\n theme: 'ocean',\n changed: ['--cornerbadge-outer-radius', '--cornerbadge-inner-radius', '--cornerbadge-margin'],\n unchanged: ['--cornerbadge-text-font-size'],\n aliasedTo: {\n '--cornerbadge-outer-radius': '--radius-md',\n '--cornerbadge-inner-radius': '--radius-md',\n },\n observe: { part: 'badge', css: 'borderBottomRightRadius', variable: '--cornerbadge-outer-radius' },\n },\n interaction: {\n applicable: false,\n reason: 'a corner badge is a static marker with no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a corner badge declares no callback prop and answers no event',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'badge', fill: '--cornerbadge-brand-surface', stroke: '--cornerbadge-brand-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const dialogContract: ComponentContract = {\n id: 'dialog',\n origin: 'system',\n root: 'root',\n parts: {\n backdrop: '.dialog-backdrop',\n root: '.dialog',\n header: '.dialog-header',\n title: '.dialog-title',\n closeButton: '.dialog-close',\n body: '.dialog-body',\n footer: '.dialog-footer',\n confirmButton: '.dialog-footer-buttons button:last-of-type',\n cancelButton: '.dialog-footer-buttons button:first-of-type',\n },\n properties: [\n {\n paints: {\n backdrop: { backgroundColor: '--dialog-scrim-surface' },\n root: {\n backgroundColor: '--dialog-surface',\n borderTopColor: '--dialog-border',\n borderTopWidth: '--dialog-border-width',\n borderRadius: '--dialog-radius',\n boxShadow: '--dialog-shadow',\n },\n header: {\n backgroundColor: '--dialog-header-surface',\n borderBottomColor: '--dialog-header-hairline-color',\n borderBottomWidth: '--dialog-header-hairline-width',\n paddingTop: '--dialog-header-padding',\n },\n title: {\n color: '--dialog-title',\n fontFamily: '--dialog-title-font-family',\n fontSize: '--dialog-title-font-size',\n fontWeight: '--dialog-title-font-weight',\n lineHeight: '--dialog-title-line-height',\n },\n closeButton: {\n color: '--dialog-close-icon',\n fontSize: '--dialog-close-icon-size',\n },\n body: {\n paddingTop: '--dialog-body-padding',\n color: '--dialog-body',\n fontFamily: '--dialog-body-font-family',\n fontSize: '--dialog-body-font-size',\n fontWeight: '--dialog-body-font-weight',\n lineHeight: '--dialog-body-line-height',\n },\n footer: {\n borderTopColor: '--dialog-footer-hairline-color',\n borderTopWidth: '--dialog-footer-hairline-width',\n paddingTop: '--dialog-footer-padding',\n },\n },\n },\n ],\n states: [\n { state: 'scrim' },\n { state: 'dialog' },\n { state: 'header' },\n { state: 'body' },\n { state: 'footer' },\n ],\n uncovered: {\n '--dialog-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'dialog',\n variable: '--dialog-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n {\n shape: 'config',\n state: 'footer',\n control: '.button-variant-row:has(.property-label:text-is(\"right button\")) select',\n configKey: '--dialog-confirm-variant',\n observe: { part: 'confirmButton', css: 'backgroundColor' },\n },\n {\n shape: 'config',\n state: 'footer',\n control: '.button-variant-row:has(.property-label:text-is(\"left button\")) select',\n configKey: '--dialog-cancel-variant',\n observe: { part: 'cancelButton', css: 'backgroundColor' },\n },\n ],\n resetVariable: '--dialog-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--dialog-border-width', '--dialog-radius', '--dialog-header-padding', '--dialog-footer-padding'],\n unchanged: ['--dialog-close-icon-size', '--dialog-title-font-size'],\n aliasedTo: {\n '--dialog-border-width': '--border-width-4',\n '--dialog-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--dialog-border-width' },\n },\n interaction: {\n part: 'closeButton',\n role: 'button',\n cases: [\n {\n name: 'clicking the close icon focuses it',\n action: { kind: 'click', part: 'closeButton' },\n expect: { kind: 'focused', part: 'closeButton', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking close asks to close',\n props: { open: true, inline: true, title: 'Confirm' },\n action: { kind: 'click', part: 'closeButton' },\n expect: { kind: 'callback', prop: 'onclose', args: [] },\n },\n {\n name: 'title drives the heading',\n props: { open: true, inline: true, title: 'Confirm' },\n expect: { kind: 'text', part: 'title', value: 'Confirm' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', fill: '--dialog-surface', stroke: '--dialog-border' },\n { part: 'header', fill: '--dialog-header-surface' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap, PropertyExpectation } from '../componentContract';\n\ntype Variant = 'primary' | 'secondary' | 'outline' | 'success' | 'danger' | 'warning';\nconst variants: Variant[] = ['primary', 'secondary', 'outline', 'success', 'danger', 'warning'];\nconst cap = (v: string) => v.charAt(0).toUpperCase() + v.slice(1);\n\nfunction basePaints(v: Variant): PaintMap {\n return {\n root: {\n paddingTop: `--iconbutton-${v}-padding`,\n borderRadius: `--iconbutton-${v}-radius`,\n borderTopWidth: `--iconbutton-${v}-border-width`,\n },\n icon: { fontSize: `--iconbutton-${v}-icon-size` },\n };\n}\n\nfunction statePaints(v: Variant, s: 'default' | 'hover' | 'disabled'): PaintMap {\n const prefix = s === 'default' ? `--iconbutton-${v}` : `--iconbutton-${v}-${s}`;\n const iconVar = s === 'default' ? `--iconbutton-${v}-icon` : `--iconbutton-${v}-${s}-icon`;\n return {\n root: { backgroundColor: `${prefix}-surface`, borderTopColor: `${prefix}-border` },\n icon: { color: iconVar },\n };\n}\n\nconst otherVariantProperties: PropertyExpectation[] = variants\n .filter((v) => v !== 'primary')\n .flatMap((v) => [\n { variant: cap(v), state: 'base', paints: basePaints(v) },\n { variant: cap(v), state: 'default', paints: statePaints(v, 'default') },\n { variant: cap(v), state: 'hover', paints: statePaints(v, 'hover') },\n { variant: cap(v), state: 'disabled', paints: statePaints(v, 'disabled') },\n ]);\n\nexport const iconButtonContract: ComponentContract = {\n id: 'iconbutton',\n origin: 'system',\n view: { variant: 'Primary' },\n root: 'root',\n parts: {\n root: '.icon-button',\n icon: '.icon-button i',\n },\n properties: [\n { variant: 'Primary', state: 'base', paints: basePaints('primary') },\n ...otherVariantProperties,\n { variant: 'Outline', state: 'active', paints: { root: { backgroundColor: '--iconbutton-outline-active-surface' } } },\n {\n setup: [{ kind: 'control', selector: '.preview-actions select', value: 'small' }],\n paints: {\n root: { paddingTop: '--iconbutton-small-padding' },\n icon: { fontSize: '--iconbutton-small-icon-size' },\n },\n },\n ],\n states: [\n { state: 'base' },\n { state: 'default', paints: statePaints('primary', 'default') },\n { state: 'hover', forceClass: 'force-hover', paints: statePaints('primary', 'hover') },\n {\n state: 'disabled',\n attributes: { root: { disabled: '' } },\n paints: statePaints('primary', 'disabled'),\n },\n ],\n uncovered: {\n '--iconbutton-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--iconbutton-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variant: 'Primary',\n state: 'base',\n variable: '--iconbutton-primary-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--iconbutton-primary-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--iconbutton-primary-border-width', '--iconbutton-primary-radius', '--iconbutton-primary-padding'],\n unchanged: ['--iconbutton-primary-icon-size'],\n aliasedTo: {\n '--iconbutton-primary-border-width': '--border-width-3',\n '--iconbutton-primary-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--iconbutton-primary-border-width' },\n },\n interaction: {\n part: 'root',\n role: 'button',\n cases: [\n {\n name: 'clicking an icon button focuses it',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking an icon button hands the click on',\n props: { icon: 'fas fa-check', ariaLabel: 'Confirm' },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onclick', args: [{ type: 'click' }] },\n },\n {\n name: 'a disabled icon button stays silent',\n props: { icon: 'fas fa-check', ariaLabel: 'Confirm', disabled: true },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'no-callback', prop: 'onclick' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--iconbutton-primary-surface', stroke: '--iconbutton-primary-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const imageContract: ComponentContract = {\n id: 'image',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.image',\n img: '.image img',\n },\n properties: [\n {\n paints: {\n root: {\n borderTopColor: '--image-default-border',\n borderTopWidth: '--image-default-border-width',\n borderRadius: '--image-default-radius',\n boxShadow: '--image-default-shadow',\n },\n },\n },\n ],\n states: {\n applicable: false,\n reason: 'the editor renders one token group (image) with no state strip',\n },\n uncovered: {\n '--image-zoom-scale': 'consumed inside transform: scale(), never appears verbatim in a computed style',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--image-default-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n {\n shape: 'literal',\n control: 'label.zoom-enable:has-text(\"Use zoom on hover\") input',\n variable: '--image-zoom-enabled',\n observe: { part: 'img', css: 'transform' },\n },\n ],\n resetVariable: '--image-default-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--image-default-border-width', '--image-default-radius'],\n unchanged: ['--image-default-shadow', '--image-zoom-scale'],\n aliasedTo: {\n '--image-default-border-width': '--border-width-3',\n '--image-default-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--image-default-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a framed picture carries no interactive role; the zoom effect is a hover transform, not an action',\n },\n behavior: {\n applicable: false,\n reason: 'an image declares no callback prop; zoom is a hover transform the browser paints',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', stroke: '--image-default-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const imageLightboxContract: ComponentContract = {\n id: 'imagelightbox',\n origin: 'system',\n view: { setup: [{ kind: 'click', part: 'thumb' }] },\n root: 'root',\n parts: {\n root: '.image-lightbox-wrapper',\n thumb: '.image-lightbox-thumb',\n overlay: { selector: '.image-lightbox-overlay', portal: true },\n stage: { selector: '.image-lightbox-stage', portal: true },\n closeButton: { selector: '.image-lightbox-close', portal: true },\n closeIcon: { selector: '.image-lightbox-close svg', portal: true },\n prevButton: { selector: '.image-lightbox-nav-prev', portal: true },\n nextButton: { selector: '.image-lightbox-nav-next', portal: true },\n counter: { selector: '.image-lightbox-counter', portal: true },\n toolbar: { selector: '.image-lightbox-toolbar', portal: true },\n },\n properties: [\n {\n paints: {\n thumb: {\n backgroundColor: '--imagelightbox-tile-surface',\n borderTopColor: '--imagelightbox-tile-border',\n borderTopWidth: '--imagelightbox-tile-border-width',\n borderRadius: '--imagelightbox-tile-radius',\n boxShadow: '--imagelightbox-tile-shadow',\n },\n overlay: { backgroundColor: '--imagelightbox-scrim-surface' },\n closeButton: {\n backgroundColor: '--imagelightbox-chrome-surface',\n borderTopColor: '--imagelightbox-chrome-border',\n borderTopWidth: '--imagelightbox-chrome-border-width',\n borderRadius: '--imagelightbox-chrome-radius',\n color: '--imagelightbox-chrome-icon',\n },\n closeIcon: { stroke: '--imagelightbox-chrome-icon' },\n },\n },\n // `click({force:true})` leaves the pointer resting on `nextButton`, so the\n // browser's real `.image-lightbox-nav:hover` rule applies afterward.\n // Unlike `closeButton`, clicking it does not close the modal.\n {\n setup: [{ kind: 'click', part: 'nextButton' }],\n paints: { nextButton: { backgroundColor: '--imagelightbox-chrome-hover-surface' } },\n },\n ],\n states: [{ state: 'tile' }, { state: 'overlay' }, { state: 'chrome' }],\n persistence: {\n cases: [\n {\n // No `state` here: \"tile\" is the panel's own default tab, and every\n // `selectView` re-clicks whatever `state` names even when it is\n // already active. While the modal is open, that click's target sits\n // under the overlay's full-viewport hit area, so skipping it avoids\n // an avoidable trip through the same close-on-click behavior `setup`\n // is about to use on purpose. `setup` closes the modal the\n // contract-level view opened so the \"tile\" token control (behind the\n // still-open overlay otherwise) is reachable, by pressing Escape on\n // `root` rather than clicking `closeButton`. `assertPersistence`\n // replays `setup` twice back to back (once directly, once inside\n // `driveControl`). Measured against a live page: `closeLightbox`'s\n // `open = false` write happens inside an animation `onfinish`\n // callback that a `settle()` cycle doesn't durably wait out, so\n // `closeButton` — a portaled element that unmounts once that callback\n // fires — can still be gone, still be there, or about to vanish\n // mid-click, depending on exactly when it lands relative to the\n // harness's round trips. A second `closeButton` click inherits that\n // uncertainty. Leading with a `thumb` click to guarantee a target for\n // the `closeButton` click that follows inherits it from the other\n // side instead: `openLightbox`'s own `if (open) return` reads the\n // same not-yet-written flag, so it can no-op rather than reopen, and\n // nothing then re-drives it — reproduced empirically, a deterministic\n // dead end. Escape on `root` avoids both: `root` is never portaled,\n // so the action always has a target, and replaying it before the\n // first press has finished closing re-enters `closeLightbox` rather\n // than skipping it, so every replay drives the component strictly\n // further toward closed. (Escape also collapses the components\n // editor's own drawer, but nothing else this obligation reads lives\n // there, and `reopen()` between obligations restores it.)\n shape: 'token',\n setup: [{ kind: 'press', part: 'root', key: 'Escape' }],\n variable: '--imagelightbox-tile-border-width',\n observe: { part: 'thumb', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--imagelightbox-tile-border-width',\n },\n theme: {\n // Closes the modal the contract-level setup opened: the Theme Picker\n // trigger lives in the chrome behind it, and the still-open overlay\n // blocks clicks the same way it does for the persistence case above.\n // Unlike that case, `assertThemeProjection` runs `setup` only once, so\n // the double-replay hazard doesn't apply and a plain `closeButton` click\n // is enough — and it has to be a click, not the Escape this contract's\n // persistence case uses, because Escape also collapses the drawer this\n // obligation's own `.theme-name-trigger` lives in.\n setup: [{ kind: 'click', part: 'closeButton' }],\n theme: 'halloween',\n changed: ['--imagelightbox-tile-border-width', '--imagelightbox-tile-radius', '--imagelightbox-chrome-border-width', '--imagelightbox-chrome-radius'],\n unchanged: ['--imagelightbox-tile-shadow'],\n aliasedTo: {\n '--imagelightbox-tile-border-width': '--border-width-2',\n '--imagelightbox-tile-radius': '--radius-none',\n },\n observe: { part: 'thumb', css: 'borderTopWidth', variable: '--imagelightbox-tile-border-width' },\n },\n interaction: {\n part: 'nextButton',\n role: 'button',\n cases: [\n {\n name: 'clicking the next chevron focuses it',\n action: { kind: 'click', part: 'nextButton' },\n expect: { kind: 'focused', part: 'nextButton', value: true },\n },\n ],\n },\n // `overlay` and `closeButton` are inside `.image-lightbox-modal`, which\n // `use:portal` moves to `document.body`. The standardized preview scopes\n // `data-sketch` to its own `.sketch-scope` wrapper rather than the document\n // root, so a portaled part sits outside the CSS ancestor match this contract\n // can observe, even though PART_SPECS draws it on a real host page (where\n // Sketch mode's scope is the page root). `thumb` never portals, so it is the\n // part this contract can pin.\n behavior: {\n applicable: false,\n reason: 'the lightbox declares no callback prop; opening portals a modal sized from measured geometry, which happy-dom has no layout for',\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'thumb', fill: '--imagelightbox-tile-surface', stroke: '--imagelightbox-tile-border' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Btn = 'save' | 'cancel';\ntype BtnState = 'default' | 'hover';\n\nfunction statePaints(btn: Btn, s: BtnState): PaintMap {\n const p = `--inlineeditactions-${btn}-${s}`;\n const button = btn === 'save' ? 'saveBtn' : 'cancelBtn';\n return {\n // `-icon-size` lands as `font-size` on the button itself (the icon glyph\n // inherits it), not on a separate icon element — and a declared \"icon\"\n // part here would be the button's own `<i class=\"fas ...\">`, whose native\n // ::before glyph content is never 'none', which reads as \"drawn\" to\n // `assertNoSketchPaint` regardless of sketch mode.\n [button]: {\n backgroundColor: `${p}-surface`,\n borderTopColor: `${p}-border`,\n borderTopWidth: `${p}-border-width`,\n borderRadius: `${p}-radius`,\n paddingTop: `${p}-padding`,\n color: `${p}-text`,\n fontSize: `${p}-icon-size`,\n },\n };\n}\n\nexport const inlineEditActionsContract: ComponentContract = {\n id: 'inlineeditactions',\n origin: 'system',\n view: { variant: 'Save button' },\n root: 'saveBtn',\n parts: {\n saveBtn: '.save-btn',\n cancelBtn: '.cancel-btn',\n },\n // Every entry names its own `state` explicitly. VariantGroup mirrors the\n // last-clicked state tab across sibling variants (for the linked-block\n // chart), so switching variants without repeating `state` would silently\n // carry the previous entry's tab forward.\n properties: [\n { variant: 'Save button', state: 'default', paints: statePaints('save', 'default') },\n { variant: 'Save button', state: 'hover', paints: statePaints('save', 'hover') },\n { variant: 'Cancel button', state: 'default', paints: statePaints('cancel', 'default') },\n { variant: 'Cancel button', state: 'hover', paints: statePaints('cancel', 'hover') },\n ],\n states: [\n { state: 'default' },\n { state: 'hover' },\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--inlineeditactions-save-default-border-width',\n observe: { part: 'saveBtn', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--inlineeditactions-save-default-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--inlineeditactions-save-default-border-width', '--inlineeditactions-save-default-radius'],\n unchanged: ['--inlineeditactions-save-default-icon-size'],\n aliasedTo: {\n '--inlineeditactions-save-default-border-width': '--border-width-2',\n '--inlineeditactions-save-default-radius': '--radius-none',\n },\n observe: { part: 'saveBtn', css: 'borderTopWidth', variable: '--inlineeditactions-save-default-border-width' },\n },\n interaction: {\n part: 'saveBtn',\n role: 'button',\n cases: [\n {\n name: 'clicking save focuses the button',\n action: { kind: 'click', part: 'saveBtn' },\n expect: { kind: 'focused', part: 'saveBtn', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking save reports it',\n action: { kind: 'click', part: 'saveBtn' },\n expect: { kind: 'callback', prop: 'onsave', args: [{ type: 'click' }] },\n },\n {\n name: 'clicking cancel reports it',\n action: { kind: 'click', part: 'cancelBtn' },\n expect: { kind: 'callback', prop: 'oncancel', args: [{ type: 'click' }] },\n },\n {\n name: 'disabled actions stay silent',\n props: { disabled: true },\n action: { kind: 'click', part: 'saveBtn' },\n expect: { kind: 'no-callback', prop: 'onsave' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'saveBtn', fill: '--inlineeditactions-save-default-surface', stroke: '--inlineeditactions-save-default-border' },\n { part: 'cancelBtn', fill: '--inlineeditactions-cancel-default-surface', stroke: '--inlineeditactions-cancel-default-border' },\n ],\n },\n};\n","import type { ComponentContract, SetupStep } from '../componentContract';\n\n// The contract-level setup checks \"Error\" so `errorMsg` resolves at the\n// baseline view. `.invalid` beats `.force-focus` on outline color/width (the\n// error state wins the combination), so any check of the plain focused\n// outline has to undo it explicitly — `setup` replaces, it does not merge.\nconst noError: SetupStep[] = [\n { kind: 'control', selector: '.canvas-toolbar-select', value: 'password' },\n { kind: 'control', selector: '.toolbar-check:has-text(\"Error\") input', check: false },\n];\n\nexport const inputContract: ComponentContract = {\n id: 'input',\n origin: 'system',\n view: {\n setup: [\n { kind: 'control', selector: '.canvas-toolbar-select', value: 'password' },\n { kind: 'control', selector: '.toolbar-check:has-text(\"Error\") input', check: true },\n ],\n },\n root: 'root',\n parts: {\n root: '.input-field',\n field: '.input-control',\n label: '.input-label',\n icon: '.input-icon',\n toggleButton: '.input-icon-button',\n hint: '.input-hint',\n errorMsg: '.input-error',\n placeholder: { selector: '.input-control', pseudo: '::placeholder' },\n },\n properties: [\n {\n paints: {\n root: { rowGap: '--input-gap' },\n field: {\n borderRadius: '--input-radius',\n borderTopWidth: '--input-border-width',\n paddingTop: '--input-padding',\n backgroundColor: '--input-default-surface',\n borderTopColor: '--input-default-border',\n color: '--input-default-text',\n fontFamily: '--input-default-text-font-family',\n fontSize: '--input-default-text-font-size',\n fontWeight: '--input-default-text-font-weight',\n lineHeight: '--input-default-text-line-height',\n },\n icon: {\n color: '--input-default-icon',\n fontSize: '--input-default-icon-size',\n },\n label: {\n color: '--input-label',\n fontFamily: '--input-label-font-family',\n fontSize: '--input-label-font-size',\n fontWeight: '--input-label-font-weight',\n lineHeight: '--input-label-line-height',\n },\n hint: {\n color: '--input-hint',\n fontFamily: '--input-hint-font-family',\n fontSize: '--input-hint-font-size',\n fontWeight: '--input-hint-font-weight',\n lineHeight: '--input-hint-line-height',\n },\n placeholder: { color: '--input-default-placeholder' },\n },\n },\n // `assertPaintsFromToken` (here) drives a controlled pixel probe, so a\n // unitless line-height round-trips fine. `assertPaintMap` (states, below)\n // reads the real, already-resolved value through `normalize()`, which\n // cannot recompute a unitless multiplier outside the field's own\n // font-size context, so these three stay out of `states`.\n {\n state: 'focused',\n setup: noError,\n paints: { field: { lineHeight: '--input-focused-text-line-height' } },\n },\n {\n state: 'disabled',\n setup: noError,\n paints: { field: { lineHeight: '--input-disabled-text-line-height' } },\n },\n {\n state: 'error',\n paints: { errorMsg: { lineHeight: '--input-error-line-height' } },\n },\n ],\n states: [\n { state: 'field' },\n { state: 'default' },\n {\n state: 'focused',\n forceClass: 'force-focus',\n setup: noError,\n paints: {\n field: {\n backgroundColor: '--input-focused-surface',\n outlineColor: '--input-focused-border',\n outlineWidth: '--input-focused-border-width',\n color: '--input-focused-text',\n fontFamily: '--input-focused-text-font-family',\n fontSize: '--input-focused-text-font-size',\n fontWeight: '--input-focused-text-font-weight',\n },\n icon: { color: '--input-focused-icon', fontSize: '--input-focused-icon-size' },\n },\n },\n {\n state: 'disabled',\n attributes: { field: { disabled: '' } },\n paints: {\n field: {\n backgroundColor: '--input-disabled-surface',\n borderTopColor: '--input-disabled-border',\n color: '--input-disabled-text',\n fontFamily: '--input-disabled-text-font-family',\n fontSize: '--input-disabled-text-font-size',\n fontWeight: '--input-disabled-text-font-weight',\n },\n icon: { color: '--input-disabled-icon', fontSize: '--input-disabled-icon-size' },\n },\n },\n { state: 'label' },\n { state: 'hint' },\n {\n state: 'error',\n paints: {\n field: { outlineColor: '--input-error-border', outlineWidth: '--input-error-border-width' },\n errorMsg: {\n color: '--input-error',\n fontFamily: '--input-error-font-family',\n fontSize: '--input-error-font-size',\n fontWeight: '--input-error-font-weight',\n },\n },\n },\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--input-border-width',\n observe: { part: 'field', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--input-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--input-border-width', '--input-radius', '--input-padding'],\n unchanged: ['--input-label-font-size', '--input-default-icon-size'],\n aliasedTo: {\n '--input-border-width': '--border-width-3',\n '--input-radius': '--radius-none',\n },\n observe: { part: 'field', css: 'borderTopWidth', variable: '--input-border-width' },\n },\n interaction: {\n part: 'field',\n role: 'textbox',\n cases: [\n {\n name: 'typing writes into the field',\n action: { kind: 'type', part: 'field', text: 'probe' },\n expect: { kind: 'valueChanges', part: 'field' },\n },\n {\n name: 'clicking the reveal toggle presses it',\n action: { kind: 'click', part: 'toggleButton' },\n expect: { kind: 'attribute', part: 'toggleButton', name: 'aria-pressed', value: 'true' },\n },\n {\n name: 'a disabled field refuses focus',\n state: 'disabled',\n action: { kind: 'click', part: 'field' },\n expect: { kind: 'focused', part: 'field', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'typing reports every keystroke',\n props: { label: 'Name' },\n action: { kind: 'input', part: 'field', value: 'probe' },\n expect: { kind: 'callback', prop: 'oninput', args: ['probe'] },\n },\n {\n name: 'an error marks the field invalid',\n props: { label: 'Name', error: 'Required' },\n expect: { kind: 'attribute', part: 'field', name: 'aria-invalid', value: 'true' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'field', fill: '--input-default-surface', stroke: '--input-default-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\n/**\n * `full` adds `lineHeight`. `assertPaintsFromToken` (properties) drives a\n * controlled pixel probe, so a unitless line-height round-trips fine there;\n * `assertPaintMap` (states) reads the token's real, already-resolved value\n * through `normalize()`, which cannot recompute a unitless multiplier outside\n * the item's own font-size context. States skip it; properties cover it.\n */\nfunction itemTextPaints(s: string, full: boolean): PaintMap[string] {\n const paints: PaintMap[string] = {\n color: `--menuselect-${s}-text`,\n fontFamily: `--menuselect-${s}-text-font-family`,\n fontSize: `--menuselect-${s}-text-font-size`,\n fontWeight: `--menuselect-${s}-text-font-weight`,\n };\n if (full) paints.lineHeight = `--menuselect-${s}-text-line-height`;\n return paints;\n}\n\nconst behaviorItems = [\n { value: 'daily', label: 'Daily' },\n { value: 'weekly', label: 'Weekly' },\n];\n\nexport const menuSelectContract: ComponentContract = {\n id: 'menuselect',\n origin: 'system',\n view: { state: 'selected item' },\n root: 'root',\n parts: {\n root: '.menuselect',\n item: '.menuselect-item',\n icon: '.menuselect-item .menuselect-icon',\n label: '.menuselect-item .menuselect-label',\n selectedItem: '.menuselect-item.selected',\n selectedIcon: '.menuselect-item.selected .menuselect-icon',\n indicator: '.menuselect-indicator',\n disabledItem: '.menuselect-item:disabled',\n disabledIcon: '.menuselect-item:disabled .menuselect-icon',\n },\n properties: [\n {\n state: 'menu',\n paints: {\n root: {\n backgroundColor: '--menuselect-menu-surface',\n borderTopColor: '--menuselect-menu-border',\n borderTopWidth: '--menuselect-menu-border-width',\n borderRadius: '--menuselect-menu-radius',\n boxShadow: '--menuselect-menu-shadow',\n rowGap: '--menuselect-menu-gap',\n paddingTop: '--menuselect-menu-padding',\n },\n item: {\n borderRadius: '--menuselect-item-radius',\n paddingTop: '--menuselect-item-padding',\n },\n },\n },\n { state: 'default item', paints: { item: itemTextPaints('default', true) } },\n { state: 'hover item', paints: { item: itemTextPaints('hover', true) } },\n { state: 'selected item', paints: { selectedItem: itemTextPaints('selected', true) } },\n { state: 'disabled item', paints: { disabledItem: itemTextPaints('disabled', true) } },\n ],\n states: [\n { state: 'menu' },\n {\n state: 'default item',\n paints: {\n item: { backgroundColor: '--menuselect-default-surface', ...itemTextPaints('default', false) },\n icon: { color: '--menuselect-default-icon', fontSize: '--menuselect-default-icon-size' },\n },\n },\n {\n state: 'hover item',\n paints: {\n item: { backgroundColor: '--menuselect-hover-surface', ...itemTextPaints('hover', false) },\n icon: { color: '--menuselect-hover-icon', fontSize: '--menuselect-hover-icon-size' },\n },\n },\n {\n state: 'selected item',\n paints: {\n selectedItem: { backgroundColor: '--menuselect-selected-surface', ...itemTextPaints('selected', false) },\n selectedIcon: { color: '--menuselect-selected-icon', fontSize: '--menuselect-selected-icon-size' },\n indicator: { color: '--menuselect-selected-indicator' },\n },\n },\n {\n state: 'disabled item',\n attributes: { disabledItem: { disabled: '' } },\n paints: {\n disabledItem: { backgroundColor: '--menuselect-disabled-surface', ...itemTextPaints('disabled', false) },\n disabledIcon: { color: '--menuselect-disabled-icon', fontSize: '--menuselect-disabled-icon-size' },\n },\n },\n ],\n uncovered: {\n '--menuselect-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--menuselect-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'menu',\n variable: '--menuselect-menu-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--menuselect-menu-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--menuselect-menu-border-width', '--menuselect-menu-radius', '--menuselect-item-padding'],\n unchanged: ['--menuselect-default-icon-size', '--menuselect-default-text-font-size'],\n aliasedTo: {\n '--menuselect-menu-border-width': '--border-width-3',\n '--menuselect-menu-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--menuselect-menu-border-width' },\n },\n interaction: {\n part: 'item',\n role: 'option',\n cases: [\n {\n name: 'clicking an item selects it',\n action: { kind: 'click', part: 'item' },\n expect: { kind: 'attribute', part: 'item', name: 'aria-selected', value: 'true' },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking an item asks for its value',\n props: { items: behaviorItems, value: 'weekly' },\n action: { kind: 'click', part: 'item' },\n expect: { kind: 'callback', prop: 'onchange', args: ['daily'] },\n },\n {\n name: 'value drives the selected item',\n props: { items: behaviorItems, value: 'daily' },\n expect: { kind: 'attribute', part: 'item', name: 'aria-selected', value: 'true' },\n },\n {\n name: 'a disabled item stays silent',\n props: { items: [{ ...behaviorItems[0], disabled: true }, behaviorItems[1]], value: 'weekly' },\n action: { kind: 'click', part: 'item' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--menuselect-menu-surface', stroke: '--menuselect-menu-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Variant = 'info' | 'success' | 'warning' | 'danger';\nconst variants: Variant[] = ['info', 'success', 'warning', 'danger'];\n\nfunction paintsFor(v: Variant): PaintMap {\n return {\n root: {\n borderTopColor: `--notification-${v}-border`,\n borderTopWidth: `--notification-${v}-border-width`,\n borderRadius: `--notification-${v}-radius`,\n color: `--notification-${v}-text`,\n fontFamily: `--notification-${v}-text-font-family`,\n fontSize: `--notification-${v}-text-font-size`,\n fontWeight: `--notification-${v}-text-font-weight`,\n lineHeight: `--notification-${v}-text-line-height`,\n },\n header: {\n backgroundColor: `--notification-${v}-surface`,\n paddingTop: `--notification-${v}-padding`,\n },\n icon: {\n color: `--notification-${v}-icon`,\n fontSize: `--notification-${v}-icon-size`,\n },\n title: {\n color: `--notification-${v}-title`,\n fontFamily: `--notification-${v}-title-font-family`,\n fontSize: `--notification-${v}-title-font-size`,\n fontWeight: `--notification-${v}-title-font-weight`,\n lineHeight: `--notification-${v}-title-line-height`,\n },\n actionBackdrop: { backgroundColor: `--notification-${v}-action-surface` },\n };\n}\n\nexport const notificationContract: ComponentContract = {\n id: 'notification',\n origin: 'system',\n view: {\n variant: 'Info',\n setup: [\n { kind: 'control', selector: '.toolbar-check:has-text(\"Header button\") input', check: true },\n { kind: 'control', selector: '.toolbar-check:has-text(\"Dismissible\") input', check: true },\n ],\n },\n root: 'root',\n parts: {\n root: '.notification',\n header: '.notification-header',\n icon: '.notification-header i',\n title: '.notification-title',\n actionBackdrop: '.action-button-backdrop',\n actionButton: '.action-button-backdrop button',\n closeButton: '.notification-close',\n },\n properties: variants.map((v) => ({ variant: v.charAt(0).toUpperCase() + v.slice(1), paints: paintsFor(v) })),\n states: [{ state: 'base' }, { state: 'colors' }],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--notification-info-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--notification-info-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--notification-info-border-width', '--notification-info-radius', '--notification-info-padding'],\n unchanged: ['--notification-info-icon-size'],\n aliasedTo: {\n '--notification-info-border-width': '--border-width-3',\n '--notification-info-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--notification-info-border-width' },\n },\n interaction: {\n part: 'actionButton',\n role: 'button',\n cases: [\n {\n name: 'clicking the header action focuses it',\n action: { kind: 'click', part: 'actionButton' },\n expect: { kind: 'focused', part: 'actionButton', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking dismiss reports it',\n props: { title: 'Saved', description: 'Your changes are live.', dismissible: true },\n action: { kind: 'click', part: 'closeButton' },\n expect: { kind: 'callback', prop: 'ondismiss', args: [] },\n },\n {\n name: 'title drives the heading',\n props: { title: 'Saved', description: 'Your changes are live.' },\n expect: { kind: 'text', part: 'title', value: 'Saved' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', stroke: '--notification-info-border' },\n { part: 'header', fill: '--notification-info-surface' },\n ],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const panelContract: ComponentContract = {\n id: 'panel',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.panel',\n },\n properties: [\n {\n paints: {\n root: {\n borderTopColor: '--panel-frame-border',\n borderTopWidth: '--panel-frame-border-width',\n borderRadius: '--panel-frame-radius',\n backgroundImage: '--panel-stage-surface',\n paddingTop: '--panel-stage-padding',\n paddingLeft: '--panel-stage-inline-padding',\n columnGap: '--panel-stage-gap',\n },\n },\n },\n ],\n states: {\n applicable: false,\n reason: 'the editor renders one token group (default) with no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--panel-frame-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n {\n shape: 'gradient',\n variable: '--panel-stage-surface',\n observe: { part: 'root', css: 'backgroundColor' },\n },\n ],\n resetVariable: '--panel-frame-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--panel-frame-border-width', '--panel-frame-radius', '--panel-stage-inline-padding', '--panel-stage-padding'],\n unchanged: ['--panel-stage-gap'],\n aliasedTo: {\n '--panel-frame-border-width': '--border-width-3',\n '--panel-frame-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--panel-frame-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a framed container carries no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a panel declares no callback prop; its content arrives as a snippet',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--panel-stage-surface', stroke: '--panel-frame-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const progressBarContract: ComponentContract = {\n id: 'progressbar',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.progress',\n track: '.progress-track',\n fill: '.progress-fill',\n label: '.progress-label > span:not(.progress-value)',\n value: '.progress-value',\n },\n properties: [\n {\n paints: {\n root: { rowGap: '--progressbar-label-gap' },\n track: {\n backgroundColor: '--progressbar-track-surface',\n borderTopColor: '--progressbar-track-border',\n borderTopWidth: '--progressbar-track-border-width',\n borderRadius: '--progressbar-radius',\n height: '--progressbar-track-height',\n },\n fill: { backgroundColor: '--progressbar-fill' },\n label: {\n color: '--progressbar-label',\n fontFamily: '--progressbar-label-font-family',\n fontSize: '--progressbar-label-font-size',\n fontWeight: '--progressbar-label-font-weight',\n lineHeight: '--progressbar-label-line-height',\n },\n value: {\n color: '--progressbar-value',\n fontFamily: '--progressbar-value-font-family',\n fontSize: '--progressbar-value-font-size',\n fontWeight: '--progressbar-value-font-weight',\n lineHeight: '--progressbar-value-line-height',\n },\n },\n },\n ],\n states: {\n applicable: false,\n reason: 'the editor renders one token group (default) with no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--progressbar-track-border-width',\n observe: { part: 'track', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--progressbar-track-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--progressbar-radius', '--progressbar-track-border-width'],\n unchanged: ['--progressbar-track-height'],\n aliasedTo: {\n '--progressbar-radius': '--radius-none',\n '--progressbar-track-border-width': '--border-width-3',\n },\n observe: { part: 'track', css: 'borderTopWidth', variable: '--progressbar-track-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a progress readout carries no interactive role',\n },\n behavior: {\n cases: [\n {\n name: 'value drives the readout',\n props: { label: 'Upload', value: 60 },\n expect: { kind: 'text', part: 'value', value: '60%' },\n },\n {\n name: 'a value past the end clamps',\n props: { label: 'Upload', value: 140 },\n expect: { kind: 'text', part: 'value', value: '100%' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'track', fill: '--progressbar-track-surface', stroke: '--progressbar-track-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\n/**\n * `assertPaintsFromToken` (used by `properties`) drives a controlled probe\n * value, so a percentage dot-size or a unitless line-height round-trips fine.\n * `assertPaintMap` (used by `states`) instead reads the token's real, already\n * -resolved value straight through `normalize()`, which cannot recompute a\n * percentage or a unitless multiplier outside the original layout context.\n * States therefore skip `dotFill.width` and `label.lineHeight`.\n */\nfunction statePaints(s: 'default' | 'hover' | 'selected', full: boolean): PaintMap {\n const dotFill: PaintMap[string] = { backgroundColor: `--radiobutton-${s}-dot-fill` };\n if (full) dotFill.width = `--radiobutton-${s}-dot-size`;\n const label: PaintMap[string] = {\n color: `--radiobutton-${s}-label`,\n fontFamily: `--radiobutton-${s}-label-font-family`,\n fontSize: `--radiobutton-${s}-label-font-size`,\n fontWeight: `--radiobutton-${s}-label-font-weight`,\n };\n if (full) label.lineHeight = `--radiobutton-${s}-label-line-height`;\n return {\n dot: {\n borderTopColor: `--radiobutton-${s}-dot-border-color`,\n borderTopWidth: `--radiobutton-${s}-dot-border-width`,\n },\n dotFill,\n label,\n };\n}\n\nexport const radioButtonContract: ComponentContract = {\n id: 'radiobutton',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.radio-button',\n dot: '.radio-dot',\n dotFill: { selector: '.radio-dot-fill' },\n label: '.radio-label',\n },\n properties: [\n { paints: statePaints('default', true) },\n { state: 'hover', paints: statePaints('hover', true) },\n { state: 'selected', paints: statePaints('selected', true) },\n ],\n states: [\n { state: 'default' },\n {\n state: 'hover',\n forceClass: 'force-hover',\n paints: statePaints('hover', false),\n },\n {\n state: 'selected',\n forceClass: 'selected',\n paints: statePaints('selected', false),\n },\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--radiobutton-default-dot-border-width',\n observe: { part: 'dot', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--radiobutton-default-dot-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--radiobutton-default-dot-border-width',\n '--radiobutton-hover-dot-border-width',\n '--radiobutton-selected-dot-border-width',\n ],\n unchanged: ['--radiobutton-default-label-font-size'],\n aliasedTo: {\n '--radiobutton-default-dot-border-width': '--border-width-4',\n },\n observe: { part: 'dot', css: 'borderTopWidth', variable: '--radiobutton-default-dot-border-width' },\n },\n interaction: {\n part: 'root',\n role: 'button',\n cases: [\n {\n name: 'clicking a radio option focuses it',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking an option reports it',\n props: { label: 'Weekly' },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onclick', args: [] },\n },\n {\n name: 'label names the option',\n props: { label: 'Weekly' },\n expect: { kind: 'text', part: 'label', value: 'Weekly' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'dot', fill: '--radiobutton-default-dot-fill', stroke: '--radiobutton-default-dot-border-color' }],\n },\n};\n","import type { ComponentContract, PaintMap, SetupStep } from '../componentContract';\n\ntype Variant = 'lg' | 'md' | 'sm';\n\n/** Only the large variant ships its eyebrow and description visible; the other\n * two hide them behind the element switches. */\nconst showOptionalContent: SetupStep[] = [\n { kind: 'control', selector: 'label.element-show-toggle:has-text(\"Show description\") input', check: true },\n { kind: 'control', selector: 'label.element-show-toggle:has-text(\"Show eyebrow\") input', check: true },\n];\n\nfunction variantPaints(v: Variant): PaintMap {\n return {\n root: {\n paddingTop: `--sectiondivider-${v}-padding`,\n borderRadius: `--sectiondivider-${v}-radius`,\n borderTopWidth: `--sectiondivider-${v}-border-width`,\n borderTopColor: `--sectiondivider-${v}-border`,\n boxShadow: `--sectiondivider-${v}-shadow`,\n backgroundImage: `--sectiondivider-${v}-surface`,\n },\n titleRow: { paddingTop: `--sectiondivider-${v}-title-padding` },\n title: {\n color: `--sectiondivider-${v}-title`,\n fontFamily: `--sectiondivider-${v}-title-font-family`,\n fontSize: `--sectiondivider-${v}-title-font-size`,\n fontWeight: `--sectiondivider-${v}-title-font-weight`,\n lineHeight: `--sectiondivider-${v}-title-line-height`,\n letterSpacing: `--sectiondivider-${v}-title-letter-spacing`,\n },\n descriptionRow: { paddingTop: `--sectiondivider-${v}-description-padding` },\n description: {\n color: `--sectiondivider-${v}-description`,\n fontFamily: `--sectiondivider-${v}-description-font-family`,\n fontSize: `--sectiondivider-${v}-description-font-size`,\n fontWeight: `--sectiondivider-${v}-description-font-weight`,\n lineHeight: `--sectiondivider-${v}-description-line-height`,\n },\n eyebrow: {\n paddingTop: `--sectiondivider-${v}-eyebrow-padding`,\n color: `--sectiondivider-${v}-eyebrow`,\n fontFamily: `--sectiondivider-${v}-eyebrow-font-family`,\n fontSize: `--sectiondivider-${v}-eyebrow-font-size`,\n fontWeight: `--sectiondivider-${v}-eyebrow-font-weight`,\n letterSpacing: `--sectiondivider-${v}-eyebrow-letter-spacing`,\n },\n hairline: {\n backgroundColor: `--sectiondivider-${v}-hairline-color`,\n height: `--sectiondivider-${v}-hairline-width`,\n },\n };\n}\n\nexport const sectionDividerContract: ComponentContract = {\n id: 'sectiondivider',\n origin: 'system',\n view: { variant: 'Large', setup: showOptionalContent },\n root: 'root',\n parts: {\n root: '.section-divider',\n titleRow: '.title-row',\n title: '.divider-label',\n descriptionRow: '.description-row',\n description: '.divider-description',\n eyebrow: '.divider-eyebrow',\n hairline: '.sd-hairline',\n },\n properties: [\n { variant: 'Large', setup: showOptionalContent, paints: variantPaints('lg') },\n { variant: 'Medium', setup: showOptionalContent, paints: variantPaints('md') },\n { variant: 'Small', setup: showOptionalContent, paints: variantPaints('sm') },\n ],\n states: {\n applicable: false,\n reason: 'each variant is one full preset with one state, so the editor renders no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--sectiondivider-lg-hairline-color',\n observe: { part: 'hairline', css: 'backgroundColor' },\n },\n {\n shape: 'gradient',\n variable: '--sectiondivider-lg-surface',\n observe: { part: 'root', css: 'backgroundColor' },\n },\n {\n shape: 'literal',\n control: '.sd-intrinsic-row:has(.property-label:text-is(\"alignment\")) select',\n variable: '--sectiondivider-lg-align',\n observe: { part: 'root', css: 'textAlign' },\n },\n ],\n resetVariable: '--sectiondivider-lg-hairline-color',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--sectiondivider-lg-radius',\n '--sectiondivider-lg-border-width',\n '--sectiondivider-lg-hairline-width',\n '--sectiondivider-lg-hairline-color',\n ],\n unchanged: [\n '--sectiondivider-lg-padding',\n '--sectiondivider-lg-shadow',\n '--sectiondivider-lg-title',\n '--sectiondivider-lg-border',\n '--sectiondivider-lg-title-font-size',\n ],\n aliasedTo: {\n '--sectiondivider-lg-radius': '--radius-none',\n '--sectiondivider-lg-border-width': '--border-width-3',\n '--sectiondivider-lg-hairline-width': '--border-width-3',\n },\n observe: { part: 'root', css: 'borderRadius', variable: '--sectiondivider-lg-radius' },\n },\n interaction: {\n applicable: false,\n reason: 'a divider is a static banner: no interactive role, nothing focusable, no pointer behaviour',\n },\n behavior: {\n applicable: false,\n reason: 'a divider declares no callback prop and answers no event',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'hairline', fill: '--sectiondivider-lg-hairline-color' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nconst behaviorSegments = [\n { value: 'grid', label: 'Grid' },\n { value: 'list', label: 'List' },\n];\n\nexport const segmentedControlContract: ComponentContract = {\n id: 'segmentedcontrol',\n origin: 'system',\n view: { state: 'selected option' },\n root: 'root',\n parts: {\n root: '.segmented-control',\n segment: '.segment',\n icon: '.segment i',\n selectedSegment: '.segment.selected',\n selectedIcon: '.segment.selected i',\n hairline: '.segment-hairline',\n },\n properties: [\n {\n state: 'control bar',\n paints: {\n root: {\n backgroundColor: '--segmentedcontrol-bar-surface',\n borderTopColor: '--segmentedcontrol-bar-border',\n borderTopWidth: '--segmentedcontrol-bar-border-width',\n borderRadius: '--segmentedcontrol-bar-radius',\n columnGap: '--segmentedcontrol-bar-gap',\n paddingTop: '--segmentedcontrol-bar-padding',\n },\n hairline: {\n backgroundColor: '--segmentedcontrol-hairline-color',\n width: '--segmentedcontrol-hairline-width',\n marginTop: '--segmentedcontrol-hairline-inset',\n },\n },\n },\n {\n state: 'option base',\n paints: {\n segment: {\n paddingTop: '--segmentedcontrol-option-padding',\n columnGap: '--segmentedcontrol-option-gap',\n borderRadius: '--segmentedcontrol-selected-radius',\n },\n icon: { fontSize: '--segmentedcontrol-option-icon-size' },\n },\n },\n {\n state: 'default option',\n paints: {\n segment: {\n lineHeight: '--segmentedcontrol-option-text-line-height',\n },\n },\n },\n {\n state: 'selected option',\n paints: { selectedSegment: { lineHeight: '--segmentedcontrol-selected-text-line-height' } },\n },\n {\n state: 'disabled option',\n paints: { segment: { lineHeight: '--segmentedcontrol-disabled-text-line-height' } },\n },\n {\n state: 'hover option',\n paints: { segment: { lineHeight: '--segmentedcontrol-option-hover-text-line-height' } },\n },\n {\n setup: [{ kind: 'control', selector: '.preview-actions select', value: 'small' }],\n paints: {\n root: { borderRadius: '--segmentedcontrol-bar-small-radius', paddingTop: '--segmentedcontrol-bar-small-padding' },\n segment: {\n borderRadius: '--segmentedcontrol-selected-small-radius',\n paddingTop: '--segmentedcontrol-option-small-padding',\n columnGap: '--segmentedcontrol-option-small-gap',\n fontSize: '--segmentedcontrol-option-small-text-font-size',\n lineHeight: '--segmentedcontrol-option-small-text-line-height',\n },\n icon: { fontSize: '--segmentedcontrol-option-small-icon-size' },\n hairline: { width: '--segmentedcontrol-small-hairline-width', marginTop: '--segmentedcontrol-small-hairline-inset' },\n },\n },\n ],\n states: [\n { state: 'control bar' },\n { state: 'option base' },\n {\n state: 'default option',\n paints: {\n icon: { color: '--segmentedcontrol-option-icon' },\n segment: {\n color: '--segmentedcontrol-option-text',\n fontFamily: '--segmentedcontrol-option-text-font-family',\n fontSize: '--segmentedcontrol-option-text-font-size',\n fontWeight: '--segmentedcontrol-option-text-font-weight',\n },\n },\n },\n {\n state: 'selected option',\n paints: {\n selectedSegment: {\n backgroundColor: '--segmentedcontrol-selected-surface',\n outlineColor: '--segmentedcontrol-selected-border',\n outlineWidth: '--segmentedcontrol-selected-border-width',\n color: '--segmentedcontrol-selected-text',\n fontFamily: '--segmentedcontrol-selected-text-font-family',\n fontSize: '--segmentedcontrol-selected-text-font-size',\n fontWeight: '--segmentedcontrol-selected-text-font-weight',\n },\n selectedIcon: { color: '--segmentedcontrol-selected-icon' },\n },\n },\n {\n state: 'hover option',\n paints: {\n segment: {\n backgroundColor: '--segmentedcontrol-option-hover-surface',\n color: '--segmentedcontrol-option-hover-text',\n fontFamily: '--segmentedcontrol-option-hover-text-font-family',\n fontSize: '--segmentedcontrol-option-hover-text-font-size',\n fontWeight: '--segmentedcontrol-option-hover-text-font-weight',\n },\n icon: { color: '--segmentedcontrol-option-hover-icon' },\n },\n },\n {\n state: 'disabled option',\n attributes: { segment: { disabled: '' } },\n paints: {\n segment: {\n backgroundColor: '--segmentedcontrol-disabled-surface',\n color: '--segmentedcontrol-disabled-text',\n fontFamily: '--segmentedcontrol-disabled-text-font-family',\n fontSize: '--segmentedcontrol-disabled-text-font-size',\n fontWeight: '--segmentedcontrol-disabled-text-font-weight',\n },\n icon: { color: '--segmentedcontrol-disabled-icon' },\n },\n },\n ],\n uncovered: {\n '--segmentedcontrol-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--segmentedcontrol-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'control bar',\n variable: '--segmentedcontrol-bar-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--segmentedcontrol-bar-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--segmentedcontrol-bar-border-width', '--segmentedcontrol-bar-radius', '--segmentedcontrol-option-padding'],\n unchanged: ['--segmentedcontrol-option-icon-size'],\n aliasedTo: {\n '--segmentedcontrol-bar-border-width': '--border-width-3',\n '--segmentedcontrol-bar-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--segmentedcontrol-bar-border-width' },\n },\n interaction: {\n part: 'segment',\n role: 'radio',\n cases: [\n {\n name: 'clicking a segment checks it',\n action: { kind: 'click', part: 'segment' },\n expect: { kind: 'attribute', part: 'segment', name: 'aria-checked', value: 'true' },\n },\n {\n name: 'a disabled control refuses focus',\n state: 'disabled option',\n action: { kind: 'click', part: 'segment' },\n expect: { kind: 'focused', part: 'segment', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking a segment asks for its value',\n props: { segments: behaviorSegments, value: 'list' },\n action: { kind: 'click', part: 'segment' },\n expect: { kind: 'callback', prop: 'onchange', args: ['grid'] },\n },\n {\n name: 'value drives the checked segment',\n props: { segments: behaviorSegments, value: 'grid' },\n expect: { kind: 'attribute', part: 'segment', name: 'aria-checked', value: 'true' },\n },\n {\n name: 'a disabled control stays silent',\n props: { segments: behaviorSegments, value: 'list', disabled: true },\n action: { kind: 'click', part: 'segment' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', fill: '--segmentedcontrol-bar-surface', stroke: '--segmentedcontrol-bar-border' },\n { part: 'selectedSegment', fill: '--segmentedcontrol-selected-surface', stroke: '--segmentedcontrol-selected-border' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap, SetupStep } from '../componentContract';\n\n/** Both the top-level part tab and its sub-state live in one string, joined by\n * \" / \" in the DOM but rendered as two separate strips; reaching a sub-state\n * other than the first needs an extra click into the sub-strip. */\nfunction sub(label: string): SetupStep[] {\n return [{ kind: 'control', selector: `.tabs-selectors.substrip .state-tab-btn:has-text(\"${label}\")` }];\n}\n\nfunction titlePaints(s: 'default' | 'hover' | 'selected'): PaintMap {\n return {\n title: {\n backgroundColor: `--sidenavigation-title-${s}-surface`,\n borderTopColor: `--sidenavigation-title-${s}-border`,\n borderTopWidth: `--sidenavigation-title-${s}-border-width`,\n borderLeftColor: `--sidenavigation-title-${s}-indicator`,\n borderLeftWidth: `--sidenavigation-title-${s}-indicator-width`,\n paddingTop: `--sidenavigation-title-${s}-padding`,\n },\n titleLinkBox: {\n color: `--sidenavigation-title-${s}-label`,\n fontFamily: `--sidenavigation-title-${s}-label-font-family`,\n fontSize: `--sidenavigation-title-${s}-label-font-size`,\n fontWeight: `--sidenavigation-title-${s}-label-font-weight`,\n lineHeight: `--sidenavigation-title-${s}-label-line-height`,\n },\n };\n}\n\nfunction togglePaints(s: 'default' | 'hover'): PaintMap {\n return {\n toggle: {\n backgroundColor: `--sidenavigation-toggle-${s}-surface`,\n borderTopColor: `--sidenavigation-toggle-${s}-border`,\n borderTopWidth: `--sidenavigation-toggle-${s}-border-width`,\n borderRadius: `--sidenavigation-toggle-${s}-radius`,\n paddingTop: `--sidenavigation-toggle-${s}-padding`,\n color: `--sidenavigation-toggle-${s}-icon`,\n },\n toggleIcon: { fontSize: `--sidenavigation-toggle-${s}-icon-size` },\n };\n}\n\nfunction sectionPaints(part: string, labelPart: string, s: 'default' | 'hover' | 'selected'): PaintMap {\n return {\n [part]: {\n backgroundColor: `--sidenavigation-section-${s}-surface`,\n borderLeftColor: `--sidenavigation-section-${s}-indicator`,\n borderLeftWidth: `--sidenavigation-section-${s}-indicator-width`,\n },\n [labelPart]: {\n color: `--sidenavigation-section-${s}-text`,\n fontFamily: `--sidenavigation-section-${s}-text-font-family`,\n fontSize: `--sidenavigation-section-${s}-text-font-size`,\n fontWeight: `--sidenavigation-section-${s}-text-font-weight`,\n lineHeight: `--sidenavigation-section-${s}-text-line-height`,\n },\n };\n}\n\nfunction itemPaints(part: string, s: 'default' | 'hover' | 'selected'): PaintMap {\n return {\n [part]: {\n backgroundColor: `--sidenavigation-item-${s}-surface`,\n borderLeftColor: `--sidenavigation-item-${s}-indicator`,\n borderLeftWidth: `--sidenavigation-item-${s}-indicator-width`,\n paddingTop: `--sidenavigation-item-${s}-padding`,\n color: `--sidenavigation-item-${s}-text`,\n fontFamily: `--sidenavigation-item-${s}-text-font-family`,\n fontSize: `--sidenavigation-item-${s}-text-font-size`,\n fontWeight: `--sidenavigation-item-${s}-text-font-weight`,\n lineHeight: `--sidenavigation-item-${s}-text-line-height`,\n },\n };\n}\n\nfunction footerPaints(s: 'default' | 'hover' | 'selected'): PaintMap {\n return {\n footer: {\n backgroundColor: `--sidenavigation-footer-${s}-surface`,\n borderLeftColor: `--sidenavigation-footer-${s}-indicator`,\n borderLeftWidth: `--sidenavigation-footer-${s}-indicator-width`,\n paddingTop: `--sidenavigation-footer-${s}-padding`,\n columnGap: `--sidenavigation-footer-${s}-gap`,\n color: `--sidenavigation-footer-${s}-text`,\n fontFamily: `--sidenavigation-footer-${s}-text-font-family`,\n fontSize: `--sidenavigation-footer-${s}-text-font-size`,\n fontWeight: `--sidenavigation-footer-${s}-text-font-weight`,\n lineHeight: `--sidenavigation-footer-${s}-text-line-height`,\n },\n footerIcon: {\n color: `--sidenavigation-footer-${s}-icon`,\n fontSize: `--sidenavigation-footer-${s}-icon-size`,\n },\n };\n}\n\nexport const sideNavigationContract: ComponentContract = {\n id: 'sidenavigation',\n origin: 'system',\n // Section has no currentPath-driven selected state (unlike Item, whose\n // demo path lands inside section-1): it lights up only through the force\n // mechanism behind the \"Selected\" sub-tab, so the inventory's one view has\n // to land there for `sectionSelected` to resolve at all.\n view: { state: 'Section', setup: sub('Selected') },\n root: 'root',\n parts: {\n root: '.sidenavigation',\n title: '.sn-title',\n titleLinkBox: '.sn-title-label',\n toggle: '.sn-toggle',\n toggleIcon: '.sn-toggle i',\n sectionWrap: '.sn-section',\n section: '.sn-section-header:not(.selected)',\n sectionLabel: '.sn-section-header:not(.selected) .section-label',\n sectionSelected: '.sn-section-header.selected',\n sectionLabelSelected: '.sn-section-header.selected .section-label',\n item: '.sn-item:not(.selected)',\n itemSelected: '.sn-item.selected',\n footer: '.sn-footer',\n footerIcon: '.sn-footer i',\n },\n properties: [\n {\n state: 'Panel',\n setup: [],\n paints: {\n root: {\n backgroundColor: '--sidenavigation-panel-surface',\n borderRightColor: '--sidenavigation-panel-border',\n borderRightWidth: '--sidenavigation-panel-border-width',\n paddingTop: '--sidenavigation-panel-padding',\n },\n item: { paddingLeft: '--sidenavigation-panel-item-padding' },\n footer: { marginTop: '--sidenavigation-panel-footer-gap' },\n sectionWrap: { marginTop: '--sidenavigation-panel-section-gap' },\n },\n },\n {\n state: 'Title Block',\n setup: [],\n paints: {\n title: { columnGap: '--sidenavigation-title-gap', borderRadius: '--sidenavigation-title-radius' },\n titleLinkBox: {\n backgroundColor: '--sidenavigation-title-label-surface',\n borderTopColor: '--sidenavigation-title-label-border',\n borderTopWidth: '--sidenavigation-title-label-border-width',\n borderRadius: '--sidenavigation-title-label-radius',\n paddingTop: '--sidenavigation-title-label-padding',\n },\n },\n },\n { state: 'Title', setup: [], paints: titlePaints('default') },\n { state: 'Title', setup: sub('Hover'), paints: titlePaints('hover') },\n { state: 'Title', setup: sub('Selected'), paints: titlePaints('selected') },\n { state: 'Toggle', setup: [], paints: togglePaints('default') },\n { state: 'Toggle', setup: sub('Hover'), paints: togglePaints('hover') },\n { state: 'Section', setup: [], paints: sectionPaints('section', 'sectionLabel', 'default') },\n { state: 'Section', setup: sub('Hover'), paints: sectionPaints('section', 'sectionLabel', 'hover') },\n { state: 'Section', setup: sub('Selected'), paints: sectionPaints('sectionSelected', 'sectionLabelSelected', 'selected') },\n { state: 'Item', setup: [], paints: itemPaints('item', 'default') },\n { state: 'Item', setup: sub('Hover'), paints: itemPaints('item', 'hover') },\n { state: 'Item', setup: [], paints: itemPaints('itemSelected', 'selected') },\n { state: 'Footer', setup: [], paints: footerPaints('default') },\n { state: 'Footer', setup: sub('Hover'), paints: footerPaints('hover') },\n { state: 'Footer', setup: sub('Selected'), paints: footerPaints('selected') },\n ],\n states: [\n { state: 'Panel', setup: [] },\n { state: 'Title', setup: [] },\n { state: 'Title Block', setup: [] },\n { state: 'Toggle', setup: [] },\n { state: 'Section', setup: [] },\n { state: 'Item', setup: [] },\n { state: 'Footer', setup: [] },\n { state: 'Animation', setup: [] },\n ],\n uncovered: {\n '--sidenavigation-open-duration': 'consumed by a width transition, no probe covers duration',\n '--sidenavigation-open-easing': 'consumed by a width transition, no probe covers an easing curve',\n '--sidenavigation-close-duration': 'consumed by a width transition, no probe covers duration',\n '--sidenavigation-close-easing': 'consumed by a width transition, no probe covers an easing curve',\n '--sidenavigation-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--sidenavigation-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'Panel',\n setup: [],\n variable: '--sidenavigation-panel-border-width',\n observe: { part: 'root', css: 'borderRightWidth' },\n },\n ],\n resetVariable: '--sidenavigation-panel-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--sidenavigation-panel-border-width', '--sidenavigation-title-default-border-width'],\n unchanged: ['--sidenavigation-toggle-default-icon-size'],\n aliasedTo: {\n '--sidenavigation-panel-border-width': '--border-width-3',\n '--sidenavigation-title-default-border-width': '--border-width-3',\n },\n observe: { part: 'root', css: 'borderRightWidth', variable: '--sidenavigation-panel-border-width' },\n },\n interaction: {\n part: 'toggle',\n role: 'button',\n cases: [\n {\n name: 'clicking the toggle collapses the rail',\n action: { kind: 'click', part: 'toggle' },\n expect: { kind: 'attribute', part: 'toggle', name: 'aria-expanded', value: 'false' },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking the rail toggle reports it',\n props: { title: 'Docs' },\n action: { kind: 'click', part: 'toggle' },\n expect: { kind: 'callback', prop: 'ontoggle', args: [] },\n },\n {\n name: 'open drives the toggle',\n props: { title: 'Docs', open: false },\n expect: { kind: 'attribute', part: 'toggle', name: 'aria-expanded', value: 'false' },\n },\n {\n name: 'clicking leaves the rail where the prop put it',\n props: { title: 'Docs', open: true },\n action: { kind: 'click', part: 'toggle' },\n expect: { kind: 'attribute', part: 'toggle', name: 'aria-expanded', value: 'true' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--sidenavigation-panel-surface', stroke: '--sidenavigation-panel-border' }],\n },\n};\n","import type { ComponentContract, PaintMap, StateExpectation } from '../componentContract';\n\ntype Variant = 'single' | 'range';\n\nfunction variantPaints(v: Variant): PaintMap {\n return {\n track: {\n backgroundColor: `--slider-${v}-track-surface`,\n borderTopColor: `--slider-${v}-track-border`,\n borderTopWidth: `--slider-${v}-track-border-width`,\n borderRadius: `--slider-${v}-track-radius`,\n height: `--slider-${v}-track-height`,\n },\n fill: { backgroundColor: `--slider-${v}-fill` },\n thumb: {\n backgroundColor: `--slider-${v}-thumb-surface`,\n borderTopColor: `--slider-${v}-thumb-border`,\n borderTopWidth: `--slider-${v}-thumb-border-width`,\n borderRadius: `--slider-${v}-thumb-radius`,\n width: `--slider-${v}-thumb-size`,\n boxShadow: `--slider-${v}-thumb-shadow`,\n },\n };\n}\n\nfunction variantStates(v: Variant, variant: string): StateExpectation[] {\n return [\n {\n variant,\n state: 'default',\n attributes: { input: { disabled: null } },\n paints: { thumb: { backgroundColor: `--slider-${v}-thumb-surface` } },\n },\n {\n variant,\n state: 'hover',\n forceClass: 'force-hover',\n paints: {\n thumb: {\n backgroundColor: `--slider-${v}-hover-thumb-surface`,\n borderTopColor: `--slider-${v}-hover-thumb-border`,\n },\n },\n },\n {\n variant,\n state: 'disabled',\n attributes: { input: { disabled: '' } },\n paints: {\n track: { backgroundColor: `--slider-${v}-disabled-track-surface` },\n fill: { backgroundColor: `--slider-${v}-disabled-fill` },\n thumb: {\n backgroundColor: `--slider-${v}-disabled-thumb-surface`,\n borderTopColor: `--slider-${v}-disabled-thumb-border`,\n },\n },\n },\n ];\n}\n\n/**\n * Both variants. Their rows are linked by default, so an edit to one moves the\n * other until a user unlinks them; the locators are the same and only the\n * token prefix differs.\n */\nexport const sliderContract: ComponentContract = {\n id: 'slider',\n origin: 'system',\n view: { variant: 'Single' },\n root: 'root',\n parts: {\n root: '.slider',\n track: '.slider-track',\n fill: '.slider-fill',\n thumb: '.cap',\n input: 'input.thumb',\n label: '.slider-label > span:not(.slider-value)',\n value: '.slider-value',\n },\n properties: [\n {\n variant: 'Single',\n paints: {\n ...variantPaints('single'),\n root: { rowGap: '--slider-label-gap' },\n label: {\n color: '--slider-label',\n fontFamily: '--slider-label-font-family',\n fontSize: '--slider-label-font-size',\n fontWeight: '--slider-label-font-weight',\n lineHeight: '--slider-label-line-height',\n },\n value: {\n color: '--slider-value',\n fontFamily: '--slider-value-font-family',\n fontSize: '--slider-value-font-size',\n fontWeight: '--slider-value-font-weight',\n lineHeight: '--slider-value-line-height',\n },\n },\n },\n { variant: 'Range', paints: variantPaints('range') },\n ],\n states: [\n ...variantStates('single', 'Single'),\n ...variantStates('range', 'Range'),\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--slider-single-track-surface',\n observe: { part: 'track', css: 'backgroundColor' },\n },\n {\n shape: 'opacity',\n variable: '--slider-single-fill',\n observe: { part: 'fill', css: 'backgroundColor' },\n },\n ],\n resetVariable: '--slider-single-track-surface',\n },\n theme: {\n theme: 'ocean',\n changed: [\n '--slider-single-track-surface',\n '--slider-single-fill',\n '--slider-single-thumb-surface',\n ],\n unchanged: [\n '--slider-single-track-height',\n '--slider-single-track-radius',\n '--slider-single-thumb-size',\n '--slider-single-track-border-width',\n ],\n aliasedTo: {\n '--slider-single-track-surface': '--surface-neutral-lowest',\n '--slider-single-fill': '--surface-brand-high',\n },\n observe: { part: 'track', css: 'backgroundColor', variable: '--slider-single-track-surface' },\n },\n interaction: {\n part: 'input',\n role: 'slider',\n cases: [\n {\n name: 'arrow right raises the value',\n action: { kind: 'press', part: 'input', key: 'ArrowRight' },\n expect: { kind: 'valueMoves', part: 'input', direction: 'up' },\n },\n {\n name: 'arrow left lowers the value',\n action: { kind: 'press', part: 'input', key: 'ArrowLeft' },\n expect: { kind: 'valueMoves', part: 'input', direction: 'down' },\n },\n {\n name: 'Home takes the value to the floor',\n action: { kind: 'press', part: 'input', key: 'Home' },\n expect: { kind: 'valueBecomes', part: 'input', value: '0' },\n },\n {\n name: 'dragging the thumb along the track raises the value',\n action: { kind: 'dragTo', part: 'thumb', along: 'track', fraction: 0.85 },\n expect: { kind: 'valueMoves', part: 'input', direction: 'up' },\n },\n {\n name: 'taking hold of the thumb focuses the slider',\n action: { kind: 'dragTo', part: 'thumb', along: 'track', fraction: 0.5 },\n expect: { kind: 'focused', part: 'input', value: true },\n },\n {\n name: 'a disabled slider ignores the arrow keys',\n state: 'disabled',\n action: { kind: 'press', part: 'input', key: 'ArrowRight' },\n expect: { kind: 'valueHolds', part: 'input' },\n },\n {\n name: 'a disabled slider refuses focus',\n state: 'disabled',\n action: { kind: 'dragTo', part: 'thumb', along: 'track', fraction: 0.5 },\n expect: { kind: 'focused', part: 'input', value: false },\n },\n ],\n },\n behavior: {\n // No disabled case: a range reports through `input`, and a dispatched\n // input event reaches a disabled control, so the case would assert the\n // environment rather than the slider.\n cases: [\n {\n name: 'moving the thumb reports the value',\n props: { label: 'Level', value: 30 },\n action: { kind: 'input', part: 'input', value: '70' },\n expect: { kind: 'callback', prop: 'onchange', args: [70] },\n },\n {\n name: 'a range thumb reports both ends',\n props: { variant: 'range', low: 25, high: 75 },\n action: { kind: 'input', part: 'input', value: '10' },\n expect: { kind: 'callback', prop: 'onrangechange', args: [10, 75] },\n },\n {\n name: 'value drives the readout',\n props: { label: 'Level', value: 30 },\n expect: { kind: 'text', part: 'value', value: '30' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n {\n part: 'track',\n fill: '--slider-single-track-surface',\n stroke: '--slider-single-track-border',\n },\n { part: 'fill', fill: '--slider-single-fill' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\n/**\n * `full` adds `lineHeight`. `assertPaintsFromToken` (properties) drives a\n * controlled pixel probe, so a unitless line-height round-trips fine there;\n * `assertPaintMap` (states) reads the token's real, already-resolved value\n * through `normalize()`, which cannot recompute a unitless multiplier outside\n * the tab's own font-size context. States skip it; properties cover it.\n */\nfunction tabPaints(part: string, iconPart: string, s: string, full: boolean): PaintMap {\n const tab: PaintMap[string] = {\n backgroundColor: `--tabbar-${s}-surface`,\n borderTopColor: `--tabbar-${s}-tab-border-color`,\n borderTopWidth: `--tabbar-${s}-tab-border-width`,\n borderBottomColor: `--tabbar-${s}-border`,\n borderBottomWidth: `--tabbar-${s}-indicator-width`,\n borderTopLeftRadius: `--tabbar-${s}-tab-top-radius`,\n borderBottomLeftRadius: `--tabbar-${s}-tab-bottom-radius`,\n paddingTop: `--tabbar-${s}-padding`,\n color: `--tabbar-${s}-text`,\n fontFamily: `--tabbar-${s}-text-font-family`,\n fontSize: `--tabbar-${s}-text-font-size`,\n fontWeight: `--tabbar-${s}-text-font-weight`,\n };\n if (full) tab.lineHeight = `--tabbar-${s}-text-line-height`;\n return {\n [part]: tab,\n [iconPart]: { fontSize: `--tabbar-${s}-icon-size` },\n };\n}\n\nconst behaviorTabs = [\n { id: 'one', label: 'One' },\n { id: 'two', label: 'Two' },\n];\n\nexport const tabBarContract: ComponentContract = {\n id: 'tabbar',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.tab-bar',\n tab: '.tab:not(.selected):not(:disabled)',\n icon: '.tab:not(.selected):not(:disabled) i',\n tabSelected: '.tab.selected',\n selectedIcon: '.tab.selected i',\n disabledTab: '.tab:disabled',\n disabledIcon: '.tab:disabled i',\n // Position-stable: clicking `tab` (\".tab:not(.selected)\") makes that very\n // tab selected, which would invalidate that selector out from under a\n // focus check re-resolved after the click.\n secondTab: '.tab:nth-of-type(2)',\n },\n properties: [\n {\n state: 'bar',\n paints: {\n root: {\n borderBottomColor: '--tabbar-bar-hairline-color',\n borderBottomWidth: '--tabbar-bar-hairline-width',\n marginTop: '--tabbar-bar-top-margin',\n paddingBottom: '--tabbar-bar-bottom-padding',\n marginBottom: '--tabbar-bar-bottom-margin',\n columnGap: '--tabbar-tab-gap',\n },\n },\n },\n { state: 'default tab', paints: tabPaints('tab', 'icon', 'default', true) },\n { state: 'hover tab', paints: tabPaints('tab', 'icon', 'hover', true) },\n { state: 'selected tab', paints: tabPaints('tabSelected', 'selectedIcon', 'selected', true) },\n { state: 'disabled tab', paints: tabPaints('disabledTab', 'disabledIcon', 'disabled', true) },\n ],\n states: [\n { state: 'bar' },\n { state: 'default tab', paints: tabPaints('tab', 'icon', 'default', false) },\n { state: 'hover tab', paints: tabPaints('tab', 'icon', 'hover', false) },\n { state: 'selected tab', paints: tabPaints('tabSelected', 'selectedIcon', 'selected', false) },\n {\n state: 'disabled tab',\n attributes: { disabledTab: { disabled: '' } },\n paints: tabPaints('disabledTab', 'disabledIcon', 'disabled', false),\n },\n ],\n uncovered: {\n '--tabbar-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--tabbar-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'default tab',\n variable: '--tabbar-default-tab-border-width',\n observe: { part: 'tab', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--tabbar-default-tab-border-width',\n },\n theme: {\n theme: 'halloween',\n // The indicator width is the canary for re-migration replay: the tabbar\n // pair (2026-05-29-tabbar-indicator-thickness-to-per-state-width,\n // 2026-09-07-stroke-role-renames) rewrites it to --border-width-2 if a\n // reader migrates a theme-embedded config off a stamp of 0 instead of the\n // theme's componentSchemaVersion.\n changed: [\n '--tabbar-default-tab-border-width',\n '--tabbar-default-padding',\n '--tabbar-default-indicator-width',\n ],\n unchanged: ['--tabbar-default-icon-size'],\n aliasedTo: {\n '--tabbar-default-tab-border-width': '--border-width-2',\n '--tabbar-default-indicator-width': '--border-width-4',\n },\n observe: { part: 'tab', css: 'borderTopWidth', variable: '--tabbar-default-tab-border-width' },\n },\n interaction: {\n part: 'secondTab',\n role: 'button',\n cases: [\n {\n name: 'clicking a tab focuses it',\n action: { kind: 'click', part: 'secondTab' },\n expect: { kind: 'focused', part: 'secondTab', value: true },\n },\n {\n name: 'a disabled tab refuses focus',\n state: 'disabled tab',\n action: { kind: 'click', part: 'disabledTab' },\n expect: { kind: 'focused', part: 'disabledTab', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking a tab asks for it',\n props: { tabs: behaviorTabs, value: 'one' },\n action: { kind: 'click', part: 'secondTab' },\n expect: { kind: 'callback', prop: 'onchange', args: ['two'] },\n },\n {\n name: 'clicking leaves the selection where the prop put it',\n props: { tabs: behaviorTabs, value: 'one' },\n action: { kind: 'click', part: 'secondTab' },\n expect: { kind: 'text', part: 'tabSelected', value: 'One' },\n },\n {\n name: 'a disabled tab stays silent',\n props: { tabs: [behaviorTabs[0], { ...behaviorTabs[1], disabled: true }], value: 'one' },\n action: { kind: 'click', part: 'secondTab' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'tab', fill: '--tabbar-default-surface', stroke: '--tabbar-default-border' },\n { part: 'tabSelected', fill: '--tabbar-selected-surface', stroke: '--tabbar-selected-border' },\n ],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const tableContract: ComponentContract = {\n id: 'table',\n origin: 'system',\n root: 'wrapper',\n parts: {\n wrapper: '.table-wrapper',\n th: '.table-wrapper th',\n td: '.table-wrapper td',\n },\n properties: [\n {\n paints: {\n wrapper: {\n backgroundColor: '--table-default-surface',\n borderTopColor: '--table-default-border',\n borderTopWidth: '--table-default-border-width',\n borderRadius: '--table-default-radius',\n boxShadow: '--table-default-shadow',\n },\n th: {\n backgroundColor: '--table-default-header-surface',\n color: '--table-default-header-text',\n fontFamily: '--table-default-header-font-family',\n fontSize: '--table-default-header-font-size',\n fontWeight: '--table-default-header-font-weight',\n lineHeight: '--table-default-header-line-height',\n borderBottomColor: '--table-default-header-hairline-color',\n borderBottomWidth: '--table-default-header-hairline-width',\n paddingTop: '--table-default-header-padding',\n borderRightColor: '--table-default-column-hairline-color',\n borderRightWidth: '--table-default-column-hairline-width',\n },\n td: {\n backgroundColor: '--table-default-row-surface',\n color: '--table-default-cell-text',\n fontFamily: '--table-default-cell-font-family',\n fontSize: '--table-default-cell-font-size',\n fontWeight: '--table-default-cell-font-weight',\n lineHeight: '--table-default-cell-line-height',\n paddingTop: '--table-default-cell-padding',\n borderBottomColor: '--table-default-row-hairline-color',\n borderBottomWidth: '--table-default-row-hairline-width',\n },\n },\n },\n ],\n states: [\n { state: 'wrapper' },\n { state: 'header' },\n { state: 'cell' },\n { state: 'row' },\n { state: 'column' },\n ],\n uncovered: {\n '--table-default-row-stripe-surface': 'layered as a background-image on every even row; a probe cannot pin a single verbatim computed value to that selector',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--table-default-border-width',\n observe: { part: 'wrapper', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--table-default-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--table-default-border-width',\n '--table-default-radius',\n '--table-default-header-hairline-width',\n '--table-default-header-padding',\n ],\n unchanged: ['--table-default-header-font-size'],\n aliasedTo: {\n '--table-default-border-width': '--border-width-4',\n '--table-default-radius': '--radius-none',\n },\n observe: { part: 'wrapper', css: 'borderTopWidth', variable: '--table-default-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a styled table wrapper carries no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a table wrapper declares no callback prop; its rows arrive as a snippet',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'wrapper', fill: '--table-default-surface', stroke: '--table-default-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\nconst defaultPaints: PaintMap = {\n root: { columnGap: '--toggle-gap' },\n track: {\n backgroundColor: '--toggle-track-surface',\n borderTopColor: '--toggle-track-border',\n borderTopWidth: '--toggle-track-border-width',\n borderRadius: '--toggle-track-radius',\n },\n thumb: {\n backgroundColor: '--toggle-thumb-surface',\n borderTopColor: '--toggle-thumb-border',\n width: '--toggle-thumb-size',\n left: '--toggle-track-padding',\n },\n label: {\n color: '--toggle-label',\n fontFamily: '--toggle-label-font-family',\n fontSize: '--toggle-label-font-size',\n fontWeight: '--toggle-label-font-weight',\n },\n};\n\nexport const toggleContract: ComponentContract = {\n id: 'toggle',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.toggle',\n track: '.track',\n thumb: '.thumb',\n label: '.label',\n },\n properties: [{ paints: defaultPaints }],\n states: [\n {\n state: 'default',\n attributes: { root: { 'aria-checked': 'false' } },\n },\n {\n state: 'hover',\n forceClass: 'force-hover',\n paints: {\n track: { backgroundColor: '--toggle-hover-track-surface' },\n thumb: { backgroundColor: '--toggle-hover-thumb-surface' },\n },\n },\n {\n state: 'on',\n attributes: { root: { 'aria-checked': 'true' } },\n paints: {\n track: { backgroundColor: '--toggle-on-track-surface', borderTopColor: '--toggle-on-track-border' },\n thumb: { backgroundColor: '--toggle-on-thumb-surface', borderTopColor: '--toggle-on-thumb-border' },\n },\n },\n {\n state: 'on hover',\n forceClass: 'force-hover',\n attributes: { root: { 'aria-checked': 'true' } },\n paints: {\n track: { backgroundColor: '--toggle-on-hover-track-surface' },\n thumb: { backgroundColor: '--toggle-on-hover-thumb-surface' },\n },\n },\n {\n state: 'disabled',\n attributes: { root: { disabled: '' } },\n paints: {\n track: { backgroundColor: '--toggle-disabled-track-surface' },\n thumb: { backgroundColor: '--toggle-disabled-thumb-surface' },\n label: { color: '--toggle-disabled-label' },\n },\n },\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--toggle-track-border-width',\n observe: { part: 'track', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--toggle-track-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--toggle-track-border-width', '--toggle-track-radius'],\n unchanged: ['--toggle-thumb-size', '--toggle-gap'],\n aliasedTo: {\n '--toggle-track-border-width': '--border-width-3',\n '--toggle-track-radius': '--radius-none',\n },\n observe: { part: 'track', css: 'borderTopWidth', variable: '--toggle-track-border-width' },\n },\n interaction: {\n part: 'root',\n role: 'switch',\n // No activation case: Toggle.svelte is controlled (`onclick` only calls\n // `onchange?.(!checked)`, it never flips `checked` itself), and\n // ToggleEditor.svelte's preview drives `checked` off the state tab\n // without wiring `onchange` back to it. Clicking the real control in this\n // demo has no observable effect on `aria-checked`, so an activation case\n // would assert a no-op rather than the switch's behavior.\n cases: [\n {\n name: 'clicking a toggle focuses it',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: true },\n },\n {\n name: 'a disabled toggle refuses focus',\n state: 'disabled',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking an off toggle asks for on',\n props: { checked: false },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onchange', args: [true] },\n },\n {\n name: 'clicking leaves the switch where the prop put it',\n props: { checked: false },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'attribute', part: 'root', name: 'aria-checked', value: 'false' },\n },\n {\n name: 'clicking an on toggle asks for off',\n props: { checked: true },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onchange', args: [false] },\n },\n {\n name: 'checked drives aria-checked',\n props: { checked: true },\n expect: { kind: 'attribute', part: 'root', name: 'aria-checked', value: 'true' },\n },\n {\n name: 'a disabled toggle stays silent',\n props: { checked: false, disabled: true },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'track', fill: '--toggle-track-surface', stroke: '--toggle-track-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const tooltipContract: ComponentContract = {\n id: 'tooltip',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.tooltip',\n arrow: { selector: '.tooltip', pseudo: '::after' },\n },\n properties: [\n {\n paints: {\n root: {\n backgroundColor: '--tooltip-surface',\n color: '--tooltip-text',\n borderTopColor: '--tooltip-border',\n borderTopWidth: '--tooltip-border-width',\n borderRadius: '--tooltip-radius',\n paddingTop: '--tooltip-padding',\n boxShadow: '--tooltip-shadow',\n fontFamily: '--tooltip-text-font-family',\n fontSize: '--tooltip-text-font-size',\n fontWeight: '--tooltip-text-font-weight',\n lineHeight: '--tooltip-text-line-height',\n },\n arrow: {\n borderRightColor: '--tooltip-border',\n borderRightWidth: '--tooltip-border-width',\n },\n },\n },\n ],\n states: {\n applicable: false,\n reason: 'the editor renders one token group (tooltip) with no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--tooltip-border',\n observe: { part: 'root', css: 'borderTopColor' },\n },\n ],\n resetVariable: '--tooltip-border',\n },\n theme: {\n theme: 'halloween',\n changed: ['--tooltip-border-width', '--tooltip-padding', '--tooltip-radius'],\n unchanged: ['--tooltip-text-font-size'],\n aliasedTo: {\n '--tooltip-border-width': '--border-width-3',\n '--tooltip-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--tooltip-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a hint carries no interactive role; visibility follows the trigger element\\'s hover or focus, which this component does not own',\n },\n behavior: {\n cases: [\n {\n name: 'text drives the hint',\n props: { text: 'Copy to clipboard' },\n expect: { kind: 'text', part: 'root', value: 'Copy to clipboard' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--tooltip-surface' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const videoLightboxContract: ComponentContract = {\n id: 'videolightbox',\n origin: 'system',\n root: 'root',\n // The editor renders an `inline` copy of the open lightbox beside the tile,\n // so the overlay and close button are measurable without opening a modal.\n parts: {\n root: '.videolightbox',\n trigger: '.videolightbox-trigger',\n overlay: '.videolightbox-modal.inline',\n closeButton: '.videolightbox-modal.inline .videolightbox-close',\n closeIcon: '.videolightbox-modal.inline .videolightbox-close svg',\n },\n properties: [\n {\n paints: {\n root: {\n backgroundColor: '--videolightbox-tile-surface',\n borderTopColor: '--videolightbox-tile-border',\n borderTopWidth: '--videolightbox-tile-border-width',\n borderRadius: '--videolightbox-tile-radius',\n boxShadow: '--videolightbox-tile-shadow',\n },\n overlay: {\n backgroundColor: '--videolightbox-scrim-surface',\n paddingTop: '--videolightbox-overlay-padding',\n },\n closeButton: {\n backgroundColor: '--videolightbox-chrome-surface',\n borderTopColor: '--videolightbox-chrome-border',\n borderTopWidth: '--videolightbox-chrome-border-width',\n borderRadius: '--videolightbox-chrome-radius',\n color: '--videolightbox-chrome-icon',\n },\n closeIcon: { stroke: '--videolightbox-chrome-icon' },\n },\n },\n // The inline close button has no handler, so the click leaves the pointer\n // resting on it and its real :hover rule applies.\n {\n setup: [{ kind: 'click', part: 'closeButton' }],\n paints: { closeButton: { backgroundColor: '--videolightbox-chrome-hover-surface' } },\n },\n ],\n states: [{ state: 'default' }, { state: 'hover' }],\n uncovered: {\n '--videolightbox-overlay-duration': 'consumed inside the opacity transition shorthand, never a standalone computed value',\n '--videolightbox-overlay-easing': 'consumed inside the opacity transition shorthand, never a standalone computed value',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--videolightbox-tile-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--videolightbox-tile-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--videolightbox-tile-border-width',\n '--videolightbox-tile-radius',\n '--videolightbox-chrome-border-width',\n '--videolightbox-chrome-radius',\n ],\n unchanged: ['--videolightbox-tile-shadow'],\n aliasedTo: {\n '--videolightbox-tile-border-width': '--border-width-2',\n '--videolightbox-tile-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--videolightbox-tile-border-width' },\n },\n interaction: {\n part: 'trigger',\n role: 'button',\n cases: [\n {\n name: 'clicking the still opens the lightbox',\n action: { kind: 'click', part: 'trigger' },\n expect: { kind: 'attribute', part: 'trigger', name: 'aria-expanded', value: 'true' },\n },\n ],\n },\n behavior: {\n applicable: false,\n reason: 'the lightbox declares no callback prop; opening portals a modal and plays media, which happy-dom cannot run',\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', fill: '--videolightbox-tile-surface', stroke: '--videolightbox-tile-border' },\n ],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const videoFrameContract: ComponentContract = {\n id: 'videoframe',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.videoframe-frame',\n clip: '.videoframe-clip',\n trigger: '.videoframe-trigger',\n badge: '.videoframe-badge',\n badgeIcon: '.videoframe-badge svg',\n },\n properties: [\n {\n paints: {\n root: {\n backgroundColor: '--videoframe-frame-surface',\n borderTopColor: '--videoframe-frame-border',\n borderTopWidth: '--videoframe-frame-border-width',\n borderRadius: '--videoframe-frame-radius',\n },\n clip: { backgroundColor: '--videoframe-clip-surface' },\n badge: {\n backgroundColor: '--videoframe-badge-default-surface',\n borderTopColor: '--videoframe-badge-default-border',\n borderTopWidth: '--videoframe-badge-default-border-width',\n width: '--videoframe-badge-default-size',\n color: '--videoframe-badge-default-icon',\n },\n badgeIcon: { width: '--videoframe-badge-default-icon-size' },\n },\n },\n {\n state: 'hover',\n paints: {\n badge: {\n backgroundColor: '--videoframe-badge-hover-surface',\n borderTopColor: '--videoframe-badge-hover-border',\n color: '--videoframe-badge-hover-icon',\n },\n },\n },\n ],\n states: [{ state: 'default' }, { state: 'hover' }],\n uncovered: {\n '--videoframe-badge-duration': 'consumed inside the badge transition shorthand, never a standalone computed value',\n '--videoframe-badge-easing': 'consumed inside the badge transition shorthand, never a standalone computed value',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--videoframe-frame-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--videoframe-frame-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--videoframe-frame-border-width', '--videoframe-frame-radius'],\n unchanged: ['--videoframe-badge-default-size'],\n aliasedTo: {\n '--videoframe-frame-border-width': '--border-width-3',\n '--videoframe-frame-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--videoframe-frame-border-width' },\n },\n interaction: {\n part: 'trigger',\n role: 'button',\n cases: [\n {\n name: 'clicking the poster starts the clip',\n action: { kind: 'click', part: 'trigger' },\n expect: { kind: 'attribute', part: 'root', name: 'data-playing', value: 'true' },\n },\n ],\n },\n behavior: {\n applicable: false,\n reason: 'the frame declares no callback prop; playback is the browser\\'s own media element',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--videoframe-frame-surface', stroke: '--videoframe-frame-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nconst behaviorSlides = [\n { src: 'a.webp', alt: 'First slide' },\n { src: 'b.webp', alt: 'Second slide' },\n { src: 'c.webp', alt: 'Third slide' },\n];\n\nexport const slidePagerContract: ComponentContract = {\n id: 'slidepager',\n origin: 'system',\n root: 'root',\n // The editor renders an `inline` copy of the full-screen read beside the\n // pager, so the overlay and its close button are measurable in place.\n parts: {\n root: '.slidepager',\n frame: '.slidepager .slidepager-frame',\n stage: '.slidepager .slidepager-stage',\n bar: '.slidepager > .slidepager-bar',\n prevControl: '.slidepager > .slidepager-bar [data-nav=\"prev\"]',\n nextControl: '.slidepager > .slidepager-bar [data-nav=\"next\"]',\n controlIcon: '.slidepager > .slidepager-bar [data-nav=\"next\"] svg',\n counter: '.slidepager > .slidepager-bar .slidepager-counter',\n overlay: '.slidepager-modal.inline',\n closeButton: '.slidepager-modal.inline .slidepager-close',\n },\n properties: [\n {\n paints: {\n frame: {\n backgroundColor: '--slidepager-frame-surface',\n borderTopColor: '--slidepager-frame-border',\n borderTopWidth: '--slidepager-frame-border-width',\n borderRadius: '--slidepager-frame-radius',\n boxShadow: '--slidepager-frame-shadow',\n },\n bar: { columnGap: '--slidepager-bar-gap', paddingTop: '--slidepager-bar-padding' },\n nextControl: {\n backgroundColor: '--slidepager-control-surface',\n borderTopColor: '--slidepager-control-border',\n borderTopWidth: '--slidepager-control-border-width',\n borderRadius: '--slidepager-control-radius',\n width: '--slidepager-control-size',\n color: '--slidepager-control-icon',\n },\n controlIcon: { width: '--slidepager-control-icon-size' },\n counter: {\n color: '--slidepager-counter-text',\n fontFamily: '--slidepager-counter-font-family',\n fontSize: '--slidepager-counter-font-size',\n fontWeight: '--slidepager-counter-font-weight',\n lineHeight: '--slidepager-counter-line-height',\n letterSpacing: '--slidepager-counter-letter-spacing',\n },\n overlay: {\n backgroundColor: '--slidepager-scrim-surface',\n paddingTop: '--slidepager-overlay-padding',\n },\n closeButton: { top: '--slidepager-close-margin' },\n },\n },\n // The inline close button has no handler, so the click leaves the pointer\n // resting on it and its real :hover rule applies.\n {\n setup: [{ kind: 'click', part: 'closeButton' }],\n paints: {\n closeButton: {\n backgroundColor: '--slidepager-control-hover-surface',\n borderTopColor: '--slidepager-control-hover-border',\n color: '--slidepager-control-hover-icon',\n },\n },\n },\n // The preview opens on the middle slide, so one click back lands on the\n // first and disables the control under the pointer.\n {\n setup: [{ kind: 'click', part: 'prevControl' }],\n paints: {\n prevControl: {\n backgroundColor: '--slidepager-control-disabled-surface',\n borderTopColor: '--slidepager-control-disabled-border',\n color: '--slidepager-control-disabled-icon',\n },\n },\n },\n ],\n states: [{ state: 'default' }, { state: 'hover' }, { state: 'disabled' }],\n uncovered: {\n '--slidepager-overlay-duration': 'consumed inside the opacity transition shorthand, never a standalone computed value',\n '--slidepager-overlay-easing': 'consumed inside the opacity transition shorthand, never a standalone computed value',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--slidepager-frame-border-width',\n observe: { part: 'frame', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--slidepager-frame-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--slidepager-frame-border-width',\n '--slidepager-frame-radius',\n '--slidepager-control-border-width',\n '--slidepager-control-radius',\n ],\n unchanged: ['--slidepager-control-size'],\n aliasedTo: {\n '--slidepager-frame-border-width': '--border-width-3',\n '--slidepager-frame-radius': '--radius-none',\n },\n observe: { part: 'frame', css: 'borderTopWidth', variable: '--slidepager-frame-border-width' },\n },\n interaction: {\n part: 'stage',\n role: 'button',\n cases: [\n {\n name: 'the next chevron moves the frame to the next slide',\n action: { kind: 'click', part: 'nextControl' },\n expect: { kind: 'attribute', part: 'stage', name: 'aria-label', value: 'Open slide 3 full screen' },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'the next chevron reports the slide it moved to',\n props: { slides: behaviorSlides, index: 0 },\n action: { kind: 'click', part: 'nextControl' },\n expect: { kind: 'callback', prop: 'onchange', args: [1] },\n },\n {\n name: 'the previous chevron is silent on the first slide',\n props: { slides: behaviorSlides, index: 0 },\n action: { kind: 'click', part: 'prevControl' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n {\n name: 'the counter names the slide index opens on',\n props: { slides: behaviorSlides, index: 2 },\n expect: { kind: 'text', part: 'counter', value: '3 / 3' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'frame', fill: '--slidepager-frame-surface', stroke: '--slidepager-frame-border' }],\n },\n};\n"],"mappings":"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","names":["variants","basePaints","variants","variants","colorPaints","basePaints","variants","cap","basePaints","statePaints","otherVariantProperties","statePaints","variants","paintsFor","statePaints","variantPaints"]}
|
|
1
|
+
{"version":3,"sources":["../testing/contracts/index.ts","../testing/contracts/badge.ts","../testing/contracts/button.ts","../testing/contracts/callout.ts","../testing/contracts/card.ts","../testing/contracts/codesnippet.ts","../testing/contracts/collapsiblesection.ts","../testing/contracts/cornerbadge.ts","../testing/contracts/dialog.ts","../testing/contracts/iconbutton.ts","../testing/contracts/image.ts","../testing/contracts/imagelightbox.ts","../testing/contracts/inlineeditactions.ts","../testing/contracts/input.ts","../testing/contracts/menuselect.ts","../testing/contracts/notification.ts","../testing/contracts/panel.ts","../testing/contracts/progressbar.ts","../testing/contracts/radiobutton.ts","../testing/contracts/sectiondivider.ts","../testing/contracts/segmentedcontrol.ts","../testing/contracts/sidenavigation.ts","../testing/contracts/slider.ts","../testing/contracts/tabbar.ts","../testing/contracts/table.ts","../testing/contracts/toggle.ts","../testing/contracts/tooltip.ts","../testing/contracts/videolightbox.ts","../testing/contracts/videoframe.ts","../testing/contracts/slidepager.ts"],"sourcesContent":["import path from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { ComponentContract } from '../componentContract';\nimport { badgeContract } from './badge';\nimport { buttonContract } from './button';\nimport { calloutContract } from './callout';\nimport { cardContract } from './card';\nimport { codeSnippetContract } from './codesnippet';\nimport { collapsibleSectionContract } from './collapsiblesection';\nimport { cornerBadgeContract } from './cornerbadge';\nimport { dialogContract } from './dialog';\nimport { iconButtonContract } from './iconbutton';\nimport { imageContract } from './image';\nimport { imageLightboxContract } from './imagelightbox';\nimport { inlineEditActionsContract } from './inlineeditactions';\nimport { inputContract } from './input';\nimport { menuSelectContract } from './menuselect';\nimport { notificationContract } from './notification';\nimport { panelContract } from './panel';\nimport { progressBarContract } from './progressbar';\nimport { radioButtonContract } from './radiobutton';\nimport { sectionDividerContract } from './sectiondivider';\nimport { segmentedControlContract } from './segmentedcontrol';\nimport { sideNavigationContract } from './sidenavigation';\nimport { sliderContract } from './slider';\nimport { tabBarContract } from './tabbar';\nimport { tableContract } from './table';\nimport { toggleContract } from './toggle';\nimport { tooltipContract } from './tooltip';\nimport { videoLightboxContract } from './videolightbox';\nimport { videoFrameContract } from './videoframe';\nimport { slidePagerContract } from './slidepager';\n\nexport const shippedContracts: ComponentContract[] = [\n badgeContract,\n buttonContract,\n calloutContract,\n cardContract,\n codeSnippetContract,\n collapsibleSectionContract,\n cornerBadgeContract,\n dialogContract,\n iconButtonContract,\n imageContract,\n imageLightboxContract,\n inlineEditActionsContract,\n inputContract,\n menuSelectContract,\n notificationContract,\n panelContract,\n progressBarContract,\n radioButtonContract,\n sectionDividerContract,\n segmentedControlContract,\n sideNavigationContract,\n sliderContract,\n tabBarContract,\n tableContract,\n toggleContract,\n tooltipContract,\n videoLightboxContract,\n videoFrameContract,\n slidePagerContract,\n];\n\n/** Names the module `selectedContracts` loads a custom component's\n * `ComponentContract[]` from. The suite files are static Playwright entry\n * points with no argument to receive one through, so an env var plus a\n * dynamic import is the only route in. */\nexport const CONTRACTS_MODULE_ENV = 'LIVE_TOKENS_CONTRACTS_MODULE';\n\nasync function loadCustomContracts(): Promise<ComponentContract[]> {\n const modulePath = process.env[CONTRACTS_MODULE_ENV];\n if (!modulePath) return [];\n const mod = await import(pathToFileURL(path.resolve(modulePath)).href);\n const value = mod.default ?? mod.contracts;\n if (!Array.isArray(value)) {\n throw new Error(\n `${CONTRACTS_MODULE_ENV}=${modulePath} does not export a contracts array `\n + '(default export or a named \"contracts\" export)',\n );\n }\n return value as ComponentContract[];\n}\n\n/** The shipped list plus whatever `LIVE_TOKENS_CONTRACTS_MODULE` names,\n * unfiltered — what a \"no contract for this id\" error lists as declared. */\nexport async function allContracts(\n contracts: ComponentContract[] = shippedContracts,\n): Promise<ComponentContract[]> {\n const custom = await loadCustomContracts();\n return custom.length > 0 ? [...contracts, ...custom] : contracts;\n}\n\n/** The contracts a run covers, narrowed by `LIVE_TOKENS_COMPONENT`. */\nexport async function selectedContracts(\n contracts: ComponentContract[] = shippedContracts,\n): Promise<ComponentContract[]> {\n const all = await allContracts(contracts);\n const requested = process.env.LIVE_TOKENS_COMPONENT;\n return requested ? all.filter((contract) => contract.id === requested) : all;\n}\n\nexport {\n badgeContract,\n buttonContract,\n calloutContract,\n cardContract,\n codeSnippetContract,\n collapsibleSectionContract,\n cornerBadgeContract,\n dialogContract,\n iconButtonContract,\n imageContract,\n imageLightboxContract,\n inlineEditActionsContract,\n inputContract,\n menuSelectContract,\n notificationContract,\n panelContract,\n progressBarContract,\n radioButtonContract,\n sectionDividerContract,\n segmentedControlContract,\n sideNavigationContract,\n sliderContract,\n tabBarContract,\n tableContract,\n toggleContract,\n tooltipContract,\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Variant =\n | 'brand' | 'accent' | 'neutral' | 'alternate' | 'canvas'\n | 'special' | 'success' | 'warning' | 'danger' | 'info';\n\nconst variants: Variant[] = [\n 'brand', 'accent', 'neutral', 'alternate', 'canvas',\n 'special', 'success', 'warning', 'danger', 'info',\n];\n\nfunction basePaints(v: Variant): PaintMap {\n return {\n root: {\n paddingTop: `--badge-${v}-padding`,\n borderRadius: `--badge-${v}-radius`,\n borderTopWidth: `--badge-${v}-border-width`,\n boxShadow: `--badge-${v}-shadow`,\n fontFamily: `--badge-${v}-text-font-family`,\n fontSize: `--badge-${v}-text-font-size`,\n fontWeight: `--badge-${v}-text-font-weight`,\n lineHeight: `--badge-${v}-text-line-height`,\n },\n icon: { fontSize: `--badge-${v}-icon-size` },\n };\n}\n\nfunction colorPaints(v: Variant): PaintMap {\n return {\n root: {\n backgroundColor: `--badge-${v}-surface`,\n borderTopColor: `--badge-${v}-border`,\n color: `--badge-${v}-text`,\n },\n };\n}\n\nexport const badgeContract: ComponentContract = {\n id: 'badge',\n origin: 'system',\n view: { variant: 'Brand' },\n root: 'root',\n parts: {\n root: '.badge',\n icon: '.icon',\n },\n properties: [\n { variant: 'Brand', state: 'base', paints: basePaints('brand') },\n { variant: 'Brand', state: 'colors', paints: colorPaints('brand') },\n ...variants.filter((v) => v !== 'brand').flatMap((v) => [\n { variant: v.charAt(0).toUpperCase() + v.slice(1), state: 'base', paints: basePaints(v) },\n { variant: v.charAt(0).toUpperCase() + v.slice(1), state: 'colors', paints: colorPaints(v) },\n ]),\n ],\n states: [{ state: 'base' }, { state: 'colors' }],\n uncovered: {\n '--badge-brand-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-accent-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-neutral-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-alternate-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-canvas-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-special-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-success-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-warning-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-danger-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n '--badge-info-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variant: 'Brand',\n state: 'base',\n variable: '--badge-brand-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--badge-brand-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--badge-brand-border-width', '--badge-brand-radius', '--badge-brand-padding'],\n unchanged: ['--badge-brand-shadow', '--badge-brand-icon-size'],\n aliasedTo: {\n '--badge-brand-border-width': '--border-width-3',\n '--badge-brand-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--badge-brand-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a badge is a static label with no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a badge declares no callback prop and answers no event: its props select paint, which the render obligation reads',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--badge-brand-surface', stroke: '--badge-brand-border' }],\n },\n};\n","import type { ComponentContract, PaintMap, PropertyExpectation } from '../componentContract';\n\ntype Variant = 'primary' | 'secondary' | 'outline' | 'success' | 'danger' | 'warning';\nconst variants: Variant[] = ['primary', 'secondary', 'outline', 'success', 'danger', 'warning'];\nconst cap = (v: string) => v.charAt(0).toUpperCase() + v.slice(1);\n\nfunction basePaints(v: Variant): PaintMap {\n return {\n root: {\n paddingTop: `--button-${v}-padding`,\n borderRadius: `--button-${v}-radius`,\n borderTopWidth: `--button-${v}-border-width`,\n fontFamily: `--button-${v}-text-font-family`,\n fontSize: `--button-${v}-text-font-size`,\n fontWeight: `--button-${v}-text-font-weight`,\n lineHeight: `--button-${v}-text-line-height`,\n },\n icon: { fontSize: `--button-${v}-icon-size` },\n };\n}\n\nfunction statePaints(v: Variant, s: 'default' | 'hover' | 'disabled'): PaintMap {\n const prefix = s === 'default' ? `--button-${v}` : `--button-${v}-${s}`;\n const textVar = s === 'default' ? `--button-${v}-text` : `--button-${v}-${s}-text`;\n return {\n root: {\n backgroundColor: `${prefix}-surface`,\n borderTopColor: `${prefix}-border`,\n color: textVar,\n },\n };\n}\n\nconst otherVariantProperties: PropertyExpectation[] = variants\n .filter((v) => v !== 'primary')\n .flatMap((v) => [\n { variant: cap(v), state: 'base', paints: basePaints(v) },\n { variant: cap(v), state: 'default', paints: statePaints(v, 'default') },\n { variant: cap(v), state: 'hover', paints: statePaints(v, 'hover') },\n { variant: cap(v), state: 'disabled', paints: statePaints(v, 'disabled') },\n ]);\n\nexport const buttonContract: ComponentContract = {\n id: 'button',\n origin: 'system',\n view: { variant: 'Primary' },\n root: 'root',\n parts: {\n root: '.button',\n icon: '.button i',\n },\n properties: [\n { variant: 'Primary', state: 'base', paints: basePaints('primary') },\n ...otherVariantProperties,\n { variant: 'Outline', state: 'active', paints: { root: { backgroundColor: '--button-outline-active-surface' } } },\n {\n setup: [{ kind: 'control', selector: '.preview-actions select', value: 'small' }],\n paints: {\n root: {\n paddingTop: '--button-small-padding',\n fontSize: '--button-small-text-font-size',\n fontWeight: '--button-small-text-font-weight',\n lineHeight: '--button-small-text-line-height',\n },\n icon: { fontSize: '--button-small-icon-size' },\n },\n },\n ],\n states: [\n { state: 'base' },\n { state: 'default', paints: statePaints('primary', 'default') },\n { state: 'hover', forceClass: 'force-hover', paints: statePaints('primary', 'hover') },\n {\n state: 'disabled',\n attributes: { root: { disabled: '' } },\n paints: statePaints('primary', 'disabled'),\n },\n ],\n uncovered: {\n '--button-shimmer': 'gates the ::before sweep with a display toggle, which no probe covers',\n '--button-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--button-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variant: 'Primary',\n state: 'base',\n variable: '--button-primary-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--button-primary-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--button-primary-border-width', '--button-primary-radius', '--button-primary-padding'],\n unchanged: ['--button-primary-icon-size'],\n aliasedTo: {\n '--button-primary-border-width': '--border-width-3',\n '--button-primary-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--button-primary-border-width' },\n },\n interaction: {\n part: 'root',\n role: 'button',\n cases: [\n {\n name: 'clicking a button focuses it',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: true },\n },\n {\n name: 'a disabled button refuses focus',\n state: 'disabled',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking a button hands the click on',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onclick', args: [{ type: 'click' }] },\n },\n {\n name: 'a disabled button stays silent',\n props: { disabled: true },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'no-callback', prop: 'onclick' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--button-primary-surface', stroke: '--button-primary-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Variant = 'info' | 'success' | 'warning' | 'danger';\nconst variants: Variant[] = ['info', 'success', 'warning', 'danger'];\n\nfunction paintsFor(v: Variant): PaintMap {\n return {\n root: {\n backgroundColor: `--callout-${v}-surface`,\n borderTopColor: `--callout-${v}-border`,\n borderTopWidth: `--callout-${v}-border-width`,\n borderLeftWidth: `--callout-${v}-indicator-width`,\n borderRadius: `--callout-${v}-radius`,\n paddingTop: `--callout-${v}-padding`,\n },\n label: {\n color: `--callout-${v}-label`,\n fontFamily: `--callout-${v}-label-font-family`,\n fontSize: `--callout-${v}-label-font-size`,\n fontWeight: `--callout-${v}-label-font-weight`,\n lineHeight: `--callout-${v}-label-line-height`,\n },\n message: {\n color: `--callout-${v}-text`,\n fontFamily: `--callout-${v}-text-font-family`,\n fontSize: `--callout-${v}-text-font-size`,\n fontWeight: `--callout-${v}-text-font-weight`,\n lineHeight: `--callout-${v}-text-line-height`,\n },\n };\n}\n\nexport const calloutContract: ComponentContract = {\n id: 'callout',\n origin: 'system',\n view: { variant: 'Info' },\n root: 'root',\n parts: {\n root: '.callout',\n label: '.callout-label',\n message: '.callout-message',\n },\n properties: variants.map((v) => ({ variant: v.charAt(0).toUpperCase() + v.slice(1), paints: paintsFor(v) })),\n states: {\n applicable: false,\n reason: 'each variant is one full preset with one state, so the editor renders no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--callout-info-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--callout-info-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--callout-info-border-width', '--callout-info-radius', '--callout-info-padding'],\n unchanged: ['--callout-info-label-font-size', '--callout-info-text-font-size'],\n aliasedTo: {\n '--callout-info-border-width': '--border-width-3',\n '--callout-info-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--callout-info-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a callout is a static box with no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a callout declares no callback prop and answers no event',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--callout-info-surface', stroke: '--callout-info-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const cardContract: ComponentContract = {\n id: 'card',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.card',\n header: '.card-header',\n icon: '.card-icon',\n title: '.card-title',\n body: '.card-body',\n },\n properties: [\n {\n paints: {\n root: {\n backgroundColor: '--card-default-surface',\n borderTopColor: '--card-default-border',\n borderTopWidth: '--card-default-border-width',\n borderRadius: '--card-default-radius',\n boxShadow: '--card-default-shadow',\n },\n header: {\n backgroundColor: '--card-default-header-surface',\n columnGap: '--card-default-header-gap',\n paddingTop: '--card-default-header-padding-top',\n paddingRight: '--card-default-header-padding-right',\n paddingBottom: '--card-default-header-padding-bottom',\n paddingLeft: '--card-default-header-padding-left',\n },\n icon: { fontSize: '--card-default-icon-size' },\n title: {\n color: '--card-default-title',\n fontFamily: '--card-default-title-font-family',\n fontSize: '--card-default-title-font-size',\n fontWeight: '--card-default-title-font-weight',\n lineHeight: '--card-default-title-line-height',\n },\n body: {\n color: '--card-default-body',\n fontFamily: '--card-default-body-font-family',\n fontSize: '--card-default-body-font-size',\n fontWeight: '--card-default-body-font-weight',\n lineHeight: '--card-default-body-line-height',\n paddingTop: '--card-default-body-padding-top',\n paddingRight: '--card-default-body-padding-right',\n paddingBottom: '--card-default-body-padding-bottom',\n paddingLeft: '--card-default-body-padding-left',\n },\n },\n },\n // `click({force:true})` leaves the pointer resting on `root`, so the\n // browser's real `.card:hover` rule applies afterward, no InteractionCase\n // needed. The editor's `.force-hover` reads these same gated tokens, so\n // the state entry below and this one have to agree.\n {\n setup: [{ kind: 'click', part: 'root' }],\n paints: {\n root: { borderTopColor: '--card-hover-border-enabled', boxShadow: '--card-hover-shadow-enabled' },\n },\n },\n // The per-side entry above drives `-padding-top` directly, which passes\n // regardless of what it's aliased to. This drives the base token instead,\n // proving the `-padding-top: var(--card-default-*-padding)` link itself.\n {\n paints: {\n header: { paddingTop: '--card-default-header-padding' },\n body: { paddingTop: '--card-default-body-padding' },\n },\n },\n ],\n states: [\n { state: 'default' },\n // The gate is off by default, so the hover tab has to show the resting\n // card. Naming the gated tokens is what pins that: `--card-hover-border`\n // resolves to `--border-neutral-strong` and would not match.\n {\n state: 'hover',\n forceClass: 'force-hover',\n paints: {\n root: { borderTopColor: '--card-hover-border-enabled', boxShadow: '--card-hover-shadow-enabled' },\n },\n },\n ],\n uncovered: {\n '--card-default-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n // `--card-hover-border-enabled` is an alias the editor repoints, so the\n // chain is not live and driving these two moves nothing. The runtime reads\n // them only through the per-instance `hover` prop (Card.svelte:47), which\n // the standardized preview never sets. Before force-hover honoured the\n // gate it read `--card-hover-border` directly and the hover state pinned\n // it; that path was the bug.\n '--card-hover-border': 'reachable only through the per-instance hover prop, which the preview does not set',\n '--card-hover-shadow': 'reachable only through the per-instance hover prop, which the preview does not set',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--card-default-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--card-default-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--card-default-border-width', '--card-default-radius'],\n unchanged: ['--card-default-icon-size'],\n aliasedTo: {\n '--card-default-border-width': '--border-width-3',\n '--card-default-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--card-default-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a card is a static container with no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a card declares no callback prop; its header and body arrive as snippets, which a mounted fixture cannot express',\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', fill: '--card-default-surface', stroke: '--card-default-border' },\n { part: 'header', fill: '--card-default-header-surface' },\n ],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const codeSnippetContract: ComponentContract = {\n id: 'codesnippet',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.codesnippet',\n code: '.code',\n copy: '.copy',\n },\n properties: [\n {\n paints: {\n root: {\n columnGap: '--codesnippet-gap',\n paddingTop: '--codesnippet-padding',\n backgroundColor: '--codesnippet-surface',\n borderTopColor: '--codesnippet-border',\n borderTopWidth: '--codesnippet-border-width',\n borderRadius: '--codesnippet-radius',\n },\n code: {\n color: '--codesnippet-code-text',\n fontFamily: '--codesnippet-code-font-family',\n fontSize: '--codesnippet-code-font-size',\n fontWeight: '--codesnippet-code-font-weight',\n lineHeight: '--codesnippet-code-line-height',\n },\n copy: {\n color: '--codesnippet-icon',\n fontSize: '--codesnippet-icon-size',\n },\n },\n },\n ],\n states: [\n { state: 'default' },\n {\n state: 'hover',\n forceClass: 'force-hover',\n paints: { copy: { color: '--codesnippet-hover-icon' } },\n },\n ],\n uncovered: {\n '--codesnippet-scrollbar-thumb': 'drawn via the ::-webkit-scrollbar-thumb pseudo-element and the scrollbar-color property, neither of which a probe can pin to one part',\n '--codesnippet-scrollbar-border-width': 'drives ::-webkit-scrollbar height, which a probe cannot read back verbatim',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--codesnippet-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--codesnippet-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--codesnippet-border-width', '--codesnippet-radius', '--codesnippet-padding', '--codesnippet-scrollbar-border-width'],\n unchanged: ['--codesnippet-icon-size'],\n aliasedTo: {\n '--codesnippet-border-width': '--border-width-3',\n '--codesnippet-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--codesnippet-border-width' },\n },\n interaction: {\n part: 'copy',\n role: 'button',\n cases: [\n {\n name: 'clicking copy focuses the button',\n action: { kind: 'click', part: 'copy' },\n expect: { kind: 'focused', part: 'copy', value: true },\n },\n ],\n },\n behavior: {\n applicable: false,\n reason: 'the copy control reports through the system clipboard and a timed popover, neither of which is a callback prop',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--codesnippet-surface', stroke: '--codesnippet-border' }],\n },\n};\n","import type { ComponentContract, PaintMap, SetupStep } from '../componentContract';\n\nfunction clickHover(): SetupStep[] {\n return [{ kind: 'control', selector: '.tabs-selectors.substrip .state-tab-btn:has-text(\"Hover\")' }];\n}\n\nfunction headerPaints(v: string, s: 'default' | 'hover'): PaintMap {\n const p = `--collapsiblesection-${v}-${s}`;\n const header: PaintMap[string] = {\n backgroundColor: `${p}-surface`,\n paddingTop: `${p}-padding`,\n };\n if (v === 'hairline') {\n header.borderBottomColor = `${p}-hairline-color`;\n header.borderBottomWidth = `${p}-hairline-width`;\n }\n return {\n header,\n label: {\n color: `${p}-label`,\n fontFamily: `${p}-label-font-family`,\n fontSize: `${p}-label-font-size`,\n fontWeight: `${p}-label-font-weight`,\n lineHeight: `${p}-label-line-height`,\n },\n icon: { color: `${p}-icon`, fontSize: `${p}-icon-size` },\n };\n}\n\nexport const collapsibleSectionContract: ComponentContract = {\n id: 'collapsiblesection',\n origin: 'system',\n view: { variant: 'Container', state: 'Body' },\n root: 'root',\n parts: {\n root: '.es-root',\n header: '.section-header',\n label: '.section-label',\n icon: '.toggle-icon',\n body: '.section-content',\n toggleButton: '.section-toggle-button',\n },\n properties: [\n {\n variant: 'Container',\n state: 'Container',\n paints: {\n root: {\n borderTopColor: '--collapsiblesection-container-frame-border',\n borderTopWidth: '--collapsiblesection-container-frame-border-width',\n borderRadius: '--collapsiblesection-container-frame-radius',\n },\n },\n },\n { variant: 'Container', state: 'Header', paints: headerPaints('container', 'default') },\n { variant: 'Container', state: 'Header', setup: clickHover(), paints: headerPaints('container', 'hover') },\n {\n variant: 'Container',\n state: 'Body',\n paints: { body: { backgroundColor: '--collapsiblesection-container-open-surface', paddingTop: '--collapsiblesection-container-open-padding' } },\n },\n { variant: 'Chromeless', state: 'Header', paints: headerPaints('chromeless', 'default') },\n { variant: 'Chromeless', state: 'Header', setup: clickHover(), paints: headerPaints('chromeless', 'hover') },\n { variant: 'Chromeless', state: 'Body', paints: { body: { paddingTop: '--collapsiblesection-chromeless-open-padding' } } },\n { variant: 'With Hairline', state: 'Header', paints: headerPaints('hairline', 'default') },\n { variant: 'With Hairline', state: 'Header', setup: clickHover(), paints: headerPaints('hairline', 'hover') },\n { variant: 'With Hairline', state: 'Body', paints: { body: { paddingTop: '--collapsiblesection-hairline-open-padding' } } },\n ],\n states: [{ state: 'Container' }, { state: 'Header' }, { state: 'Body' }],\n persistence: {\n cases: [\n {\n shape: 'token',\n variant: 'Container',\n state: 'Container',\n variable: '--collapsiblesection-container-frame-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--collapsiblesection-container-frame-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--collapsiblesection-container-frame-border-width', '--collapsiblesection-container-frame-radius'],\n unchanged: ['--collapsiblesection-container-default-icon-size'],\n aliasedTo: {\n '--collapsiblesection-container-frame-border-width': '--border-width-3',\n '--collapsiblesection-container-frame-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--collapsiblesection-container-frame-border-width' },\n },\n interaction: {\n part: 'toggleButton',\n role: 'button',\n // No activation case: CollapsibleSectionEditor's preview drives `open`\n // off the active state tab and never wires `ontoggle` back to it, so\n // clicking the real button here can't move `aria-expanded` (same\n // constraint documented on ToggleEditor in toggle.ts).\n cases: [\n {\n name: 'clicking the toggle button focuses it',\n action: { kind: 'click', part: 'toggleButton' },\n expect: { kind: 'focused', part: 'toggleButton', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking the chevron asks to toggle',\n props: { label: 'Details' },\n action: { kind: 'click', part: 'toggleButton' },\n expect: { kind: 'callback', prop: 'ontoggle', args: [] },\n },\n {\n name: 'open drives the chevron',\n props: { label: 'Details', open: true },\n expect: { kind: 'attribute', part: 'toggleButton', name: 'aria-expanded', value: 'true' },\n },\n {\n name: 'clicking leaves the section where the prop put it',\n props: { label: 'Details' },\n action: { kind: 'click', part: 'toggleButton' },\n expect: { kind: 'attribute', part: 'toggleButton', name: 'aria-expanded', value: 'false' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', stroke: '--collapsiblesection-container-frame-border' },\n { part: 'header', fill: '--collapsiblesection-container-default-surface' },\n { part: 'body', fill: '--collapsiblesection-container-open-surface' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Variant =\n | 'brand' | 'accent' | 'neutral' | 'alternate' | 'canvas'\n | 'special' | 'success' | 'warning' | 'danger' | 'info';\n\nconst variants: Variant[] = [\n 'brand', 'accent', 'neutral', 'alternate', 'canvas',\n 'special', 'success', 'warning', 'danger', 'info',\n];\n\nfunction colorPaints(v: Variant): PaintMap {\n return {\n badge: {\n backgroundColor: `--cornerbadge-${v}-surface`,\n borderTopColor: `--cornerbadge-${v}-border`,\n color: `--cornerbadge-${v}-text`,\n },\n };\n}\n\n/** Default anchor is bottom-right: TL=inner, TR=v-axis, BR=outer, BL=h-axis. */\nconst basePaints: PaintMap = {\n root: { bottom: '--cornerbadge-margin' },\n badge: {\n borderTopLeftRadius: '--cornerbadge-inner-radius',\n borderTopRightRadius: '--cornerbadge-v-axis-radius',\n borderBottomRightRadius: '--cornerbadge-outer-radius',\n borderBottomLeftRadius: '--cornerbadge-h-axis-radius',\n paddingTop: '--cornerbadge-padding',\n fontFamily: '--cornerbadge-text-font-family',\n fontSize: '--cornerbadge-text-font-size',\n fontWeight: '--cornerbadge-text-font-weight',\n lineHeight: '--cornerbadge-text-line-height',\n },\n};\n\nexport const cornerBadgeContract: ComponentContract = {\n id: 'cornerbadge',\n origin: 'system',\n view: { variant: 'Brand' },\n root: 'root',\n parts: {\n root: '.cornerbadge',\n badge: '.cornerbadge .badge',\n },\n properties: [\n {\n variant: 'Brand',\n paints: {\n root: basePaints.root,\n badge: { ...basePaints.badge, ...colorPaints('brand').badge },\n },\n },\n ...variants.filter((v) => v !== 'brand').map((v) => ({\n variant: v.charAt(0).toUpperCase() + v.slice(1),\n paints: colorPaints(v),\n })),\n ],\n states: [{ state: 'base' }, { state: 'colors' }],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--cornerbadge-outer-radius',\n observe: { part: 'badge', css: 'borderBottomRightRadius' },\n },\n ],\n resetVariable: '--cornerbadge-outer-radius',\n },\n theme: {\n theme: 'ocean',\n changed: ['--cornerbadge-outer-radius', '--cornerbadge-inner-radius', '--cornerbadge-margin'],\n unchanged: ['--cornerbadge-text-font-size'],\n aliasedTo: {\n '--cornerbadge-outer-radius': '--radius-md',\n '--cornerbadge-inner-radius': '--radius-md',\n },\n observe: { part: 'badge', css: 'borderBottomRightRadius', variable: '--cornerbadge-outer-radius' },\n },\n interaction: {\n applicable: false,\n reason: 'a corner badge is a static marker with no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a corner badge declares no callback prop and answers no event',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'badge', fill: '--cornerbadge-brand-surface', stroke: '--cornerbadge-brand-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const dialogContract: ComponentContract = {\n id: 'dialog',\n origin: 'system',\n root: 'root',\n parts: {\n backdrop: '.dialog-backdrop',\n root: '.dialog',\n header: '.dialog-header',\n title: '.dialog-title',\n closeButton: '.dialog-close',\n body: '.dialog-body',\n footer: '.dialog-footer',\n confirmButton: '.dialog-footer-buttons button:last-of-type',\n cancelButton: '.dialog-footer-buttons button:first-of-type',\n },\n properties: [\n {\n paints: {\n backdrop: { backgroundColor: '--dialog-scrim-surface' },\n root: {\n backgroundColor: '--dialog-surface',\n borderTopColor: '--dialog-border',\n borderTopWidth: '--dialog-border-width',\n borderRadius: '--dialog-radius',\n boxShadow: '--dialog-shadow',\n },\n header: {\n backgroundColor: '--dialog-header-surface',\n borderBottomColor: '--dialog-header-hairline-color',\n borderBottomWidth: '--dialog-header-hairline-width',\n paddingTop: '--dialog-header-padding',\n },\n title: {\n color: '--dialog-title',\n fontFamily: '--dialog-title-font-family',\n fontSize: '--dialog-title-font-size',\n fontWeight: '--dialog-title-font-weight',\n lineHeight: '--dialog-title-line-height',\n },\n closeButton: {\n color: '--dialog-close-icon',\n fontSize: '--dialog-close-icon-size',\n },\n body: {\n paddingTop: '--dialog-body-padding',\n color: '--dialog-body',\n fontFamily: '--dialog-body-font-family',\n fontSize: '--dialog-body-font-size',\n fontWeight: '--dialog-body-font-weight',\n lineHeight: '--dialog-body-line-height',\n },\n footer: {\n borderTopColor: '--dialog-footer-hairline-color',\n borderTopWidth: '--dialog-footer-hairline-width',\n paddingTop: '--dialog-footer-padding',\n },\n },\n },\n ],\n states: [\n { state: 'scrim' },\n { state: 'dialog' },\n { state: 'header' },\n { state: 'body' },\n { state: 'footer' },\n ],\n uncovered: {\n '--dialog-blur': 'consumed via backdrop-filter: blur(), which no probe covers',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'dialog',\n variable: '--dialog-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n {\n shape: 'config',\n state: 'footer',\n control: '.button-variant-row:has(.property-label:text-is(\"right button\")) select',\n configKey: '--dialog-confirm-variant',\n observe: { part: 'confirmButton', css: 'backgroundColor' },\n },\n {\n shape: 'config',\n state: 'footer',\n control: '.button-variant-row:has(.property-label:text-is(\"left button\")) select',\n configKey: '--dialog-cancel-variant',\n observe: { part: 'cancelButton', css: 'backgroundColor' },\n },\n ],\n resetVariable: '--dialog-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--dialog-border-width', '--dialog-radius', '--dialog-header-padding', '--dialog-footer-padding'],\n unchanged: ['--dialog-close-icon-size', '--dialog-title-font-size'],\n aliasedTo: {\n '--dialog-border-width': '--border-width-4',\n '--dialog-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--dialog-border-width' },\n },\n interaction: {\n part: 'closeButton',\n role: 'button',\n cases: [\n {\n name: 'clicking the close icon focuses it',\n action: { kind: 'click', part: 'closeButton' },\n expect: { kind: 'focused', part: 'closeButton', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking close asks to close',\n props: { open: true, inline: true, title: 'Confirm' },\n action: { kind: 'click', part: 'closeButton' },\n expect: { kind: 'callback', prop: 'onclose', args: [] },\n },\n {\n name: 'title drives the heading',\n props: { open: true, inline: true, title: 'Confirm' },\n expect: { kind: 'text', part: 'title', value: 'Confirm' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', fill: '--dialog-surface', stroke: '--dialog-border' },\n { part: 'header', fill: '--dialog-header-surface' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap, PropertyExpectation } from '../componentContract';\n\ntype Variant = 'primary' | 'secondary' | 'outline' | 'success' | 'danger' | 'warning';\nconst variants: Variant[] = ['primary', 'secondary', 'outline', 'success', 'danger', 'warning'];\nconst cap = (v: string) => v.charAt(0).toUpperCase() + v.slice(1);\n\nfunction basePaints(v: Variant): PaintMap {\n return {\n root: {\n paddingTop: `--iconbutton-${v}-padding`,\n borderRadius: `--iconbutton-${v}-radius`,\n borderTopWidth: `--iconbutton-${v}-border-width`,\n },\n icon: { fontSize: `--iconbutton-${v}-icon-size` },\n };\n}\n\nfunction statePaints(v: Variant, s: 'default' | 'hover' | 'disabled'): PaintMap {\n const prefix = s === 'default' ? `--iconbutton-${v}` : `--iconbutton-${v}-${s}`;\n const iconVar = s === 'default' ? `--iconbutton-${v}-icon` : `--iconbutton-${v}-${s}-icon`;\n return {\n root: { backgroundColor: `${prefix}-surface`, borderTopColor: `${prefix}-border` },\n icon: { color: iconVar },\n };\n}\n\nconst otherVariantProperties: PropertyExpectation[] = variants\n .filter((v) => v !== 'primary')\n .flatMap((v) => [\n { variant: cap(v), state: 'base', paints: basePaints(v) },\n { variant: cap(v), state: 'default', paints: statePaints(v, 'default') },\n { variant: cap(v), state: 'hover', paints: statePaints(v, 'hover') },\n { variant: cap(v), state: 'disabled', paints: statePaints(v, 'disabled') },\n ]);\n\nexport const iconButtonContract: ComponentContract = {\n id: 'iconbutton',\n origin: 'system',\n view: { variant: 'Primary' },\n root: 'root',\n parts: {\n root: '.icon-button',\n icon: '.icon-button i',\n },\n properties: [\n { variant: 'Primary', state: 'base', paints: basePaints('primary') },\n ...otherVariantProperties,\n { variant: 'Outline', state: 'active', paints: { root: { backgroundColor: '--iconbutton-outline-active-surface' } } },\n {\n setup: [{ kind: 'control', selector: '.preview-actions select', value: 'small' }],\n paints: {\n root: { paddingTop: '--iconbutton-small-padding' },\n icon: { fontSize: '--iconbutton-small-icon-size' },\n },\n },\n ],\n states: [\n { state: 'base' },\n { state: 'default', paints: statePaints('primary', 'default') },\n { state: 'hover', forceClass: 'force-hover', paints: statePaints('primary', 'hover') },\n {\n state: 'disabled',\n attributes: { root: { disabled: '' } },\n paints: statePaints('primary', 'disabled'),\n },\n ],\n uncovered: {\n '--iconbutton-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--iconbutton-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variant: 'Primary',\n state: 'base',\n variable: '--iconbutton-primary-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--iconbutton-primary-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--iconbutton-primary-border-width', '--iconbutton-primary-radius', '--iconbutton-primary-padding'],\n unchanged: ['--iconbutton-primary-icon-size'],\n aliasedTo: {\n '--iconbutton-primary-border-width': '--border-width-3',\n '--iconbutton-primary-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--iconbutton-primary-border-width' },\n },\n interaction: {\n part: 'root',\n role: 'button',\n cases: [\n {\n name: 'clicking an icon button focuses it',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking an icon button hands the click on',\n props: { icon: 'fas fa-check', ariaLabel: 'Confirm' },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onclick', args: [{ type: 'click' }] },\n },\n {\n name: 'a disabled icon button stays silent',\n props: { icon: 'fas fa-check', ariaLabel: 'Confirm', disabled: true },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'no-callback', prop: 'onclick' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--iconbutton-primary-surface', stroke: '--iconbutton-primary-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const imageContract: ComponentContract = {\n id: 'image',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.image',\n img: '.image img',\n },\n properties: [\n {\n paints: {\n root: {\n borderTopColor: '--image-default-border',\n borderTopWidth: '--image-default-border-width',\n borderRadius: '--image-default-radius',\n boxShadow: '--image-default-shadow',\n },\n },\n },\n ],\n states: {\n applicable: false,\n reason: 'the editor renders one token group (image) with no state strip',\n },\n uncovered: {\n '--image-zoom-scale': 'consumed inside transform: scale(), never appears verbatim in a computed style',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--image-default-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n {\n shape: 'literal',\n control: 'label.zoom-enable:has-text(\"Use zoom on hover\") input',\n variable: '--image-zoom-enabled',\n observe: { part: 'img', css: 'transform' },\n },\n ],\n resetVariable: '--image-default-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--image-default-border-width', '--image-default-radius'],\n unchanged: ['--image-default-shadow', '--image-zoom-scale'],\n aliasedTo: {\n '--image-default-border-width': '--border-width-3',\n '--image-default-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--image-default-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a framed picture carries no interactive role; the zoom effect is a hover transform, not an action',\n },\n behavior: {\n applicable: false,\n reason: 'an image declares no callback prop; zoom is a hover transform the browser paints',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', stroke: '--image-default-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const imageLightboxContract: ComponentContract = {\n id: 'imagelightbox',\n origin: 'system',\n view: { setup: [{ kind: 'click', part: 'thumb' }] },\n root: 'root',\n parts: {\n root: '.image-lightbox-wrapper',\n thumb: '.image-lightbox-thumb',\n overlay: { selector: '.image-lightbox-overlay', portal: true },\n stage: { selector: '.image-lightbox-stage', portal: true },\n closeButton: { selector: '.image-lightbox-close', portal: true },\n closeIcon: { selector: '.image-lightbox-close svg', portal: true },\n prevButton: { selector: '.image-lightbox-nav-prev', portal: true },\n nextButton: { selector: '.image-lightbox-nav-next', portal: true },\n counter: { selector: '.image-lightbox-counter', portal: true },\n toolbar: { selector: '.image-lightbox-toolbar', portal: true },\n },\n properties: [\n {\n paints: {\n thumb: {\n backgroundColor: '--imagelightbox-tile-surface',\n borderTopColor: '--imagelightbox-tile-border',\n borderTopWidth: '--imagelightbox-tile-border-width',\n borderRadius: '--imagelightbox-tile-radius',\n boxShadow: '--imagelightbox-tile-shadow',\n },\n overlay: { backgroundColor: '--imagelightbox-scrim-surface' },\n closeButton: {\n backgroundColor: '--imagelightbox-chrome-surface',\n borderTopColor: '--imagelightbox-chrome-border',\n borderTopWidth: '--imagelightbox-chrome-border-width',\n borderRadius: '--imagelightbox-chrome-radius',\n color: '--imagelightbox-chrome-icon',\n },\n closeIcon: { stroke: '--imagelightbox-chrome-icon' },\n },\n },\n // `click({force:true})` leaves the pointer resting on `nextButton`, so the\n // browser's real `.image-lightbox-nav:hover` rule applies afterward.\n // Unlike `closeButton`, clicking it does not close the modal.\n {\n setup: [{ kind: 'click', part: 'nextButton' }],\n paints: { nextButton: { backgroundColor: '--imagelightbox-chrome-hover-surface' } },\n },\n ],\n states: [{ state: 'tile' }, { state: 'overlay' }, { state: 'chrome' }],\n persistence: {\n cases: [\n {\n // No `state` here: \"tile\" is the panel's own default tab, and every\n // `selectView` re-clicks whatever `state` names even when it is\n // already active. While the modal is open, that click's target sits\n // under the overlay's full-viewport hit area, so skipping it avoids\n // an avoidable trip through the same close-on-click behavior `setup`\n // is about to use on purpose. `setup` closes the modal the\n // contract-level view opened so the \"tile\" token control (behind the\n // still-open overlay otherwise) is reachable, by pressing Escape on\n // `root` rather than clicking `closeButton`. `assertPersistence`\n // replays `setup` twice back to back (once directly, once inside\n // `driveControl`). Measured against a live page: `closeLightbox`'s\n // `open = false` write happens inside an animation `onfinish`\n // callback that a `settle()` cycle doesn't durably wait out, so\n // `closeButton` — a portaled element that unmounts once that callback\n // fires — can still be gone, still be there, or about to vanish\n // mid-click, depending on exactly when it lands relative to the\n // harness's round trips. A second `closeButton` click inherits that\n // uncertainty. Leading with a `thumb` click to guarantee a target for\n // the `closeButton` click that follows inherits it from the other\n // side instead: `openLightbox`'s own `if (open) return` reads the\n // same not-yet-written flag, so it can no-op rather than reopen, and\n // nothing then re-drives it — reproduced empirically, a deterministic\n // dead end. Escape on `root` avoids both: `root` is never portaled,\n // so the action always has a target, and replaying it before the\n // first press has finished closing re-enters `closeLightbox` rather\n // than skipping it, so every replay drives the component strictly\n // further toward closed. (Escape also collapses the components\n // editor's own drawer, but nothing else this obligation reads lives\n // there, and `reopen()` between obligations restores it.)\n shape: 'token',\n setup: [{ kind: 'press', part: 'root', key: 'Escape' }],\n variable: '--imagelightbox-tile-border-width',\n observe: { part: 'thumb', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--imagelightbox-tile-border-width',\n },\n theme: {\n // Closes the modal the contract-level setup opened: the Theme Picker\n // trigger lives in the chrome behind it, and the still-open overlay\n // blocks clicks the same way it does for the persistence case above.\n // Unlike that case, `assertThemeProjection` runs `setup` only once, so\n // the double-replay hazard doesn't apply and a plain `closeButton` click\n // is enough — and it has to be a click, not the Escape this contract's\n // persistence case uses, because Escape also collapses the drawer this\n // obligation's own `.theme-name-trigger` lives in.\n setup: [{ kind: 'click', part: 'closeButton' }],\n theme: 'halloween',\n changed: ['--imagelightbox-tile-border-width', '--imagelightbox-tile-radius', '--imagelightbox-chrome-border-width', '--imagelightbox-chrome-radius'],\n unchanged: ['--imagelightbox-tile-shadow'],\n aliasedTo: {\n '--imagelightbox-tile-border-width': '--border-width-2',\n '--imagelightbox-tile-radius': '--radius-none',\n },\n observe: { part: 'thumb', css: 'borderTopWidth', variable: '--imagelightbox-tile-border-width' },\n },\n interaction: {\n part: 'nextButton',\n role: 'button',\n cases: [\n {\n name: 'clicking the next chevron focuses it',\n action: { kind: 'click', part: 'nextButton' },\n expect: { kind: 'focused', part: 'nextButton', value: true },\n },\n ],\n },\n // `overlay` and `closeButton` are inside `.image-lightbox-modal`, which\n // `use:portal` moves to `document.body`. The standardized preview scopes\n // `data-sketch` to its own `.sketch-scope` wrapper rather than the document\n // root, so a portaled part sits outside the CSS ancestor match this contract\n // can observe, even though PART_SPECS draws it on a real host page (where\n // Sketch mode's scope is the page root). `thumb` never portals, so it is the\n // part this contract can pin.\n behavior: {\n applicable: false,\n reason: 'the lightbox declares no callback prop; opening portals a modal sized from measured geometry, which happy-dom has no layout for',\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'thumb', fill: '--imagelightbox-tile-surface', stroke: '--imagelightbox-tile-border' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Btn = 'save' | 'cancel';\ntype BtnState = 'default' | 'hover';\n\nfunction statePaints(btn: Btn, s: BtnState): PaintMap {\n const p = `--inlineeditactions-${btn}-${s}`;\n const button = btn === 'save' ? 'saveBtn' : 'cancelBtn';\n return {\n // `-icon-size` lands as `font-size` on the button itself (the icon glyph\n // inherits it), not on a separate icon element — and a declared \"icon\"\n // part here would be the button's own `<i class=\"fas ...\">`, whose native\n // ::before glyph content is never 'none', which reads as \"drawn\" to\n // `assertNoSketchPaint` regardless of sketch mode.\n [button]: {\n backgroundColor: `${p}-surface`,\n borderTopColor: `${p}-border`,\n borderTopWidth: `${p}-border-width`,\n borderRadius: `${p}-radius`,\n paddingTop: `${p}-padding`,\n color: `${p}-text`,\n fontSize: `${p}-icon-size`,\n },\n };\n}\n\nexport const inlineEditActionsContract: ComponentContract = {\n id: 'inlineeditactions',\n origin: 'system',\n view: { variant: 'Save button' },\n root: 'saveBtn',\n parts: {\n saveBtn: '.save-btn',\n cancelBtn: '.cancel-btn',\n },\n // Every entry names its own `state` explicitly. VariantGroup mirrors the\n // last-clicked state tab across sibling variants (for the linked-block\n // chart), so switching variants without repeating `state` would silently\n // carry the previous entry's tab forward.\n properties: [\n { variant: 'Save button', state: 'default', paints: statePaints('save', 'default') },\n { variant: 'Save button', state: 'hover', paints: statePaints('save', 'hover') },\n { variant: 'Cancel button', state: 'default', paints: statePaints('cancel', 'default') },\n { variant: 'Cancel button', state: 'hover', paints: statePaints('cancel', 'hover') },\n ],\n states: [\n { state: 'default' },\n { state: 'hover' },\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--inlineeditactions-save-default-border-width',\n observe: { part: 'saveBtn', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--inlineeditactions-save-default-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--inlineeditactions-save-default-border-width', '--inlineeditactions-save-default-radius'],\n unchanged: ['--inlineeditactions-save-default-icon-size'],\n aliasedTo: {\n '--inlineeditactions-save-default-border-width': '--border-width-2',\n '--inlineeditactions-save-default-radius': '--radius-none',\n },\n observe: { part: 'saveBtn', css: 'borderTopWidth', variable: '--inlineeditactions-save-default-border-width' },\n },\n interaction: {\n part: 'saveBtn',\n role: 'button',\n cases: [\n {\n name: 'clicking save focuses the button',\n action: { kind: 'click', part: 'saveBtn' },\n expect: { kind: 'focused', part: 'saveBtn', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking save reports it',\n action: { kind: 'click', part: 'saveBtn' },\n expect: { kind: 'callback', prop: 'onsave', args: [{ type: 'click' }] },\n },\n {\n name: 'clicking cancel reports it',\n action: { kind: 'click', part: 'cancelBtn' },\n expect: { kind: 'callback', prop: 'oncancel', args: [{ type: 'click' }] },\n },\n {\n name: 'disabled actions stay silent',\n props: { disabled: true },\n action: { kind: 'click', part: 'saveBtn' },\n expect: { kind: 'no-callback', prop: 'onsave' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'saveBtn', fill: '--inlineeditactions-save-default-surface', stroke: '--inlineeditactions-save-default-border' },\n { part: 'cancelBtn', fill: '--inlineeditactions-cancel-default-surface', stroke: '--inlineeditactions-cancel-default-border' },\n ],\n },\n};\n","import type { ComponentContract, SetupStep } from '../componentContract';\n\n// The contract-level setup checks \"Error\" so `errorMsg` resolves at the\n// baseline view. `.invalid` beats `.force-focus` on outline color/width (the\n// error state wins the combination), so any check of the plain focused\n// outline has to undo it explicitly — `setup` replaces, it does not merge.\nconst noError: SetupStep[] = [\n { kind: 'control', selector: '.canvas-toolbar-select', value: 'password' },\n { kind: 'control', selector: '.toolbar-check:has-text(\"Error\") input', check: false },\n];\n\nexport const inputContract: ComponentContract = {\n id: 'input',\n origin: 'system',\n view: {\n setup: [\n { kind: 'control', selector: '.canvas-toolbar-select', value: 'password' },\n { kind: 'control', selector: '.toolbar-check:has-text(\"Error\") input', check: true },\n ],\n },\n root: 'root',\n parts: {\n root: '.input-field',\n field: '.input-control',\n label: '.input-label',\n icon: '.input-icon',\n toggleButton: '.input-icon-button',\n hint: '.input-hint',\n errorMsg: '.input-error',\n placeholder: { selector: '.input-control', pseudo: '::placeholder' },\n },\n properties: [\n {\n paints: {\n root: { rowGap: '--input-gap' },\n field: {\n borderRadius: '--input-radius',\n borderTopWidth: '--input-border-width',\n paddingTop: '--input-padding',\n backgroundColor: '--input-default-surface',\n borderTopColor: '--input-default-border',\n color: '--input-default-text',\n fontFamily: '--input-default-text-font-family',\n fontSize: '--input-default-text-font-size',\n fontWeight: '--input-default-text-font-weight',\n lineHeight: '--input-default-text-line-height',\n },\n icon: {\n color: '--input-default-icon',\n fontSize: '--input-default-icon-size',\n },\n label: {\n color: '--input-label',\n fontFamily: '--input-label-font-family',\n fontSize: '--input-label-font-size',\n fontWeight: '--input-label-font-weight',\n lineHeight: '--input-label-line-height',\n },\n hint: {\n color: '--input-hint',\n fontFamily: '--input-hint-font-family',\n fontSize: '--input-hint-font-size',\n fontWeight: '--input-hint-font-weight',\n lineHeight: '--input-hint-line-height',\n },\n placeholder: { color: '--input-default-placeholder' },\n },\n },\n // `assertPaintsFromToken` (here) drives a controlled pixel probe, so a\n // unitless line-height round-trips fine. `assertPaintMap` (states, below)\n // reads the real, already-resolved value through `normalize()`, which\n // cannot recompute a unitless multiplier outside the field's own\n // font-size context, so these three stay out of `states`.\n {\n state: 'focused',\n setup: noError,\n paints: { field: { lineHeight: '--input-focused-text-line-height' } },\n },\n {\n state: 'disabled',\n setup: noError,\n paints: { field: { lineHeight: '--input-disabled-text-line-height' } },\n },\n {\n state: 'error',\n paints: { errorMsg: { lineHeight: '--input-error-line-height' } },\n },\n ],\n states: [\n { state: 'field' },\n { state: 'default' },\n {\n state: 'focused',\n forceClass: 'force-focus',\n setup: noError,\n paints: {\n field: {\n backgroundColor: '--input-focused-surface',\n outlineColor: '--input-focused-border',\n outlineWidth: '--input-focused-border-width',\n color: '--input-focused-text',\n fontFamily: '--input-focused-text-font-family',\n fontSize: '--input-focused-text-font-size',\n fontWeight: '--input-focused-text-font-weight',\n },\n icon: { color: '--input-focused-icon', fontSize: '--input-focused-icon-size' },\n },\n },\n {\n state: 'disabled',\n attributes: { field: { disabled: '' } },\n paints: {\n field: {\n backgroundColor: '--input-disabled-surface',\n borderTopColor: '--input-disabled-border',\n color: '--input-disabled-text',\n fontFamily: '--input-disabled-text-font-family',\n fontSize: '--input-disabled-text-font-size',\n fontWeight: '--input-disabled-text-font-weight',\n },\n icon: { color: '--input-disabled-icon', fontSize: '--input-disabled-icon-size' },\n },\n },\n { state: 'label' },\n { state: 'hint' },\n {\n state: 'error',\n paints: {\n field: { outlineColor: '--input-error-border', outlineWidth: '--input-error-border-width' },\n errorMsg: {\n color: '--input-error',\n fontFamily: '--input-error-font-family',\n fontSize: '--input-error-font-size',\n fontWeight: '--input-error-font-weight',\n },\n },\n },\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--input-border-width',\n observe: { part: 'field', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--input-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--input-border-width', '--input-radius', '--input-padding'],\n unchanged: ['--input-label-font-size', '--input-default-icon-size'],\n aliasedTo: {\n '--input-border-width': '--border-width-3',\n '--input-radius': '--radius-none',\n },\n observe: { part: 'field', css: 'borderTopWidth', variable: '--input-border-width' },\n },\n interaction: {\n part: 'field',\n role: 'textbox',\n cases: [\n {\n name: 'typing writes into the field',\n action: { kind: 'type', part: 'field', text: 'probe' },\n expect: { kind: 'valueChanges', part: 'field' },\n },\n {\n name: 'clicking the reveal toggle presses it',\n action: { kind: 'click', part: 'toggleButton' },\n expect: { kind: 'attribute', part: 'toggleButton', name: 'aria-pressed', value: 'true' },\n },\n {\n name: 'a disabled field refuses focus',\n state: 'disabled',\n action: { kind: 'click', part: 'field' },\n expect: { kind: 'focused', part: 'field', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'typing reports every keystroke',\n props: { label: 'Name' },\n action: { kind: 'input', part: 'field', value: 'probe' },\n expect: { kind: 'callback', prop: 'oninput', args: ['probe'] },\n },\n {\n name: 'an error marks the field invalid',\n props: { label: 'Name', error: 'Required' },\n expect: { kind: 'attribute', part: 'field', name: 'aria-invalid', value: 'true' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'field', fill: '--input-default-surface', stroke: '--input-default-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\n/**\n * `full` adds `lineHeight`. `assertPaintsFromToken` (properties) drives a\n * controlled pixel probe, so a unitless line-height round-trips fine there;\n * `assertPaintMap` (states) reads the token's real, already-resolved value\n * through `normalize()`, which cannot recompute a unitless multiplier outside\n * the item's own font-size context. States skip it; properties cover it.\n */\nfunction itemTextPaints(s: string, full: boolean): PaintMap[string] {\n const paints: PaintMap[string] = {\n color: `--menuselect-${s}-text`,\n fontFamily: `--menuselect-${s}-text-font-family`,\n fontSize: `--menuselect-${s}-text-font-size`,\n fontWeight: `--menuselect-${s}-text-font-weight`,\n };\n if (full) paints.lineHeight = `--menuselect-${s}-text-line-height`;\n return paints;\n}\n\nconst behaviorItems = [\n { value: 'daily', label: 'Daily' },\n { value: 'weekly', label: 'Weekly' },\n];\n\nexport const menuSelectContract: ComponentContract = {\n id: 'menuselect',\n origin: 'system',\n view: { state: 'selected item' },\n root: 'root',\n parts: {\n root: '.menuselect',\n item: '.menuselect-item',\n icon: '.menuselect-item .menuselect-icon',\n label: '.menuselect-item .menuselect-label',\n selectedItem: '.menuselect-item.selected',\n selectedIcon: '.menuselect-item.selected .menuselect-icon',\n indicator: '.menuselect-indicator',\n disabledItem: '.menuselect-item:disabled',\n disabledIcon: '.menuselect-item:disabled .menuselect-icon',\n },\n properties: [\n {\n state: 'menu',\n paints: {\n root: {\n backgroundColor: '--menuselect-menu-surface',\n borderTopColor: '--menuselect-menu-border',\n borderTopWidth: '--menuselect-menu-border-width',\n borderRadius: '--menuselect-menu-radius',\n boxShadow: '--menuselect-menu-shadow',\n rowGap: '--menuselect-menu-gap',\n paddingTop: '--menuselect-menu-padding',\n },\n item: {\n borderRadius: '--menuselect-item-radius',\n paddingTop: '--menuselect-item-padding',\n },\n },\n },\n { state: 'default item', paints: { item: itemTextPaints('default', true) } },\n { state: 'hover item', paints: { item: itemTextPaints('hover', true) } },\n { state: 'selected item', paints: { selectedItem: itemTextPaints('selected', true) } },\n { state: 'disabled item', paints: { disabledItem: itemTextPaints('disabled', true) } },\n ],\n states: [\n { state: 'menu' },\n {\n state: 'default item',\n paints: {\n item: { backgroundColor: '--menuselect-default-surface', ...itemTextPaints('default', false) },\n icon: { color: '--menuselect-default-icon', fontSize: '--menuselect-default-icon-size' },\n },\n },\n {\n state: 'hover item',\n paints: {\n item: { backgroundColor: '--menuselect-hover-surface', ...itemTextPaints('hover', false) },\n icon: { color: '--menuselect-hover-icon', fontSize: '--menuselect-hover-icon-size' },\n },\n },\n {\n state: 'selected item',\n paints: {\n selectedItem: { backgroundColor: '--menuselect-selected-surface', ...itemTextPaints('selected', false) },\n selectedIcon: { color: '--menuselect-selected-icon', fontSize: '--menuselect-selected-icon-size' },\n indicator: { color: '--menuselect-selected-indicator' },\n },\n },\n {\n state: 'disabled item',\n attributes: { disabledItem: { disabled: '' } },\n paints: {\n disabledItem: { backgroundColor: '--menuselect-disabled-surface', ...itemTextPaints('disabled', false) },\n disabledIcon: { color: '--menuselect-disabled-icon', fontSize: '--menuselect-disabled-icon-size' },\n },\n },\n ],\n uncovered: {\n '--menuselect-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--menuselect-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'menu',\n variable: '--menuselect-menu-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--menuselect-menu-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--menuselect-menu-border-width', '--menuselect-menu-radius', '--menuselect-item-padding'],\n unchanged: ['--menuselect-default-icon-size', '--menuselect-default-text-font-size'],\n aliasedTo: {\n '--menuselect-menu-border-width': '--border-width-3',\n '--menuselect-menu-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--menuselect-menu-border-width' },\n },\n interaction: {\n part: 'item',\n role: 'option',\n cases: [\n {\n name: 'clicking an item selects it',\n action: { kind: 'click', part: 'item' },\n expect: { kind: 'attribute', part: 'item', name: 'aria-selected', value: 'true' },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking an item asks for its value',\n props: { items: behaviorItems, value: 'weekly' },\n action: { kind: 'click', part: 'item' },\n expect: { kind: 'callback', prop: 'onchange', args: ['daily'] },\n },\n {\n name: 'value drives the selected item',\n props: { items: behaviorItems, value: 'daily' },\n expect: { kind: 'attribute', part: 'item', name: 'aria-selected', value: 'true' },\n },\n {\n name: 'a disabled item stays silent',\n props: { items: [{ ...behaviorItems[0], disabled: true }, behaviorItems[1]], value: 'weekly' },\n action: { kind: 'click', part: 'item' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--menuselect-menu-surface', stroke: '--menuselect-menu-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\ntype Variant = 'info' | 'success' | 'warning' | 'danger';\nconst variants: Variant[] = ['info', 'success', 'warning', 'danger'];\n\nfunction paintsFor(v: Variant): PaintMap {\n return {\n root: {\n borderTopColor: `--notification-${v}-border`,\n borderTopWidth: `--notification-${v}-border-width`,\n borderRadius: `--notification-${v}-radius`,\n color: `--notification-${v}-text`,\n fontFamily: `--notification-${v}-text-font-family`,\n fontSize: `--notification-${v}-text-font-size`,\n fontWeight: `--notification-${v}-text-font-weight`,\n lineHeight: `--notification-${v}-text-line-height`,\n },\n header: {\n backgroundColor: `--notification-${v}-surface`,\n paddingTop: `--notification-${v}-padding`,\n },\n icon: {\n color: `--notification-${v}-icon`,\n fontSize: `--notification-${v}-icon-size`,\n },\n title: {\n color: `--notification-${v}-title`,\n fontFamily: `--notification-${v}-title-font-family`,\n fontSize: `--notification-${v}-title-font-size`,\n fontWeight: `--notification-${v}-title-font-weight`,\n lineHeight: `--notification-${v}-title-line-height`,\n },\n actionBackdrop: { backgroundColor: `--notification-${v}-action-surface` },\n };\n}\n\nexport const notificationContract: ComponentContract = {\n id: 'notification',\n origin: 'system',\n view: {\n variant: 'Info',\n setup: [\n { kind: 'control', selector: '.toolbar-check:has-text(\"Header button\") input', check: true },\n { kind: 'control', selector: '.toolbar-check:has-text(\"Dismissible\") input', check: true },\n ],\n },\n root: 'root',\n parts: {\n root: '.notification',\n header: '.notification-header',\n icon: '.notification-header i',\n title: '.notification-title',\n actionBackdrop: '.action-button-backdrop',\n actionButton: '.action-button-backdrop button',\n closeButton: '.notification-close',\n },\n properties: variants.map((v) => ({ variant: v.charAt(0).toUpperCase() + v.slice(1), paints: paintsFor(v) })),\n states: [{ state: 'base' }, { state: 'colors' }],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--notification-info-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--notification-info-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--notification-info-border-width', '--notification-info-radius', '--notification-info-padding'],\n unchanged: ['--notification-info-icon-size'],\n aliasedTo: {\n '--notification-info-border-width': '--border-width-3',\n '--notification-info-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--notification-info-border-width' },\n },\n interaction: {\n part: 'actionButton',\n role: 'button',\n cases: [\n {\n name: 'clicking the header action focuses it',\n action: { kind: 'click', part: 'actionButton' },\n expect: { kind: 'focused', part: 'actionButton', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking dismiss reports it',\n props: { title: 'Saved', description: 'Your changes are live.', dismissible: true },\n action: { kind: 'click', part: 'closeButton' },\n expect: { kind: 'callback', prop: 'ondismiss', args: [] },\n },\n {\n name: 'title drives the heading',\n props: { title: 'Saved', description: 'Your changes are live.' },\n expect: { kind: 'text', part: 'title', value: 'Saved' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', stroke: '--notification-info-border' },\n { part: 'header', fill: '--notification-info-surface' },\n ],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const panelContract: ComponentContract = {\n id: 'panel',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.panel',\n },\n properties: [\n {\n paints: {\n root: {\n borderTopColor: '--panel-frame-border',\n borderTopWidth: '--panel-frame-border-width',\n borderRadius: '--panel-frame-radius',\n backgroundImage: '--panel-stage-surface',\n paddingTop: '--panel-stage-padding',\n paddingLeft: '--panel-stage-inline-padding',\n columnGap: '--panel-stage-gap',\n },\n },\n },\n ],\n states: {\n applicable: false,\n reason: 'the editor renders one token group (default) with no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--panel-frame-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n {\n shape: 'gradient',\n variable: '--panel-stage-surface',\n observe: { part: 'root', css: 'backgroundColor' },\n },\n ],\n resetVariable: '--panel-frame-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--panel-frame-border-width', '--panel-frame-radius', '--panel-stage-inline-padding', '--panel-stage-padding'],\n unchanged: ['--panel-stage-gap'],\n aliasedTo: {\n '--panel-frame-border-width': '--border-width-3',\n '--panel-frame-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--panel-frame-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a framed container carries no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a panel declares no callback prop; its content arrives as a snippet',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--panel-stage-surface', stroke: '--panel-frame-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const progressBarContract: ComponentContract = {\n id: 'progressbar',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.progress',\n track: '.progress-track',\n fill: '.progress-fill',\n label: '.progress-label > span:not(.progress-value)',\n value: '.progress-value',\n },\n properties: [\n {\n paints: {\n root: { rowGap: '--progressbar-label-gap' },\n track: {\n backgroundColor: '--progressbar-track-surface',\n borderTopColor: '--progressbar-track-border',\n borderTopWidth: '--progressbar-track-border-width',\n borderRadius: '--progressbar-radius',\n height: '--progressbar-track-height',\n },\n fill: { backgroundColor: '--progressbar-fill' },\n label: {\n color: '--progressbar-label',\n fontFamily: '--progressbar-label-font-family',\n fontSize: '--progressbar-label-font-size',\n fontWeight: '--progressbar-label-font-weight',\n lineHeight: '--progressbar-label-line-height',\n },\n value: {\n color: '--progressbar-value',\n fontFamily: '--progressbar-value-font-family',\n fontSize: '--progressbar-value-font-size',\n fontWeight: '--progressbar-value-font-weight',\n lineHeight: '--progressbar-value-line-height',\n },\n },\n },\n ],\n states: {\n applicable: false,\n reason: 'the editor renders one token group (default) with no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--progressbar-track-border-width',\n observe: { part: 'track', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--progressbar-track-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--progressbar-radius', '--progressbar-track-border-width'],\n unchanged: ['--progressbar-track-height'],\n aliasedTo: {\n '--progressbar-radius': '--radius-none',\n '--progressbar-track-border-width': '--border-width-3',\n },\n observe: { part: 'track', css: 'borderTopWidth', variable: '--progressbar-track-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a progress readout carries no interactive role',\n },\n behavior: {\n cases: [\n {\n name: 'value drives the readout',\n props: { label: 'Upload', value: 60 },\n expect: { kind: 'text', part: 'value', value: '60%' },\n },\n {\n name: 'a value past the end clamps',\n props: { label: 'Upload', value: 140 },\n expect: { kind: 'text', part: 'value', value: '100%' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'track', fill: '--progressbar-track-surface', stroke: '--progressbar-track-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\n/**\n * `assertPaintsFromToken` (used by `properties`) drives a controlled probe\n * value, so a percentage dot-size or a unitless line-height round-trips fine.\n * `assertPaintMap` (used by `states`) instead reads the token's real, already\n * -resolved value straight through `normalize()`, which cannot recompute a\n * percentage or a unitless multiplier outside the original layout context.\n * States therefore skip `dotFill.width` and `label.lineHeight`.\n */\nfunction statePaints(s: 'default' | 'hover' | 'selected', full: boolean): PaintMap {\n const dotFill: PaintMap[string] = { backgroundColor: `--radiobutton-${s}-dot-fill` };\n if (full) dotFill.width = `--radiobutton-${s}-dot-size`;\n const label: PaintMap[string] = {\n color: `--radiobutton-${s}-label`,\n fontFamily: `--radiobutton-${s}-label-font-family`,\n fontSize: `--radiobutton-${s}-label-font-size`,\n fontWeight: `--radiobutton-${s}-label-font-weight`,\n };\n if (full) label.lineHeight = `--radiobutton-${s}-label-line-height`;\n return {\n dot: {\n borderTopColor: `--radiobutton-${s}-dot-border-color`,\n borderTopWidth: `--radiobutton-${s}-dot-border-width`,\n },\n dotFill,\n label,\n };\n}\n\nexport const radioButtonContract: ComponentContract = {\n id: 'radiobutton',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.radio-button',\n dot: '.radio-dot',\n dotFill: { selector: '.radio-dot-fill' },\n label: '.radio-label',\n },\n properties: [\n { paints: statePaints('default', true) },\n { state: 'hover', paints: statePaints('hover', true) },\n { state: 'selected', paints: statePaints('selected', true) },\n ],\n states: [\n { state: 'default' },\n {\n state: 'hover',\n forceClass: 'force-hover',\n paints: statePaints('hover', false),\n },\n {\n state: 'selected',\n forceClass: 'selected',\n paints: statePaints('selected', false),\n },\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--radiobutton-default-dot-border-width',\n observe: { part: 'dot', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--radiobutton-default-dot-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--radiobutton-default-dot-border-width',\n '--radiobutton-hover-dot-border-width',\n '--radiobutton-selected-dot-border-width',\n ],\n unchanged: ['--radiobutton-default-label-font-size'],\n aliasedTo: {\n '--radiobutton-default-dot-border-width': '--border-width-4',\n },\n observe: { part: 'dot', css: 'borderTopWidth', variable: '--radiobutton-default-dot-border-width' },\n },\n interaction: {\n part: 'root',\n role: 'button',\n cases: [\n {\n name: 'clicking a radio option focuses it',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: true },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking an option reports it',\n props: { label: 'Weekly' },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onclick', args: [] },\n },\n {\n name: 'label names the option',\n props: { label: 'Weekly' },\n expect: { kind: 'text', part: 'label', value: 'Weekly' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'dot', fill: '--radiobutton-default-dot-fill', stroke: '--radiobutton-default-dot-border-color' }],\n },\n};\n","import type { ComponentContract, PaintMap, SetupStep } from '../componentContract';\n\ntype Variant = 'lg' | 'md' | 'sm';\n\n/** Only the large variant ships its eyebrow and description visible; the other\n * two hide them behind the element switches. */\nconst showOptionalContent: SetupStep[] = [\n { kind: 'control', selector: 'label.element-show-toggle:has-text(\"Show description\") input', check: true },\n { kind: 'control', selector: 'label.element-show-toggle:has-text(\"Show eyebrow\") input', check: true },\n];\n\nfunction variantPaints(v: Variant): PaintMap {\n return {\n root: {\n paddingTop: `--sectiondivider-${v}-padding`,\n borderRadius: `--sectiondivider-${v}-radius`,\n borderTopWidth: `--sectiondivider-${v}-border-width`,\n borderTopColor: `--sectiondivider-${v}-border`,\n boxShadow: `--sectiondivider-${v}-shadow`,\n backgroundImage: `--sectiondivider-${v}-surface`,\n },\n titleRow: { paddingTop: `--sectiondivider-${v}-title-padding` },\n title: {\n color: `--sectiondivider-${v}-title`,\n fontFamily: `--sectiondivider-${v}-title-font-family`,\n fontSize: `--sectiondivider-${v}-title-font-size`,\n fontWeight: `--sectiondivider-${v}-title-font-weight`,\n lineHeight: `--sectiondivider-${v}-title-line-height`,\n letterSpacing: `--sectiondivider-${v}-title-letter-spacing`,\n },\n descriptionRow: { paddingTop: `--sectiondivider-${v}-description-padding` },\n description: {\n color: `--sectiondivider-${v}-description`,\n fontFamily: `--sectiondivider-${v}-description-font-family`,\n fontSize: `--sectiondivider-${v}-description-font-size`,\n fontWeight: `--sectiondivider-${v}-description-font-weight`,\n lineHeight: `--sectiondivider-${v}-description-line-height`,\n },\n eyebrow: {\n paddingTop: `--sectiondivider-${v}-eyebrow-padding`,\n color: `--sectiondivider-${v}-eyebrow`,\n fontFamily: `--sectiondivider-${v}-eyebrow-font-family`,\n fontSize: `--sectiondivider-${v}-eyebrow-font-size`,\n fontWeight: `--sectiondivider-${v}-eyebrow-font-weight`,\n letterSpacing: `--sectiondivider-${v}-eyebrow-letter-spacing`,\n },\n hairline: {\n backgroundColor: `--sectiondivider-${v}-hairline-color`,\n height: `--sectiondivider-${v}-hairline-width`,\n },\n };\n}\n\nexport const sectionDividerContract: ComponentContract = {\n id: 'sectiondivider',\n origin: 'system',\n view: { variant: 'Large', setup: showOptionalContent },\n root: 'root',\n parts: {\n root: '.section-divider',\n titleRow: '.title-row',\n title: '.divider-label',\n descriptionRow: '.description-row',\n description: '.divider-description',\n eyebrow: '.divider-eyebrow',\n hairline: '.sd-hairline',\n },\n properties: [\n { variant: 'Large', setup: showOptionalContent, paints: variantPaints('lg') },\n { variant: 'Medium', setup: showOptionalContent, paints: variantPaints('md') },\n { variant: 'Small', setup: showOptionalContent, paints: variantPaints('sm') },\n ],\n states: {\n applicable: false,\n reason: 'each variant is one full preset with one state, so the editor renders no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--sectiondivider-lg-hairline-color',\n observe: { part: 'hairline', css: 'backgroundColor' },\n },\n {\n shape: 'gradient',\n variable: '--sectiondivider-lg-surface',\n observe: { part: 'root', css: 'backgroundColor' },\n },\n {\n shape: 'literal',\n control: '.sd-intrinsic-row:has(.property-label:text-is(\"alignment\")) select',\n variable: '--sectiondivider-lg-align',\n observe: { part: 'root', css: 'textAlign' },\n },\n ],\n resetVariable: '--sectiondivider-lg-hairline-color',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--sectiondivider-lg-radius',\n '--sectiondivider-lg-border-width',\n '--sectiondivider-lg-hairline-width',\n '--sectiondivider-lg-hairline-color',\n ],\n unchanged: [\n '--sectiondivider-lg-padding',\n '--sectiondivider-lg-shadow',\n '--sectiondivider-lg-title',\n '--sectiondivider-lg-border',\n '--sectiondivider-lg-title-font-size',\n ],\n aliasedTo: {\n '--sectiondivider-lg-radius': '--radius-none',\n '--sectiondivider-lg-border-width': '--border-width-3',\n '--sectiondivider-lg-hairline-width': '--border-width-3',\n },\n observe: { part: 'root', css: 'borderRadius', variable: '--sectiondivider-lg-radius' },\n },\n interaction: {\n applicable: false,\n reason: 'a divider is a static banner: no interactive role, nothing focusable, no pointer behaviour',\n },\n behavior: {\n applicable: false,\n reason: 'a divider declares no callback prop and answers no event',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'hairline', fill: '--sectiondivider-lg-hairline-color' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nconst behaviorSegments = [\n { value: 'grid', label: 'Grid' },\n { value: 'list', label: 'List' },\n];\n\nexport const segmentedControlContract: ComponentContract = {\n id: 'segmentedcontrol',\n origin: 'system',\n view: { state: 'selected option' },\n root: 'root',\n parts: {\n root: '.segmented-control',\n segment: '.segment',\n icon: '.segment i',\n selectedSegment: '.segment.selected',\n selectedIcon: '.segment.selected i',\n hairline: '.segment-hairline',\n },\n properties: [\n {\n state: 'control bar',\n paints: {\n root: {\n backgroundColor: '--segmentedcontrol-bar-surface',\n borderTopColor: '--segmentedcontrol-bar-border',\n borderTopWidth: '--segmentedcontrol-bar-border-width',\n borderRadius: '--segmentedcontrol-bar-radius',\n columnGap: '--segmentedcontrol-bar-gap',\n paddingTop: '--segmentedcontrol-bar-padding',\n },\n hairline: {\n backgroundColor: '--segmentedcontrol-hairline-color',\n width: '--segmentedcontrol-hairline-width',\n marginTop: '--segmentedcontrol-hairline-inset',\n },\n },\n },\n {\n state: 'option base',\n paints: {\n segment: {\n paddingTop: '--segmentedcontrol-option-padding',\n columnGap: '--segmentedcontrol-option-gap',\n borderRadius: '--segmentedcontrol-selected-radius',\n },\n icon: { fontSize: '--segmentedcontrol-option-icon-size' },\n },\n },\n {\n state: 'default option',\n paints: {\n segment: {\n lineHeight: '--segmentedcontrol-option-text-line-height',\n },\n },\n },\n {\n state: 'selected option',\n paints: { selectedSegment: { lineHeight: '--segmentedcontrol-selected-text-line-height' } },\n },\n {\n state: 'disabled option',\n paints: { segment: { lineHeight: '--segmentedcontrol-disabled-text-line-height' } },\n },\n {\n state: 'hover option',\n paints: { segment: { lineHeight: '--segmentedcontrol-option-hover-text-line-height' } },\n },\n {\n setup: [{ kind: 'control', selector: '.preview-actions select', value: 'small' }],\n paints: {\n root: { borderRadius: '--segmentedcontrol-bar-small-radius', paddingTop: '--segmentedcontrol-bar-small-padding' },\n segment: {\n borderRadius: '--segmentedcontrol-selected-small-radius',\n paddingTop: '--segmentedcontrol-option-small-padding',\n columnGap: '--segmentedcontrol-option-small-gap',\n fontSize: '--segmentedcontrol-option-small-text-font-size',\n lineHeight: '--segmentedcontrol-option-small-text-line-height',\n },\n icon: { fontSize: '--segmentedcontrol-option-small-icon-size' },\n hairline: { width: '--segmentedcontrol-small-hairline-width', marginTop: '--segmentedcontrol-small-hairline-inset' },\n },\n },\n ],\n states: [\n { state: 'control bar' },\n { state: 'option base' },\n {\n state: 'default option',\n paints: {\n icon: { color: '--segmentedcontrol-option-icon' },\n segment: {\n color: '--segmentedcontrol-option-text',\n fontFamily: '--segmentedcontrol-option-text-font-family',\n fontSize: '--segmentedcontrol-option-text-font-size',\n fontWeight: '--segmentedcontrol-option-text-font-weight',\n },\n },\n },\n {\n state: 'selected option',\n paints: {\n selectedSegment: {\n backgroundColor: '--segmentedcontrol-selected-surface',\n outlineColor: '--segmentedcontrol-selected-border',\n outlineWidth: '--segmentedcontrol-selected-border-width',\n color: '--segmentedcontrol-selected-text',\n fontFamily: '--segmentedcontrol-selected-text-font-family',\n fontSize: '--segmentedcontrol-selected-text-font-size',\n fontWeight: '--segmentedcontrol-selected-text-font-weight',\n },\n selectedIcon: { color: '--segmentedcontrol-selected-icon' },\n },\n },\n {\n state: 'hover option',\n paints: {\n segment: {\n backgroundColor: '--segmentedcontrol-option-hover-surface',\n color: '--segmentedcontrol-option-hover-text',\n fontFamily: '--segmentedcontrol-option-hover-text-font-family',\n fontSize: '--segmentedcontrol-option-hover-text-font-size',\n fontWeight: '--segmentedcontrol-option-hover-text-font-weight',\n },\n icon: { color: '--segmentedcontrol-option-hover-icon' },\n },\n },\n {\n state: 'disabled option',\n attributes: { segment: { disabled: '' } },\n paints: {\n segment: {\n backgroundColor: '--segmentedcontrol-disabled-surface',\n color: '--segmentedcontrol-disabled-text',\n fontFamily: '--segmentedcontrol-disabled-text-font-family',\n fontSize: '--segmentedcontrol-disabled-text-font-size',\n fontWeight: '--segmentedcontrol-disabled-text-font-weight',\n },\n icon: { color: '--segmentedcontrol-disabled-icon' },\n },\n },\n ],\n uncovered: {\n '--segmentedcontrol-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--segmentedcontrol-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'control bar',\n variable: '--segmentedcontrol-bar-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--segmentedcontrol-bar-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--segmentedcontrol-bar-border-width', '--segmentedcontrol-bar-radius', '--segmentedcontrol-option-padding'],\n unchanged: ['--segmentedcontrol-option-icon-size'],\n aliasedTo: {\n '--segmentedcontrol-bar-border-width': '--border-width-3',\n '--segmentedcontrol-bar-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--segmentedcontrol-bar-border-width' },\n },\n interaction: {\n part: 'segment',\n role: 'radio',\n cases: [\n {\n name: 'clicking a segment checks it',\n action: { kind: 'click', part: 'segment' },\n expect: { kind: 'attribute', part: 'segment', name: 'aria-checked', value: 'true' },\n },\n {\n name: 'a disabled control refuses focus',\n state: 'disabled option',\n action: { kind: 'click', part: 'segment' },\n expect: { kind: 'focused', part: 'segment', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking a segment asks for its value',\n props: { segments: behaviorSegments, value: 'list' },\n action: { kind: 'click', part: 'segment' },\n expect: { kind: 'callback', prop: 'onchange', args: ['grid'] },\n },\n {\n name: 'value drives the checked segment',\n props: { segments: behaviorSegments, value: 'grid' },\n expect: { kind: 'attribute', part: 'segment', name: 'aria-checked', value: 'true' },\n },\n {\n name: 'a disabled control stays silent',\n props: { segments: behaviorSegments, value: 'list', disabled: true },\n action: { kind: 'click', part: 'segment' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', fill: '--segmentedcontrol-bar-surface', stroke: '--segmentedcontrol-bar-border' },\n { part: 'selectedSegment', fill: '--segmentedcontrol-selected-surface', stroke: '--segmentedcontrol-selected-border' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap, SetupStep } from '../componentContract';\n\n/** Both the top-level part tab and its sub-state live in one string, joined by\n * \" / \" in the DOM but rendered as two separate strips; reaching a sub-state\n * other than the first needs an extra click into the sub-strip. */\nfunction sub(label: string): SetupStep[] {\n return [{ kind: 'control', selector: `.tabs-selectors.substrip .state-tab-btn:has-text(\"${label}\")` }];\n}\n\nfunction titlePaints(s: 'default' | 'hover' | 'selected'): PaintMap {\n return {\n title: {\n backgroundColor: `--sidenavigation-title-${s}-surface`,\n borderTopColor: `--sidenavigation-title-${s}-border`,\n borderTopWidth: `--sidenavigation-title-${s}-border-width`,\n borderLeftColor: `--sidenavigation-title-${s}-indicator`,\n borderLeftWidth: `--sidenavigation-title-${s}-indicator-width`,\n paddingTop: `--sidenavigation-title-${s}-padding`,\n },\n titleLinkBox: {\n color: `--sidenavigation-title-${s}-label`,\n fontFamily: `--sidenavigation-title-${s}-label-font-family`,\n fontSize: `--sidenavigation-title-${s}-label-font-size`,\n fontWeight: `--sidenavigation-title-${s}-label-font-weight`,\n lineHeight: `--sidenavigation-title-${s}-label-line-height`,\n },\n };\n}\n\nfunction togglePaints(s: 'default' | 'hover'): PaintMap {\n return {\n toggle: {\n backgroundColor: `--sidenavigation-toggle-${s}-surface`,\n borderTopColor: `--sidenavigation-toggle-${s}-border`,\n borderTopWidth: `--sidenavigation-toggle-${s}-border-width`,\n borderRadius: `--sidenavigation-toggle-${s}-radius`,\n paddingTop: `--sidenavigation-toggle-${s}-padding`,\n color: `--sidenavigation-toggle-${s}-icon`,\n },\n toggleIcon: { fontSize: `--sidenavigation-toggle-${s}-icon-size` },\n };\n}\n\nfunction sectionPaints(part: string, labelPart: string, s: 'default' | 'hover' | 'selected'): PaintMap {\n return {\n [part]: {\n backgroundColor: `--sidenavigation-section-${s}-surface`,\n borderLeftColor: `--sidenavigation-section-${s}-indicator`,\n borderLeftWidth: `--sidenavigation-section-${s}-indicator-width`,\n },\n [labelPart]: {\n color: `--sidenavigation-section-${s}-text`,\n fontFamily: `--sidenavigation-section-${s}-text-font-family`,\n fontSize: `--sidenavigation-section-${s}-text-font-size`,\n fontWeight: `--sidenavigation-section-${s}-text-font-weight`,\n lineHeight: `--sidenavigation-section-${s}-text-line-height`,\n },\n };\n}\n\nfunction itemPaints(part: string, s: 'default' | 'hover' | 'selected'): PaintMap {\n return {\n [part]: {\n backgroundColor: `--sidenavigation-item-${s}-surface`,\n borderLeftColor: `--sidenavigation-item-${s}-indicator`,\n borderLeftWidth: `--sidenavigation-item-${s}-indicator-width`,\n paddingTop: `--sidenavigation-item-${s}-padding`,\n color: `--sidenavigation-item-${s}-text`,\n fontFamily: `--sidenavigation-item-${s}-text-font-family`,\n fontSize: `--sidenavigation-item-${s}-text-font-size`,\n fontWeight: `--sidenavigation-item-${s}-text-font-weight`,\n lineHeight: `--sidenavigation-item-${s}-text-line-height`,\n },\n };\n}\n\nfunction footerPaints(s: 'default' | 'hover' | 'selected'): PaintMap {\n return {\n footer: {\n backgroundColor: `--sidenavigation-footer-${s}-surface`,\n borderLeftColor: `--sidenavigation-footer-${s}-indicator`,\n borderLeftWidth: `--sidenavigation-footer-${s}-indicator-width`,\n paddingTop: `--sidenavigation-footer-${s}-padding`,\n columnGap: `--sidenavigation-footer-${s}-gap`,\n color: `--sidenavigation-footer-${s}-text`,\n fontFamily: `--sidenavigation-footer-${s}-text-font-family`,\n fontSize: `--sidenavigation-footer-${s}-text-font-size`,\n fontWeight: `--sidenavigation-footer-${s}-text-font-weight`,\n lineHeight: `--sidenavigation-footer-${s}-text-line-height`,\n },\n footerIcon: {\n color: `--sidenavigation-footer-${s}-icon`,\n fontSize: `--sidenavigation-footer-${s}-icon-size`,\n },\n };\n}\n\nexport const sideNavigationContract: ComponentContract = {\n id: 'sidenavigation',\n origin: 'system',\n // Section has no currentPath-driven selected state (unlike Item, whose\n // demo path lands inside section-1): it lights up only through the force\n // mechanism behind the \"Selected\" sub-tab, so the inventory's one view has\n // to land there for `sectionSelected` to resolve at all.\n view: { state: 'Section', setup: sub('Selected') },\n root: 'root',\n parts: {\n root: '.sidenavigation',\n title: '.sn-title',\n titleLinkBox: '.sn-title-label',\n toggle: '.sn-toggle',\n toggleIcon: '.sn-toggle i',\n sectionWrap: '.sn-section',\n section: '.sn-section-header:not(.selected)',\n sectionLabel: '.sn-section-header:not(.selected) .section-label',\n sectionSelected: '.sn-section-header.selected',\n sectionLabelSelected: '.sn-section-header.selected .section-label',\n item: '.sn-item:not(.selected)',\n itemSelected: '.sn-item.selected',\n footer: '.sn-footer',\n footerIcon: '.sn-footer i',\n },\n properties: [\n {\n state: 'Panel',\n setup: [],\n paints: {\n root: {\n backgroundColor: '--sidenavigation-panel-surface',\n borderRightColor: '--sidenavigation-panel-border',\n borderRightWidth: '--sidenavigation-panel-border-width',\n paddingTop: '--sidenavigation-panel-padding',\n },\n item: { paddingLeft: '--sidenavigation-panel-item-padding' },\n footer: { marginTop: '--sidenavigation-panel-footer-gap' },\n sectionWrap: { marginTop: '--sidenavigation-panel-section-gap' },\n },\n },\n {\n state: 'Title Block',\n setup: [],\n paints: {\n title: { columnGap: '--sidenavigation-title-gap', borderRadius: '--sidenavigation-title-radius' },\n titleLinkBox: {\n backgroundColor: '--sidenavigation-title-label-surface',\n borderTopColor: '--sidenavigation-title-label-border',\n borderTopWidth: '--sidenavigation-title-label-border-width',\n borderRadius: '--sidenavigation-title-label-radius',\n paddingTop: '--sidenavigation-title-label-padding',\n },\n },\n },\n { state: 'Title', setup: [], paints: titlePaints('default') },\n { state: 'Title', setup: sub('Hover'), paints: titlePaints('hover') },\n { state: 'Title', setup: sub('Selected'), paints: titlePaints('selected') },\n { state: 'Toggle', setup: [], paints: togglePaints('default') },\n { state: 'Toggle', setup: sub('Hover'), paints: togglePaints('hover') },\n { state: 'Section', setup: [], paints: sectionPaints('section', 'sectionLabel', 'default') },\n { state: 'Section', setup: sub('Hover'), paints: sectionPaints('section', 'sectionLabel', 'hover') },\n { state: 'Section', setup: sub('Selected'), paints: sectionPaints('sectionSelected', 'sectionLabelSelected', 'selected') },\n { state: 'Item', setup: [], paints: itemPaints('item', 'default') },\n { state: 'Item', setup: sub('Hover'), paints: itemPaints('item', 'hover') },\n { state: 'Item', setup: [], paints: itemPaints('itemSelected', 'selected') },\n { state: 'Footer', setup: [], paints: footerPaints('default') },\n { state: 'Footer', setup: sub('Hover'), paints: footerPaints('hover') },\n { state: 'Footer', setup: sub('Selected'), paints: footerPaints('selected') },\n ],\n states: [\n { state: 'Panel', setup: [] },\n { state: 'Title', setup: [] },\n { state: 'Title Block', setup: [] },\n { state: 'Toggle', setup: [] },\n { state: 'Section', setup: [] },\n { state: 'Item', setup: [] },\n { state: 'Footer', setup: [] },\n { state: 'Animation', setup: [] },\n ],\n uncovered: {\n '--sidenavigation-open-duration': 'consumed by a width transition, no probe covers duration',\n '--sidenavigation-open-easing': 'consumed by a width transition, no probe covers an easing curve',\n '--sidenavigation-close-duration': 'consumed by a width transition, no probe covers duration',\n '--sidenavigation-close-easing': 'consumed by a width transition, no probe covers an easing curve',\n '--sidenavigation-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--sidenavigation-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'Panel',\n setup: [],\n variable: '--sidenavigation-panel-border-width',\n observe: { part: 'root', css: 'borderRightWidth' },\n },\n ],\n resetVariable: '--sidenavigation-panel-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--sidenavigation-panel-border-width', '--sidenavigation-title-default-border-width'],\n unchanged: ['--sidenavigation-toggle-default-icon-size'],\n aliasedTo: {\n '--sidenavigation-panel-border-width': '--border-width-3',\n '--sidenavigation-title-default-border-width': '--border-width-3',\n },\n observe: { part: 'root', css: 'borderRightWidth', variable: '--sidenavigation-panel-border-width' },\n },\n interaction: {\n part: 'toggle',\n role: 'button',\n cases: [\n {\n name: 'clicking the toggle collapses the rail',\n action: { kind: 'click', part: 'toggle' },\n expect: { kind: 'attribute', part: 'toggle', name: 'aria-expanded', value: 'false' },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking the rail toggle reports it',\n props: { title: 'Docs' },\n action: { kind: 'click', part: 'toggle' },\n expect: { kind: 'callback', prop: 'ontoggle', args: [] },\n },\n {\n name: 'open drives the toggle',\n props: { title: 'Docs', open: false },\n expect: { kind: 'attribute', part: 'toggle', name: 'aria-expanded', value: 'false' },\n },\n {\n name: 'clicking leaves the rail where the prop put it',\n props: { title: 'Docs', open: true },\n action: { kind: 'click', part: 'toggle' },\n expect: { kind: 'attribute', part: 'toggle', name: 'aria-expanded', value: 'true' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--sidenavigation-panel-surface', stroke: '--sidenavigation-panel-border' }],\n },\n};\n","import type { ComponentContract, PaintMap, StateExpectation } from '../componentContract';\n\ntype Variant = 'single' | 'range';\n\nfunction variantPaints(v: Variant): PaintMap {\n return {\n track: {\n backgroundColor: `--slider-${v}-track-surface`,\n borderTopColor: `--slider-${v}-track-border`,\n borderTopWidth: `--slider-${v}-track-border-width`,\n borderRadius: `--slider-${v}-track-radius`,\n height: `--slider-${v}-track-height`,\n },\n fill: { backgroundColor: `--slider-${v}-fill` },\n thumb: {\n backgroundColor: `--slider-${v}-thumb-surface`,\n borderTopColor: `--slider-${v}-thumb-border`,\n borderTopWidth: `--slider-${v}-thumb-border-width`,\n borderRadius: `--slider-${v}-thumb-radius`,\n width: `--slider-${v}-thumb-size`,\n boxShadow: `--slider-${v}-thumb-shadow`,\n },\n };\n}\n\nfunction variantStates(v: Variant, variant: string): StateExpectation[] {\n return [\n {\n variant,\n state: 'default',\n attributes: { input: { disabled: null } },\n paints: { thumb: { backgroundColor: `--slider-${v}-thumb-surface` } },\n },\n {\n variant,\n state: 'hover',\n forceClass: 'force-hover',\n paints: {\n thumb: {\n backgroundColor: `--slider-${v}-hover-thumb-surface`,\n borderTopColor: `--slider-${v}-hover-thumb-border`,\n },\n },\n },\n {\n variant,\n state: 'disabled',\n attributes: { input: { disabled: '' } },\n paints: {\n track: { backgroundColor: `--slider-${v}-disabled-track-surface` },\n fill: { backgroundColor: `--slider-${v}-disabled-fill` },\n thumb: {\n backgroundColor: `--slider-${v}-disabled-thumb-surface`,\n borderTopColor: `--slider-${v}-disabled-thumb-border`,\n },\n },\n },\n ];\n}\n\n/**\n * Both variants. Their rows are linked by default, so an edit to one moves the\n * other until a user unlinks them; the locators are the same and only the\n * token prefix differs.\n */\nexport const sliderContract: ComponentContract = {\n id: 'slider',\n origin: 'system',\n view: { variant: 'Single' },\n root: 'root',\n parts: {\n root: '.slider',\n track: '.slider-track',\n fill: '.slider-fill',\n thumb: '.cap',\n input: 'input.thumb',\n label: '.slider-label > span:not(.slider-value)',\n value: '.slider-value',\n },\n properties: [\n {\n variant: 'Single',\n paints: {\n ...variantPaints('single'),\n root: { rowGap: '--slider-label-gap' },\n label: {\n color: '--slider-label',\n fontFamily: '--slider-label-font-family',\n fontSize: '--slider-label-font-size',\n fontWeight: '--slider-label-font-weight',\n lineHeight: '--slider-label-line-height',\n },\n value: {\n color: '--slider-value',\n fontFamily: '--slider-value-font-family',\n fontSize: '--slider-value-font-size',\n fontWeight: '--slider-value-font-weight',\n lineHeight: '--slider-value-line-height',\n },\n },\n },\n { variant: 'Range', paints: variantPaints('range') },\n ],\n states: [\n ...variantStates('single', 'Single'),\n ...variantStates('range', 'Range'),\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--slider-single-track-surface',\n observe: { part: 'track', css: 'backgroundColor' },\n },\n {\n shape: 'opacity',\n variable: '--slider-single-fill',\n observe: { part: 'fill', css: 'backgroundColor' },\n },\n ],\n resetVariable: '--slider-single-track-surface',\n },\n theme: {\n theme: 'ocean',\n changed: [\n '--slider-single-track-surface',\n '--slider-single-fill',\n '--slider-single-thumb-surface',\n ],\n unchanged: [\n '--slider-single-track-height',\n '--slider-single-track-radius',\n '--slider-single-thumb-size',\n '--slider-single-track-border-width',\n ],\n aliasedTo: {\n '--slider-single-track-surface': '--surface-neutral-lowest',\n '--slider-single-fill': '--surface-brand-high',\n },\n observe: { part: 'track', css: 'backgroundColor', variable: '--slider-single-track-surface' },\n },\n interaction: {\n part: 'input',\n role: 'slider',\n cases: [\n {\n name: 'arrow right raises the value',\n action: { kind: 'press', part: 'input', key: 'ArrowRight' },\n expect: { kind: 'valueMoves', part: 'input', direction: 'up' },\n },\n {\n name: 'arrow left lowers the value',\n action: { kind: 'press', part: 'input', key: 'ArrowLeft' },\n expect: { kind: 'valueMoves', part: 'input', direction: 'down' },\n },\n {\n name: 'Home takes the value to the floor',\n action: { kind: 'press', part: 'input', key: 'Home' },\n expect: { kind: 'valueBecomes', part: 'input', value: '0' },\n },\n {\n name: 'dragging the thumb along the track raises the value',\n action: { kind: 'dragTo', part: 'thumb', along: 'track', fraction: 0.85 },\n expect: { kind: 'valueMoves', part: 'input', direction: 'up' },\n },\n {\n name: 'taking hold of the thumb focuses the slider',\n action: { kind: 'dragTo', part: 'thumb', along: 'track', fraction: 0.5 },\n expect: { kind: 'focused', part: 'input', value: true },\n },\n {\n name: 'a disabled slider ignores the arrow keys',\n state: 'disabled',\n action: { kind: 'press', part: 'input', key: 'ArrowRight' },\n expect: { kind: 'valueHolds', part: 'input' },\n },\n {\n name: 'a disabled slider refuses focus',\n state: 'disabled',\n action: { kind: 'dragTo', part: 'thumb', along: 'track', fraction: 0.5 },\n expect: { kind: 'focused', part: 'input', value: false },\n },\n ],\n },\n behavior: {\n // No disabled case: a range reports through `input`, and a dispatched\n // input event reaches a disabled control, so the case would assert the\n // environment rather than the slider.\n cases: [\n {\n name: 'moving the thumb reports the value',\n props: { label: 'Level', value: 30 },\n action: { kind: 'input', part: 'input', value: '70' },\n expect: { kind: 'callback', prop: 'onchange', args: [70] },\n },\n {\n name: 'a range thumb reports both ends',\n props: { variant: 'range', low: 25, high: 75 },\n action: { kind: 'input', part: 'input', value: '10' },\n expect: { kind: 'callback', prop: 'onrangechange', args: [10, 75] },\n },\n {\n name: 'value drives the readout',\n props: { label: 'Level', value: 30 },\n expect: { kind: 'text', part: 'value', value: '30' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n {\n part: 'track',\n fill: '--slider-single-track-surface',\n stroke: '--slider-single-track-border',\n },\n { part: 'fill', fill: '--slider-single-fill' },\n ],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\n/**\n * `full` adds `lineHeight`. `assertPaintsFromToken` (properties) drives a\n * controlled pixel probe, so a unitless line-height round-trips fine there;\n * `assertPaintMap` (states) reads the token's real, already-resolved value\n * through `normalize()`, which cannot recompute a unitless multiplier outside\n * the tab's own font-size context. States skip it; properties cover it.\n */\nfunction tabPaints(part: string, iconPart: string, s: string, full: boolean): PaintMap {\n const tab: PaintMap[string] = {\n backgroundColor: `--tabbar-${s}-surface`,\n borderTopColor: `--tabbar-${s}-tab-border-color`,\n borderTopWidth: `--tabbar-${s}-tab-border-width`,\n borderBottomColor: `--tabbar-${s}-border`,\n borderBottomWidth: `--tabbar-${s}-indicator-width`,\n borderTopLeftRadius: `--tabbar-${s}-tab-top-radius`,\n borderBottomLeftRadius: `--tabbar-${s}-tab-bottom-radius`,\n paddingTop: `--tabbar-${s}-padding`,\n color: `--tabbar-${s}-text`,\n fontFamily: `--tabbar-${s}-text-font-family`,\n fontSize: `--tabbar-${s}-text-font-size`,\n fontWeight: `--tabbar-${s}-text-font-weight`,\n };\n if (full) tab.lineHeight = `--tabbar-${s}-text-line-height`;\n return {\n [part]: tab,\n [iconPart]: { fontSize: `--tabbar-${s}-icon-size` },\n };\n}\n\nconst behaviorTabs = [\n { id: 'one', label: 'One' },\n { id: 'two', label: 'Two' },\n];\n\nexport const tabBarContract: ComponentContract = {\n id: 'tabbar',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.tab-bar',\n tab: '.tab:not(.selected):not(:disabled)',\n icon: '.tab:not(.selected):not(:disabled) i',\n tabSelected: '.tab.selected',\n selectedIcon: '.tab.selected i',\n disabledTab: '.tab:disabled',\n disabledIcon: '.tab:disabled i',\n // Position-stable: clicking `tab` (\".tab:not(.selected)\") makes that very\n // tab selected, which would invalidate that selector out from under a\n // focus check re-resolved after the click.\n secondTab: '.tab:nth-of-type(2)',\n },\n properties: [\n {\n state: 'bar',\n paints: {\n root: {\n borderBottomColor: '--tabbar-bar-hairline-color',\n borderBottomWidth: '--tabbar-bar-hairline-width',\n marginTop: '--tabbar-bar-top-margin',\n paddingBottom: '--tabbar-bar-bottom-padding',\n marginBottom: '--tabbar-bar-bottom-margin',\n columnGap: '--tabbar-tab-gap',\n },\n },\n },\n { state: 'default tab', paints: tabPaints('tab', 'icon', 'default', true) },\n { state: 'hover tab', paints: tabPaints('tab', 'icon', 'hover', true) },\n { state: 'selected tab', paints: tabPaints('tabSelected', 'selectedIcon', 'selected', true) },\n { state: 'disabled tab', paints: tabPaints('disabledTab', 'disabledIcon', 'disabled', true) },\n ],\n states: [\n { state: 'bar' },\n { state: 'default tab', paints: tabPaints('tab', 'icon', 'default', false) },\n { state: 'hover tab', paints: tabPaints('tab', 'icon', 'hover', false) },\n { state: 'selected tab', paints: tabPaints('tabSelected', 'selectedIcon', 'selected', false) },\n {\n state: 'disabled tab',\n attributes: { disabledTab: { disabled: '' } },\n paints: tabPaints('disabledTab', 'disabledIcon', 'disabled', false),\n },\n ],\n uncovered: {\n '--tabbar-hover-tint': 'consumed inside a background-image tint wash, never appearing verbatim in a computed style',\n '--tabbar-hover-tint-enabled': 'the gate for the tint wash above, same limitation',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n state: 'default tab',\n variable: '--tabbar-default-tab-border-width',\n observe: { part: 'tab', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--tabbar-default-tab-border-width',\n },\n theme: {\n theme: 'halloween',\n // The indicator width is the canary for re-migration replay: the tabbar\n // pair (2026-05-29-tabbar-indicator-thickness-to-per-state-width,\n // 2026-09-07-stroke-role-renames) rewrites it to --border-width-2 if a\n // reader migrates a theme-embedded config off a stamp of 0 instead of the\n // theme's componentSchemaVersion.\n changed: [\n '--tabbar-default-tab-border-width',\n '--tabbar-default-padding',\n '--tabbar-default-indicator-width',\n ],\n unchanged: ['--tabbar-default-icon-size'],\n aliasedTo: {\n '--tabbar-default-tab-border-width': '--border-width-2',\n '--tabbar-default-indicator-width': '--border-width-4',\n },\n observe: { part: 'tab', css: 'borderTopWidth', variable: '--tabbar-default-tab-border-width' },\n },\n interaction: {\n part: 'secondTab',\n role: 'button',\n cases: [\n {\n name: 'clicking a tab focuses it',\n action: { kind: 'click', part: 'secondTab' },\n expect: { kind: 'focused', part: 'secondTab', value: true },\n },\n {\n name: 'a disabled tab refuses focus',\n state: 'disabled tab',\n action: { kind: 'click', part: 'disabledTab' },\n expect: { kind: 'focused', part: 'disabledTab', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking a tab asks for it',\n props: { tabs: behaviorTabs, value: 'one' },\n action: { kind: 'click', part: 'secondTab' },\n expect: { kind: 'callback', prop: 'onchange', args: ['two'] },\n },\n {\n name: 'clicking leaves the selection where the prop put it',\n props: { tabs: behaviorTabs, value: 'one' },\n action: { kind: 'click', part: 'secondTab' },\n expect: { kind: 'text', part: 'tabSelected', value: 'One' },\n },\n {\n name: 'a disabled tab stays silent',\n props: { tabs: [behaviorTabs[0], { ...behaviorTabs[1], disabled: true }], value: 'one' },\n action: { kind: 'click', part: 'secondTab' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'tab', fill: '--tabbar-default-surface', stroke: '--tabbar-default-border' },\n { part: 'tabSelected', fill: '--tabbar-selected-surface', stroke: '--tabbar-selected-border' },\n ],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const tableContract: ComponentContract = {\n id: 'table',\n origin: 'system',\n root: 'wrapper',\n parts: {\n wrapper: '.table-wrapper',\n th: '.table-wrapper th',\n td: '.table-wrapper td',\n },\n properties: [\n {\n paints: {\n wrapper: {\n backgroundColor: '--table-default-surface',\n borderTopColor: '--table-default-border',\n borderTopWidth: '--table-default-border-width',\n borderRadius: '--table-default-radius',\n boxShadow: '--table-default-shadow',\n },\n th: {\n backgroundColor: '--table-default-header-surface',\n color: '--table-default-header-text',\n fontFamily: '--table-default-header-font-family',\n fontSize: '--table-default-header-font-size',\n fontWeight: '--table-default-header-font-weight',\n lineHeight: '--table-default-header-line-height',\n borderBottomColor: '--table-default-header-hairline-color',\n borderBottomWidth: '--table-default-header-hairline-width',\n paddingTop: '--table-default-header-padding',\n borderRightColor: '--table-default-column-hairline-color',\n borderRightWidth: '--table-default-column-hairline-width',\n },\n td: {\n backgroundColor: '--table-default-row-surface',\n color: '--table-default-cell-text',\n fontFamily: '--table-default-cell-font-family',\n fontSize: '--table-default-cell-font-size',\n fontWeight: '--table-default-cell-font-weight',\n lineHeight: '--table-default-cell-line-height',\n paddingTop: '--table-default-cell-padding',\n borderBottomColor: '--table-default-row-hairline-color',\n borderBottomWidth: '--table-default-row-hairline-width',\n },\n },\n },\n ],\n states: [\n { state: 'wrapper' },\n { state: 'header' },\n { state: 'cell' },\n { state: 'row' },\n { state: 'column' },\n ],\n uncovered: {\n '--table-default-row-stripe-surface': 'layered as a background-image on every even row; a probe cannot pin a single verbatim computed value to that selector',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--table-default-border-width',\n observe: { part: 'wrapper', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--table-default-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--table-default-border-width',\n '--table-default-radius',\n '--table-default-header-hairline-width',\n '--table-default-header-padding',\n ],\n unchanged: ['--table-default-header-font-size'],\n aliasedTo: {\n '--table-default-border-width': '--border-width-4',\n '--table-default-radius': '--radius-none',\n },\n observe: { part: 'wrapper', css: 'borderTopWidth', variable: '--table-default-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a styled table wrapper carries no interactive role',\n },\n behavior: {\n applicable: false,\n reason: 'a table wrapper declares no callback prop; its rows arrive as a snippet',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'wrapper', fill: '--table-default-surface', stroke: '--table-default-border' }],\n },\n};\n","import type { ComponentContract, PaintMap } from '../componentContract';\n\nconst defaultPaints: PaintMap = {\n root: { columnGap: '--toggle-gap' },\n track: {\n backgroundColor: '--toggle-track-surface',\n borderTopColor: '--toggle-track-border',\n borderTopWidth: '--toggle-track-border-width',\n borderRadius: '--toggle-track-radius',\n },\n thumb: {\n backgroundColor: '--toggle-thumb-surface',\n borderTopColor: '--toggle-thumb-border',\n width: '--toggle-thumb-size',\n left: '--toggle-track-padding',\n },\n label: {\n color: '--toggle-label',\n fontFamily: '--toggle-label-font-family',\n fontSize: '--toggle-label-font-size',\n fontWeight: '--toggle-label-font-weight',\n },\n};\n\nexport const toggleContract: ComponentContract = {\n id: 'toggle',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.toggle',\n track: '.track',\n thumb: '.thumb',\n label: '.label',\n },\n properties: [{ paints: defaultPaints }],\n states: [\n {\n state: 'default',\n attributes: { root: { 'aria-checked': 'false' } },\n },\n {\n state: 'hover',\n forceClass: 'force-hover',\n paints: {\n track: { backgroundColor: '--toggle-hover-track-surface' },\n thumb: { backgroundColor: '--toggle-hover-thumb-surface' },\n },\n },\n {\n state: 'on',\n attributes: { root: { 'aria-checked': 'true' } },\n paints: {\n track: { backgroundColor: '--toggle-on-track-surface', borderTopColor: '--toggle-on-track-border' },\n thumb: { backgroundColor: '--toggle-on-thumb-surface', borderTopColor: '--toggle-on-thumb-border' },\n },\n },\n {\n state: 'on hover',\n forceClass: 'force-hover',\n attributes: { root: { 'aria-checked': 'true' } },\n paints: {\n track: { backgroundColor: '--toggle-on-hover-track-surface' },\n thumb: { backgroundColor: '--toggle-on-hover-thumb-surface' },\n },\n },\n {\n state: 'disabled',\n attributes: { root: { disabled: '' } },\n paints: {\n track: { backgroundColor: '--toggle-disabled-track-surface' },\n thumb: { backgroundColor: '--toggle-disabled-thumb-surface' },\n label: { color: '--toggle-disabled-label' },\n },\n },\n ],\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--toggle-track-border-width',\n observe: { part: 'track', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--toggle-track-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--toggle-track-border-width', '--toggle-track-radius'],\n unchanged: ['--toggle-thumb-size', '--toggle-gap'],\n aliasedTo: {\n '--toggle-track-border-width': '--border-width-3',\n '--toggle-track-radius': '--radius-none',\n },\n observe: { part: 'track', css: 'borderTopWidth', variable: '--toggle-track-border-width' },\n },\n interaction: {\n part: 'root',\n role: 'switch',\n // No activation case: Toggle.svelte is controlled (`onclick` only calls\n // `onchange?.(!checked)`, it never flips `checked` itself), and\n // ToggleEditor.svelte's preview drives `checked` off the state tab\n // without wiring `onchange` back to it. Clicking the real control in this\n // demo has no observable effect on `aria-checked`, so an activation case\n // would assert a no-op rather than the switch's behavior.\n cases: [\n {\n name: 'clicking a toggle focuses it',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: true },\n },\n {\n name: 'a disabled toggle refuses focus',\n state: 'disabled',\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'focused', part: 'root', value: false },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'clicking an off toggle asks for on',\n props: { checked: false },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onchange', args: [true] },\n },\n {\n name: 'clicking leaves the switch where the prop put it',\n props: { checked: false },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'attribute', part: 'root', name: 'aria-checked', value: 'false' },\n },\n {\n name: 'clicking an on toggle asks for off',\n props: { checked: true },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'callback', prop: 'onchange', args: [false] },\n },\n {\n name: 'checked drives aria-checked',\n props: { checked: true },\n expect: { kind: 'attribute', part: 'root', name: 'aria-checked', value: 'true' },\n },\n {\n name: 'a disabled toggle stays silent',\n props: { checked: false, disabled: true },\n action: { kind: 'click', part: 'root' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'track', fill: '--toggle-track-surface', stroke: '--toggle-track-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const tooltipContract: ComponentContract = {\n id: 'tooltip',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.tooltip',\n arrow: { selector: '.tooltip', pseudo: '::after' },\n },\n properties: [\n {\n paints: {\n root: {\n backgroundColor: '--tooltip-surface',\n color: '--tooltip-text',\n borderTopColor: '--tooltip-border',\n borderTopWidth: '--tooltip-border-width',\n borderRadius: '--tooltip-radius',\n paddingTop: '--tooltip-padding',\n boxShadow: '--tooltip-shadow',\n fontFamily: '--tooltip-text-font-family',\n fontSize: '--tooltip-text-font-size',\n fontWeight: '--tooltip-text-font-weight',\n lineHeight: '--tooltip-text-line-height',\n },\n arrow: {\n borderRightColor: '--tooltip-border',\n borderRightWidth: '--tooltip-border-width',\n },\n },\n },\n ],\n states: {\n applicable: false,\n reason: 'the editor renders one token group (tooltip) with no state strip',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--tooltip-border',\n observe: { part: 'root', css: 'borderTopColor' },\n },\n ],\n resetVariable: '--tooltip-border',\n },\n theme: {\n theme: 'halloween',\n changed: ['--tooltip-border-width', '--tooltip-padding', '--tooltip-radius'],\n unchanged: ['--tooltip-text-font-size'],\n aliasedTo: {\n '--tooltip-border-width': '--border-width-3',\n '--tooltip-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--tooltip-border-width' },\n },\n interaction: {\n applicable: false,\n reason: 'a hint carries no interactive role; visibility follows the trigger element\\'s hover or focus, which this component does not own',\n },\n behavior: {\n cases: [\n {\n name: 'text drives the hint',\n props: { text: 'Copy to clipboard' },\n expect: { kind: 'text', part: 'root', value: 'Copy to clipboard' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--tooltip-surface' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const videoLightboxContract: ComponentContract = {\n id: 'videolightbox',\n origin: 'system',\n root: 'root',\n // The editor renders an `inline` copy of the open lightbox beside the tile,\n // so the overlay and close button are measurable without opening a modal.\n parts: {\n root: '.videolightbox',\n trigger: '.videolightbox-trigger',\n badge: '.videolightbox-badge',\n badgeIcon: '.videolightbox-badge svg',\n overlay: '.videolightbox-modal.inline',\n closeButton: '.videolightbox-modal.inline .videolightbox-close',\n closeIcon: '.videolightbox-modal.inline .videolightbox-close svg',\n },\n properties: [\n {\n paints: {\n root: {\n backgroundColor: '--videolightbox-tile-surface',\n borderTopColor: '--videolightbox-tile-border',\n borderTopWidth: '--videolightbox-tile-border-width',\n borderRadius: '--videolightbox-tile-radius',\n boxShadow: '--videolightbox-tile-shadow',\n },\n overlay: {\n backgroundColor: '--videolightbox-scrim-surface',\n paddingTop: '--videolightbox-overlay-padding',\n },\n closeButton: {\n backgroundColor: '--videolightbox-chrome-surface',\n borderTopColor: '--videolightbox-chrome-border',\n borderTopWidth: '--videolightbox-chrome-border-width',\n borderRadius: '--videolightbox-chrome-radius',\n color: '--videolightbox-chrome-icon',\n },\n closeIcon: { stroke: '--videolightbox-chrome-icon' },\n badge: {\n backgroundColor: '--videolightbox-badge-default-surface',\n borderTopColor: '--videolightbox-badge-default-border',\n borderTopWidth: '--videolightbox-badge-default-border-width',\n width: '--videolightbox-badge-default-size',\n color: '--videolightbox-badge-default-icon',\n },\n badgeIcon: { width: '--videolightbox-badge-default-icon-size' },\n },\n },\n {\n state: 'hover',\n paints: {\n badge: {\n backgroundColor: '--videolightbox-badge-hover-surface',\n borderTopColor: '--videolightbox-badge-hover-border',\n color: '--videolightbox-badge-hover-icon',\n },\n },\n },\n // The inline close button has no handler, so the click leaves the pointer\n // resting on it and its real :hover rule applies.\n {\n setup: [{ kind: 'click', part: 'closeButton' }],\n paints: { closeButton: { backgroundColor: '--videolightbox-chrome-hover-surface' } },\n },\n ],\n states: [{ state: 'default' }, { state: 'hover' }],\n uncovered: {\n '--videolightbox-overlay-duration': 'consumed inside the opacity transition shorthand, never a standalone computed value',\n '--videolightbox-overlay-easing': 'consumed inside the opacity transition shorthand, never a standalone computed value',\n '--videolightbox-badge-duration': 'consumed inside the badge transition shorthand, never a standalone computed value',\n '--videolightbox-badge-easing': 'consumed inside the badge transition shorthand, never a standalone computed value',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--videolightbox-tile-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--videolightbox-tile-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--videolightbox-tile-border-width',\n '--videolightbox-tile-radius',\n '--videolightbox-chrome-border-width',\n '--videolightbox-chrome-radius',\n ],\n unchanged: ['--videolightbox-tile-shadow'],\n aliasedTo: {\n '--videolightbox-tile-border-width': '--border-width-2',\n '--videolightbox-tile-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--videolightbox-tile-border-width' },\n },\n interaction: {\n part: 'trigger',\n role: 'button',\n cases: [\n {\n name: 'clicking the still opens the lightbox',\n action: { kind: 'click', part: 'trigger' },\n expect: { kind: 'attribute', part: 'trigger', name: 'aria-expanded', value: 'true' },\n },\n ],\n },\n behavior: {\n applicable: false,\n reason: 'the lightbox declares no callback prop; opening portals a modal and plays media, which happy-dom cannot run',\n },\n sketch: {\n style: 'pencil',\n parts: [\n { part: 'root', fill: '--videolightbox-tile-surface', stroke: '--videolightbox-tile-border' },\n ],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nexport const videoFrameContract: ComponentContract = {\n id: 'videoframe',\n origin: 'system',\n root: 'root',\n parts: {\n root: '.videoframe-frame',\n clip: '.videoframe-clip',\n trigger: '.videoframe-trigger',\n badge: '.videoframe-badge',\n badgeIcon: '.videoframe-badge svg',\n },\n properties: [\n {\n paints: {\n root: {\n backgroundColor: '--videoframe-frame-surface',\n borderTopColor: '--videoframe-frame-border',\n borderTopWidth: '--videoframe-frame-border-width',\n borderRadius: '--videoframe-frame-radius',\n },\n clip: { backgroundColor: '--videoframe-clip-surface' },\n badge: {\n backgroundColor: '--videoframe-badge-default-surface',\n borderTopColor: '--videoframe-badge-default-border',\n borderTopWidth: '--videoframe-badge-default-border-width',\n width: '--videoframe-badge-default-size',\n color: '--videoframe-badge-default-icon',\n },\n badgeIcon: { width: '--videoframe-badge-default-icon-size' },\n },\n },\n {\n state: 'hover',\n paints: {\n badge: {\n backgroundColor: '--videoframe-badge-hover-surface',\n borderTopColor: '--videoframe-badge-hover-border',\n color: '--videoframe-badge-hover-icon',\n },\n },\n },\n ],\n states: [{ state: 'default' }, { state: 'hover' }],\n uncovered: {\n '--videoframe-badge-duration': 'consumed inside the badge transition shorthand, never a standalone computed value',\n '--videoframe-badge-easing': 'consumed inside the badge transition shorthand, never a standalone computed value',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--videoframe-frame-border-width',\n observe: { part: 'root', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--videoframe-frame-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: ['--videoframe-frame-border-width', '--videoframe-frame-radius'],\n unchanged: ['--videoframe-badge-default-size'],\n aliasedTo: {\n '--videoframe-frame-border-width': '--border-width-3',\n '--videoframe-frame-radius': '--radius-none',\n },\n observe: { part: 'root', css: 'borderTopWidth', variable: '--videoframe-frame-border-width' },\n },\n interaction: {\n part: 'trigger',\n role: 'button',\n cases: [\n {\n name: 'clicking the poster starts the clip',\n action: { kind: 'click', part: 'trigger' },\n expect: { kind: 'attribute', part: 'root', name: 'data-playing', value: 'true' },\n },\n ],\n },\n behavior: {\n applicable: false,\n reason: 'the frame declares no callback prop; playback is the browser\\'s own media element',\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'root', fill: '--videoframe-frame-surface', stroke: '--videoframe-frame-border' }],\n },\n};\n","import type { ComponentContract } from '../componentContract';\n\nconst behaviorSlides = [\n { src: 'a.webp', alt: 'First slide' },\n { src: 'b.webp', alt: 'Second slide' },\n { src: 'c.webp', alt: 'Third slide' },\n];\n\nexport const slidePagerContract: ComponentContract = {\n id: 'slidepager',\n origin: 'system',\n root: 'root',\n // The editor renders an `inline` copy of the full-screen read beside the\n // pager, so the overlay and its close button are measurable in place.\n parts: {\n root: '.slidepager',\n frame: '.slidepager .slidepager-frame',\n stage: '.slidepager .slidepager-stage',\n bar: '.slidepager > .slidepager-bar',\n prevControl: '.slidepager > .slidepager-bar [data-nav=\"prev\"]',\n nextControl: '.slidepager > .slidepager-bar [data-nav=\"next\"]',\n controlIcon: '.slidepager > .slidepager-bar [data-nav=\"next\"] svg',\n counter: '.slidepager > .slidepager-bar .slidepager-counter',\n overlay: '.slidepager-modal.inline',\n closeButton: '.slidepager-modal.inline .slidepager-close',\n },\n properties: [\n {\n paints: {\n frame: {\n backgroundColor: '--slidepager-frame-surface',\n borderTopColor: '--slidepager-frame-border',\n borderTopWidth: '--slidepager-frame-border-width',\n borderRadius: '--slidepager-frame-radius',\n boxShadow: '--slidepager-frame-shadow',\n },\n bar: { columnGap: '--slidepager-bar-gap', paddingTop: '--slidepager-bar-padding' },\n nextControl: {\n backgroundColor: '--slidepager-control-surface',\n borderTopColor: '--slidepager-control-border',\n borderTopWidth: '--slidepager-control-border-width',\n borderRadius: '--slidepager-control-radius',\n width: '--slidepager-control-size',\n color: '--slidepager-control-icon',\n },\n controlIcon: { width: '--slidepager-control-icon-size' },\n counter: {\n color: '--slidepager-counter-text',\n fontFamily: '--slidepager-counter-font-family',\n fontSize: '--slidepager-counter-font-size',\n fontWeight: '--slidepager-counter-font-weight',\n lineHeight: '--slidepager-counter-line-height',\n letterSpacing: '--slidepager-counter-letter-spacing',\n },\n overlay: {\n backgroundColor: '--slidepager-scrim-surface',\n paddingTop: '--slidepager-overlay-padding',\n },\n closeButton: { top: '--slidepager-close-margin' },\n },\n },\n // The inline close button has no handler, so the click leaves the pointer\n // resting on it and its real :hover rule applies.\n {\n setup: [{ kind: 'click', part: 'closeButton' }],\n paints: {\n closeButton: {\n backgroundColor: '--slidepager-control-hover-surface',\n borderTopColor: '--slidepager-control-hover-border',\n color: '--slidepager-control-hover-icon',\n },\n },\n },\n // The preview opens on the middle slide, so one click back lands on the\n // first and disables the control under the pointer.\n {\n setup: [{ kind: 'click', part: 'prevControl' }],\n paints: {\n prevControl: {\n backgroundColor: '--slidepager-control-disabled-surface',\n borderTopColor: '--slidepager-control-disabled-border',\n color: '--slidepager-control-disabled-icon',\n },\n },\n },\n ],\n states: [{ state: 'default' }, { state: 'hover' }, { state: 'disabled' }],\n uncovered: {\n '--slidepager-overlay-duration': 'consumed inside the opacity transition shorthand, never a standalone computed value',\n '--slidepager-overlay-easing': 'consumed inside the opacity transition shorthand, never a standalone computed value',\n },\n persistence: {\n cases: [\n {\n shape: 'token',\n variable: '--slidepager-frame-border-width',\n observe: { part: 'frame', css: 'borderTopWidth' },\n },\n ],\n resetVariable: '--slidepager-frame-border-width',\n },\n theme: {\n theme: 'halloween',\n changed: [\n '--slidepager-frame-border-width',\n '--slidepager-frame-radius',\n '--slidepager-control-border-width',\n '--slidepager-control-radius',\n ],\n unchanged: ['--slidepager-control-size'],\n aliasedTo: {\n '--slidepager-frame-border-width': '--border-width-3',\n '--slidepager-frame-radius': '--radius-none',\n },\n observe: { part: 'frame', css: 'borderTopWidth', variable: '--slidepager-frame-border-width' },\n },\n interaction: {\n part: 'stage',\n role: 'button',\n cases: [\n {\n name: 'the next chevron moves the frame to the next slide',\n action: { kind: 'click', part: 'nextControl' },\n expect: { kind: 'attribute', part: 'stage', name: 'aria-label', value: 'Open slide 3 full screen' },\n },\n ],\n },\n behavior: {\n cases: [\n {\n name: 'the next chevron reports the slide it moved to',\n props: { slides: behaviorSlides, index: 0 },\n action: { kind: 'click', part: 'nextControl' },\n expect: { kind: 'callback', prop: 'onchange', args: [1] },\n },\n {\n name: 'the previous chevron is silent on the first slide',\n props: { slides: behaviorSlides, index: 0 },\n action: { kind: 'click', part: 'prevControl' },\n expect: { kind: 'no-callback', prop: 'onchange' },\n },\n {\n name: 'the counter names the slide index opens on',\n props: { slides: behaviorSlides, index: 2 },\n expect: { kind: 'text', part: 'counter', value: '3 / 3' },\n },\n ],\n },\n sketch: {\n style: 'pencil',\n parts: [{ part: 'frame', fill: '--slidepager-frame-surface', stroke: '--slidepager-frame-border' }],\n },\n};\n"],"mappings":"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","names":["variants","basePaints","variants","variants","colorPaints","basePaints","variants","cap","basePaints","statePaints","otherVariantProperties","statePaints","variants","paintsFor","statePaints","variantPaints"]}
|