about summary refs log tree commit diff
path: root/src/screens/StarterPack/Wizard/StepDetails.tsx
blob: 24c992c60b3d3a3e8b22924f6d8565e5052f6c0e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import React from 'react'
import {View} from 'react-native'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'

import {useProfileQuery} from 'state/queries/profile'
import {useSession} from 'state/session'
import {useWizardState} from '#/screens/StarterPack/Wizard/State'
import {atoms as a, useTheme} from '#/alf'
import * as TextField from '#/components/forms/TextField'
import {StarterPack} from '#/components/icons/StarterPack'
import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition'
import {Text} from '#/components/Typography'

export function StepDetails() {
  const {_} = useLingui()
  const t = useTheme()
  const [state, dispatch] = useWizardState()

  const {currentAccount} = useSession()
  const {data: currentProfile} = useProfileQuery({
    did: currentAccount?.did,
    staleTime: 300,
  })

  return (
    <ScreenTransition direction={state.transitionDirection}>
      <View style={[a.px_xl, a.gap_xl, a.mt_4xl]}>
        <View style={[a.gap_md, a.align_center, a.px_md, a.mb_md]}>
          <StarterPack width={90} gradient="sky" />
          <Text style={[a.font_bold, a.text_3xl]}>
            <Trans>Invites, but personal</Trans>
          </Text>
          <Text style={[a.text_center, a.text_md, a.px_md]}>
            <Trans>
              Invite your friends to follow your favorite feeds and people
            </Trans>
          </Text>
        </View>
        <View>
          <TextField.LabelText>
            <Trans>What do you want to call your starter pack?</Trans>
          </TextField.LabelText>
          <TextField.Root>
            <TextField.Input
              label={_(
                msg`${
                  currentProfile?.displayName || currentProfile?.handle
                }'s starter pack`,
              )}
              value={state.name}
              onChangeText={text => dispatch({type: 'SetName', name: text})}
            />
            <TextField.SuffixText label={_(`${state.name?.length} out of 50`)}>
              <Text style={[t.atoms.text_contrast_medium]}>
                {state.name?.length ?? 0}/50
              </Text>
            </TextField.SuffixText>
          </TextField.Root>
        </View>
        <View>
          <TextField.LabelText>
            <Trans>Tell us a little more</Trans>
          </TextField.LabelText>
          <TextField.Root>
            <TextField.Input
              label={_(
                msg`${
                  currentProfile?.displayName || currentProfile?.handle
                }'s favorite feeds and people - join me!`,
              )}
              value={state.description}
              onChangeText={text =>
                dispatch({type: 'SetDescription', description: text})
              }
              multiline
              style={{minHeight: 150}}
            />
          </TextField.Root>
        </View>
      </View>
    </ScreenTransition>
  )
}