import React, { MouseEventHandler, useState } from 'react'; import { Box, config, Icon, Icons, Menu, PopOut, RectCords, Text } from 'folds'; import FocusTrap from 'focus-trap-react'; import { useNavigate } from 'react-router-dom'; import { SidebarAvatar, SidebarItem, SidebarItemTooltip } from '../../../components/sidebar'; import { stopPropagation } from '../../../utils/keyboard'; import { SequenceCard } from '../../../components/sequence-card'; import { SettingTile } from '../../../components/setting-tile'; import { ContainerColor } from '../../../styles/ContainerColor.css'; import { encodeSearchParamValueArray, getCreatePath, getSpacePath, withSearchParam, } from '../../pathUtils'; import { useCreateSelected } from '../../../hooks/router/useCreateSelected'; import { JoinAddressPrompt } from '../../../components/join-address-prompt'; import { _RoomSearchParams } from '../../paths'; export function CreateTab() { const createSelected = useCreateSelected(); const navigate = useNavigate(); const [menuCords, setMenuCords] = useState(); const [joinAddress, setJoinAddress] = useState(false); const handleMenu: MouseEventHandler = (evt) => { setMenuCords(menuCords ? undefined : evt.currentTarget.getBoundingClientRect()); }; const handleCreateSpace = () => { navigate(getCreatePath()); setMenuCords(undefined); }; const handleJoinWithAddress = () => { setJoinAddress(true); setMenuCords(undefined); }; return ( {(triggerRef) => ( setMenuCords(undefined), clickOutsideDeactivates: true, isKeyForward: (evt: KeyboardEvent) => evt.key === 'ArrowDown' || evt.key === 'ArrowRight', isKeyBackward: (evt: KeyboardEvent) => evt.key === 'ArrowUp' || evt.key === 'ArrowLeft', escapeDeactivates: stopPropagation, }} > }> Create Space Build a space for your community. }> Join with Address Become a part of existing community. } > {joinAddress && ( setJoinAddress(false)} onOpen={(roomIdOrAlias, viaServers) => { setJoinAddress(false); const path = getSpacePath(roomIdOrAlias); navigate( viaServers ? withSearchParam<_RoomSearchParams>(path, { viaServers: encodeSearchParamValueArray(viaServers), }) : path ); }} /> )} )} ); }