# Map Subpin

Level: atom. Inventory status: `local-code`.

## Purpose

Add a compact secondary fact to a large map pin, for example a return marker
or a small count. Do not use Subpin as an independent map location or action.

## Anatomy and variants

- Fixed 20 × 20 circular white surface with 4 px padding and default shadow.
- `icon`: one 12 × 12 shared Icon glyph.
- `number`: one short string or numeric value centered in the circle.

## Behavior and accessibility

Subpin is decorative supporting anatomy. It does not receive focus, emit an
action or replace the accessible name of the owning Map Pin. Number content is
announced only as part of the parent marker's accessible label.

## Token use

- Surface: `--color-background-level-1-base`; content:
  `--color-text-icon-accent`.
- Typography: `--typography-caption-regular-kitten`.
- Radius, padding and shadow: `--radius-xxl`, `--space-100`,
  `--shadow-default`.

## Local component contract

This is the M-003 owned contract for `component.map-subpin`.

### Public types

```ts
export type WblMapSubpinContent =
  | { readonly kind: 'number'; readonly value: number | string }
  | { readonly kind: 'icon'; readonly iconName: WblIconName };
```

### Class and selector

- `WblMapSubpinComponent` — `wbl-map-subpin`.

### Inputs

- `content = input.required<WblMapSubpinContent>()`

### Models and outputs

- None.

### Slots

- None. Icon content resolves through the shared Icon owner.

### Local evidence target

- Code: `src/app/design-system/primitives/map-subpin/map-subpin.component.ts`.
- Focused test: `src/app/design-system/primitives/map-subpin/map-subpin.component.spec.ts`.
- Public export: `src/app/design-system/index.ts`.
- Storybook: `storybook/stories/map-subpin.stories.ts`.

## Figma evidence

[Exact Subpin component set, node `15563:754`](https://www.figma.com/design/EO9tuCsqwuHL8cZ4Eb2psR/?node-id=15563-754)
contains Icon and Number variants at 20 × 20. Exact-node metadata, design
context, variables and screenshot were read on 2026-09-10. Published component
keys were unavailable, so no assembly sidecar is claimed yet.

## Documentation task

M-003 · [GitLab issue](https://gitlab.com/polozovdaniel/logistics-2/-/work_items/39) ·
actor `artem-mokin` / GitLab `26942597` · agent `Specs subagent` ·
run/session `M-003-geographic-map-20260910`.
