Spaces:
Paused
Paused
Deploy Seqcolyte Studio
Browse files
studio/src/app/diagnostics/page.tsx
CHANGED
|
@@ -11,13 +11,13 @@ export default async function DiagnosticsPage() {
|
|
| 11 |
return (
|
| 12 |
<main className="flex min-h-0 flex-1 flex-col overflow-hidden">
|
| 13 |
<header className="border-border/60 shrink-0 border-b">
|
| 14 |
-
<div className="mx-auto flex w-full max-w-6xl items-center gap-3 px-6 py-4">
|
| 15 |
-
<Link href="/" className="text-muted-foreground hover:text-foreground" aria-label="Home">
|
| 16 |
<ArrowLeft className="size-5" />
|
| 17 |
</Link>
|
| 18 |
-
<div>
|
| 19 |
-
<h1 className="text-
|
| 20 |
-
<p className="text-muted-foreground text-sm">
|
| 21 |
How to read this: a <strong className="text-foreground font-medium">metric</strong> feeds a{" "}
|
| 22 |
<strong className="text-foreground font-medium">signal</strong>, signals point to an{" "}
|
| 23 |
<strong className="text-foreground font-medium">issue</strong>, each issue has candidate{" "}
|
|
@@ -30,7 +30,7 @@ export default async function DiagnosticsPage() {
|
|
| 30 |
</header>
|
| 31 |
|
| 32 |
<div className="min-h-0 flex-1 overflow-y-auto">
|
| 33 |
-
<div className="mx-auto w-full max-w-6xl px-6 py-8">
|
| 34 |
{!catalog || catalog.issues.length === 0 ? (
|
| 35 |
<Card className="border-dashed">
|
| 36 |
<CardHeader className="items-center py-14 text-center">
|
|
|
|
| 11 |
return (
|
| 12 |
<main className="flex min-h-0 flex-1 flex-col overflow-hidden">
|
| 13 |
<header className="border-border/60 shrink-0 border-b">
|
| 14 |
+
<div className="mx-auto flex w-full max-w-6xl items-center gap-3 px-4 py-3 sm:px-6 sm:py-4">
|
| 15 |
+
<Link href="/" className="text-muted-foreground hover:text-foreground shrink-0" aria-label="Home">
|
| 16 |
<ArrowLeft className="size-5" />
|
| 17 |
</Link>
|
| 18 |
+
<div className="min-w-0">
|
| 19 |
+
<h1 className="text-base font-semibold tracking-tight sm:text-lg">Diagnostic wiki</h1>
|
| 20 |
+
<p className="text-muted-foreground hidden text-sm sm:block">
|
| 21 |
How to read this: a <strong className="text-foreground font-medium">metric</strong> feeds a{" "}
|
| 22 |
<strong className="text-foreground font-medium">signal</strong>, signals point to an{" "}
|
| 23 |
<strong className="text-foreground font-medium">issue</strong>, each issue has candidate{" "}
|
|
|
|
| 30 |
</header>
|
| 31 |
|
| 32 |
<div className="min-h-0 flex-1 overflow-y-auto">
|
| 33 |
+
<div className="mx-auto w-full max-w-6xl px-4 py-6 sm:px-6 sm:py-8">
|
| 34 |
{!catalog || catalog.issues.length === 0 ? (
|
| 35 |
<Card className="border-dashed">
|
| 36 |
<CardHeader className="items-center py-14 text-center">
|
studio/src/app/page.tsx
CHANGED
|
@@ -5,6 +5,7 @@ import { listProjects } from "@/lib/store";
|
|
| 5 |
import { PreflightPanel } from "@/components/preflight-panel";
|
| 6 |
import { NewProjectButton } from "@/components/new-project-button";
|
| 7 |
import { ModeToggle } from "@/components/mode-toggle";
|
|
|
|
| 8 |
import {
|
| 9 |
Card,
|
| 10 |
CardDescription,
|
|
@@ -87,8 +88,8 @@ export default async function Home() {
|
|
| 87 |
return (
|
| 88 |
<main className="flex min-h-0 flex-1 flex-col overflow-hidden">
|
| 89 |
<header className="border-border/60 shrink-0 border-b">
|
| 90 |
-
<div className="mx-auto flex w-full max-w-6xl items-center justify-between gap-4 px-6 py-4">
|
| 91 |
-
<div className="flex items-center gap-3">
|
| 92 |
<div className="ring-border/60 relative size-9 shrink-0 overflow-hidden rounded-lg ring-1">
|
| 93 |
<Image
|
| 94 |
src="/seqcolyte-logo.png"
|
|
@@ -99,25 +100,31 @@ export default async function Home() {
|
|
| 99 |
priority
|
| 100 |
/>
|
| 101 |
</div>
|
| 102 |
-
<div>
|
| 103 |
-
<h1 className="text-
|
| 104 |
-
|
|
|
|
|
|
|
| 105 |
Root cause analysis for genomic sequencing runs.
|
| 106 |
</p>
|
| 107 |
</div>
|
| 108 |
</div>
|
| 109 |
-
<div className="flex items-center gap-2">
|
| 110 |
<Link
|
| 111 |
href="/diagnostics"
|
| 112 |
-
|
|
|
|
| 113 |
>
|
| 114 |
-
|
|
|
|
| 115 |
</Link>
|
| 116 |
<Link
|
| 117 |
href="/technologies"
|
| 118 |
-
|
|
|
|
| 119 |
>
|
| 120 |
-
|
|
|
|
| 121 |
</Link>
|
| 122 |
<ModeToggle />
|
| 123 |
<NewProjectButton />
|
|
@@ -126,7 +133,7 @@ export default async function Home() {
|
|
| 126 |
</header>
|
| 127 |
|
| 128 |
<div className="min-h-0 flex-1 overflow-y-auto">
|
| 129 |
-
<div className="mx-auto grid w-full max-w-6xl gap-6 px-6 py-8 lg:grid-cols-[1fr_20rem]">
|
| 130 |
<div className="space-y-8">
|
| 131 |
<section>
|
| 132 |
<h2 className="text-foreground mb-3 text-sm font-semibold tracking-wide uppercase">
|
|
|
|
| 5 |
import { PreflightPanel } from "@/components/preflight-panel";
|
| 6 |
import { NewProjectButton } from "@/components/new-project-button";
|
| 7 |
import { ModeToggle } from "@/components/mode-toggle";
|
| 8 |
+
import { Stethoscope, Layers } from "lucide-react";
|
| 9 |
import {
|
| 10 |
Card,
|
| 11 |
CardDescription,
|
|
|
|
| 88 |
return (
|
| 89 |
<main className="flex min-h-0 flex-1 flex-col overflow-hidden">
|
| 90 |
<header className="border-border/60 shrink-0 border-b">
|
| 91 |
+
<div className="mx-auto flex w-full max-w-6xl items-center justify-between gap-3 px-4 py-3 sm:gap-4 sm:px-6 sm:py-4">
|
| 92 |
+
<div className="flex min-w-0 items-center gap-3">
|
| 93 |
<div className="ring-border/60 relative size-9 shrink-0 overflow-hidden rounded-lg ring-1">
|
| 94 |
<Image
|
| 95 |
src="/seqcolyte-logo.png"
|
|
|
|
| 100 |
priority
|
| 101 |
/>
|
| 102 |
</div>
|
| 103 |
+
<div className="min-w-0">
|
| 104 |
+
<h1 className="truncate text-base font-semibold tracking-tight sm:text-lg">
|
| 105 |
+
Seqcolyte Studio
|
| 106 |
+
</h1>
|
| 107 |
+
<p className="text-muted-foreground hidden truncate text-sm sm:block">
|
| 108 |
Root cause analysis for genomic sequencing runs.
|
| 109 |
</p>
|
| 110 |
</div>
|
| 111 |
</div>
|
| 112 |
+
<div className="flex shrink-0 items-center gap-1.5 sm:gap-2">
|
| 113 |
<Link
|
| 114 |
href="/diagnostics"
|
| 115 |
+
aria-label="Diagnostics"
|
| 116 |
+
className="border-border/70 bg-secondary/60 text-foreground hover:bg-secondary hover:border-border inline-flex items-center justify-center rounded-md border px-2.5 py-1.5 text-sm font-medium transition-colors"
|
| 117 |
>
|
| 118 |
+
<Stethoscope className="size-4 sm:hidden" />
|
| 119 |
+
<span className="hidden sm:inline">Diagnostics</span>
|
| 120 |
</Link>
|
| 121 |
<Link
|
| 122 |
href="/technologies"
|
| 123 |
+
aria-label="Technologies"
|
| 124 |
+
className="border-border/70 bg-secondary/60 text-foreground hover:bg-secondary hover:border-border inline-flex items-center justify-center rounded-md border px-2.5 py-1.5 text-sm font-medium transition-colors"
|
| 125 |
>
|
| 126 |
+
<Layers className="size-4 sm:hidden" />
|
| 127 |
+
<span className="hidden sm:inline">Technologies</span>
|
| 128 |
</Link>
|
| 129 |
<ModeToggle />
|
| 130 |
<NewProjectButton />
|
|
|
|
| 133 |
</header>
|
| 134 |
|
| 135 |
<div className="min-h-0 flex-1 overflow-y-auto">
|
| 136 |
+
<div className="mx-auto grid w-full max-w-6xl gap-6 px-4 py-6 sm:px-6 sm:py-8 lg:grid-cols-[1fr_20rem]">
|
| 137 |
<div className="space-y-8">
|
| 138 |
<section>
|
| 139 |
<h2 className="text-foreground mb-3 text-sm font-semibold tracking-wide uppercase">
|
studio/src/app/technologies/page.tsx
CHANGED
|
@@ -11,13 +11,13 @@ export default async function TechnologiesPage() {
|
|
| 11 |
return (
|
| 12 |
<main className="flex min-h-0 flex-1 flex-col overflow-hidden">
|
| 13 |
<header className="border-border/60 shrink-0 border-b">
|
| 14 |
-
<div className="mx-auto flex w-full max-w-6xl items-center gap-3 px-6 py-4">
|
| 15 |
-
<Link href="/" className="text-muted-foreground hover:text-foreground" aria-label="Home">
|
| 16 |
<ArrowLeft className="size-5" />
|
| 17 |
</Link>
|
| 18 |
-
<div>
|
| 19 |
-
<h1 className="text-
|
| 20 |
-
<p className="text-muted-foreground text-sm">
|
| 21 |
A collection of single-cell sequencing library structures.
|
| 22 |
</p>
|
| 23 |
</div>
|
|
@@ -25,7 +25,7 @@ export default async function TechnologiesPage() {
|
|
| 25 |
</header>
|
| 26 |
|
| 27 |
<div className="min-h-0 flex-1 overflow-y-auto">
|
| 28 |
-
<div className="mx-auto w-full max-w-6xl px-6 py-8">
|
| 29 |
{techs.length === 0 ? (
|
| 30 |
<Card className="border-dashed">
|
| 31 |
<CardHeader className="items-center py-14 text-center">
|
|
|
|
| 11 |
return (
|
| 12 |
<main className="flex min-h-0 flex-1 flex-col overflow-hidden">
|
| 13 |
<header className="border-border/60 shrink-0 border-b">
|
| 14 |
+
<div className="mx-auto flex w-full max-w-6xl items-center gap-3 px-4 py-3 sm:px-6 sm:py-4">
|
| 15 |
+
<Link href="/" className="text-muted-foreground hover:text-foreground shrink-0" aria-label="Home">
|
| 16 |
<ArrowLeft className="size-5" />
|
| 17 |
</Link>
|
| 18 |
+
<div className="min-w-0">
|
| 19 |
+
<h1 className="text-base font-semibold tracking-tight sm:text-lg">Technologies</h1>
|
| 20 |
+
<p className="text-muted-foreground hidden text-sm sm:block">
|
| 21 |
A collection of single-cell sequencing library structures.
|
| 22 |
</p>
|
| 23 |
</div>
|
|
|
|
| 25 |
</header>
|
| 26 |
|
| 27 |
<div className="min-h-0 flex-1 overflow-y-auto">
|
| 28 |
+
<div className="mx-auto w-full max-w-6xl px-4 py-6 sm:px-6 sm:py-8">
|
| 29 |
{techs.length === 0 ? (
|
| 30 |
<Card className="border-dashed">
|
| 31 |
<CardHeader className="items-center py-14 text-center">
|
studio/src/components/new-project-button.tsx
CHANGED
|
@@ -32,9 +32,9 @@ export function NewProjectButton() {
|
|
| 32 |
}
|
| 33 |
|
| 34 |
return (
|
| 35 |
-
<Button size="sm" onClick={create} disabled={busy}>
|
| 36 |
{busy ? <Loader2 className="size-4 animate-spin" /> : <Plus className="size-4" />}
|
| 37 |
-
New project
|
| 38 |
</Button>
|
| 39 |
);
|
| 40 |
}
|
|
|
|
| 32 |
}
|
| 33 |
|
| 34 |
return (
|
| 35 |
+
<Button size="sm" onClick={create} disabled={busy} aria-label="New project">
|
| 36 |
{busy ? <Loader2 className="size-4 animate-spin" /> : <Plus className="size-4" />}
|
| 37 |
+
<span className="hidden sm:inline">New project</span>
|
| 38 |
</Button>
|
| 39 |
);
|
| 40 |
}
|