From ed3f58ed93e4cca93dfb487baf814aaf110fe99b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20L=C3=BCscher?= Date: Fri, 24 May 2024 09:17:23 +0000 Subject: [PATCH] feat(nicegui): add first content to 'home' --- anvil/nicegui/pages/assets/ansible.png | Bin 0 -> 16360 bytes anvil/nicegui/pages/assets/registry.png | Bin 0 -> 4625 bytes anvil/nicegui/pages/home.py | 43 ++++++++++++++++++++---- 3 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 anvil/nicegui/pages/assets/ansible.png create mode 100644 anvil/nicegui/pages/assets/registry.png diff --git a/anvil/nicegui/pages/assets/ansible.png b/anvil/nicegui/pages/assets/ansible.png new file mode 100644 index 0000000000000000000000000000000000000000..5e0bca5b6205efb1782933ee6b019aeb1114f423 GIT binary patch literal 16360 zcmcJ02Un9#&}c#z2t@@9T@(aq(mR4uM5z`eAOV3O5PA(gh$2-$dJv>Zk!t9WKosdj zKuYLUdY2|3a39|9JLld%a6N}(cAwqZ*_oZ4*(ni*`q~g$c3Kb!1krh*@fZXm!vTLy zG*m#3nmh3U@E_Du)5P;^6OLqiF-NwZV!K>r+@)hDS;-!tRTPH#p1iBlkqoMv3 zHMTw}iuwpk=3Pdzb!v)MT5;JDA6nH5wv@0Y{rD1xFpha_JMcgf1GBj`#(k6ji|9@M zF|jTv)G_A0dOa@@| z|KXoV_Z2hHwr1!`gEOl8eEn_=>6r7(CG$OL+T~~~#`zyAQ>zYDs7jKAjl5aH(n|fc@{8APp4-P7N8hV7++oWtg>$ z`de_unG%*CSh;XAE1+kBAqq>e>EbC$^Zs0fj-Cb;l0;qCf&_08lJC4KkRzM%Fe3vx zH6u;O^}u4n3}|gls%uQ!WFA*THnt)!Q?5eL!KqZuH^#xhC>VWLyU1q#25%9wLlV=&HlBo_CT19op=P zIs&8+Cd2aGKN4&H&Po9Ep2aUVFYSbRlZs6(U={#kpCkkm7AsRUW!bPwJmp)FrWc(l zVGHwllvyg&12d#I)J)s=eE0}4*tcG0VDoE9vDHn$&M_>N?mm%N%H>gCqfHPQ+|H1q zwy{;nj-b6&PT90nLr#H<8>%SmrEC&;Jtap5K)qL^=2Lr3m}oEm2AX^5{ z*n&qDbc1^t(p6lpa!`1k8AYwjX%;9+NpSJ+Yc$)Yy`g|i!*~tZ1J=JyV(&%54E}Yo z5^l|nOrOib-)XLp#Tf*+oVwx8Vs{j|%0D?>>e&A7rG)q}WM0XlM$XsGF*-$V7J_CQ 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 None: - project_root = os.environ['NICEGUI_DIR'] - ui.label("Work in progress...").classes("text-h6") - ui.image(project_root + "/pages/assets/work-in-progress.png").classes( - "w-[200%]" - ) + project_root = get_project_root() + with ui.row().classes("w-full"): + with ui.card().classes("h-full"): + with ui.row().classes("no-wrap"): + with ui.link(target="/ansible"): + ui.image(source=f"{project_root}/pages/assets/ansible.png").classes( + "w-32" + ) + + with ui.card().classes("h-full"): + with ui.row().classes("no-wrap"): + with ui.link(target="/registry"): + ui.image( + source=f"{project_root}/pages/assets/registry.png" + ).classes("w-32") + + with ui.row().classes("w-full"): + with ui.card().classes("h-full"): + with ui.row().classes("no-wrap"): + ui.markdown( + content=""" + ### Welcome to Universal Blue Forge + + Ublue-OS Forge is your self-hosted OS forge for custom images. + + To get started have a look at the latest [documentation](https://github.com/ublue-os/forge/blob/main/docs/index.md). + + For feedback and discussion join the [Discourse Forum](https://universal-blue.discourse.group/). + + Found a bug, feel free to file an [issue](https://github.com/ublue-os/forge/issues). + + Thanks and enjoy! + """ + ).classes("text-base") + with ui.row(): + ui.space