Skip to content

Commit 418b7ac

Browse files
committed
crumbs for silo page tabs
1 parent e04336c commit 418b7ac

File tree

7 files changed

+54
-1
lines changed

7 files changed

+54
-1
lines changed

app/pages/system/silos/SiloFleetRolesTab.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { usePrefetchedApiQuery } from '@oxide/api'
1010
import { Cloud24Icon, NextArrow12Icon } from '@oxide/design-system/icons/react'
1111
import { Badge } from '@oxide/design-system/ui'
1212

13+
import { makeCrumb } from '~/hooks/use-crumbs'
1314
import { useSiloSelector } from '~/hooks/use-params'
1415
import { EmptyMessage } from '~/ui/lib/EmptyMessage'
1516
import { TableEmptyBox } from '~/ui/lib/Table'
@@ -51,3 +52,5 @@ export default function SiloFleetRolesTab() {
5152
</>
5253
)
5354
}
55+
56+
export const handle = makeCrumb('Fleet Roles')

app/pages/system/silos/SiloIdpsTab.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { Cloud24Icon } from '@oxide/design-system/icons/react'
1313
import { Badge } from '@oxide/design-system/ui'
1414

1515
import { getListQFn, queryClient, type IdentityProvider } from '~/api'
16+
import { makeCrumb } from '~/hooks/use-crumbs'
1617
import { getSiloSelector, useSiloSelector } from '~/hooks/use-params'
1718
import { LinkCell } from '~/table/cells/LinkCell'
1819
import { Columns } from '~/table/columns/common'
@@ -74,3 +75,7 @@ export default function SiloIdpsTab() {
7475
</>
7576
)
7677
}
78+
79+
export const handle = makeCrumb('Identity Providers', (params) =>
80+
pb.siloIdps(getSiloSelector(params))
81+
)

app/pages/system/silos/SiloIpPoolsTab.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { Networking24Icon } from '@oxide/design-system/icons/react'
2323

2424
import { ComboboxField } from '~/components/form/fields/ComboboxField'
2525
import { HL } from '~/components/HL'
26+
import { makeCrumb } from '~/hooks/use-crumbs'
2627
import { getSiloSelector, useSiloSelector } from '~/hooks/use-params'
2728
import { confirmAction } from '~/stores/confirm-action'
2829
import { addToast } from '~/stores/toast'
@@ -198,6 +199,8 @@ export default function SiloIpPoolsTab() {
198199
)
199200
}
200201

202+
export const handle = makeCrumb('IP Pools')
203+
201204
type LinkPoolFormValues = {
202205
pool: string | undefined
203206
}

app/pages/system/silos/SiloQuotasTab.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
} from '~/api'
2121
import { NumberField } from '~/components/form/fields/NumberField'
2222
import { SideModalForm } from '~/components/form/SideModalForm'
23+
import { makeCrumb } from '~/hooks/use-crumbs'
2324
import { getSiloSelector, useSiloSelector } from '~/hooks/use-params'
2425
import { addToast } from '~/stores/toast'
2526
import { Button } from '~/ui/lib/Button'
@@ -97,6 +98,8 @@ export default function SiloQuotasTab() {
9798
)
9899
}
99100

101+
export const handle = makeCrumb('Quotas')
102+
100103
function EditQuotasForm({ onDismiss }: { onDismiss: () => void }) {
101104
const { silo } = useSiloSelector()
102105
const { data: utilization } = usePrefetchedQuery(

app/pages/system/silos/SiloScimTab.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
usePrefetchedApiQuery,
2020
type ScimClientBearerToken,
2121
} from '~/api'
22+
import { makeCrumb } from '~/hooks/use-crumbs'
2223
import { getSiloSelector, useSiloSelector } from '~/hooks/use-params'
2324
import { confirmDelete } from '~/stores/confirm-delete'
2425
import { addToast } from '~/stores/toast'
@@ -174,6 +175,8 @@ export default function SiloScimTab() {
174175
)
175176
}
176177

178+
export const handle = makeCrumb('SCIM')
179+
177180
function CreateTokenModal({
178181
siloSelector,
179182
onDismiss,

app/routes.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
import { NotFound } from './components/ErrorPage'
1818
import { PageSkeleton } from './components/PageSkeleton.tsx'
1919
import { makeCrumb, type Crumb } from './hooks/use-crumbs'
20-
import { getInstanceSelector, getVpcSelector } from './hooks/use-params'
20+
import { getInstanceSelector, getSiloSelector, getVpcSelector } from './hooks/use-params'
2121
import { pb } from './util/path-builder'
2222

2323
// hack because RR doesn't export the redirect type
@@ -128,6 +128,10 @@ export const routes = createRoutesFromElements(
128128
<Route
129129
path=":silo"
130130
lazy={() => import('./pages/system/silos/SiloPage').then(convert)}
131+
handle={makeCrumb(
132+
(p) => p.silo!,
133+
(p) => pb.silo(getSiloSelector(p))
134+
)}
131135
>
132136
{/* Nesting keeps IdPs tab contents rendered when side modals are open*/}
133137
<Route index element={<Navigate to="idps" replace />} />

app/util/__snapshots__/path-builder.spec.ts.snap

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,10 @@ exports[`breadcrumbs 2`] = `
514514
"label": "s",
515515
"path": "/system/silos/s",
516516
},
517+
{
518+
"label": "Identity Providers",
519+
"path": "/system/silos/s/idps",
520+
},
517521
],
518522
"serialConsole (/projects/p/instances/i/serial-console)": [
519523
{
@@ -546,6 +550,10 @@ exports[`breadcrumbs 2`] = `
546550
"label": "s",
547551
"path": "/system/silos/s",
548552
},
553+
{
554+
"label": "Identity Providers",
555+
"path": "/system/silos/s/idps",
556+
},
549557
],
550558
"siloAccess (/access)": [
551559
{
@@ -562,6 +570,10 @@ exports[`breadcrumbs 2`] = `
562570
"label": "s",
563571
"path": "/system/silos/s",
564572
},
573+
{
574+
"label": "Fleet Roles",
575+
"path": "/system/silos/s/fleet-roles",
576+
},
565577
],
566578
"siloIdps (/system/silos/s/idps)": [
567579
{
@@ -572,6 +584,10 @@ exports[`breadcrumbs 2`] = `
572584
"label": "s",
573585
"path": "/system/silos/s",
574586
},
587+
{
588+
"label": "Identity Providers",
589+
"path": "/system/silos/s/idps",
590+
},
575591
],
576592
"siloIdpsNew (/system/silos/s/idps-new)": [
577593
{
@@ -582,6 +598,10 @@ exports[`breadcrumbs 2`] = `
582598
"label": "s",
583599
"path": "/system/silos/s",
584600
},
601+
{
602+
"label": "Identity Providers",
603+
"path": "/system/silos/s/idps",
604+
},
585605
],
586606
"siloImageEdit (/images/im/edit)": [
587607
{
@@ -604,6 +624,10 @@ exports[`breadcrumbs 2`] = `
604624
"label": "s",
605625
"path": "/system/silos/s",
606626
},
627+
{
628+
"label": "IP Pools",
629+
"path": "/system/silos/s/ip-pools",
630+
},
607631
],
608632
"siloQuotas (/system/silos/s/quotas)": [
609633
{
@@ -614,6 +638,10 @@ exports[`breadcrumbs 2`] = `
614638
"label": "s",
615639
"path": "/system/silos/s",
616640
},
641+
{
642+
"label": "Quotas",
643+
"path": "/system/silos/s/quotas",
644+
},
617645
],
618646
"siloScim (/system/silos/s/scim)": [
619647
{
@@ -624,6 +652,10 @@ exports[`breadcrumbs 2`] = `
624652
"label": "s",
625653
"path": "/system/silos/s",
626654
},
655+
{
656+
"label": "SCIM",
657+
"path": "/system/silos/s/scim",
658+
},
627659
],
628660
"siloUtilization (/utilization)": [
629661
{

0 commit comments

Comments
 (0)