@@ -1,5 +1,5 @@
1import React, { useMemo, useEffect, useCallback, useState } from 'react';
1import React, { useMemo, useEffect, useCallback, useState } from 'react';
2−import { Grid, Flex } from 'indigo-react';
2+import { Grid, Flex, Button } from 'indigo-react';
3import * as ob from 'urbit-ob';
3import * as ob from 'urbit-ob';
4import { Just } from 'folktale/maybe';
4import { Just } from 'folktale/maybe';
5import cn from 'classnames';
5import cn from 'classnames';
@@ -9,9 +9,9 @@ import { usePointCache } from 'store/pointCache';
10import View from 'components/View';
10import View from 'components/View';
11import BarGraph from 'components/BarGraph';
11import BarGraph from 'components/BarGraph';
12−import InviteSigilList from 'components/InviteSigilList';
13import MaybeSigil from 'components/MaybeSigil';
12import MaybeSigil from 'components/MaybeSigil';
14import { matchBlinky } from 'components/Blinky';
13import { matchBlinky } from 'components/Blinky';
14+import { ForwardButton } from 'components/Buttons';
15import Chip from 'components/Chip';
15import Chip from 'components/Chip';
16import Crumbs from 'components/Crumbs';
16import Crumbs from 'components/Crumbs';
@@ -19,6 +19,8 @@ import { useLocalRouter } from 'lib/LocalRouter';
19import useInvites from 'lib/useInvites';
19import useInvites from 'lib/useInvites';
20import * as need from 'lib/need';
20import * as need from 'lib/need';
22+import Inviter from 'views/Invite/Inviter';
22import { ReactComponent as SearchIcon } from 'assets/search.svg';
24import { ReactComponent as SearchIcon } from 'assets/search.svg';
24function CohortMember({ point, className }) {
26function CohortMember({ point, className }) {
@@ -73,8 +75,8 @@ function CohortList({ points, className }) {
74 <Grid gap={3} className={cn('mt1', className)}>
76 <Grid gap={3} className={cn('mt1', className)}>
75 <Grid.Item align="center" full as={Flex} className="b b-gray2 b1">
77 <Grid.Item align="center" full as={Flex} className="b b-gray2 b1">
76− <Flex.Item>
78+ <Flex.Item className="p2">
77− <SearchIcon className="p2" />
79+ <SearchIcon />
78 </Flex.Item>
80 </Flex.Item>
80 <Flex.Item
82 <Flex.Item
@@ -82,7 +84,7 @@ function CohortList({ points, className }) {
82 as={'input'}
84 as={'input'}
83 value={query}
85 value={query}
84 onChange={handleChange}
86 onChange={handleChange}
85− className="b-none"
87+ className="b-none h7"
87 </Grid.Item>
89 </Grid.Item>
@@ -113,6 +115,8 @@ export default function InviteCohort() {
113 sentInvites,
115 sentInvites,
114 } = useInvites(point);
116 } = useInvites(point);
118+ const [showInviteForm, setShowInviteForm] = useState(false);
116 const _acceptedPoints = acceptedPoints.getOrElse([]);
120 const _acceptedPoints = acceptedPoints.getOrElse([]);
117 const _pendingPoints = pendingPoints.getOrElse([]);
121 const _pendingPoints = pendingPoints.getOrElse([]);
118 const _pendingInvites = _pendingPoints.length;
122 const _pendingInvites = _pendingPoints.length;
@@ -140,8 +144,8 @@ export default function InviteCohort() {
140 <Flex.Item>
144 <Flex.Item>
141 {_acceptedInvites + _pendingInvites} / {_totalInvites}
145 {_acceptedInvites + _pendingInvites} / {_totalInvites}
142 </Flex.Item>
146 </Flex.Item>
143− {_pendingInvites && (
147+ {_pendingInvites !== 0 && (
144− <Flex.Item as={Chip} color="yellow">
148+ <Flex.Item as={Chip} className="bg-yellow4 white">
145 {_pendingInvites} pending
149 {_pendingInvites} pending
146 </Flex.Item>
150 </Flex.Item>
@@ -154,12 +158,18 @@ export default function InviteCohort() {
154 sent={sentInvites}
158 sent={sentInvites}
155 accepted={acceptedInvites}
159 accepted={acceptedInvites}
161+ {availableInvites.getOrElse(0) !== 0 && !showInviteForm && (
157− <Grid.Item
162+ <Grid.Item
159− as={InviteSigilList}
164+ solid
160− pendingPoints={pendingPoints}
165+ center
161− acceptedPoints={acceptedPoints}
166+ as={Button}
162− />
167+ onClick={() => setShowInviteForm(true)}>
171+ {showInviteForm && <Inviter />}
163 <Grid.Item full as={CohortList} points={_acceptedPoints} />
173 <Grid.Item full as={CohortList} points={_acceptedPoints} />