Releases: eventjet/seatmaps
v2.0.2
v2.0.1
Bug Fixes
- Fix CJS
__toESMinterop bug with@emotion/styledin 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
What's Changed
- Modernize tooling and add documentation by @MidnightDesign in #21
- Add React Compiler by @MidnightDesign in #25
- Add accessibility support to seatmap components by @MidnightDesign in #24
- Bump esbuild from 0.21.5 to 0.27.2 by @dependabot[bot] in #26
- Add Dependabot configuration by @MidnightDesign in #22
- Bump the dev-tooling group with 15 updates by @dependabot[bot] in #33
- Add high-level SeatmapLayout component by @MidnightDesign in #27
New Contributors
- @dependabot[bot] made their first contribution in #26
Full Changelog: v1.0.4...v2.0.0
v2.0.0-rc.4
Full Changelog: v2.0.0-rc.3...v2.0.0-rc.4
v2.0.0-rc.3
Full Changelog: v2.0.0-rc.2...v2.0.0-rc.3
v2.0.0-rc.2
What's Changed
- Add Dependabot configuration by @MidnightDesign in #22
Full Changelog: v2.0.0-rc.1...v2.0.0-rc.2
v2.0.0-rc.1
Breaking Changes
- React 19 required — Peer dependency changed from
react ^18.2.0toreact ^19.0.0 @emotion/cssremoved from peer dependencies — Only@emotion/reactand@emotion/styledare required- Module format changed — Now ships dual CJS + ESM (
dist/index.cjs+dist/index.js) with"type": "module". Import paths changed fromlib/todist/ - New runtime dependency —
clsx ^2.1.1is 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
onBookableClickcallback 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 stylesVolume:role="button",tabIndex,aria-label,aria-pressed,aria-disabled, Enter/Space keyboard handlers, focus ring stylesArea: Newnameprop,role="group",aria-labelRow: Newnameprop,role="group",aria-labelSeatmap: NewariaLabelprop (defaults to"Seat map"),role="group"Block,Div:role="presentation"- Decorative elements (
Circle,Ellipse,Rectangle,Text,Badge):aria-hidden="true"
Volume — onDisabledClick 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
Seatmap—MutationObservercaused 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
TextSizeController—register/unregistercallbacks and context value were recreated on every render. Fixed withuseCallbackanduseMemo - 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
useTransformhook replaced withgetTransformpure function — Eliminates unnecessary hook overhead; React Compiler handles memoization- API tracking via
@microsoft/api-extractor— public API surface tracked inapi/react-seatmaps.api.md - Playwright e2e tests added for
SeatmapLayoutcovering seat/volume toggling, disabled elements, badges, decorations, and aria attributes - JSDoc documentation added to all exported components, interfaces, and types
v1.0.4
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
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
v1.0.2
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