# Scroll Container — Figma Assembly Rules
<!-- figma-assembly.v2
{ "schemaVersion":"figma-assembly.v2", "id":"component.scroll-container", "level":"atom", "kind":"figma-only", "aliases":["Scroll Container","🟢 Scroll Container"], "uxSpec":"specs/ux/components/atoms/scroll-container.md", "inventoryTarget":null, "componentKeys":["5ee49b7262a4d297014b403be8df75cb41411a23"], "dependencies":["component.table-wrapper"], "optionalDependencies":[], "coveredBy":[] }
-->

Status: active Figma assembly contract; Figma-only.

## Scope

Use this contract for the published horizontal overflow affordance below a wide
table. The Table Wrapper remains the owner of clipping, minimum content width,
and runtime scrolling.

## Required Assembly

- Dependency classification: `component.table-wrapper` is required because this
  Figma-only affordance has meaning only as readback evidence for the table
  viewport that owns actual horizontal scrolling.
- Rule ID: `table.scroll.published` — use the published Scroll Container set
  key and its horizontal child; never draw or detach a local scrollbar.
- Rule ID: `table.scroll.visible-width` — place the horizontal instance directly
  below the clipped table viewport and set it to the visible table-container
  width, not the hidden `_table` minimum width.
- Keep the instance at the published `8px` height and preserve track/thumb
  anatomy, tokens, and radius.
- Omit it when the table does not horizontally overflow. Do not infer a runtime
  Scroll Container component or API from this Figma-only evidence.

## Verification Checklist

- `table.scroll.published`: the owner key is
  `5ee49b7262a4d297014b403be8df75cb41411a23` and the horizontal child remains
  an undetached remote instance.
- `table.scroll.visible-width`: the instance is directly below the clipped
  viewport and its width equals that visible viewport.
- `_table` still owns the minimum content width and Table Wrapper owns runtime
  scroll behavior.
