/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/console/support/src/component/result.tsx
119 строк
3 KB
Frank
zen: support dashboard
26 май 2026, 17:01
26 май 2026, 17:01
8ad0354
Код
Авторство
О чём код?
import { For, Show } from "solid-js" import type { LookupResult, WorkspaceSection } from "~/lib/lookup" export function Result(props: { data: LookupResult }) { return ( <> <Show when={props.data.auth}> {(auth) => ( <section data-component="section"> <h2>Auth</h2> <DataTable rows={auth()} /> </section> )} </Show> <Show when={props.data.accountWorkspaces}> {(workspaces) => ( <section data-component="section"> <h2>Workspaces</h2> <DataTable rows={workspaces()} /> </section> )} </Show> <For each={props.data.workspaces}>{(ws) => <WorkspaceView section={ws} />}</For> </> ) } function WorkspaceView(props: { section: WorkspaceSection }) { return ( <section data-component="section" id={`workspace-${props.section.workspaceID}`}> <h2>{props.section.title}</h2> <h3>Users</h3> <DataTable rows={props.section.users} /> <h3>Billing</h3> <DataTable rows={props.section.billing ? [props.section.billing] : []} /> <h3>GO</h3> <DataTable rows={props.section.go} /> <h3>Payments</h3> <DataTable rows={props.section.payments} /> <h3>28-Day Usage</h3> <DataTable rows={props.section.usage} /> <h3>Disabled Models</h3> <DataTable rows={props.section.disabledModels} /> </section> ) } function DataTable(props: { rows: Record<string, unknown>[] }) { const columns = () => { const cols = new Set<string>() for (const row of props.rows) { for (const key of Object.keys(row)) cols.add(key) } return [...cols] } return ( <Show when={props.rows.length > 0} fallback={<div data-empty>(no data)</div>}> <table> <thead> <tr> <For each={columns()}>{(col) => <th>{col}</th>}</For> </tr> </thead> <tbody> <For each={props.rows}> {(row) => ( <tr> <For each={columns()}>{(col) => <td>{renderCell(row[col])}</td>}</For> </tr> )} </For> </tbody> </table> </Show> ) } function renderCell(value: unknown) { if (value === null || value === undefined) return "" if (typeof value === "string" && value.startsWith("https://")) { return ( <a href={value} target="_blank" rel="noopener noreferrer"> {value} </a> ) } if (isLinkCell(value)) { const external = value.__link.startsWith("http") return ( <a href={value.__link} target={external ? "_blank" : undefined} rel={external ? "noopener noreferrer" : undefined} > {value.label} </a> ) } if (typeof value === "object") return JSON.stringify(value) return String(value) } function isLinkCell(value: unknown): value is { __link: string; label: string } { return ( typeof value === "object" && value !== null && "__link" in value && typeof (value as { __link: unknown }).__link === "string" ) }