diff options
Diffstat (limited to 'packages/excalidraw/components/footer/Footer.tsx')
| -rw-r--r-- | packages/excalidraw/components/footer/Footer.tsx | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/packages/excalidraw/components/footer/Footer.tsx b/packages/excalidraw/components/footer/Footer.tsx new file mode 100644 index 0000000..ccbe9ea --- /dev/null +++ b/packages/excalidraw/components/footer/Footer.tsx @@ -0,0 +1,95 @@ +import clsx from "clsx"; +import { actionShortcuts } from "../../actions"; +import type { ActionManager } from "../../actions/manager"; +import { + ExitZenModeAction, + FinalizeAction, + UndoRedoActions, + ZoomActions, +} from "../Actions"; +import { useDevice } from "../App"; +import { useTunnels } from "../../context/tunnels"; +import { HelpButton } from "../HelpButton"; +import { Section } from "../Section"; +import Stack from "../Stack"; +import type { UIAppState } from "../../types"; + +const Footer = ({ + appState, + actionManager, + showExitZenModeBtn, + renderWelcomeScreen, +}: { + appState: UIAppState; + actionManager: ActionManager; + showExitZenModeBtn: boolean; + renderWelcomeScreen: boolean; +}) => { + const { FooterCenterTunnel, WelcomeScreenHelpHintTunnel } = useTunnels(); + + const device = useDevice(); + const showFinalize = + !appState.viewModeEnabled && appState.multiElement && device.isTouchScreen; + + return ( + <footer + role="contentinfo" + className="layer-ui__wrapper__footer App-menu App-menu_bottom" + > + <div + className={clsx("layer-ui__wrapper__footer-left zen-mode-transition", { + "layer-ui__wrapper__footer-left--transition-left": + appState.zenModeEnabled, + })} + > + <Stack.Col gap={2}> + <Section heading="canvasActions"> + <ZoomActions + renderAction={actionManager.renderAction} + zoom={appState.zoom} + /> + + {!appState.viewModeEnabled && ( + <UndoRedoActions + renderAction={actionManager.renderAction} + className={clsx("zen-mode-transition", { + "layer-ui__wrapper__footer-left--transition-bottom": + appState.zenModeEnabled, + })} + /> + )} + {showFinalize && ( + <FinalizeAction + renderAction={actionManager.renderAction} + className={clsx("zen-mode-transition", { + "layer-ui__wrapper__footer-left--transition-left": + appState.zenModeEnabled, + })} + /> + )} + </Section> + </Stack.Col> + </div> + <FooterCenterTunnel.Out /> + <div + className={clsx("layer-ui__wrapper__footer-right zen-mode-transition", { + "transition-right": appState.zenModeEnabled, + })} + > + <div style={{ position: "relative" }}> + {renderWelcomeScreen && <WelcomeScreenHelpHintTunnel.Out />} + <HelpButton + onClick={() => actionManager.executeAction(actionShortcuts)} + /> + </div> + </div> + <ExitZenModeAction + actionManager={actionManager} + showExitZenModeBtn={showExitZenModeBtn} + /> + </footer> + ); +}; + +export default Footer; +Footer.displayName = "Footer"; |
