# Imports

> Every entry the package exports, what it contains, and what it weighs.

Each subpath is its own entry: importing one pulls in only what it needs, and every module imports its own CSS, so a bundler never includes styles for modules you do not use. Sizes are gzip, measured from the built package; an entry's size includes everything it imports.

| Import | Exports | JS gzip | CSS gzip |
| --- | --- | --- | --- |
| `verbal-editor` | `Editor` `parse` `serialize` `write` `fromMarkdown` `tx` `invert` `caret` | 11.76 KB | 0.46 KB |
| `verbal-editor/react` | `useEditor` `useBlock` `Blocks` | 12.19 KB | 0.46 KB |
| `verbal-editor/preset` | `default` `blocks` `marks` `ui` `diffWords` `hunks` `review` | 19.30 KB | 3.83 KB |
| `verbal-editor/blocks/heading` | `default` | 0.56 KB | 0.16 KB |
| `verbal-editor/blocks/todo` | `default` | 0.79 KB | 0.55 KB |
| `verbal-editor/blocks/list` | `default` | 0.52 KB | 0.29 KB |
| `verbal-editor/blocks/quote` | `default` | 0.33 KB | 0.14 KB |
| `verbal-editor/blocks/divider` | `default` | 0.29 KB | 0.12 KB |
| `verbal-editor/blocks/code` | `default` | 2.63 KB | 0.51 KB |
| `verbal-editor/blocks/table` | `default` `addRow` `addColumn` `removeRow` `removeColumn` | 2.47 KB | 0.69 KB |
| `verbal-editor/blocks/chart` | `default` | 1.91 KB | 0.65 KB |
| `verbal-editor/blocks/math` | `default` | 4.83 KB | 0.62 KB |
| `verbal-editor/blocks/columns` | `default` | 0.63 KB | 0.25 KB |
| `verbal-editor/blocks/image` | `default` | 0.93 KB | 0.17 KB |
| `verbal-editor/blocks/embed` | `default` | 1.27 KB | 0.51 KB |
| `verbal-editor/marks/bold` | `default` | 0.24 KB | — |
| `verbal-editor/marks/italic` | `default` | 0.22 KB | — |
| `verbal-editor/marks/strike` | `default` | 0.25 KB | — |
| `verbal-editor/marks/code` | `default` | 0.17 KB | — |
| `verbal-editor/marks/link` | `default` | 0.67 KB | — |
| `verbal-editor/ui/slash` | `default` `menu` | 1.36 KB | 0.49 KB |
| `verbal-editor/ui/toolbar` | `default` | 1.29 KB | 0.71 KB |
| `verbal-editor/ui/dnd` | `default` | 1.84 KB | 0.47 KB |
| `verbal-editor/ui/emoji` | `default` | 1.55 KB | 0.49 KB |
| `verbal-editor/ai/diff` | `diffWords` `hunks` | 0.65 KB | — |
| `verbal-editor/ai/pending` | `review` | 2.11 KB | 0.64 KB |
| `verbal-editor/config` | `default` `defineConfig` `available` | build time | — |
| `verbal-editor/server` | `validateDoc` | build time | — |
| `verbal-editor/tokens.css` | every custom property | — | 1.03 KB |

`/config` and `/server` run at build time and on your server — they import Joi and never reach the browser.

## One module, one import

```js imports.js
import { Editor } from 'verbal-editor';
import { Blocks, useEditor } from 'verbal-editor/react';
import table, { addRow } from 'verbal-editor/blocks/table';
import { review } from 'verbal-editor/ai/pending';

console.log(typeof Editor, typeof Blocks, typeof useEditor, table.type, typeof addRow, typeof review);
```

> [!NOTE]
> Types for every entry ship alongside it: each `exports` entry has a `types` condition pointing at declarations generated from the source's JSDoc.
