# Types: PlatformSectionType to AcceptedBlock (/themes/sdk/reference/elements/types-2)

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

## `PlatformSectionType` [#platformsectiontype]

A section type the platform ships.

```ts
type PlatformSectionType = 'account' | 'account-addresses-main' | 'account-order-main' | 'account-orders-main' | 'account-settings-main' | 'announcement-bar' | 'article-main' | 'auth-form' | 'banner' | 'bento' | 'blog-main' | 'cart' | 'checkout' | 'collection-listing' | 'consent-banner' | 'consent-preferences' | 'contact-main' | 'copy' | 'cta-strip' | 'custom-section' | 'faq' | 'faq-main' | 'featured-rail' | 'footer' | 'gallery' | 'gate-main' | 'guide-main' | 'guides-main' | 'header' | 'heading' | 'hero' | 'image-with-text' | 'language-popup' | 'legal-main' | 'logo-list' | 'newsletter-band' | 'newsletter-popup' | 'not-found-main' | 'order-confirmed-main' | 'order-status-main' | 'page-body' | 'page-hero' | 'page-main' | 'partner-badges' | 'password-forgot-main' | 'password-reset-main' | 'payment-band' | 'platform-widget' | 'product-grid' | 'product-information' | 'related-products' | 'rich-text' | 'spacer' | 'stats' | 'steps' | 'store-form' | 'testimonials' | 'trust' | 'trust-row' | 'trust-strip' | 'verify-main' | 'video'
```

## `MediaValue` [#mediavalue]

The stored value of a media field: a `media://` library file, an `asset://` theme file, an image URL, or `''` when unset.

```ts
type MediaValue = string
```

## `IconValue` [#iconvalue]

The stored value of an icon field: a content icon name, `lucide:<name>`, `logo:<id>` for a platform logo, or `svg:<markup>` for a custom icon.

```ts
type IconValue = string
```

## `SettingsSchema` [#settingsschema]

A settings object: setting id to `field.*` result, in inspector order.

```ts
type SettingsSchema = ElementSettingsSchema
```

## `SettingsOf` [#settingsof]

The settings a component receives for a schema; fields with a `default` are always present.

```ts
type SettingsOf<S extends SettingsSchema> = ElementSettingsOf<S>
```

## `FieldSpec` [#fieldspec]

What a `field.*` builder returns: one setting's inspector description, carrying its value type.

```ts
type FieldSpec<TValue = unknown> = FieldDef<TValue>
```

## `FieldBuilders` [#fieldbuilders]

The `field` builders, one per setting kind: text, number, colour, image, link, product and more.

```ts
type FieldBuilders = typeof elementFields
```

## `FieldSet` [#fieldset]

A reusable group of settings: call it with a prefix and spread the result into `settings`.

```ts
type FieldSet<S extends SettingsSchema> = ElementFieldSet<S>
```

## `FieldSetOptions` [#fieldsetoptions]

What a field set's call takes beside its prefix: an optional heading, and this use's own defaults and locale paths.

```ts
type FieldSetOptions<S extends SettingsSchema = SettingsSchema> = ElementFieldSetOptions<S>
```

## `ThemeSettingsDefinition` [#themesettingsdefinition]

The theme settings `src/settings.ts` declares: the panel's groups and their fields.

```ts
type ThemeSettingsDefinition = ElementThemeSettingsDefinition
```

## `ThemeSettingsGroupDefinition` [#themesettingsgroupdefinition]

One group of the theme settings panel: its id, heading and `field.*` settings by path.

```ts
type ThemeSettingsGroupDefinition = ElementThemeSettingsGroupDefinition
```

## `ElementCategory` [#elementcategory]

A picker group an element is listed under, such as `marketing` or `product`.

```ts
type ElementCategory = ElementCategoryName
```

## `ElementIntent` [#elementintent]

What a section is for: its `kinds`, `moods`, `photos`, `products`, `height` and `source`.

```ts
type ElementIntent = ElementIntentValue
```

**Example**

```tsx
import type { ElementIntent } from '@poltura/theme-sdk/elements';

const intent: ElementIntent = {
  kinds: ['campaign'],
  photos: { min: 1, max: 1, aspect: 'landscape' },
};
```

## `StyleCapability` [#stylecapability]

A group of style controls the inspector's Style tab offers, such as `spacing` or `background`.

```ts
type StyleCapability = StyleCapabilityName
```

## `ElementIconId` [#elementiconid]

An icon of the element picker and navigator.

```ts
type ElementIconId = ElementIconName
```

## `ElementWording` [#elementwording]

Own wording of an element, field, preset or slot by admin language, such as `{ hu: { label: 'Csempék' } }`.

```ts
type ElementWording = Partial<Record<ElementWordingLanguage, {
    readonly label?: string;
    readonly description?: string;
    readonly placeholder?: string;
    readonly options?: Readonly<Record<string, string>>;
}>>
```

It wins over machine translation; a language or key left out falls back to it.

## `ElementSlot` [#elementslot]

A named region of an element that `Slot` draws, with its label and accepted children.

<TypeTable type={{"name":{"description":"The name `Slot` draws the region by.","type":"string","required":true},"label":{"description":"The region's label in the navigator, in the theme's base language.","type":"string","required":true},"accepts":{"description":"Child types the region takes, a subset of what the element accepts; omit to take all.","type":"string[]","required":false},"i18n":{"description":"The region's own label per admin language.","type":"ElementWording","required":false}}} />

## `ElementPreset` [#elementpreset]

A named starting configuration an element offers on insert; a plain insert applies `default`, other presets get their own tiles.

<TypeTable type={{"id":{"description":"Stable id of the preset within its element.","type":"string","required":true},"label":{"description":"The preset's label in the picker, in the theme's base language.","type":"string","required":true},"description":{"description":"One line shown under the label in the picker.","type":"string","required":false},"i18n":{"description":"The preset's own label and description per admin language.","type":"ElementWording","required":false},"settings":{"description":"Settings the inserted element starts with.","type":"ElementSettingsSeed","required":false},"style":{"description":"Style of the inserted element itself.","type":"ElementStyle","required":false},"blocks":{"description":"Children the inserted element starts with.","type":"ElementSeed[]","required":false}}} />

## `ElementScope` [#elementscope]

A data scope an element reads from above or opens for its children: `product` or `collection`.

```ts
type ElementScope = ScopeKind
```

## `SectionGroup` [#sectiongroup]

A page-wide section group outside the templates: `header` or `footer`.

```ts
type SectionGroup = ElementSectionGroup
```

## `BlockFrameTag` [#blockframetag]

The box the platform draws around each block instance: `div`, `li`, `span`, or `self` for platform elements.

```ts
type BlockFrameTag = BlockFrame
```

## `ElementStyle` [#elementstyle]

Style values in theme tokens, as an element instance stores them.

```ts
type ElementStyle = ElementStyleValue
```

## `ElementSeed` [#elementseed]

A child element a static block or preset starts with.

```ts
type ElementSeed = PresetElement
```

## `ElementSettingsSeed` [#elementsettingsseed]

Settings an instance starts with, by setting id.

```ts
type ElementSettingsSeed = ThemeSettingsBag
```

## `ElementAttrs` [#elementattrs]

Attributes to spread on the element's root node, so merchant styling, anchors and the editor reach it.

<TypeTable type={{"className":{"description":"The class the element's generated style targets; merge it into the root's own classes.","type":"string","required":false},"data-pe":{"description":"The instance id the customizer selects the element by; present in the editor only.","type":"string","required":false},"id":{"description":"The merchant's anchor, so a link to `#<id>` scrolls here; absent when unset.","type":"string","required":false},"data-pe-motion":{"description":"`once` or `repeat` when the instance plays an entrance animation; absent otherwise.","type":"string","required":false},"data-scheme":{"description":"The colour scheme a block draws in, which remaps the colour roles inside it; absent inherits.","type":"string","required":false}}} />

## `ElementRenderProps` [#elementrenderprops]

What an element component receives for an already computed settings type.

```ts
type ElementRenderProps<TSettings>
```

<TypeTable type={{"settings":{"description":"Translated settings, coerced to the element's schema.","type":"TSettings","required":true},"attrs":{"description":"Attributes to spread on the root node; empty for an override, whose frame the platform draws.","type":"ElementAttrs","required":true},"id":{"description":"The instance id, unique across the layout file.","type":"string","required":true}}} />

## `ElementProps` [#elementprops]

What a section or block component receives for its settings schema.

```ts
type ElementProps<S extends SettingsSchema = SettingsSchema>
```

<TypeTable type={{"settings":{"description":"Translated settings, coerced to the element's schema.","type":"TSettings","required":true},"attrs":{"description":"Attributes to spread on the root node; empty for an override, whose frame the platform draws.","type":"ElementAttrs","required":true},"id":{"description":"The instance id, unique across the layout file.","type":"string","required":true}}} />

## `ElementComponent` [#elementcomponent]

A component that draws an element from its settings.

```ts
type ElementComponent<TSettings> = (props: ElementRenderProps<TSettings>) => ReactNode
```

## `AcceptedBlock` [#acceptedblock]

A `defineBlock` result named in `accepts` instead of its type key.

<TypeTable type={{"kind":{"description":"Always `block`.","type":"'block'","required":true},"type":{"description":"The block's type key.","type":"string","required":true}}} />
