1+ "use client"
2+
3+ import React from "react" ;
4+ import { Tab , TabContent } from "@code0-tech/pictor/dist/components/tab/Tab" ;
5+ import { NamespaceDeleteView } from "@edition/namespace/views/NamespaceDeleteView" ;
6+ import { NamespaceGeneralSettingsView } from "@edition/namespace/views/NamespaceGeneralSettingsView" ;
7+ import {
8+ ResizableHandle ,
9+ ResizablePanel ,
10+ ResizablePanelGroup
11+ } from "@code0-tech/pictor/dist/components/resizable/Resizable" ;
12+ import { SidebarComponent } from "@core/components/SidebarComponent" ;
13+ import { NamespaceTabListView } from "@edition/namespace/views/NamespaceTabListView" ;
14+ import { useParams } from "next/navigation" ;
15+ import { useService , useStore } from "@code0-tech/pictor" ;
16+ import { NamespaceService } from "@edition/namespace/services/Namespace.service" ;
17+ import { Namespace } from "@code0-tech/sagittarius-graphql-types" ;
18+ import { NamespaceLicensesView } from "@cloud-internal/namespace/views/NamespaceLicensesView" ;
19+
20+ export const NamespaceSettingsPage : React . FC = ( ) => {
21+
22+ const params = useParams ( )
23+ const namespaceService = useService ( NamespaceService )
24+ const namespaceStore = useStore ( NamespaceService )
25+
26+ const namespaceIndex = params . namespaceId as any as number
27+ const namespaceId : Namespace [ 'id' ] = `gid://sagittarius/Namespace/${ namespaceIndex } `
28+
29+ const namespace = React . useMemo (
30+ ( ) => namespaceService . getById ( namespaceId ) ,
31+ [ namespaceStore , namespaceId ]
32+ )
33+
34+ //TODO: add ability check for organization settings access for every settings tab
35+
36+ return < Tab orientation = { "vertical" } defaultValue = { namespace ?. parent ?. __typename === "Organization" ? "general" : "licenses" } h = { "100%" } >
37+ < ResizablePanelGroup >
38+ < SidebarComponent id = { "1" }
39+ title = { "Organization settings" }
40+ description = { "General settings and restrictions for your Sculptor application. These settings affect all users and organizations within the application." } >
41+ < NamespaceTabListView />
42+ </ SidebarComponent >
43+ < ResizableHandle />
44+ < ResizablePanel id = { "2" } color = { "primary" } p = { 1 }
45+ style = { { borderTopLeftRadius : "1rem" , borderTopRightRadius : "1rem" } } >
46+ < >
47+ < TabContent value = { "general" } >
48+ < NamespaceGeneralSettingsView />
49+ </ TabContent >
50+ < TabContent value = { "delete" } >
51+ < NamespaceDeleteView />
52+ </ TabContent >
53+ < TabContent value = { "licenses" } >
54+ < NamespaceLicensesView />
55+ </ TabContent >
56+ </ >
57+ </ ResizablePanel >
58+ </ ResizablePanelGroup >
59+ </ Tab >
60+ }
0 commit comments