@hiyve/react-ui - UI components for Hiyve video conferencing
Remarks
This package contains all Hiyve UI component source code:
video-grid
video-tile
control-bar
device-selector
audio-monitor
participant-list
sidebar
waiting-room
join-token
Generic names that would conflict across packages have been prefixed
with the component name (e.g. defaultColors becomes
defaultControlBarColors and defaultSidebarColors).
@hiyve/react-ui
UI components for Hiyve video conferencing -- video grid, video tiles, control bar, device selector, audio monitor, participant list, sidebar, waiting room, and join token.
Room participant list with status indicators and owner controls
Sidebar
Component
Description
Sidebar
Collapsible tabbed sidebar for organizing content panels
Portal Layout
Component / Hook
Description
PortalLayout
Responsive app shell — collapsible sidebar on desktop, bottom nav plus "More" drawer on mobile. Router-agnostic via currentPath + onNavigate props. Requires a bounded-height parent: the layout fills it (height: 100%) and content scrolls inside the main area on every breakpoint, with the mobile bottom nav in-flow below the content (padded by env(safe-area-inset-bottom) for notched phones) — so full-height pages such as chat views can size with plain 100% heights and bottom-anchored content is never overlaid by the nav.
SidebarProvider / useSidebar
Provides and reads the sidebar collapsed/expanded state across the app
Waiting Room
Component
Description
WaitingRoomSetup
Toggle switch for hosts to enable/disable the waiting room
WaitingRoomAdmittance
Host controls for admitting or rejecting waiting participants
WaitingRoomGuest
Waiting screen shown to guests pending admission
WaitForHostScreen
Waiting screen shown when a guest joins before the host
Connecting Screen
Component
Description
ConnectingScreen
Centered spinner with contextual status message during room creation or joining
Join Form
Component
Description
JoinForm
Room creation and joining form with role selection, device preview, and optional waiting room toggle
Join Token
Component
Description
InviteLinkDialog
Dialog for creating and sharing invite links
JoinWithTokenForm
Form for joining a room via an invite link
General Purpose
Component
Description
UserAvatar
Avatar with initials fallback, deterministic background color, and optional online status badge
EmptyState
Centered placeholder with icon, heading, description, and optional action for empty lists or sections
StatCard
Metric display card with title, value, optional icon, and compact inline variant
UpdateBanner
App update notification banner with download progress and restart prompt. Pairs with an Electron auto-update bridge or any compatible UpdateInfo source
PhoneCameraDialog
Dialog that pairs a phone with the desktop app to add the phone camera as an additional video source. Displays a QR code, pairing status, and connection state
Hooks
Hook
Description
useDeviceManagement
Device enumeration, selection, and change detection
useMediaControls
Audio, speaker, and video toggle and screen share state
useRecordingFeatures
Recording, streaming, and intelligence mode state and actions
useSavedDevices
Persist and restore device selections across sessions
useAutoHide(options)
Auto-hide behavior with activity detection, animation styles, and pause/resume
useMuiThemedColors()
Derive themed color bundles for every Hiyve editor from the active MUI theme
useMuiThemedColors
Returns themed color bundles derived from the active MUI theme — one bundle per Hiyve editor (notes, whiteboard, assignments, clips, chat, polls, Q&A, alerts, sentiment, intelligence hub, participant list). Bundles update automatically when the user toggles light/dark mode or changes the theme's accent color.
The hook reads app-provided surface tokens from theme.palette.mupiCustom.* when present, otherwise derives sensible defaults from standard MUI tokens (background.paper, background.default, divider, etc.).
Manages auto-hide behavior based on user activity. After a configurable timeout of inactivity (mouse, touch, keyboard), the hook returns styles that animate the target element out of view. Supports nested pause/resume for menus and dropdowns.
To surface recording/streaming status in your own chrome instead of the
built-in spots, hide both indicators and read the state from useRecording() /
useStreaming():
// Hide the inline duration + active badges beside the recording button <ControlBarshowRecordingMenushowRecordingStatus={false}onLeave={handleLeave}/>
// Hide the "REC"/"LIVE" badge on the local video tile <VideoGridlocalVideoElementId="local-video"showRecordingIndicator={false}/>
Compact Control Bar (Small Screens)
Set variant="compact" for mobile or narrow layouts. The primary controls
(audio toggle, video toggle, hand raise, leave, and sidebar toggle) stay inline,
and every other enabled control (device settings, screen share, recording menu,
layout selector, output toggle, camera menu, and renderExtraControls output)
collapses into a single "More" button that opens a popover. Each control is
still gated by its own show* prop; the More button only appears when at least
one overflow control is enabled. Compact mode uses tighter spacing and adds
bottom padding that accounts for device safe areas (e.g. phone home indicators).
Prop
Type
Default
Description
variant
'full' | 'compact'
'full'
'full' renders every enabled control inline; 'compact' keeps primary controls inline and moves the rest into a "More" popover
return ( <> <WaitingRoomSetupenabled={waitingEnabled}onChange={setWaitingEnabled}/> <WaitingRoomAdmittance variant="popover" anchorEl={anchorEl} open={open} // Service bots (recording/streaming/transcription) skip the queue: // they're admitted automatically and hidden from the waiting list. autoAdmitSystemUsers /> </> ); }
System users are identified by a case-insensitive userId prefix match — the default list (DEFAULT_SYSTEM_USER_PREFIXES) covers recorder-/recorder_, rectrans-/rectrans_, streamer-/streamer_, and transcriber-/transcriber_ — or by the ghost-camera naming convention (a device a participant paired as a secondary camera via useRemoteCamera), which always counts as a system user. Override the prefixes via the systemUserPrefixes prop if your bots join with different ids, and use the exported isSystemWaitingUser(userId, prefixes?) to apply the same filtering to your own waiting-room UI (badges, notifications).
CameraMenu provides a dropdown for managing the primary camera and adding additional cameras. It can be rendered standalone for custom control bar layouts.
All components accept optional labels, icons, colors, and styles props for customization. Pass a partial object -- unspecified values use built-in defaults.
ControlBar exposes two slots for injecting your own controls — renderExtraControls
(in the main cluster, before the leave button) and renderSidebarAdjacentControls
(in the trailing group, immediately left of the sidebar toggle):
Save and restore device selections across sessions. The default storage key is available as DEFAULT_DEVICE_STORAGE_KEY if you need to coordinate with other storage logic.
@hiyve/react-ui - UI components for Hiyve video conferencing
Remarks
This package contains all Hiyve UI component source code:
Generic names that would conflict across packages have been prefixed with the component name (e.g.
defaultColorsbecomesdefaultControlBarColorsanddefaultSidebarColors).