Files
owncast/web/components/common/UserDropdown/UserDropdown.stories.tsx
T
CopilotGitHubgabekcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Gabe Kangas
5950db7abd Display keyboard shortcut in UserDropdown chat menu items (#4414)
* Initial plan

* Add keyboard shortcut display to UserDropdown chat menu items

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* Successfully implement keyboard shortcut display in UserDropdown chat menu

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* Additional instructions

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: gabek <414923+gabek@users.noreply.github.com>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2025-07-04 14:19:17 -07:00

61 lines
1.4 KiB
TypeScript

import { useEffect } from 'react';
import { StoryFn, Meta } from '@storybook/react';
import { RecoilRoot, useSetRecoilState } from 'recoil';
import { UserDropdown } from './UserDropdown';
import { CurrentUser } from '../../../interfaces/current-user';
import {
currentUserAtom,
appStateAtom,
chatStateAtom,
ChatState,
} from '../../stores/ClientConfigStore';
const meta = {
title: 'owncast/Components/User settings menu',
component: UserDropdown,
parameters: {},
} satisfies Meta<typeof UserDropdown>;
export default meta;
// This component uses Recoil internally so wrap it in a RecoilRoot.
const Example = args => {
const setCurrentUser = useSetRecoilState<CurrentUser>(currentUserAtom);
const setAppState = useSetRecoilState(appStateAtom);
const setChatState = useSetRecoilState(chatStateAtom);
useEffect(() => {
setCurrentUser({
id: '1',
displayName: 'Test User',
displayColor: 3,
isModerator: false,
});
setAppState({
chatAvailable: true,
chatLoading: false,
videoAvailable: true,
appLoading: false,
});
setChatState(ChatState.VISIBLE);
}, []);
return <UserDropdown id="user-menu" {...args} />;
};
const Template: StoryFn<typeof UserDropdown> = args => (
<RecoilRoot>
<Example {...args} />
</RecoilRoot>
);
export const ChatEnabled = {
render: Template,
args: {
username: 'test-user',
},
};