Skip to content

Releases: eventjet/seatmaps

v2.0.2

05 Mar 11:27
cf5c85c

Choose a tag to compare

2.0.2 (2026-03-05)

Bug Fixes

  • correct coordinate scaling description in README (#40) (8d9b0bf)

v2.0.1

05 Mar 10:45
a1ca21a

Choose a tag to compare

Bug Fixes

  • Fix CJS __toESM interop bug with @emotion/styled in Jest (#37)

Importing the .cjs entry caused a runtime error because esbuild's __toESM helper with isNodeMode=1 set default to the whole exports object instead of the actual styled function. Consumers had to work around this by forcing Jest to use the ESM entry. This is now fixed.

Full Changelog: v2.0.0...v2.0.1

v2.0.0

04 Mar 14:42
e8aac0f

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.0.4...v2.0.0

v2.0.0-rc.4

04 Mar 09:40

Choose a tag to compare

v2.0.0-rc.4 Pre-release
Pre-release

v2.0.0-rc.3

02 Mar 14:06

Choose a tag to compare

v2.0.0-rc.3 Pre-release
Pre-release

v2.0.0-rc.2

02 Mar 14:01

Choose a tag to compare

v2.0.0-rc.2 Pre-release
Pre-release

What's Changed

Full Changelog: v2.0.0-rc.1...v2.0.0-rc.2

v2.0.0-rc.1

06 Feb 13:15

Choose a tag to compare

v2.0.0-rc.1 Pre-release
Pre-release

Breaking Changes

  • React 19 required — Peer dependency changed from react ^18.2.0 to react ^19.0.0
  • @emotion/css removed from peer dependencies — Only @emotion/react and @emotion/styled are required
  • Module format changed — Now ships dual CJS + ESM (dist/index.cjs + dist/index.js) with "type": "module". Import paths changed from lib/ to dist/
  • New runtime dependencyclsx ^2.1.1 is now a regular dependency

New Features

SeatmapLayout — High-level data-driven component

A new SeatmapLayout component renders an entire seatmap from a plain SeatmapLayoutData object, eliminating the need to compose low-level components (Seatmap, Area, Block, Row, Seat, Volume) manually.

  • Single onBookableClick callback receives { id, type: 'seat' | 'volume', disabled } for all interactive elements
  • Automatic badge placement on volumes based on shape and size
  • Automatic seat name visibility (first/last seats in each row)
  • Decoration layering: non-text decorations render behind areas, text decorations render in front
  • Full TypeScript data model: SeatmapLayoutData, SeatmapAreaData, SeatmapBlockData, SeatmapRowData, SeatmapSeatData, SeatmapVolumeData, SeatmapDecoration, SeatmapBookableClickEvent

Comprehensive accessibility (a11y)

All interactive components now have full keyboard and screen reader support:

  • Seat: role="button", tabIndex, aria-label, aria-pressed, aria-disabled, Enter/Space keyboard handlers, focus ring styles
  • Volume: role="button", tabIndex, aria-label, aria-pressed, aria-disabled, Enter/Space keyboard handlers, focus ring styles
  • Area: New name prop, role="group", aria-label
  • Row: New name prop, role="group", aria-label
  • Seatmap: New ariaLabel prop (defaults to "Seat map"), role="group"
  • Block, Div: role="presentation"
  • Decorative elements (Circle, Ellipse, Rectangle, Text, Badge): aria-hidden="true"

VolumeonDisabledClick callback

New onDisabledClick prop on Volume for parity with Seat. Disabled volumes now trigger onDisabledClick instead of silently swallowing the click.

Bug Fixes

  • Fixed infinite render loop in SeatmapMutationObserver caused infinite re-renders in headless Chromium. Fixed by using a functional state updater that compares previous and next bounding box values before updating
  • Fixed infinite render loop in TextSizeControllerregister/unregister callbacks and context value were recreated on every render. Fixed with useCallback and useMemo
  • Fixed badge color on disabled volumes — Badge now uses gray (#cccccc) to match the disabled volume appearance instead of the original volume color

Internal

  • React Compiler enabled via babel-plugin-react-compiler
  • Build tooling modernized: yarn → pnpm, Rollup → tsup, Jest → Vitest, Storybook 6 → 8, webpack → Vite
  • useTransform hook replaced with getTransform pure function — Eliminates unnecessary hook overhead; React Compiler handles memoization
  • API tracking via @microsoft/api-extractor — public API surface tracked in api/react-seatmaps.api.md
  • Playwright e2e tests added for SeatmapLayout covering seat/volume toggling, disabled elements, badges, decorations, and aria attributes
  • JSDoc documentation added to all exported components, interfaces, and types

v1.0.4

22 Dec 15:09
446d79d

Choose a tag to compare

What's Changed

  • you can add seatCountBadge on ellipse
  • badge positioning on ellipses is calculatet
  • font-size + SCRIM_HEIGHT adjusted
  • update storybook-stories
  • add script to publish pre-release

Full Changelog: v1.0.3...v1.0.4

v1.0.3

13 Dec 19:32
1dec8a8

Choose a tag to compare

What's Changed

  • adjust seatCountBadge layout + position on Rectangle (#18)
  • add reference-Picture in Storybook again to get an easier overview

Full Changelog: v1.0.2...v1.0.3

⚠️ It was deliberately decided to remove the transparent overlay for the count badge. It is known that this makes the number difficult to read on dark backgrounds.

v1.0.2

13 Dec 14:00
642a3ae

Choose a tag to compare

What's Changed

  • adjust badge placement in SeatCountBadge (#17)
  • remove complex-example-reference.png-Picture in Storybook

Full Changelog: v1.0.1...v1.0.2