---
package: clsx
version: "^2.1.1"
tier: core
decision: approved
date: 2026-05-14
deciders: [scaffolded]
adr: null
filter-results:
  license: MIT
  types: native
  maintenance: active
  boundary-fit: pass
  shadow-check: pass
  eu-residency: n/a
  cve-scan: clean
  named-consumer: pass
verification-commands:
  - pnpm audit --audit-level=moderate
  - npm view clsx license
accepted-cves: []
---

## Filter: license

MIT — on the workspace allowlist.

## Filter: types

Ships first-party TypeScript types in its distribution.

## Filter: maintenance

Active. Maintained by Luke Edwards; stable, minimal API.

## Filter: boundary-fit

Core UI package. `clsx` is a utility for constructing `className` strings; appropriate for `core-ui`. No boundary rule violation.

## Filter: shadow-check

No competing className utility in the workspace. No shadow.

## Filter: eu-residency

Pure compute; no network calls or vendor data transmission. n/a.

## Filter: cve-scan

No advisories at adoption time.

## Filter: named-consumer

`core-ui` uses `clsx` in the `cn()` utility (combined with `tailwind-merge`) for conditional class composition.

## Prompt: replaces

Nothing — this is the initial UI scaffold.

## Prompt: migration-cost-out

Mechanical: replace `clsx()` calls with template literals or equivalent. Minimal API surface.

## Prompt: alternatives-considered

1. **classnames** — the older predecessor; `clsx` is smaller and faster.
2. **Template literals** — verbose; no conditional logic support.
   `clsx` is the de-facto standard lightweight className utility.
