all repos — stealth-developers @ dac60acf3e735d01339e2f08261ceea98eca4efe

apps/web/src/components/Tickets/TicketReasons.vue (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
<script setup lang="ts">
import type { SanitisedTicket } from "@stealth-developers/api";

defineProps<{
	ticket: SanitisedTicket;
}>();
</script>

<template>
	<div
		class="ticket-reasons"
		v-if="ticket.openReason || ticket.closeReason || ticket.privateReason"
	>
		<div class="reason-card" v-if="ticket.openReason">
			<span class="reason-label">Open Reason</span>
			<p class="reason-value">{{ ticket.openReason }}</p>
		</div>
		<div class="reason-card" v-if="ticket.closeReason">
			<span class="reason-label">Close Reason</span>
			<p class="reason-value">{{ ticket.closeReason }}</p>
		</div>
		<div class="reason-card private" v-if="ticket.privateReason">
			<span class="reason-label">Private Reason</span>
			<p class="reason-value">{{ ticket.privateReason }}</p>
		</div>
	</div>
</template>

<style scoped>
.ticket-reasons {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.5rem;

	@media (min-width: 768px) {
		grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	}

	.reason-card {
		display: flex;
		flex-direction: column;
		gap: 0.4rem;
		background-color: hsl(var(--crust));
		padding: 1rem;
		border-radius: 1.5rem;

		.reason-label {
			font-size: 0.75rem;
			font-weight: 900;
			text-transform: uppercase;
			color: hsl(var(--subtext0));
		}

		.reason-value {
			font-size: 0.95rem;
			color: hsl(var(--text));
			white-space: pre-wrap;
			line-height: 1.5;
		}
	}
}
</style>