summaryrefslogtreecommitdiff
path: root/packages/client/src/components/instance-ticker.vue
diff options
context:
space:
mode:
Diffstat (limited to 'packages/client/src/components/instance-ticker.vue')
-rw-r--r--packages/client/src/components/instance-ticker.vue62
1 files changed, 62 insertions, 0 deletions
diff --git a/packages/client/src/components/instance-ticker.vue b/packages/client/src/components/instance-ticker.vue
new file mode 100644
index 0000000000..1ce5a1c2c1
--- /dev/null
+++ b/packages/client/src/components/instance-ticker.vue
@@ -0,0 +1,62 @@
+<template>
+<div class="hpaizdrt" :style="bg">
+ <img v-if="info.faviconUrl" class="icon" :src="info.faviconUrl"/>
+ <span class="name">{{ info.name }}</span>
+</div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { instanceName } from '@/config';
+
+export default defineComponent({
+ props: {
+ instance: {
+ type: Object,
+ required: false
+ },
+ },
+
+ data() {
+ return {
+ info: this.instance || {
+ faviconUrl: '/favicon.ico',
+ name: instanceName,
+ themeColor: (document.querySelector('meta[name="theme-color-orig"]') as HTMLMetaElement)?.content
+ }
+ }
+ },
+
+ computed: {
+ bg(): any {
+ const themeColor = this.info.themeColor || '#777777';
+ return {
+ background: `linear-gradient(90deg, ${themeColor}, ${themeColor + '00'})`
+ };
+ }
+ }
+});
+</script>
+
+<style lang="scss" scoped>
+.hpaizdrt {
+ $height: 1.1rem;
+
+ height: $height;
+ border-radius: 4px 0 0 4px;
+ overflow: hidden;
+ color: #fff;
+
+ > .icon {
+ height: 100%;
+ }
+
+ > .name {
+ margin-left: 4px;
+ line-height: $height;
+ font-size: 0.9em;
+ vertical-align: top;
+ font-weight: bold;
+ }
+}
+</style>