Provider mark
Meta and OpenAI marks for model pickers: a monochrome glyph on the icon scale, bare or on a tile.
import { ProviderMark, isProviderName } from "@arcadia/ui"Provider marks for model pickers and provider lists: a simplified monochrome glyph on the icon scale (sm 12, md 14, lg 16), drawn in the same 20-of-24 live area as the kit's icons so it sits level with them. It is drawn in the icon ranks (--provider-mark-color, icon-2), never the brand's colour and never the beacon: a provider is a fact about a model, not a light.
In a ListRow or a menu row it takes the slot's icon rank, so a highlighted row lights it. The marks are their owners' trademarks, used only to say whose model it is.
A provider that arrives as data, such as a server's vendor field, goes through isProviderName(value) first: a provider the kit has no mark for gets no mark rather than an empty one.
Examples
Contrast
The glyph measured live over each surface, and over the tile on that surface (WCAG 2; graphics need 3:1).
--bg-app--bg-sidebar--bg-raised--bg-elevated--bg-inset--bg-app--bg-sidebar--bg-raised--bg-elevated--bg-insetThe tightest pair is icon-2 on the --fill-3 tile over the light sidebar, still above 5:1.
rootStyle takes layout and these knobs. A container that tints its glyphs sets --provider-mark-ink instead, which every mark inside it takes: a ListRow's leading slot and a menu item hand down their icon rank that way.
| Knob | Takes | Default | Sets |
|---|---|---|---|
Ref<IconSize> | var(--icon-base) | The glyph's width and height. | |
Paint | var(--provider-mark-ink | The glyph's ink. A container that tints its glyphs sets --provider-mark-ink instead (a ListRow's leading slot and a menu item do). | |
Paint | transparent | The tile's fill (tile). | |
Ref<IconSize | Control> | var(--provider-mark-size) | The tile's side (tile; bare, the glyph's size). | |
Ref<Radius> | "0px" | 0px | The tile's corner radius. |
Decorative unless given a label, which makes it an img named "OpenAI". Omit the label where the provider's name is in the text beside it; in a picker, the model name usually says enough. Under forced colours the glyph follows CanvasText and a tile keeps a 1px outline.
ProviderMark
providerrequired- "meta" | "openai" | "devin" | "xiaomi" | "zai" | "opencode" | "grok" | "deepseek" | "kimi" | "google"
- Whose models these are.
size- "sm" | "md" | "lg"Default"md"
- The glyph on the icon scale:
sm12px,md14px,lg16px. A tile wraps it in 20 / 24 / 28. tile- booleanDefaultfalse
- Set the glyph on a small continuous-corner squircle in a fill rank, like the app icon.
label- string
- Accessible name ("OpenAI"). Omit when the provider's name is already in the text beside it.
rootStyle- RootStyle<ProviderMarkKnobs>
- Typed StyleX override: layout and the
--provider-mark-*knobs.
Rest props go to <span> props and render.