Skip to content

Layout Components

Components used to arrange other components structurally.

pymiro.components.layout

Layout components for pymiro.

Divider

Divider(
    color: str | None = None,
    thickness: int = 1,
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode

Renders a Divider component.

Parameters:

Name Type Description Default
color str | None

Configuration for color.

None
thickness int

Configuration for thickness.

1
style dict[str, str] | None

Configuration for style.

None
class_name str | None

Configuration for class_name.

None
key str | None

Configuration for key.

None

Returns:

Name Type Description
VNode VNode

The virtual DOM node representing this component.

Example
from pymiro.components import Divider

Divider()
Source code in pymiro/components/layout.py
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
@component
def Divider(
    color: str | None = None,
    thickness: int = 1,
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode:
    """
    Renders a Divider component.

    Args:
        color: Configuration for color.
        thickness: Configuration for thickness.
        style: Configuration for style.
        class_name: Configuration for class_name.
        key: Configuration for key.

    Returns:
        VNode: The virtual DOM node representing this component.

    Example:
        ```python
        from pymiro.components import Divider

        Divider()
        ```
    """
    theme = use_theme()
    _c = color if color is not None else theme.colors.border
    props = _build_props({"thickness": thickness}, style, class_name)
    props["style"] = props.get("style", "") + f"; background-color: {_c}"
    return VNode(type="divider", props=props, children=[], key=key)

Grid

Grid(
    *children: VNode | str | None,
    cols: int = 2,
    spacing: int | None = None,
    padding: int | None = None,
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode

Renders a Grid component.

Parameters:

Name Type Description Default
cols int

Configuration for cols.

2
spacing int | None

Configuration for spacing.

None
padding int | None

Configuration for padding.

None
style dict[str, str] | None

Configuration for style.

None
class_name str | None

Configuration for class_name.

None
key str | None

Configuration for key.

None
*children VNode | str | None

Configuration for *children.

()

Returns:

Name Type Description
VNode VNode

The virtual DOM node representing this component.

Example
from pymiro.components import Grid

Grid()
Source code in pymiro/components/layout.py
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
@component
def Grid(
    *children: VNode | str | None,
    cols: int = 2,
    spacing: int | None = None,
    padding: int | None = None,
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode:
    """
    Renders a Grid component.

    Args:
        cols: Configuration for cols.
        spacing: Configuration for spacing.
        padding: Configuration for padding.
        style: Configuration for style.
        class_name: Configuration for class_name.
        key: Configuration for key.
        *children: Configuration for *children.

    Returns:
        VNode: The virtual DOM node representing this component.

    Example:
        ```python
        from pymiro.components import Grid

        Grid()
        ```
    """
    theme = use_theme()
    _sp = spacing if spacing is not None else theme.spacing.sm
    _pd = padding if padding is not None else 0
    props = _build_props(
        {"cols": cols, "spacing": _sp, "padding": _pd}, style, class_name
    )
    valid_children = [c for c in children if c is not None]
    return VNode(type="grid", props=props, children=valid_children, key=key)

Row

Row(
    *children: VNode | str | None,
    spacing: int | None = None,
    padding: int | None = None,
    align: str = "left",
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode

Renders a Row component.

Parameters:

Name Type Description Default
spacing int | None

Configuration for spacing.

None
padding int | None

Configuration for padding.

None
align str

Configuration for align.

'left'
style dict[str, str] | None

Configuration for style.

None
class_name str | None

Configuration for class_name.

None
key str | None

Configuration for key.

None
*children VNode | str | None

Configuration for *children.

()

Returns:

Name Type Description
VNode VNode

The virtual DOM node representing this component.

Example
from pymiro.components import Row

Row()
Source code in pymiro/components/layout.py
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
@component
def Row(
    *children: VNode | str | None,
    spacing: int | None = None,
    padding: int | None = None,
    align: str = "left",
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode:
    """
    Renders a Row component.

    Args:
        spacing: Configuration for spacing.
        padding: Configuration for padding.
        align: Configuration for align.
        style: Configuration for style.
        class_name: Configuration for class_name.
        key: Configuration for key.
        *children: Configuration for *children.

    Returns:
        VNode: The virtual DOM node representing this component.

    Example:
        ```python
        from pymiro.components import Row

        Row()
        ```
    """
    theme = use_theme()
    _sp = spacing if spacing is not None else theme.spacing.sm
    _pd = padding if padding is not None else 0
    props = _build_props(
        {"spacing": _sp, "padding": _pd, "align": align}, style, class_name
    )
    valid_children = [c for c in children if c is not None]
    return VNode(type="row", props=props, children=valid_children, key=key)

Spacer

Spacer(
    size: int | None = None,
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode

Renders a Spacer component.

Parameters:

Name Type Description Default
size int | None

Configuration for size.

None
style dict[str, str] | None

Configuration for style.

None
class_name str | None

Configuration for class_name.

None
key str | None

Configuration for key.

None

Returns:

Name Type Description
VNode VNode

The virtual DOM node representing this component.

Example
from pymiro.components import Spacer

Spacer()
Source code in pymiro/components/layout.py
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
@component
def Spacer(
    size: int | None = None,
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode:
    """
    Renders a Spacer component.

    Args:
        size: Configuration for size.
        style: Configuration for style.
        class_name: Configuration for class_name.
        key: Configuration for key.

    Returns:
        VNode: The virtual DOM node representing this component.

    Example:
        ```python
        from pymiro.components import Spacer

        Spacer()
        ```
    """
    use_theme()
    props = _build_props({}, style, class_name)
    if size is not None:
        props["style"] = (
            props.get("style", "") + f"; min-width: {size}px; min-height: {size}px"
        )
    return VNode(type="spacer", props=props, children=[], key=key)

Stack

Stack(
    *children: VNode | str | None,
    spacing: int | None = None,
    padding: int | None = None,
    align: str = "left",
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode

Renders a Stack component.

Parameters:

Name Type Description Default
spacing int | None

Configuration for spacing.

None
padding int | None

Configuration for padding.

None
align str

Configuration for align.

'left'
style dict[str, str] | None

Configuration for style.

None
class_name str | None

Configuration for class_name.

None
key str | None

Configuration for key.

None
*children VNode | str | None

Configuration for *children.

()

Returns:

Name Type Description
VNode VNode

The virtual DOM node representing this component.

Example
from pymiro.components import Stack

Stack()
Source code in pymiro/components/layout.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@component
def Stack(
    *children: VNode | str | None,
    spacing: int | None = None,
    padding: int | None = None,
    align: str = "left",
    style: dict[str, str] | None = None,
    class_name: str | None = None,
    key: str | None = None,
) -> VNode:
    """
    Renders a Stack component.

    Args:
        spacing: Configuration for spacing.
        padding: Configuration for padding.
        align: Configuration for align.
        style: Configuration for style.
        class_name: Configuration for class_name.
        key: Configuration for key.
        *children: Configuration for *children.

    Returns:
        VNode: The virtual DOM node representing this component.

    Example:
        ```python
        from pymiro.components import Stack

        Stack()
        ```
    """
    theme = use_theme()
    _sp = spacing if spacing is not None else theme.spacing.sm
    _pd = padding if padding is not None else 0
    props = _build_props(
        {"spacing": _sp, "padding": _pd, "align": align}, style, class_name
    )
    valid_children = [c for c in children if c is not None]
    return VNode(type="stack", props=props, children=valid_children, key=key)