({
appTheme,
chartPreset,
currentPageId,
currentStoryId,
onSelectAppDemo,
onSelectChartPreset,
onSelectPage,
onSelectRendererMode,
onSelectThemeMode,
onToggleTouchTracing,
pages,
presetOptions,
rendererMode,
themeMode,
touchTracingEnabled,
}: {
appTheme: ShowcaseMenuTheme;
chartPreset: string;
currentPageId: string;
currentStoryId?: string;
onSelectAppDemo: (page: ShowcasePage, storyId: string) => void;
onSelectChartPreset: (preset: string) => void;
onSelectPage: (page: ShowcasePage) => void;
onSelectRendererMode: (mode: ShowcaseRendererMode) => void;
onSelectThemeMode: (mode: "dark" | "light") => void;
onToggleTouchTracing: (enabled: boolean) => void;
pages: ShowcasePage[];
presetOptions: Array<ShowcaseMenuOption<string>>;
rendererMode: ShowcaseRendererMode;
themeMode: "dark" | "light";
touchTracingEnabled: boolean;
})
| 56 | }; |
| 57 | |
| 58 | export const ShowcaseMenu = ({ |
| 59 | appTheme, |
| 60 | chartPreset, |
| 61 | currentPageId, |
| 62 | currentStoryId, |
| 63 | onSelectAppDemo, |
| 64 | onSelectChartPreset, |
| 65 | onSelectPage, |
| 66 | onSelectRendererMode, |
| 67 | onSelectThemeMode, |
| 68 | onToggleTouchTracing, |
| 69 | pages, |
| 70 | presetOptions, |
| 71 | rendererMode, |
| 72 | themeMode, |
| 73 | touchTracingEnabled, |
| 74 | }: { |
| 75 | appTheme: ShowcaseMenuTheme; |
| 76 | chartPreset: string; |
| 77 | currentPageId: string; |
| 78 | currentStoryId?: string; |
| 79 | onSelectAppDemo: (page: ShowcasePage, storyId: string) => void; |
| 80 | onSelectChartPreset: (preset: string) => void; |
| 81 | onSelectPage: (page: ShowcasePage) => void; |
| 82 | onSelectRendererMode: (mode: ShowcaseRendererMode) => void; |
| 83 | onSelectThemeMode: (mode: "dark" | "light") => void; |
| 84 | onToggleTouchTracing: (enabled: boolean) => void; |
| 85 | pages: ShowcasePage[]; |
| 86 | presetOptions: Array<ShowcaseMenuOption<string>>; |
| 87 | rendererMode: ShowcaseRendererMode; |
| 88 | themeMode: "dark" | "light"; |
| 89 | touchTracingEnabled: boolean; |
| 90 | }) => { |
| 91 | const [isDrawerOpen, setIsDrawerOpen] = useState(false); |
| 92 | const [activeTab, setActiveTab] = useState<MenuTab>( |
| 93 | currentPageId === appDemoPageId ? "app-demos" : "chart-types", |
| 94 | ); |
| 95 | const edgePull = useRef(new Animated.Value(0)).current; |
| 96 | const drawerProgress = useRef(new Animated.Value(0)).current; |
| 97 | const selectedControlTextColor = appTheme.background; |
| 98 | const selectedPage = pages.find((page) => page.id === currentPageId); |
| 99 | const appDemoRows = useMemo<AppDemoRow[]>( |
| 100 | () => |
| 101 | pages |
| 102 | .filter((page) => page.id === appDemoPageId) |
| 103 | .flatMap((page) => { |
| 104 | if (page.storyGroups?.length) { |
| 105 | return page.storyGroups.flatMap((group) => { |
| 106 | const storyId = group.storyIds[0]; |
| 107 | |
| 108 | return storyId |
| 109 | ? [ |
| 110 | { |
| 111 | description: group.description ?? page.description, |
| 112 | id: `${page.id}:${group.id}`, |
| 113 | page, |
| 114 | storyId, |
| 115 | title: group.title, |
nothing calls this directly
no outgoing calls
no test coverage detected