East Blue
KeepReady
Select Item Component link

One selectable row inside a Select Group — a leading element, a label with optional supporting text, and an optional trailing badge.

Keep — every finding from the last assessment is closed
All four DS Health traits pass and nothing is open. Disabled and Pressed sit on their own State axis, the flag is a vector from the Flags Library, and Type reads Icon, PesoSignVector, Flag and PesoSignText.

How the select item appears in real product screens — country rows with flags in the Express Send country code list, and peso amount rows in a GLoan loan amount list with the chosen amount highlighted.

Select Item component shown on two GCash screens: country code rows with flags (Philippines +63 selected, Australia +61, Canada +1) on Express Send, and peso amount rows from 10,000.00 to 25,000.00 on GLoan with 25,000.00 selected
TextLabel
Properties
Type
Density
State
isSelected
hasLeading
hasTrailing
Reusable
Pass
One row serving every Select in the product. Three densities cover compact pickers through to comfortable lists, and the four leading types cover the cases the product actually has.
Self-contained
Pass
Owns its own height, padding, type and colour, with the leading, content and trailing pieces each coming from their own component rather than being drawn inline.
Consistent
Pass
State is orthogonal to Type after the rebuild, the disabeld spelling is gone, and the multi-word values are joined — PesoSignVector and PesoSignText, matching the same values on Select.
Composable
Pass
Built to fill Select Group's ⤷ SelectionSlot. Leading, content and trailing are separate components, so the row composes rather than redrawing their internals.
State iOS Android Figma Property Notes
State=Default N/A N/A row #FFFFFF Label #0A2757. The row the group ships six of.
State=Pressed N/A N/A row #F6F9FD The row tints; the label colour does not change.
State=Disabled N/A N/A row #FFFFFF Label drops to #C2CFE5. The row keeps its white background rather than tinting.
isSelected=true N/A N/A label #005CE5 Label and leading icon turn brand blue. The row background stays white — selection is carried by colour, not by a fill.
Density N/A N/A 40 / 48 / 56 Compact, Default and Comfortable change the row height and its vertical padding. The content block itself is the same in all three.
Supporting Text N/A N/A hidden by default A second line under the label. The row hugs, so enabling it grows Comfortable from 56 to 60.
  • The disabeld typo is gone. The old build shipped a misspelled enum value, and the documentation carried both type:disabeld and type:disabled keys defensively so the spec table would render either way. Disabled is now a value on the State axis, spelled correctly, and the defensive duplicate is no longer needed. C2 · Variant & Property Naming
  • Disabled is a state, not a type. It used to be a value on type, which meant a disabled row could not also be an icon row or a flag row — the two ideas were competing for one axis. State = Default | Pressed | Disabled is now orthogonal to Type, so every leading type has all three. C4 · Native Mappability
  • The flag is a real vector. The Country variant drew its flag from a raster PNG. It is now a Flags Library - 16px instance — the exported SVG is paths, masks and a boolean operation with no <image> element anywhere in it, so it scales and recolours like every other asset in the system. C6 · Asset & Icon Quality
  • Pressed exists now. There was no pressed treatment at all, on a row whose entire purpose is being tapped. Every Type and Density now has State=Pressed, tinting the row to #F6F9FD. C5 · Interaction State Coverage
  • The multi-word values are joined. Peso Sign and Text - Peso Sign carried spaces and a hyphen separator. They are now PesoSignVector and PesoSignText — renamed for what they actually are rather than how they were first described, and matching the same two values on Select. C2 · Variant & Property Naming
  • The sparse State × isSelected grid is deliberate. Four of the six combinations exist per Type and Density: Default with either isSelected, plus Pressed and Disabled unselected. Selected-and-pressed and selected-and-disabled are intentionally left out, which is why the set is 48 variants rather than 72. C5 · Interaction State Coverage
  • Type stays a fixed enum rather than a slot. All four values differ only in what sits in the 24 × 24 leading element, and that element is already an instance — so promoting it to a slot would collapse the set from 48 variants to 12 and let any future leading content in without a fifth value. Kept as an enum on purpose: fixed choices are easier for less experienced designers to use correctly than an open slot. Carried as a recommendation rather than a fault, for whenever flexibility matters more than guardrails. C2 · Variant & Property Naming
  • Promote the leading element to a slot when guardrails matter less. Type exists only to enumerate what goes in the 24 × 24 leading box, and that box is already an instance. Turning it into ⤷ LeadingSlot would take the set from 48 variants to 12 and absorb any future leading content — a flag for a new market, a merchant logo, an avatar — without a fifth enum value. The trade is discoverability: a slot gives a designer no menu to pick from. Worth revisiting once the team is comfortable with the slot pattern, which is the same move that worked on List Item - Asset. Slot
  • Mute Supporting Text in the disabled state. Primary Text drops to #C2CFE5 when the row is disabled, but Supporting Text stays at #6780A9 in every state. In a disabled row that leaves the supporting line noticeably darker than the label it supports, which inverts their hierarchy. It only shows when Supporting Text is switched on, so this is latent rather than visible today. Token
  • Check Supporting Text's contrast before shipping it. #6780A9 on white is 4.01:1. At 12px SemiBold that counts as normal text under WCAG, which needs 4.5:1 — so the supporting line falls just short. A step darker would clear it. Worth settling before the line is used, rather than after it appears in a screen. A11y
  • Pass the icon-grid scaffolding upstream. The leading icon instances nest a Grid template carrying Guide lines, Keyshapes and Trim area. They are hidden and do not render, so this is not a fault here, but they ship inside every instance and belong to the icon library rather than to this row. Docs
  • Document when to use PesoSignVector versus PesoSignText. The two render almost identically at 16px — one is a custom SVG drawn to match the font, the other is Proxima's own ₱ glyph. The distinction is real and deliberate, but a designer picking from a dropdown cannot see it. One sentence on the component saves a coin-flip. Docs
  • See siblings: Select Group is the surface these rows fill, and Select is the control that opens it. Select Field is the trigger, deliberately outside this family's scope. Family

Component Playground

Layout

Typography

Colors

iOS — Swift Package Manager

.package(url: "https://github.com/AY-Org/eb-ds-ios", from: "1.0.0")

Android — Gradle (Kotlin DSL)

implementation("com.eastblue.ds:select:1.0.0")

Import

import EastBlueDS
import com.eastblue.ds.select.*

Six properties, in the order the Figma property panel lists them. Three native parameters have no row: label and supporting are the two text layers inside Content Element, and the trailing content is a nested Badge instance — none is a component property, so Figma has nothing to bind them to. State is the one property that is not a parameter either: Pressed is what the platform already does while a finger is down, and Disabled is each platform’s own idiom rather than an enum case. Type chooses the leading mark, and each mark brings its own width — 24, 16, 15 or 10 — which is deliberate; the row hugs whatever it is given rather than reserving a fixed slot.

Figma PropertySwiftUICompose
Type — Icon, PesoSignVector, Flag, PesoSignText type: EBSelectItemType type: EBSelectItemType
Density — Compact, Default, Comfortable density: EBDensity = .compact density: EBDensity = Compact
State — Default, Pressed, Disabled not a parameter — Pressed is the press itself; Disabled is .disabled(true) not a parameter — Disabled is enabled = false
isSelected — true, false isSelected: Bool = false isSelected: Boolean = false
hasLeading — true, false hasLeading: Bool = true hasLeading: Boolean = true
hasTrailing — true, false hasTrailing: Bool = true hasTrailing: Boolean = true
EBSelectItem(
    label: "Notifications",
    type: .icon,
    density: .compact
)
EBSelectItem(
    label = "Notifications",
    type = EBSelectItemType.Icon,
    density = EBDensity.Compact
)
EBSelectItem(
    label: "Send money",
    type: .pesoSignVector,
    density: .default,
    hasTrailing: false
)
EBSelectItem(
    label = "Send money",
    type = EBSelectItemType.PesoSignVector,
    density = EBDensity.Default,
    hasTrailing = false
)
EBSelectItem(
    label: "Philippines",
    type: .flag,
    density: .default
)
EBSelectItem(
    label = "Philippines",
    type = EBSelectItemType.Flag,
    density = EBDensity.Default
)
EBSelectItem(
    label: "Cash in",
    type: .pesoSignText,
    density: .comfortable,
    isSelected: true
)
EBSelectItem(
    label = "Cash in",
    type = EBSelectItemType.PesoSignText,
    density = EBDensity.Comfortable,
    isSelected = true
)
RequirementiOSAndroid
Exposed as a selectable option .accessibilityAddTraits(.isButton) plus .isSelected when chosen Modifier.selectable(selected = …, role = Role.RadioButton)
Selection is not colour-only Selected state announced, not just rendered in brand blue selected = true carries into the node's state description
Supporting text reads with the label .accessibilityElement(children: .combine) Modifier.semantics(mergeDescendants = true)
Leading element is decorative .accessibilityHidden(true) — except Flag, whose country belongs in the label contentDescription = null — same exception
Row meets the touch minimum Compact is 40 — needs 44 of hit area even where the row draws shorter Compact is 40 — needs 48dp

Do

Pick one Density for a whole list.

Don't

Don't mix densities inside one Select Group — the rows stop scanning as a column.

Do

Use Flag when the option is a country and the flag identifies it.

Don't

Don't rely on the flag alone — the country name belongs in the label for screen readers.

Do

Keep the label short enough to sit on one line.

Don't

Don't push detail into the label when Supporting Text is the place for it.

Do

Let the group own the dividers between rows.

Don't

Don't add a divider inside the row — Select Group's BorderType already places them.

ID Criterion Status Notes
C1 Layer Structure & Naming Ready Leading, Content and Trailing are each their own component. The row draws none of their internals.
C2 Variant & Property Naming Ready The disabeld typo is gone, the multi-word values are joined, and Type is a deliberate enum rather than a slot.
C3 Token Coverage Ready Every colour is bound and named: bg/color-bg-main and bg/color-bg on the row, text/color-text stepping to -disabled and -primary on the label, bg/color-bg-inverse on the leading mark — which tracks the label rather than staying fixed — and the badge’s bg/color-bg-secondary with text/color-text-primary stepping to -primary-disabled. Supporting Text is bound to text/color-text-weaker but ships hidden, so its 4.01:1 on white is not a live contrast concern; it becomes one the day the layer is switched on.
C4 Native Mappability Ready Four axes map onto a selectable list row on both platforms. State is the one that is not a parameter: Pressed is what the platform already does under a finger, and Disabled is each platform’s own idiom. The leading mark’s width varies by Type — 24, 16, 15 or 10 — which is deliberate, so the native row should hug what it is given rather than reserve a fixed slot. hasTrailing defaulting to true is deliberate too: the badge shows that the slot exists, and both consumers turn it off, so the native default should follow the primitive rather than the usage. The gap is that neither text layer nor the trailing instance is a Figma property.
C5 Interaction State Coverage Ready Pressed now exists across every Type and Density. The two missing selected combinations are confirmed intentional.
C6 Asset & Icon Quality Ready The raster flag is now a vector Flags Library instance. The icons nest hidden grid scaffolding, which belongs to the icon library.

4 Type × 3 Density × 4 of the 6 State × isSelected combinations = 48. Selected-and-pressed and selected-and-disabled are intentionally omitted, which is what keeps it from being 72. hasLeading and hasTrailing are boolean properties, so they switch the two nested instances without multiplying the set.

TypeLeading elementWidthState × isSelectedHeightsCount
IconA 24 × 24 icon instance24Default ×2, Pressed, Disabled40 / 48 / 5612
PesoSignVectorDrawn ₱ artwork — one bar through the P15Default ×2, Pressed, Disabled40 / 48 / 5612
FlagFlags Library instance — a vector16Default ×2, Pressed, Disabled40 / 48 / 5612
PesoSignTextProxima Soft’s own ₱, set as type10Default ×2, Pressed, Disabled40 / 48 / 5612
View full Type × Density × State × isSelected breakdown (48 rows)
TypeDensityStateisSelectedNode
IconCompactDefaultfalse7947:111970
IconCompactDefaulttrue7947:111974
IconCompactPressedfalse7947:111978
IconCompactDisabledfalse7947:111982
IconDefaultDefaultfalse7947:111986
IconDefaultDefaulttrue7947:111990
IconDefaultPressedfalse7947:111994
IconDefaultDisabledfalse7947:111998
IconComfortableDefaultfalse7947:112002
IconComfortableDefaulttrue7947:112006
IconComfortablePressedfalse7947:112010
IconComfortableDisabledfalse7947:112014
PesoSignVectorCompactDefaultfalse7947:112018
FlagCompactDefaultfalse7947:112022
PesoSignTextCompactDefaultfalse7947:120575
PesoSignVectorCompactPressedfalse7947:112026
FlagCompactPressedfalse7947:112030
PesoSignTextCompactPressedfalse7947:121075
PesoSignVectorCompactDisabledfalse7947:112034
FlagCompactDisabledfalse7947:112038
PesoSignTextCompactDisabledfalse7947:120607
PesoSignVectorDefaultDefaultfalse7947:112042
FlagDefaultDefaultfalse7947:112046
PesoSignTextDefaultDefaultfalse7947:120579
PesoSignVectorDefaultPressedfalse7947:112050
FlagDefaultPressedfalse7947:112054
PesoSignTextDefaultPressedfalse7947:121071
PesoSignVectorDefaultDisabledfalse7947:112058
FlagDefaultDisabledfalse7947:112062
PesoSignTextDefaultDisabledfalse7947:120611
PesoSignVectorComfortableDefaultfalse7947:112066
FlagComfortableDefaultfalse7947:112070
PesoSignTextComfortableDefaultfalse7947:120583
PesoSignVectorComfortablePressedfalse7947:112074
FlagComfortablePressedfalse7947:112078
PesoSignTextComfortablePressedfalse7947:121067
PesoSignVectorComfortableDisabledfalse7947:112082
FlagComfortableDisabledfalse7947:112086
PesoSignTextComfortableDisabledfalse7947:120615
PesoSignVectorCompactDefaulttrue7947:112090
FlagCompactDefaulttrue7947:112094
PesoSignTextCompactDefaulttrue7947:120587
PesoSignVectorDefaultDefaulttrue7947:112098
FlagDefaultDefaulttrue7947:112102
PesoSignTextDefaultDefaulttrue7947:120591
PesoSignVectorComfortableDefaulttrue7947:112106
FlagComfortableDefaulttrue7947:112110
PesoSignTextComfortableDefaulttrue7947:120595
Swift enum casing aligned to the family — node 7947:111969
The Swift enum cases were all-lowercase. .pesosignvector and .pesosigntext where Swift lowerCamels a multi-word case. The page was self-consistent, so nothing on it failed, but it left this component the odd one out in a family where Select and Select Group both lowerCamel — the kind of drift each page validates clean and only a family read catches. Now .pesoSignVector and .pesoSignText on both tabs; Compose still takes the Figma value verbatim. The Style cards are generated from getSnippet now rather than hand-written, so the two tabs cannot drift apart again.
C2 resolved
Density unified to EBDensity across the family — node 7947:111969
The family named one concept two ways. This page mapped Density to EBSelectItemDensity while Select Group mapped the identical three values to EBDensity. Neither page was wrong on its own, which is why no check caught it — it only shows when the two are read together. It matters because the group’s density has to reach its rows: in Figma that is what makes the group 288 tall at Compact and 400 at Comfortable, so natively the group passes density down. Two enums with identical cases would need a conversion at that hand-off, and would drift the day a case is added to one and not the other. Unified to EBDensity, which Select will need as a third consumer. EBSelectItemType keeps its prefix: Icon, PesoSignVector, Flag and PesoSignText mean nothing outside this component.
C4 resolved
Style and Code tabs rebuilt to the content guides — node 7947:111969
hasTrailing defaults to true on purpose, and the page now says why. Both consumers — Select Group and Select — set it false, so no row in a real list shows a badge. That reads like a wrong default until you know the intent: the primitive shows the badge so the trailing slot is visible at a glance, and consumers turn it off. Recorded in the Style tab’s description, on every card’s Properties row and in C4, because the reasoning is not recoverable from the file and the next reviewer would otherwise file it as a finding.
Docs
Two controls in the live preview did nothing. The panel still offered supporting and badge from before the restructure, while the reader had moved to hasLeading and hasTrailing — so both were inert and neither reported an error. The panel now mirrors Figma’s six properties in order. The generator that writes it fails the build if the panel declares a control the script does not read, or the script reads one the panel does not declare.
Docs
The sparse-grid note broke the preview’s layout. Both preview frames centre their children, so the row and the note explaining an impossible combination sat side by side and stretched the frame. They now stack in a column fixed to the row’s own width, so the note wraps underneath in the live preview and the spec cards alike.
Docs
One card became four. Type is the driving property, so Icon, PesoSignVector, Flag and PesoSignText each get a card. The other three axes — Density, State, isSelected — are controls on every card rather than cards of their own, which is what keeps four cards describing 48 variants.
Docs
Two properties were undocumented. The Figma panel carries hasLeading and hasTrailing, both defaulting to True; neither was on the page. Nothing changed in Figma — get_node_info cannot read property definitions.
C2 resolved
PesoSignVector was drawing the font’s glyph instead of its own artwork. The preview returned the literal ₱ character for both peso versions, with a note arguing the difference was invisible at that size. It is not: the vector is 15 wide against the text glyph’s 10, with a single bar through the P where Proxima draws two. The real path is now in the preview, exported from node 7947:112019 and drawn in currentColor. The two versions exist precisely because they are not interchangeable, and the preview had been erasing the distinction it was there to document.
Docs
The leading mark’s colour was recorded as fixed; it tracks the label. Exporting the same node in three states gives #0A2757, #C2CFE5 disabled and #005CE5 selected. The row now carries the same variants Primary Text does. The previous page said "follows the label colour", which was right — this pass had replaced a true qualitative note with a precise wrong one before catching it.
C3 resolved
Vertical padding varies with density and was documented flat. It is 8, 12 and 16 across Compact, Default and Comfortable — which is what turns a fixed 24px content block into a 40, 48 or 56 tall row. The heights are a consequence of the padding rather than set independently. The preview’s CSS was worse: padding: 0 12px, with the heights faked by min-height, so it looked right and described the component wrongly.
Docs
Both text styles resolve. Primary Text is Primary/Multi-line Label/Light/Base and Supporting Text is .../Fine, replacing three font specs and a "names pending Dev Mode read" IOU.
C3 resolved
All six colour roles are named, and four of them move. The row flips to bg/color-bg when pressed; Primary Text and the leading mark step through text/color-text, -disabled and -primary; the badge label steps to -primary-disabled. The badge fill is bg/color-bg-secondary at #E5F1FF — comparing that against Countdown, which had the same token recorded at #EEF2F9, is what surfaced a wrong token name on that page.
C3 resolved
Supporting Text is a hidden layer, not a property. The panel offered a supporting toggle Figma does not have. The layer is documented — bound to text/color-text-weaker, with its own text style — and marked as shipping hidden, so nothing on the page currently draws it.
Docs
The preview drew in the documentation font. .eb-preview-sitem declared font-family: inherit, which resolves to BarkAda; both text layers are Primary/* and are Proxima Soft in Figma. The root now names Proxima Soft. This is the first component caught by the typeface check rather than by eye.
Docs
The install block pointed at coordinates that will never exist. gcash/east-blue-ios and com.gcash.eastblue:components:1.0.0, with no Import line. It now cites the Select family artifact com.eastblue.ds:select:1.0.0 and imports com.eastblue.ds.select.*.
Docs
Property Mapping missed two properties and mapped three things that are not properties. hasLeading and hasTrailing had no rows; Primary Text, Supporting Text and Trailing Element are two text layers and a nested instance. Seven rows became six, one per panel property.
Docs
The two tabs disagreed three separate ways. Type mapped to leading: EBSelectLeading against the Style tab’s type: EBSelectItemType; Density had a SwiftUI modifier against a Compose parameter; and State was "not a parameter" in the mapping while the Style tab emitted state: .disabled. More disagreements than any other component in this run of reviews.
Docs
State is not a parameter, and the Style tab moved to match. The mapping had it right: Pressed is what the platform already does under a finger, and Disabled is each platform’s own idiom — .disabled(true) in SwiftUI, enabled = false in Compose. Third component in the system where a Figma State axis exists only because a designer has to pick one to see it, after Countdown and Select Item’s own sibling.
C4 resolved
Usage Snippets were keyed to use-cases, not to the property. "A plain row", "Selected, with supporting text" and "A country row". One per Type value now, four in total, with density, selection and hasTrailing demonstrated across them.
Docs
C3’s contrast note read as a live defect and is not one. It flagged Supporting Text at 4.01:1 on white; the layer ships hidden, so nothing draws it. Reworded to say it is bound, hidden, and becomes a contrast concern the day it is switched on — which is the useful form of that warning.
Docs
The variants table claimed something unread and lacked something useful. PesoSignVector was described as "matched to the font", which cannot be verified and is visibly untrue at 15 against 10. A Width column now carries all four leading widths — 24, 16, 15, 10.
Docs
Two design decisions are recorded as deliberate rather than left to be re-raised. The leading mark’s width varies by Type, so the row hugs what it is given rather than reserving a fixed slot; and the two peso versions coexist while a transition finishes, with one to be deprecated later. Both are confirmed intentional and noted in C4 and the mapping description so a later reviewer does not file them as findings.
Docs
Three pieces of content have nothing to bind to. Primary Text, Supporting Text and the trailing Badge are layers and a nested instance rather than component properties, so Code Connect will have no anchor for the row’s two strings or its trailing content. The six properties that do exist all trace 1:1. Recorded against C7, which was already open on registration.
C7 open
Code Connect emptied, and DEV code is live for the first time. The demo script had no getSnippet, so both language tabs were frozen on a static string; they now produce four distinct calls and respect the sparse grid — isSelected is only emitted alongside State=Default.
Docs
Rebuilt on the 2026 Working File · node 7947:111969
The disabeld typo is gone. Disabled is now a correctly spelled value on the State axis, so the documentation no longer needs to carry both spellings defensively.
C2 resolved
Disabled promoted from a type value to an orthogonal State. Every leading type now has Default, Pressed and Disabled instead of the two ideas competing for one axis.
C4 resolved
The raster PNG flag is a vector. Now a Flags Library - 16px instance — the exported SVG contains no image element.
C6 resolved
Pressed state added across all four types and three densities, tinting the row to #F6F9FD.
C5 resolved
Peso Sign and Text - Peso Sign renamed to PesoSignVector and PesoSignText — spaces and the hyphen separator removed, and named for what they are rather than how they were first described.
C2 resolved
Selected-and-pressed and selected-and-disabled confirmed as intentionally omitted, holding the set at 48 variants rather than 72.
C5 resolved
Node moved from 18577:13033 (Sticker Sheets v2) to 7947:111969 (2026 Working File), and navGroup changed from Dropdown to Select to match the component's name.
Rebuilt
isSelected normalised · node 25689:371384
isSelected collapsed to two values — the ambiguous third Default value was removed; the prop now applies uniformly across Icon, Peso Sign, and Flag. Coverage is consistent at 9 × unselected + 3 × selected per Type, and selection maps 1:1 to a native Bool. Resolved
C2 Resolved
Boolean vocabulary standardised — isSelected values renamed Yes/No → true/false across all 36 variants. Select Item now matches the documented C2 rule and the rebuilt Radio Button; the system is on a single boolean vocabulary. Resolved
C2 Resolved
Rebuilt as Select Item · node 25689:371384
Component rebuilt and renamed Dropdown Item → Select Item — new slot-based architecture: Type (Icon / Peso Sign / Flag) × Density (Compact / Default / Comfortable) × State (Default / Pressed / Disabled) × isSelected (No / Yes / Default), with named Leading / Content / Trailing element slots. Restructured
Rebuild
Enum typo disabeld resolved — disabled is now a correctly-spelled orthogonal State value, not a misspelled content type. Composes with any Type (e.g. Peso Sign + Disabled), resolving the earlier C2 + C4 issues. Resolved
C2 · C4 Resolved
Raster flag replaced with a vector instance — the country flag now maps to Flags Library - 16px in the Leading slot, locale-swappable rather than a baked-in Philippines PNG. Resolved
C6 Resolved
Pressed state + selected affordance added — State=Pressed covers touch feedback (focused is N/A on mobile), and isSelected=Yes flips the label to brand color plus exposes a checkmark via the Trailing icon slot. Resolved
C5 Resolved
Amount variant generalized — the peso sign is now a Leading vector slot (Peso Sign - Proxima) with the value in Content; the trailing slot stays free for a badge or value. Resolved
Slot
isSelected exposes three values (No / Yes / Default) — ambiguous for a boolean and inconsistent across Types. Collapse to Yes/No. Open
C2 Open
Code Connect mappings — now unblocked by the rebuild; SwiftUI / Compose mappings not yet registered. Open
C7 Open
Initial Assessment · node 18577:13033
Component assessed — 9 variants documented across type (text / amount / country / text with tag / disabeld) × selected (true/false). Row primitive for Dropdown overlay. Documented
Initial
Enum value disabeld misspelled — ships into the generated TS type. Rename to disabled. Open
C2 Open
Country variant uses a raster PNG flag — Philippines image is bitmap, not a vector flag instance. Blocks reuse and native handoff. Open
C6 Open
No pressed or focused state variants — only selected on/off and a pseudo-disabled content type. Touch/keyboard feedback unmodeled. Open
C5 Open
Disabled modeled as type value — collides with content types (text / amount / country). Should be an orthogonal disabled axis. Open
C4 Open
Code Connect mappings — no CLI mappings registered yet; blocked by C2, C5, C6. Open
C7 Open