# @expofp/ui

> ExpoFP SDK internal: shared pure React UI components

Latest version **3.45.9** (published 2026-10-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install @expofp/ui
pnpm add @expofp/ui
yarn add @expofp/ui
bun add @expofp/ui
```

## Health

**Score 65/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 3.45.9 |
| Published | 2026-10-20 |
| First published | 2026-08-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 7 |
| Unpacked size | 181.5 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Maintainers | alexsh_expofp, natalliakaranevichexpofp, daniel.blinder, timur_expofp, rodionnikolaev, korchemkin, 1evgenyt |

## Links

- npm: https://www.npmjs.com/package/@expofp/ui
- Homepage: https://developer.expofp.com/
- npm.io page: https://npm.io/package/@expofp/ui

## Dependencies (7)

- [tslib](https://npm.io/package/tslib.md) ^2.3.0
- [swiper](https://npm.io/package/swiper.md) ^9.4.1
- [classnames](https://npm.io/package/classnames.md) ^2.2.6
- [react-virtuoso](https://npm.io/package/react-virtuoso.md) ^4.18.7
- [resize-observer](https://npm.io/package/resize-observer.md) ^1.0.4
- [copy-to-clipboard](https://npm.io/package/copy-to-clipboard.md) ^3.2.0
- [react-zoom-pan-pinch-sr](https://npm.io/package/react-zoom-pan-pinch-sr.md) ^0.2.0

## Recent versions

- 3.45.9 (latest) — 2026-10-20
- 3.44.5 (stable) — 2026-10-08
- 3.45.8 — 2026-10-20
- 3.45.7 — 2026-10-19
- 3.45.6 — 2026-10-16
- 3.45.5 — 2026-10-15
- 3.45.4 — 2026-10-15
- 3.45.3 — 2026-10-14
- 3.45.2 — 2026-10-13
- 3.45.1 — 2026-10-13
- 3.45.0 — 2026-10-13
- 3.44.8 — 2026-10-12
- 3.44.7 — 2026-10-12
- 3.44.6 — 2026-10-09
- 3.44.4 — 2026-10-08
- … 57 more at https://npm.io/package/@expofp/ui/versions

## README

# @expofp/ui

Shared **pure, presentational** React components for the ExpoFP SDK. Bundled with the packages that
depend on it — no separate install.

**Scope rule:** props-in, markup-out components only — no domain logic, no MobX stores, no data
fetching, no side effects. Nothing here may know about floor plans, booths, exhibitors, or events, or
import from a domain package. Components receive everything they render via props; stateful wiring
(Containers) lives in the consuming package. The test: _could it ship in a general-purpose React
component library unchanged?_ If not, it belongs next to the domain that owns it.

## Styling

Components import their own `.scss`, which expects the SDK's shared SCSS layer (design tokens,
mixins, icon glyphs) via the `@styles` alias. The published package ships **JS only** — no compiled
CSS and no `.scss` sources. It is therefore consumed **from source** by `@expofp/floorplan`'s bundler
(the `@expofp/source` export condition), which compiles the SCSS into its own output. `@expofp/ui` is
an internal building block and is not intended to be styled standalone from its published `dist`.

`src/styles` (the primitives `_vars`, `_utils`, `main`, `_icons`) and `public/fonts` are the canonical
home of this layer — `@expofp/floorplan` points its own `@styles` alias here instead of keeping a
copy. If a third consumer ever needs it, split it into a dedicated `@expofp/styles` package; until
then, one extra alias hop is simpler than a package with a single dependent.

- Build: `nx build ui`
- Test (unit): `nx test ui`
- Test (stories, browser): `nx test-storybook ui`
- Storybook (dev): `nx storybook ui`
- Storybook (build): `nx build-storybook ui`
- Lint: `nx lint ui`

---
_Source: https://npm.io/package/@expofp/ui · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
