{% macro render_fn_arg(main_fn_name) -%}
    {% if main_fn_name -%}
    component_fn={{main_fn_name}},
    {% endif -%}
{% endmacro -%}

{% macro render_children_arg(children) -%}
    {% if children -%}
    children=[
        {{render_routes(children)}}],
    {% endif -%}
{% endmacro -%}


{% macro render_routes(routes) -%}

{% if not routes -%}

{% else -%}
    {% for route in routes -%}
    router.RouteItem.create(
        path="{{route.path}}", 
        name="{{route.name}}", 
        meta = {{route.meta}},
        {{ render_fn_arg(route.main_fn_name()) |trim}}
        {{ render_children_arg(route.children) |trim}}
    ),
    {% endfor -%}

{% endif -%}

{% endmacro -%}

"""
This file is automatically generated by InstaUI. Do not modify it manually.

update: {{model.update_time}}
"""

import typing
from instaui import spa_router as router

TNames = typing.Literal{{model.route_names}}

def link(text: str, name: TNames, params: typing.Optional[dict] = None):
    return router.link.by_name(text, name=name, params=params)

def get_routes():
    try:
        {% for code in model.get_all_main_import() -%}
        {{code}}
        {% endfor -%}

        return [
        {{render_routes(model.routes)}}
    ]
    except Exception as e:
        print(f"router error: {e}")


