Skip to content

Commit bb03aec

Browse files
committed
feat: add ApplicationSettingsPage for managing application settings and restrictions
1 parent a31ff61 commit bb03aec

File tree

2 files changed

+135
-102
lines changed

2 files changed

+135
-102
lines changed
Lines changed: 3 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,9 @@
11
"use client"
22

3-
import {Badge, Button, Card, DLayout, Flex, InputLabel, Spacing, SwitchInput, Text} from "@code0-tech/pictor";
4-
import {Tab, TabContent, TabList, TabTrigger} from "@code0-tech/pictor/dist/components/tab/Tab";
5-
import {IconGavel, IconSettings} from "@tabler/icons-react";
6-
import * as process from "node:process";
7-
import CardSection from "@code0-tech/pictor/dist/components/card/CardSection";
3+
import React from "react";
4+
import {ApplicationSettingsPage} from "@edition/dashboard/application/ApplicationSettingsPage";
85

96
export default function Page() {
107

11-
return <>
12-
<Spacing spacing={"xl"}/>
13-
<Tab orientation={"vertical"} defaultValue={"general"}>
14-
<DLayout leftContent={
15-
<TabList>
16-
<InputLabel>Application</InputLabel>
17-
<TabTrigger value={"general"}>
18-
<Button paddingSize={"xxs"} variant={"none"}>
19-
<IconSettings size={16}/>
20-
<Text size={"md"} hierarchy={"primary"}>General</Text>
21-
</Button>
22-
</TabTrigger>
23-
<TabTrigger value={"restrictions"}>
24-
<Button paddingSize={"xxs"} variant={"none"}>
25-
<IconGavel size={16}/>
26-
<Text size={"md"} hierarchy={"primary"}>Restrictions</Text>
27-
</Button>
28-
</TabTrigger>
29-
</TabList>
30-
}>
31-
<>
32-
<TabContent value={"general"}>
33-
<Text size={"xl"} hierarchy={"primary"}>General</Text>
34-
<Spacing spacing={"xl"}/>
35-
<div style={{borderBottom: "1px solid rgba(255,255,255,.1)"}}/>
36-
<Spacing spacing={"xl"}/>
37-
<Card p={1.3}>
38-
<CardSection border>
39-
<Flex justify={"space-between"} align={"center"}>
40-
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
41-
<Text size={"md"} hierarchy={"primary"}>Sculptor version</Text>
42-
<Text size={"md"} hierarchy={"tertiary"}>Version of this application</Text>
43-
</Flex>
44-
<Badge color={"info"}>v0.0.0-mvp.1</Badge>
45-
</Flex>
46-
</CardSection>
47-
48-
<CardSection border>
49-
<Flex justify={"space-between"} align={"center"}>
50-
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
51-
<Text size={"md"} hierarchy={"primary"}>Pictor version</Text>
52-
<Text size={"md"} hierarchy={"tertiary"}>Version of the UI component
53-
library</Text>
54-
</Flex>
55-
<Badge
56-
color={"info"}>{process.env.NEXT_PUBLIC_pictorVersion ?? "v0.0.0-mvp.10"}</Badge>
57-
</Flex>
58-
</CardSection>
59-
<CardSection border>
60-
<Flex justify={"space-between"} align={"center"}>
61-
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
62-
<Text size={"md"} hierarchy={"primary"}>Sagittarius version</Text>
63-
<Text size={"md"} hierarchy={"tertiary"}>Version of the backend</Text>
64-
</Flex>
65-
<Badge color={"info"}>2134929721-ee</Badge>
66-
</Flex>
67-
</CardSection>
68-
</Card>
69-
</TabContent>
70-
<TabContent value={"restrictions"}>
71-
<Text size={"xl"} hierarchy={"primary"}>Restrictions</Text>
72-
<Spacing spacing={"xl"}/>
73-
<div style={{borderBottom: "1px solid rgba(255,255,255,.1)"}}/>
74-
<Spacing spacing={"xl"}/>
75-
<Flex style={{gap: "1.3rem", flexDirection: "column"}}>
76-
<Card p={1.3}>
77-
<Flex justify={"space-between"} align={"center"}>
78-
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
79-
<Text size={"md"} hierarchy={"primary"}>Organization creation</Text>
80-
<Text size={"md"} hierarchy={"tertiary"}>Set if organization creation is
81-
restricted
82-
to
83-
administrators.</Text>
84-
</Flex>
85-
<SwitchInput w={"40px"}/>
86-
</Flex>
87-
</Card>
88-
<Spacing spacing={"xxs"}/>
89-
<Text size={"xl"} hierarchy={"primary"}>Danger Zone</Text>
90-
<div style={{borderBottom: "1px solid rgba(255,255,255,.1)"}}/>
91-
<Card color={"error"} p={1.3}>
92-
<Flex justify={"space-between"} align={"center"}>
93-
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
94-
<Text size={"md"} hierarchy={"primary"}>User registration</Text>
95-
<Text size={"md"} hierarchy={"tertiary"}>Set if user registration is
96-
enabled.</Text>
97-
</Flex>
98-
<SwitchInput w={"40px"}/>
99-
</Flex>
100-
</Card>
101-
</Flex>
102-
103-
</TabContent>
104-
</>
105-
</DLayout>
106-
</Tab>
107-
</>
8+
return <ApplicationSettingsPage/>
1089
}
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
"use client"
2+
3+
import React from "react";
4+
import {
5+
Badge,
6+
Button,
7+
Card,
8+
DLayout,
9+
Flex,
10+
InputLabel,
11+
Spacing,
12+
SwitchInput,
13+
Text,
14+
useService,
15+
useStore,
16+
useUserSession
17+
} from "@code0-tech/pictor";
18+
import {UserService} from "@edition/user/User.service";
19+
import {notFound} from "next/navigation";
20+
import {Tab, TabContent, TabList, TabTrigger} from "@code0-tech/pictor/dist/components/tab/Tab";
21+
import {IconGavel, IconSettings} from "@tabler/icons-react";
22+
import CardSection from "@code0-tech/pictor/dist/components/card/CardSection";
23+
import process from "node:process";
24+
25+
export const ApplicationSettingsPage: React.FC = () => {
26+
const currentSession = useUserSession()
27+
const userStore = useStore(UserService)
28+
const userService = useService(UserService)
29+
const currentUser = React.useMemo(() => userService.getById(currentSession?.user?.id), [userStore, currentSession])
30+
31+
if (currentUser && !currentUser.admin) {
32+
return notFound()
33+
}
34+
35+
return <>
36+
<Spacing spacing={"xl"}/>
37+
<Tab orientation={"vertical"} defaultValue={"general"}>
38+
<DLayout leftContent={
39+
<TabList>
40+
<InputLabel>Application</InputLabel>
41+
<TabTrigger value={"general"}>
42+
<Button paddingSize={"xxs"} variant={"none"}>
43+
<IconSettings size={16}/>
44+
<Text size={"md"} hierarchy={"primary"}>General</Text>
45+
</Button>
46+
</TabTrigger>
47+
<TabTrigger value={"restrictions"}>
48+
<Button paddingSize={"xxs"} variant={"none"}>
49+
<IconGavel size={16}/>
50+
<Text size={"md"} hierarchy={"primary"}>Restrictions</Text>
51+
</Button>
52+
</TabTrigger>
53+
</TabList>
54+
}>
55+
<>
56+
<TabContent value={"general"}>
57+
<Text size={"xl"} hierarchy={"primary"}>General</Text>
58+
<Spacing spacing={"xl"}/>
59+
<div style={{borderBottom: "1px solid rgba(255,255,255,.1)"}}/>
60+
<Spacing spacing={"xl"}/>
61+
<Card p={1.3}>
62+
<CardSection border>
63+
<Flex justify={"space-between"} align={"center"}>
64+
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
65+
<Text size={"md"} hierarchy={"primary"}>Sculptor version</Text>
66+
<Text size={"md"} hierarchy={"tertiary"}>Version of this application</Text>
67+
</Flex>
68+
<Badge color={"info"}>v0.0.0-mvp.1</Badge>
69+
</Flex>
70+
</CardSection>
71+
72+
<CardSection border>
73+
<Flex justify={"space-between"} align={"center"}>
74+
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
75+
<Text size={"md"} hierarchy={"primary"}>Pictor version</Text>
76+
<Text size={"md"} hierarchy={"tertiary"}>Version of the UI component
77+
library</Text>
78+
</Flex>
79+
<Badge
80+
color={"info"}>{process.env.NEXT_PUBLIC_pictorVersion ?? "v0.0.0-mvp.10"}</Badge>
81+
</Flex>
82+
</CardSection>
83+
<CardSection border>
84+
<Flex justify={"space-between"} align={"center"}>
85+
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
86+
<Text size={"md"} hierarchy={"primary"}>Sagittarius version</Text>
87+
<Text size={"md"} hierarchy={"tertiary"}>Version of the backend</Text>
88+
</Flex>
89+
<Badge color={"info"}>2134929721-ee</Badge>
90+
</Flex>
91+
</CardSection>
92+
</Card>
93+
</TabContent>
94+
<TabContent value={"restrictions"}>
95+
<Text size={"xl"} hierarchy={"primary"}>Restrictions</Text>
96+
<Spacing spacing={"xl"}/>
97+
<div style={{borderBottom: "1px solid rgba(255,255,255,.1)"}}/>
98+
<Spacing spacing={"xl"}/>
99+
<Flex style={{gap: "1.3rem", flexDirection: "column"}}>
100+
<Card p={1.3}>
101+
<Flex justify={"space-between"} align={"center"}>
102+
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
103+
<Text size={"md"} hierarchy={"primary"}>Organization creation</Text>
104+
<Text size={"md"} hierarchy={"tertiary"}>Set if organization creation is
105+
restricted
106+
to
107+
administrators.</Text>
108+
</Flex>
109+
<SwitchInput w={"40px"}/>
110+
</Flex>
111+
</Card>
112+
<Spacing spacing={"xxs"}/>
113+
<Text size={"xl"} hierarchy={"primary"}>Danger Zone</Text>
114+
<div style={{borderBottom: "1px solid rgba(255,255,255,.1)"}}/>
115+
<Card color={"error"} p={1.3}>
116+
<Flex justify={"space-between"} align={"center"}>
117+
<Flex style={{gap: ".35rem", flexDirection: "column"}}>
118+
<Text size={"md"} hierarchy={"primary"}>User registration</Text>
119+
<Text size={"md"} hierarchy={"tertiary"}>Set if user registration is
120+
enabled.</Text>
121+
</Flex>
122+
<SwitchInput w={"40px"}/>
123+
</Flex>
124+
</Card>
125+
</Flex>
126+
127+
</TabContent>
128+
</>
129+
</DLayout>
130+
</Tab>
131+
</>
132+
}

0 commit comments

Comments
 (0)