Call
Everything a video call needs, as six parts you add one at a time: the card that rings, the lobby, the stage, the bar under it, the people in it and the invite.
Incoming#
The card that rings. A halo breathes behind the caller and the accept glyph rings every couple of seconds, the one place in a call where motion asks for attention. Decline is the handset turned down, the same glyph as leaving a call.
Installation#
Usage#
The preview is yours to explore. Its code comes with a Pro license, paid once and used in every project.
Have a license? Unlock it here
Anatomy#
import {
CallIncoming,
CallIncomingAccept,
CallIncomingActions,
CallIncomingAvatar,
CallIncomingContent,
CallIncomingDecline,
CallIncomingDescription,
CallIncomingTitle,
} from "@/components/ui/call-incoming"
<CallIncoming>
<CallIncomingAvatar />
<CallIncomingContent>
<CallIncomingTitle />
<CallIncomingDescription />
</CallIncomingContent>
<CallIncomingActions>
<CallIncomingDecline />
<CallIncomingAccept />
</CallIncomingActions>
</CallIncoming>Audio and missed#
Without video the accept button draws a handset. A missed call keeps the card but sets ringing={false}: the halo and the ring stop, and a single call-back button is enough.
API reference#
CallIncoming
The card, a <section> named by labels.incoming and announced politely. It slides in from above. Position it yourself (a corner, a toast region). Forwards every section prop; className is accepted by every part and merged last.
| Prop | Type | Default | Description |
|---|---|---|---|
| ringing | boolean | true | Runs the halo behind the avatar and the accept glyph's ring. Turn it off for a missed call. |
| labels | Partial<Labels["call"]> | - | Overrides the words the card says itself. Falls back to the nearest LabelsProvider, then English. |
| Data attribute | Description |
|---|---|
| data-ringing | Present while ringing. |
CallIncomingAvatar
A Koala Avatar, 40px by default, with a soft halo pulsing behind it while ringing. Takes every Avatar prop.
CallIncomingContent
The text column, a <div>.
CallIncomingTitle
Who is calling, a <p>. Ends in an ellipsis.
CallIncomingDescription
What kind of call, a <p>: audio or video, the meeting's name, when it was missed.
CallIncomingActions
The buttons, a <div>.
CallIncomingDecline
An icon-only destructive Button with the handset turned down. Takes every Button prop but variant and iconOnly.
| Prop | Type | Default | Description |
|---|---|---|---|
| label | string | labels.decline | The accessible name and tooltip. |
CallIncomingAccept
An icon-only primary Button. Its glyph rings while the card is ringing. Takes every Button prop but variant and iconOnly.
| Prop | Type | Default | Description |
|---|---|---|---|
| video | boolean | false | Draws a camera instead of a handset. |
| label | string | labels.accept | The accessible name and tooltip. |
callIncomingVariants
The tv recipe behind every part.
Lobby#
The moment before a call, where people check how they look and sound. The preview is the same tile they will appear in once inside, the microphone level moves as they talk, and who is already there sits beside Join.
Design review
Check how you look and sound before you go in.
Liam and 3 others are in
Installation#
Usage#
The preview is yours to explore. Its code comes with a Pro license, paid once and used in every project.
Have a license? Unlock it here
Anatomy#
import {
CallLobby,
CallLobbyActions,
CallLobbyContent,
CallLobbyDescription,
CallLobbyDevices,
CallLobbyHeader,
CallLobbyLevel,
CallLobbyPreview,
CallLobbyPreviewControls,
CallLobbyTitle,
} from "@/components/ui/call-lobby"
<CallLobby>
<CallLobbyPreview>
<CallTile />
<CallLobbyPreviewControls />
</CallLobbyPreview>
<CallLobbyContent>
<CallLobbyHeader>
<CallLobbyTitle />
<CallLobbyDescription />
</CallLobbyHeader>
<CallLobbyDevices>
<CallLobbyLevel />
</CallLobbyDevices>
<CallLobbyActions />
</CallLobbyContent>
</CallLobby>Level#
CallLobbyLevel lights segments in ink as the microphone picks up sound, so a person can see it working before anyone hears them. It reads a level from 0 to 1 and eases each segment on and off.
API reference#
CallLobby
The layout, a <div>: the preview beside the content from md, stacked below it. Forwards every div prop; className is accepted by every part and merged last.
CallLobbyPreview
The preview's frame, a <div>. Put a CallTile inside: it works outside a stage.
CallLobbyPreviewControls
A slot centred along the preview's bottom edge, for a small CallControls.
CallLobbyContent
The column beside the preview, a <div>.
CallLobbyHeader
Groups the title and the description.
CallLobbyTitle
The call's name, an <h2> in the heading face.
CallLobbyDescription
A line of reading copy, a <p>.
CallLobbyDevices
The device pickers, a <div>. Fill it with Koala Field, FieldLabel and Select.
CallLobbyLevel
The microphone's level, a segmented role="meter".
| Prop | Type | Default | Description |
|---|---|---|---|
| level* | number | - | From 0 to 1. Feed it from an AnalyserNode a few times a second. |
| segments | number | 16 | How many segments make the bar. |
| label | string | labels.level | The meter's accessible name. |
| Data attribute | Description |
|---|---|
| data-lit | On each lit segment. |
CallLobbyActions
Join and whatever goes beside it, a <div> that wraps.
callLobbyVariants
The tv recipe behind every part.
Stage#
The video grid of a call, the room at the top of this page. Tiles stay the same element as the layout changes, so a pinned tile grows into the stage instead of being swapped for a bigger copy. Speaking, muted, hand raised, poor connection, camera off and screen share are parts you drop in.
Installation#
Usage#
The preview is yours to explore. Its code comes with a Pro license, paid once and used in every project.
Have a license? Unlock it here
Anatomy#
import {
CallStage,
CallStageReactions,
CallTile,
CallTileActions,
CallTileAvatar,
CallTileHand,
CallTileLevel,
CallTileMedia,
CallTileMuted,
CallTileName,
CallTilePin,
CallTileSignal,
} from "@/components/ui/call-stage"
<CallStage>
<CallTile>
<CallTileMedia />
<CallTileAvatar />
<CallTileHand />
<CallTileActions>
<CallTilePin />
</CallTileActions>
<CallTileName>
<CallTileMuted />
<CallTileLevel />
<CallTileSignal />
</CallTileName>
</CallTile>
<CallStageReactions />
</CallStage>Layouts#
gallery gives every tile the same size and centres a short last row, so three people read as two and one, not as a ragged grid. spotlight hands the width to one tile and lines the others up below it. Pin a tile, follow the active speaker or show a screen share by pointing spotlight at a tile's value. Every tile keeps its element through the change and travels from where it was to where it lands, on the settle curve a container uses, so the eye can follow the one that grew.
Pin several#
Pass an array to spotlight and the pinned tiles share the top of the stage as their own grid, in the order they were pinned: two side by side, three in a row, four as two by two. Everyone else waits in the strip below, and pinning or unpinning moves each tile from where it was instead of rebuilding the grid.
Tile states#
Each state is a part, so a tile only shows what is true. speaking rings the tile in green and runs the level bars; a muted microphone takes the bars' place. With the camera off, CallTileAvatar takes the middle and its halo grows while the person talks. A raised hand carries its place in the queue, and a screen share (kind="screen") is fitted on black instead of cropped.
Connection#
CallTileSignal has three levels. Most calls only render it when the line is fair or poor, so a healthy tile stays quiet; the colour is the only hue in the chip, and the glyph is named for screen readers.
Reactions#
CallStageReactions floats each reaction up from the bottom of the stage with the sender's name, then hands it back through onReactionEnd. It is the one playful moment of the call, so it stays short and never covers a face for long. Under reduced motion the reaction fades in place.
Minimized#
A call that keeps going while the person works elsewhere is a CallTile inside a Floating Window, with a small CallControls under it. Drag it by its bar, resize it from the corner, fold it to its title.
API reference#
CallStage
The grid, a <div role="group">. Lays its CallTile children out and morphs them when the layout or the spotlight changes. Forwards every div prop; className is accepted by every part and merged last.
| Prop | Type | Default | Description |
|---|---|---|---|
| layout | "gallery" | "spotlight" | "gallery" | gallery gives every tile the same size, centring a short last row. spotlight gives the pinned tiles the top of the stage and lines the rest up below them. |
| spotlight | string | string[] | - | The value of the tile that takes the stage (a pinned tile, the active speaker or a screen share), or several, in the order they were pinned. Without it, spotlight falls back to gallery. |
| labels | Partial<Labels["call"]> | - | Overrides the words the part says itself. Falls back to the nearest LabelsProvider, then English. |
| Data attribute | Description |
|---|---|
| data-slot="call-stage" | On the root. |
| data-layout | The resolved layout, gallery or spotlight. |
| CSS variable | Description |
|---|---|
| --call-cols | Columns, set from the tile count and the layout: 1 to 4 in a gallery, 3 to 5 under a spotlight. |
| --call-pins | Columns of the pinned grid: 2 side by side, 3 in a row, 4 as two by two, 5 or 6 in rows of three. Narrow stages stack them. |
| --call-gap | The gap between tiles. 8px. |
CallTile
One participant or one shared screen, a 16:9 <div>. Works outside a stage too (a lobby preview, a floating window). Any subset of the parts below goes inside.
| Prop | Type | Default | Description |
|---|---|---|---|
| value | string | - | Identifies the tile: what spotlight points at, and what the stage follows when the tile moves. |
| speaking | boolean | false | Rings the tile in green, runs CallTileLevel and grows the avatar's halo. Adds labels.speaking for screen readers. |
| kind | "camera" | "screen" | "camera" | screen paints a black ground and fits the media inside it instead of cropping it. |
| labels | Partial<Labels["call"]> | - | Overrides the words the part says itself. Falls back to the nearest LabelsProvider, then English. |
| Data attribute | Description |
|---|---|
| data-value | The value. |
| data-kind | camera or screen. |
| data-speaking | Present while speaking. |
| data-spotlight | Present while this tile has the stage. |
CallTileMedia
The picture, a <div> behind everything else: put the <video> (or an <img>) inside. Its presence turns the name into a dark scrim chip.
CallTileAvatar
The camera-off face: a Koala Avatar centred and sized from the tile's height. Takes every Avatar prop.
| Prop | Type | Default | Description |
|---|---|---|---|
| size | "xs" | "sm" | "md" | "lg" | "xl" | "xl" | The base size; the tile's height scales it from there. |
CallTileName
The chip in the bottom-left corner, a <div>. Text children truncate; glyph parts (CallTileMuted, CallTileLevel, CallTileSignal) sit beside them.
CallTileLevel
Three bars that run while the tile is speaking, hidden from assistive tech. Takes no children.
CallTileMuted
The muted microphone, a <span role="img"> named by labels.muted.
CallTileSignal
The connection quality, a <span role="img"> named by labels.connection.
| Prop | Type | Default | Description |
|---|---|---|---|
| quality* | "good" | "fair" | "poor" | - | fair draws in the warning colour, poor in the destructive one. |
| Data attribute | Description |
|---|---|
| data-quality | The quality. |
CallTileHand
The raised hand chip in the top-left corner, a <span>. Children are its place in the queue. The hand waves once when it goes up.
CallTileActions
The top-right slot, a <div>. It rests hidden and slides in on hover or focus; it stays while a control in it is pressed, and always shows on touch.
CallTilePin
The pin toggle, an icon-only overlay Button with aria-pressed. Takes every Button prop.
| Prop | Type | Default | Description |
|---|---|---|---|
| pinned | boolean | false | Whether the tile is pinned. |
| onPinnedChange | (pinned: boolean) => void | - | Called with the next value. Point the stage's spotlight at the tile to pin it. |
CallStageReactions
Emoji that float up from the bottom of the stage, a layer hidden from assistive tech. Render it inside CallStage.
| Prop | Type | Default | Description |
|---|---|---|---|
| reactions* | readonly CallReaction[] | - | { id, emoji, name? }. Append to it as people react; each one floats for about two and a half seconds. |
| onReactionEnd | (id: string) => void | - | Called when a reaction has finished, to drop it from the array. |
callStageVariants
The tv recipe behind every part.
Controls#
The bar under a call. Each toggle keeps its glyph and draws the slash on when it turns off, a muted microphone turns into an ink chip you cannot miss, and every shortcut lives in its control's tooltip.
In the call
Installation#
Usage#
The preview is yours to explore. Its code comes with a Pro license, paid once and used in every project.
Have a license? Unlock it here
Anatomy#
import {
CallControl,
CallControls,
CallControlsGroup,
CallControlsSeparator,
CallDeviceMenu,
CallLeave,
CallReactionPicker,
CallToggle,
} from "@/components/ui/call-controls"
<CallControls>
<CallControlsGroup>
<CallToggle />
<CallDeviceMenu />
</CallControlsGroup>
<CallControlsSeparator />
<CallReactionPicker />
<CallControl />
<CallLeave />
</CallControls>Toggles#
Four presets, each shown live and off. Microphone and camera are device toggles: off is the state to notice, so the control turns into an inverted ink chip and the glyph takes its slash. Screen and hand are feature toggles: on is the exception, so a faint chip sits under a filled glyph. No colour is spent on either; red is kept for leaving.
Variants#
floating is the raised capsule that sits over a stage. plain drops it, for a bar inside a window, a lobby or a page.
Sizes#
md for the call itself; sm for a minimized call or a lobby preview, where 16px glyphs sit better. Both keep a 40px hit area.
Leave#
The handset turned down, on a soft red, wider than its neighbours so it is never the control hit by mistake. Give it a visible label when leaving means more than hanging up, like ending the call for everyone.
API reference#
CallControls
The bar, a Radix Toolbar: arrow keys move between controls. It never wraps: on a narrow screen, hide the secondary controls (layout, invite) and keep them in More. Forwards every Toolbar prop; className is accepted by every part and merged last.
| Prop | Type | Default | Description |
|---|---|---|---|
| variant | "floating" | "plain" | "floating" | floating is a raised capsule for over a stage; plain drops the capsule for a bar that sits in a page or a window. |
| size | "sm" | "md" | "md" | md controls are 36px with 20px glyphs, a step above the Toolbar; sm are 32px with 16px glyphs, for a minimized call. Both keep a 40px hit area. |
| labels | Partial<Labels["call"]> | - | Overrides the words the bar says itself. Falls back to the nearest LabelsProvider, then English. |
| Data attribute | Description |
|---|---|
| data-slot="call-controls" | On the root. |
| data-variant | floating or plain. |
CallControlsGroup
A cluster of controls, a <div role="group">.
| Prop | Type | Default | Description |
|---|---|---|---|
| attached | boolean | false | Closes the gap, so a control and the CallDeviceMenu after it read as one piece. |
| Data attribute | Description |
|---|---|
| data-attached | Present while attached. |
CallControlsSeparator
A short vertical rule between clusters.
CallToggle
A control with two states and aria-pressed. Both glyphs stay mounted and cross-fade, so the slash draws onto the microphone instead of replacing it.
| Prop | Type | Default | Description |
|---|---|---|---|
| kind | "microphone" | "camera" | "screen" | "hand" | "custom" | "custom" | Presets the glyphs, the name, the tooltip words and the tone. |
| active | boolean | false | The thing is live: the microphone open, the camera on, the screen shared, the hand up. |
| onActiveChange | (active: boolean) => void | - | Called with the next value on press. |
| tone | "device" | "feature" | - | device (microphone, camera) turns the control into an inverted ink chip while it is off. feature (screen, hand) lays a faint chip under it while it is on. |
| icon | React.ReactNode | - | The glyph while active. Required for custom. |
| offIcon | React.ReactNode | - | The glyph while not active. Defaults to icon. |
| label | string | - | The accessible name. Stays the same in both states; aria-pressed tells which. |
| tooltip | React.ReactNode | false | - | The hover and focus hint. Defaults to the state's action (Mute, Unmute…); false drops it. Off on touch. |
| shortcut | string | - | Shown as a Kbd inside the tooltip, never on the bar. Wiring the key is yours. |
| tooltipPlacement | TooltipProps["placement"] | "top" | Where the tooltip opens. |
| Data attribute | Description |
|---|---|
| data-kind | The kind. |
| data-tone | device or feature. |
| data-active | true or false. |
CallControl
A one-shot control (More, Invite, Chat). Wrap it in a DropdownMenuTrigger or PopoverTrigger with asChild to open something.
| Prop | Type | Default | Description |
|---|---|---|---|
| label* | string | - | The accessible name and default tooltip. |
| tooltip | React.ReactNode | false | - | The hover and focus hint. Defaults to the state's action (Mute, Unmute…); false drops it. Off on touch. |
| shortcut | string | - | Shown as a Kbd inside the tooltip, never on the bar. Wiring the key is yours. |
| tooltipPlacement | TooltipProps["placement"] | "top" | Where the tooltip opens. |
CallDeviceMenu
The caret after a control that opens a device picker: a DropdownMenu that opens upward. Its children are the menu's contents, usually a labelled DropdownMenuRadioGroup per device.
| Prop | Type | Default | Description |
|---|---|---|---|
| label | string | labels.devices | The caret's accessible name and tooltip. |
| triggerClassName | string | - | Merged onto the caret; className and the other props go to the DropdownMenuContent. |
CallReactionPicker
A control that opens a row of emoji. It stays open, so several can be sent in a row.
| Prop | Type | Default | Description |
|---|---|---|---|
| reactions | readonly string[] | ["👍", "👏", "😂", "❤️", "🎉", "😮"] | The emoji offered. |
| onReact | (emoji: string) => void | - | Called with the picked emoji. Hand it to CallStageReactions. |
| label | string | labels.reactions | The accessible name and tooltip. |
CallLeave
Hang up: a soft red control with the handset turned down. Wider than the others so it is never hit by mistake.
| Prop | Type | Default | Description |
|---|---|---|---|
| children | React.ReactNode | - | A visible label (Leave). With one, the tooltip drops. |
| label | string | labels.leave | The accessible name while there is no visible label. |
| tooltip | React.ReactNode | false | - | The hover and focus hint. Defaults to the state's action (Mute, Unmute…); false drops it. Off on touch. |
| shortcut | string | - | Shown as a Kbd inside the tooltip, never on the bar. Wiring the key is yours. |
| tooltipPlacement | TooltipProps["placement"] | "top" | Where the tooltip opens. |
callControlsVariants
The tv recipe behind every part.
Participants#
Who is in the call and how they are doing: speaking, muted, hand up. A host's mute, pin and remove sit under each row and rise into the status's place on hover, so the list stays calm until someone reaches for it.
In the call 5
- AAna RomeroYou, host
- LLiam DixonEngineeringSpeaking
- MMaya ChenProduct
- MMarcus ReyesEngineering
- EEvelyn MolinaResearch
Installation#
Usage#
The preview is yours to explore. Its code comes with a Pro license, paid once and used in every project.
Have a license? Unlock it here
Anatomy#
import {
CallParticipant,
CallParticipantAction,
CallParticipantActions,
CallParticipantAvatar,
CallParticipantContent,
CallParticipantMeta,
CallParticipantName,
CallParticipants,
CallParticipantStatus,
} from "@/components/ui/call-participants"
<CallParticipants>
<CallParticipant>
<CallParticipantAvatar />
<CallParticipantContent>
<CallParticipantName />
<CallParticipantMeta />
</CallParticipantContent>
<CallParticipantStatus />
<CallParticipantActions>
<CallParticipantAction />
</CallParticipantActions>
</CallParticipant>
</CallParticipants>States#
A quiet row shows nothing at its end. speaking rings the avatar and runs three green bars, the only hue in the list; muted puts the slashed microphone in their place, and a raised hand sits before it in ink.
- TTariq OkaforIdle
- SSofia LaineSpeakingSpeaking
- JJonas BergMuted
- PPriya NairHand raised
API reference#
CallParticipants
The list, a <ul> named by labels.participants unless you name it. Forwards every ul prop; className is accepted by every part and merged last.
| Prop | Type | Default | Description |
|---|---|---|---|
| labels | Partial<Labels["call"]> | - | Overrides the words the list says itself. Falls back to the nearest LabelsProvider, then English. |
CallParticipant
A row, an <li> with a soft fill on hover and focus. Any subset of the parts below goes inside.
| Prop | Type | Default | Description |
|---|---|---|---|
| speaking | boolean | false | Rings the avatar in green, runs the level bars in CallParticipantStatus and adds labels.speaking for screen readers. |
| Data attribute | Description |
|---|---|
| data-speaking | Present while speaking. |
CallParticipantAvatar
A Koala Avatar, 32px by default. Takes every Avatar prop.
CallParticipantContent
The text column, a <div>.
CallParticipantName
The name, a <span>. Ends in an ellipsis.
CallParticipantMeta
The line under the name, a <span>: a role, You, Host.
CallParticipantStatus
The resting glyphs at the end of the row, a <div>. It rolls up and away when the row's actions arrive, and is hidden on touch, where the actions always show. Children go before the built-in glyphs.
| Prop | Type | Default | Description |
|---|---|---|---|
| muted | boolean | false | Shows the muted microphone, named by labels.muted. Otherwise the level bars run while the row is speaking. |
| handRaised | boolean | false | Shows the raised hand, named by labels.handRaised. |
CallParticipantActions
The row's controls, a <div> laid over the status. It rises into place on hover or focus within the row, so revealing it never moves anything.
CallParticipantAction
An icon-only Button (subtle, sm, 16px glyph) with its label as the tooltip. Takes every Button prop but variant, size and iconOnly.
| Prop | Type | Default | Description |
|---|---|---|---|
| label* | string | - | The accessible name and tooltip. Name the person: Mute Liam Dixon. |
| destructive | boolean | false | Uses the destructiveGhost look, for remove. |
callParticipantsVariants
The tv recipe behind every part.
Invite#
Bring someone into the call in the fewest steps: copy the link, type a name or email, or invite a suggested person with one press. The copy glyph turns into a check and an invite's label grows from Invite into Invited, so each action confirms itself in place.
Invite to the design review
Liam, Maya and 2 others are here
- TTariq Okafortariq@koalaui.com
- SSofia Lainesofia@koalaui.com
- PPriya Nairpriya@koalaui.com
Installation#
Usage#
The preview is yours to explore. Its code comes with a Pro license, paid once and used in every project.
Have a license? Unlock it here
Anatomy#
import {
CallInvite,
CallInviteForm,
CallInviteLink,
CallInvitePeople,
CallInvitePerson,
CallInvitePersonAction,
CallInvitePersonContent,
CallInvitePersonDetail,
CallInvitePersonName,
} from "@/components/ui/call-invite"
<CallInvite>
<CallInviteLink />
<CallInviteForm />
<CallInvitePeople>
<CallInvitePerson>
<CallInvitePersonContent>
<CallInvitePersonName />
<CallInvitePersonDetail />
</CallInvitePersonContent>
<CallInvitePersonAction />
</CallInvitePerson>
</CallInvitePeople>
</CallInvite>Link#
The field selects the whole link on focus. The copy button's glyph cross-fades to a check for a couple of seconds and back; the two mean different things, so they swap rather than morph.
Invited#
Before and after. invited steps the button back from outline to ghost and keeps it in place, so the row does not jump and the person can see who already has the invite.
- JJonas Bergjonas@koalaui.com
- PPriya Nairpriya@koalaui.com
API reference#
CallInvite
The panel, a <div> that stacks its parts. Put it in a Popover, a Dialog or a side panel. Forwards every div prop; className is accepted by every part and merged last.
| Prop | Type | Default | Description |
|---|---|---|---|
| labels | Partial<Labels["call"]> | - | Overrides the words the panel says itself. Falls back to the nearest LabelsProvider, then English. |
CallInviteLink
The call's link in a read-only Koala Input, with a copy button whose glyph turns into a check. A status region announces labels.linkCopied.
| Prop | Type | Default | Description |
|---|---|---|---|
| value* | string | - | The link. |
| onCopy | (value: string) => void | - | Called after the link was written to the clipboard. |
CallInviteForm
A <form> with a field and a primary Button. Submitting clears the field.
| Prop | Type | Default | Description |
|---|---|---|---|
| onInvite | (value: string) => void | - | Called with the trimmed name or email. |
| placeholder | string | labels.invitePlaceholder | The field's placeholder and accessible name. |
| submitLabel | React.ReactNode | labels.invite | The button's label. |
CallInvitePeople
A list of people to invite, a <ul>.
CallInvitePerson
A row, an <li>: an Avatar, CallInvitePersonContent and CallInvitePersonAction.
CallInvitePersonContent
The text column, a <div>.
CallInvitePersonName
The name, a <span>. Ends in an ellipsis.
CallInvitePersonDetail
The line under the name, a <span>: an email, a team.
CallInvitePersonAction
The row's Button, with aria-pressed. Its label morphs from Invite to Invited keeping the shared letters.
| Prop | Type | Default | Description |
|---|---|---|---|
| invited | boolean | false | The invite has gone out: the button steps back to ghost and stops calling onInvite. |
| onInvite | () => void | - | Called on press while not invited. |
| Data attribute | Description |
|---|---|
| data-invited | Present while invited. |
callInviteVariants
The tv recipe behind every part.