Docs Components Assistant

VoiceOrb

React example follows below.
ts
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceOrb } from "@grassroot/ui-react/assistant";
const session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
export default function VoiceOrbDemo() {
return <VoiceOrb session={session} variant="default" size="md" />;
}
ts
<script setup lang="ts">
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceOrb } from "@grassroot/ui-vue/assistant";
const session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
</script>
<template>
<VoiceOrb :session="session" variant="default" size="md" />
</template>
ts
import "./ensure-compiler";
import { ChangeDetectionStrategy, Component } from "@angular/core";
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { GrassrootVoiceOrb } from "@grassroot/ui-angular/assistant";
@Component({
selector: "app-voice-orb-demo",
standalone: true,
imports: [GrassrootVoiceOrb],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `<grassroot-voice-orb [session]="session" variant="default" size="md" />`,
})
export class VoiceOrbDemoComponent {
protected readonly session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
}
export default VoiceOrbDemoComponent;
ts
<script lang="ts">
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceOrb } from "@grassroot/ui-svelte/assistant";
const session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
</script>
<VoiceOrb {session} variant="default" size="md" />
ts
/** @jsxImportSource solid-js */
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceOrb } from "@grassroot/ui-solid/assistant";
const session = createVoiceSession({
setup: ({ publishTranscript, publishVoiceVolume }) => {
publishTranscript({ role: "user", text: "Show me the theme tokens.", isFinal: true });
publishVoiceVolume(0.4);
},
});
export default function VoiceOrbDemo() {
return <VoiceOrb session={session} variant="default" size="md" />;
}

Installation

API Reference

Import

import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceOrb } from "@grassroot/ui-react/assistant";

Props

Prop
Type
Default
Requirement
session
{ readonly start: () => Promise<void>; readonly connect: () => Promise<void>; readonly disconnect: () => Promise<void>; readonly end: (reason: import("@grassroot/ui-machines/voice-session").VoiceSessionEndReason, error?: unknown) => void; readonly setMuted: (muted: boolean) => void; readonly setMode: (mode: import("@grassroot/ui-machines/voice-session").VoiceSessionMode) => void; readonly getState: () => import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot; readonly subscribe: (listener: (snapshot: import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot, previous: import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot) => void) => () => void; readonly subscribeTranscript: (listener: (item: import("@grassroot/assistant/adapters/voice").VoiceTranscriptItem) => void) => () => void; readonly subscribeVoiceVolume: (listener: (volume: number) => void) => () => void; readonly publishTranscript: (item: import("@grassroot/assistant/adapters/voice").VoiceTranscriptItem) => void; readonly publishVoiceVolume: (volume: number) => void; }
required
label
string | undefined
optional
size
"sm" | "md" | "lg" | undefined
optional
state
VoiceOrbState | undefined
optional
variant
VoiceOrbVariant | undefined
optional
Prop
session
Type
{ readonly start: () => Promise<void>; readonly connect: () => Promise<void>; readonly disconnect: () => Promise<void>; readonly end: (reason: import("@grassroot/ui-machines/voice-session").VoiceSessionEndReason, error?: unknown) => void; readonly setMuted: (muted: boolean) => void; readonly setMode: (mode: import("@grassroot/ui-machines/voice-session").VoiceSessionMode) => void; readonly getState: () => import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot; readonly subscribe: (listener: (snapshot: import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot, previous: import("@grassroot/ui-machines/voice-session").VoiceSessionSnapshot) => void) => () => void; readonly subscribeTranscript: (listener: (item: import("@grassroot/assistant/adapters/voice").VoiceTranscriptItem) => void) => () => void; readonly subscribeVoiceVolume: (listener: (volume: number) => void) => () => void; readonly publishTranscript: (item: import("@grassroot/assistant/adapters/voice").VoiceTranscriptItem) => void; readonly publishVoiceVolume: (volume: number) => void; }
Default
Requirement
required
Prop
label
Type
string | undefined
Default
Requirement
optional
Prop
size
Type
"sm" | "md" | "lg" | undefined
Default
Requirement
optional
Prop
state
Type
VoiceOrbState | undefined
Default
Requirement
optional
Prop
variant
Type
VoiceOrbVariant | undefined
Default
Requirement
optional

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.

Import

import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceOrb } from "@grassroot/ui-vue/assistant";

Props

Prop
Type
Default
Requirement
session
VoiceSession
required
label
string
"Voice activity"
optional
size
"sm" | "md" | "lg"
"md"
optional
state
VoiceOrbState
optional
variant
VoiceOrbVariant
"default"
optional
Prop
session
Type
VoiceSession
Default
Requirement
required
Prop
label
Type
string
Default
"Voice activity"
Requirement
optional
Prop
size
Type
"sm" | "md" | "lg"
Default
"md"
Requirement
optional
Prop
state
Type
VoiceOrbState
Default
Requirement
optional
Prop
variant
Type
VoiceOrbVariant
Default
"default"
Requirement
optional

Import

import "./ensure-compiler";
import { ChangeDetectionStrategy, Component } from "@angular/core";
import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { GrassrootVoiceOrb } from "@grassroot/ui-angular/assistant";

Props

Prop
Type
Default
Requirement
session
VoiceSession
required
label
string
"Voice activity"
optional
size
"sm" | "md" | "lg"
"md"
optional
state
VoiceSessionValue | "idle"
optional
variant
"default" | "compact" | "minimal"
"default"
optional
Prop
session
Type
VoiceSession
Default
Requirement
required
Prop
label
Type
string
Default
"Voice activity"
Requirement
optional
Prop
size
Type
"sm" | "md" | "lg"
Default
"md"
Requirement
optional
Prop
state
Type
VoiceSessionValue | "idle"
Default
Requirement
optional
Prop
variant
Type
"default" | "compact" | "minimal"
Default
"default"
Requirement
optional

Import

import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceOrb } from "@grassroot/ui-svelte/assistant";

Props

Prop
Type
Default
Requirement
session
VoiceSession
required
label
string
"Voice activity"
optional
size
"sm" | "md" | "lg"
"md"
optional
state
VoiceSessionValue | "idle"
optional
variant
"default" | "compact" | "minimal"
"default"
optional
Prop
session
Type
VoiceSession
Default
Requirement
required
Prop
label
Type
string
Default
"Voice activity"
Requirement
optional
Prop
size
Type
"sm" | "md" | "lg"
Default
"md"
Requirement
optional
Prop
state
Type
VoiceSessionValue | "idle"
Default
Requirement
optional
Prop
variant
Type
"default" | "compact" | "minimal"
Default
"default"
Requirement
optional

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.

Import

import { createVoiceSession } from "@grassroot/assistant/adapters/voice";
import { VoiceOrb } from "@grassroot/ui-solid/assistant";

Props

Prop
Type
Default
Requirement
session
VoiceSession
required
label
string
optional
size
"sm" | "md" | "lg"
optional
state
VoiceOrbState
optional
variant
VoiceOrbVariant
optional
Prop
session
Type
VoiceSession
Default
Requirement
required
Prop
label
Type
string
Default
Requirement
optional
Prop
size
Type
"sm" | "md" | "lg"
Default
Requirement
optional
Prop
state
Type
VoiceOrbState
Default
Requirement
optional
Prop
variant
Type
VoiceOrbVariant
Default
Requirement
optional

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.