<script lang="ts">
	import { getContext } from 'svelte';
	const { close } = getContext('simple-modal');
	export let title: string = 'Error';
	export let reason: string;
	export let btn: { title: string; do: any } = null;

	const perform = () => {
		close();
		btn.do();
	};

	let cleaned = '';
	$: {
		let first = reason[0] || '';
		let rest = reason.slice(1) || '';

		if (!['.', '!'].includes(rest.slice(-1))) {
			rest += '.';
		}
		cleaned = first.toUpperCase() + rest;
	}
</script>

<div class="sm:flex sm:items-start pl-3 pt-2">
	<div
		class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10"
	>
		<!-- prettier-ignore -->
		<svg class="h-6 w-6 text-red-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
			<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
		</svg>
	</div>
	<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
		<h3 class="text-xl leading-6 font-medium text-gray-900" id="modal-title">
			{title}
		</h3>
		<div class="mt-2">
			<p class="text-lg text-gray-500">{cleaned}</p>
		</div>
	</div>
</div>
<div class="px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse gap-4">
	{#if btn}
		<button type="button" class="btn px-2 text-lg md:py-1 rounded" on:click={perform}>
			{btn.title}
		</button>
	{/if}
	<button type="button" class="btn cancel px-2 text-lg md:py-1 rounded" on:click={close}>
		Close
	</button>
</div>
