mirror of
				https://github.com/kevinveenbirkenbach/homepage.veen.world.git
				synced 2025-10-31 15:39:02 +00:00 
			
		
		
		
	Optimized menu
This commit is contained in:
		| @@ -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) | ||||
| @@ -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", | ||||
|   | ||||
| @@ -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; | ||||
| } | ||||
| @@ -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> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user