# Types (/themes/sdk/reference/chrome/types)

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

## `HeaderSticky` [#headersticky]

How the header behaves as the page scrolls, as the merchant set it.

<TypeTable type={{"behavior":{"description":"`static` scrolls away, `sticky` stays pinned, `reveal` hides on the way down and returns on the way up.","type":"'static' | 'sticky' | 'reveal'","required":true},"overlay":{"description":"Whether the header lies over the first section of this page until the page scrolls.","type":"boolean","required":true},"shrink":{"description":"Whether a pinned header shrinks once the page scrolls.","type":"boolean","required":true}}} />

## `HeaderData` [#headerdata]

What a header draws from, so a theme's header takes no props.

<TypeTable type={{"categories":{"description":"The top-level categories with their subcategories, for a category menu.","type":"readonly NavCategory[]","required":true},"locale":{"description":"The language the page is shown in.","type":"Locale","required":true},"locales":{"description":"Every language the store offers, the current one included.","type":"readonly Locale[]","required":true},"customer":{"description":"The signed-in shopper, or null for a guest.","type":"Customer | null","required":true},"signedIn":{"description":"Whether the shopper is signed in.","type":"boolean","required":true},"sticky":{"description":"How the header behaves as the page scrolls.","type":"HeaderSticky","required":true}}} />

## `LocaleSwitcherState` [#localeswitcherstate]

Language choice state.

<TypeTable type={{"current":{"description":"The language the page is shown in.","type":"Locale","required":true},"available":{"description":"Every language the store offers, the current one included; fewer than two means no choice.","type":"readonly Locale[]","required":true},"hrefFor":{"description":"The page being viewed, at its address in another language.","type":"(locale: Locale) => string","required":true},"switchTo":{"description":"Remembers the language as the shopper's choice, then opens the page in it.","type":"(locale: Locale) => void","required":true},"flagOf":{"description":"The country whose flag stands for a language, also for languages whose tag names no country.","type":"(locale: Locale) => CountryCode | null","required":true}}} />

## `LocaleSwitcherProps` [#localeswitcherprops]

Props of [`LocaleSwitcher`](/themes/sdk/reference/chrome/defaults-1#localeswitcher).

<TypeTable type={{"display":{"description":"One button opening a menu with a language and a currency group, or both groups side by side; defaults to dropdown.","type":"'dropdown' | 'inline'","required":false},"label":{"description":"Each language's own name, its two-letter code, or its flag alone; defaults to the name.","type":"'name' | 'code' | 'flag'","required":false},"flags":{"description":"Draws each language's flag before its label.","type":"boolean","required":false},"currency":{"description":"Offers the currencies too; defaults to true. Turn it off where the theme draws its own {@link CurrencySwitcher}.","type":"boolean","required":false},"className":{"description":"Classes added to the switcher.","type":"string","required":false},"attrs":{"description":"A block's attributes, spread on the switcher's root when it draws the block itself.","type":"ElementAttrs","required":false}}} />

## `CurrencySwitcherState` [#currencyswitcherstate]

Currency choice state.

<TypeTable type={{"current":{"description":"The currency prices are shown in.","type":"CurrencyCode","required":true},"available":{"description":"Every currency the storefront offers, the current one included; fewer than two means no choice.","type":"readonly CurrencyCode[]","required":true},"switchTo":{"description":"Shows prices and the cart in the currency from now on, then reloads the page in it.","type":"(currency: CurrencyCode) => void","required":true},"symbolOf":{"description":"The currency's symbol in the page language, such as `€` or `Ft`.","type":"(currency: CurrencyCode) => string","required":true}}} />

## `CurrencySwitcherProps` [#currencyswitcherprops]

Props of [`CurrencySwitcher`](/themes/sdk/reference/chrome/defaults-2#currencyswitcher).

<TypeTable type={{"display":{"description":"A dropdown behind one button, or every currency side by side; defaults to dropdown.","type":"'dropdown' | 'inline'","required":false},"label":{"description":"Each currency's code (`EUR`) or its symbol (`€`); defaults to the code.","type":"'code' | 'symbol'","required":false},"className":{"description":"Classes added to the switcher.","type":"string","required":false},"attrs":{"description":"A block's attributes, spread on the switcher's root when it draws the block itself.","type":"ElementAttrs","required":false}}} />

## `StorefrontChoice` [#storefrontchoice]

A market.

<TypeTable type={{"id":{"description":"The market's id, unique among the choices; several choices may share one address.","type":"string","required":true},"host":{"description":"Its address: a domain, such as `bolt.de`, or host/prefix, such as `bolt.hu/at`.","type":"string","required":true},"country":{"description":"The country the storefront is made for.","type":"CountryCode","required":true},"countryName":{"description":"That country's name in the page language.","type":"string","required":true},"name":{"description":"What the storefront is called in the page language: its market's name, else its country's.","type":"string","required":true}}} />

## `StorefrontSwitcherState` [#storefrontswitcherstate]

Storefront choice state.

<TypeTable type={{"current":{"description":"The market the page shows, never one of `others`; null before the store has a market.","type":"StorefrontChoice | null","required":true},"others":{"description":"The store's other markets, at this address or another; empty when it has only one.","type":"readonly StorefrontChoice[]","required":true},"moveTo":{"description":"Takes the shopper there with their cart: in place at this address, else on the same page at the other address.","type":"(storefront: StorefrontChoice) => void","required":true}}} />

## `MobileMenuState` [#mobilemenustate]

The mobile menu's state, shared by the button that opens it and the drawer that shows it.

<TypeTable type={{"open":{"description":"Whether the mobile menu is open.","type":"boolean","required":true},"setOpen":{"description":"Opens or closes the menu; closing returns it to the first level.","type":"(open: boolean) => void","required":true},"panel":{"description":"The submenu the menu has drilled into, or null at the first level.","type":"string | null","required":true},"push":{"description":"Drills into a submenu.","type":"(panel: string) => void","required":true},"pop":{"description":"Goes back one level.","type":"() => void","required":true}}} />

## `MobileMenuProps` [#mobilemenuprops]

Props of [`MobileMenu`](/themes/sdk/reference/chrome/defaults-3#mobilemenu).

<TypeTable type={{"title":{"description":"Names the drawer for assistive technology.","type":"string","required":true},"side":{"description":"The edge the drawer slides in from; defaults to the left.","type":"'left' | 'right'","required":false},"header":{"description":"Drawn at the top of the drawer, such as the store's logo.","type":"ReactNode","required":false},"children":{"description":"What the drawer holds; defaults to the main menu.","type":"ReactNode","required":false},"className":{"description":"Classes added to the drawer.","type":"string","required":false}}} />

## `HeaderVisibility` [#headervisibility]

Header scroll state.

<TypeTable type={{"scrolled":{"description":"Whether the page has scrolled past the header's height.","type":"boolean","required":true},"hidden":{"description":"Whether a revealing header is hidden because the shopper scrolls down.","type":"boolean","required":true}}} />

## `PromoBarState` [#promobarstate]

The announcement strip above the header, as the merchant wrote it.

<TypeTable type={{"visible":{"description":"Whether the strip is on and has text.","type":"boolean","required":true},"text":{"description":"The announcement in the page language.","type":"string","required":true},"href":{"description":"Where the announcement links.","type":"string","required":true}}} />

## `PromoBarProps` [#promobarprops]

Props of [`PromoBar`](/themes/sdk/reference/chrome/defaults-3#promobar).

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

## `BrandClasses` [#brandclasses]

Class names for the pieces of [`Brand`](/themes/sdk/reference/chrome/parts#brand).

<TypeTable type={{"image":{"description":"The logo picture.","type":"string","required":false},"mark":{"description":"The initial drawn in place of a missing logo.","type":"string","required":false},"label":{"description":"The store's name drawn in place of a missing logo.","type":"string","required":false}}} />

## `BrandProps` [#brandprops]

Props of [`Brand`](/themes/sdk/reference/chrome/parts#brand).

<TypeTable type={{"href":{"description":"Where the brand links; defaults to the home page.","type":"string","required":false},"priority":{"description":"Loads the logo first, for the header above the fold.","type":"boolean","required":false},"className":{"description":"Classes added to the link.","type":"string","required":false},"classes":{"description":"Classes added to the pieces.","type":"BrandClasses","required":false}}} />

## `LogoProps` [#logoprops]

Props of [`Logo`](/themes/sdk/reference/chrome/parts#logo).

<TypeTable type={{"image":{"description":"A picture to draw instead of the store's logo.","type":"MediaImageRef | null","required":false},"width":{"description":"The logo's width in pixels; defaults to 120.","type":"number","required":false},"fallback":{"description":"What to draw without a logo: the initial and name, the name alone, or nothing; defaults to the initial and name.","type":"'name' | 'nameOnly' | 'none'","required":false},"linkHome":{"description":"Whether the logo links home; defaults to true.","type":"boolean","required":false},"className":{"description":"Classes added to the logo.","type":"string","required":false}}} />

## `UserMenuProps` [#usermenuprops]

Props of [`UserMenu`](/themes/sdk/reference/chrome/defaults-4#usermenu).

<TypeTable type={{"display":{"description":"An icon alone, or the icon with a label; defaults to the icon.","type":"'icon' | 'label'","required":false},"greet":{"description":"Names a signed-in shopper by first name in the label.","type":"boolean","required":false},"className":{"description":"Classes added to the menu button.","type":"string","required":false}}} />

## `LocaleBannerProps` [#localebannerprops]

Props of [`LocaleBanner`](/themes/sdk/reference/chrome/defaults-5#localebanner).

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

## `ColorModeToggleProps` [#colormodetoggleprops]

Props of [`ColorModeToggle`](/themes/sdk/reference/chrome/parts#colormodetoggle).

<TypeTable type={{"display":{"description":"One button that flips between light and dark, or a switch of light, dark and system; defaults to the button.","type":"'icon' | 'switch'","required":false},"className":{"description":"Classes added to the toggle.","type":"string","required":false}}} />
