@@ -4,7 +4,7 @@ import { WARNING } from 'form/helpers';
44import { FORM_ERROR } from 'final-form';
55import { Just } from 'folktale/maybe';
66import BridgeForm from 'form/BridgeForm';
7−import { TicketInput } from 'form/Inputs';
7+import { PLACEHOLDER_PLANET, PLACEHOLDER_TICKET, TicketInput } from 'form/Inputs';
88import {
99 composeValidator,
1010 buildPatqValidator,
@@ -12,7 +12,7 @@ import {
1212 buildCheckboxValidator,
1313} from 'form/validators';
1414import FormError from 'form/FormError';
15−import { CheckboxInput, Grid } from 'indigo-react';
15+import { Grid } from 'indigo-react';
1616import { useCallback, useMemo, useRef } from 'react';
1717import { useActivateFlow } from './ActivateFlow';
1818import WarningBox from 'components/WarningBox';
@@ -21,13 +21,15 @@ import useImpliedTicket from 'lib/useImpliedTicket';
2121import { generateWallet } from 'lib/walletgen';
2222import { urbitWalletFromTicket, walletFromMnemonic } from 'lib/wallet';
2323import { DEFAULT_HD_PATH, POINT_PROXIES } from 'lib/constants';
24−import useBreakpoints from 'lib/useBreakpoints';
24+import useBreakpoints from 'lib/useBreakpoints.tsx';
2525import { Ship } from '@urbit/roller-api';
2626import { convertToInt } from 'lib/convertToInt';
2727import { Box } from '@tlon/indigo-react';
2828import { timeout } from 'lib/timeout';
2929import withFadeable from './withFadeable';
3030import ActivateButton from './ActivateButton';
31+import TicketInputAccessory from 'components/form/TicketInputAccessory';
32+import { validateActivationTicket } from 'lib/validators';
3133
3234interface ActivateCodeFormProps {
3335 afterSubmit: VoidFunction;
@@ -46,7 +48,7 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
4648 setInviteWallet,
4749 setIsIn,
4850 setSendWallet,
49− } = useActivateFlow();
51+ }: any = useActivateFlow();
5052
5153 // this is a pretty naive way to detect if we're on a mobile device
5254 // (i.e. we're checking the width of the screen)
@@ -69,7 +71,10 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
6971 const validate = useMemo(
7072 () =>
7173 composeValidator(
72− { ticket: buildPatqValidator(), showTicket: buildCheckboxValidator() },
74+ {
75+ ticket: buildPatqValidator([validateActivationTicket]),
76+ showTicket: buildCheckboxValidator(),
77+ },
7378 validateForm
7479 ),
7580 [validateForm]
@@ -164,6 +169,7 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
164169 setDerivedWallet,
165170 setInviteWallet,
166171 setIsIn,
172+ setSendWallet,
167173 ]
168174 );
169175
@@ -174,10 +180,8 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
174180
175181 return (
176182 <Box
177− display="flex"
178− flexDirection="column"
183+ className="w-full h-full flex-col"
179184 flexWrap="nowrap"
180− height={'100%'}
181185 justifyContent="flex-end">
182186 <BridgeForm
183187 validate={validate}
@@ -187,40 +191,27 @@ const ActivateCodeForm = ({ afterSubmit }: ActivateCodeFormProps) => {
187191 {({ valid, validating, values, submitting, handleSubmit }) => (
188192 <>
189193 {!impliedTicket && (
190− <>
191− <Grid.Item
192− full
193− as={TicketInput}
194− type={values.showTicket ? 'text' : 'password'}
195− name="ticket"
196− label="Activation Code"
197− disabled={!activationAllowed}
198− />
199−
200− <Grid.Item
201− full
202− as={CheckboxInput}
203− name="showTicket"
204− label="Show"
205− />
206− </>
194+ <Grid.Item
195+ full
196+ className="mb2"
197+ as={TicketInput}
198+ accessory={<TicketInputAccessory name="showTicket" />}
199+ type={values.showTicket ? 'text' : 'password'}
200+ name="ticket"
201+ disabled={!activationAllowed}
202+ placeholder={`${PLACEHOLDER_TICKET}-${PLACEHOLDER_PLANET.slice(
203+ 1
204+ )}`}
205+ />
207206 )}
208207
209− <Grid.Item full as={FormError} />
210−
211− <Box
212− display="flex"
213− flexDirection="column"
214− flexWrap="nowrap"
215− height={'100%'}
216− width={'100%'}
217− justifyContent="flex-end">
218− <ActivateButton
219− disabled={!valid || submitting}
220− onClick={handleSubmit}>
221− {submitting ? 'Generating...' : 'Claim'}
222− </ActivateButton>
223− </Box>
208+ <Grid.Item full as={FormError} className="mb2" />
209+
210+ <ActivateButton
211+ disabled={!valid || submitting}
212+ onClick={handleSubmit}>
213+ {submitting ? 'Activating...' : 'Activate'}
214+ </ActivateButton>
224215
225216 {!activationAllowed && (
226217 <Grid.Item full as={WarningBox} className="mt4">