Skip to main content

Layouts and Page

This page discusses special types of views that do not necessary map directly to an HTML tag, however, they provide an abstraction for common use cases.

Page

Page is a special view that maps to an HTML body. Normally, it is the root view of your application. In Kunafa, Page is a singleton.

Calling page { } DSL function will clear the HTML body. As such, it should be only called at the beginning of the application. This is useful if you want to add a loading indicator in your index.html and it will automatically be cleared with the page is called.

Page and Server Side Rendering

You do not need to call page { } when using Server Side Rendering as the HTML body is generated at the server. Instead, you hydrate the views. See server side rendering for more details.

Linear layouts

Linear layouts allow you to stack elements in a horizontal or vertical line using horizontalLayout {} and verticalLayout {} respectively. For example,

verticalLayout {
textView {
text = "Line 1"
}
textView {
text = "Line 2"
}
textView {
text = "Line 3"
}
}

Linear layouts use flexbox. Therefore, you can use flexbox properties to customize the layout. For example

verticalLayout {
style {
justifyContent = JustifyContent.End
alignSelf = Alignment.Center
alignItems = Alignment.End
}
textView {
text = "Line 1"
}
textView {
text = "Line 2"
}
textView {
text = "Line 3"
}
}

Scroll layouts

Scroll layouts are layouts that are scrollable. You can use horizontalScrollLayout and verticalScrollLayout. They also use flexbox so you can use all flexbox properties.