Files
suaveplan/packages/ui/react/react-audio-stream/src/components/stream-permissions-banner/stream-permissions-banner.stories.tsx
2026-05-27 23:47:53 +01:00

42 lines
1.3 KiB
TypeScript

import type { ReactNode } from "react";
import { StreamProvider } from "../../provider/stream-provider.js";
import type { MediaPermissionState } from "../../session/session-shape/session-shape.types.js";
import { FakeSession } from "../../test-utils.js";
import { StreamPermissionsBanner } from "./stream-permissions-banner.js";
function wrap(
permission: MediaPermissionState,
children: ReactNode
): ReactNode {
return (
<StreamProvider sessionFactory={() => new FakeSession({ permission })}>
{children}
</StreamProvider>
);
}
export default {
title: "react-audio-stream/StreamPermissionsBanner",
component: StreamPermissionsBanner,
};
export const Prompt = (): ReactNode =>
wrap("prompt", <StreamPermissionsBanner />);
export const Denied = (): ReactNode =>
wrap("denied", <StreamPermissionsBanner />);
export const Unknown = (): ReactNode =>
wrap("unknown", <StreamPermissionsBanner />);
export const Granted = (): ReactNode =>
wrap("granted", <StreamPermissionsBanner />);
export const Playground = (): ReactNode =>
wrap(
"prompt",
<StreamPermissionsBanner
requestLabel="Allow microphone"
messages={{
prompt: "We need your mic to stream live audio to other participants.",
}}
/>
);