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=
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css">
11 <link defer
rel=
"stylesheet" href=
"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css">
12 <link href=
"https://fonts.googleapis.com/css?family=Lato|Raleway&display=swap" rel=
"stylesheet">
13 <link rel=
"stylesheet" href=
"app.css">
17 <div id=
"app" v-if=
"config" :
class=
"[isDark ? 'is-dark' : 'is-light']">
19 <section class=
"first-line">
20 <div v-cloak
class=
"container">
22 <img v-if=
"config.logo" :
src=
"config.logo" />
23 <i v-if=
"config.icon" :
class=
"config.icon"></i>
25 <div class=
"dashboard-title">
26 <span class=
"headline">{{ config.subtitle }}
</span>
27 <h1>{{ config.title }}
</h1>
31 <div v-cloak
v-if=
"config.links" class=
"container-fluid">
32 <nav class=
"navbar" role=
"navigation" aria-label=
"main navigation">
33 <div class=
"container">
34 <div class=
"navbar-menu">
35 <div class=
"navbar-start">
36 <a v-for=
"link in config.links" class=
"navbar-item" :
href=
"link.url">
37 <i v-if=
"link.icon" style=
"margin-right: 6px;" :
class=
"link.icon"></i>
43 v-on:
click=
"toggleTheme()"
44 aria-label=
"Toggle dark mode"
45 ><i class=
"fas fa-adjust"></i>
47 <a v-on:
click=
"toggleLayout()" class=
"icon-button navbar-item"><i
48 :
class=
"['fas', vlayout ? 'fa-list' : 'fa-columns']"></i></a>
49 <div class=
"search-bar">
50 <label for=
"search" class=
"search-label"></label>
51 <input type=
"text" id=
"search" v-model=
"filter" />
60 <section id=
"main-section" class=
"section">
61 <div v-cloak
class=
"container">
62 <div v-if=
"offline" class=
"offline-message">
63 <i class=
"far fa-dizzy"></i>
64 <h1>You're offline bro.
<i class=
"fas fa-redo-alt" v-on:
click=
"checkOffline()"></i></h1>
67 <!-- Optional messages -->
68 <article v-if=
"config && config.message" class=
"message" :
class=
"config.message.style">
69 <div v-if=
"config.message.title" class=
"message-header">
70 <p>{{ config.message.title }}
</p>
72 <div v-if=
"config.message.content" class=
"message-body">
73 {{ config.message.content }}
77 <h2 v-if=
"filter"><i class=
"fas fa-search"></i> Search
</h2>
79 <!-- Horizontal layout -->
80 <div v-if=
"!vlayout || filter" class=
"columns is-multiline">
81 <template v-for=
"(group, index) in config.services">
82 <h2 v-if=
"!filter && group.name" class=
"column is-full"><i v-if=
"group.icon" :
class=
"group.icon"></i><span
85 <service v-for=
"item in group.items" v-bind:
item=
"item" class=
"column is-one-third-widescreen"
86 v-if=
"!filter || (item && (item.name.toLowerCase().includes(filter.toLowerCase()) || (item.tag && item.tag.toLowerCase().includes(filter.toLowerCase()))))">
91 <!-- Vertical layout -->
92 <div v-if=
"!filter && vlayout" class=
"columns is-multiline layout-vertical">
93 <div class=
"column is-one-third-widescreen" v-for=
"(group, index) in config.services">
94 <h2 v-if=
"!filter && group.name"><i v-if=
"group.icon" :
class=
"group.icon"></i><span v-else
>#
</span>
96 <service v-for=
"item in group.items" v-bind:
item=
"item"
97 v-if=
"!filter || (item && (item.name.toLowerCase().includes(filter.toLowerCase()) || (item.tag && item.tag.toLowerCase().includes(filter.toLowerCase()))))">
106 <footer class=
"footer">
107 <div class=
"container">
108 <div class=
"content has-text-centered">
109 <p>Created with
<span class=
"has-text-danger">❤️
</span> with
<a href=
"https://bulma.io/">bulma
</a>,
<a
110 href=
"https://vuejs.org/">vuejs
</a>
111 &
<a href=
"https://fontawesome.com/">font awesome
</a> // Fork me on
<a href=
"https://github.com/bastienwirtz/homer"><i
112 class=
"fab fa-github-alt"></i></a></p>
118 <script src=
"https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js"></script>
119 <script src=
"vendors/js-yaml.min.js"></script>
120 <script src=
"app.js"></script>