1import ob from 'urbit-ob';
2import { Box, Icon, Text } from '@tlon/indigo-react';
3import { Ship } from '@urbit/roller-api';
4import Sigil from 'components/Sigil';
5import { useCallback, useRef, useState } from 'react';
6import useOnClickOutside from 'lib/useOnClickOutside';
8interface ResidentRowProps {
10 onKick: (point: Ship) => Promise<void>;
13export const ResidentRow = ({ point, onKick }: ResidentRowProps) => {
14 const [showDropdown, setShowDropdown] = useState<boolean>(false);
15 const dropdownRef = useRef<HTMLDivElement | null>(null);
17 const handleClickOutside = useCallback((event: MouseEvent | TouchEvent) => {
18 event.stopImmediatePropagation();
19 setShowDropdown(false);
22 useOnClickOutside(dropdownRef, handleClickOutside);
24 const handleKickClick = useCallback(async () => {
25 setShowDropdown(false);
31 <Box className={'point-wrapper'}>
32 <Box className="sigil">
33 <Box className="sigil-container">
38 colors={['#000000', '#FFFFFF']}
42 <Box className={'patp'}>{ob.patp(point)}</Box>
44 <Box className="button-wrapper" ref={dropdownRef}>
48 onClick={() => setShowDropdown(!showDropdown)}
53 className="close-background"
54 onClick={() => setShowDropdown(false)}
56 <Box className="kick-dropdown" onClick={handleKickClick}>
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list