# Types: StaticBlockDefinition to EditableTextProps (/themes/sdk/reference/elements/types-3)

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

## `StaticBlockDefinition` [#staticblockdefinition]

One fixed child of a section or block that merchants can hide and restyle but never move or delete.

<TypeTable type={{"id":{"description":"Developer id, unique in this definition: lowercase letters, digits, `-` and `_`.","type":"string","required":true},"type":{"description":"The child's type key, or the `defineBlock` result.","type":"string | AcceptedBlock","required":true},"slot":{"description":"Region it renders in; omit to place it only where the component draws it.","type":"string","required":false},"required":{"description":"Whether merchants cannot hide it either.","type":"boolean","required":false},"settings":{"description":"Settings it starts with.","type":"ElementSettingsSeed","required":false},"style":{"description":"Style it starts with, in theme tokens.","type":"ElementStyle","required":false},"blocks":{"description":"Children it starts with.","type":"readonly ElementSeed[]","required":false}}} />

## `ElementBlocksRule` [#elementblocksrule]

Which child elements an element accepts, in the customizer and in saved layouts.

<TypeTable type={{"accepts":{"description":"Accepted children: `defineBlock` results, type keys, or the wildcards `ELEMENT_WILDCARD` and `THEME_BLOCK_WILDCARD`.","type":"readonly (string | AcceptedBlock)[]","required":true},"max":{"description":"Upper bound on direct children; static children do not count.","type":"number","required":false},"static":{"description":"Fixed children with developer ids.","type":"readonly StaticBlockDefinition[]","required":false}}} />

## `ElementContextRule` [#elementcontextrule]

Scopes an element reads from above (`requires`) and opens for its children (`provides`).

<TypeTable type={{"requires":{"description":"Scopes that must be open above the element; the editor refuses it anywhere else.","type":"readonly ElementScope[]","required":false},"provides":{"description":"Scopes the element opens for its children.","type":"readonly ElementScope[]","required":false}}} />

## `ElementDefinitionBase` [#elementdefinitionbase]

What sections and blocks share in their definition; every property is literal data the compiler reads statically.

```ts
type ElementDefinitionBase<S extends SettingsSchema>
```

<TypeTable type={{"type":{"description":"Stable type key saved in every layout file; reusing a platform key replaces that element everywhere.","type":"string","required":true},"label":{"description":"Picker and navigator label, in the theme's base language.","type":"string","required":true},"description":{"description":"One line shown under the label in the picker and in the inspector's \"What is this?\".","type":"string","required":false},"i18n":{"description":"The element's own label and description per admin language; it wins over machine translation.","type":"ElementWording","required":false},"icon":{"description":"Picker and navigator icon.","type":"ElementIconId","required":false},"category":{"description":"Picker group; theme elements without one appear under \"This theme\".","type":"ElementCategory","required":false},"settings":{"description":"Inspector settings built with `field.*`; key order is the inspector order.","type":"S","required":false},"blocks":{"description":"Child elements this element accepts; omit for a leaf element.","type":"ElementBlocksRule","required":false},"slots":{"description":"Named regions the component draws with `Slot`.","type":"readonly ElementSlot[]","required":false},"style":{"description":"Style groups the inspector's Style tab offers.","type":"readonly StyleCapability[]","required":false},"presets":{"description":"Named starting configurations offered on insert; `default` is what a plain insert applies.","type":"readonly ElementPreset[]","required":false},"context":{"description":"Scopes the element reads and opens.","type":"ElementContextRule","required":false},"keywords":{"description":"Extra picker search terms, such as synonyms in other languages.","type":"readonly string[]","required":false},"renamedFrom":{"description":"Type keys this element used to have, so saved layouts are rewritten on the next build.","type":"string | readonly string[]","required":false},"templates":{"description":"Page templates the element may be added to; omit to allow every template.","type":"readonly string[]","required":false}}} />

## `SectionDefinition` [#sectiondefinition]

The object passed to `defineSection`.

```ts
type SectionDefinition<S extends SettingsSchema>
```

<TypeTable type={{"type":{"description":"Stable type key saved in every layout file; reusing a platform key replaces that element everywhere.","type":"string","required":true},"label":{"description":"Picker and navigator label, in the theme's base language.","type":"string","required":true},"description":{"description":"One line shown under the label in the picker and in the inspector's \"What is this?\".","type":"string","required":false},"i18n":{"description":"The element's own label and description per admin language; it wins over machine translation.","type":"ElementWording","required":false},"icon":{"description":"Picker and navigator icon.","type":"ElementIconId","required":false},"category":{"description":"Picker group; theme elements without one appear under \"This theme\".","type":"ElementCategory","required":false},"settings":{"description":"Inspector settings built with `field.*`; key order is the inspector order.","type":"S","required":false},"blocks":{"description":"Child elements this element accepts; omit for a leaf element.","type":"ElementBlocksRule","required":false},"slots":{"description":"Named regions the component draws with `Slot`.","type":"readonly ElementSlot[]","required":false},"style":{"description":"Style groups the inspector's Style tab offers.","type":"readonly StyleCapability[]","required":false},"presets":{"description":"Named starting configurations offered on insert; `default` is what a plain insert applies.","type":"readonly ElementPreset[]","required":false},"context":{"description":"Scopes the element reads and opens.","type":"ElementContextRule","required":false},"keywords":{"description":"Extra picker search terms, such as synonyms in other languages.","type":"readonly string[]","required":false},"renamedFrom":{"description":"Type keys this element used to have, so saved layouts are rewritten on the next build.","type":"string | readonly string[]","required":false},"templates":{"description":"Page templates the element may be added to; omit to allow every template.","type":"readonly string[]","required":false},"intent":{"description":"What the section is for, so a search can offer it by kind, mood and photos; omit for none.","type":"ElementIntent","required":false},"groups":{"description":"Section groups outside the templates the section may also be added to.","type":"readonly SectionGroup[]","required":false},"limit":{"description":"Most instances of the section in one template or section group.","type":"number","required":false},"component":{"description":"Draws the section.","type":"ElementComponent<SettingsOf<NoInfer<S>>>","required":true}}} />

## `BlockDefinition` [#blockdefinition]

The object passed to `defineBlock`.

```ts
type BlockDefinition<S extends SettingsSchema>
```

<TypeTable type={{"type":{"description":"Stable type key saved in every layout file; reusing a platform key replaces that element everywhere.","type":"string","required":true},"label":{"description":"Picker and navigator label, in the theme's base language.","type":"string","required":true},"description":{"description":"One line shown under the label in the picker and in the inspector's \"What is this?\".","type":"string","required":false},"i18n":{"description":"The element's own label and description per admin language; it wins over machine translation.","type":"ElementWording","required":false},"icon":{"description":"Picker and navigator icon.","type":"ElementIconId","required":false},"category":{"description":"Picker group; theme elements without one appear under \"This theme\".","type":"ElementCategory","required":false},"settings":{"description":"Inspector settings built with `field.*`; key order is the inspector order.","type":"S","required":false},"blocks":{"description":"Child elements this element accepts; omit for a leaf element.","type":"ElementBlocksRule","required":false},"slots":{"description":"Named regions the component draws with `Slot`.","type":"readonly ElementSlot[]","required":false},"style":{"description":"Style groups the inspector's Style tab offers.","type":"readonly StyleCapability[]","required":false},"presets":{"description":"Named starting configurations offered on insert; `default` is what a plain insert applies.","type":"readonly ElementPreset[]","required":false},"context":{"description":"Scopes the element reads and opens.","type":"ElementContextRule","required":false},"keywords":{"description":"Extra picker search terms, such as synonyms in other languages.","type":"readonly string[]","required":false},"renamedFrom":{"description":"Type keys this element used to have, so saved layouts are rewritten on the next build.","type":"string | readonly string[]","required":false},"templates":{"description":"Page templates the element may be added to; omit to allow every template.","type":"readonly string[]","required":false},"frame":{"description":"The box drawn around each instance; `div` when omitted, `li` inside a list region, `span` for inline content.","type":"BlockFrameTag","required":false},"component":{"description":"Draws the block.","type":"ElementComponent<SettingsOf<NoInfer<S>>>","required":true}}} />

## `SectionElement` [#sectionelement]

A declared section, ready to export from a file under `src/sections`.

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

## `BlockElement` [#blockelement]

A declared block, ready to export from a file under `src/blocks` or `src/sections`.

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

## `SectionOverride` [#sectionoverride]

A theme renderer for a platform section type whose schema, inspector and data the platform keeps.

```ts
type SectionOverride<T extends PlatformSectionType>
```

<TypeTable type={{"kind":{"description":"Always `section`.","type":"'section'","required":true},"type":{"description":"The platform section type it draws.","type":"T","required":true},"override":{"description":"Always true: the schema stays the platform's.","type":"true","required":true}}} />

## `BlockOverride` [#blockoverride]

A theme renderer for a platform block type whose schema, inspector and data the platform keeps.

```ts
type BlockOverride<T extends PlatformBlockType>
```

<TypeTable type={{"kind":{"description":"Always `block`.","type":"'block'","required":true},"type":{"description":"The platform block type it draws.","type":"T","required":true},"override":{"description":"Always true: the schema stays the platform's.","type":"true","required":true}}} />

## `SlotTag` [#slottag]

The element type of a slot's box; `none` draws the children straight into the parent.

```ts
type SlotTag = 'div' | 'ul' | 'ol' | 'nav' | 'none'
```

## `SlotProps` [#slotprops]

Props of [`Slot`](/themes/sdk/reference/elements/parts#slot).

<TypeTable type={{"name":{"description":"A region the definition declares in `slots`; omit for the default region.","type":"string","required":false},"className":{"description":"Classes for the region's box, which is the children's layout box.","type":"string","required":false},"as":{"description":"Element type of the region's box; `div` when omitted.","type":"SlotTag","required":false}}} />

## `EditableTextTag` [#editabletexttag]

A tag [`EditableText`](/themes/sdk/reference/elements/parts#editabletext) can render.

```ts
type EditableTextTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | 'strong' | 'em' | 'small' | 'label' | 'li' | 'figcaption' | 'blockquote'
```

## `EditableTextProps` [#editabletextprops]

Props of [`EditableText`](/themes/sdk/reference/elements/parts#editabletext).

<TypeTable type={{"setting":{"description":"Id of a `text` or `textarea` setting of the current element.","type":"string","required":true},"as":{"description":"Tag to render; `span` when omitted.","type":"EditableTextTag","required":false},"className":{"description":"Classes added to the tag.","type":"string","required":false}}} />
