# Proof

> Live runtime inspector: primitives mounted on the page, registered behaviors, shared listeners counted two ways, loaded behavior modules, measured bundle sizes and browser capabilities.

Page: https://svelte-lean.vercel.app/proof · Markdown: https://svelte-lean.vercel.app/proof.md · Index: https://svelte-lean.vercel.app/llms.txt

This page exposes the internals of the site you are reading. Every value below is read from the page after it loads or from a measurement file committed in the repository; nothing is typed in.

## Primitives on this page

One of each of the first eleven primitives, rendered with `@svelte-lean/styles`; the rest of the catalog is on its own pages and in the gallery on [Primitives](https://svelte-lean.vercel.app/primitives.md). The seven native ones here work with page JavaScript disabled wherever the platform features in the last section are supported; the four behaviors and the panels that read the runtime need JavaScript.

- **Runtime**: Read from the page after it loads; requires JavaScript.

## Instances versus listeners

Mount more tabs roots and read the listener table again. A Tier 1 behavior installs one listener per event type on the document runtime, so the count is the same for one root and for a thousand (ADR 0004; the release gate in listeners.spec.ts).

Root 1, a panel.

Listener readings by number of mounted tabs roots

| Roots | Runtime account | Independent count | Router listeners on elements |
| --- | --- | --- | --- |
| Readings appear after the page loads. |  |  |  |

## Runtime tiers

Every primitive with its declared tier, registration module and measured behavior JavaScript

| Primitive | Tier | Shared listeners | Module | Behavior JS (brotli) |
| --- | --- | --- | --- | --- |
| button | 0 | none | none (native) | 0 B |
| dialog | 0 | none | none (native) | 0 B |
| popover | 0 | none | none (native) | 0 B |
| checkbox | 0 | none | none (native) | 0 B |
| checkbox-group | 1 | change, focusin, reset | @svelte-lean/primitives/checkbox-group/register | 1456 B |
| radio-group | 0 | none | none (native) | 0 B |
| tabs | 1 | click, keydown | @svelte-lean/primitives/tabs/register | 1839 B |
| menu | 1 | click, keydown, beforetoggle, toggle | @svelte-lean/primitives/menu/register | 2773 B |
| listbox | 1 | click, keydown, change, reset | @svelte-lean/primitives/listbox/register | 2357 B |
| calendar | 1 | click, keydown, change, reset, pointerover, pointerout | @svelte-lean/primitives/calendar/register | 4594 B |
| date-picker | 2 | click, keydown, input, change, pointerdown, pointerover, focusin, focusout, toggle, reset | @svelte-lean/primitives/date-picker/register | 9475 B |
| input | 1 | click, pointerdown, pointerover, focusin | @svelte-lean/primitives/input/register | 1808 B |
| field | 0 | none | none (native) | 0 B |
| select | 2 | click, keydown, input, pointerdown, pointerover, focusout, change, toggle, reset, animationstart | @svelte-lean/primitives/select/register | 5022 B |
| rating | 0 | none | none (native) | 0 B |
| slider | 1 | input, reset | @svelte-lean/primitives/slider/register | 1549 B |
| autocomplete | 2 | click, keydown, input, pointerdown, pointerover, focusin, focusout, toggle | @svelte-lean/primitives/autocomplete/register | 3962 B |
| accordion | 0 | none | none (native) | 0 B |
| card | 0 | none | none (native) | 0 B |
| separator | 0 | none | none (native) | 0 B |
| avatar | 0 | none | none (native) | 0 B |
| badge | 0 | none | none (native) | 0 B |
| kbd | 0 | none | none (native) | 0 B |
| carousel | 0 | none | none (native) | 0 B |
| alert | 0 | none | none (native) | 0 B |
| progress | 0 | none | none (native) | 0 B |
| meter | 0 | none | none (native) | 0 B |
| skeleton | 0 | none | none (native) | 0 B |
| breadcrumb | 0 | none | none (native) | 0 B |
| nav | 0 | none | none (native) | 0 B |
| pagination | 0 | none | none (native) | 0 B |
| steps | 0 | none | none (native) | 0 B |
| toggle | 1 | click | @svelte-lean/primitives/toggle-group/register | not measured |
| toggle-group | 1 | click, keydown | @svelte-lean/primitives/toggle-group/register | 1932 B |
| toolbar | 1 | keydown, focusin | @svelte-lean/primitives/toolbar/register | 1706 B |
| tree | 1 | click, keydown | @svelte-lean/primitives/tree/register | 2140 B |
| toast | 2 | click, pointerover, pointerout, focusin, focusout | @svelte-lean/primitives/toast/register | 1616 B |
| button-group | 0 | none | none (native) | 0 B |
| scroll-area | 0 | none | none (native) | 0 B |
| descriptions | 0 | none | none (native) | 0 B |
| timeline | 0 | none | none (native) | 0 B |
| empty | 0 | none | none (native) | 0 B |
| splitter | 2 | keydown, pointerdown | @svelte-lean/primitives/splitter/register | 1908 B |
| sortable | 2 | pointerdown, keydown, click | @svelte-lean/primitives/sortable/register | 3833 B |
| file-drop | 1 | dragenter, dragleave, drop, paste, input, change, click, reset | @svelte-lean/primitives/file-drop/register | 2983 B |
| hover-card | 1 | pointerover, pointerout, focusin, focusout, keydown | @svelte-lean/primitives/hover-card/register | 1986 B |
| menubar | 1 | keydown, focusin, pointerover | @svelte-lean/primitives/menubar/register | 2064 B |
| hint | 1 | pointerover, pointerout, pointerdown, focusin, focusout, keydown | @svelte-lean/primitives/hint/register | 2687 B |
| copy | 1 | click | @svelte-lean/primitives/copy/register | 1291 B |
| findable | 1 | beforematch | @svelte-lean/primitives/findable/register | 1887 B |

## Loaded behavior modules

`@svelte-lean/vite` scans this site's Svelte files for static `data-slean` markers and writes a manifest next to the build. This is what it recorded for the build you are looking at.

Behaviors found in the site's markup and the registration module injected for each, from `node_modules/.svelte-lean/manifest.json`

| Behavior | Registration module | Files |
| --- | --- | --- |
| accordion | none (native) | src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/primitives/accordion/+page.svelte, src/routes/proof/+page.svelte |
| alert | none (native) | src/lib/home/Showcase.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/alert/+page.svelte, src/routes/styling/variants/+page.svelte |
| autocomplete | @svelte-lean/primitives/autocomplete/register | src/lib/primitives/Gallery.svelte, src/routes/docs/architecture/runtime-tiers/+page.svelte, src/routes/primitives/autocomplete/examples/Autoselect.svelte, src/routes/primitives/autocomplete/examples/City.svelte, src/routes/primitives/autocomplete/examples/Looks.svelte, src/routes/primitives/autocomplete/examples/Palette.svelte, src/routes/primitives/autocomplete/examples/Remote.svelte, src/routes/primitives/autocomplete/examples/Rich.svelte |
| avatar | none (native) | src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/primitives/avatar/+page.svelte, src/routes/primitives/card/+page.svelte, src/routes/primitives/hover-card/+page.svelte, src/routes/primitives/listbox/+page.svelte, src/routes/primitives/menu/+page.svelte, src/routes/styling/variants/+page.svelte |
| badge | none (native) | src/lib/home/Showcase.svelte, src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/primitives/badge/+page.svelte, src/routes/primitives/card/+page.svelte, src/routes/primitives/descriptions/+page.svelte, src/routes/primitives/nav/+page.svelte, src/routes/primitives/tabs/+page.svelte, src/routes/styling/themes/+page.svelte, src/routes/styling/variants/+page.svelte |
| breadcrumb | none (native) | src/routes/primitives/breadcrumb/+page.svelte |
| button | none (native) | src/lib/components/CopyButton.svelte, src/lib/components/ThemeToggle.svelte, src/lib/components/TopNav.svelte, src/lib/home/ListenerLab.svelte, src/lib/home/Showcase.svelte, src/lib/home/Simple.svelte, src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/docs/+page.svelte, src/routes/docs/architecture/native-first/+page.svelte, src/routes/performance/results/+page.svelte, src/routes/performance/results/RowsSpecimen.svelte, src/routes/primitives/accordion/+page.svelte, src/routes/primitives/alert/+page.svelte, src/routes/primitives/autocomplete/examples/Palette.svelte, src/routes/primitives/badge/+page.svelte, src/routes/primitives/breadcrumb/+page.svelte, src/routes/primitives/button-group/+page.svelte, src/routes/primitives/button/+page.svelte, src/routes/primitives/calendar/+page.svelte, src/routes/primitives/card/+page.svelte, src/routes/primitives/checkbox/+page.svelte, src/routes/primitives/copy/+page.svelte, src/routes/primitives/dialog/+page.svelte, src/routes/primitives/empty/+page.svelte, src/routes/primitives/field/+page.svelte, src/routes/primitives/file-drop/+page.svelte, src/routes/primitives/hint/+page.svelte, src/routes/primitives/input/+page.svelte, src/routes/primitives/kbd/+page.svelte, src/routes/primitives/listbox/+page.svelte, src/routes/primitives/menu/+page.svelte, src/routes/primitives/nav/+page.svelte, src/routes/primitives/popover/+page.svelte, src/routes/primitives/progress/+page.svelte, src/routes/primitives/radio-group/+page.svelte, src/routes/primitives/rating/+page.svelte, src/routes/primitives/select/examples/Controlled.svelte, src/routes/primitives/select/examples/Form.svelte, src/routes/primitives/separator/+page.svelte, src/routes/primitives/skeleton/+page.svelte, src/routes/primitives/sortable/+page.svelte, src/routes/primitives/steps/+page.svelte, src/routes/primitives/tabs/+page.svelte, src/routes/primitives/timeline/+page.svelte, src/routes/primitives/toast/+page.svelte, src/routes/primitives/toolbar/+page.svelte, src/routes/proof/+page.svelte, src/routes/styling/themes/+page.svelte, src/routes/styling/variants/+page.svelte, src/routes/table/clipboard-export/CsvExport.svelte, src/routes/table/clipboard-export/RangeClipboard.svelte, src/routes/table/columns/Visibility.svelte, src/routes/table/editing/Editing.svelte, src/routes/table/pagination/Pagination.svelte, src/routes/table/rows/NestedTable.svelte, src/routes/table/rows/RowAnimation.svelte, src/routes/table/rows/RowEvents.svelte, src/routes/table/selection/Selection.svelte, src/routes/table/server-data/EmptyStates.svelte, src/routes/table/server-data/LoadingEmpty.svelte, src/routes/table/server-data/ServerData.svelte, src/routes/table/state-persistence/PersistedState.svelte |
| button-group | none (native) | src/routes/primitives/button-group/+page.svelte |
| calendar | @svelte-lean/primitives/calendar/register | src/routes/primitives/calendar/+page.svelte |
| card | none (native) | src/routes/primitives/card/+page.svelte, src/routes/primitives/descriptions/+page.svelte, src/routes/primitives/empty/+page.svelte, src/routes/styling/variants/+page.svelte |
| carousel | none (native) | src/routes/primitives/carousel/+page.svelte |
| checkbox | none (native) | /vercel/path0/packages/table/dist/table/data-table.svelte, src/lib/home/Showcase.svelte, src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/primitives/accordion/+page.svelte, src/routes/primitives/checkbox-group/+page.svelte, src/routes/primitives/checkbox/+page.svelte, src/routes/primitives/dialog/+page.svelte, src/routes/primitives/tabs/+page.svelte, src/routes/proof/+page.svelte, src/routes/styling/themes/+page.svelte, src/routes/table/layout/DensityBorders.svelte, src/routes/table/server-data/LoadingEmpty.svelte |
| checkbox-group | @svelte-lean/primitives/checkbox-group/register | src/lib/primitives/Gallery.svelte, src/routes/primitives/checkbox-group/+page.svelte, src/routes/primitives/checkbox/+page.svelte |
| copy | @svelte-lean/primitives/copy/register | src/lib/home/Hero.svelte, src/lib/home/Showcase.svelte, src/lib/home/Simple.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/copy/+page.svelte, src/routes/primitives/findable/+page.svelte, src/routes/primitives/hint/+page.svelte, src/routes/primitives/input/+page.svelte |
| date-picker | @svelte-lean/primitives/date-picker/register | src/lib/home/Showcase.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/date-picker/+page.svelte |
| descriptions | none (native) | src/routes/primitives/descriptions/+page.svelte |
| dialog | none (native) | src/lib/home/Showcase.svelte, src/lib/home/Simple.svelte, src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/docs/+page.svelte, src/routes/docs/architecture/native-first/+page.svelte, src/routes/primitives/autocomplete/examples/Palette.svelte, src/routes/primitives/dialog/+page.svelte, src/routes/proof/+page.svelte, src/routes/styling/variants/+page.svelte |
| empty | none (native) | src/routes/primitives/empty/+page.svelte |
| field | none (native) | src/lib/home/Showcase.svelte, src/lib/home/Stage.svelte, src/lib/query/examples/recipes/save-and-refresh.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/docs/+page.svelte, src/routes/primitives/accordion/+page.svelte, src/routes/primitives/badge/+page.svelte, src/routes/primitives/card/+page.svelte, src/routes/primitives/dialog/+page.svelte, src/routes/primitives/empty/+page.svelte, src/routes/primitives/field/+page.svelte, src/routes/primitives/input/+page.svelte, src/routes/primitives/meter/+page.svelte, src/routes/primitives/popover/+page.svelte, src/routes/primitives/rating/+page.svelte, src/routes/styling/variants/+page.svelte |
| field/validation | @svelte-lean/primitives/field/validation/register | src/routes/primitives/field/+page.svelte |
| file-drop | @svelte-lean/primitives/file-drop/register | src/routes/primitives/file-drop/+page.svelte |
| findable | @svelte-lean/primitives/findable/register | src/routes/primitives/findable/+page.svelte |
| hint | @svelte-lean/primitives/hint/register | src/lib/home/Hero.svelte, src/lib/home/Showcase.svelte, src/lib/home/Simple.svelte, src/lib/primitives/Gallery.svelte, src/routes/docs/+page.svelte, src/routes/primitives/button/+page.svelte, src/routes/primitives/copy/+page.svelte, src/routes/primitives/findable/+page.svelte, src/routes/primitives/hint/+page.svelte, src/routes/primitives/nav/+page.svelte, src/routes/table/+page.svelte |
| hover-card | @svelte-lean/primitives/hover-card/register | src/lib/primitives/Gallery.svelte, src/routes/primitives/hover-card/+page.svelte, src/routes/primitives/nav/+page.svelte |
| input | @svelte-lean/primitives/input/register | src/lib/home/Showcase.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/input/+page.svelte, src/routes/styling/variants/+page.svelte |
| kbd | none (native) | src/routes/primitives/kbd/+page.svelte |
| listbox | @svelte-lean/primitives/listbox/register | src/lib/primitives/Gallery.svelte, src/routes/primitives/listbox/+page.svelte, src/routes/proof/+page.svelte |
| menu | @svelte-lean/primitives/menu/register | src/lib/home/Showcase.svelte, src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/primitives/button-group/+page.svelte, src/routes/primitives/kbd/+page.svelte, src/routes/primitives/menu/+page.svelte, src/routes/primitives/menubar/+page.svelte, src/routes/proof/+page.svelte, src/routes/table/columns/Visibility.svelte |
| menu/contextmenu | @svelte-lean/primitives/menu/contextmenu/register | src/routes/primitives/menu/+page.svelte |
| menubar | @svelte-lean/primitives/menubar/register | src/routes/primitives/menubar/+page.svelte |
| meter | none (native) | src/routes/primitives/meter/+page.svelte |
| nav | none (native) | src/routes/primitives/nav/+page.svelte |
| pagination | none (native) | src/routes/primitives/pagination/+page.svelte |
| popover | none (native) | src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/docs/architecture/native-first/+page.svelte, src/routes/primitives/breadcrumb/+page.svelte, src/routes/primitives/listbox/+page.svelte, src/routes/primitives/popover/+page.svelte, src/routes/proof/+page.svelte, src/routes/styling/variants/+page.svelte, src/routes/table/sorting/HeaderSort.svelte |
| progress | none (native) | src/lib/home/Showcase.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/progress/+page.svelte, src/routes/primitives/skeleton/+page.svelte, src/routes/styling/themes/+page.svelte, src/routes/styling/variants/+page.svelte |
| radio-group | none (native) | src/lib/home/Scale.svelte, src/lib/home/Showcase.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/primitives/field/+page.svelte, src/routes/primitives/radio-group/+page.svelte, src/routes/proof/+page.svelte, src/routes/table/layout/DensityBorders.svelte, src/routes/table/localization-rtl/Messages.svelte, src/routes/table/selection/Selection.svelte |
| rating | none (native) | src/lib/home/Showcase.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/rating/+page.svelte |
| scroll-area | none (native) | src/routes/primitives/scroll-area/+page.svelte |
| select | @svelte-lean/primitives/select/register | src/lib/home/Showcase.svelte, src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/select/examples/Adornments.svelte, src/routes/primitives/select/examples/Clear.svelte, src/routes/primitives/select/examples/Colors.svelte, src/routes/primitives/select/examples/Controlled.svelte, src/routes/primitives/select/examples/Form.svelte, src/routes/primitives/select/examples/Fruit.svelte, src/routes/primitives/select/examples/Groups.svelte, src/routes/primitives/select/examples/Localized.svelte, src/routes/primitives/select/examples/Looks.svelte, src/routes/primitives/select/examples/Multiple.svelte, src/routes/primitives/select/examples/Search.svelte, src/routes/primitives/select/examples/Sizes.svelte, src/routes/primitives/select/examples/States.svelte, src/routes/primitives/select/examples/Tags.svelte, src/routes/proof/+page.svelte |
| select/create | @svelte-lean/primitives/select/create/register | src/routes/primitives/select/examples/Tags.svelte |
| select/search | @svelte-lean/primitives/select/search/register | src/lib/home/Showcase.svelte, src/lib/home/Stage.svelte, src/routes/primitives/select/examples/Search.svelte, src/routes/primitives/select/examples/Tags.svelte |
| separator | none (native) | src/routes/primitives/separator/+page.svelte |
| skeleton | none (native) | src/routes/primitives/skeleton/+page.svelte, src/routes/styling/variants/+page.svelte |
| slider | @svelte-lean/primitives/slider/register | src/lib/home/Showcase.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/slider/+page.svelte |
| sortable | @svelte-lean/primitives/sortable/register | src/routes/primitives/sortable/+page.svelte |
| splitter | @svelte-lean/primitives/splitter/register | src/lib/primitives/Gallery.svelte, src/routes/primitives/splitter/+page.svelte |
| steps | none (native) | src/lib/primitives/Gallery.svelte, src/routes/primitives/steps/+page.svelte |
| tabs | @svelte-lean/primitives/tabs/register | src/lib/components/InstallBlock.svelte, src/lib/components/TabsRoots.svelte, src/lib/home/Showcase.svelte, src/lib/home/Stage.svelte, src/lib/primitives/Gallery.svelte, src/routes/demos/settings/SettingsApp.svelte, src/routes/docs/architecture/dom-protocol/+page.svelte, src/routes/docs/architecture/runtime-tiers/+page.svelte, src/routes/primitives/tabs/+page.svelte, src/routes/proof/+page.svelte, src/routes/styling/variants/+page.svelte |
| timeline | none (native) | src/routes/primitives/timeline/+page.svelte |
| toast | @svelte-lean/primitives/toast/register | src/lib/home/Showcase.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/toast/+page.svelte |
| toggle | @svelte-lean/primitives/toggle-group/register | src/routes/primitives/toggle/+page.svelte, src/routes/primitives/toolbar/+page.svelte |
| toggle-group | @svelte-lean/primitives/toggle-group/register | src/lib/home/Showcase.svelte, src/lib/primitives/Gallery.svelte, src/routes/primitives/toggle-group/+page.svelte, src/routes/primitives/toolbar/+page.svelte |
| toolbar | @svelte-lean/primitives/toolbar/register | src/lib/home/Showcase.svelte, src/routes/primitives/toolbar/+page.svelte |
| tree | @svelte-lean/primitives/tree/register | src/lib/primitives/Gallery.svelte, src/routes/primitives/tree/+page.svelte |

## Controllers

Tier 2 behaviors create a scoped controller on first interaction and count it in development builds. The owned select above is the one Tier 2 behavior: nothing exists for it until you press or focus it, and its listbox is created on the first open; while its popup is open one document listener is scoped to that session, and the count returns to zero when it closes. Shipping invariant D of ADR 0005 is asserted with a hundred roots in lazy.spec.ts. This is a production build, where the diagnostics are stripped. To read the live count and the runtime report, run `yarn workspace @svelte-lean/docs dev`, open this page and evaluate `window.__SLEAN_DEBUG__.report()` in the console.

## Bundle sizes

What a consumer application ships, from the fixtures in fixtures/: each is a Vite application built in production mode with every `@svelte-lean/*` module isolated into one chunk.

Svelte Lean chunk per fixture; zero bytes means no such chunk was emitted

| Fixture | Uses | brotli | gzip | raw | Assertions |
| --- | --- | --- | --- | --- | --- |
| autocomplete-only | owned autocomplete and a bare input with a datalist | 5350 B | 5929 B | 15770 B | 52 passed |
| date-picker-only | date picker and range picker markup, discovered by the plugin | 11092 B | 12127 B | 32238 B | 57 passed |
| fields-native | bare inputs of every type, checkbox, switch, segmented radio group | 0 B | 0 B | 0 B | 32 passed |
| fields-owned | input shell, validated field, checkbox group, slider group, toggle | 3803 B | 4220 B | 10983 B | 49 passed |
| listbox-only | listbox markup, discovered by the plugin | 2357 B | 2612 B | 5866 B | 49 passed |
| manual-registration | tabs markup, register module imported by hand | 1839 B | 2048 B | 4509 B | 45 passed |
| native-only | button, dialog, popover markup and styles | 0 B | 0 B | 0 B | 34 passed |
| query-native-page | the query package installed, nothing imported | 0 B | 0 B | 0 B | 20 passed |
| query-production | reads, writes, http() and laravel() | 21109 B | 23268 B | 62652 B | 50 passed |
| query-read-only | defineQuery and createQuery only | 14416 B | 15705 B | 41989 B | 42 passed |
| query-unused-endpoints | 500 query endpoints, two imported | 14412 B | 15706 B | 41989 B | 40 passed |
| select-only | owned select markup, discovered by the plugin | 6749 B | 7455 B | 20096 B | 55 passed |
| select-search | selects with search and create, their option modules | 7323 B | 8067 B | 22186 B | 56 passed |
| sortable-only | – | 3833 B | 4285 B | 9758 B | 51 passed |
| table-basic | \<DataTable /\> and its stylesheet | 20841 B | 23613 B | 65404 B | 55 passed |
| tabs-and-menu | tabs and menu markup | 4600 B | 5094 B | 13033 B | 46 passed |
| tabs-only | tabs markup, discovered by the plugin | 1839 B | 2048 B | 4509 B | 48 passed |

Production \`vite build\` per fixture with Vite defaults (esbuild minify, modulepreload polyfill). Sizes are the emitted JavaScript and CSS files: raw bytes, gzip level 9, brotli quality 11 (node:zlib). "svelteLean" is the svelte-lean chunk that the fixture plugin isolates for every @svelte-lean/\* module and "svelteRuntime" the svelte-runtime chunk for Svelte's runtime (both include chunk import/export bindings); 0 B means no such chunk was emitted. "modules.svelteLean" lists rendered @svelte-lean/\* modules with their pre-minification rendered length. Environment: Node v22.23.3, Vite 7.3.6, Svelte 5.57.1.

## Browser capabilities

Feature detection in the browser you are using, for the platform features the native paths depend on. The contracts list each feature's Baseline status and the behavior outside the target.

Platform features and whether this browser supports them

| Feature | Used by | This browser |
| --- | --- | --- |
| Detection runs in the browser and requires JavaScript. |  |  |

## Without JavaScript

With scripting disabled, the button, dialog, popover, accordion, checkbox, switch and radio group above keep working wherever the browser supports the features listed; the dialog and popover invokers depend on invoker commands and the Popover API. The tabs root keeps its authored state (the first panel visible, switching impossible), the menu opens as a plain popover, the listbox keeps its authored selection, the select shows its native select, which submits with the form, and the panels that read the runtime show their static text. The playground suite runs the native contracts with page JavaScript disabled (`javaScriptEnabled: false`).
