Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
e55f625
feat: add data type validation interfaces and components
Mar 4, 2026
e900373
feat: rename FlowBuilder and related components to FlowBuilderCompone…
Mar 5, 2026
ee28440
feat: rename DFlow components and hooks to Function for consistency
Mar 5, 2026
006b7fc
feat: refactor DFlow components and services for improved consistency…
Mar 5, 2026
2b7ad12
feat: add SCSS mixins and variables for consistent styling across com…
Mar 5, 2026
5bf4820
feat: update data type components and services for improved consisten…
Mar 6, 2026
7de2a8d
feat: refactor Flow service to enhance functionality and introduce Fl…
Mar 7, 2026
9c75e46
feat: rename FlowTypeService to FlowType.service and update imports f…
Mar 7, 2026
d8e37e5
feat: refactor Function service and introduce FunctionDefinitionView …
Mar 7, 2026
67f571c
feat: refactor Member service and introduce DNamespaceMemberView for …
Mar 7, 2026
2c27d37
feat: refactor Namespace service and introduce DNamespaceView for imp…
Mar 7, 2026
54d2c42
feat: refactor Organization service and introduce DOrganizationView f…
Mar 7, 2026
5571f38
feat: refactor Project service and introduce DNamespaceProjectView fo…
Mar 7, 2026
2560c05
feat: refactor Role service and introduce DNamespaceRoleView for impr…
Mar 7, 2026
03653fb
feat: refactor Runtime service and introduce DRuntimeView for improve…
Mar 7, 2026
b3e5b7e
feat: refactor User service and introduce DUserView for improved user…
Mar 7, 2026
adf748e
feat: refactor ApplicationBarView to use UserMenuComponent for improv…
Mar 7, 2026
b00984d
feat: refactor layout and project service to streamline component imp…
Mar 7, 2026
5fb75af
feat: replace DUserInput with UserInputComponent for enhanced user in…
Mar 7, 2026
5066e3b
feat: rename UserMenu to UserMenuComponent for consistency and clarity
Mar 7, 2026
8282e53
feat: update RuntimeService to use RuntimeDependencies type for impro…
Mar 7, 2026
942f4da
feat: refactor services to use specific dependencies types for improv…
Mar 7, 2026
83f8198
feat: replace DNamespaceRolePermissions with RolePermissionComponent …
Mar 7, 2026
fca90e7
feat: replace DRuntimeList with RuntimeDataTableComponent for enhance…
Mar 7, 2026
1e16d13
feat: refactor components to use useUserSession hook for improved ses…
Mar 7, 2026
d22af78
feat: enhance ProjectDataTableComponent and add ProjectMenuComponent …
Mar 7, 2026
d6ca5a8
feat: restore FlowTypeView and FunctionDefinitionView imports in Data…
Mar 7, 2026
a2e6ff1
feat: replace DResizable components with Resizable components for imp…
Mar 7, 2026
0bc9dea
feat: update NEXT_PUBLIC_PICTOR_VERSION to 0.0.0-mvp.47 for versionin…
Mar 7, 2026
04630ac
feat: update @code0-tech/pictor to version 0.0.0-mvp.47 and @tabler/i…
Mar 7, 2026
8df44a9
feat: rename DataTypeInput and related components for consistency and…
Mar 7, 2026
97e4766
feat: reorganize FlowBuilderComponent imports for improved structure …
Mar 7, 2026
598347b
feat: rename components for consistency and clarity across the project
Mar 7, 2026
4f5f2e3
feat: rename components for consistency and clarity across Flow and F…
Mar 7, 2026
3994cb1
feat: rename utility imports for consistency across suggestion compon…
Mar 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.local
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
EDITION=ce
SAGITTARIUS_GRAPHQL_URL=http://localhost:3010/graphql
NEXT_PUBLIC_SCULPTOR_VERSION=0.0.0
NEXT_PUBLIC_PICTOR_VERSION=0.0.0-mvp.46
NEXT_PUBLIC_PICTOR_VERSION=0.0.0-mvp.47
22 changes: 11 additions & 11 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
},
"dependencies": {
"@apollo/client": "^4.0.9",
"@code0-tech/pictor": "^0.0.0-mvp.46",
"@code0-tech/pictor": "^0.0.0-mvp.47",
"date-fns": "^4.1.0",
"graphql": "^16.12.0",
"graphql-tag": "^2.12.6",
Expand Down
10 changes: 5 additions & 5 deletions src/app/(auth)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import {
Col,
Container,
ContextStoreProvider,
DFullScreen,
DUserView,
Flex, Spacing,
Text
} from "@code0-tech/pictor";
Expand All @@ -16,14 +14,16 @@ import {GraphqlClient} from "@core/util/graphql-client";
import Image from "next/image";
import React from "react";
import {usePersistentReactiveArrayService} from "@/hooks/usePersistentReactiveArrayService";
import {UserView} from "@edition/user/services/User.view";
import {FullScreen} from "@code0-tech/pictor/dist/components/fullscreen/FullScreen";

export default function AuthLayout({children}: Readonly<{ children: React.ReactNode }>) {

const client = useApolloClient()
const [store, service] = usePersistentReactiveArrayService<DUserView, UserService>("auth-users", (store) => new UserService(new GraphqlClient(client), store))
const [store, service] = usePersistentReactiveArrayService<UserView, UserService>("auth-users", (store) => new UserService(new GraphqlClient(client), store))

return (
<DFullScreen>
<FullScreen>
<AuroraBackground/>
<ContextStoreProvider services={[[store, service]]}>
<Container h={"100%"} w={"100%"}>
Expand Down Expand Up @@ -61,6 +61,6 @@ export default function AuthLayout({children}: Readonly<{ children: React.ReactN
</Flex>
</div>

</DFullScreen>
</FullScreen>
);
}
46 changes: 23 additions & 23 deletions src/app/(dashboard)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,7 @@ import {useApolloClient} from "@apollo/client/react";
import {
AuroraBackground,
ContextStoreProvider,
DLayout,
DNamespaceMemberView,
DNamespaceProjectView,
DNamespaceRoleView,
DNamespaceView,
DOrganizationView,
DRuntimeView,
DUserView,
Flex,
useUserSession
Flex
} from "@code0-tech/pictor";
import {UserService} from "@edition/user/services/User.service";
import {GraphqlClient} from "@core/util/graphql-client";
Expand All @@ -28,6 +19,15 @@ import {ProjectService} from "@edition/project/services/Project.service";
import {RoleService} from "@edition/role/services/Role.service";
import Image from "next/image";
import {Application, ApplicationService} from "@edition/application/services/Application.service";
import {useUserSession} from "@edition/user/hooks/User.session.hook";
import {UserView} from "@edition/user/services/User.view";
import {OrganizationView} from "@edition/organization/services/Organization.view";
import {MemberView} from "@edition/member/services/Member.view";
import {NamespaceView} from "@edition/namespace/services/Namespace.view";
import {RuntimeView} from "@edition/runtime/services/Runtime.view";
import {ProjectView} from "@edition/project/services/Project.view";
import {RoleView} from "@edition/role/services/Role.view";
import {Layout} from "@code0-tech/pictor/dist/components/layout/Layout";

interface ApplicationLayoutProps {
children: React.ReactNode
Expand All @@ -43,19 +43,19 @@ const ApplicationLayout: React.FC<ApplicationLayoutProps> = ({children, bar, tab

const graphqlClient = React.useMemo(() => new GraphqlClient(client), [client])

const user = usePersistentReactiveArrayService<DUserView, UserService>(`dashboard::users::${currentSession?.id}`, (store) => new UserService(graphqlClient, store))
const organization = usePersistentReactiveArrayService<DOrganizationView, OrganizationService>(`dashboard::organizations::${currentSession?.id}`, (store) => new OrganizationService(graphqlClient, store))
const member = usePersistentReactiveArrayService<DNamespaceMemberView, MemberService>(`dashboard::members::${currentSession?.id}`, (store) => new MemberService(graphqlClient, store))
const namespace = usePersistentReactiveArrayService<DNamespaceView, NamespaceService>(`dashboard::namespaces::${currentSession?.id}`, (store) => new NamespaceService(graphqlClient, store))
const runtime = usePersistentReactiveArrayService<DRuntimeView, RuntimeService>(`dashboard::global_runtimes::${currentSession?.id}`, (store) => new RuntimeService(graphqlClient, store))
const project = usePersistentReactiveArrayService<DNamespaceProjectView, ProjectService>(`dashboard::projects::${currentSession?.id}`, (store) => new ProjectService(graphqlClient, store))
const role = usePersistentReactiveArrayService<DNamespaceRoleView, RoleService>(`dashboard::roles::${currentSession?.id}`, (store) => new RoleService(graphqlClient, store))
const user = usePersistentReactiveArrayService<UserView, UserService>(`dashboard::users::${currentSession?.id}`, (store) => new UserService(graphqlClient, store))
const organization = usePersistentReactiveArrayService<OrganizationView, OrganizationService>(`dashboard::organizations::${currentSession?.id}`, (store) => new OrganizationService(graphqlClient, store))
const member = usePersistentReactiveArrayService<MemberView, MemberService>(`dashboard::members::${currentSession?.id}`, (store) => new MemberService(graphqlClient, store))
const namespace = usePersistentReactiveArrayService<NamespaceView, NamespaceService>(`dashboard::namespaces::${currentSession?.id}`, (store) => new NamespaceService(graphqlClient, store))
const runtime = usePersistentReactiveArrayService<RuntimeView, RuntimeService>(`dashboard::global_runtimes::${currentSession?.id}`, (store) => new RuntimeService(graphqlClient, store))
const project = usePersistentReactiveArrayService<ProjectView, ProjectService>(`dashboard::projects::${currentSession?.id}`, (store) => new ProjectService(graphqlClient, store))
const role = usePersistentReactiveArrayService<RoleView, RoleService>(`dashboard::roles::${currentSession?.id}`, (store) => new RoleService(graphqlClient, store))
const application = usePersistentReactiveArrayService<Application, ApplicationService>(`dashboard::application::${currentSession?.id}`, (store) => new ApplicationService(graphqlClient, store))

if (currentSession === null) router.push("/login")

return <ContextStoreProvider services={[user, organization, member, namespace, runtime, project, role, application]}>
<DLayout style={{zIndex: 0}} layoutGap={"0"} showLayoutSplitter={false} leftContent={
<Layout style={{zIndex: 0}} layoutGap={"0"} showLayoutSplitter={false} leftContent={
<Flex p={0.7} pt={1} align={"center"} style={{flexDirection: "column", gap: "0.7rem"}}>
<div style={{
position: "absolute",
Expand Down Expand Up @@ -83,12 +83,12 @@ const ApplicationLayout: React.FC<ApplicationLayoutProps> = ({children, bar, tab
{tab}
</Flex>
}>
<DLayout px={0.7} layoutGap={"0"} topContent={<>{bar}</>}>
<DLayout>
<Layout px={0.7} layoutGap={"0"} topContent={<>{bar}</>}>
<Layout>
<>{children}</>
</DLayout>
</DLayout>
</DLayout>
</Layout>
</Layout>
</Layout>
</ContextStoreProvider>
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@

import {Tab, TabList, TabTrigger} from "@code0-tech/pictor/dist/components/tab/Tab";
import {Button, Text, Tooltip, TooltipContent, TooltipPortal, TooltipTrigger} from "@code0-tech/pictor";
import {IconBuilding, IconHome, IconSettings} from "@tabler/icons-react";
import {IconHome, IconSettings} from "@tabler/icons-react";
import React from "react";
import {useParams, usePathname, useRouter} from "next/navigation";
import {hashToColor} from "@code0-tech/pictor/dist/components/d-flow/DFlow.util";

export default function Page() {

Expand Down Expand Up @@ -45,7 +44,8 @@ export default function Page() {
<Tooltip>
<TooltipTrigger asChild>
<TabTrigger value={"settings"} asChild={true}>
<Button variant={"none"} paddingSize={"xs"} onClick={() => router.push(`/namespace/${namespaceId}/project/${projectId}/settings`)}>
<Button variant={"none"} paddingSize={"xs"}
onClick={() => router.push(`/namespace/${namespaceId}/project/${projectId}/settings`)}>
<IconSettings size={16}/>
</Button>
</TabTrigger>
Expand Down
56 changes: 28 additions & 28 deletions src/app/(flow)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,7 @@ import {useParams, useRouter} from "next/navigation";
import {
AuroraBackground,
ContextStoreProvider,
DataTypeView,
DLayout,
DNamespaceMemberView,
DNamespaceProjectView,
DNamespaceRoleView,
DNamespaceView,
DOrganizationView,
DRuntimeView,
DUserView,
Flex,
FlowTypeView,
FunctionDefinitionView,
useUserSession
} from "@code0-tech/pictor";
import React from "react";
import {GraphqlClient} from "@core/util/graphql-client";
Expand All @@ -33,12 +21,24 @@ import {RoleService} from "@edition/role/services/Role.service";
import {FlowService} from "@edition/flow/services/Flow.service";
import {FunctionService} from "@edition/function/services/Function.service";
import {DatatypeService} from "@edition/datatype/services/Datatype.service";
import {FlowTypeService} from "@edition/flowtype/services/FlowTypeService";
import {FlowTypeService} from "@edition/flowtype/services/FlowType.service";
import {FileTabsView} from "@code0-tech/pictor/dist/components/file-tabs/FileTabs.view";
import {FileTabsService} from "@code0-tech/pictor/dist/components/file-tabs/FileTabs.service";
import Image from "next/image";
import {UserView} from "@edition/user/services/User.view";
import {OrganizationView} from "@edition/organization/services/Organization.view";
import {MemberView} from "@edition/member/services/Member.view";
import {NamespaceView} from "@edition/namespace/services/Namespace.view";
import {RuntimeView} from "@edition/runtime/services/Runtime.view";
import {ProjectView} from "@edition/project/services/Project.view";
import {RoleView} from "@edition/role/services/Role.view";
import {FunctionView} from "@edition/function/services/Function.view";
import {DataTypeView} from "@edition/datatype/services/DataType.view";
import {FlowTypeView} from "@edition/flowtype/services/FlowType.view";
import {useUserSession} from "@edition/user/hooks/User.session.hook";
import {Layout} from "@code0-tech/pictor/dist/components/layout/Layout";

export default function Layout({bar, tab, children}: {
export default function FlowLayout({bar, tab, children}: {
bar: React.ReactNode,
tab: React.ReactNode,
children: React.ReactNode
Expand All @@ -59,15 +59,15 @@ export default function Layout({bar, tab, children}: {

if (currentSession === null) router.push("/login")

const user = usePersistentReactiveArrayService<DUserView, UserService>(`dashboard::users::${currentSession?.id}`, (store) => new UserService(graphqlClient, store))
const organization = usePersistentReactiveArrayService<DOrganizationView, OrganizationService>(`dashboard::organizations::${currentSession?.id}`, (store) => new OrganizationService(graphqlClient, store))
const member = usePersistentReactiveArrayService<DNamespaceMemberView, MemberService>(`dashboard::members::${currentSession?.id}`, (store) => new MemberService(graphqlClient, store))
const namespace = usePersistentReactiveArrayService<DNamespaceView, NamespaceService>(`dashboard::namespaces::${currentSession?.id}`, (store) => new NamespaceService(graphqlClient, store))
const runtime = usePersistentReactiveArrayService<DRuntimeView, RuntimeService>(`dashboard::global_runtimes::${currentSession?.id}`, (store) => new RuntimeService(graphqlClient, store))
const project = usePersistentReactiveArrayService<DNamespaceProjectView, ProjectService>(`dashboard::projects::${currentSession?.id}`, (store) => new ProjectService(graphqlClient, store))
const role = usePersistentReactiveArrayService<DNamespaceRoleView, RoleService>(`dashboard::roles::${currentSession?.id}`, (store) => new RoleService(graphqlClient, store))
const user = usePersistentReactiveArrayService<UserView, UserService>(`dashboard::users::${currentSession?.id}`, (store) => new UserService(graphqlClient, store))
const organization = usePersistentReactiveArrayService<OrganizationView, OrganizationService>(`dashboard::organizations::${currentSession?.id}`, (store) => new OrganizationService(graphqlClient, store))
const member = usePersistentReactiveArrayService<MemberView, MemberService>(`dashboard::members::${currentSession?.id}`, (store) => new MemberService(graphqlClient, store))
const namespace = usePersistentReactiveArrayService<NamespaceView, NamespaceService>(`dashboard::namespaces::${currentSession?.id}`, (store) => new NamespaceService(graphqlClient, store))
const runtime = usePersistentReactiveArrayService<RuntimeView, RuntimeService>(`dashboard::global_runtimes::${currentSession?.id}`, (store) => new RuntimeService(graphqlClient, store))
const project = usePersistentReactiveArrayService<ProjectView, ProjectService>(`dashboard::projects::${currentSession?.id}`, (store) => new ProjectService(graphqlClient, store))
const role = usePersistentReactiveArrayService<RoleView, RoleService>(`dashboard::roles::${currentSession?.id}`, (store) => new RoleService(graphqlClient, store))
const flow = usePersistentReactiveArrayService<Flow, FlowService>(`dashboard::flows::${currentSession?.id}`, (store) => new FlowService(graphqlClient, store))
const functions = usePersistentReactiveArrayService<FunctionDefinitionView, FunctionService>(`dashboard::functions::${currentSession?.id}`, (store) => new FunctionService(graphqlClient, store))
const functions = usePersistentReactiveArrayService<FunctionView, FunctionService>(`dashboard::functions::${currentSession?.id}`, (store) => new FunctionService(graphqlClient, store))
const datatype = usePersistentReactiveArrayService<DataTypeView, DatatypeService>(`dashboard::datatypes::${currentSession?.id}`, (store) => new DatatypeService(graphqlClient, store))
const flowtype = usePersistentReactiveArrayService<FlowTypeView, FlowTypeService>(`dashboard::flowtypes::${currentSession?.id}`, (store) => new FlowTypeService(graphqlClient, store))
const file = usePersistentReactiveArrayService<FileTabsView, FileTabsService>(`dashboard::files::${flowId}`, FileTabsService, [])
Expand All @@ -86,7 +86,7 @@ export default function Layout({bar, tab, children}: {

return <ContextStoreProvider
services={[user, organization, member, namespace, runtime, project, role, flow, functions, datatype, flowtype, file]}>
<DLayout layoutGap={0} style={{zIndex: 0}} showLayoutSplitter={false} leftContent={
<Layout layoutGap={0} style={{zIndex: 0}} showLayoutSplitter={false} leftContent={
<Flex p={0.7} pt={1} align={"center"} style={{flexDirection: "column", gap: "0.7rem"}}>
<div style={{
position: "absolute",
Expand Down Expand Up @@ -114,13 +114,13 @@ export default function Layout({bar, tab, children}: {
{tab}
</Flex>
}>
<DLayout px={0.7} layoutGap={"0"} topContent={<>{bar}</>}>
<DLayout>
<Layout px={0.7} layoutGap={"0"} topContent={<>{bar}</>}>
<Layout>
<>
{children}
</>
</DLayout>
</DLayout>
</DLayout>
</Layout>
</Layout>
</Layout>
</ContextStoreProvider>
}
Loading