2025-06-30 18:58:24 +02:00
|
|
|
<!--
|
|
|
|
SPDX-FileCopyrightText: © 2025 Hornwitser <code@hornwitser.no>
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
-->
|
2025-06-30 15:43:15 +02:00
|
|
|
<template>
|
|
|
|
<div
|
|
|
|
v-if="entries.length"
|
|
|
|
class="diffEntry"
|
|
|
|
>
|
|
|
|
<div class="title">
|
|
|
|
{{ title }}:
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
v-for="[type, text], index in entries"
|
|
|
|
:key="index"
|
|
|
|
:class="type"
|
|
|
|
>
|
2025-09-06 16:50:41 +02:00
|
|
|
<div class="symbol">
|
|
|
|
{{ { "removed": "- ", "added": "+ "}[type] }}
|
|
|
|
</div>
|
|
|
|
<div class="content">
|
|
|
|
{{ text }}
|
|
|
|
</div>
|
2025-06-30 15:43:15 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
defineProps<{
|
|
|
|
title: string,
|
|
|
|
entries: (["removed" | "added", string][]);
|
|
|
|
}>();
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
.diffEntry {
|
|
|
|
display: grid;
|
|
|
|
grid-template-columns: 5rem 1fr;
|
|
|
|
column-gap: 1rem;
|
|
|
|
}
|
2025-09-06 16:50:41 +02:00
|
|
|
:is(.removed, .added) {
|
|
|
|
display: flex;
|
2025-06-30 15:43:15 +02:00
|
|
|
grid-column: 2 / 2;
|
2025-09-06 16:50:41 +02:00
|
|
|
white-space: pre-wrap;
|
2025-06-30 15:43:15 +02:00
|
|
|
}
|
2025-09-06 16:50:41 +02:00
|
|
|
:is(.removed, .added) .symbol {
|
|
|
|
display: block;
|
2025-06-30 15:43:15 +02:00
|
|
|
font-family: monospace;
|
2025-09-06 16:50:41 +02:00
|
|
|
flex: 0 0 auto;
|
|
|
|
}
|
|
|
|
.removed {
|
|
|
|
color: color-mix(in srgb, CanvasText, red 40%);
|
2025-06-30 15:43:15 +02:00
|
|
|
}
|
2025-09-06 16:51:31 +02:00
|
|
|
.removed .content{
|
|
|
|
text-decoration-line: line-through;
|
|
|
|
}
|
2025-06-30 15:43:15 +02:00
|
|
|
.added {
|
|
|
|
color: color-mix(in srgb, CanvasText, green 40%);
|
|
|
|
}
|
|
|
|
</style>
|