import { ArrowTopRightIcon, CursorArrowIcon, ImageIcon, Pencil1Icon, Pencil2Icon, TextIcon, } from '@radix-ui/react-icons' import * as React from 'react' import { useIntl } from 'react-intl' import { Panel } from '~components/Primitives/Panel' import { ToolButtonWithTooltip } from '~components/Primitives/ToolButton' import { EraserIcon } from '~components/Primitives/icons' import { breakpoints } from '~components/breakpoints' import { useTldrawApp } from '~hooks' import { styled } from '~styles/stitches.config' import { TDShapeType, TDSnapshot } from '~types' import { ShapesMenu } from './ShapesMenu' const activeToolSelector = (s: TDSnapshot) => s.appState.activeTool const toolLockedSelector = (s: TDSnapshot) => s.appState.isToolLocked const dockPositionState = (s: TDSnapshot) => s.settings.dockPosition export const PrimaryTools = React.memo(function PrimaryTools() { const app = useTldrawApp() const intl = useIntl() const activeTool = app.useStore(activeToolSelector) const isToolLocked = app.useStore(toolLockedSelector) const dockPosition = app.useStore(dockPositionState) const selectSelectTool = React.useCallback(() => { app.selectTool('select') }, [app]) const selectEraseTool = React.useCallback(() => { app.selectTool('erase') }, [app]) const selectDrawTool = React.useCallback(() => { app.selectTool(TDShapeType.Draw) }, [app]) const selectArrowTool = React.useCallback(() => { app.selectTool(TDShapeType.Arrow) }, [app]) const selectTextTool = React.useCallback(() => { app.selectTool(TDShapeType.Text) }, [app]) const selectStickyTool = React.useCallback(() => { app.selectTool(TDShapeType.Sticky) }, [app]) const uploadMedias = React.useCallback(async () => { app.openAsset() }, [app]) const panelStyle = dockPosition === 'bottom' || dockPosition === 'top' ? 'row' : 'column' return ( ) }) const StyledPanel = styled(Panel, { variants: { bp: { mobile: { padding: '$0', borderRadius: '10px', }, small: { padding: '$2', }, }, }, })