Mode Badge
Camera mode indicator — large letter with detail label
Size
Material
M
MODE
Manual
<div class="mode-badge">
<span class="mode-letter">M</span>
<div class="mode-detail">
<span class="mode-key">MODE</span>
<span class="mode-sub">Manual</span>
</div>
</div> .mode-badge {
display: inline-flex; align-items: center; gap: 6px;
background: var(--bg-panel); border: 1px solid var(--border-mid);
border-radius: var(--radius-md); padding: 6px 14px;
box-shadow: 0 2px 0 var(--border-deep), inset 0 1px 0 var(--border-hi);
}
.mode-letter { font-family: var(--font-display); font-size: 28px; color: #fff; line-height: 1; }
.mode-detail { display: flex; flex-direction: column; gap: 2px; }
.mode-key { font-size: 7px; letter-spacing: 2px; color: var(--text-muted); font-family: var(--font-ui); }
.mode-sub { font-size: 10px; color: var(--text-primary); letter-spacing: 1px; font-family: var(--font-ui); font-weight: 500; } API
| Class | Type | Description |
|---|---|---|
.mode-badge | Base | Primary component class |
.default | Size | Extra large variant |
Design Notes
Physical Analog
Reference devices: Camera top LCD mode indicator (M/A/S/P), Sony picture profile selector. Mechanism: The large mode letter (M, A, S, P) is derived from the markings on the camera mode dial. When displayed as a badge rather than a dial position, it indicates the current setting in a status context.
Geometry
| Property | Value |
|---|---|
| Padding | 6px 14px |
| Border radius | --radius-md (8px) |
| Mode letter font size | 28px |
| Mode key font size | 7px |
| Mode sub font size | 10px |
| Element gap | 6px |
CSS Recipe
Container (.mode-badge)
.mode-badge {
display: inline-flex; align-items: center; gap: 6px;
background: var(--bg-panel); border: 1px solid var(--border-mid);
border-radius: var(--radius-md); padding: 6px 14px;
box-shadow: 0 2px 0 var(--border-deep), inset 0 1px 0 var(--border-hi);
}
Mode letter (.mode-letter)
.mode-letter { font-family: var(--font-display); font-size: 28px; color: #fff; line-height: 1; }
Detail container (.mode-detail)
.mode-detail { display: flex; flex-direction: column; gap: 2px; }
Key label (.mode-key)
.mode-key { font-size: 7px; letter-spacing: 2px; color: var(--text-muted); font-family: var(--font-ui); }
Sub label (.mode-sub)
.mode-sub { font-size: 10px; color: var(--text-primary); letter-spacing: 1px; font-family: var(--font-ui); font-weight: 500; }
HTML Structure
<div class="mode-badge">
<span class="mode-letter">M</span>
<div class="mode-detail">
<span class="mode-key">MODE</span>
<span class="mode-sub">Manual</span>
</div>
</div>
Size Variants
No size variants defined.
Material Variants
No material variants. Uses Tier 2 raised depth model.
Theme Behavior
- Background swaps via
--bg-panel - Mode letter stays white (#fff) in both themes for high contrast
- Key label uses
--text-muted, sub label uses--text-primary - Shadow stack adapts via tokens
Constraints
- Mode letter MUST use
--font-display(Michroma) at 28px - Mode letter MUST be white (#fff) for maximum contrast
- MUST use Tier 2 shadow model (2px hard edge + inset highlight)
- Key label MUST be 7px with 2px letter-spacing (micro label convention)
- Layout MUST be horizontal (letter on left, detail column on right)
- MUST NOT be interactive (display-only indicator)
Accessibility
- Use
role="status"for dynamic mode display - Include full description:
aria-label="Mode: Manual (M)" - Ensure sufficient contrast for the 7px key label text
♿
Accessibility
- Element
- Use semantic HTML with appropriate ARIA roles
- Keyboard
- Follow WAI-ARIA patterns for this control type
- Focus
-
Visible focus indicator required. Use native browser focus ring or custom
:focus-visiblestyles.