## The Document Model
The *document model* is **99% stable**, but the current documentation is still in progress.
The *document model* uses the whole or a part of the terminal area as a *document*, in a similar way than a webpage,
where multiple widgets are present on a specific place in the screen, all active at the same time.
It is opposed to the *inline mode* (i.e. all other Terminal Kit's features), where widgets are instanciated
one at a time, line after line.
Some widgets exist in both the *inline mode* and the *document model*, but with different features.
Those differences will eventually disappear, once those *document model* widgets will be compatible with the *inline mode*
and supersede the older one.
The *document model* is backed by [*screenBuffers*](ScreenBuffer.md#top).
It can manage multiple widgets each with its own redraw condition, even some that overlap, like a [*drop-down menu*](DropDownMenu.md#top),
it manages widget keyboard focus, event dispatching, widget cycling, **with mouse support everywhere**.
## Table of Contents
* Instantiable classes:
* [Document](Document.md#top)
* [AnimatedText](AnimatedText.md#top)
* [Bar](Bar.md#top)
* [Border](Border.md#top)
* [Button](Button.md#top)
* [ColumnMenu](ColumnMenu.md#top)
* [ColumnMenuMixed](ColumnMenuMixed.md#top)
* [ColumnMenuMulti](ColumnMenuMulti.md#top)
* [DropDownMenu](DropDownMenu.md#top)
* [EditableTextBox](EditableTextBox.md#top)
* [Form](Form.md#top)
* [InlineFileInput](InlineFileInput.md#top)
* [InlineInput](InlineInput.md#top)
* [InlineMenu](InlineMenu.md#top)
* [Inspector](Inspector.md#top)
* [LabeledInput](LabeledInput.md#top)
* [Layout](Layout.md#top)
* [RowMenu](RowMenu.md#top)
* [SelectList](SelectList.md#top)
* [SelectListMulti](SelectListMulti.md#top)
* [Slider](Slider.md#top)
* [Text](Text.md#top)
* [TextBox](TextBox.md#top)
* [TextTable](TextTable.md#top)
* [ToggleButton](ToggleButton.md#top)
* [Window](Window.md#top)
* Base classes:
* [Element](Element.md#top)
* [Container](Container.md#top)
* [BaseMenu](BaseMenu.md#top)