> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

## Resource: Schema

## Article: Schema

## Article Link: https://dev.wix.com/docs/site-extensions/editor-react-components/editor-react-types/reference/schema.md

## Article Content:

import { Property, PropertyList, ExpandableSection } from "@wix/docs-ui/content";

# Schema

A structured configuration object, a map of keys to arbitrary values. Use it for freeform
configuration that does not fit the other types.

## Component

In your component code, import the `Schema` type from `@wix/editor-react-types`:

```ts
import type { Schema } from '@wix/editor-react-types';
```

At runtime it's a plain object of string keys to values of any type:

```ts
type Schema = Record<string, unknown>
```

### Usage

The Wix user configures a schema in a panel, so your code only consumes it. There is
nothing to produce.

::::tabs
:::Consumers
In a component that receives a `Schema`, read the values you expect from it:

```tsx
import type { Schema } from '@wix/editor-react-types';

function Widget({ config }: { config?: Schema }) {
  const theme = config?.theme as string | undefined;
  return <div data-theme={theme}>...</div>;
}
```
:::
::::

## Manifest

In your manifest, declare the field with the `schema` dataType:

```json
{ "dataType": "schema" }
```

The Wix user configures a schema in a panel rather than passing it as a value, so a schema
cannot be a context item or a function parameter or return. `schema` is a specialized data
type and does not appear in the general data types list.

### Declaration

::::tabs
:::Data-property
Declare it as a data property. It takes `dataType` and `displayName`:

```json
{
  "config": {
    "dataType": "schema",
    "displayName": "Configuration"
  }
}
```
:::
::::