| <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> |
| |