6 <meta name=
"viewport" content=
"width=device-width, initial-scale=1">
7 <meta name=
"robots" content=
"noindex">
8 <link rel=
"icon" type=
"image/png" href=
"assets/favicon.png">
10 <link defer
rel=
"stylesheet" href=
"vendors/font-awesone.min.css">
11 <link defer
rel=
"stylesheet" href=
"vendors/bulma.min.css">
12 <link rel=
"stylesheet" href=
"app.css">
16 <div id=
"app" v-if=
"config" :
class=
"[isDark ? 'is-dark' : 'is-light']">
18 <section class=
"first-line">
19 <div v-cloak
class=
"container">
21 <img v-if=
"config.logo" :
src=
"config.logo" />
22 <i v-if=
"config.icon" :
class=
"config.icon"></i>
24 <div class=
"dashboard-title">
25 <span class=
"headline">{{ config.subtitle }}
</span>
26 <h1>{{ config.title }}
</h1>
30 <div v-cloak
v-if=
"config.links" class=
"container-fluid">
31 <nav class=
"navbar" role=
"navigation" aria-label=
"main navigation">
32 <div class=
"container">
33 <div class=
"navbar-menu">
34 <div class=
"navbar-start">
35 <a v-for=
"link in config.links" class=
"navbar-item" :
href=
"link.url" :
target=
"link.target">
36 <i v-if=
"link.icon" style=
"margin-right: 6px;" :
class=
"link.icon"></i>
42 v-on:
click=
"toggleTheme()"
43 aria-label=
"Toggle dark mode"
44 ><i class=
"fas fa-adjust"></i>
46 <a v-on:
click=
"toggleLayout()" class=
"icon-button navbar-item"><i
47 :
class=
"['fas', vlayout ? 'fa-list' : 'fa-columns']"></i></a>
48 <div class=
"search-bar">
49 <label for=
"search" class=
"search-label"></label>
50 <input type=
"text" id=
"search" v-model=
"filter" />
59 <section id=
"main-section" class=
"section">
60 <div v-cloak
class=
"container">
61 <div v-if=
"offline" class=
"offline-message">
62 <i class=
"far fa-dizzy"></i>
63 <h1>You're offline bro.
<i class=
"fas fa-redo-alt" v-on:
click=
"checkOffline()"></i></h1>
66 <!-- Optional messages -->
67 <article v-if=
"config && config.message" class=
"message" :
class=
"config.message.style">
68 <div v-if=
"config.message.title" class=
"message-header">
69 <p>{{ config.message.title }}
</p>
71 <div v-if=
"config.message.content" class=
"message-body">
72 {{ config.message.content }}
76 <h2 v-if=
"filter"><i class=
"fas fa-search"></i> Search
</h2>
78 <!-- Horizontal layout -->
79 <div v-if=
"!vlayout || filter" class=
"columns is-multiline">
80 <template v-for=
"(group, index) in config.services">
81 <h2 v-if=
"!filter && group.name" class=
"column is-full"><i v-if=
"group.icon" :
class=
"group.icon"></i><span
84 <service v-for=
"item in group.items" v-bind:
item=
"item" class=
"column is-one-third-widescreen"
85 v-if=
"!filter || (item && (item.name.toLowerCase().includes(filter.toLowerCase()) || (item.tag && item.tag.toLowerCase().includes(filter.toLowerCase()))))">
90 <!-- Vertical layout -->
91 <div v-if=
"!filter && vlayout" class=
"columns is-multiline layout-vertical">
92 <div class=
"column is-one-third-widescreen" v-for=
"(group, index) in config.services">
93 <h2 v-if=
"!filter && group.name"><i v-if=
"group.icon" :
class=
"group.icon"></i><span v-else
>#
</span>
95 <service v-for=
"item in group.items" v-bind:
item=
"item"
96 v-if=
"!filter || (item && (item.name.toLowerCase().includes(filter.toLowerCase()) || (item.tag && item.tag.toLowerCase().includes(filter.toLowerCase()))))">
105 <footer class=
"footer">
106 <div class=
"container">
107 <div class=
"content has-text-centered">
108 <p>Created with
<span class=
"has-text-danger">❤️
</span> with
<a href=
"https://bulma.io/">bulma
</a>,
<a
109 href=
"https://vuejs.org/">vuejs
</a>
110 &
<a href=
"https://fontawesome.com/">font awesome
</a> // Fork me on
<a href=
"https://github.com/bastienwirtz/homer"><i
111 class=
"fab fa-github-alt"></i></a></p>
117 <script src=
"vendors/vue.min.js"></script>
118 <script src=
"vendors/js-yaml.min.js"></script>
119 <script src=
"app.js"></script>