# `MishkaCmsCore.Runtime.PageBuilder.Marketplace.Token`
[🔗](https://github.com/mishka-group/mishka_cms_core/blob/v0.0.1/lib/mishka_cms_core/runtime/page_builder/marketplace/token.ex#L5)

One design token — the validated shape both the Mock adapter and any real backend must produce.

`usage` is how many places in the site currently reference the token; the Studio sorts and dims by
it, so an unused token is visibly unused. `custom?` marks a token the team added rather than one
the theme shipped with, which the CSS generator highlights.

# `t`

```elixir
@type t() :: %MishkaCmsCore.Runtime.PageBuilder.Marketplace.Token{
  category: String.t(),
  custom?: boolean() | nil,
  glyph: String.t() | nil,
  key: String.t(),
  label: String.t(),
  usage: integer() | nil,
  value: String.t()
}
```

# `builder`

# `enforce_keys`

# `enforce_keys`

# `example`

A sample %MishkaCmsCore.Runtime.PageBuilder.Marketplace.Token{} populated from defaults + type-based fallbacks.

# `keys`

# `keys`

# `matches?`

```elixir
@spec matches?(t(), String.t()) :: boolean()
```

Whether a token matches a category filter — `"all"`, `"custom"`, or a category name.

# `new!`

```elixir
@spec new!(map()) :: t()
```

Builds a token, raising on an invalid one — seeds are compile-time data, not user input.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
