# Types: AccountSettingsPartProps to BusinessSignUp (/themes/sdk/reference/customer/types-1)

```ts
import { … } from '@poltura/theme-sdk/customer';
```

## `AccountSettingsPartProps` [#accountsettingspartprops]

Props of the settings parts, from [`PersonalInfoForm`](/themes/sdk/reference/customer/parts-1#personalinfoform) to [`AccountDeletion`](/themes/sdk/reference/customer/parts-1#accountdeletion).

<TypeTable type={{"className":{"description":"Classes added to the part.","type":"string","required":false}}} />

## `AccountNavItem` [#accountnavitem]

One entry of the account navigation.

<TypeTable type={{"id":{"description":"The entry's id, stable across languages.","type":"string","required":true},"kind":{"description":"Whether the page is the account's own, an installed app's, or a store feature's.","type":"AccountNavKind","required":true},"href":{"description":"Where the entry goes.","type":"string","required":true},"label":{"description":"The entry's text in the page language.","type":"string","required":true},"description":{"description":"A line about the page in the page language.","type":"string","required":true}}} />

## `AccountNavKind` [#accountnavkind]

Which kind of page an account navigation entry opens.

```ts
type AccountNavKind = 'core' | 'app' | 'feature'
```

## `AccountView` [#accountview]

The account area's shell: the shopper and the account navigation.

<TypeTable type={{"customer":{"description":"The signed-in shopper, or null.","type":"Customer | null","required":true},"navigation":{"description":"The account navigation, in order.","type":"readonly AccountNavItem[]","required":true},"isSignedIn":{"description":"Whether a shopper is signed in.","type":"boolean","required":true},"isLoading":{"description":"Whether the shopper is still loading.","type":"boolean","required":true}}} />

## `Address` [#address]

A postal address from the shopper's address book or an order.

<TypeTable type={{"id":{"description":"The address's id.","type":"string","required":true},"givenName":{"description":"The recipient's given name.","type":"string","required":true},"familyName":{"description":"The recipient's family name.","type":"string","required":true},"companyName":{"description":"The company, or null.","type":"string | null","required":true},"line1":{"description":"The street address.","type":"string","required":true},"line2":{"description":"The apartment, suite or floor, or null.","type":"string | null","required":true},"city":{"description":"The city.","type":"string","required":true},"postalCode":{"description":"The postal code.","type":"string","required":true},"region":{"description":"The state, province or county as free text, or null.","type":"string | null","required":true},"countryCode":{"description":"The country.","type":"CountryCode","required":true},"phone":{"description":"The phone number, or null.","type":"string | null","required":true},"taxId":{"description":"The business buyer's tax id, or null.","type":"string | null","required":true},"isDefaultShipping":{"description":"Whether orders ship here by default.","type":"boolean","required":true},"isDefaultBilling":{"description":"Whether invoices go here by default.","type":"boolean","required":true}}} />

## `AddressBookState` [#addressbookstate]

The signed-in shopper's address book with the actions that change it; the host stores every change.

<TypeTable type={{"addresses":{"description":"The saved addresses.","type":"readonly Address[]","required":true},"status":{"description":"Whether the addresses are loading, ready, or failed to load.","type":"'loading' | 'ready' | 'error'","required":true},"isBusy":{"description":"Whether a change is being saved.","type":"boolean","required":true},"add":{"description":"Saves a new address.","type":"(input: AddressInput) => Promise<AddressResult>","required":true},"update":{"description":"Changes a saved address.","type":"(id: string, input: AddressInput) => Promise<AddressResult>","required":true},"remove":{"description":"Deletes a saved address.","type":"(id: string) => Promise<AddressResult>","required":true},"setDefault":{"description":"Makes a saved address the default for shipping or billing.","type":"(id: string, use: AddressUse) => Promise<AddressResult>","required":true}}} />

## `AddressInput` [#addressinput]

A postal address as the shopper enters it, before the address book stores it.

<TypeTable type={{"givenName":{"description":"The recipient's given name.","type":"string","required":true},"familyName":{"description":"The recipient's family name.","type":"string","required":true},"companyName":{"description":"The company, or null for a personal address.","type":"string | null","required":true},"line1":{"description":"The street address.","type":"string","required":true},"line2":{"description":"The apartment, suite or floor, or null.","type":"string | null","required":true},"city":{"description":"The city.","type":"string","required":true},"postalCode":{"description":"The postal code.","type":"string","required":true},"region":{"description":"The state, province or county as free text, or null.","type":"string | null","required":true},"countryCode":{"description":"The country; one the store sells to.","type":"CountryCode","required":true},"phone":{"description":"The phone number, or null.","type":"string | null","required":true},"taxId":{"description":"The business buyer's tax id, or null.","type":"string | null","required":true}}} />

## `AddressResult` [#addressresult]

The outcome of an address book action.

<TypeTable type={{"ok":{"description":"The action worked.","type":"true","required":true}}} />

## `AddressUse` [#addressuse]

What an address book default is set for.

```ts
type AddressUse = 'shipping' | 'billing'
```

## `AuthField` [#authfield]

A field of the sign-in, registration and password forms.

```ts
type AuthField = 'email' | 'password' | 'confirmPassword' | 'givenName' | 'familyName' | 'phone'
```

## `AuthFormState` [#authformstate]

A sign-in, registration or password form's values, errors and submit; credentials, captcha and sessions stay with the host.

<TypeTable type={{"mode":{"description":"Which form it is.","type":"AuthMode","required":true},"fields":{"description":"The fields this form asks for, in order.","type":"readonly AuthField[]","required":true},"values":{"description":"What the shopper typed, per field.","type":"Readonly<Record<AuthField, string>>","required":true},"setValue":{"description":"Changes one field and clears its error.","type":"(field: AuthField, value: string) => void","required":true},"fieldErrors":{"description":"Why a field is not valid, in the page language.","type":"Readonly<Partial<Record<AuthField, string>>>","required":true},"terms":{"description":"The terms checkbox, or null when the form has none.","type":"AuthTerms | null","required":true},"business":{"description":"Company sign-up on a registration form, or null when the form or the store has none.","type":"BusinessSignUp | null","required":true},"error":{"description":"Why the last submit failed, in the page language, or null.","type":"string | null","required":true},"status":{"description":"Whether the form is being filled, sent, or done; a done form shows its confirmation.","type":"'idle' | 'submitting' | 'done'","required":true},"blur":{"description":"Checks a field the shopper left, including the checks that need the network.","type":"(field: AuthField) => Promise<void>","required":true},"fail":{"description":"Shows a message as the form's error, for a way of signing in that runs outside the form.","type":"(message: string) => void","required":true},"reset":{"description":"Clears the error and takes a finished form back to editing.","type":"() => void","required":true},"submit":{"description":"Validates the fields and sends the form; signing in also moves on to the page the shopper came from.","type":"() => Promise<void>","required":true}}} />

## `AuthMode` [#authmode]

Which sign-in form is shown.

```ts
type AuthMode = 'signIn' | 'magicLink' | 'register' | 'forgotPassword' | 'resetPassword'
```

## `AuthTerms` [#authterms]

The terms checkbox a registration form needs ticked before it sends.

<TypeTable type={{"accepted":{"description":"Whether the shopper accepted the terms and the privacy policy.","type":"boolean","required":true},"setAccepted":{"description":"Ticks or clears the checkbox and clears its error.","type":"(accepted: boolean) => void","required":true},"error":{"description":"Why the form did not send for want of it, in the page language, or null.","type":"string | null","required":true}}} />

## `BusinessSignUp` [#businesssignup]

Signing up as a company on a registration form: the buyer type, company and tax number the host checks, and the tier applications.

<TypeTable type={{"required":{"description":"Whether the store asks every new account for company details, rather than offering them.","type":"boolean","required":true},"enabled":{"description":"Whether the shopper signs up as a company.","type":"boolean","required":true},"checking":{"description":"Whether the tax number is being checked; the form does not send until it settles.","type":"boolean","required":true}}} />
