# Line Clamp — Figma Assembly Rules

<!-- figma-assembly.v2
{ "schemaVersion":"figma-assembly.v2", "id":"component.line-clamp-popup", "level":"molecule", "kind":"published", "aliases":["Line Clamp","LineClampPopup","🟢 🚛 LineClampPopup"], "uxSpec":"specs/ux/components/molecules/line-clamp-popup.md", "inventoryTarget":"line-clamp-popup", "componentKeys":["72363209535de503d18e8c769a9c9f8301184c89"], "dependencies":[], "optionalDependencies":[], "coveredBy":[] }
-->

Status: active Figma assembly contract; its matching local Table implementation
is documented in the sibling UX contract.

## Scope

Use this contract for the published Line Clamp informational surface. It is
separate from `component.popup`: do not substitute the generic Popup or rebuild
the surface from a local frame.

Figma evidence does not establish truncation measurement, trigger, positioning,
overlay lifecycle, focus, keyboard behavior, or accessible naming. The current
local Table implementation defines those rules in the sibling UX contract and
focused test; it does not add them to this Figma contract.

## Source evidence

- Published `🟢 🚛 LineClampPopup` component set
  [`8658:18584`](https://www.figma.com/design/EO9tuCsqwuHL8cZ4Eb2psR/%F0%9F%9A%9B-WB-Logistics-UI-kit?node-id=8658-18584),
  component key `72363209535de503d18e8c769a9c9f8301184c89`.
- The published-library record is
  `design_systems/🚛 WB Logistics UI-kit/components/__ __ LineClampPopup`
  (library key
  `lk-d17a9f02c525df4248872d53046c537297dcc0b78a6deef3a6037d6aa00569fe049bf7b6e21ea76ae8fbf27294090f2b8eddd4ed921db080e247f3430bc1fc41`,
  observed update `2026-05-18T09:59:12Z`).

## Required assembly

- Rule ID: `line-clamp-popup.published` — use an undetached instance resolving
  to the recorded published component key.
- Rule ID: `line-clamp-popup.variant` — set `type` to `Table` or `Dropdown`.
  Table uses only `size=—`; Dropdown uses `size=L`, `M`, or `S`.
- Rule ID: `line-clamp-popup.copy-visibility` — show caption and description
  only in Dropdown variants through the published `caption` and `description`
  boolean properties. They are optional visual anatomy, not inferred content
  slots or an Angular API.

## Tokens and sizing

- Preserve `bg.dropdown`, `stroke.secondary`, `Shadow/Dropdown`,
  `text icon.primary`, and `text icon.secondary` bindings. They correspond to
  `--color-background-dropdown`, `--color-stroke-secondary`,
  `--shadow-dropdown`, `--color-text-icon-primary`, and
  `--color-text-icon-secondary` in the owned token contract. Preserve the
  8px corner radius through `--radius-s`.
- Preserve variant typography: Table and Dropdown `M`/`S` primary copy uses
  Description Puma (`13/16`); Dropdown `L` primary copy uses Body Horse
  (`15/20`). Dropdown `L` caption/description use Description Puma, while
  Dropdown `M`/`S` caption/description use Caption Kitten (`11/14`). Their
  owned CSS counterparts are `--typography-body-horse`,
  `--typography-description-puma`, and
  `--typography-caption-regular-kitten`.
- The inspected component is 320px wide with `min-width: 120px`. Table padding
  is 12px inline / 16px block; Dropdown padding is 16px / 20px (`L`), 16px /
  18px (`M`), and 12px (`S`). Use the matching `--space-*` tokens in any future
  runtime implementation.
- The source does not establish a maximum width, height, line count, or
  overflow/truncation mechanics. The local Table implementation's clipping
  behavior is runtime evidence, not a Figma property or variant.

## Dependencies

No nested published component dependency is verified for this component set, so
the required and optional dependency arrays are intentionally empty.

## Verification checklist

- The instance resolves to the recorded LineClampPopup component key.
- `type`, `size`, `caption`, and `description` use the published property
  combinations only.
- Surface, border, elevation, text, typography, width, and padding remain
  token-bound and variant-specific.
- This Figma contract does not establish trigger-specific placement, reveal,
  dismissal, focus, or accessibility rules. Verify current runtime behavior
  through the sibling local contract and focused test.
