Skip to content

Commit b7be2d9

Browse files
committed
fix(core): collapsed tab group
- fixes issue where tab group collapsed with missing width Signed-off-by: Cory Rylan <crylan@nvidia.com>
1 parent af780c6 commit b7be2d9

3 files changed

Lines changed: 154 additions & 3 deletions

File tree

Lines changed: 2 additions & 2 deletions
Loading

projects/core/src/tabs/tabs-group.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
:host {
55
--padding: var(--nve-ref-space-sm) 0 0 0;
66
display: block;
7+
width: 100%;
78
}
89

910
:host(:is([alignment='start'], [alignment='end'])) {

projects/internals/patterns/src/dashboard.examples.ts

Lines changed: 151 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,4 +328,154 @@ export const ProjectBoard = {
328328
</main>
329329
</nve-page>
330330
`
331-
}
331+
};
332+
333+
/**
334+
* @summary Multi-route dashboard with top-level navigation and URL-synchronized tab views. Use for resource management pages where nested routes preserve context and browser history while keeping overview, activity, and access tasks close together.
335+
* @tags pattern
336+
*/
337+
export const AdminRoutes = {
338+
render() {
339+
return html`
340+
<nve-page>
341+
<nve-page-header slot="header">
342+
<nve-logo slot="prefix" size="sm" color="brand-green">OP</nve-logo>
343+
<h2 slot="prefix" nve-text="heading">Operations Admin</h2>
344+
<nve-button selected container="flat"><a href="/admin/dashboard">Dashboard</a></nve-button>
345+
<nve-button container="flat"><a href="/admin/teams">Teams</a></nve-button>
346+
<nve-button container="flat"><a href="/admin/billing">Billing</a></nve-button>
347+
<nve-icon-button interaction="emphasis" slot="suffix" size="sm">MK</nve-icon-button>
348+
</nve-page-header>
349+
<main nve-layout="column gap:lg pad:lg" style="max-width: 1300px;">
350+
<div nve-layout="column gap:sm">
351+
<p nve-text="label sm muted">Dashboard / Services / Inference API</p>
352+
<h1 nve-text="heading lg">Inference API</h1>
353+
</div>
354+
<nve-tabs-group id="admin-route-tabs">
355+
<nve-tabs>
356+
<nve-tabs-item
357+
selected
358+
command="--toggle"
359+
commandfor="admin-route-tabs"
360+
value="overview"
361+
>Overview</nve-tabs-item>
362+
<nve-tabs-item
363+
command="--toggle"
364+
commandfor="admin-route-tabs"
365+
value="activity"
366+
>Activity</nve-tabs-item>
367+
<nve-tabs-item
368+
command="--toggle"
369+
commandfor="admin-route-tabs"
370+
value="access"
371+
>Access</nve-tabs-item>
372+
</nve-tabs>
373+
<section slot="overview" nve-layout="column gap:lg">
374+
<div nve-layout="grid gap:lg span-items:4 align:vertical-stretch">
375+
<nve-card>
376+
<nve-card-header><h2 nve-text="label muted">Requests today</h2></nve-card-header>
377+
<nve-card-content>
378+
<div nve-layout="column gap:xs">
379+
<p nve-text="heading lg">2.4M</p>
380+
<p nve-text="body sm muted">12% above the daily average</p>
381+
</div>
382+
</nve-card-content>
383+
</nve-card>
384+
<nve-card>
385+
<nve-card-header><h2 nve-text="label muted">Success rate</h2></nve-card-header>
386+
<nve-card-content>
387+
<div nve-layout="column gap:xs">
388+
<p nve-text="heading lg">99.98%</p>
389+
<p nve-text="body sm muted">Within the 99.9% target</p>
390+
</div>
391+
</nve-card-content>
392+
</nve-card>
393+
<nve-card>
394+
<nve-card-header><h2 nve-text="label muted">P95 latency</h2></nve-card-header>
395+
<nve-card-content>
396+
<div nve-layout="column gap:xs">
397+
<p nve-text="heading lg">182 ms</p>
398+
<p nve-text="body sm muted">18 ms below the alert threshold</p>
399+
</div>
400+
</nve-card-content>
401+
</nve-card>
402+
</div>
403+
<nve-card>
404+
<nve-card-header>
405+
<div nve-layout="column gap:xs">
406+
<h2 nve-text="heading sm">Service details</h2>
407+
<p nve-text="body sm muted">Current production configuration.</p>
408+
</div>
409+
</nve-card-header>
410+
<nve-card-content>
411+
<dl nve-layout="grid gap:sm">
412+
<dt nve-layout="span:4" nve-text="body muted medium">Region</dt>
413+
<dd nve-layout="span:8" nve-text="body">us-central-1</dd>
414+
<dt nve-layout="span:4" nve-text="body muted medium">Model</dt>
415+
<dd nve-layout="span:8" nve-text="body">Llama 3.3 70B Instruct</dd>
416+
<dt nve-layout="span:4" nve-text="body muted medium">Deployment</dt>
417+
<dd nve-layout="span:8" nve-text="body">inference-api-v42</dd>
418+
</dl>
419+
</nve-card-content>
420+
</nve-card>
421+
</section>
422+
<section slot="activity" nve-layout="column gap:md">
423+
<nve-grid>
424+
<nve-grid-header>
425+
<nve-grid-column width="25%">Event</nve-grid-column>
426+
<nve-grid-column width="25%">Actor</nve-grid-column>
427+
<nve-grid-column width="25%">Time</nve-grid-column>
428+
<nve-grid-column width="25%">Status</nve-grid-column>
429+
</nve-grid-header>
430+
<nve-grid-row>
431+
<nve-grid-cell>Deployed inference-api-v42</nve-grid-cell>
432+
<nve-grid-cell>Maya Kim</nve-grid-cell>
433+
<nve-grid-cell>18 minutes ago</nve-grid-cell>
434+
<nve-grid-cell><nve-badge status="success" container="flat">Completed</nve-badge></nve-grid-cell>
435+
</nve-grid-row>
436+
<nve-grid-row>
437+
<nve-grid-cell>Updated autoscaling target</nve-grid-cell>
438+
<nve-grid-cell>Jon Bell</nve-grid-cell>
439+
<nve-grid-cell>2 hours ago</nve-grid-cell>
440+
<nve-grid-cell><nve-badge status="finished" container="flat">Applied</nve-badge></nve-grid-cell>
441+
</nve-grid-row>
442+
<nve-grid-row>
443+
<nve-grid-cell>Rotated service credentials</nve-grid-cell>
444+
<nve-grid-cell>System</nve-grid-cell>
445+
<nve-grid-cell>Yesterday</nve-grid-cell>
446+
<nve-grid-cell><nve-badge status="finished" container="flat">Applied</nve-badge></nve-grid-cell>
447+
</nve-grid-row>
448+
</nve-grid>
449+
</section>
450+
<section slot="access" nve-layout="column gap:md">
451+
<div nve-layout="grid gap:lg span-items:6 align:vertical-stretch">
452+
<nve-card>
453+
<nve-card-header>
454+
<div nve-layout="row gap:sm align:space-between align:vertical-center">
455+
<h3 nve-text="heading xs">Platform administrators</h3>
456+
<nve-badge container="flat">Owner</nve-badge>
457+
</div>
458+
</nve-card-header>
459+
<nve-card-content>
460+
<p nve-text="body sm muted">12 members can deploy, configure, and manage access.</p>
461+
</nve-card-content>
462+
</nve-card>
463+
<nve-card>
464+
<nve-card-header>
465+
<div nve-layout="row gap:sm align:space-between align:vertical-center">
466+
<h3 nve-text="heading xs">ML operations</h3>
467+
<nve-badge container="flat">Editor</nve-badge>
468+
</div>
469+
</nve-card-header>
470+
<nve-card-content>
471+
<p nve-text="body sm muted">28 members can deploy and update service configuration.</p>
472+
</nve-card-content>
473+
</nve-card>
474+
</div>
475+
</section>
476+
</nve-tabs-group>
477+
</main>
478+
</nve-page>
479+
`
480+
}
481+
};

0 commit comments

Comments
 (0)