Detalhes do pacote

@vidstack/cdn

vidstack834MIT1.0.0

readme (leia-me)

Vidstack Player

package-badge discord-badge

Build and ship a production-ready video or audio player! Robust, customizable, and accessible. The successor to Plyr 3.x and Vime 5.x.

Quickstart

Our library works with any of the JavaScript frameworks listed below. You can decide to build your own player layout using our components, or you can take advantage of our pre-built layouts to get up and running quickly! See any of the following links to get started.

Installation:

Resources:

Documentation

If you'd like to learn more about Vidstack Player, you can find our documentation on our website:

Player Documentation

Community

If you need help with anything related to Vidstack, or if you'd like to casually chit-chat with other members:

Thanks ❤️

A special thanks to the following organizations who are kindly supporting Vidstack with sponsored accounts:

changelog (log de mudanças)

Changelog

All notable changes to this project will be documented in this file.

[unreleased]

⏪ Revert

Player

  • clear saved time on media end (1b9c598)

✨ Features

Player

  • audio gain support (#1145) (c3e08c5)
  • new accessibility settings menu (0b6470f)
  • show example captions text on style change (8ceae6b)
  • keyboard animations setting in default layout (b63fa16)
  • loop setting in default layout (5f07f55)
  • media announcer (533edc5)
  • announcements setting in default layout (701f7ce)
  • new speed slider component (cd413ba)
  • new quality slider component (e6d801a)
  • new default layout settings controls (4718669)
  • support color preference in default theme (0a96ec6)
  • specify default theme color scheme (9a10613)
  • add download button to default layout (80488b6)
  • new slider steps component (5623c98)
  • source qualities (837daa0)
  • new js player constructors (2876c73)
  • new cdn urls and bundles (e36958c)
  • add new artwork player prop (c0a4eaf)
  • add airplay support for audio (c60c2fc)
  • add new onLoad method to storage (2ce029f)

🐛 Bug Fixes

Player

  • always include keyboard status updates (82ec4a3)
  • respect prefers reduced motion in default theme (208a152)
  • include provider file name hashes in cdn bundle (5c76bbc)
  • improve volume slider popups (07ebc12)
  • show title in default layout (6adb7f4)
  • add deno to node exports (22afcea)
  • add bun to node exports (17afddd)
  • show volume slider when available in small default layout (20b9eab)
  • include react example in source selection warning (a3d6eb1)
  • add workerd to node exports (#1198) (dedd706)
  • stop expensive updates when not visible (be96bd2)
  • narrow player src types (82988ca)
  • default <track> element not selected (c82528b)
  • checkVisibility api not available on ios safari (1ef5e06)
  • improve google cast error handling and events (6fc54a9)
  • accept youtu.be short urls (9261b06)
  • vimeo ended event not firing (53025a3)
  • focus on controls hide should not scroll (778132f)
  • extending LocalMediaStorage should work (71298c3)
  • accept none value for fullscreen orientation attr/prop (545b7d6)
  • clear saved time in storage on media end (3c37e51)
  • trigger started if resuming from stored session (6cdeed7)
  • allow seeking directly to end (20cc205)
  • hls tracks not initializing correctly (edddf3b)
  • hide chapters menu button when disabled (9e96b33)
  • rework layout loading in player class constructors (9b183ac)

Player (React)

  • rename DefaultKeyboardActionDisplay to DefaultKeyboardDisplay (9d573f9)
  • slider callbacks not firing (a4fe4e0)

1.10.9-next (2024-02-20)

🐛 Bug Fixes

Player

  • correctly resolve current chapter index (#1174) (275daa2)
  • external vimeo hls urls are not loading (c774e5f)

1.10.8-next (2024-02-20)

✨ Features

Player

  • add seek keyboard animation display icons (ff93604)
  • new showMs prop on slider value component (4e23e26)
  • save video quality in storage (c8524dc)

Player (React)

  • expose controls group slots (9e86ef2)

🐛 Bug Fixes

Player

  • video caption button incorrectly hidden on touch input (dfed2dc)
  • seek to live edge on play (ed5e8ec)
  • min-live-dvr-window attr not updating (7491385)
  • slider chapters should reset after seeking back on end (4dd2012)
  • last slider chapter not filled to end (e804c19)
  • do not fetch embed poster if one is provided (2503c5d)
  • use voice reader friendly labels (6b9d999)

Player (React)

  • throws on build if no player src is provided (a26fd41)
  • noScrubGesture should be optional in default layout (a2a2f4a)

1.10.7-next (2024-02-17)

✨ Features

Player (React)

  • export <DefaultVideoKeyboardActionDisplay /> (5f5d40a)

🐛 Bug Fixes

Player

  • log media errors in dev (6cf4575)
  • restart keyboard display animations on key press (2376735)
  • include source type attr for html providers (9ab499e)

1.10.6-next (2024-02-15)

🐛 Bug Fixes

Player

  • duplicate base.css imports in bundler plugin (808c490)
  • VTTContent type missing array declarations (7869e90)
  • playback rate state not initializing correctly (231b036)
  • youtube provider should fire pause event on end (35b1fb9)
  • default themed menu not interactable on mobile (94b25fa)
  • controls prop setter on player instance missing (9bfa26e)
  • watch menu button hint part changes (a17239a)
  • show thumbnail img once it has loaded (ab86b55)
  • pass media remote control to keyboard shortcut callbacks (cfe2331)
  • add separate key up and down callbacks to shortcuts (b643602)

Player (React)

  • poster showing broken image icon on load (#1153) (3f00fbc)
  • setting controls causes warning (8f1fe4d)

React

  • setting prop to undefined should use default value (aaf9b04)

1.10.5-next (2024-02-06)

✨ Features

Player

  • include separate default and plyr layout cdn imports (c583cf0)

🐛 Bug Fixes

Player

  • font size setting not applied in fullscreen (2a882d0)
  • source objects failing provider loader checks (d243793)
  • do not prevent f1-f12 keys from working (6a06b57)
  • clipped video can not be replayed (ad61932)
  • vimeo url with progressive_redirect is not embed (1cb9fee)
  • support unlisted vimeo videos (2bfcce9)
  • poster showing broken image icon on load (2684fc3)

Player (React)

  • use remotion thumbnail in plyr layout preview scrub (3651045)
  • remotion provider firing seeked before seeking when paused (cd7e8da)

1.10.4-next (2024-02-03)

✨ Features

Player

  • new noScrubGesture prop on default layout (5de514f)
  • new playbackRates prop on default layout (2c51d76)

🐛 Bug Fixes

Player

  • watch supported check correctly in remote playback (5b33c7a)
  • disable audio menu if only one option (f464edf)
  • seekable end of clipped videos is incorrect (4217dfe)
  • scrollbar styles not applying on chromium 121+ (6404bfe)
  • select text tracks on change and update storage correctly (195c289)
  • poster component should use inferred when none provided (d533263)
  • remove trusted-types from types (c79d376)
  • player duration prop always returns -1 (54cbc0c)
  • clipped duration overwriting intrinsic duration (3bab0d6)
  • thumbnails vtt json not accepted correctly (cee73b4)
  • 0-9 key seeking stopped working (79636c1)
  • airplay not working on macos safari and with hls streams (2332626)
  • expected selector error on default video layout css (#1135) (10758dd)
  • resolve hls stream type when using preferNativeHLS (ce73b65)

1.10.3-next (2024-01-31)

🐛 Bug Fixes

Player

  • startTime failing thumbnails image assertion when 0 (1bf42cc)
  • small default video layout controls should be lower (d2031ca)
  • watch airplay availability (f7bfe28)
  • do not set crossorigin for youtube/vimeo posters (1a6f3af)
  • embed ui should not be focusable when no native controls (40cc6a1)
  • storage not working correctly with embeds (6f3c18b)
  • do not reset playback rate on source change (7671c89)
  • track playback rate in storage (a0379ae)
  • clipped youtube embed requires two plays (84b574f)

1.10.2-next (2024-01-30)

🐛 Bug Fixes

Player

  • include plugins.js in package (f077434)
  • add progress live edge cssvar to plyr layout (d2c29a4)
  • inferred title/poster being overwritten by user provided (083a484)

1.10.1-next (2024-01-30)

🐛 Bug Fixes

Player

  • plyr layout live button spacing (ef57fc3)
  • audio layout play button colors being overriden (86819b0)
  • layout props missing in analysis (e6c9b83)

1.10.0-next (2024-01-30)

✨ Features

Core

  • web component bundler plugins (dfd4fa5)

Player

  • new sliderChaptersMinWidth layouts prop (441c54e)
  • allow json to be passed directly to track content prop (f20e904)
  • new clipStartTime and clipEndTime player props (f190651)
  • new disabled prop on gesture component (0a1cc02)
  • new posterLoad player prop (ea2a9e7)
  • new load="play" player option (1b7389c)
  • new storageKey player prop (b397859)
  • new disableTimeSlider default layout prop (219b90e)
  • new noGestures default layout prop (2fff957)
  • load chapters from vimeo embed (8a23415)
  • new crossOrigin prop on poster component (ecbf277)
  • new crossOrigin prop on slider video component (d699c7b)
  • new crossOrigin prop on thumbnail components (72b8056)
  • support new thumbnail src types (698e575)
  • new keyboard action display in default layout (52890b0)
  • airplay support (0f7df2f)
  • google cast support (d08d630)
  • add media session api support (da82b35)
  • new storage player prop and MediaStorage interface (778ff6c)
  • new view, stream, and remote type tailwind variants (e15aefc)
  • font style customization menu (4e902b6)
  • expose cancellable media request events on all components (b6d84af)
  • include ManagedMediaSource support check (ab35874)
  • plyr layout (622dfda)
  • redesign default audio layout (7ff5e65)
  • new title component (764c977)
  • new duration player prop (4cf4457)
  • new seekStep default layout prop (1d32867)

Player (React)

  • default layout slots (209d400)
  • add remotion support to plyr layout (9534d68)
  • allow default video slots to be passed to both sizes (5abd619)

🐛 Bug Fixes

Player

  • call ready state on text track with content only (d3aad91)
  • fill last slider chapter gap based on duration difference (32ed5d5)
  • youtube should fire seeking and not play on initial seek (5f11163)
  • vimeo should fire seeking (298be0c)
  • remotion provider should fire seeking (5c4c359)
  • improve looping behaviour (23fd34f)
  • accessibility warning on iframes (51e3697)
  • switching src on cdn throwing (5565724)
  • include tooltip left/right default theme styles (80ad732)
  • vimeo video info can be undefined (#1062) (c8b871f)
  • update icon slots on all mutations (00073a0)
  • catch false postive vimeo pro detection (29d6fa0)
  • use intrisic duration for last vimeo chapter end time (4dbe21e)
  • rename crossorigin prop to crossOrigin (37513ea)
  • rework media request queue (6f9c16b)
  • set src on poster image to prevent white border (437764f)
  • rename playsinline prop to playsInline (e7cb6c5)
  • rename autoplay prop to autoPlay (0fc9dd7)
  • add missing load events to all providers (446a4f4)
  • remove redundant default layout exports (67de0e9)
  • replace player query lists with callbacks (3644a74)
  • remove player query lists (6f1129e)
  • key events not updating slider value (a39a6fc)
  • manage focus when default audio layout transitions (87340eb)
  • toggle captions on plyr layout should show cue (1ea562a)
  • iframe should not leak outside media provider (ed93a31)
  • switching from youtube to vimeo gets stuck (597cef7)
  • settings stops working via keyboard after exiting (f4954d9)
  • vimeo not firing ended event (fba30c9)
  • check whether browser can play audio/video type (b7ff954)
  • select default hls captions (11b0c70)
  • tweak remote playback tw variants (e6c506b)
  • support never for small-when attr (04955c4)

Player (React)

  • default chapters menu should use compact layout when no thumbnails (809098e)
  • click callbacks not working in menus (fcb938f)

1.9.8-next (2023-12-15)

🐛 Bug Fixes

Player

  • vimeo playing and progress events not fired (a3fceac)

Player (React)

  • unexpected token { in iOS<17 (5720ce3)

1.9.7-next (2023-12-13)

🐛 Bug Fixes

Player

  • queue media requests (01649b3)
  • identify unique captions tracks (4b6b3a5)
  • add hls network error retry logic (be67987)

Player (React)

  • resolve invalid dom properties warning (39e440d)

1.9.6-next (2023-12-12)

🐛 Bug Fixes

Player

  • render captions when using embeds (d20eba6)

1.9.5-next (2023-12-12)

🐛 Bug Fixes

Player

  • update maverick to 0.41.1 (a646d4b)

Player (React)

  • add correct remotion component doc links (2d68c89)
  • apply asChild when used on remotion components (60385c3)

1.9.4-next (2023-12-11)

🐛 Bug Fixes

Player

  • cdn breaking due to mangle cache being created late (6cd1dee)

1.9.3-next (2023-12-10)

🐛 Bug Fixes

Player

  • use mangle cache for deterministic chunks (48b8324)
  • chapters menu should update on cue changes (574a0a3)

1.9.2-next (2023-12-09)

🐛 Bug Fixes

Player

  • initialize muted/volume correctly when using instance setters (87561b2)

Player (React)

  • stable waiting detection in remotion provider (4ca23a8)

1.9.1-next (2023-12-08)

🐛 Bug Fixes

Player

  • fire seeked event when vimeo video paused (a8131a1)

Player (React)

  • move remotion to completely separate entry (6a74780)
  • remotion provider should fire seeked (d9322ee)

1.9.0-next (2023-12-08)

✨ Features

Player (React)

🐛 Bug Fixes

Player

  • maintain volume state across provider changes (902a666)

Player (React)

  • use slider hooks throwing on setup (6088de7)

1.8.3-next (2023-12-04)

🐛 Bug Fixes

Player

  • prefer setting attrs on spinner elements (1be676a)

1.8.2-next (2023-12-04)

🐛 Bug Fixes

Player

  • mute button not working with vimeo provider (b387e8f)

1.8.1-next (2023-12-02)

🐛 Bug Fixes

Player

  • only apply default aspect ratio to video view (9b95a50)

1.8.0-next (2023-12-02)

✨ Features

Player

  • new hideControlsOnMouseLeave player prop (a481351)
  • new selector tailwind plugin option (e051bd2)
  • new spinner component (e0b0ab1)
  • expose hideOnMouseLeave prop on controls component (7eeabdd)

🐛 Bug Fixes

Player

  • set default aspect ratio of 16/9 (0e385a2)
  • remove const enum usage to simplify bundled output (fff8c36)
  • only fullscreen video view by default on mobile (b58616a)
  • title not updating after init (1c82248)
  • cursor should not dissapear while starting (273d30b)

1.7.0-next (2023-11-30)

✨ Features

Player

🐛 Bug Fixes

Player

  • disable click/touchstart event when toggles are disabled (7c1ce4d)
  • clear media layout children correctly (67aa63c)

Player (React)

  • speed normal label not using translations (1b72abc)
  • updating current time on page transitions throws (ed8b646)

1.6.2-next (2023-11-26)

🐛 Bug Fixes

Player

  • add gap between default slider chapter title and value (8d58a80)
  • chapter title not initialized correctly (ad1bc47)
  • media layout not cloning templates correctly (a258f34)

1.6.1-next (2023-11-24)

🐛 Bug Fixes

Player

  • youtube provider chunk not split (85dfa1a)

1.6.0-next (2023-11-24)

✨ Features

Player

🐛 Bug Fixes

Player

  • can use video presentation throwing (aff2d29)
  • use native controls for youtube on ios safari (23cd9a9)
  • resolve a few event type trigger issues (fc19c33)

1.5.7-next (2023-11-21)

🐛 Bug Fixes

Player

  • webpack parse error in regions css calc (3ca3213)
  • add bg color to default poster theme (766aa7a)
  • update slider chapters when track mode toggled (8cf48b4)
  • dynamically update slider chapters (362a1fc)
  • source select loop when using fallback header (ec8a4f9)
  • do not preconnect to jsdelivr for hls when imported (f404094)

1.5.6-next (2023-11-14)

✨ Features

Player

  • include provider in can play event detail (15a70d3)

🐛 Bug Fixes

Player

  • css normalize affecting menu radios (f5c9c67)
  • broken quality switch docs link (f81d533)
  • missing closing calc bracket on placement offset (234a34e)
  • include text content height in menu height calc (feb6627)
  • accept standard child button as tooltip trigger (5e5c1b9)
  • add focus styles to live button default theme (6261f18)
  • vertical slider thumb size is incorrect (96f16f6)
  • menu close icon looks slightly off (1322167)
  • include slider chapters css vars docs (b38f09c)
  • autoplay error data attr should be boolean (d2e1eeb)
  • slider value attr not updating state (b7164cc)

1.5.5-next (2023-11-07)

🐛 Bug Fixes

Player

  • keep-alive jsx type should be optional (e8a73c0)

1.5.4-next (2023-11-07)

🐛 Bug Fixes

Player

  • avoid re-appending trigger event on abort (11ade5c)
  • include keep-alive in framework jsx types (b8ea805)

1.5.3-next (2023-11-07)

🐛 Bug Fixes

Player

  • playsinline not initializing correctly (dbf7785)
  • scroll and zoom gestures not working on iphone (671cdaf)

1.5.2-next (2023-11-06)

✨ Features

Player

  • expose ios-controls in tailwind (ae56f15)

🐛 Bug Fixes

Player

  • update chapter index correctly on live streams (8b9fa4b)
  • initial seek on live:dvr should not go to edge (f1837ad)
  • better handle ios controls (5820094)
  • native renderer might be null due to race condition (5e2d90c)
  • show slider chapters on larger mobile landscape (7c0416a)
  • use native poster if not playsinline on ios safari (5009ddf)

1.5.1-next (2023-11-01)

✨ Features

Player

  • add orientation request events (2ebd688)

🐛 Bug Fixes

Player

  • add missing media event details (e79ad85)

1.5.0-next (2023-10-30)

✨ Features

Player

  • thumbnails now support json (16bdd0d)

🐛 Bug Fixes

Player (React)

  • useMediaState throwing when given player ref (18789bc)
  • media-captions should be safe to use on server (b986bf8)

1.4.9-next (2023-10-29)

🐛 Bug Fixes

1.4.8-next (2023-10-29)

🐛 Bug Fixes

Player

  • allow multiple thumbnail images (fa7137d)
  • clear text tracks correctly (8e9bc7e)
  • expose value setter on radio group (bd6e123)
  • apply media queries in player query list correctly (128151f)
  • controls should only be hidden on iphone under certain conditions (13162fd)
  • update initial duration in can play correctly (2534cae)
  • spacing issue between time and slider on mobile audio layout (c8b9f3e)
  • add playsInline prop on player instance (e2ae08e)
  • update playsinline state on prop change (4efe80b)

1.4.7-next (2023-10-25)

🐛 Bug Fixes

Player

  • resolve thumbnails with relative base url (b3f4d99)
  • switching providers loses muted state (9d68484)
  • use null as default value for tracked error states (7e5abdd)

1.4.6-next (2023-10-24)

🐛 Bug Fixes

Player

  • prevent buttons from submitting a parent form (#974) (73d2b2e)
  • swipe gesture interfering with scroll (b6ee427)
  • invalid autoplay tracking and freezing (1aa4cf3)

Player (React)

  • unexpected token { on iOS<16.4 (e1b8d80)

1.4.5-next (2023-10-23)

🐛 Bug Fixes

Player

  • swipe gesture freezes on android (75e1113)
  • respect playsinline on all touch devices (ebc5771)
  • controls component delay overriding player prop (35bf1e0)
  • hide controls on iphone when started and not playsinline (99b061a)
  • schedule disconnect destroy at end of raf queue (2d4b9d0)

Player (React)

  • slider chapters attempting to update after destroyed (bf082fd)

1.4.4-next (2023-10-20)

🐛 Bug Fixes

Player

  • audio view type should display contents (1c7c8ca)
  • focused slider keyboard should not affect another (1f7b216)
  • calling raf on menu attach throws server side (90b8f11)

1.4.2-next (2023-10-19)

✨ Features

Player

🐛 Bug Fixes

Player

  • better slider value defaults (9dc50fe)
  • prevent page scroll when interacting with sliders via keyboard (f2c6454)

1.4.1-next (2023-10-19)

🐛 Bug Fixes

Player

  • resolve relative hls rendition uri (c59c8fd)
  • simplify resolving relative thumbnail urls (fb7e30e)
  • keep isHLSSupported pure (4eb8b77)
  • align chapter title to start (adace29)
  • updating attrs after destroyed will throw (1e7ad2b)

1.4.0-next (2023-10-18)

✨ Features

Player

  • add j/l to global seek keys (d87cb18)
  • new speed up and slow down keyboard shortcuts (b1c26c5)

🐛 Bug Fixes

Player

  • set all labels and use translations (a5a617d)
  • lighthouse passive perf warning (fce730f)
  • forward global keyboard events to slider correctly and bound value (5d70279)
  • avoid double controls on iphone (da5de05)

Player (React)

  • useThumbnails memo error (09b41f6)

1.3.0-next (2023-10-17)

🐛 Bug Fixes

Player

  • improve stream type detection (7659ac1)
  • memory leak on provider change (24f451f)
  • normalize handling of time formatting across components (6201a26)

1.2.2-next (2023-10-17)

🐛 Bug Fixes

Player

  • update default layout component doc links (5ac0697)
  • attach gesture event triggers (eab1553)

Player (React)

  • add gesture event callbacks (bbca26a)

1.2.1-next (2023-10-17)

🐛 Bug Fixes

Player

  • update web component docs links (0433f99)

1.2.0-next (2023-10-16)

🐛 Bug Fixes

Player

  • toggle button throws on press (5278d63)
  • destroying while playing can throw errors in async paths (65cfdd5)
  • css reset messing up react settings menu (df24ee5)
  • focus padding not applied to popup chapters menu (d2f4c84)
  • do not load hls src on dom connect (92fa791)
  • slider chapters should fill all tracks when media has ended (599eaa1)
  • add new gesture events will-trigger and trigger (29fd986)

1.1.10-next (2023-10-10)

🐛 Bug Fixes

Player

  • popper align offset direction is reversed (39fd92c)
  • text renderer throwing on cdn bundle (8b6120b)
  • do not reset media when keepAlive (a67b24f)
  • prefer @media over @container due to support (5b9908f)

1.1.9-next (2023-10-09)

🐛 Bug Fixes

Player

  • cdn loading wrong version of media captions (43dc2e7)
  • remounting default layout breaks (afcac0d)
  • prefer component name when logging (5e5d698)

Player (React)

React

  • use vidstack pkg source code when building (9131ef0)

1.1.8-next (2023-10-06)

🐛 Bug Fixes

Player

  • check stream type again on can play event (78e126e)
  • fill all slider chapters when live edge (d8283a6)

Player (React)

  • clean up ref instance types (6890b58)

1.1.7-next (2023-10-04)

🐛 Bug Fixes

Player (React)

  • react import missing on audio layout (6e003a6)

1.1.5-next (2023-10-03)

🐛 Bug Fixes

Player

  • align video to center of provider container (67fadf6)
  • hide tooltips on mobile (e635ad0)
  • show default start duration on mobile only when available (1d3427d)
  • show buffering in default layout when stream type unknown (cfd4670)
  • use dvh over vh for menus (aebf75e)
  • media remote hook not working and activate dev logging (84bfe8a)

1.1.4-next (2023-10-02)

🐛 Bug Fixes

Player

  • remove filling slider end gap for now (029037b)

1.1.3-next (2023-10-02)

🐛 Bug Fixes

Player

  • account for rounding filling slider chapter end gap (8faf9fd)

1.1.2-next (2023-10-02)

🐛 Bug Fixes

Player

  • unsupported styles in captions file (475c089)
  • fill start/end chapter gaps correctly (9948109)
  • aspect ratio breaks on safari (611a418)
  • incorrect live stream detection on safari (392ec6e)
  • default audio layout menus not offset correctly (1e212b8)
  • slider chapters are being built multiple times on init (93f27a2)
  • useMediaRemote throws on init (57c8d07)

1.1.0-next (2023-10-01)

✨ Features

Player

  • add live stream support to default layout (622d812)

🐛 Bug Fixes

Player

  • do not show volume slider when play button is interacted with (757841d)

1.0.5-next (2023-10-01)

🐛 Bug Fixes

Player

  • view type not set when initial src is hls (a16e644)
  • log warning when autoplay fails first time (666103b)

1.0.4-next (2023-09-30)

🐛 Bug Fixes

Player (React)

  • initialize sources correctly during ssr (ee688f8)

1.0.3-next (2023-09-30)

✨ Features

React

  • add rsc support and split up default ui audio/video (4e390ac)

🐛 Bug Fixes

Player

  • include elements.d.ts in package files (e88f816)
  • add hydration issue warning when rendering default layout (7c902a4)
  • initialize playsinline correctly (a73b537)

Player (React)

  • dispatch on latest callback prop (3c8d196)
  • volume slider not showing (ad1481f)

React

  • small layout tweaks and fixes (716e22c)