46 lines
785 B
Vue
46 lines
785 B
Vue
<template>
|
|
<div
|
|
class="display"
|
|
:class="component.cssClass"
|
|
>
|
|
<!-- eslint-disable vue/no-v-html -- intentional: type display titles are trusted config HTML (hackable dashboards) -->
|
|
<div v-html="component.title" />
|
|
<!-- eslint-enable vue/no-v-html -->
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
defineProps({
|
|
component: {
|
|
type: Object,
|
|
required: true
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<style>
|
|
|
|
@layer components {
|
|
.display {
|
|
padding: 1em;
|
|
border-radius: .7em;
|
|
box-shadow: 0 0 .6em #aaa;
|
|
text-align: center;
|
|
font-size: small;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-grow: 1;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
.display {
|
|
border-color: #000;
|
|
box-shadow: 0 0 .6em #000;
|
|
}
|
|
}
|
|
}
|
|
|
|
</style>
|