/* Copyright 2026 Element Creations Ltd. SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE in the repository root for full details. */ import { fn } from "storybook/test"; import { BehaviorSubject } from "rxjs"; import { type ReactNode } from "react"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { InCallFooter, type InCallFooterProps } from "./InCallFooter"; import inCallViewStyles from "../room/InCallView.module.css"; function InCallFooterWrapper(props: InCallFooterProps): ReactNode { return (
); } const meta = { component: InCallFooterWrapper, } satisfies Meta; export default meta; type Story = StoryObj; export const Default: Story = { args: { asOverlay: false, showFooter: true, showControls: true, hideSettingsButton: false, hideLogo: true, asPip: false, gridMode: "grid", audioEnabled: true, videoEnabled: true, sharingScreen: false, supportsReactions: false, audioOutputSwitcher: null, debugTileLayout: false, tileStoreGeneration: 0, reactionData: { handsRaised$: new BehaviorSubject({}), reactions$: new BehaviorSubject({}), }, reactionIdentifier: "@user:example.com:DEVICE", setGridMode: fn(), openSettings: fn(), toggleAudio: fn(), toggleVideo: fn(), toggleScreenSharing: fn(), hangup: fn(), }, parameters: { layout: "fullscreen", }, argTypes: { gridMode: { control: "radio", options: ["grid", "spotlight"] }, audioOutputSwitcher: { control: "radio", options: ["noOutputSwitcher", "earpiece", "speaker"], mapping: { noOutputSwitcher: null, // This is inverersed (speaker<->earpice) because the switcher object stores the target output, not the current one. earpiece: { targetOutput: "speaker", switch: fn() }, speaker: { targetOutput: "earpiece", switch: fn() }, }, }, }, }; export const WithLogo: Story = { ...Default, args: { ...Default.args, hideLogo: false, }, }; export const WithAudioOutput: Story = { ...Default, args: { ...Default.args, audioOutputSwitcher: { targetOutput: "speaker", switch: fn() }, }, }; export const Pip: Story = { ...Default, args: { ...Default.args, asPip: true, }, }; export const NoControlsWithLogo: Story = { ...Default, args: { ...Default.args, showControls: false, hideLogo: false, }, }; export const DebugData: Story = { ...Default, args: { ...Default.args, debugTileLayout: true, tileStoreGeneration: 74, audioOutputSwitcher: null, }, }; export const MobileLayout: Story = { ...Default, args: { ...Default.args, hideLogo: true, debugTileLayout: true, tileStoreGeneration: 74, audioOutputSwitcher: null, }, globals: { viewport: { value: "mobile2", isRotated: false }, }, parameters: { ...Default.parameters, }, };