|
<script>
|
|
import Spinner from "./Spinner.svelte";
|
|
import Warning from "./Warning.svelte";
|
|
import Success from "./Success.svelte";
|
|
|
|
{{data: any[]}}
|
|
*/
|
|
export let response_data = { data: [] };
|
|
|
|
{{type: string; label: string; component:string}[]}
|
|
*/
|
|
export let app_info;
|
|
|
|
/**
|
|
* @type {"pending" | "error" | "complete" | "generating" | 'idle'}
|
|
*/
|
|
export let status = "idle";
|
|
</script>
|
|
|
|
<div>
|
|
<div class="heading-wrap">
|
|
<h3>Response Outputs</h3>
|
|
{#if status === "pending" || status === "generating"}
|
|
<Spinner />
|
|
{:else if status === "error"}
|
|
<Warning />
|
|
{:else if status === "complete"}
|
|
<Success />
|
|
{/if}
|
|
</div>
|
|
{#each app_info as { type, label, component }, i}
|
|
{#if type === "string"}
|
|
<label for="">
|
|
<span>{label} <code>{type}</code></span>
|
|
<input type="text" disabled value={response_data.data[i] || ""} />
|
|
</label>
|
|
{:else if type === "number"}
|
|
<label for="">
|
|
<span>{label} <code>{type}</code></span>
|
|
<input type="number" disabled value={response_data.data[i] || ""} />
|
|
</label>
|
|
{:else if type === "boolean"}
|
|
<label for="">
|
|
<span>{label} <code>{type}</code></span>
|
|
<input type="checkbox" disabled value={response_data.data[i] || ""} />
|
|
</label>
|
|
{:else if type === "number"}
|
|
<label for="">
|
|
<span>{label} <code>{type}</code></span>
|
|
<input type="number" disabled value={response_data.data[i] || ""} />
|
|
</label>
|
|
{:else if type === "string[]"}
|
|
<label for="">
|
|
<span>{label} <code>{type} - comma separated list</code></span>
|
|
<input type="text" disabled value={response_data.data[i] || ""} />
|
|
</label>
|
|
{/if}
|
|
{/each}
|
|
|
|
<h4>JSON</h4>
|
|
<pre><code
|
|
>{JSON.stringify(
|
|
response_data.data.length ? response_data : {},
|
|
null,
|
|
2
|
|
)}</code
|
|
></pre>
|
|
</div>
|
|
|
|
<style>
|
|
label {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--size-1);
|
|
width: 100%;
|
|
}
|
|
|
|
input {
|
|
outline: none;
|
|
border-radius: 2px;
|
|
}
|
|
|
|
input:focus-visible {
|
|
border-color: var(--color-accent);
|
|
}
|
|
|
|
.heading-wrap {
|
|
display: flex;
|
|
}
|
|
</style>
|
|
|