aboutsummaryrefslogtreecommitdiff
path: root/api/pl.treksoft.kvision.form.text
diff options
context:
space:
mode:
Diffstat (limited to 'api/pl.treksoft.kvision.form.text')
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/-init-.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/after-insert.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/after-postpatch.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/autofocus.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/blur.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/disabled.html22
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/focus.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/get-sn-attrs.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/get-sn-class.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/index.html505
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/maxlength.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/name.html22
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/placeholder.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/readonly.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/size.html22
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/start-value.html27
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text-input/value.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/-init-.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/autofocus.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/blur.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/flabel.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/focus.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/get-sn-class.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/index.html318
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/input.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/label.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/maxlength.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/placeholder.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/readonly.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/remove-event-listeners.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/rich.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/set-event-listener.html54
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/start-value.html17
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/validation-info.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-abstract-text/value.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-password/-init-.html25
-rw-r--r--api/pl.treksoft.kvision.form.text/-password/index.html72
-rw-r--r--api/pl.treksoft.kvision.form.text/-password/password.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text-input/-init-.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text-input/after-destroy.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text-input/after-insert.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text-input/get-sn-attrs.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text-input/index.html208
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text-input/render.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text-input/rich-text-input.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text/-init-.html25
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text/index.html210
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text/input-height.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text/input.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-rich-text/rich-text.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area-input/-init-.html25
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area-input/cols.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area-input/get-sn-attrs.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area-input/index.html231
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area-input/render.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area-input/rows.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area-input/text-area-input.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area-input/wrap-hard.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area/-init-.html29
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area/cols.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area/index.html228
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area/input.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area/rows.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area/text-area.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-area/wrap-hard.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input-type/-c-o-l-o-r.html14
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input-type/-e-m-a-i-l.html14
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input-type/-p-a-s-s-w-o-r-d.html14
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input-type/-s-e-a-r-c-h.html14
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input-type/-t-e-l.html14
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input-type/-t-e-x-t.html14
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input-type/-u-r-l.html14
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input-type/index.html68
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input/-init-.html23
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input/autocomplete.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input/get-sn-attrs.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input/index.html222
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input/render.html18
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input/text-input.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-text-input/type.html21
-rw-r--r--api/pl.treksoft.kvision.form.text/-text/-init-.html27
-rw-r--r--api/pl.treksoft.kvision.form.text/-text/autocomplete.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/-text/index.html233
-rw-r--r--api/pl.treksoft.kvision.form.text/-text/input.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-text/text.html16
-rw-r--r--api/pl.treksoft.kvision.form.text/-text/type.html15
-rw-r--r--api/pl.treksoft.kvision.form.text/index.html108
87 files changed, 3802 insertions, 0 deletions
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/-init-.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/-init-.html
new file mode 100644
index 00000000..4bd1fbfc
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/-init-.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$&lt;init&gt;(kotlin.String, kotlin.collections.Set((kotlin.String)))"></a>
+<code><span class="identifier">AbstractTextInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$<init>(kotlin.String, kotlin.collections.Set((kotlin.String)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$<init>(kotlin.String, kotlin.collections.Set((kotlin.String)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">)</span></code>
+<h3>Parameters</h3>
+<p><a name="value"></a>
+<code>value</code> - text input value</p>
+<p><a name="classes"></a>
+<code>classes</code> - a set of CSS class names</p>
+<p><strong>Constructor</strong><br/>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/after-insert.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/after-insert.html
new file mode 100644
index 00000000..2774cb23
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/after-insert.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.afterInsert - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./after-insert.html">afterInsert</a><br/>
+<br/>
+<h1>afterInsert</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$afterInsert(com.github.snabbdom.VNode)"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterInsert</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$afterInsert(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/after-insert.html">Widget.afterInsert</a></p>
+<p>Method called after inserting Snabbdom vnode into the DOM.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/after-postpatch.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/after-postpatch.html
new file mode 100644
index 00000000..eb1f1c60
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/after-postpatch.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.afterPostpatch - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./after-postpatch.html">afterPostpatch</a><br/>
+<br/>
+<h1>afterPostpatch</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$afterPostpatch(com.github.snabbdom.VNode)"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterPostpatch</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$afterPostpatch(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/after-postpatch.html">Widget.afterPostpatch</a></p>
+<p>Method called after updating Snabbdom vnode.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/autofocus.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/autofocus.html
new file mode 100644
index 00000000..e8409282
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/autofocus.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.autofocus - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./autofocus.html">autofocus</a><br/>
+<br/>
+<h1>autofocus</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$autofocus"></a>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+<p><strong>Getter</strong><br/>
+<p>Determines if the text input is automatically focused.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Determines if the text input is automatically focused.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/blur.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/blur.html
new file mode 100644
index 00000000..9eabcc25
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/blur.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.blur - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./blur.html">blur</a><br/>
+<br/>
+<h1>blur</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$blur()"></a>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element blur.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/disabled.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/disabled.html
new file mode 100644
index 00000000..4d0a8074
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/disabled.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.disabled - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./disabled.html">disabled</a><br/>
+<br/>
+<h1>disabled</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$disabled"></a>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">disabled</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.form/-form-input/disabled.html">FormInput.disabled</a></p>
+<p>Determines if the field is disabled.</p>
+<p><strong>Getter</strong><br/>
+<p>Determines if the field is disabled.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Determines if the field is disabled.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/focus.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/focus.html
new file mode 100644
index 00000000..edd192bd
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/focus.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.focus - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./focus.html">focus</a><br/>
+<br/>
+<h1>focus</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$focus()"></a>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element focused.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/get-sn-attrs.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/get-sn-attrs.html
new file mode 100644
index 00000000..b66c84ee
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/get-sn-attrs.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.getSnAttrs - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./get-sn-attrs.html">getSnAttrs</a><br/>
+<br/>
+<h1>getSnAttrs</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$getSnAttrs()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnAttrs</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-pair.html"><span class="identifier">StringPair</span></a><span class="symbol">&gt;</span></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/get-sn-attrs.html">Widget.getSnAttrs</a></p>
+<p>Returns list of element attributes in the form of a List.</p>
+<p><strong>Return</strong><br/>
+list of element attributes</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/get-sn-class.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/get-sn-class.html
new file mode 100644
index 00000000..9411ae2f
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/get-sn-class.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.getSnClass - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./get-sn-class.html">getSnClass</a><br/>
+<br/>
+<h1>getSnClass</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$getSnClass()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/get-sn-class.html">Widget.getSnClass</a></p>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+<p><strong>Return</strong><br/>
+list of CSS class names</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/index.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/index.html
new file mode 100644
index 00000000..c68d6469
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/index.html
@@ -0,0 +1,505 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">AbstractTextInput</a><br/>
+<br/>
+<h1>AbstractTextInput</h1>
+<code><span class="keyword">abstract</span> <span class="keyword">class </span><span class="identifier">AbstractTextInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">, </span><a href="../../pl.treksoft.kvision.form/-form-input/index.html"><span class="identifier">FormInput</span></a></code>
+<p>Base class for basic text components.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">AbstractTextInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$<init>(kotlin.String, kotlin.collections.Set((kotlin.String)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$<init>(kotlin.String, kotlin.collections.Set((kotlin.String)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="autofocus.html">autofocus</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="disabled.html">disabled</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">disabled</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if the field is disabled.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="maxlength.html">maxlength</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="name.html">name</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">name</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The name attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="placeholder.html">placeholder</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="readonly.html">readonly</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="size.html">size</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">size</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-input-size/index.html"><span class="identifier">InputSize</span></a><span class="symbol">?</span></code>
+<p>The size of the input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="start-value.html">startValue</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="value.html">value</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Text input value.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/draggable.html">draggable</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">draggable</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the current widget is draggable.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/event-target.html">eventTarget</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">eventTarget</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">?</span></code></td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/id.html">id</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">id</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>An ID attribute of generated HTML element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/last-language.html">lastLanguage</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">lastLanguage</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code></td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/parent.html">parent</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">parent</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">?</span></code>
+<p>Parent of the current component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/role.html">role</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">role</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>A role attribute of generated HTML element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/surrounding-span.html">surroundingSpan</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">surroundingSpan</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code></td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/title.html">title</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">title</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>A title attribute of generated HTML element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/visible.html">visible</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">visible</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Visibility state of the current component.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="after-insert.html">afterInsert</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterInsert</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$afterInsert(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after inserting Snabbdom vnode into the DOM.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="after-postpatch.html">afterPostpatch</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterPostpatch</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$afterPostpatch(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after updating Snabbdom vnode.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="blur.html">blur</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element blur.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="focus.html">focus</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="get-sn-attrs.html">getSnAttrs</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnAttrs</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-pair.html"><span class="identifier">StringPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of element attributes in the form of a List.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="get-sn-class.html">getSnClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/add-css-class.html">addCssClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">addCssClass</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$addCssClass(kotlin.String)/css">css</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Adds given value to the set of CSS classes generated in html code of current component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/add-surrounding-css-class.html">addSurroundingCssClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">addSurroundingCssClass</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$addSurroundingCssClass(kotlin.String)/css">css</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Adds given value to the set of CSS classes generated in html code of parent component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/after-create.html">afterCreate</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterCreate</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$afterCreate(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after creating Snabbdom vnode.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/after-destroy.html">afterDestroy</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterDestroy</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after destroying Snabbdom vnode.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/clear-drag-drop-data.html">clearDragDropData</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">clearDragDropData</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Clears D&D data for the current widget. It also makes it not draggable.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/dispatch-event.html">dispatchEvent</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">dispatchEvent</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$dispatchEvent(kotlin.String, org.w3c.dom.CustomEventInit)/type">type</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.core.Widget$dispatchEvent(kotlin.String, org.w3c.dom.CustomEventInit)/eventInitDict">eventInitDict</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/org.w3c.dom/-custom-event-init/index.html"><span class="identifier">CustomEventInit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code></td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/get-element.html">getElement</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getElement</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/org.w3c.dom/-node/index.html"><span class="identifier">Node</span></a><span class="symbol">?</span></code>
+<p>Returns DOM element bound to the current component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/get-element-j-query.html">getElementJQuery</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getElementJQuery</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">JQuery</span><span class="symbol">?</span></code>
+<p>Returns JQuery element bound to the current component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/get-element-j-query-d.html">getElementJQueryD</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getElementJQueryD</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="keyword">dynamic</span></code>
+<p>Returns JQuery element bound to the current component as a <em>dynamic</em> type.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/get-sn-hooks.html">getSnHooks</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnHooks</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Hooks</span><span class="symbol">?</span></code>
+<p>Returns list of hooks in the form of a Snabbdom <em>Hooks</em> object.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/get-sn-on.html">getSnOn</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnOn</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">On</span><span class="symbol">?</span></code>
+<p>Returns list of event handlers in the form of a Snabbdom <em>On</em> object.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/hide.html">hide</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">hide</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Makes current widget invisible.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/remove-css-class.html">removeCssClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">removeCssClass</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$removeCssClass(kotlin.String)/css">css</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Removes given value from the set of CSS classes generated in html code of current component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/remove-event-listeners.html">removeEventListeners</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">removeEventListeners</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Removes all event listeners from current widget.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/remove-surrounding-css-class.html">removeSurroundingCssClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">removeSurroundingCssClass</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$removeSurroundingCssClass(kotlin.String)/css">css</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Removes given value from the set of CSS classes generated in html code of parent component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/render.html">render</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code><br/>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$render(kotlin.String)/elementName">elementName</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code><br/>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$render(kotlin.String, kotlin.Array((kotlin.Any)))/elementName">elementName</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.core.Widget$render(kotlin.String, kotlin.Array((kotlin.Any)))/children">children</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html"><span class="identifier">Array</span></a><span class="symbol">&lt;</span><span class="keyword">dynamic</span><span class="symbol">&gt;</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code>
+<p>Renders current component as a Snabbdom vnode.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/set-context-menu.html">setContextMenu</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setContextMenu</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setContextMenu(pl.treksoft.kvision.dropdown.ContextMenu)/contextMenu">contextMenu</span><span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.dropdown/-context-menu/index.html"><span class="identifier">ContextMenu</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets context menu for the current widget.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/set-drag-drop-data.html">setDragDropData</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setDragDropData</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setDragDropData(kotlin.String, kotlin.String)/format">format</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setDragDropData(kotlin.String, kotlin.String)/data">data</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Sets D&D data for the current widget. It also makes it draggable.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/set-drop-target.html">setDropTarget</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setDropTarget</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setDropTarget(kotlin.String, kotlin.Function1((org.w3c.dom.DragEvent, kotlin.Unit)))/format">format</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setDropTarget(kotlin.String, kotlin.Function1((org.w3c.dom.DragEvent, kotlin.Unit)))/callback">callback</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/org.w3c.dom/-drag-event/index.html"><span class="identifier">DragEvent</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code><br/>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setDropTarget</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setDropTarget(kotlin.collections.Set((kotlin.String)), kotlin.Function1((org.w3c.dom.DragEvent, kotlin.Unit)))/formats">formats</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setDropTarget(kotlin.collections.Set((kotlin.String)), kotlin.Function1((org.w3c.dom.DragEvent, kotlin.Unit)))/callback">callback</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/org.w3c.dom/-drag-event/index.html"><span class="identifier">DragEvent</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Sets the current widget as a D&D drop target.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/set-drop-target-data.html">setDropTargetData</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setDropTargetData</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setDropTargetData(kotlin.String, kotlin.Function1((kotlin.String, kotlin.Unit)))/format">format</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setDropTargetData(kotlin.String, kotlin.Function1((kotlin.String, kotlin.Unit)))/callback">callback</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Sets the current widget as a D&D drop target with helper callback accepting String data.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/set-event-listener.html">setEventListener</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">T</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span> <span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.core.Widget.setEventListener.T)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-widget/set-event-listener.html#T"><span class="identifier">T</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget, keeping the actual type of component.</p>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.core.Widget)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/show.html">show</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">show</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Makes current widget visible.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/toggle-visible.html">toggleVisible</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">toggleVisible</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Toggles visibility of current widget.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.core/-widget/translate.html">translate</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">translate</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.core.Widget$translate(kotlin.String)/text">text</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Inheritors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-rich-text-input/index.html">RichTextInput</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">RichTextInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Basic rich text component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-text-area-input/index.html">TextAreaInput</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">TextAreaInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Basic textarea component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-text-input/index.html">TextInput</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">TextInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Basic text component.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/maxlength.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/maxlength.html
new file mode 100644
index 00000000..caef8db7
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/maxlength.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.maxlength - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./maxlength.html">maxlength</a><br/>
+<br/>
+<h1>maxlength</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$maxlength"></a>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+<p><strong>Getter</strong><br/>
+<p>Maximal length of the text input value.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Maximal length of the text input value.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/name.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/name.html
new file mode 100644
index 00000000..d740f0c6
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/name.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.name - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./name.html">name</a><br/>
+<br/>
+<h1>name</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$name"></a>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">name</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.form/-form-input/name.html">FormInput.name</a></p>
+<p>The name attribute of the generated HTML input element.</p>
+<p><strong>Getter</strong><br/>
+<p>The name attribute of the generated HTML input element.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>The name attribute of the generated HTML input element.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/placeholder.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/placeholder.html
new file mode 100644
index 00000000..4891bd0b
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/placeholder.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.placeholder - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./placeholder.html">placeholder</a><br/>
+<br/>
+<h1>placeholder</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$placeholder"></a>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+<p><strong>Getter</strong><br/>
+<p>The placeholder for the text input.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>The placeholder for the text input.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/readonly.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/readonly.html
new file mode 100644
index 00000000..cb2b662d
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/readonly.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.readonly - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./readonly.html">readonly</a><br/>
+<br/>
+<h1>readonly</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$readonly"></a>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+<p><strong>Getter</strong><br/>
+<p>Determines if the text input is read-only.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Determines if the text input is read-only.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/size.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/size.html
new file mode 100644
index 00000000..10f0d165
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/size.html
@@ -0,0 +1,22 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.size - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./size.html">size</a><br/>
+<br/>
+<h1>size</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$size"></a>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">size</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-input-size/index.html"><span class="identifier">InputSize</span></a><span class="symbol">?</span></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.form/-form-input/size.html">FormInput.size</a></p>
+<p>The size of the input.</p>
+<p><strong>Getter</strong><br/>
+<p>The size of the input.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>The size of the input.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/start-value.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/start-value.html
new file mode 100644
index 00000000..31d55e65
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/start-value.html
@@ -0,0 +1,27 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.startValue - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./start-value.html">startValue</a><br/>
+<br/>
+<h1>startValue</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$startValue"></a>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+<p>This value is placed directly in generated HTML code, while the <a href="value.html">value</a> property is dynamically
+bound to the text input value.</p>
+<p><strong>Getter</strong><br/>
+<p>The value attribute of the generated HTML input element.</p>
+<p>This value is placed directly in generated HTML code, while the <a href="value.html">value</a> property is dynamically
+bound to the text input value.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>The value attribute of the generated HTML input element.</p>
+<p>This value is placed directly in generated HTML code, while the <a href="value.html">value</a> property is dynamically
+bound to the text input value.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text-input/value.html b/api/pl.treksoft.kvision.form.text/-abstract-text-input/value.html
new file mode 100644
index 00000000..6c31c567
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text-input/value.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractTextInput.value - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractTextInput</a>&nbsp;/&nbsp;<a href="./value.html">value</a><br/>
+<br/>
+<h1>value</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractTextInput$value"></a>
+<code><span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Text input value.</p>
+<p><strong>Getter</strong><br/>
+<p>Text input value.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Text input value.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/-init-.html b/api/pl.treksoft.kvision.form.text/-abstract-text/-init-.html
new file mode 100644
index 00000000..6c7212dc
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/-init-.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$&lt;init&gt;(kotlin.String, kotlin.Boolean)"></a>
+<code><span class="identifier">AbstractText</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$<init>(kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$<init>(kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code>
+<h3>Parameters</h3>
+<p><a name="label"></a>
+<code>label</code> - label text bound to the input element</p>
+<p><a name="rich"></a>
+<code>rich</code> - determines if <a href="label.html">label</a> can contain HTML code</p>
+<p><strong>Constructor</strong><br/>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/autofocus.html b/api/pl.treksoft.kvision.form.text/-abstract-text/autofocus.html
new file mode 100644
index 00000000..15351f6f
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/autofocus.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.autofocus - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./autofocus.html">autofocus</a><br/>
+<br/>
+<h1>autofocus</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$autofocus"></a>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/blur.html b/api/pl.treksoft.kvision.form.text/-abstract-text/blur.html
new file mode 100644
index 00000000..fad0bf44
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/blur.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.blur - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./blur.html">blur</a><br/>
+<br/>
+<h1>blur</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$blur()"></a>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.form/-form-control/blur.html">FormControl.blur</a></p>
+<p>Makes the input element blur.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/flabel.html b/api/pl.treksoft.kvision.form.text/-abstract-text/flabel.html
new file mode 100644
index 00000000..733fcfc8
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/flabel.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.flabel - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./flabel.html">flabel</a><br/>
+<br/>
+<h1>flabel</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$flabel"></a>
+<code><span class="keyword">val </span><span class="identifier">flabel</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-field-label/index.html"><span class="identifier">FieldLabel</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.form/-form-control/flabel.html">FormControl.flabel</a></p>
+<p>Form field label.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/focus.html b/api/pl.treksoft.kvision.form.text/-abstract-text/focus.html
new file mode 100644
index 00000000..14a4fdd1
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/focus.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.focus - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./focus.html">focus</a><br/>
+<br/>
+<h1>focus</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$focus()"></a>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.form/-form-control/focus.html">FormControl.focus</a></p>
+<p>Makes the input element focused.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/get-sn-class.html b/api/pl.treksoft.kvision.form.text/-abstract-text/get-sn-class.html
new file mode 100644
index 00000000..c08d18b0
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/get-sn-class.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.getSnClass - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./get-sn-class.html">getSnClass</a><br/>
+<br/>
+<h1>getSnClass</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$getSnClass()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/get-sn-class.html">Widget.getSnClass</a></p>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+<p><strong>Return</strong><br/>
+list of CSS class names</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/index.html b/api/pl.treksoft.kvision.form.text/-abstract-text/index.html
new file mode 100644
index 00000000..820ab7fd
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/index.html
@@ -0,0 +1,318 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">AbstractText</a><br/>
+<br/>
+<h1>AbstractText</h1>
+<code><span class="keyword">abstract</span> <span class="keyword">class </span><span class="identifier">AbstractText</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.panel/-simple-panel/index.html"><span class="identifier">SimplePanel</span></a><span class="symbol">, </span><a href="../../pl.treksoft.kvision.form/-string-form-control/index.html"><span class="identifier">StringFormControl</span></a></code>
+<p>Base class for form field text components.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">AbstractText</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$<init>(kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$<init>(kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="autofocus.html">autofocus</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="flabel.html">flabel</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">flabel</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-field-label/index.html"><span class="identifier">FieldLabel</span></a></code>
+<p>Form field label.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="input.html">input</a></p>
+</td>
+<td>
+<code><span class="keyword">abstract</span> <span class="keyword">val </span><span class="identifier">input</span><span class="symbol">: </span><a href="../-abstract-text-input/index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>The actual input component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="label.html">label</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">label</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The label text bound to the text input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="maxlength.html">maxlength</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="placeholder.html">placeholder</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="readonly.html">readonly</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="rich.html">rich</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">rich</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if <a href="label.html">label</a> can contain HTML code.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="start-value.html">startValue</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="validation-info.html">validationInfo</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">validationInfo</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-help-block/index.html"><span class="identifier">HelpBlock</span></a></code>
+<p>Validation info component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="value.html">value</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Text input value.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="blur.html">blur</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element blur.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="focus.html">focus</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="get-sn-class.html">getSnClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="remove-event-listeners.html">removeEventListeners</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">removeEventListeners</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Removes all event listeners from current widget.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="set-event-listener.html">setEventListener</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">T</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span> <span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.form.text.AbstractText.setEventListener.T)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="set-event-listener.html#T"><span class="identifier">T</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget, keeping the actual type of component.</p>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.core.Widget)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.panel/-simple-panel/add.html">add</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.panel.SimplePanel$add(pl.treksoft.kvision.core.Component)/child">child</span><span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-component/index.html"><span class="identifier">Component</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.panel/-simple-panel/index.html"><span class="identifier">SimplePanel</span></a></code>
+<p>Adds given component to the current container.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.panel/-simple-panel/add-all.html">addAll</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">addAll</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.panel.SimplePanel$addAll(kotlin.collections.List((pl.treksoft.kvision.core.Component)))/children">children</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-component/index.html"><span class="identifier">Component</span></a><span class="symbol">&gt;</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.panel/-simple-panel/index.html"><span class="identifier">SimplePanel</span></a></code>
+<p>Adds a list of components to the current container.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.panel/-simple-panel/add-internal.html">addInternal</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">addInternal</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.panel.SimplePanel$addInternal(pl.treksoft.kvision.core.Component)/child">child</span><span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-component/index.html"><span class="identifier">Component</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.panel/-simple-panel/index.html"><span class="identifier">SimplePanel</span></a></code>
+<p>Protected and final method to add given component to the current container.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.panel/-simple-panel/children-v-nodes.html">childrenVNodes</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">childrenVNodes</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-array/index.html"><span class="identifier">Array</span></a><span class="symbol">&lt;</span><span class="identifier">VNode</span><span class="symbol">&gt;</span></code>
+<p>Returns the array of the children Snabbdom vnodes.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.panel/-simple-panel/get-children.html">getChildren</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getChildren</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-component/index.html"><span class="identifier">Component</span></a><span class="symbol">&gt;</span></code>
+<p>Returns a list of children of the current container.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.form/-string-form-control/get-value.html">getValue</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getValue</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Returns the value of the control.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.form/-string-form-control/get-value-as-string.html">getValueAsString</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getValueAsString</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Returns the value of the control as a String.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.panel/-simple-panel/remove.html">remove</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">remove</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.panel.SimplePanel$remove(pl.treksoft.kvision.core.Component)/child">child</span><span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-component/index.html"><span class="identifier">Component</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.panel/-simple-panel/index.html"><span class="identifier">SimplePanel</span></a></code>
+<p>Removes given component from the current container.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.panel/-simple-panel/remove-all.html">removeAll</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">removeAll</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.panel/-simple-panel/index.html"><span class="identifier">SimplePanel</span></a></code>
+<p>Removes all children from the current container.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.panel/-simple-panel/render.html">render</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code>
+<p>Renders current component as a Snabbdom vnode.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../../pl.treksoft.kvision.form/-string-form-control/set-value.html">setValue</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setValue</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.StringFormControl$setValue(kotlin.Any)/v">v</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html"><span class="identifier">Any</span></a><span class="symbol">?</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Sets the value of the control.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inheritors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-rich-text/index.html">RichText</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">RichText</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">AbstractText</span></a></code>
+<p>Form field rich text component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-text/index.html">Text</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">Text</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">AbstractText</span></a></code>
+<p>Form field text component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-text-area/index.html">TextArea</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">TextArea</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">AbstractText</span></a></code>
+<p>Form field textarea component.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/input.html b/api/pl.treksoft.kvision.form.text/-abstract-text/input.html
new file mode 100644
index 00000000..164fba23
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/input.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.input - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./input.html">input</a><br/>
+<br/>
+<h1>input</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$input"></a>
+<code><span class="keyword">abstract</span> <span class="keyword">val </span><span class="identifier">input</span><span class="symbol">: </span><a href="../-abstract-text-input/index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.form/-form-control/input.html">FormControl.input</a></p>
+<p>The actual input component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/label.html b/api/pl.treksoft.kvision.form.text/-abstract-text/label.html
new file mode 100644
index 00000000..a7694d44
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/label.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.label - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./label.html">label</a><br/>
+<br/>
+<h1>label</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$label"></a>
+<code><span class="keyword">var </span><span class="identifier">label</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The label text bound to the text input element.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/maxlength.html b/api/pl.treksoft.kvision.form.text/-abstract-text/maxlength.html
new file mode 100644
index 00000000..cee6a3cd
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/maxlength.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.maxlength - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./maxlength.html">maxlength</a><br/>
+<br/>
+<h1>maxlength</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$maxlength"></a>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/placeholder.html b/api/pl.treksoft.kvision.form.text/-abstract-text/placeholder.html
new file mode 100644
index 00000000..a77ec12b
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/placeholder.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.placeholder - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./placeholder.html">placeholder</a><br/>
+<br/>
+<h1>placeholder</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$placeholder"></a>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/readonly.html b/api/pl.treksoft.kvision.form.text/-abstract-text/readonly.html
new file mode 100644
index 00000000..4fb522c5
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/readonly.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.readonly - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./readonly.html">readonly</a><br/>
+<br/>
+<h1>readonly</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$readonly"></a>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/remove-event-listeners.html b/api/pl.treksoft.kvision.form.text/-abstract-text/remove-event-listeners.html
new file mode 100644
index 00000000..bd341759
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/remove-event-listeners.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.removeEventListeners - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./remove-event-listeners.html">removeEventListeners</a><br/>
+<br/>
+<h1>removeEventListeners</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$removeEventListeners()"></a>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">removeEventListeners</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/remove-event-listeners.html">Widget.removeEventListeners</a></p>
+<p>Removes all event listeners from current widget.</p>
+<p><strong>Return</strong><br/>
+current widget</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/rich.html b/api/pl.treksoft.kvision.form.text/-abstract-text/rich.html
new file mode 100644
index 00000000..91dbcb4a
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/rich.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.rich - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./rich.html">rich</a><br/>
+<br/>
+<h1>rich</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$rich"></a>
+<code><span class="keyword">var </span><span class="identifier">rich</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if <a href="label.html">label</a> can contain HTML code.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/set-event-listener.html b/api/pl.treksoft.kvision.form.text/-abstract-text/set-event-listener.html
new file mode 100644
index 00000000..b7e101f5
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/set-event-listener.html
@@ -0,0 +1,54 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.setEventListener - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./set-event-listener.html">setEventListener</a><br/>
+<br/>
+<h1>setEventListener</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.form.text.AbstractText.setEventListener.T)), kotlin.Unit)))"></a>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">T</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span> <span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.form.text.AbstractText.setEventListener.T)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="set-event-listener.html#T"><span class="identifier">T</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/set-event-listener.html">Widget.setEventListener</a></p>
+<p>Sets an event listener for current widget, keeping the actual type of component.</p>
+<h3>Parameters</h3>
+<p><a name="T"></a>
+<code>T</code> - widget type</p>
+<p><a name="block"></a>
+<code>block</code> - event handler</p>
+<p><strong>Return</strong><br/>
+<p>current widget</p>
+
+
+<p>Example:</p>
+
+
+<pre><code> button.setEventListener&lt;Button&gt; {
+ dblclick = {
+ Alert.show("Button double clicked!")
+ // self is of type Button here
+ }
+ }</code></pre></p>
+<a name="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.core.Widget)), kotlin.Unit)))"></a>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.core.Widget)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/set-event-listener.html">Widget.setEventListener</a></p>
+<p>Sets an event listener for current widget.</p>
+<h3>Parameters</h3>
+<p><a name="block"></a>
+<code>block</code> - event handler</p>
+<p><strong>Return</strong><br/>
+<p>current widget</p>
+
+
+<p>Example:</p>
+
+
+<pre><code> button.setEventListener {
+ dblclick = {
+ Alert.show("Button double clicked!")
+ // self is of type Widget here
+ }
+ }</code></pre></p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/start-value.html b/api/pl.treksoft.kvision.form.text/-abstract-text/start-value.html
new file mode 100644
index 00000000..01635bc7
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/start-value.html
@@ -0,0 +1,17 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.startValue - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./start-value.html">startValue</a><br/>
+<br/>
+<h1>startValue</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$startValue"></a>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+<p>This value is placed directly in generated HTML code, while the <a href="value.html">value</a> property is dynamically
+bound to the text input value.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/validation-info.html b/api/pl.treksoft.kvision.form.text/-abstract-text/validation-info.html
new file mode 100644
index 00000000..2b8e832f
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/validation-info.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.validationInfo - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./validation-info.html">validationInfo</a><br/>
+<br/>
+<h1>validationInfo</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$validationInfo"></a>
+<code><span class="keyword">val </span><span class="identifier">validationInfo</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-help-block/index.html"><span class="identifier">HelpBlock</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.form/-form-control/validation-info.html">FormControl.validationInfo</a></p>
+<p>Validation info component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-abstract-text/value.html b/api/pl.treksoft.kvision.form.text/-abstract-text/value.html
new file mode 100644
index 00000000..207d6241
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-abstract-text/value.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>AbstractText.value - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">AbstractText</a>&nbsp;/&nbsp;<a href="./value.html">value</a><br/>
+<br/>
+<h1>value</h1>
+<a name="pl.treksoft.kvision.form.text.AbstractText$value"></a>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.form/-string-form-control/value.html">StringFormControl.value</a></p>
+<p>Text input value.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-password/-init-.html b/api/pl.treksoft.kvision.form.text/-password/-init-.html
new file mode 100644
index 00000000..1bc26295
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-password/-init-.html
@@ -0,0 +1,25 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Password.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">Password</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.text.Password$&lt;init&gt;(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)"></a>
+<code><span class="identifier">Password</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.Password$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code>
+<h3>Parameters</h3>
+<p><a name="value"></a>
+<code>value</code> - text input value</p>
+<p><a name="name"></a>
+<code>name</code> - the name attribute of the generated HTML input element</p>
+<p><a name="label"></a>
+<code>label</code> - label text bound to the input element</p>
+<p><a name="rich"></a>
+<code>rich</code> - determines if <a href="#">label</a> can contain HTML code</p>
+<p><strong>Constructor</strong><br/>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-password/index.html b/api/pl.treksoft.kvision.form.text/-password/index.html
new file mode 100644
index 00000000..a6d9b6e0
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-password/index.html
@@ -0,0 +1,72 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Password - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">Password</a><br/>
+<br/>
+<h1>Password</h1>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">Password</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-text/index.html"><span class="identifier">Text</span></a></code>
+<p>Form field password component.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">Password</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.Password$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-text/autocomplete.html">autocomplete</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autocomplete</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if autocomplete is enabled for the input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-text/input.html">input</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">input</span><span class="symbol">: </span><a href="../-text-input/index.html"><span class="identifier">TextInput</span></a></code>
+<p>The actual input component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-text/type.html">type</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">type</span><span class="symbol">: </span><a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a></code>
+<p>Text input type.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Companion Object Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="password.html">password</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">password</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">Password</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Password</span></a></code>
+<p>DSL builder extension function.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-password/password.html b/api/pl.treksoft.kvision.form.text/-password/password.html
new file mode 100644
index 00000000..7a94a0b2
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-password/password.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Password.password - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">Password</a>&nbsp;/&nbsp;<a href="./password.html">password</a><br/>
+<br/>
+<h1>password</h1>
+<a name="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))"></a>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">password</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Password.Companion$password(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Password, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="index.html"><span class="identifier">Password</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Password</span></a></code>
+<p>DSL builder extension function.</p>
+<p>It takes the same parameters as the constructor of the built component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text-input/-init-.html b/api/pl.treksoft.kvision.form.text/-rich-text-input/-init-.html
new file mode 100644
index 00000000..960d96db
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text-input/-init-.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichTextInput.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichTextInput</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.text.RichTextInput$&lt;init&gt;(kotlin.String, kotlin.collections.Set((kotlin.String)))"></a>
+<code><span class="identifier">RichTextInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput$<init>(kotlin.String, kotlin.collections.Set((kotlin.String)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput$<init>(kotlin.String, kotlin.collections.Set((kotlin.String)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">)</span></code>
+<h3>Parameters</h3>
+<p><a name="value"></a>
+<code>value</code> - text input value</p>
+<p><a name="classes"></a>
+<code>classes</code> - a set of CSS class names</p>
+<p><strong>Constructor</strong><br/>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text-input/after-destroy.html b/api/pl.treksoft.kvision.form.text/-rich-text-input/after-destroy.html
new file mode 100644
index 00000000..ba64d80f
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text-input/after-destroy.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichTextInput.afterDestroy - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichTextInput</a>&nbsp;/&nbsp;<a href="./after-destroy.html">afterDestroy</a><br/>
+<br/>
+<h1>afterDestroy</h1>
+<a name="pl.treksoft.kvision.form.text.RichTextInput$afterDestroy()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterDestroy</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/after-destroy.html">Widget.afterDestroy</a></p>
+<p>Method called after destroying Snabbdom vnode.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text-input/after-insert.html b/api/pl.treksoft.kvision.form.text/-rich-text-input/after-insert.html
new file mode 100644
index 00000000..9f9d720a
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text-input/after-insert.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichTextInput.afterInsert - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichTextInput</a>&nbsp;/&nbsp;<a href="./after-insert.html">afterInsert</a><br/>
+<br/>
+<h1>afterInsert</h1>
+<a name="pl.treksoft.kvision.form.text.RichTextInput$afterInsert(com.github.snabbdom.VNode)"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterInsert</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput$afterInsert(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Overrides <a href="../-abstract-text-input/after-insert.html">AbstractTextInput.afterInsert</a></p>
+<p>Method called after inserting Snabbdom vnode into the DOM.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text-input/get-sn-attrs.html b/api/pl.treksoft.kvision.form.text/-rich-text-input/get-sn-attrs.html
new file mode 100644
index 00000000..80e29d05
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text-input/get-sn-attrs.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichTextInput.getSnAttrs - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichTextInput</a>&nbsp;/&nbsp;<a href="./get-sn-attrs.html">getSnAttrs</a><br/>
+<br/>
+<h1>getSnAttrs</h1>
+<a name="pl.treksoft.kvision.form.text.RichTextInput$getSnAttrs()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnAttrs</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-pair.html"><span class="identifier">StringPair</span></a><span class="symbol">&gt;</span></code>
+<p>Overrides <a href="../-abstract-text-input/get-sn-attrs.html">AbstractTextInput.getSnAttrs</a></p>
+<p>Returns list of element attributes in the form of a List.</p>
+<p><strong>Return</strong><br/>
+list of element attributes</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text-input/index.html b/api/pl.treksoft.kvision.form.text/-rich-text-input/index.html
new file mode 100644
index 00000000..c3850463
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text-input/index.html
@@ -0,0 +1,208 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichTextInput - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">RichTextInput</a><br/>
+<br/>
+<h1>RichTextInput</h1>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">RichTextInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-abstract-text-input/index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Basic rich text component.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">RichTextInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput$<init>(kotlin.String, kotlin.collections.Set((kotlin.String)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput$<init>(kotlin.String, kotlin.collections.Set((kotlin.String)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/autofocus.html">autofocus</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/disabled.html">disabled</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">disabled</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if the field is disabled.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/maxlength.html">maxlength</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/name.html">name</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">name</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The name attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/placeholder.html">placeholder</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/readonly.html">readonly</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/size.html">size</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">size</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-input-size/index.html"><span class="identifier">InputSize</span></a><span class="symbol">?</span></code>
+<p>The size of the input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/start-value.html">startValue</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/value.html">value</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Text input value.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="after-destroy.html">afterDestroy</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterDestroy</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after destroying Snabbdom vnode.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="after-insert.html">afterInsert</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterInsert</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput$afterInsert(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after inserting Snabbdom vnode into the DOM.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="get-sn-attrs.html">getSnAttrs</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnAttrs</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-pair.html"><span class="identifier">StringPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of element attributes in the form of a List.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="render.html">render</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code>
+<p>Renders current component as a Snabbdom vnode.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/after-postpatch.html">afterPostpatch</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterPostpatch</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$afterPostpatch(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after updating Snabbdom vnode.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/blur.html">blur</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element blur.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/focus.html">focus</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/get-sn-class.html">getSnClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Companion Object Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="rich-text-input.html">richTextInput</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">richTextInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput.Companion$richTextInput(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.RichTextInput, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput.Companion$richTextInput(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.RichTextInput, kotlin.Unit)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput.Companion$richTextInput(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.RichTextInput, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">RichTextInput</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">RichTextInput</span></a></code>
+<p>DSL builder extension function.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text-input/render.html b/api/pl.treksoft.kvision.form.text/-rich-text-input/render.html
new file mode 100644
index 00000000..ad34258c
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text-input/render.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichTextInput.render - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichTextInput</a>&nbsp;/&nbsp;<a href="./render.html">render</a><br/>
+<br/>
+<h1>render</h1>
+<a name="pl.treksoft.kvision.form.text.RichTextInput$render()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/render.html">Widget.render</a></p>
+<p>Renders current component as a Snabbdom vnode.</p>
+<p><strong>Return</strong><br/>
+Snabbdom vnode</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text-input/rich-text-input.html b/api/pl.treksoft.kvision.form.text/-rich-text-input/rich-text-input.html
new file mode 100644
index 00000000..3720d993
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text-input/rich-text-input.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichTextInput.richTextInput - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichTextInput</a>&nbsp;/&nbsp;<a href="./rich-text-input.html">richTextInput</a><br/>
+<br/>
+<h1>richTextInput</h1>
+<a name="pl.treksoft.kvision.form.text.RichTextInput.Companion$richTextInput(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.RichTextInput, kotlin.Unit)))"></a>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">richTextInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput.Companion$richTextInput(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.RichTextInput, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput.Companion$richTextInput(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.RichTextInput, kotlin.Unit)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichTextInput.Companion$richTextInput(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.RichTextInput, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="index.html"><span class="identifier">RichTextInput</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">RichTextInput</span></a></code>
+<p>DSL builder extension function.</p>
+<p>It takes the same parameters as the constructor of the built component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text/-init-.html b/api/pl.treksoft.kvision.form.text/-rich-text/-init-.html
new file mode 100644
index 00000000..5727433a
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text/-init-.html
@@ -0,0 +1,25 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichText.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichText</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.text.RichText$&lt;init&gt;(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)"></a>
+<code><span class="identifier">RichText</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code>
+<h3>Parameters</h3>
+<p><a name="value"></a>
+<code>value</code> - text input value</p>
+<p><a name="name"></a>
+<code>name</code> - the name attribute of the generated HTML input element</p>
+<p><a name="label"></a>
+<code>label</code> - label text bound to the input element</p>
+<p><a name="rich"></a>
+<code>rich</code> - determines if <a href="../-abstract-text/label.html">label</a> can contain HTML code</p>
+<p><strong>Constructor</strong><br/>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text/index.html b/api/pl.treksoft.kvision.form.text/-rich-text/index.html
new file mode 100644
index 00000000..71ee0dc8
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text/index.html
@@ -0,0 +1,210 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichText - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">RichText</a><br/>
+<br/>
+<h1>RichText</h1>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">RichText</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-abstract-text/index.html"><span class="identifier">AbstractText</span></a></code>
+<p>Form field rich text component.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">RichText</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText$<init>(kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="input.html">input</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">input</span><span class="symbol">: </span><a href="../-rich-text-input/index.html"><span class="identifier">RichTextInput</span></a></code>
+<p>The actual input component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="input-height.html">inputHeight</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">inputHeight</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-css-size.html"><span class="identifier">CssSize</span></a><span class="symbol">?</span></code>
+<p>Rich input control height.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text/autofocus.html">autofocus</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/flabel.html">flabel</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">flabel</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-field-label/index.html"><span class="identifier">FieldLabel</span></a></code>
+<p>Form field label.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/label.html">label</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">label</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The label text bound to the text input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/maxlength.html">maxlength</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/placeholder.html">placeholder</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/readonly.html">readonly</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/rich.html">rich</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">rich</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if <a href="../-abstract-text/label.html">label</a> can contain HTML code.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/start-value.html">startValue</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/validation-info.html">validationInfo</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">validationInfo</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-help-block/index.html"><span class="identifier">HelpBlock</span></a></code>
+<p>Validation info component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/value.html">value</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Text input value.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text/blur.html">blur</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element blur.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/focus.html">focus</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/get-sn-class.html">getSnClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/remove-event-listeners.html">removeEventListeners</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">removeEventListeners</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Removes all event listeners from current widget.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/set-event-listener.html">setEventListener</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">T</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span> <span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.form.text.AbstractText.setEventListener.T)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../-abstract-text/set-event-listener.html#T"><span class="identifier">T</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget, keeping the actual type of component.</p>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.core.Widget)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Companion Object Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="rich-text.html">richText</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">richText</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">RichText</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">RichText</span></a></code>
+<p>DSL builder extension function.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text/input-height.html b/api/pl.treksoft.kvision.form.text/-rich-text/input-height.html
new file mode 100644
index 00000000..13c8d8dd
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text/input-height.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichText.inputHeight - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichText</a>&nbsp;/&nbsp;<a href="./input-height.html">inputHeight</a><br/>
+<br/>
+<h1>inputHeight</h1>
+<a name="pl.treksoft.kvision.form.text.RichText$inputHeight"></a>
+<code><span class="keyword">var </span><span class="identifier">inputHeight</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-css-size.html"><span class="identifier">CssSize</span></a><span class="symbol">?</span></code>
+<p>Rich input control height.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text/input.html b/api/pl.treksoft.kvision.form.text/-rich-text/input.html
new file mode 100644
index 00000000..fdba0d9d
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text/input.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichText.input - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichText</a>&nbsp;/&nbsp;<a href="./input.html">input</a><br/>
+<br/>
+<h1>input</h1>
+<a name="pl.treksoft.kvision.form.text.RichText$input"></a>
+<code><span class="keyword">val </span><span class="identifier">input</span><span class="symbol">: </span><a href="../-rich-text-input/index.html"><span class="identifier">RichTextInput</span></a></code>
+<p>Overrides <a href="../-abstract-text/input.html">AbstractText.input</a></p>
+<p>The actual input component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-rich-text/rich-text.html b/api/pl.treksoft.kvision.form.text/-rich-text/rich-text.html
new file mode 100644
index 00000000..2dd27587
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-rich-text/rich-text.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>RichText.richText - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">RichText</a>&nbsp;/&nbsp;<a href="./rich-text.html">richText</a><br/>
+<br/>
+<h1>richText</h1>
+<a name="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))"></a>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">richText</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.RichText.Companion$richText(pl.treksoft.kvision.core.Container, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.RichText, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="index.html"><span class="identifier">RichText</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">RichText</span></a></code>
+<p>DSL builder extension function.</p>
+<p>It takes the same parameters as the constructor of the built component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area-input/-init-.html b/api/pl.treksoft.kvision.form.text/-text-area-input/-init-.html
new file mode 100644
index 00000000..b97eca51
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area-input/-init-.html
@@ -0,0 +1,25 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextAreaInput.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextAreaInput</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.text.TextAreaInput$&lt;init&gt;(kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)))"></a>
+<code><span class="identifier">TextAreaInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)))/cols">cols</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)))/rows">rows</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">)</span></code>
+<h3>Parameters</h3>
+<p><a name="cols"></a>
+<code>cols</code> - number of columns</p>
+<p><a name="rows"></a>
+<code>rows</code> - number of rows</p>
+<p><a name="value"></a>
+<code>value</code> - text input value</p>
+<p><a name="classes"></a>
+<code>classes</code> - a set of CSS class names</p>
+<p><strong>Constructor</strong><br/>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area-input/cols.html b/api/pl.treksoft.kvision.form.text/-text-area-input/cols.html
new file mode 100644
index 00000000..bb10e4d8
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area-input/cols.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextAreaInput.cols - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextAreaInput</a>&nbsp;/&nbsp;<a href="./cols.html">cols</a><br/>
+<br/>
+<h1>cols</h1>
+<a name="pl.treksoft.kvision.form.text.TextAreaInput$cols"></a>
+<code><span class="keyword">var </span><span class="identifier">cols</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Number of columns.</p>
+<p><strong>Getter</strong><br/>
+<p>Number of columns.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Number of columns.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area-input/get-sn-attrs.html b/api/pl.treksoft.kvision.form.text/-text-area-input/get-sn-attrs.html
new file mode 100644
index 00000000..454e13de
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area-input/get-sn-attrs.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextAreaInput.getSnAttrs - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextAreaInput</a>&nbsp;/&nbsp;<a href="./get-sn-attrs.html">getSnAttrs</a><br/>
+<br/>
+<h1>getSnAttrs</h1>
+<a name="pl.treksoft.kvision.form.text.TextAreaInput$getSnAttrs()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnAttrs</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-pair.html"><span class="identifier">StringPair</span></a><span class="symbol">&gt;</span></code>
+<p>Overrides <a href="../-abstract-text-input/get-sn-attrs.html">AbstractTextInput.getSnAttrs</a></p>
+<p>Returns list of element attributes in the form of a List.</p>
+<p><strong>Return</strong><br/>
+list of element attributes</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area-input/index.html b/api/pl.treksoft.kvision.form.text/-text-area-input/index.html
new file mode 100644
index 00000000..b356b410
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area-input/index.html
@@ -0,0 +1,231 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextAreaInput - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">TextAreaInput</a><br/>
+<br/>
+<h1>TextAreaInput</h1>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">TextAreaInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-abstract-text-input/index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Basic textarea component.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">TextAreaInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)))/cols">cols</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)))/rows">rows</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="cols.html">cols</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">cols</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Number of columns.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="rows.html">rows</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">rows</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Number of rows.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="wrap-hard.html">wrapHard</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">wrapHard</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if hard wrapping is enabled for the textarea element.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/autofocus.html">autofocus</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/disabled.html">disabled</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">disabled</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if the field is disabled.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/maxlength.html">maxlength</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/name.html">name</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">name</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The name attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/placeholder.html">placeholder</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/readonly.html">readonly</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/size.html">size</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">size</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-input-size/index.html"><span class="identifier">InputSize</span></a><span class="symbol">?</span></code>
+<p>The size of the input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/start-value.html">startValue</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/value.html">value</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Text input value.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="get-sn-attrs.html">getSnAttrs</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnAttrs</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-pair.html"><span class="identifier">StringPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of element attributes in the form of a List.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="render.html">render</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code>
+<p>Renders current component as a Snabbdom vnode.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/after-insert.html">afterInsert</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterInsert</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$afterInsert(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after inserting Snabbdom vnode into the DOM.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/after-postpatch.html">afterPostpatch</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterPostpatch</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$afterPostpatch(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after updating Snabbdom vnode.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/blur.html">blur</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element blur.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/focus.html">focus</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/get-sn-class.html">getSnClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Companion Object Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="text-area-input.html">textAreaInput</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">textAreaInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/cols">cols</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/rows">rows</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">TextAreaInput</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">TextAreaInput</span></a></code>
+<p>DSL builder extension function.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area-input/render.html b/api/pl.treksoft.kvision.form.text/-text-area-input/render.html
new file mode 100644
index 00000000..d38d0d73
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area-input/render.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextAreaInput.render - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextAreaInput</a>&nbsp;/&nbsp;<a href="./render.html">render</a><br/>
+<br/>
+<h1>render</h1>
+<a name="pl.treksoft.kvision.form.text.TextAreaInput$render()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/render.html">Widget.render</a></p>
+<p>Renders current component as a Snabbdom vnode.</p>
+<p><strong>Return</strong><br/>
+Snabbdom vnode</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area-input/rows.html b/api/pl.treksoft.kvision.form.text/-text-area-input/rows.html
new file mode 100644
index 00000000..5f0697f0
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area-input/rows.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextAreaInput.rows - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextAreaInput</a>&nbsp;/&nbsp;<a href="./rows.html">rows</a><br/>
+<br/>
+<h1>rows</h1>
+<a name="pl.treksoft.kvision.form.text.TextAreaInput$rows"></a>
+<code><span class="keyword">var </span><span class="identifier">rows</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Number of rows.</p>
+<p><strong>Getter</strong><br/>
+<p>Number of rows.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Number of rows.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area-input/text-area-input.html b/api/pl.treksoft.kvision.form.text/-text-area-input/text-area-input.html
new file mode 100644
index 00000000..c3a2a003
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area-input/text-area-input.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextAreaInput.textAreaInput - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextAreaInput</a>&nbsp;/&nbsp;<a href="./text-area-input.html">textAreaInput</a><br/>
+<br/>
+<h1>textAreaInput</h1>
+<a name="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))"></a>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">textAreaInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/cols">cols</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/rows">rows</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextAreaInput.Companion$textAreaInput(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextAreaInput, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="index.html"><span class="identifier">TextAreaInput</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">TextAreaInput</span></a></code>
+<p>DSL builder extension function.</p>
+<p>It takes the same parameters as the constructor of the built component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area-input/wrap-hard.html b/api/pl.treksoft.kvision.form.text/-text-area-input/wrap-hard.html
new file mode 100644
index 00000000..782b9997
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area-input/wrap-hard.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextAreaInput.wrapHard - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextAreaInput</a>&nbsp;/&nbsp;<a href="./wrap-hard.html">wrapHard</a><br/>
+<br/>
+<h1>wrapHard</h1>
+<a name="pl.treksoft.kvision.form.text.TextAreaInput$wrapHard"></a>
+<code><span class="keyword">var </span><span class="identifier">wrapHard</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if hard wrapping is enabled for the textarea element.</p>
+<p><strong>Getter</strong><br/>
+<p>Determines if hard wrapping is enabled for the textarea element.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Determines if hard wrapping is enabled for the textarea element.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area/-init-.html b/api/pl.treksoft.kvision.form.text/-text-area/-init-.html
new file mode 100644
index 00000000..7878587a
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area/-init-.html
@@ -0,0 +1,29 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextArea.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextArea</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.text.TextArea$&lt;init&gt;(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)"></a>
+<code><span class="identifier">TextArea</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/cols">cols</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rows">rows</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code>
+<h3>Parameters</h3>
+<p><a name="cols"></a>
+<code>cols</code> - number of columns</p>
+<p><a name="rows"></a>
+<code>rows</code> - number of rows</p>
+<p><a name="value"></a>
+<code>value</code> - text input value</p>
+<p><a name="name"></a>
+<code>name</code> - the name attribute of the generated HTML input element</p>
+<p><a name="label"></a>
+<code>label</code> - label text bound to the input element</p>
+<p><a name="rich"></a>
+<code>rich</code> - determines if <a href="../-abstract-text/label.html">label</a> can contain HTML code</p>
+<p><strong>Constructor</strong><br/>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area/cols.html b/api/pl.treksoft.kvision.form.text/-text-area/cols.html
new file mode 100644
index 00000000..2a2c9bc0
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area/cols.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextArea.cols - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextArea</a>&nbsp;/&nbsp;<a href="./cols.html">cols</a><br/>
+<br/>
+<h1>cols</h1>
+<a name="pl.treksoft.kvision.form.text.TextArea$cols"></a>
+<code><span class="keyword">var </span><span class="identifier">cols</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Number of columns.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area/index.html b/api/pl.treksoft.kvision.form.text/-text-area/index.html
new file mode 100644
index 00000000..be73c823
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area/index.html
@@ -0,0 +1,228 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextArea - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">TextArea</a><br/>
+<br/>
+<h1>TextArea</h1>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">TextArea</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-abstract-text/index.html"><span class="identifier">AbstractText</span></a></code>
+<p>Form field textarea component.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">TextArea</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/cols">cols</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rows">rows</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea$<init>(kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="cols.html">cols</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">cols</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Number of columns.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="input.html">input</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">input</span><span class="symbol">: </span><a href="../-text-area-input/index.html"><span class="identifier">TextAreaInput</span></a></code>
+<p>The actual input component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="rows.html">rows</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">rows</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Number of rows.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="wrap-hard.html">wrapHard</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">wrapHard</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if hard wrapping is enabled for the textarea element.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text/autofocus.html">autofocus</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/flabel.html">flabel</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">flabel</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-field-label/index.html"><span class="identifier">FieldLabel</span></a></code>
+<p>Form field label.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/label.html">label</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">label</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The label text bound to the text input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/maxlength.html">maxlength</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/placeholder.html">placeholder</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/readonly.html">readonly</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/rich.html">rich</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">rich</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if <a href="../-abstract-text/label.html">label</a> can contain HTML code.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/start-value.html">startValue</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/validation-info.html">validationInfo</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">validationInfo</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-help-block/index.html"><span class="identifier">HelpBlock</span></a></code>
+<p>Validation info component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/value.html">value</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Text input value.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text/blur.html">blur</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element blur.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/focus.html">focus</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/get-sn-class.html">getSnClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/remove-event-listeners.html">removeEventListeners</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">removeEventListeners</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Removes all event listeners from current widget.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/set-event-listener.html">setEventListener</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">T</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span> <span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.form.text.AbstractText.setEventListener.T)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../-abstract-text/set-event-listener.html#T"><span class="identifier">T</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget, keeping the actual type of component.</p>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.core.Widget)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Companion Object Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="text-area.html">textArea</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">textArea</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/cols">cols</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/rows">rows</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">TextArea</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">TextArea</span></a></code>
+<p>DSL builder extension function.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area/input.html b/api/pl.treksoft.kvision.form.text/-text-area/input.html
new file mode 100644
index 00000000..b7bec406
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area/input.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextArea.input - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextArea</a>&nbsp;/&nbsp;<a href="./input.html">input</a><br/>
+<br/>
+<h1>input</h1>
+<a name="pl.treksoft.kvision.form.text.TextArea$input"></a>
+<code><span class="keyword">val </span><span class="identifier">input</span><span class="symbol">: </span><a href="../-text-area-input/index.html"><span class="identifier">TextAreaInput</span></a></code>
+<p>Overrides <a href="../-abstract-text/input.html">AbstractText.input</a></p>
+<p>The actual input component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area/rows.html b/api/pl.treksoft.kvision.form.text/-text-area/rows.html
new file mode 100644
index 00000000..a1c00d2d
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area/rows.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextArea.rows - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextArea</a>&nbsp;/&nbsp;<a href="./rows.html">rows</a><br/>
+<br/>
+<h1>rows</h1>
+<a name="pl.treksoft.kvision.form.text.TextArea$rows"></a>
+<code><span class="keyword">var </span><span class="identifier">rows</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Number of rows.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area/text-area.html b/api/pl.treksoft.kvision.form.text/-text-area/text-area.html
new file mode 100644
index 00000000..0aa43c36
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area/text-area.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextArea.textArea - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextArea</a>&nbsp;/&nbsp;<a href="./text-area.html">textArea</a><br/>
+<br/>
+<h1>textArea</h1>
+<a name="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))"></a>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">textArea</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/cols">cols</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/rows">rows</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextArea.Companion$textArea(pl.treksoft.kvision.core.Container, kotlin.Int, kotlin.Int, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.TextArea, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="index.html"><span class="identifier">TextArea</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">TextArea</span></a></code>
+<p>DSL builder extension function.</p>
+<p>It takes the same parameters as the constructor of the built component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-area/wrap-hard.html b/api/pl.treksoft.kvision.form.text/-text-area/wrap-hard.html
new file mode 100644
index 00000000..2bbec808
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-area/wrap-hard.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextArea.wrapHard - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextArea</a>&nbsp;/&nbsp;<a href="./wrap-hard.html">wrapHard</a><br/>
+<br/>
+<h1>wrapHard</h1>
+<a name="pl.treksoft.kvision.form.text.TextArea$wrapHard"></a>
+<code><span class="keyword">var </span><span class="identifier">wrapHard</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if hard wrapping is enabled for the textarea element.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input-type/-c-o-l-o-r.html b/api/pl.treksoft.kvision.form.text/-text-input-type/-c-o-l-o-r.html
new file mode 100644
index 00000000..3dfcc960
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input-type/-c-o-l-o-r.html
@@ -0,0 +1,14 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInputType.COLOR - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInputType</a>&nbsp;/&nbsp;<a href="./-c-o-l-o-r.html">COLOR</a><br/>
+<br/>
+<h1>COLOR</h1>
+<a name="pl.treksoft.kvision.form.text.TextInputType.COLOR"></a>
+<code><span class="identifier">COLOR</span></code>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input-type/-e-m-a-i-l.html b/api/pl.treksoft.kvision.form.text/-text-input-type/-e-m-a-i-l.html
new file mode 100644
index 00000000..8d60aee6
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input-type/-e-m-a-i-l.html
@@ -0,0 +1,14 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInputType.EMAIL - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInputType</a>&nbsp;/&nbsp;<a href="./-e-m-a-i-l.html">EMAIL</a><br/>
+<br/>
+<h1>EMAIL</h1>
+<a name="pl.treksoft.kvision.form.text.TextInputType.EMAIL"></a>
+<code><span class="identifier">EMAIL</span></code>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input-type/-p-a-s-s-w-o-r-d.html b/api/pl.treksoft.kvision.form.text/-text-input-type/-p-a-s-s-w-o-r-d.html
new file mode 100644
index 00000000..228db9d4
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input-type/-p-a-s-s-w-o-r-d.html
@@ -0,0 +1,14 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInputType.PASSWORD - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInputType</a>&nbsp;/&nbsp;<a href="./-p-a-s-s-w-o-r-d.html">PASSWORD</a><br/>
+<br/>
+<h1>PASSWORD</h1>
+<a name="pl.treksoft.kvision.form.text.TextInputType.PASSWORD"></a>
+<code><span class="identifier">PASSWORD</span></code>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input-type/-s-e-a-r-c-h.html b/api/pl.treksoft.kvision.form.text/-text-input-type/-s-e-a-r-c-h.html
new file mode 100644
index 00000000..4335f497
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input-type/-s-e-a-r-c-h.html
@@ -0,0 +1,14 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInputType.SEARCH - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInputType</a>&nbsp;/&nbsp;<a href="./-s-e-a-r-c-h.html">SEARCH</a><br/>
+<br/>
+<h1>SEARCH</h1>
+<a name="pl.treksoft.kvision.form.text.TextInputType.SEARCH"></a>
+<code><span class="identifier">SEARCH</span></code>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input-type/-t-e-l.html b/api/pl.treksoft.kvision.form.text/-text-input-type/-t-e-l.html
new file mode 100644
index 00000000..91303db0
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input-type/-t-e-l.html
@@ -0,0 +1,14 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInputType.TEL - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInputType</a>&nbsp;/&nbsp;<a href="./-t-e-l.html">TEL</a><br/>
+<br/>
+<h1>TEL</h1>
+<a name="pl.treksoft.kvision.form.text.TextInputType.TEL"></a>
+<code><span class="identifier">TEL</span></code>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input-type/-t-e-x-t.html b/api/pl.treksoft.kvision.form.text/-text-input-type/-t-e-x-t.html
new file mode 100644
index 00000000..11dd285e
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input-type/-t-e-x-t.html
@@ -0,0 +1,14 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInputType.TEXT - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInputType</a>&nbsp;/&nbsp;<a href="./-t-e-x-t.html">TEXT</a><br/>
+<br/>
+<h1>TEXT</h1>
+<a name="pl.treksoft.kvision.form.text.TextInputType.TEXT"></a>
+<code><span class="identifier">TEXT</span></code>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input-type/-u-r-l.html b/api/pl.treksoft.kvision.form.text/-text-input-type/-u-r-l.html
new file mode 100644
index 00000000..7d347fb8
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input-type/-u-r-l.html
@@ -0,0 +1,14 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInputType.URL - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInputType</a>&nbsp;/&nbsp;<a href="./-u-r-l.html">URL</a><br/>
+<br/>
+<h1>URL</h1>
+<a name="pl.treksoft.kvision.form.text.TextInputType.URL"></a>
+<code><span class="identifier">URL</span></code>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input-type/index.html b/api/pl.treksoft.kvision.form.text/-text-input-type/index.html
new file mode 100644
index 00000000..86f035fc
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input-type/index.html
@@ -0,0 +1,68 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInputType - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">TextInputType</a><br/>
+<br/>
+<h1>TextInputType</h1>
+<code><span class="keyword">enum</span> <span class="keyword">class </span><span class="identifier">TextInputType</span></code>
+<p>Text input types.</p>
+<h3>Enum Values</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-t-e-x-t.html">TEXT</a></p>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-p-a-s-s-w-o-r-d.html">PASSWORD</a></p>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-e-m-a-i-l.html">EMAIL</a></p>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-t-e-l.html">TEL</a></p>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-c-o-l-o-r.html">COLOR</a></p>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-s-e-a-r-c-h.html">SEARCH</a></p>
+</td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-u-r-l.html">URL</a></p>
+</td>
+<td>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input/-init-.html b/api/pl.treksoft.kvision.form.text/-text-input/-init-.html
new file mode 100644
index 00000000..33fb9e47
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input/-init-.html
@@ -0,0 +1,23 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInput.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInput</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.text.TextInput$&lt;init&gt;(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)))"></a>
+<code><span class="identifier">TextInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)))/type">type</span><span class="symbol">:</span>&nbsp;<a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a>&nbsp;<span class="symbol">=</span>&nbsp;TextInputType.TEXT<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">)</span></code>
+<h3>Parameters</h3>
+<p><a name="type"></a>
+<code>type</code> - text input type (default "text")</p>
+<p><a name="value"></a>
+<code>value</code> - text input value</p>
+<p><a name="classes"></a>
+<code>classes</code> - a set of CSS class names</p>
+<p><strong>Constructor</strong><br/>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input/autocomplete.html b/api/pl.treksoft.kvision.form.text/-text-input/autocomplete.html
new file mode 100644
index 00000000..3ae2b0fd
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input/autocomplete.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInput.autocomplete - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInput</a>&nbsp;/&nbsp;<a href="./autocomplete.html">autocomplete</a><br/>
+<br/>
+<h1>autocomplete</h1>
+<a name="pl.treksoft.kvision.form.text.TextInput$autocomplete"></a>
+<code><span class="keyword">var </span><span class="identifier">autocomplete</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if autocomplete is enabled for the input element.</p>
+<p><strong>Getter</strong><br/>
+<p>Determines if autocomplete is enabled for the input element.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Determines if autocomplete is enabled for the input element.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input/get-sn-attrs.html b/api/pl.treksoft.kvision.form.text/-text-input/get-sn-attrs.html
new file mode 100644
index 00000000..02865712
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input/get-sn-attrs.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInput.getSnAttrs - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInput</a>&nbsp;/&nbsp;<a href="./get-sn-attrs.html">getSnAttrs</a><br/>
+<br/>
+<h1>getSnAttrs</h1>
+<a name="pl.treksoft.kvision.form.text.TextInput$getSnAttrs()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnAttrs</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-pair.html"><span class="identifier">StringPair</span></a><span class="symbol">&gt;</span></code>
+<p>Overrides <a href="../-abstract-text-input/get-sn-attrs.html">AbstractTextInput.getSnAttrs</a></p>
+<p>Returns list of element attributes in the form of a List.</p>
+<p><strong>Return</strong><br/>
+list of element attributes</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input/index.html b/api/pl.treksoft.kvision.form.text/-text-input/index.html
new file mode 100644
index 00000000..b0aaf546
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input/index.html
@@ -0,0 +1,222 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInput - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">TextInput</a><br/>
+<br/>
+<h1>TextInput</h1>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">TextInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-abstract-text-input/index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Basic text component.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">TextInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)))/type">type</span><span class="symbol">:</span>&nbsp;<a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a>&nbsp;<span class="symbol">=</span>&nbsp;TextInputType.TEXT<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="autocomplete.html">autocomplete</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autocomplete</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if autocomplete is enabled for the input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="type.html">type</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">type</span><span class="symbol">: </span><a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a></code>
+<p>Text input type.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/autofocus.html">autofocus</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/disabled.html">disabled</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">disabled</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if the field is disabled.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/maxlength.html">maxlength</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/name.html">name</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">name</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The name attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/placeholder.html">placeholder</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/readonly.html">readonly</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/size.html">size</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">size</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-input-size/index.html"><span class="identifier">InputSize</span></a><span class="symbol">?</span></code>
+<p>The size of the input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/start-value.html">startValue</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/value.html">value</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Text input value.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="get-sn-attrs.html">getSnAttrs</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnAttrs</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-pair.html"><span class="identifier">StringPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of element attributes in the form of a List.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="render.html">render</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code>
+<p>Renders current component as a Snabbdom vnode.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/after-insert.html">afterInsert</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterInsert</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$afterInsert(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after inserting Snabbdom vnode into the DOM.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/after-postpatch.html">afterPostpatch</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">afterPostpatch</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractTextInput$afterPostpatch(com.github.snabbdom.VNode)/node">node</span><span class="symbol">:</span>&nbsp;<span class="identifier">VNode</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Method called after updating Snabbdom vnode.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/blur.html">blur</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element blur.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/focus.html">focus</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text-input/get-sn-class.html">getSnClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Companion Object Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="text-input.html">textInput</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">textInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput.Companion$textInput(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextInput, kotlin.Unit)))/type">type</span><span class="symbol">:</span>&nbsp;<a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a>&nbsp;<span class="symbol">=</span>&nbsp;TextInputType.TEXT<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput.Companion$textInput(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextInput, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput.Companion$textInput(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextInput, kotlin.Unit)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput.Companion$textInput(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextInput, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">TextInput</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">TextInput</span></a></code>
+<p>DSL builder extension function.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input/render.html b/api/pl.treksoft.kvision.form.text/-text-input/render.html
new file mode 100644
index 00000000..9c969109
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input/render.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInput.render - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInput</a>&nbsp;/&nbsp;<a href="./render.html">render</a><br/>
+<br/>
+<h1>render</h1>
+<a name="pl.treksoft.kvision.form.text.TextInput$render()"></a>
+<code><span class="keyword">protected</span> <span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">render</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">VNode</span></code>
+<p>Overrides <a href="../../pl.treksoft.kvision.core/-widget/render.html">Widget.render</a></p>
+<p>Renders current component as a Snabbdom vnode.</p>
+<p><strong>Return</strong><br/>
+Snabbdom vnode</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input/text-input.html b/api/pl.treksoft.kvision.form.text/-text-input/text-input.html
new file mode 100644
index 00000000..966ce879
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input/text-input.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInput.textInput - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInput</a>&nbsp;/&nbsp;<a href="./text-input.html">textInput</a><br/>
+<br/>
+<h1>textInput</h1>
+<a name="pl.treksoft.kvision.form.text.TextInput.Companion$textInput(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextInput, kotlin.Unit)))"></a>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">textInput</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput.Companion$textInput(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextInput, kotlin.Unit)))/type">type</span><span class="symbol">:</span>&nbsp;<a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a>&nbsp;<span class="symbol">=</span>&nbsp;TextInputType.TEXT<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput.Companion$textInput(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextInput, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput.Companion$textInput(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextInput, kotlin.Unit)))/classes">classes</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html"><span class="identifier">Set</span></a><span class="symbol">&lt;</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">&gt;</span>&nbsp;<span class="symbol">=</span>&nbsp;setOf()<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.TextInput.Companion$textInput(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.collections.Set((kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.text.TextInput, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="index.html"><span class="identifier">TextInput</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">TextInput</span></a></code>
+<p>DSL builder extension function.</p>
+<p>It takes the same parameters as the constructor of the built component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text-input/type.html b/api/pl.treksoft.kvision.form.text/-text-input/type.html
new file mode 100644
index 00000000..51ef2a9f
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text-input/type.html
@@ -0,0 +1,21 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>TextInput.type - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">TextInput</a>&nbsp;/&nbsp;<a href="./type.html">type</a><br/>
+<br/>
+<h1>type</h1>
+<a name="pl.treksoft.kvision.form.text.TextInput$type"></a>
+<code><span class="keyword">var </span><span class="identifier">type</span><span class="symbol">: </span><a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a></code>
+<p>Text input type.</p>
+<p><strong>Getter</strong><br/>
+<p>Text input type.</p>
+</p>
+<p><strong>Setter</strong><br/>
+<p>Text input type.</p>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text/-init-.html b/api/pl.treksoft.kvision.form.text/-text/-init-.html
new file mode 100644
index 00000000..530d8779
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text/-init-.html
@@ -0,0 +1,27 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Text.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">Text</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.text.Text$&lt;init&gt;(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)"></a>
+<code><span class="identifier">Text</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/type">type</span><span class="symbol">:</span>&nbsp;<a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a>&nbsp;<span class="symbol">=</span>&nbsp;TextInputType.TEXT<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code>
+<h3>Parameters</h3>
+<p><a name="type"></a>
+<code>type</code> - text input type (default "text")</p>
+<p><a name="value"></a>
+<code>value</code> - text input value</p>
+<p><a name="name"></a>
+<code>name</code> - the name attribute of the generated HTML input element</p>
+<p><a name="label"></a>
+<code>label</code> - label text bound to the input element</p>
+<p><a name="rich"></a>
+<code>rich</code> - determines if <a href="../-abstract-text/label.html">label</a> can contain HTML code</p>
+<p><strong>Constructor</strong><br/>
+</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text/autocomplete.html b/api/pl.treksoft.kvision.form.text/-text/autocomplete.html
new file mode 100644
index 00000000..51ad2ca4
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text/autocomplete.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Text.autocomplete - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">Text</a>&nbsp;/&nbsp;<a href="./autocomplete.html">autocomplete</a><br/>
+<br/>
+<h1>autocomplete</h1>
+<a name="pl.treksoft.kvision.form.text.Text$autocomplete"></a>
+<code><span class="keyword">var </span><span class="identifier">autocomplete</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if autocomplete is enabled for the input element.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text/index.html b/api/pl.treksoft.kvision.form.text/-text/index.html
new file mode 100644
index 00000000..e78ccda6
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text/index.html
@@ -0,0 +1,233 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Text - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="./index.html">Text</a><br/>
+<br/>
+<h1>Text</h1>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">Text</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-abstract-text/index.html"><span class="identifier">AbstractText</span></a></code>
+<p>Form field text component.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">Text</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/type">type</span><span class="symbol">:</span>&nbsp;<a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a>&nbsp;<span class="symbol">=</span>&nbsp;TextInputType.TEXT<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text$<init>(pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean)/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">)</span></code></td>
+</tr>
+</tbody>
+</table>
+<h3>Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="autocomplete.html">autocomplete</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autocomplete</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if autocomplete is enabled for the input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="input.html">input</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">input</span><span class="symbol">: </span><a href="../-text-input/index.html"><span class="identifier">TextInput</span></a></code>
+<p>The actual input component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="type.html">type</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">type</span><span class="symbol">: </span><a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a></code>
+<p>Text input type.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Properties</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text/autofocus.html">autofocus</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">autofocus</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is automatically focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/flabel.html">flabel</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">flabel</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-field-label/index.html"><span class="identifier">FieldLabel</span></a></code>
+<p>Form field label.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/label.html">label</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">label</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The label text bound to the text input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/maxlength.html">maxlength</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">maxlength</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html"><span class="identifier">Int</span></a><span class="symbol">?</span></code>
+<p>Maximal length of the text input value.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/placeholder.html">placeholder</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">placeholder</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The placeholder for the text input.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/readonly.html">readonly</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">readonly</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span></code>
+<p>Determines if the text input is read-only.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/rich.html">rich</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">rich</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Determines if <a href="../-abstract-text/label.html">label</a> can contain HTML code.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/start-value.html">startValue</a></p>
+</td>
+<td>
+<code><span class="keyword">var </span><span class="identifier">startValue</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>The value attribute of the generated HTML input element.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/validation-info.html">validationInfo</a></p>
+</td>
+<td>
+<code><span class="keyword">val </span><span class="identifier">validationInfo</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.form/-help-block/index.html"><span class="identifier">HelpBlock</span></a></code>
+<p>Validation info component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/value.html">value</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">var </span><span class="identifier">value</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span></code>
+<p>Text input value.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inherited Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-abstract-text/blur.html">blur</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">blur</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element blur.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/focus.html">focus</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">focus</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Makes the input element focused.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/get-sn-class.html">getSnClass</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">getSnClass</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-string-bool-pair.html"><span class="identifier">StringBoolPair</span></a><span class="symbol">&gt;</span></code>
+<p>Returns list of CSS class names for current widget in the form of a List.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/remove-event-listeners.html">removeEventListeners</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">removeEventListeners</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Removes all event listeners from current widget.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="../-abstract-text/set-event-listener.html">setEventListener</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">T</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span> <span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.form.text.AbstractText.setEventListener.T)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../-abstract-text/set-event-listener.html#T"><span class="identifier">T</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget, keeping the actual type of component.</p>
+<code><span class="keyword">open</span> <span class="keyword">fun </span><span class="identifier">setEventListener</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.AbstractText$setEventListener(kotlin.Function1((pl.treksoft.kvision.utils.SnOn((pl.treksoft.kvision.core.Widget)), kotlin.Unit)))/block">block</span><span class="symbol">:</span>&nbsp;<span class="identifier">SnOn</span><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="../../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a></code>
+<p>Sets an event listener for current widget.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Companion Object Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="text.html">text</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">text</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/type">type</span><span class="symbol">:</span>&nbsp;<a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a>&nbsp;<span class="symbol">=</span>&nbsp;TextInputType.TEXT<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">Text</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Text</span></a></code>
+<p>DSL builder extension function.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Inheritors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="../-password/index.html">Password</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">Password</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">Text</span></a></code>
+<p>Form field password component.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text/input.html b/api/pl.treksoft.kvision.form.text/-text/input.html
new file mode 100644
index 00000000..be0c9234
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text/input.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Text.input - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">Text</a>&nbsp;/&nbsp;<a href="./input.html">input</a><br/>
+<br/>
+<h1>input</h1>
+<a name="pl.treksoft.kvision.form.text.Text$input"></a>
+<code><span class="keyword">val </span><span class="identifier">input</span><span class="symbol">: </span><a href="../-text-input/index.html"><span class="identifier">TextInput</span></a></code>
+<p>Overrides <a href="../-abstract-text/input.html">AbstractText.input</a></p>
+<p>The actual input component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text/text.html b/api/pl.treksoft.kvision.form.text/-text/text.html
new file mode 100644
index 00000000..3c06ae61
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text/text.html
@@ -0,0 +1,16 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Text.text - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">Text</a>&nbsp;/&nbsp;<a href="./text.html">text</a><br/>
+<br/>
+<h1>text</h1>
+<a name="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))"></a>
+<code><span class="keyword">fun </span><a href="../../pl.treksoft.kvision.core/-container/index.html"><span class="identifier">Container</span></a><span class="symbol">.</span><span class="identifier">text</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/type">type</span><span class="symbol">:</span>&nbsp;<a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a>&nbsp;<span class="symbol">=</span>&nbsp;TextInputType.TEXT<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/value">value</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/name">name</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/label">label</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/rich">rich</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.text.Text.Companion$text(pl.treksoft.kvision.core.Container, pl.treksoft.kvision.form.text.TextInputType, kotlin.String, kotlin.String, kotlin.String, kotlin.Boolean, kotlin.Function1((pl.treksoft.kvision.form.text.Text, kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="index.html"><span class="identifier">Text</span></a><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Text</span></a></code>
+<p>DSL builder extension function.</p>
+<p>It takes the same parameters as the constructor of the built component.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/-text/type.html b/api/pl.treksoft.kvision.form.text/-text/type.html
new file mode 100644
index 00000000..1858490c
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/-text/type.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Text.type - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form.text</a>&nbsp;/&nbsp;<a href="index.html">Text</a>&nbsp;/&nbsp;<a href="./type.html">type</a><br/>
+<br/>
+<h1>type</h1>
+<a name="pl.treksoft.kvision.form.text.Text$type"></a>
+<code><span class="keyword">var </span><span class="identifier">type</span><span class="symbol">: </span><a href="../-text-input-type/index.html"><span class="identifier">TextInputType</span></a></code>
+<p>Text input type.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form.text/index.html b/api/pl.treksoft.kvision.form.text/index.html
new file mode 100644
index 00000000..8758e734
--- /dev/null
+++ b/api/pl.treksoft.kvision.form.text/index.html
@@ -0,0 +1,108 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>pl.treksoft.kvision.form.text - kvision</title>
+<link rel="stylesheet" href="../../style.css">
+</HEAD>
+<BODY>
+<a href="../index.html">kvision</a>&nbsp;/&nbsp;<a href="./index.html">pl.treksoft.kvision.form.text</a><br/>
+<br/>
+<h2>Package pl.treksoft.kvision.form.text</h2>
+<p>Text input components, with password, text area and rich text area support.</p>
+<h3>Types</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-abstract-text/index.html">AbstractText</a></p>
+</td>
+<td>
+<code><span class="keyword">abstract</span> <span class="keyword">class </span><span class="identifier">AbstractText</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../pl.treksoft.kvision.panel/-simple-panel/index.html"><span class="identifier">SimplePanel</span></a><span class="symbol">, </span><a href="../pl.treksoft.kvision.form/-string-form-control/index.html"><span class="identifier">StringFormControl</span></a></code>
+<p>Base class for form field text components.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-abstract-text-input/index.html">AbstractTextInput</a></p>
+</td>
+<td>
+<code><span class="keyword">abstract</span> <span class="keyword">class </span><span class="identifier">AbstractTextInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../pl.treksoft.kvision.core/-widget/index.html"><span class="identifier">Widget</span></a><span class="symbol">, </span><a href="../pl.treksoft.kvision.form/-form-input/index.html"><span class="identifier">FormInput</span></a></code>
+<p>Base class for basic text components.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-password/index.html">Password</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">Password</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-text/index.html"><span class="identifier">Text</span></a></code>
+<p>Form field password component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-rich-text/index.html">RichText</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">RichText</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-abstract-text/index.html"><span class="identifier">AbstractText</span></a></code>
+<p>Form field rich text component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-rich-text-input/index.html">RichTextInput</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">RichTextInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-abstract-text-input/index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Basic rich text component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-text/index.html">Text</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">Text</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-abstract-text/index.html"><span class="identifier">AbstractText</span></a></code>
+<p>Form field text component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-text-area/index.html">TextArea</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">TextArea</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-abstract-text/index.html"><span class="identifier">AbstractText</span></a></code>
+<p>Form field textarea component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-text-area-input/index.html">TextAreaInput</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">TextAreaInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-abstract-text-input/index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Basic textarea component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-text-input/index.html">TextInput</a></p>
+</td>
+<td>
+<code><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">TextInput</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="-abstract-text-input/index.html"><span class="identifier">AbstractTextInput</span></a></code>
+<p>Basic text component.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="-text-input-type/index.html">TextInputType</a></p>
+</td>
+<td>
+<code><span class="keyword">enum</span> <span class="keyword">class </span><span class="identifier">TextInputType</span></code>
+<p>Text input types.</p>
+</td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>