summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/src/routes/workspace
diff options
context:
space:
mode:
authorFrank <[email protected]>2026-03-11 00:39:56 -0400
committerFrank <[email protected]>2026-03-11 18:09:40 -0400
commited3bb3ea8f18a3d2818eb17d77e2caad40eb1dee (patch)
treec3916c942d7b24ee6a2d0930c76bfd422c24045c /packages/console/app/src/routes/workspace
parentfac23a1afc6cfbb7767eef05bf6ea018837697ad (diff)
downloadopencode-ed3bb3ea8f18a3d2818eb17d77e2caad40eb1dee.tar.gz
opencode-ed3bb3ea8f18a3d2818eb17d77e2caad40eb1dee.zip
zen: add usage section
Diffstat (limited to 'packages/console/app/src/routes/workspace')
-rw-r--r--packages/console/app/src/routes/workspace/[id].tsx6
-rw-r--r--packages/console/app/src/routes/workspace/[id]/index.tsx6
-rw-r--r--packages/console/app/src/routes/workspace/[id]/usage/graph-section.module.css (renamed from packages/console/app/src/routes/workspace/[id]/graph-section.module.css)0
-rw-r--r--packages/console/app/src/routes/workspace/[id]/usage/graph-section.tsx (renamed from packages/console/app/src/routes/workspace/[id]/graph-section.tsx)0
-rw-r--r--packages/console/app/src/routes/workspace/[id]/usage/index.tsx21
-rw-r--r--packages/console/app/src/routes/workspace/[id]/usage/usage-section.module.css (renamed from packages/console/app/src/routes/workspace/[id]/usage-section.module.css)0
-rw-r--r--packages/console/app/src/routes/workspace/[id]/usage/usage-section.tsx (renamed from packages/console/app/src/routes/workspace/[id]/usage-section.tsx)2
7 files changed, 28 insertions, 7 deletions
diff --git a/packages/console/app/src/routes/workspace/[id].tsx b/packages/console/app/src/routes/workspace/[id].tsx
index fde074e5e..a36368fd0 100644
--- a/packages/console/app/src/routes/workspace/[id].tsx
+++ b/packages/console/app/src/routes/workspace/[id].tsx
@@ -19,6 +19,9 @@ export default function WorkspaceLayout(props: RouteSectionProps) {
<A href={`/workspace/${params.id}`} end activeClass="active" data-nav-button>
{i18n.t("workspace.nav.zen")}
</A>
+ <A href={`/workspace/${params.id}/usage`} activeClass="active" data-nav-button>
+ {i18n.t("workspace.nav.usage")}
+ </A>
<A href={`/workspace/${params.id}/keys`} activeClass="active" data-nav-button>
{i18n.t("workspace.nav.apiKeys")}
</A>
@@ -41,6 +44,9 @@ export default function WorkspaceLayout(props: RouteSectionProps) {
<A href={`/workspace/${params.id}`} end activeClass="active" data-nav-button>
{i18n.t("workspace.nav.zen")}
</A>
+ <A href={`/workspace/${params.id}/usage`} activeClass="active" data-nav-button>
+ {i18n.t("workspace.nav.usage")}
+ </A>
<A href={`/workspace/${params.id}/keys`} activeClass="active" data-nav-button>
{i18n.t("workspace.nav.apiKeys")}
</A>
diff --git a/packages/console/app/src/routes/workspace/[id]/index.tsx b/packages/console/app/src/routes/workspace/[id]/index.tsx
index c91cfd2bc..ca3c2bc0c 100644
--- a/packages/console/app/src/routes/workspace/[id]/index.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/index.tsx
@@ -2,10 +2,8 @@ import { Match, Show, Switch, createMemo } from "solid-js"
import { createStore } from "solid-js/store"
import { createAsync, useParams, useAction, useSubmission } from "@solidjs/router"
import { NewUserSection } from "./new-user-section"
-import { UsageSection } from "./usage-section"
import { ModelSection } from "./model-section"
import { ProviderSection } from "./provider-section"
-import { GraphSection } from "./graph-section"
import { IconLogo } from "~/component/icon"
import { querySessionInfo, queryBillingInfo, createCheckoutUrl, formatBalance } from "../common"
import { useI18n } from "~/context/i18n"
@@ -73,14 +71,10 @@ export default function () {
<div data-slot="sections">
<NewUserSection />
- <Show when={userInfo()?.isAdmin}>
- <GraphSection />
- </Show>
<ModelSection />
<Show when={userInfo()?.isAdmin}>
<ProviderSection />
</Show>
- <UsageSection />
</div>
</div>
)
diff --git a/packages/console/app/src/routes/workspace/[id]/graph-section.module.css b/packages/console/app/src/routes/workspace/[id]/usage/graph-section.module.css
index 24b85be74..24b85be74 100644
--- a/packages/console/app/src/routes/workspace/[id]/graph-section.module.css
+++ b/packages/console/app/src/routes/workspace/[id]/usage/graph-section.module.css
diff --git a/packages/console/app/src/routes/workspace/[id]/graph-section.tsx b/packages/console/app/src/routes/workspace/[id]/usage/graph-section.tsx
index bb4b4f4cf..bb4b4f4cf 100644
--- a/packages/console/app/src/routes/workspace/[id]/graph-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/usage/graph-section.tsx
diff --git a/packages/console/app/src/routes/workspace/[id]/usage/index.tsx b/packages/console/app/src/routes/workspace/[id]/usage/index.tsx
new file mode 100644
index 000000000..3a9c8db29
--- /dev/null
+++ b/packages/console/app/src/routes/workspace/[id]/usage/index.tsx
@@ -0,0 +1,21 @@
+import { Show } from "solid-js"
+import { createAsync, useParams } from "@solidjs/router"
+import { GraphSection } from "./graph-section"
+import { UsageSection } from "./usage-section"
+import { querySessionInfo } from "../../common"
+
+export default function () {
+ const params = useParams()
+ const user = createAsync(() => querySessionInfo(params.id!))
+
+ return (
+ <div data-page="workspace-[id]">
+ <div data-slot="sections">
+ <Show when={user()?.isAdmin}>
+ <GraphSection />
+ </Show>
+ <UsageSection />
+ </div>
+ </div>
+ )
+}
diff --git a/packages/console/app/src/routes/workspace/[id]/usage-section.module.css b/packages/console/app/src/routes/workspace/[id]/usage/usage-section.module.css
index 00232de88..00232de88 100644
--- a/packages/console/app/src/routes/workspace/[id]/usage-section.module.css
+++ b/packages/console/app/src/routes/workspace/[id]/usage/usage-section.module.css
diff --git a/packages/console/app/src/routes/workspace/[id]/usage-section.tsx b/packages/console/app/src/routes/workspace/[id]/usage/usage-section.tsx
index a20a5bf0d..2cf8ef850 100644
--- a/packages/console/app/src/routes/workspace/[id]/usage-section.tsx
+++ b/packages/console/app/src/routes/workspace/[id]/usage/usage-section.tsx
@@ -1,7 +1,7 @@
import { Billing } from "@opencode-ai/console-core/billing.js"
import { createAsync, query, useParams } from "@solidjs/router"
import { createMemo, For, Show, Switch, Match, createEffect, createSignal } from "solid-js"
-import { formatDateUTC, formatDateForTable } from "../common"
+import { formatDateUTC, formatDateForTable } from "../../common"
import { withActor } from "~/context/auth.withActor"
import { IconChevronLeft, IconChevronRight, IconBreakdown } from "~/component/icon"
import styles from "./usage-section.module.css"