on 3d8aeb6 help sign in
bridge/src/components/InputSigil.js
49 lines 866 B history raw
1import React, { useEffect, useState } from 'react';
2import { Just } from 'folktale/maybe';
3import * as ob from 'urbit-ob';
5import MaybeSigil from './MaybeSigil';
7const selectColorway = (pass, fail, focused) => {
8 if (pass) {
9 return ['#2AA779', '#FFFFFF'];
10 }
12 if (focused) {
13 return ['#4330FC', '#FFFFFF'];
14 }
16 if (fail) {
17 return ['#F8C134', '#FFFFFF'];
18 }
20 return ['#7F7F7F', '#FFFFFF'];
21};
23export default function InputSigil({
24 className,
25 patp,
26 size,
27 pass,
28 error,
29 focused,
30 ...rest
31}) {
32 const [lastValidPatp, setLastValidPatp] = useState(patp);
34 useEffect(() => {
35 if (ob.isValidPatp(patp)) {
36 setLastValidPatp(patp);
37 }
38 }, [patp]);
40 return (
41 <MaybeSigil
42 patp={Just(lastValidPatp)}
43 size={size}
44 colors={selectColorway(pass, error, focused)}
45 margin={0}
46 {...rest}
47 />
48 );