konduktor-nightly 0.1.0.dev20251128104812__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- konduktor/__init__.py +49 -0
- konduktor/adaptors/__init__.py +0 -0
- konduktor/adaptors/aws.py +221 -0
- konduktor/adaptors/common.py +118 -0
- konduktor/adaptors/gcp.py +126 -0
- konduktor/authentication.py +124 -0
- konduktor/backends/__init__.py +6 -0
- konduktor/backends/backend.py +86 -0
- konduktor/backends/constants.py +21 -0
- konduktor/backends/deployment.py +204 -0
- konduktor/backends/deployment_utils.py +1351 -0
- konduktor/backends/jobset.py +225 -0
- konduktor/backends/jobset_utils.py +726 -0
- konduktor/backends/pod_utils.py +501 -0
- konduktor/check.py +184 -0
- konduktor/cli.py +1945 -0
- konduktor/config.py +420 -0
- konduktor/constants.py +36 -0
- konduktor/controller/__init__.py +0 -0
- konduktor/controller/constants.py +56 -0
- konduktor/controller/launch.py +44 -0
- konduktor/controller/node.py +116 -0
- konduktor/controller/parse.py +111 -0
- konduktor/dashboard/README.md +30 -0
- konduktor/dashboard/backend/main.py +169 -0
- konduktor/dashboard/backend/sockets.py +154 -0
- konduktor/dashboard/frontend/.eslintrc.json +3 -0
- konduktor/dashboard/frontend/.gitignore +36 -0
- konduktor/dashboard/frontend/app/api/jobs/route.js +71 -0
- konduktor/dashboard/frontend/app/api/namespaces/route.js +69 -0
- konduktor/dashboard/frontend/app/components/Grafana.jsx +66 -0
- konduktor/dashboard/frontend/app/components/JobsData.jsx +197 -0
- konduktor/dashboard/frontend/app/components/LogsData.jsx +139 -0
- konduktor/dashboard/frontend/app/components/NavMenu.jsx +39 -0
- konduktor/dashboard/frontend/app/components/NavTabs.jsx +73 -0
- konduktor/dashboard/frontend/app/components/NavTabs2.jsx +30 -0
- konduktor/dashboard/frontend/app/components/SelectBtn.jsx +27 -0
- konduktor/dashboard/frontend/app/components/lib/utils.js +6 -0
- konduktor/dashboard/frontend/app/components/ui/chip-select.jsx +78 -0
- konduktor/dashboard/frontend/app/components/ui/input.jsx +19 -0
- konduktor/dashboard/frontend/app/components/ui/navigation-menu.jsx +104 -0
- konduktor/dashboard/frontend/app/components/ui/select.jsx +120 -0
- konduktor/dashboard/frontend/app/favicon.ico +0 -0
- konduktor/dashboard/frontend/app/globals.css +120 -0
- konduktor/dashboard/frontend/app/jobs/page.js +10 -0
- konduktor/dashboard/frontend/app/layout.js +22 -0
- konduktor/dashboard/frontend/app/logs/page.js +11 -0
- konduktor/dashboard/frontend/app/page.js +12 -0
- konduktor/dashboard/frontend/jsconfig.json +7 -0
- konduktor/dashboard/frontend/next.config.mjs +4 -0
- konduktor/dashboard/frontend/package-lock.json +6687 -0
- konduktor/dashboard/frontend/package.json +37 -0
- konduktor/dashboard/frontend/postcss.config.mjs +8 -0
- konduktor/dashboard/frontend/server.js +64 -0
- konduktor/dashboard/frontend/tailwind.config.js +17 -0
- konduktor/data/__init__.py +9 -0
- konduktor/data/aws/__init__.py +15 -0
- konduktor/data/aws/s3.py +1138 -0
- konduktor/data/constants.py +7 -0
- konduktor/data/data_utils.py +268 -0
- konduktor/data/gcp/__init__.py +19 -0
- konduktor/data/gcp/constants.py +42 -0
- konduktor/data/gcp/gcs.py +994 -0
- konduktor/data/gcp/utils.py +9 -0
- konduktor/data/registry.py +19 -0
- konduktor/data/storage.py +812 -0
- konduktor/data/storage_utils.py +535 -0
- konduktor/execution.py +447 -0
- konduktor/kube_client.py +237 -0
- konduktor/logging.py +111 -0
- konduktor/manifests/aibrix-setup.yaml +430 -0
- konduktor/manifests/apoxy-setup.yaml +184 -0
- konduktor/manifests/apoxy-setup2.yaml +98 -0
- konduktor/manifests/controller_deployment.yaml +69 -0
- konduktor/manifests/dashboard_deployment.yaml +131 -0
- konduktor/manifests/dmesg_daemonset.yaml +57 -0
- konduktor/manifests/pod_cleanup_controller.yaml +129 -0
- konduktor/resource.py +546 -0
- konduktor/serving.py +153 -0
- konduktor/task.py +949 -0
- konduktor/templates/deployment.yaml.j2 +191 -0
- konduktor/templates/jobset.yaml.j2 +43 -0
- konduktor/templates/pod.yaml.j2 +563 -0
- konduktor/usage/__init__.py +0 -0
- konduktor/usage/constants.py +21 -0
- konduktor/utils/__init__.py +0 -0
- konduktor/utils/accelerator_registry.py +17 -0
- konduktor/utils/annotations.py +62 -0
- konduktor/utils/base64_utils.py +95 -0
- konduktor/utils/common_utils.py +426 -0
- konduktor/utils/constants.py +5 -0
- konduktor/utils/env_options.py +55 -0
- konduktor/utils/exceptions.py +234 -0
- konduktor/utils/kubernetes_enums.py +8 -0
- konduktor/utils/kubernetes_utils.py +763 -0
- konduktor/utils/log_utils.py +467 -0
- konduktor/utils/loki_utils.py +102 -0
- konduktor/utils/rich_utils.py +123 -0
- konduktor/utils/schemas.py +625 -0
- konduktor/utils/subprocess_utils.py +273 -0
- konduktor/utils/ux_utils.py +247 -0
- konduktor/utils/validator.py +461 -0
- konduktor_nightly-0.1.0.dev20251128104812.dist-info/LICENSE +91 -0
- konduktor_nightly-0.1.0.dev20251128104812.dist-info/METADATA +98 -0
- konduktor_nightly-0.1.0.dev20251128104812.dist-info/RECORD +107 -0
- konduktor_nightly-0.1.0.dev20251128104812.dist-info/WHEEL +4 -0
- konduktor_nightly-0.1.0.dev20251128104812.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
|
|
3
|
+
import { cva } from "class-variance-authority"
|
|
4
|
+
import { ChevronDown } from "lucide-react"
|
|
5
|
+
|
|
6
|
+
import { cn } from "../lib/utils"
|
|
7
|
+
|
|
8
|
+
const NavigationMenu = React.forwardRef(({ className, children, ...props }, ref) => (
|
|
9
|
+
<NavigationMenuPrimitive.Root
|
|
10
|
+
ref={ref}
|
|
11
|
+
className={cn(
|
|
12
|
+
"relative z-10 flex max-w-max flex-1 items-center justify-center",
|
|
13
|
+
className
|
|
14
|
+
)}
|
|
15
|
+
{...props}>
|
|
16
|
+
{children}
|
|
17
|
+
<NavigationMenuViewport />
|
|
18
|
+
</NavigationMenuPrimitive.Root>
|
|
19
|
+
))
|
|
20
|
+
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName
|
|
21
|
+
|
|
22
|
+
const NavigationMenuList = React.forwardRef(({ className, ...props }, ref) => (
|
|
23
|
+
<NavigationMenuPrimitive.List
|
|
24
|
+
ref={ref}
|
|
25
|
+
className={cn(
|
|
26
|
+
"group flex flex-1 list-none items-center justify-center space-x-1",
|
|
27
|
+
className
|
|
28
|
+
)}
|
|
29
|
+
{...props} />
|
|
30
|
+
))
|
|
31
|
+
NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
|
|
32
|
+
|
|
33
|
+
const NavigationMenuItem = NavigationMenuPrimitive.Item
|
|
34
|
+
|
|
35
|
+
const navigationMenuTriggerStyle = cva(
|
|
36
|
+
"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
const NavigationMenuTrigger = React.forwardRef(({ className, children, ...props }, ref) => (
|
|
40
|
+
<NavigationMenuPrimitive.Trigger
|
|
41
|
+
ref={ref}
|
|
42
|
+
className={cn(navigationMenuTriggerStyle(), "group", className)}
|
|
43
|
+
{...props}>
|
|
44
|
+
{children}{" "}
|
|
45
|
+
<ChevronDown
|
|
46
|
+
className="relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"
|
|
47
|
+
aria-hidden="true" />
|
|
48
|
+
</NavigationMenuPrimitive.Trigger>
|
|
49
|
+
))
|
|
50
|
+
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName
|
|
51
|
+
|
|
52
|
+
const NavigationMenuContent = React.forwardRef(({ className, ...props }, ref) => (
|
|
53
|
+
<NavigationMenuPrimitive.Content
|
|
54
|
+
ref={ref}
|
|
55
|
+
className={cn(
|
|
56
|
+
"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",
|
|
57
|
+
className
|
|
58
|
+
)}
|
|
59
|
+
{...props} />
|
|
60
|
+
))
|
|
61
|
+
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName
|
|
62
|
+
|
|
63
|
+
const NavigationMenuLink = NavigationMenuPrimitive.Link
|
|
64
|
+
|
|
65
|
+
const NavigationMenuViewport = React.forwardRef(({ className, ...props }, ref) => (
|
|
66
|
+
<div className={cn("absolute left-0 top-full flex justify-center")}>
|
|
67
|
+
<NavigationMenuPrimitive.Viewport
|
|
68
|
+
className={cn(
|
|
69
|
+
"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
|
|
70
|
+
className
|
|
71
|
+
)}
|
|
72
|
+
ref={ref}
|
|
73
|
+
{...props} />
|
|
74
|
+
</div>
|
|
75
|
+
))
|
|
76
|
+
NavigationMenuViewport.displayName =
|
|
77
|
+
NavigationMenuPrimitive.Viewport.displayName
|
|
78
|
+
|
|
79
|
+
const NavigationMenuIndicator = React.forwardRef(({ className, ...props }, ref) => (
|
|
80
|
+
<NavigationMenuPrimitive.Indicator
|
|
81
|
+
ref={ref}
|
|
82
|
+
className={cn(
|
|
83
|
+
"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
|
|
84
|
+
className
|
|
85
|
+
)}
|
|
86
|
+
{...props}>
|
|
87
|
+
<div
|
|
88
|
+
className="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />
|
|
89
|
+
</NavigationMenuPrimitive.Indicator>
|
|
90
|
+
))
|
|
91
|
+
NavigationMenuIndicator.displayName =
|
|
92
|
+
NavigationMenuPrimitive.Indicator.displayName
|
|
93
|
+
|
|
94
|
+
export {
|
|
95
|
+
navigationMenuTriggerStyle,
|
|
96
|
+
NavigationMenu,
|
|
97
|
+
NavigationMenuList,
|
|
98
|
+
NavigationMenuItem,
|
|
99
|
+
NavigationMenuContent,
|
|
100
|
+
NavigationMenuTrigger,
|
|
101
|
+
NavigationMenuLink,
|
|
102
|
+
NavigationMenuIndicator,
|
|
103
|
+
NavigationMenuViewport,
|
|
104
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import * as SelectPrimitive from "@radix-ui/react-select"
|
|
3
|
+
import { Check, ChevronDown, ChevronUp } from "lucide-react"
|
|
4
|
+
|
|
5
|
+
import { cn } from "../lib/utils"
|
|
6
|
+
|
|
7
|
+
const Select = SelectPrimitive.Root
|
|
8
|
+
|
|
9
|
+
const SelectGroup = SelectPrimitive.Group
|
|
10
|
+
|
|
11
|
+
const SelectValue = SelectPrimitive.Value
|
|
12
|
+
|
|
13
|
+
const SelectTrigger = React.forwardRef(({ className, children, ...props }, ref) => (
|
|
14
|
+
<SelectPrimitive.Trigger
|
|
15
|
+
ref={ref}
|
|
16
|
+
className={cn(
|
|
17
|
+
"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
|
|
18
|
+
className
|
|
19
|
+
)}
|
|
20
|
+
{...props}>
|
|
21
|
+
{children}
|
|
22
|
+
<SelectPrimitive.Icon asChild>
|
|
23
|
+
<ChevronDown className="h-4 w-4 opacity-50" />
|
|
24
|
+
</SelectPrimitive.Icon>
|
|
25
|
+
</SelectPrimitive.Trigger>
|
|
26
|
+
))
|
|
27
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName
|
|
28
|
+
|
|
29
|
+
const SelectScrollUpButton = React.forwardRef(({ className, ...props }, ref) => (
|
|
30
|
+
<SelectPrimitive.ScrollUpButton
|
|
31
|
+
ref={ref}
|
|
32
|
+
className={cn("flex cursor-default items-center justify-center py-1", className)}
|
|
33
|
+
{...props}>
|
|
34
|
+
<ChevronUp className="h-4 w-4" />
|
|
35
|
+
</SelectPrimitive.ScrollUpButton>
|
|
36
|
+
))
|
|
37
|
+
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName
|
|
38
|
+
|
|
39
|
+
const SelectScrollDownButton = React.forwardRef(({ className, ...props }, ref) => (
|
|
40
|
+
<SelectPrimitive.ScrollDownButton
|
|
41
|
+
ref={ref}
|
|
42
|
+
className={cn("flex cursor-default items-center justify-center py-1", className)}
|
|
43
|
+
{...props}>
|
|
44
|
+
<ChevronDown className="h-4 w-4" />
|
|
45
|
+
</SelectPrimitive.ScrollDownButton>
|
|
46
|
+
))
|
|
47
|
+
SelectScrollDownButton.displayName =
|
|
48
|
+
SelectPrimitive.ScrollDownButton.displayName
|
|
49
|
+
|
|
50
|
+
const SelectContent = React.forwardRef(({ className, children, position = "popper", ...props }, ref) => (
|
|
51
|
+
<SelectPrimitive.Portal>
|
|
52
|
+
<SelectPrimitive.Content
|
|
53
|
+
ref={ref}
|
|
54
|
+
className={cn(
|
|
55
|
+
"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
56
|
+
position === "popper" &&
|
|
57
|
+
"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
58
|
+
className
|
|
59
|
+
)}
|
|
60
|
+
position={position}
|
|
61
|
+
{...props}>
|
|
62
|
+
<SelectScrollUpButton />
|
|
63
|
+
<SelectPrimitive.Viewport
|
|
64
|
+
className={cn("p-1", position === "popper" &&
|
|
65
|
+
"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]")}>
|
|
66
|
+
{children}
|
|
67
|
+
</SelectPrimitive.Viewport>
|
|
68
|
+
<SelectScrollDownButton />
|
|
69
|
+
</SelectPrimitive.Content>
|
|
70
|
+
</SelectPrimitive.Portal>
|
|
71
|
+
))
|
|
72
|
+
SelectContent.displayName = SelectPrimitive.Content.displayName
|
|
73
|
+
|
|
74
|
+
const SelectLabel = React.forwardRef(({ className, ...props }, ref) => (
|
|
75
|
+
<SelectPrimitive.Label
|
|
76
|
+
ref={ref}
|
|
77
|
+
className={cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className)}
|
|
78
|
+
{...props} />
|
|
79
|
+
))
|
|
80
|
+
SelectLabel.displayName = SelectPrimitive.Label.displayName
|
|
81
|
+
|
|
82
|
+
const SelectItem = React.forwardRef(({ className, children, ...props }, ref) => (
|
|
83
|
+
<SelectPrimitive.Item
|
|
84
|
+
ref={ref}
|
|
85
|
+
className={cn(
|
|
86
|
+
"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
87
|
+
className
|
|
88
|
+
)}
|
|
89
|
+
{...props}>
|
|
90
|
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
91
|
+
<SelectPrimitive.ItemIndicator>
|
|
92
|
+
<Check className="h-4 w-4" />
|
|
93
|
+
</SelectPrimitive.ItemIndicator>
|
|
94
|
+
</span>
|
|
95
|
+
|
|
96
|
+
<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
|
|
97
|
+
</SelectPrimitive.Item>
|
|
98
|
+
))
|
|
99
|
+
SelectItem.displayName = SelectPrimitive.Item.displayName
|
|
100
|
+
|
|
101
|
+
const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => (
|
|
102
|
+
<SelectPrimitive.Separator
|
|
103
|
+
ref={ref}
|
|
104
|
+
className={cn("-mx-1 my-1 h-px bg-muted", className)}
|
|
105
|
+
{...props} />
|
|
106
|
+
))
|
|
107
|
+
SelectSeparator.displayName = SelectPrimitive.Separator.displayName
|
|
108
|
+
|
|
109
|
+
export {
|
|
110
|
+
Select,
|
|
111
|
+
SelectGroup,
|
|
112
|
+
SelectValue,
|
|
113
|
+
SelectTrigger,
|
|
114
|
+
SelectContent,
|
|
115
|
+
SelectLabel,
|
|
116
|
+
SelectItem,
|
|
117
|
+
SelectSeparator,
|
|
118
|
+
SelectScrollUpButton,
|
|
119
|
+
SelectScrollDownButton,
|
|
120
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
|
|
2
|
+
|
|
3
|
+
@tailwind base;
|
|
4
|
+
@tailwind components;
|
|
5
|
+
@tailwind utilities;
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@layer base {
|
|
9
|
+
:root {
|
|
10
|
+
--background: 0 0% 100%;
|
|
11
|
+
--foreground: 222.2 84% 4.9%;
|
|
12
|
+
--card: 0 0% 100%;
|
|
13
|
+
--card-foreground: 222.2 84% 4.9%;
|
|
14
|
+
--popover: 0 0% 100%;
|
|
15
|
+
--popover-foreground: 222.2 84% 4.9%;
|
|
16
|
+
--primary: 222.2 47.4% 11.2%;
|
|
17
|
+
--primary-foreground: 210 40% 98%;
|
|
18
|
+
--secondary: 210 40% 96.1%;
|
|
19
|
+
--secondary-foreground: 222.2 47.4% 11.2%;
|
|
20
|
+
--muted: 210 40% 96.1%;
|
|
21
|
+
--muted-foreground: 215.4 16.3% 46.9%;
|
|
22
|
+
--accent: 210 40% 96.1%;
|
|
23
|
+
--accent-foreground: 222.2 47.4% 11.2%;
|
|
24
|
+
--destructive: 0 84.2% 60.2%;
|
|
25
|
+
--destructive-foreground: 210 40% 98%;
|
|
26
|
+
--border: 214.3 31.8% 91.4%;
|
|
27
|
+
--input: 214.3 31.8% 91.4%;
|
|
28
|
+
--ring: 222.2 84% 4.9%;
|
|
29
|
+
--radius: 0.5rem;
|
|
30
|
+
--chart-1: 12 76% 61%;
|
|
31
|
+
--chart-2: 173 58% 39%;
|
|
32
|
+
--chart-3: 197 37% 24%;
|
|
33
|
+
--chart-4: 43 74% 66%;
|
|
34
|
+
--chart-5: 27 87% 67%;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.dark {
|
|
38
|
+
--background: 222.2 84% 4.9%;
|
|
39
|
+
--foreground: 210 40% 98%;
|
|
40
|
+
--card: 222.2 84% 4.9%;
|
|
41
|
+
--card-foreground: 210 40% 98%;
|
|
42
|
+
--popover: 222.2 84% 4.9%;
|
|
43
|
+
--popover-foreground: 210 40% 98%;
|
|
44
|
+
--primary: 210 40% 98%;
|
|
45
|
+
--primary-foreground: 222.2 47.4% 11.2%;
|
|
46
|
+
--secondary: 217.2 32.6% 17.5%;
|
|
47
|
+
--secondary-foreground: 210 40% 98%;
|
|
48
|
+
--muted: 217.2 32.6% 17.5%;
|
|
49
|
+
--muted-foreground: 215 20.2% 65.1%;
|
|
50
|
+
--accent: 217.2 32.6% 17.5%;
|
|
51
|
+
--accent-foreground: 210 40% 98%;
|
|
52
|
+
--destructive: 0 62.8% 30.6%;
|
|
53
|
+
--destructive-foreground: 210 40% 98%;
|
|
54
|
+
--border: 217.2 32.6% 17.5%;
|
|
55
|
+
--input: 217.2 32.6% 17.5%;
|
|
56
|
+
--ring: 212.7 26.8% 83.9%;
|
|
57
|
+
--chart-1: 220 70% 50%;
|
|
58
|
+
--chart-2: 160 60% 45%;
|
|
59
|
+
--chart-3: 30 80% 55%;
|
|
60
|
+
--chart-4: 280 65% 60%;
|
|
61
|
+
--chart-5: 340 75% 55%;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
a {
|
|
67
|
+
font-weight: 500;
|
|
68
|
+
color: #646cff;
|
|
69
|
+
text-decoration: inherit;
|
|
70
|
+
}
|
|
71
|
+
a:hover {
|
|
72
|
+
color: #535bf2;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
body {
|
|
76
|
+
margin: 0;
|
|
77
|
+
display: flex;
|
|
78
|
+
place-items: center;
|
|
79
|
+
min-width: 320px;
|
|
80
|
+
min-height: 100vh;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
h1 {
|
|
84
|
+
font-size: 3.2em;
|
|
85
|
+
line-height: 1.1;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
button {
|
|
89
|
+
border-radius: 8px;
|
|
90
|
+
border: 1px solid transparent;
|
|
91
|
+
padding: 0.6em 1.2em;
|
|
92
|
+
font-size: 1em;
|
|
93
|
+
font-weight: 500;
|
|
94
|
+
font-family: inherit;
|
|
95
|
+
background-color: #1a1a1a;
|
|
96
|
+
cursor: pointer;
|
|
97
|
+
transition: border-color 0.25s;
|
|
98
|
+
color: white;
|
|
99
|
+
}
|
|
100
|
+
button:hover {
|
|
101
|
+
border-color: #646cff;
|
|
102
|
+
}
|
|
103
|
+
button:focus,
|
|
104
|
+
button:focus-visible {
|
|
105
|
+
outline: 4px auto -webkit-focus-ring-color;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@media (prefers-color-scheme: light) {
|
|
109
|
+
:root {
|
|
110
|
+
color: #213547;
|
|
111
|
+
background-color: #ffffff;
|
|
112
|
+
}
|
|
113
|
+
a:hover {
|
|
114
|
+
color: #747bff;
|
|
115
|
+
}
|
|
116
|
+
button {
|
|
117
|
+
background-color: #f9f9f9;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "./globals.css";
|
|
2
|
+
import NavTabs from './components/NavTabs';
|
|
3
|
+
|
|
4
|
+
export const metadata = {
|
|
5
|
+
title: "Konduktor Dashboard",
|
|
6
|
+
description: "Konduktor Dashboard V1",
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export default function RootLayout({ children }) {
|
|
10
|
+
return (
|
|
11
|
+
<html lang="en">
|
|
12
|
+
<body>
|
|
13
|
+
<div className="flex-col">
|
|
14
|
+
<NavTabs />
|
|
15
|
+
<div>
|
|
16
|
+
{children}
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
21
|
+
);
|
|
22
|
+
}
|