Optimized menu

This commit is contained in:
Kevin Veen-Birkenbach 2025-01-08 22:02:15 +01:00
parent 861fd29d45
commit 4ca34b55de
4 changed files with 67 additions and 59 deletions

View File

@ -58,13 +58,5 @@ def reload_config_in_dev():
def index():
return render_template("pages/index.html.j2", cards=config_data.get("cards", []), networks=config_data.get("networks", []), company=config_data["company"], navigation=config_data["navigation"])
@app.route('/imprint')
def imprint():
return render_template('pages/imprint.html.j2')
@app.route('/agb')
def agb():
return render_template('pages/agb.html.j2')
if __name__ == "__main__":
app.run(debug=(FLASK_ENV == "development"), host="0.0.0.0", port=5000)

View File

@ -186,8 +186,7 @@
"name": "Nature",
"description": "Explore my nature logs",
"icon_class": "fa-solid fa-tree",
"href": "https://s.veen.world/naturejournal",
"subitems": []
"href": "https://s.veen.world/naturejournal"
}
]
}
@ -197,9 +196,10 @@
"footer":
[
{
"name": "Third Party Plattforms",
"name": "External Accounts",
"description" : "Me on other plattforms",
"subitems:":[
"icon_class" : "fa-solid fa-external-link-alt",
"subitems":[
{
"name": "Meta",
"description": "Social and developer networks",
@ -219,8 +219,30 @@
"icon_class": "fa-brands fa-facebook",
"href": "https://www.facebook.com/kevinveenbirkenbach",
"subitems": []
}
]
},
{
"name": "Carreer Profiles",
"icon_class": "fa-solid fa-user-tie",
"subitems": [
{
"name": "XING",
"description": "Visit my XING profile",
"icon_class": "bi bi-building",
"href": "https://www.xing.com/profile/Kevin_VeenBirkenbach",
"subitems": []
},
{
"name": "LinkedIn",
"description": "Connect on LinkedIn",
"icon_class": "bi bi-linkedin",
"href": "https://www.linkedin.com/in/kevinveenbirkenbach",
"subitems": []
}
]
},
{
{
"name": "Duolingo",
"description": "Learn with me on Duolingo",
"icon_class": "fa-solid fa-language",
@ -233,14 +255,20 @@
"icon_class": "fa-brands fa-spotify",
"href": "https://open.spotify.com/user/31vebfzbjf3p7oualis76qfpr5ty",
"subitems": []
},
{
"name": "Patreon",
"description": "Support me on Patreon",
"icon_class": "fa-brands fa-patreon",
"href": "https://patreon.com/kevinveenbirkenbach",
"subitems": []
}
]
},
{
},
{
"name": "Community",
"description": "My presence in the Fediverse",
"icon_class": "fa-brands fa-mastodon",
"href": null,
"icon_class": "fa-solid fa-users",
"subitems": [
{
@ -256,18 +284,10 @@
"icon_class": "fa-solid fa-envelope-open-text",
"href": "https://newsletter.veen.world/subscription/form",
"subitems": []
},
{
"name": "Patreon",
"description": "Support me on Patreon",
"icon_class": "fa-brands fa-patreon",
"href": "https://patreon.com/kevinveenbirkenbach",
"subitems": []
}
}
]
}
]
},
},
{
"name": "Work Hub",
"description": "Curated collection of self hosted tools for work, organization, and learning.",
@ -347,26 +367,6 @@
}
]
},
{
"name": "Carreer Profiles",
"icon_class": "fa-solid fa-user-tie",
"subitems": [
{
"name": "XING",
"description": "Visit my XING profile",
"icon_class": "bi bi-building",
"href": "https://www.xing.com/profile/Kevin_VeenBirkenbach",
"subitems": []
},
{
"name": "LinkedIn",
"description": "Connect on LinkedIn",
"icon_class": "bi bi-linkedin",
"href": "https://www.linkedin.com/in/kevinveenbirkenbach",
"subitems": []
}
]
},
{
"name": "Contact",
"description": "Get in touch",

View File

@ -66,18 +66,34 @@ h3.footer-title{
padding: 0px;
}
.dropdown-menu {
position: absolute !important;
}
.dropdown-menu-footer {
position: absolute !important;
top: auto !important;
bottom: 100%; /* Positioniert das Menü über dem Auslöser */
transform: translateY(-10px); /* Optional: Sanfter Abstand */
}
.dropdown-submenu {
position: relative;
list-style: none;
}
.dropdown-submenu > .dropdown-menu {
top: 0;
left: 100%;
margin-top: -0.5rem;
}
.navbar-nav {
padding: 0;
margin: 0;
}
/* Stellt sicher, dass Submenüs korrekt positioniert sind */
.dropdown-submenu {
position: relative;
}
.dropdown-submenu > .dropdown-menu {
position: absolute;
top: 0;
left: 100%; /* Positioniert das Submenü rechts vom Hauptmenü */
margin-top: -1px;
}

View File

@ -1,12 +1,12 @@
<!-- Template for Subitems -->
{% macro render_subitems(subitems) %}
{% for subitem in subitems %}
{% if subitems.subitems %}
{% if subitem.subitems %}
<li class="dropdown-submenu">
<a class="dropdown-item dropdown-toggle" href="#" data-bs-toggle="tooltip" title="{{ subitem.description }}">
<i class="{{ subitem.icon_class }}"></i> {{ subitem.name }}
</a>
<ul class="dropdown-menu">
<ul class="dropdown-submenu">
{{ render_subitems(subitem.subitems) }}
</ul>
</li>
@ -48,10 +48,10 @@
{% else %}
<!-- Dropdown Menu -->
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown{{ loop.index }}" role="button" data-bs-toggle="dropdown" data-bs-toggle="tooltip" title="{{ item.description }}" aria-expanded="false">
<i class="{{ item.icon_class }}"></i> {{ item.name }}
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown{{ loop.index }}" role="button" data-bs-toggle="dropdown" data-bs-display="dynamic" data-popper-placement="top" title="{{ item.description }}" aria-expanded="false">
<i class="{{ item.icon_class }}" data-bs-toggle="tooltip"></i> {{ item.name }}
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown{{ loop.index }}">
<ul class="dropdown-menu dropdown-menu-{{menu_type}}" aria-labelledby="navbarDropdown{{ loop.index }}">
{{ render_subitems(item.subitems) }}
</ul>
</li>