diff --git a/apps/server/src/applications.integration.ts b/apps/server/src/applications.integration.ts
index 08b3b20..5914d26 100644
--- a/apps/server/src/applications.integration.ts
+++ b/apps/server/src/applications.integration.ts
@@ -2,8 +2,8 @@ import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
import { InventoryResponseSchema as AssetsSchema } from "@metis/assets/common";
+import type { ApplicationConfigurationInput } from "@metis/companies/common";
import {
- type ApplicationConfigurationInput,
ApplicationConfigurationResponseSchema,
ApplicationConfigurationsResponseSchema,
CompanyResponseSchema,
diff --git a/apps/server/src/brands.integration.ts b/apps/server/src/brands.integration.ts
index 21bd347..c83153d 100644
--- a/apps/server/src/brands.integration.ts
+++ b/apps/server/src/brands.integration.ts
@@ -7,7 +7,8 @@ import {
BrandsResponseSchema,
CatalogResponseSchema,
} from "@metis/assets/common";
-import { QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { QueryTypes } from "sequelize";
import { z } from "zod/v4";
import {
diff --git a/apps/server/src/certificates.integration.ts b/apps/server/src/certificates.integration.ts
index b11683c..2b8b621 100644
--- a/apps/server/src/certificates.integration.ts
+++ b/apps/server/src/certificates.integration.ts
@@ -2,8 +2,8 @@ import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
import { InventoryResponseSchema as AssetsSchema } from "@metis/assets/common";
+import type { CertificateConfigurationInput } from "@metis/companies/common";
import {
- type CertificateConfigurationInput,
CertificateConfigurationResponseSchema,
CertificateConfigurationsResponseSchema,
CompanyResponseSchema,
diff --git a/apps/server/src/intervention-templates.integration.ts b/apps/server/src/intervention-templates.integration.ts
index 455a23e..eaabda8 100644
--- a/apps/server/src/intervention-templates.integration.ts
+++ b/apps/server/src/intervention-templates.integration.ts
@@ -1,8 +1,8 @@
import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
+import type { InterventionTemplateDTO } from "@metis/companies/common";
import {
- type InterventionTemplateDTO,
InterventionTemplateResponseSchema,
InterventionTemplatesSchema,
} from "@metis/companies/common";
diff --git a/apps/server/src/interventions.integration.ts b/apps/server/src/interventions.integration.ts
index b4f4af4..f98de06 100644
--- a/apps/server/src/interventions.integration.ts
+++ b/apps/server/src/interventions.integration.ts
@@ -1,9 +1,8 @@
import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
+import type { InterventionDTO, InterventionInput } from "@metis/companies/common";
import {
- type InterventionDTO,
- type InterventionInput,
InterventionListSchema,
InterventionLookupsSchema,
InterventionResponseSchema,
diff --git a/apps/server/src/mail.integration.ts b/apps/server/src/mail.integration.ts
index 5eaaffb..6b3eea0 100644
--- a/apps/server/src/mail.integration.ts
+++ b/apps/server/src/mail.integration.ts
@@ -2,18 +2,21 @@ import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
import { InventoryResponseSchema } from "@metis/assets/common";
+import type {
+ MailConfigurationInput,
+ MailboxInput,
+ MailboxUseInput,
+} from "@metis/companies/common";
import {
AccessResponseSchema,
CompanyResponseSchema,
- type MailConfigurationInput,
MailConfigurationResponseSchema,
MailConfigurationsResponseSchema,
- type MailboxInput,
- type MailboxUseInput,
MailboxesResponseSchema,
WorkProfileResponseSchema,
} from "@metis/companies/common";
-import { QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { QueryTypes } from "sequelize";
import { z } from "zod/v4";
type Request = (path: string, body?: unknown, origin?: string, token?: string) => Promise;
diff --git a/apps/server/src/processes.integration.ts b/apps/server/src/processes.integration.ts
index 2a6b6b5..4cb772e 100644
--- a/apps/server/src/processes.integration.ts
+++ b/apps/server/src/processes.integration.ts
@@ -2,17 +2,16 @@ import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
import { InventoryResponseSchema as AssetsSchema } from "@metis/assets/common";
+import type { ProcessTemplateInput, UpdateProcessInput } from "@metis/companies/common";
import {
ApplicationConfigurationResponseSchema,
CompanyResponseSchema,
ProcessResponseSchema,
ProcessReviewResponseSchema,
- type ProcessTemplateInput,
ProcessTemplateResponseSchema,
ProcessTemplatesResponseSchema,
ProcessesResponseSchema,
RemoteConnectionResponseSchema,
- type UpdateProcessInput,
WorkProfileResponseSchema,
} from "@metis/companies/common";
import { InventoryResponseSchema as ResourcesSchema } from "@metis/resources/common";
diff --git a/apps/server/src/remote.integration.ts b/apps/server/src/remote.integration.ts
index 4d1fe0d..9a724b7 100644
--- a/apps/server/src/remote.integration.ts
+++ b/apps/server/src/remote.integration.ts
@@ -2,9 +2,9 @@ import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
import { InventoryResponseSchema as AssetsSchema } from "@metis/assets/common";
+import type { RemoteConnectionInput } from "@metis/companies/common";
import {
CompanyResponseSchema,
- type RemoteConnectionInput,
RemoteConnectionResponseSchema,
RemoteConnectionsResponseSchema,
TeleworkAuthorizationResponseSchema,
diff --git a/apps/server/src/resource-migration.integration.ts b/apps/server/src/resource-migration.integration.ts
index 032ef6f..30d9dc5 100644
--- a/apps/server/src/resource-migration.integration.ts
+++ b/apps/server/src/resource-migration.integration.ts
@@ -4,7 +4,8 @@ import { AccessResponseSchema, MailboxesResponseSchema } from "@metis/companies/
import type { ResourceDTO } from "@metis/resources/common";
import { InventoryResponseSchema, ResourceResponseSchema } from "@metis/resources/common";
import { createResourceModule } from "@metis/resources/module";
-import { QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { QueryTypes } from "sequelize";
import { z } from "zod/v4";
type Request = (path: string, body?: unknown) => Promise;
diff --git a/apps/server/src/telework.integration.ts b/apps/server/src/telework.integration.ts
index 4d3299d..4161d59 100644
--- a/apps/server/src/telework.integration.ts
+++ b/apps/server/src/telework.integration.ts
@@ -1,9 +1,9 @@
import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
+import type { TeleworkAuthorizationInput } from "@metis/companies/common";
import {
CompanyResponseSchema,
- type TeleworkAuthorizationInput,
TeleworkAuthorizationResponseSchema,
TeleworkAuthorizationsResponseSchema,
} from "@metis/companies/common";
diff --git a/apps/server/src/tickets.integration.ts b/apps/server/src/tickets.integration.ts
index 0f5304e..5939db0 100644
--- a/apps/server/src/tickets.integration.ts
+++ b/apps/server/src/tickets.integration.ts
@@ -2,10 +2,9 @@ import assert from "node:assert/strict";
import { randomUUID } from "node:crypto";
import { InventoryResponseSchema } from "@metis/assets/common";
+import type { TicketDTO, TicketInput } from "@metis/companies/common";
import {
CompanyResponseSchema,
- type TicketDTO,
- type TicketInput,
TicketListSchema,
TicketLookupsSchema,
TicketResponseSchema,
diff --git a/apps/server/src/work-profiles.integration.ts b/apps/server/src/work-profiles.integration.ts
index 7b6c958..415de18 100644
--- a/apps/server/src/work-profiles.integration.ts
+++ b/apps/server/src/work-profiles.integration.ts
@@ -1,8 +1,8 @@
import assert from "node:assert/strict";
import { InventoryResponseSchema } from "@metis/assets/common";
+import type { AccessFieldsDTO } from "@metis/companies/common";
import {
- type AccessFieldsDTO,
AccessResponseSchema,
CompanyResponseSchema,
WorkProfileResponseSchema,
diff --git a/apps/web/src/app.test.tsx b/apps/web/src/app.test.tsx
index a82a936..140d56a 100644
--- a/apps/web/src/app.test.tsx
+++ b/apps/web/src/app.test.tsx
@@ -203,3 +203,66 @@ test("los enlaces del dashboard mantienen la compañía y la ficha exacta", () =
entityId: "entry",
});
});
+
+test("los bloques del dashboard presentan datos, avisos y actividad reales en ambos idiomas", async () => {
+ const session = { user, csrfToken: "a".repeat(64), setupRequired: false };
+ for (const language of ["es", "en"]) {
+ const html = await renderPage(language, session, (client) => {
+ client.setQueryData(companyKeys.list, { companies: [workspaceCompany] });
+ client.setQueryData(dashboardKeys.block("summary"), {
+ companies: 1,
+ tickets: 2,
+ interventions: 3,
+ assets: 4,
+ resources: 5,
+ });
+ const entry = {
+ id: workspaceCompany.id,
+ companyId: workspaceCompany.id,
+ companyName: workspaceCompany.name,
+ name: "Revisar acceso",
+ kind: "ticket",
+ reference: "T-2026-001",
+ state: "open",
+ priority: "high",
+ recordedAt: "2026-10-01T10:30:00.000Z",
+ actorName: "Operador test",
+ };
+ client.setQueryData(dashboardKeys.block("work"), { items: [entry], total: 1 });
+ client.setQueryData(dashboardKeys.block("activity"), { items: [entry], total: 1 });
+ client.setQueryData(dashboardKeys.block("attention"), {
+ items: [{ kind: "missing_site", count: 2 }],
+ });
+ client.setQueryData(dashboardKeys.block("companies"), {
+ items: [
+ {
+ id: workspaceCompany.id,
+ name: workspaceCompany.name,
+ companies: 1,
+ tickets: 2,
+ interventions: 3,
+ assets: 4,
+ resources: 5,
+ people: 6,
+ },
+ ],
+ total: 1,
+ });
+ });
+ assert.ok(html.includes("Revisar acceso"));
+ assert.ok(html.includes("T-2026-001"));
+ assert.ok(html.includes("Operador test"));
+ assert.ok(html.includes(workspaceCompany.name));
+ assert.ok(html.includes('dateTime="2026-10-01T10:30:00.000Z"'));
+ assert.ok(html.includes('data-state="high"'));
+ assert.ok(html.includes('data-state="open"'));
+ assert.ok(
+ html.includes(
+ `aria-label="${language === "es" ? "Tickets abiertos" : "Open tickets"} · ${workspaceCompany.name}: 2"`
+ )
+ );
+ assert.equal(html.includes("dashboard.issues.missing_site"), false);
+ assert.equal(html.includes('role="alert"'), false);
+ assert.equal(html.includes("
{creatingTemplate && (
- {
if (!open) {
setCreatingTemplate(false);
}
}}
- open
- title={t("newTemplate")}
- wide
- >
- {t("relatedNotice")}
- {
- form.setValue("templateId", id);
- form.setValue("characteristics", {});
- form.setValue("brandId", null);
- setCreatingTemplate(false);
- }}
- scope={companyId}
- />
-
+ onSaved={(id) => {
+ form.setValue("templateId", id);
+ form.setValue("characteristics", {});
+ form.setValue("brandId", null);
+ setCreatingTemplate(false);
+ }}
+ scope={companyId}
+ />
)}
>
);
diff --git a/modules/assets/src/web/asset-relationships.tsx b/modules/assets/src/web/asset-relationships.tsx
index 3940029..5ffa5c1 100644
--- a/modules/assets/src/web/asset-relationships.tsx
+++ b/modules/assets/src/web/asset-relationships.tsx
@@ -1,14 +1,13 @@
import { Button } from "@repo/shadcn-ui/components/button";
-import { FormActions, FormDialog } from "@repo/shadcn-ui/components/form-dialog";
-import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
+import { useQuery } from "@tanstack/react-query";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import type { RelationshipDTO } from "../common";
+import { EndRelationshipDialog } from "./end-relationship-dialog";
import { inventoryApi, inventoryKeys } from "./inventory-api";
-import { InventoryFeedback } from "./inventory-feedback";
-import { RelationshipForm } from "./relationship-form";
+import { RelationshipEditorDialog } from "./relationship-editor-dialog";
export function AssetRelationships({
companyId,
@@ -20,20 +19,13 @@ export function AssetRelationships({
assetId: string;
}) {
const { t, i18n } = useTranslation("assets");
- const client = useQueryClient();
const query = useQuery({
queryKey: inventoryKeys.company(companyId),
queryFn: () => inventoryApi.get(companyId),
});
const [adding, setAdding] = useState(false);
- const [ending, setEnding] = useState();
- const mutation = useMutation({
- mutationFn: (id: string) => inventoryApi.endRelationship(companyId, id, csrfToken),
- onSuccess: async () => {
- await client.invalidateQueries({ queryKey: inventoryKeys.company(companyId) });
- setEnding(undefined);
- },
- });
+ const [endingId, setEndingId] = useState();
+ const ending = query.data?.relationships.find((relationship) => relationship.id === endingId);
const links = (query.data?.relationships ?? []).filter(
(link) => link.values.sourceId === assetId || link.values.targetId === assetId
);
@@ -66,8 +58,7 @@ export function AssetRelationships({
) : (
- setHistory(item)} size="sm" variant="outline">
+ setHistoryId(item.id)} size="sm" variant="outline">
{t("support.history")}
@@ -111,43 +111,26 @@ export function AssetSupport({
>
)}
- setOpen(false)}
open={open}
- title={t(edit ? "support.edit" : "support.new")}
- >
- setOpen(false)}
- />
-
-
-
-
-
+
+ {
if (!value) {
- setHistory(undefined);
+ setHistoryId(undefined);
}
}}
- open={Boolean(history)}
- title={t("support.history")}
- >
- {history && }
-
+ tools={tools}
+ />
);
}
diff --git a/modules/assets/src/web/brand-api.ts b/modules/assets/src/web/brand-api.ts
index 03279f7..78f71c4 100644
--- a/modules/assets/src/web/brand-api.ts
+++ b/modules/assets/src/web/brand-api.ts
@@ -1,6 +1,7 @@
import { z } from "zod/v4";
-import { type BrandInput, BrandResponseSchema, BrandsResponseSchema } from "../common/brands";
+import type { BrandInput } from "../common/brands";
+import { BrandResponseSchema, BrandsResponseSchema } from "../common/brands";
export const brandKeys = { all: ["asset-brands"] as const };
export class BrandApiError extends Error {
constructor(public readonly code: string) {
diff --git a/modules/assets/src/web/brand-editor-dialog.tsx b/modules/assets/src/web/brand-editor-dialog.tsx
new file mode 100644
index 0000000..556a58c
--- /dev/null
+++ b/modules/assets/src/web/brand-editor-dialog.tsx
@@ -0,0 +1,30 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps } from "react";
+import { useTranslation } from "react-i18next";
+
+import { BrandForm } from "./brand-form";
+
+export function BrandEditorDialog({
+ open,
+ onOpenChange,
+ ...formProps
+}: ComponentProps & {
+ open: boolean;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("assets");
+ return (
+
+ {formProps.quickCreate && (
+ {t("brands.quickNotice")}
+ )}
+
+
+ );
+}
diff --git a/modules/assets/src/web/brand-form.tsx b/modules/assets/src/web/brand-form.tsx
index 227fa9f..a1207bc 100644
--- a/modules/assets/src/web/brand-form.tsx
+++ b/modules/assets/src/web/brand-form.tsx
@@ -9,7 +9,8 @@ import { useEffect, useId, useRef } from "react";
import { useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
-import { type BrandDTO, type BrandInput, BrandInputSchema } from "../common/brands";
+import type { BrandDTO, BrandInput } from "../common/brands";
+import { BrandInputSchema } from "../common/brands";
import { BrandApiError, brandApi, brandKeys } from "./brand-api";
diff --git a/modules/assets/src/web/brand-select.tsx b/modules/assets/src/web/brand-select.tsx
index 46e8f60..04adea2 100644
--- a/modules/assets/src/web/brand-select.tsx
+++ b/modules/assets/src/web/brand-select.tsx
@@ -1,5 +1,4 @@
import { Button } from "@repo/shadcn-ui/components/button";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { Label } from "@repo/shadcn-ui/components/label";
import { SelectWithAction } from "@repo/shadcn-ui/components/select-with-action";
import { useQuery } from "@tanstack/react-query";
@@ -9,7 +8,7 @@ import { useTranslation } from "react-i18next";
import type { BrandDTO } from "../common/brands";
import { brandApi, brandKeys } from "./brand-api";
-import { BrandForm } from "./brand-form";
+import { BrandEditorDialog } from "./brand-editor-dialog";
const LEGACY = "legacy";
export function BrandSelect({
@@ -88,23 +87,16 @@ export function BrandSelect({
)}
{open && (
- {
+ onChange(brand);
+ setOpen(false);
+ }}
open
- title={t("brands.new")}
- >
- {t("brands.quickNotice")}
- {
- onChange(brand);
- setOpen(false);
- }}
- quickCreate
- />
-
+ quickCreate
+ />
)}
);
diff --git a/modules/assets/src/web/brands-page.tsx b/modules/assets/src/web/brands-page.tsx
index 86fbc51..cc08e98 100644
--- a/modules/assets/src/web/brands-page.tsx
+++ b/modules/assets/src/web/brands-page.tsx
@@ -6,7 +6,6 @@ import {
EntityStatus,
EntityTable,
} from "@repo/shadcn-ui/components/entity-list";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { SelectWithAction } from "@repo/shadcn-ui/components/select-with-action";
import { useQuery } from "@tanstack/react-query";
import { useId, useState } from "react";
@@ -15,7 +14,7 @@ import { useTranslation } from "react-i18next";
import type { BrandDTO } from "../common/brands";
import { brandApi, brandKeys } from "./brand-api";
-import { BrandForm } from "./brand-form";
+import { BrandEditorDialog } from "./brand-editor-dialog";
export function BrandCatalogPage({ csrfToken }: { csrfToken: string }) {
const { t, i18n } = useTranslation("assets");
@@ -125,20 +124,13 @@ export function BrandCatalogPage({ csrfToken }: { csrfToken: string }) {
title={t("brands.title")}
unavailable={query.isError}
/>
-
- setOpen(false)}
- />
-
+ {...(edit ? { brand: edit } : {})}
+ onSaved={() => setOpen(false)}
+ />
);
}
diff --git a/modules/assets/src/web/catalog-editor-dialog.tsx b/modules/assets/src/web/catalog-editor-dialog.tsx
new file mode 100644
index 0000000..bd25914
--- /dev/null
+++ b/modules/assets/src/web/catalog-editor-dialog.tsx
@@ -0,0 +1,79 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import type { CatalogItemDTO } from "../common";
+
+import { CatalogFieldForm } from "./catalog-form";
+import { CatalogRelationForm } from "./catalog-relation-form";
+import { CatalogTemplateForm } from "./catalog-template-form";
+
+export type CatalogEditor = {
+ kind: "field" | "template" | "relation";
+ item?: CatalogItemDTO;
+ copy?: CatalogItemDTO;
+};
+function editorTitle(editor: CatalogEditor) {
+ if (editor.kind === "field") {
+ return editor.item ? "editField" : "newField";
+ }
+ if (editor.kind === "relation") {
+ return editor.item ? "editRelation" : "newRelation";
+ }
+ return editor.item ? "editTemplate" : "newTemplate";
+}
+
+export function CatalogEditorDialog({
+ editor,
+ items,
+ scope,
+ csrfToken,
+ onClose,
+}: {
+ editor: CatalogEditor;
+ items: readonly CatalogItemDTO[];
+ scope: string;
+ csrfToken: string;
+ onClose: () => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+ {
+ if (!open) {
+ onClose();
+ }
+ }}
+ open
+ title={t(editorTitle(editor))}
+ wide={editor.kind === "template"}
+ >
+ {editor.kind === "field" ? (
+ onClose()}
+ scope={scope}
+ />
+ ) : editor.kind === "relation" ? (
+ onClose()}
+ scope={scope}
+ />
+ ) : (
+ onClose()}
+ scope={scope}
+ />
+ )}
+
+ );
+}
diff --git a/modules/assets/src/web/catalog-field-create-dialog.tsx b/modules/assets/src/web/catalog-field-create-dialog.tsx
new file mode 100644
index 0000000..e6d2ae9
--- /dev/null
+++ b/modules/assets/src/web/catalog-field-create-dialog.tsx
@@ -0,0 +1,31 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import { CatalogFieldForm } from "./catalog-form";
+
+export function CatalogFieldCreateDialog({
+ scope,
+ csrfToken,
+ onSaved,
+ onOpenChange,
+}: {
+ scope: string;
+ csrfToken: string;
+ onSaved: (id: string) => void;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+
+ {t("quickNotice")}
+
+
+ );
+}
diff --git a/modules/assets/src/web/catalog-page.tsx b/modules/assets/src/web/catalog-page.tsx
index 4172920..b579c24 100644
--- a/modules/assets/src/web/catalog-page.tsx
+++ b/modules/assets/src/web/catalog-page.tsx
@@ -1,6 +1,5 @@
import { Button } from "@repo/shadcn-ui/components/button";
import { EntityListHeader, EntityTable } from "@repo/shadcn-ui/components/entity-list";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { useState } from "react";
import { useTranslation } from "react-i18next";
@@ -10,16 +9,9 @@ import type { CatalogItemDTO } from "../common";
import { catalogApi, catalogKeys } from "./catalog-api";
import { CatalogCell } from "./catalog-cell";
import { CatalogDefinitionDialog } from "./catalog-definition-dialog";
+import type { CatalogEditor } from "./catalog-editor-dialog";
+import { CatalogEditorDialog } from "./catalog-editor-dialog";
import { CatalogError } from "./catalog-error";
-import { CatalogFieldForm } from "./catalog-form";
-import { CatalogRelationForm } from "./catalog-relation-form";
-import { CatalogTemplateForm } from "./catalog-template-form";
-
-type Editor = {
- kind: "field" | "template" | "relation";
- item?: CatalogItemDTO;
- copy?: CatalogItemDTO;
-};
export function AssetCatalogPage({ scope, csrfToken }: { scope: string; csrfToken: string }) {
const { t, i18n } = useTranslation("assets");
@@ -27,7 +19,7 @@ export function AssetCatalogPage({ scope, csrfToken }: { scope: string; csrfToke
const [tab, setTab] = useState<"field" | "template" | "relation">("template");
const [search, setSearch] = useState("");
const [viewId, setViewId] = useState();
- const [editor, setEditor] = useState();
+ const [editor, setEditor] = useState();
const query = useQuery({
queryKey: catalogKeys.scope(scope),
queryFn: () => catalogApi.get(scope),
@@ -196,54 +188,14 @@ export function AssetCatalogPage({ scope, csrfToken }: { scope: string; csrfToke
/>
setViewId(undefined)} />
{editor && (
- {
- if (!open) {
- setEditor(undefined);
- }
- }}
- open
- title={t(editorTitle(editor))}
- wide={editor.kind === "template"}
- >
- {editor.kind === "field" ? (
- setEditor(undefined)}
- scope={scope}
- />
- ) : editor.kind === "relation" ? (
- setEditor(undefined)}
- scope={scope}
- />
- ) : (
- setEditor(undefined)}
- scope={scope}
- />
- )}
-
+ setEditor(undefined)}
+ scope={scope}
+ />
)}
);
}
-
-function editorTitle(editor: Editor) {
- if (editor.kind === "field") {
- return editor.item ? "editField" : "newField";
- }
- if (editor.kind === "relation") {
- return editor.item ? "editRelation" : "newRelation";
- }
- return editor.item ? "editTemplate" : "newTemplate";
-}
diff --git a/modules/assets/src/web/catalog-relation-create-dialog.tsx b/modules/assets/src/web/catalog-relation-create-dialog.tsx
new file mode 100644
index 0000000..a72d751
--- /dev/null
+++ b/modules/assets/src/web/catalog-relation-create-dialog.tsx
@@ -0,0 +1,31 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import { CatalogRelationForm } from "./catalog-relation-form";
+
+export function CatalogRelationCreateDialog({
+ companyId,
+ csrfToken,
+ onSaved,
+ onOpenChange,
+}: {
+ companyId: string;
+ csrfToken: string;
+ onSaved: (id: string) => void;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+
+ {t("quickRelationNotice")}
+
+
+ );
+}
diff --git a/modules/assets/src/web/catalog-relation-form.tsx b/modules/assets/src/web/catalog-relation-form.tsx
index cd5b8ce..4de7279 100644
--- a/modules/assets/src/web/catalog-relation-form.tsx
+++ b/modules/assets/src/web/catalog-relation-form.tsx
@@ -9,7 +9,8 @@ import { useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
import type { z } from "zod/v4";
-import { AssetDefinitionSchema, type CatalogItemDTO } from "../common";
+import type { CatalogItemDTO } from "../common";
+import { AssetDefinitionSchema } from "../common";
import { CatalogError } from "./catalog-error";
import { CatalogHelp } from "./catalog-help";
diff --git a/modules/assets/src/web/catalog-template-create-dialog.tsx b/modules/assets/src/web/catalog-template-create-dialog.tsx
new file mode 100644
index 0000000..66b6d70
--- /dev/null
+++ b/modules/assets/src/web/catalog-template-create-dialog.tsx
@@ -0,0 +1,41 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps } from "react";
+import { useTranslation } from "react-i18next";
+
+import { CatalogTemplateForm } from "./catalog-template-form";
+
+export function CatalogTemplateCreateDialog({
+ scope,
+ csrfToken,
+ items,
+ onSaved,
+ onOpenChange,
+}: {
+ scope: string;
+ csrfToken: string;
+ items: ComponentProps["items"];
+ onSaved: (id: string) => void;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+
+ {t("relatedNotice")}
+
+
+ );
+}
diff --git a/modules/assets/src/web/catalog-template-form.tsx b/modules/assets/src/web/catalog-template-form.tsx
index 4458345..b344bbe 100644
--- a/modules/assets/src/web/catalog-template-form.tsx
+++ b/modules/assets/src/web/catalog-template-form.tsx
@@ -1,7 +1,7 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { Button } from "@repo/shadcn-ui/components/button";
import { Checkbox } from "@repo/shadcn-ui/components/checkbox";
-import { FormActions, FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { FormActions } from "@repo/shadcn-ui/components/form-dialog";
import { Input } from "@repo/shadcn-ui/components/input";
import { Label } from "@repo/shadcn-ui/components/label";
import { SelectWithAction } from "@repo/shadcn-ui/components/select-with-action";
@@ -15,7 +15,7 @@ import type { CatalogItemDTO } from "../common";
import { AssetDefinitionSchema } from "../common";
import { CatalogError } from "./catalog-error";
-import { CatalogFieldForm } from "./catalog-form";
+import { CatalogFieldCreateDialog } from "./catalog-field-create-dialog";
import { CatalogHelp } from "./catalog-help";
import type { CatalogSaved } from "./use-catalog-save";
import { useCatalogSave } from "./use-catalog-save";
@@ -173,27 +173,19 @@ export function CatalogTemplateForm({
{creatingField && (
- {
if (!open) {
setCreatingField(false);
}
}}
- open
- title={t("newField")}
- >
- {t("quickNotice")}
- {
- add(fieldId);
- setCreatingField(false);
- }}
- scope={scope}
- />
-
+ onSaved={(fieldId) => {
+ add(fieldId);
+ setCreatingField(false);
+ }}
+ scope={scope}
+ />
)}
>
);
diff --git a/modules/assets/src/web/end-relationship-dialog.tsx b/modules/assets/src/web/end-relationship-dialog.tsx
new file mode 100644
index 0000000..5863383
--- /dev/null
+++ b/modules/assets/src/web/end-relationship-dialog.tsx
@@ -0,0 +1,60 @@
+import { Button } from "@repo/shadcn-ui/components/button";
+import { FormActions, FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useMutation, useQueryClient } from "@tanstack/react-query";
+import { useTranslation } from "react-i18next";
+
+import type { RelationshipDTO } from "../common";
+
+import { inventoryApi, inventoryKeys } from "./inventory-api";
+import { InventoryFeedback } from "./inventory-feedback";
+
+export function EndRelationshipDialog({
+ relationship,
+ companyId,
+ csrfToken,
+ sourceName,
+ targetName,
+ onClose,
+}: {
+ relationship: RelationshipDTO;
+ companyId: string;
+ csrfToken: string;
+ sourceName: string;
+ targetName: string;
+ onClose: () => void;
+}) {
+ const { t } = useTranslation("assets");
+ const client = useQueryClient();
+ const mutation = useMutation({
+ mutationFn: () => inventoryApi.endRelationship(companyId, relationship.id, csrfToken),
+ onSuccess: () => client.invalidateQueries({ queryKey: inventoryKeys.company(companyId) }),
+ });
+ return (
+ {
+ if (!open) {
+ onClose();
+ }
+ }}
+ open
+ title={t("endRelationship")}
+ >
+
+ {relationship.values.name} · {sourceName} → {targetName}
+
+ {t("endRelationshipConfirm")}
+
+
+ mutation.mutate(undefined, { onSuccess: onClose })}
+ type="button"
+ >
+ {t("endRelationship")}
+
+
+
+ );
+}
diff --git a/modules/assets/src/web/inventory-api.ts b/modules/assets/src/web/inventory-api.ts
index c0fecb3..705f851 100644
--- a/modules/assets/src/web/inventory-api.ts
+++ b/modules/assets/src/web/inventory-api.ts
@@ -2,8 +2,10 @@ import { z } from "zod/v4";
import type { AssetInput } from "../common/inventory";
import { AssetResponseSchema, InventoryResponseSchema } from "../common/inventory";
-import { type RelationshipInputDTO, RelationshipResponseSchema } from "../common/relationships";
-import { type WorkstationInput, WorkstationResponseSchema } from "../common/workstations";
+import type { RelationshipInputDTO } from "../common/relationships";
+import { RelationshipResponseSchema } from "../common/relationships";
+import type { WorkstationInput } from "../common/workstations";
+import { WorkstationResponseSchema } from "../common/workstations";
export const inventoryKeys = { company: (id: string) => ["inventory", id] };
export class InventoryApiError extends Error {
constructor(public readonly code: string) {
diff --git a/modules/assets/src/web/inventory-page.tsx b/modules/assets/src/web/inventory-page.tsx
index 1658f92..7ee9d44 100644
--- a/modules/assets/src/web/inventory-page.tsx
+++ b/modules/assets/src/web/inventory-page.tsx
@@ -6,17 +6,14 @@ import {
EntityStatus,
EntityTable,
} from "@repo/shadcn-ui/components/entity-list";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { useQuery } from "@tanstack/react-query";
import { useState } from "react";
import { useTranslation } from "react-i18next";
-import { AssetDetail } from "./asset-detail";
+import { AssetDetailDialog } from "./asset-detail-dialog";
+import { AssetEditorDialog } from "./asset-editor-dialog";
import type { InventoryLookups } from "./asset-form";
-import { AssetForm } from "./asset-form";
-import { AssetRelationships } from "./asset-relationships";
import { AssetSelectionPanel } from "./asset-selection-panel";
-import { AssetSupport } from "./asset-support";
import { catalogApi, catalogKeys } from "./catalog-api";
import { CatalogError } from "./catalog-error";
import { inventoryApi, inventoryKeys } from "./inventory-api";
@@ -216,54 +213,28 @@ export function AssetInventoryPage({
open={detailOpen}
/>
{editor && catalog.data && (
- {
- if (!open) {
- setEditor(undefined);
- }
+ setEditor(undefined)}
+ onSaved={(id) => {
+ setSelectedId(id);
+ setDetailOpen(true);
+ setEditor(undefined);
}}
- open
- title={t(edited ? "editAsset" : "newAsset")}
- wide
- >
- {
- setSelectedId(id);
- setDetailOpen(true);
- setEditor(undefined);
- }}
- />
-
+ />
)}
{viewed && (
- {
- if (!open) {
- setViewId(undefined);
- }
- }}
- open
- title={viewed.values.name}
- wide
- >
-
-
-
-
-
+ setViewId(undefined)}
+ />
)}
);
diff --git a/modules/assets/src/web/relationship-editor-dialog.tsx b/modules/assets/src/web/relationship-editor-dialog.tsx
new file mode 100644
index 0000000..8b09f72
--- /dev/null
+++ b/modules/assets/src/web/relationship-editor-dialog.tsx
@@ -0,0 +1,37 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import { RelationshipForm } from "./relationship-form";
+
+export function RelationshipEditorDialog({
+ companyId,
+ assetId,
+ csrfToken,
+ onSaved,
+ onOpenChange,
+}: {
+ companyId: string;
+ assetId: string;
+ csrfToken: string;
+ onSaved: () => void;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+
+
+
+ );
+}
diff --git a/modules/assets/src/web/relationship-form.tsx b/modules/assets/src/web/relationship-form.tsx
index 7fb54b6..9619d5b 100644
--- a/modules/assets/src/web/relationship-form.tsx
+++ b/modules/assets/src/web/relationship-form.tsx
@@ -1,6 +1,6 @@
import { Button } from "@repo/shadcn-ui/components/button";
import { ContextHelp } from "@repo/shadcn-ui/components/context-help";
-import { FormActions, FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { FormActions } from "@repo/shadcn-ui/components/form-dialog";
import { Label } from "@repo/shadcn-ui/components/label";
import { SelectWithAction } from "@repo/shadcn-ui/components/select-with-action";
import { Textarea } from "@repo/shadcn-ui/components/textarea";
@@ -11,7 +11,7 @@ import { useTranslation } from "react-i18next";
import type { RelationshipInputDTO } from "../common";
import { catalogApi, catalogKeys } from "./catalog-api";
-import { CatalogRelationForm } from "./catalog-relation-form";
+import { CatalogRelationCreateDialog } from "./catalog-relation-create-dialog";
import { inventoryApi, inventoryKeys } from "./inventory-api";
import { InventoryFeedback } from "./inventory-feedback";
@@ -112,23 +112,15 @@ export function RelationshipForm({
{quick && (
-
- {t("quickRelationNotice")}
- {
- setTypeId(savedId);
- setQuick(false);
- }}
- scope={companyId}
- />
-
+ onSaved={(savedId) => {
+ setTypeId(savedId);
+ setQuick(false);
+ }}
+ />
)}
>
);
diff --git a/modules/assets/src/web/support-api.ts b/modules/assets/src/web/support-api.ts
index b1738c3..a667b19 100644
--- a/modules/assets/src/web/support-api.ts
+++ b/modules/assets/src/web/support-api.ts
@@ -1,10 +1,9 @@
import { z } from "zod/v4";
+import type { SupportInput, SupportToolInput } from "../common/support";
import {
- type SupportInput,
SupportListSchema,
SupportResponseSchema,
- type SupportToolInput,
SupportToolResponseSchema,
SupportToolsSchema,
} from "../common/support";
diff --git a/modules/assets/src/web/support-connection-editor-dialog.tsx b/modules/assets/src/web/support-connection-editor-dialog.tsx
new file mode 100644
index 0000000..c2a5e65
--- /dev/null
+++ b/modules/assets/src/web/support-connection-editor-dialog.tsx
@@ -0,0 +1,47 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps } from "react";
+import { useTranslation } from "react-i18next";
+
+import { SupportForm } from "./support-form";
+
+export function SupportConnectionEditorDialog({
+ open,
+ edit,
+ companyId,
+ assetId,
+ csrfToken,
+ tools,
+ onSaved,
+ onOpenChange,
+}: {
+ open: boolean;
+ edit: ComponentProps["connection"];
+ companyId: string;
+ assetId: string;
+ csrfToken: string;
+ tools: ComponentProps["tools"];
+ onSaved: () => void;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+
+
+
+ );
+}
diff --git a/modules/assets/src/web/support-form.tsx b/modules/assets/src/web/support-form.tsx
index 938a94e..382d7bd 100644
--- a/modules/assets/src/web/support-form.tsx
+++ b/modules/assets/src/web/support-form.tsx
@@ -1,6 +1,6 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { Button } from "@repo/shadcn-ui/components/button";
-import { FormActions, FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { FormActions } from "@repo/shadcn-ui/components/form-dialog";
import { Input } from "@repo/shadcn-ui/components/input";
import { Label } from "@repo/shadcn-ui/components/label";
import { SelectWithAction } from "@repo/shadcn-ui/components/select-with-action";
@@ -9,17 +9,13 @@ import { useId, useState } from "react";
import { useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
-import {
- type SupportConnectionDTO,
- type SupportInput,
- type SupportToolDTO,
- SupportValuesSchema,
-} from "../common/support";
+import type { SupportConnectionDTO, SupportInput, SupportToolDTO } from "../common/support";
+import { SupportValuesSchema } from "../common/support";
import { supportApi, supportKeys } from "./support-api";
import { SupportFeedback } from "./support-feedback";
import { SupportHelp } from "./support-help";
-import { SupportToolForm } from "./support-tool-form";
+import { SupportToolEditorDialog } from "./support-tool-editor-dialog";
export function SupportForm({
companyId,
assetId,
@@ -135,21 +131,16 @@ export function SupportForm({
- {
+ form.setValue("toolId", id);
+ setQuick(false);
+ }}
open={quick}
- title={t("support.newTool")}
- >
- {
- form.setValue("toolId", id);
- setQuick(false);
- }}
- />
-
+ />
>
);
}
diff --git a/modules/assets/src/web/support-history-dialog.tsx b/modules/assets/src/web/support-history-dialog.tsx
new file mode 100644
index 0000000..fac62cf
--- /dev/null
+++ b/modules/assets/src/web/support-history-dialog.tsx
@@ -0,0 +1,44 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import type { SupportConnectionDTO, SupportToolDTO } from "../common/support";
+
+import { SupportSummary } from "./support-summary";
+
+export function SupportHistoryDialog({
+ history,
+ tools,
+ onOpenChange,
+}: {
+ history: SupportConnectionDTO | undefined;
+ tools: readonly SupportToolDTO[];
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t, i18n } = useTranslation("assets");
+
+ return (
+
+ {history && (
+
+ {[...history.history].reverse().map((revision) => (
+ -
+
+ {new Intl.DateTimeFormat(i18n.language, {
+ dateStyle: "medium",
+ timeStyle: "short",
+ }).format(new Date(revision.recordedAt))}{" "}
+ · {revision.actorName}
+
+
+
+ ))}
+
+ )}
+
+ );
+}
diff --git a/modules/assets/src/web/support-history.tsx b/modules/assets/src/web/support-history.tsx
deleted file mode 100644
index 4a8fa9a..0000000
--- a/modules/assets/src/web/support-history.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import { useTranslation } from "react-i18next";
-
-import type { SupportConnectionDTO, SupportToolDTO } from "../common/support";
-
-import { SupportSummary } from "./support-summary";
-
-export function SupportHistory({
- connection,
- tools,
-}: {
- connection: SupportConnectionDTO;
- tools: readonly SupportToolDTO[];
-}) {
- const { i18n } = useTranslation("assets");
- return (
-
- {[...connection.history].reverse().map((revision) => (
- -
-
- {new Intl.DateTimeFormat(i18n.language, {
- dateStyle: "medium",
- timeStyle: "short",
- }).format(new Date(revision.recordedAt))}{" "}
- · {revision.actorName}
-
-
-
- ))}
-
- );
-}
diff --git a/modules/assets/src/web/support-tool-editor-dialog.tsx b/modules/assets/src/web/support-tool-editor-dialog.tsx
new file mode 100644
index 0000000..2adde63
--- /dev/null
+++ b/modules/assets/src/web/support-tool-editor-dialog.tsx
@@ -0,0 +1,38 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps } from "react";
+import { useTranslation } from "react-i18next";
+
+import { SupportToolForm } from "./support-tool-form";
+
+export function SupportToolEditorDialog({
+ open,
+ edit,
+ csrfToken,
+ onSaved,
+ onOpenChange,
+}: {
+ open: boolean;
+ edit: ComponentProps["tool"];
+ csrfToken: string;
+ onSaved: ComponentProps["onSaved"];
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+
+
+
+ );
+}
diff --git a/modules/assets/src/web/support-tool-form.tsx b/modules/assets/src/web/support-tool-form.tsx
index ce54e65..e8b0b12 100644
--- a/modules/assets/src/web/support-tool-form.tsx
+++ b/modules/assets/src/web/support-tool-form.tsx
@@ -8,11 +8,8 @@ import { useId } from "react";
import { useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
-import {
- type SupportToolDTO,
- type SupportToolInput,
- SupportToolInputSchema,
-} from "../common/support";
+import type { SupportToolDTO, SupportToolInput } from "../common/support";
+import { SupportToolInputSchema } from "../common/support";
import { supportApi, supportKeys } from "./support-api";
import { SupportFeedback } from "./support-feedback";
diff --git a/modules/assets/src/web/support-tools-dialog.tsx b/modules/assets/src/web/support-tools-dialog.tsx
new file mode 100644
index 0000000..65e9046
--- /dev/null
+++ b/modules/assets/src/web/support-tools-dialog.tsx
@@ -0,0 +1,27 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import { SupportTools } from "./support-tools";
+
+export function SupportToolsDialog({
+ open,
+ csrfToken,
+ onOpenChange,
+}: {
+ open: boolean;
+ csrfToken: string;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+
+
+
+ );
+}
diff --git a/modules/assets/src/web/support-tools.tsx b/modules/assets/src/web/support-tools.tsx
index f6b7b4a..b2d4d30 100644
--- a/modules/assets/src/web/support-tools.tsx
+++ b/modules/assets/src/web/support-tools.tsx
@@ -6,7 +6,6 @@ import {
EntityStatus,
EntityTable,
} from "@repo/shadcn-ui/components/entity-list";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { useQuery } from "@tanstack/react-query";
import { useState } from "react";
import { useTranslation } from "react-i18next";
@@ -14,7 +13,7 @@ import { useTranslation } from "react-i18next";
import type { SupportToolDTO } from "../common/support";
import { supportApi, supportKeys } from "./support-api";
-import { SupportToolForm } from "./support-tool-form";
+import { SupportToolEditorDialog } from "./support-tool-editor-dialog";
export function SupportTools({ csrfToken }: { csrfToken: string }) {
const { t, i18n } = useTranslation("assets");
const query = useQuery({ queryKey: supportKeys.tools, queryFn: () => supportApi.tools() });
@@ -102,20 +101,13 @@ export function SupportTools({ csrfToken }: { csrfToken: string }) {
title={t("support.tools")}
unavailable={query.isError}
/>
- setOpen(false)}
open={open}
- title={t(edit ? "support.editTool" : "support.newTool")}
- >
- setOpen(false)}
- />
-
+ />
);
}
diff --git a/modules/assets/src/web/workstation-asset-create-dialog.tsx b/modules/assets/src/web/workstation-asset-create-dialog.tsx
new file mode 100644
index 0000000..7e207c4
--- /dev/null
+++ b/modules/assets/src/web/workstation-asset-create-dialog.tsx
@@ -0,0 +1,44 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps } from "react";
+import { useTranslation } from "react-i18next";
+
+import { AssetForm } from "./asset-form";
+
+export function WorkstationAssetCreateDialog({
+ companyId,
+ csrfToken,
+ items,
+ lookups,
+ onSaved,
+ onOpenChange,
+}: {
+ companyId: string;
+ csrfToken: string;
+ items: ComponentProps["items"];
+ lookups: ComponentProps["lookups"];
+ onSaved: (id: string) => void;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+
+ {t("relatedNotice")}
+
+
+ );
+}
diff --git a/modules/assets/src/web/workstation-editor-dialog.tsx b/modules/assets/src/web/workstation-editor-dialog.tsx
new file mode 100644
index 0000000..b4d5204
--- /dev/null
+++ b/modules/assets/src/web/workstation-editor-dialog.tsx
@@ -0,0 +1,44 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps } from "react";
+import { useTranslation } from "react-i18next";
+
+import { WorkstationForm } from "./workstation-form";
+
+export function WorkstationEditorDialog({
+ workstation,
+ companyId,
+ csrfToken,
+ lookups,
+ onClose,
+}: {
+ workstation: ComponentProps["workstation"];
+ companyId: string;
+ csrfToken: string;
+ lookups: ComponentProps["lookups"];
+ onClose: () => void;
+}) {
+ const { t } = useTranslation("assets");
+
+ return (
+ {
+ if (!open) {
+ onClose();
+ }
+ }}
+ open
+ title={t(workstation ? "editWorkstation" : "newWorkstation")}
+ wide
+ >
+ onClose()}
+ workstation={workstation}
+ />
+
+ );
+}
diff --git a/modules/assets/src/web/workstation-form.tsx b/modules/assets/src/web/workstation-form.tsx
index e9fc19c..929abb6 100644
--- a/modules/assets/src/web/workstation-form.tsx
+++ b/modules/assets/src/web/workstation-form.tsx
@@ -1,7 +1,7 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { Button } from "@repo/shadcn-ui/components/button";
import { ContextHelp } from "@repo/shadcn-ui/components/context-help";
-import { FormActions, FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { FormActions } from "@repo/shadcn-ui/components/form-dialog";
import { Input } from "@repo/shadcn-ui/components/input";
import { Label } from "@repo/shadcn-ui/components/label";
import { SelectWithAction } from "@repo/shadcn-ui/components/select-with-action";
@@ -10,13 +10,14 @@ import { useEffect, useId, useRef, useState } from "react";
import { useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
-import { type WorkstationDTO, type WorkstationInput, WorkstationInputSchema } from "../common";
+import type { WorkstationDTO, WorkstationInput } from "../common";
+import { WorkstationInputSchema } from "../common";
import type { InventoryLookups } from "./asset-form";
-import { AssetForm } from "./asset-form";
import { catalogApi, catalogKeys } from "./catalog-api";
import { inventoryApi, inventoryKeys } from "./inventory-api";
import { InventoryFeedback } from "./inventory-feedback";
+import { WorkstationAssetCreateDialog } from "./workstation-asset-create-dialog";
export function WorkstationForm({
companyId,
csrfToken,
@@ -257,27 +258,17 @@ export function WorkstationForm({
{quick && catalog.data && (
-
- {t("relatedNotice")}
- {
- add(quickField, id);
- setQuick(false);
- }}
- />
-
+ onSaved={(id) => {
+ add(quickField, id);
+ setQuick(false);
+ }}
+ />
)}
>
);
diff --git a/modules/assets/src/web/workstation-history-dialog.tsx b/modules/assets/src/web/workstation-history-dialog.tsx
new file mode 100644
index 0000000..3719c6f
--- /dev/null
+++ b/modules/assets/src/web/workstation-history-dialog.tsx
@@ -0,0 +1,61 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import type { WorkstationDTO } from "../common";
+
+export function WorkstationHistoryDialog({
+ workstation,
+ personName,
+ siteName,
+ members,
+ onClose,
+}: {
+ workstation: WorkstationDTO;
+ personName: (id: string | null) => string;
+ siteName: (id: string | null) => string;
+ members: (ids: readonly string[], empty?: string) => string;
+ onClose: () => void;
+}) {
+ const { t, i18n } = useTranslation("assets");
+
+ return (
+ {
+ if (!open) {
+ onClose();
+ }
+ }}
+ open
+ title={t("workstationHistory")}
+ wide
+ >
+
+ {[...workstation.history].reverse().map((revision) => (
+ -
+
+ {new Intl.DateTimeFormat(i18n.language, {
+ dateStyle: "medium",
+ timeStyle: "short",
+ }).format(new Date(revision.recordedAt))}{" "}
+ · {t("recordedBy", { name: revision.actorName })}
+
+
+ {revision.values.name} · {t(revision.values.active ? "active" : "inactive")}
+
+
+ {siteName(revision.values.siteId)} · {personName(revision.values.personId)}
+
+
+ {t("exclusiveWorkstationAssets")}: {members(revision.values.assetIds)}
+
+
+ {t("sharedWorkstationAssets")}:{" "}
+ {members(revision.values.sharedAssetIds, "noSharedWorkstationAssets")}
+
+
+ ))}
+
+
+ );
+}
diff --git a/modules/assets/src/web/workstations-page.tsx b/modules/assets/src/web/workstations-page.tsx
index abbde87..e565255 100644
--- a/modules/assets/src/web/workstations-page.tsx
+++ b/modules/assets/src/web/workstations-page.tsx
@@ -6,7 +6,6 @@ import {
EntityStatus,
EntityTable,
} from "@repo/shadcn-ui/components/entity-list";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { useQuery } from "@tanstack/react-query";
import { useState } from "react";
import { useTranslation } from "react-i18next";
@@ -14,7 +13,8 @@ import { useTranslation } from "react-i18next";
import type { InventoryLookups } from "./asset-form";
import { inventoryApi, inventoryKeys } from "./inventory-api";
import { InventoryFeedback } from "./inventory-feedback";
-import { WorkstationForm } from "./workstation-form";
+import { WorkstationEditorDialog } from "./workstation-editor-dialog";
+import { WorkstationHistoryDialog } from "./workstation-history-dialog";
export function WorkstationsPage({
companyId,
csrfToken,
@@ -166,66 +166,22 @@ export function WorkstationsPage({
/>
)}
{editor && (
- {
- if (!open) {
- setEditor(undefined);
- }
- }}
- open
- title={t(edited ? "editWorkstation" : "newWorkstation")}
- wide
- >
- setEditor(undefined)}
- workstation={edited}
- />
-
+ setEditor(undefined)}
+ workstation={edited}
+ />
)}
{viewed && (
- {
- if (!open) {
- setView(undefined);
- }
- }}
- open
- title={t("workstationHistory")}
- wide
- >
-
- {[...viewed.history].reverse().map((revision) => (
- -
-
- {new Intl.DateTimeFormat(i18n.language, {
- dateStyle: "medium",
- timeStyle: "short",
- }).format(new Date(revision.recordedAt))}{" "}
- · {t("recordedBy", { name: revision.actorName })}
-
-
- {revision.values.name} · {t(revision.values.active ? "active" : "inactive")}
-
-
- {siteName(revision.values.siteId)} · {personName(revision.values.personId)}
-
-
- {t("exclusiveWorkstationAssets")}: {members(revision.values.assetIds)}
-
-
- {t("sharedWorkstationAssets")}:{" "}
- {members(revision.values.sharedAssetIds, "noSharedWorkstationAssets")}
-
-
- ))}
-
-
+ setView(undefined)}
+ personName={personName}
+ siteName={siteName}
+ workstation={viewed}
+ />
)}
);
diff --git a/modules/companies/src/api/application/application-configuration-input.mapper.ts b/modules/companies/src/api/application/application-configuration-input.mapper.ts
index c5bace5..b91be09 100644
--- a/modules/companies/src/api/application/application-configuration-input.mapper.ts
+++ b/modules/companies/src/api/application/application-configuration-input.mapper.ts
@@ -1,10 +1,8 @@
import { Result } from "@repo/rdx-utils";
import type { ApplicationConfiguration } from "../domain/application-configuration.aggregate";
-import {
- ApplicationConfigurationError,
- type ApplicationConfigurationInput,
-} from "../domain/application-configuration-values";
+import type { ApplicationConfigurationInput } from "../domain/application-configuration-values";
+import { ApplicationConfigurationError } from "../domain/application-configuration-values";
import { ApplicationConfigurationValues } from "../domain/value-objects/application-configuration-values";
import type { ApplicationContext } from "./application-configuration.repository";
diff --git a/modules/companies/src/api/application/application-configuration.use-cases.ts b/modules/companies/src/api/application/application-configuration.use-cases.ts
index f795b8e..45d7f7f 100644
--- a/modules/companies/src/api/application/application-configuration.use-cases.ts
+++ b/modules/companies/src/api/application/application-configuration.use-cases.ts
@@ -2,10 +2,8 @@ import { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { ApplicationConfiguration } from "../domain/application-configuration.aggregate";
-import {
- ApplicationConfigurationError,
- type ApplicationConfigurationInput,
-} from "../domain/application-configuration-values";
+import type { ApplicationConfigurationInput } from "../domain/application-configuration-values";
+import { ApplicationConfigurationError } from "../domain/application-configuration-values";
import type { IApplicationConfigurationRepository } from "./application-configuration.repository";
import { mapApplicationInput } from "./application-configuration-input.mapper";
diff --git a/modules/companies/src/api/application/certificate-configuration-input.mapper.ts b/modules/companies/src/api/application/certificate-configuration-input.mapper.ts
index 7726afd..fa6a4ac 100644
--- a/modules/companies/src/api/application/certificate-configuration-input.mapper.ts
+++ b/modules/companies/src/api/application/certificate-configuration-input.mapper.ts
@@ -1,10 +1,8 @@
import { Result } from "@repo/rdx-utils";
import type { CertificateConfiguration } from "../domain/certificate-configuration.aggregate";
-import {
- CertificateConfigurationError,
- type CertificateConfigurationInput,
-} from "../domain/certificate-configuration-values";
+import type { CertificateConfigurationInput } from "../domain/certificate-configuration-values";
+import { CertificateConfigurationError } from "../domain/certificate-configuration-values";
import { CertificateConfigurationValues } from "../domain/value-objects/certificate-configuration-values";
import type { CertificateContext } from "./certificate-configuration.repository";
diff --git a/modules/companies/src/api/application/certificate-configuration.use-cases.ts b/modules/companies/src/api/application/certificate-configuration.use-cases.ts
index c235418..7634ee7 100644
--- a/modules/companies/src/api/application/certificate-configuration.use-cases.ts
+++ b/modules/companies/src/api/application/certificate-configuration.use-cases.ts
@@ -2,10 +2,8 @@ import { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { CertificateConfiguration } from "../domain/certificate-configuration.aggregate";
-import {
- CertificateConfigurationError,
- type CertificateConfigurationInput,
-} from "../domain/certificate-configuration-values";
+import type { CertificateConfigurationInput } from "../domain/certificate-configuration-values";
+import { CertificateConfigurationError } from "../domain/certificate-configuration-values";
import type { ICertificateConfigurationRepository } from "./certificate-configuration.repository";
import { mapCertificateInput } from "./certificate-configuration-input.mapper";
diff --git a/modules/companies/src/api/application/folder-mapping-input.mapper.ts b/modules/companies/src/api/application/folder-mapping-input.mapper.ts
index 74082d9..e4d7b29 100644
--- a/modules/companies/src/api/application/folder-mapping-input.mapper.ts
+++ b/modules/companies/src/api/application/folder-mapping-input.mapper.ts
@@ -1,7 +1,8 @@
import { Result } from "@repo/rdx-utils";
import type { FolderMapping } from "../domain/folder-mapping.aggregate";
-import { FolderMappingError, type FolderMappingInput } from "../domain/folder-mapping-values";
+import type { FolderMappingInput } from "../domain/folder-mapping-values";
+import { FolderMappingError } from "../domain/folder-mapping-values";
import { FolderMappingValues } from "../domain/value-objects/folder-mapping-values";
import type { FolderContext } from "./folder-mapping.repository";
diff --git a/modules/companies/src/api/application/folder-mapping.use-cases.ts b/modules/companies/src/api/application/folder-mapping.use-cases.ts
index 64b34c2..40b1349 100644
--- a/modules/companies/src/api/application/folder-mapping.use-cases.ts
+++ b/modules/companies/src/api/application/folder-mapping.use-cases.ts
@@ -2,7 +2,8 @@ import { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { FolderMapping } from "../domain/folder-mapping.aggregate";
-import { FolderMappingError, type FolderMappingInput } from "../domain/folder-mapping-values";
+import type { FolderMappingInput } from "../domain/folder-mapping-values";
+import { FolderMappingError } from "../domain/folder-mapping-values";
import type { IFolderMappingRepository } from "./folder-mapping.repository";
import { mapFolderInput } from "./folder-mapping-input.mapper";
diff --git a/modules/companies/src/api/application/intervention-input.mapper.ts b/modules/companies/src/api/application/intervention-input.mapper.ts
index 03691e8..4b6b34a 100644
--- a/modules/companies/src/api/application/intervention-input.mapper.ts
+++ b/modules/companies/src/api/application/intervention-input.mapper.ts
@@ -1,7 +1,8 @@
import { Result } from "@repo/rdx-utils";
import type { Intervention } from "../domain/intervention.aggregate";
-import { InterventionError, type InterventionInput } from "../domain/intervention-values";
+import type { InterventionInput } from "../domain/intervention-values";
+import { InterventionError } from "../domain/intervention-values";
import { InterventionValues } from "../domain/value-objects/intervention-values";
import type { InterventionSaveContext } from "./intervention.repository";
diff --git a/modules/companies/src/api/application/intervention-template.use-cases.ts b/modules/companies/src/api/application/intervention-template.use-cases.ts
index 4529c80..8e843d3 100644
--- a/modules/companies/src/api/application/intervention-template.use-cases.ts
+++ b/modules/companies/src/api/application/intervention-template.use-cases.ts
@@ -1,10 +1,8 @@
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
-import {
- type SaveInterventionTemplateInput,
- SaveInterventionTemplateSchema,
-} from "../../common/intervention-templates";
+import type { SaveInterventionTemplateInput } from "../../common/intervention-templates";
+import { SaveInterventionTemplateSchema } from "../../common/intervention-templates";
import { InterventionTemplate } from "../domain/intervention-template.aggregate";
import { InterventionTemplateError } from "../domain/intervention-template-values";
import { InterventionTemplateValues } from "../domain/value-objects/intervention-template-values";
diff --git a/modules/companies/src/api/application/mail-configuration-input.mapper.ts b/modules/companies/src/api/application/mail-configuration-input.mapper.ts
index f2fcdd4..f56a1bb 100644
--- a/modules/companies/src/api/application/mail-configuration-input.mapper.ts
+++ b/modules/companies/src/api/application/mail-configuration-input.mapper.ts
@@ -2,10 +2,8 @@ import { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import type { MailConfiguration } from "../domain/mail-configuration.aggregate";
-import {
- MailConfigurationError,
- type MailConfigurationInput,
-} from "../domain/mail-configuration-values";
+import type { MailConfigurationInput } from "../domain/mail-configuration-values";
+import { MailConfigurationError } from "../domain/mail-configuration-values";
import { MailConfigurationValues } from "../domain/value-objects/mail-configuration-values";
import type { MailContext } from "./mail-configuration.repository";
diff --git a/modules/companies/src/api/application/mail-configuration.use-cases.ts b/modules/companies/src/api/application/mail-configuration.use-cases.ts
index 41f1971..35eabe1 100644
--- a/modules/companies/src/api/application/mail-configuration.use-cases.ts
+++ b/modules/companies/src/api/application/mail-configuration.use-cases.ts
@@ -2,10 +2,8 @@ import { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { MailConfiguration } from "../domain/mail-configuration.aggregate";
-import {
- MailConfigurationError,
- type MailConfigurationInput,
-} from "../domain/mail-configuration-values";
+import type { MailConfigurationInput } from "../domain/mail-configuration-values";
+import { MailConfigurationError } from "../domain/mail-configuration-values";
import type { IMailConfigurationRepository } from "./mail-configuration.repository";
import { mapMailInput } from "./mail-configuration-input.mapper";
diff --git a/modules/companies/src/api/application/mailbox-input.mapper.ts b/modules/companies/src/api/application/mailbox-input.mapper.ts
index 5efccfc..943f233 100644
--- a/modules/companies/src/api/application/mailbox-input.mapper.ts
+++ b/modules/companies/src/api/application/mailbox-input.mapper.ts
@@ -2,7 +2,8 @@ import { Result } from "@repo/rdx-utils";
import type { Mailbox } from "../domain/mailbox.aggregate";
import type { MailboxUse } from "../domain/mailbox-use.aggregate";
-import { MailboxError, type MailboxInput, type MailboxUseInput } from "../domain/mailbox-values";
+import type { MailboxInput, MailboxUseInput } from "../domain/mailbox-values";
+import { MailboxError } from "../domain/mailbox-values";
import { MailboxUseValues } from "../domain/value-objects/mailbox-use-values";
import { MailboxValues } from "../domain/value-objects/mailbox-values";
diff --git a/modules/companies/src/api/application/mailbox.use-cases.ts b/modules/companies/src/api/application/mailbox.use-cases.ts
index b601737..23f637a 100644
--- a/modules/companies/src/api/application/mailbox.use-cases.ts
+++ b/modules/companies/src/api/application/mailbox.use-cases.ts
@@ -3,7 +3,8 @@ import { Result } from "@repo/rdx-utils";
import { Mailbox } from "../domain/mailbox.aggregate";
import { MailboxUse } from "../domain/mailbox-use.aggregate";
-import { MailboxError, type MailboxInput, type MailboxUseInput } from "../domain/mailbox-values";
+import type { MailboxInput, MailboxUseInput } from "../domain/mailbox-values";
+import { MailboxError } from "../domain/mailbox-values";
import type { IMailboxRepository, MailboxContext } from "./mailbox.repository";
import { mapMailboxInput, mapMailboxUseInput } from "./mailbox-input.mapper";
diff --git a/modules/companies/src/api/application/printer-configuration-input.mapper.ts b/modules/companies/src/api/application/printer-configuration-input.mapper.ts
index 4acef7b..6e70b71 100644
--- a/modules/companies/src/api/application/printer-configuration-input.mapper.ts
+++ b/modules/companies/src/api/application/printer-configuration-input.mapper.ts
@@ -1,10 +1,8 @@
import { Result } from "@repo/rdx-utils";
import type { PrinterConfiguration } from "../domain/printer-configuration.aggregate";
-import {
- PrinterConfigurationError,
- type PrinterConfigurationInput,
-} from "../domain/printer-configuration-values";
+import type { PrinterConfigurationInput } from "../domain/printer-configuration-values";
+import { PrinterConfigurationError } from "../domain/printer-configuration-values";
import { PrinterConfigurationValues } from "../domain/value-objects/printer-configuration-values";
import type { PrinterContext } from "./printer-configuration.repository";
diff --git a/modules/companies/src/api/application/printer-configuration.use-cases.ts b/modules/companies/src/api/application/printer-configuration.use-cases.ts
index 3821b28..bc0b19b 100644
--- a/modules/companies/src/api/application/printer-configuration.use-cases.ts
+++ b/modules/companies/src/api/application/printer-configuration.use-cases.ts
@@ -2,10 +2,8 @@ import { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { PrinterConfiguration } from "../domain/printer-configuration.aggregate";
-import {
- PrinterConfigurationError,
- type PrinterConfigurationInput,
-} from "../domain/printer-configuration-values";
+import type { PrinterConfigurationInput } from "../domain/printer-configuration-values";
+import { PrinterConfigurationError } from "../domain/printer-configuration-values";
import type { IPrinterConfigurationRepository } from "./printer-configuration.repository";
import { mapPrinterInput } from "./printer-configuration-input.mapper";
diff --git a/modules/companies/src/api/application/process.use-cases.ts b/modules/companies/src/api/application/process.use-cases.ts
index 1e6617d..d3a15dd 100644
--- a/modules/companies/src/api/application/process.use-cases.ts
+++ b/modules/companies/src/api/application/process.use-cases.ts
@@ -4,12 +4,12 @@ import { Maybe, Result } from "@repo/rdx-utils";
import { PersonProcess } from "../domain/process.aggregate";
import { ProcessTask } from "../domain/process-task.entity";
import { ProcessTemplate } from "../domain/process-template.aggregate";
-import {
- ProcessError,
- type ProcessTemplateInput,
- type StartProcessInput,
- type UpdateProcessInput,
+import type {
+ ProcessTemplateInput,
+ StartProcessInput,
+ UpdateProcessInput,
} from "../domain/process-values";
+import { ProcessError } from "../domain/process-values";
import { ProcessTemplateValues } from "../domain/value-objects/process-template-values";
import { ProcessValues } from "../domain/value-objects/process-values";
diff --git a/modules/companies/src/api/application/remote-connection-input.mapper.ts b/modules/companies/src/api/application/remote-connection-input.mapper.ts
index 7c5bef9..693bbac 100644
--- a/modules/companies/src/api/application/remote-connection-input.mapper.ts
+++ b/modules/companies/src/api/application/remote-connection-input.mapper.ts
@@ -1,10 +1,8 @@
import { Result } from "@repo/rdx-utils";
import type { RemoteConnection } from "../domain/remote-connection.aggregate";
-import {
- RemoteConnectionError,
- type RemoteConnectionInput,
-} from "../domain/remote-connection-values";
+import type { RemoteConnectionInput } from "../domain/remote-connection-values";
+import { RemoteConnectionError } from "../domain/remote-connection-values";
import { RemoteConnectionValues } from "../domain/value-objects/remote-connection-values";
import type { RemoteContext } from "./remote-connection.repository";
diff --git a/modules/companies/src/api/application/telework-authorization-input.mapper.ts b/modules/companies/src/api/application/telework-authorization-input.mapper.ts
index 476820f..98b5aa0 100644
--- a/modules/companies/src/api/application/telework-authorization-input.mapper.ts
+++ b/modules/companies/src/api/application/telework-authorization-input.mapper.ts
@@ -1,10 +1,8 @@
import { Result } from "@repo/rdx-utils";
import type { TeleworkAuthorization } from "../domain/telework-authorization.aggregate";
-import {
- TeleworkAuthorizationError,
- type TeleworkAuthorizationInput,
-} from "../domain/telework-authorization-values";
+import type { TeleworkAuthorizationInput } from "../domain/telework-authorization-values";
+import { TeleworkAuthorizationError } from "../domain/telework-authorization-values";
import { TeleworkAuthorizationValues } from "../domain/value-objects/telework-authorization-values";
import type { TeleworkAuthorizationContext } from "./telework-authorization.repository";
diff --git a/modules/companies/src/api/application/ticket-input.mapper.ts b/modules/companies/src/api/application/ticket-input.mapper.ts
index c11ec32..8c8ab95 100644
--- a/modules/companies/src/api/application/ticket-input.mapper.ts
+++ b/modules/companies/src/api/application/ticket-input.mapper.ts
@@ -1,10 +1,12 @@
import { Result } from "@repo/rdx-utils";
import type { Ticket } from "../domain/ticket.aggregate";
-import { TicketError, type TicketInput } from "../domain/ticket-values";
+import type { TicketInput } from "../domain/ticket-values";
+import { TicketError } from "../domain/ticket-values";
import { TicketValues } from "../domain/value-objects/ticket-values";
-import { type TicketOption, type TicketSaveContext, targetOptions } from "./ticket.repository";
+import type { TicketOption, TicketSaveContext } from "./ticket.repository";
+import { targetOptions } from "./ticket.repository";
function available(
options: readonly TicketOption[],
diff --git a/modules/companies/src/api/application/work-profile-input.mapper.ts b/modules/companies/src/api/application/work-profile-input.mapper.ts
index a48f26f..388bb2c 100644
--- a/modules/companies/src/api/application/work-profile-input.mapper.ts
+++ b/modules/companies/src/api/application/work-profile-input.mapper.ts
@@ -2,7 +2,8 @@ import { Result } from "@repo/rdx-utils";
import { WorkProfileValues } from "../domain/value-objects/work-profile-values";
import type { WorkProfile } from "../domain/work-profile.aggregate";
-import { WorkProfileError, type WorkProfileInput } from "../domain/work-profile-values";
+import type { WorkProfileInput } from "../domain/work-profile-values";
+import { WorkProfileError } from "../domain/work-profile-values";
import type { WorkProfileContext } from "./work-profile.repository";
diff --git a/modules/companies/src/api/domain/access/access-workspace.aggregate.ts b/modules/companies/src/api/domain/access/access-workspace.aggregate.ts
index d49f5f8..cf91378 100644
--- a/modules/companies/src/api/domain/access/access-workspace.aggregate.ts
+++ b/modules/companies/src/api/domain/access/access-workspace.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import type { Maybe } from "@repo/rdx-utils";
import { Result } from "@repo/rdx-utils";
diff --git a/modules/companies/src/api/domain/application-configuration-revision.entity.ts b/modules/companies/src/api/domain/application-configuration-revision.entity.ts
index a9a699b..986dcfd 100644
--- a/modules/companies/src/api/domain/application-configuration-revision.entity.ts
+++ b/modules/companies/src/api/domain/application-configuration-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { ApplicationConfigurationValues } from "./value-objects/application-configuration-values";
export type ApplicationConfigurationRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/application-configuration.aggregate.ts b/modules/companies/src/api/domain/application-configuration.aggregate.ts
index fc18a05..dd5d9f3 100644
--- a/modules/companies/src/api/domain/application-configuration.aggregate.ts
+++ b/modules/companies/src/api/domain/application-configuration.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/application-configuration.test.ts b/modules/companies/src/api/domain/application-configuration.test.ts
index b3d0596..b0c63e6 100644
--- a/modules/companies/src/api/domain/application-configuration.test.ts
+++ b/modules/companies/src/api/domain/application-configuration.test.ts
@@ -9,10 +9,8 @@ import { buildApplicationResponse } from "../application/application-configurati
import { ApplicationConfigurationPersistenceMapper } from "../infrastructure/persistence/application-configuration-persistence.mapper";
import { ApplicationConfiguration } from "./application-configuration.aggregate";
-import {
- type ApplicationConfigurationInput,
- ApplicationConfigurationInputSchema,
-} from "./application-configuration-values";
+import type { ApplicationConfigurationInput } from "./application-configuration-values";
+import { ApplicationConfigurationInputSchema } from "./application-configuration-values";
import { ApplicationConfigurationValues } from "./value-objects/application-configuration-values";
import { WorkProfileValues } from "./value-objects/work-profile-values";
import { WorkProfile } from "./work-profile.aggregate";
diff --git a/modules/companies/src/api/domain/certificate-configuration-revision.entity.ts b/modules/companies/src/api/domain/certificate-configuration-revision.entity.ts
index 2a4a933..7085fdd 100644
--- a/modules/companies/src/api/domain/certificate-configuration-revision.entity.ts
+++ b/modules/companies/src/api/domain/certificate-configuration-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { CertificateConfigurationValues } from "./value-objects/certificate-configuration-values";
export type CertificateConfigurationRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/certificate-configuration.aggregate.ts b/modules/companies/src/api/domain/certificate-configuration.aggregate.ts
index c73e407..f80ba38 100644
--- a/modules/companies/src/api/domain/certificate-configuration.aggregate.ts
+++ b/modules/companies/src/api/domain/certificate-configuration.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/certificate-configuration.test.ts b/modules/companies/src/api/domain/certificate-configuration.test.ts
index a860067..aee37c6 100644
--- a/modules/companies/src/api/domain/certificate-configuration.test.ts
+++ b/modules/companies/src/api/domain/certificate-configuration.test.ts
@@ -9,10 +9,8 @@ import { buildCertificateResponse } from "../application/certificate-configurati
import { CertificateConfigurationPersistenceMapper } from "../infrastructure/persistence/certificate-configuration-persistence.mapper";
import { CertificateConfiguration } from "./certificate-configuration.aggregate";
-import {
- type CertificateConfigurationInput,
- CertificateConfigurationInputSchema,
-} from "./certificate-configuration-values";
+import type { CertificateConfigurationInput } from "./certificate-configuration-values";
+import { CertificateConfigurationInputSchema } from "./certificate-configuration-values";
import { CertificateConfigurationValues } from "./value-objects/certificate-configuration-values";
import { WorkProfileValues } from "./value-objects/work-profile-values";
import { WorkProfile } from "./work-profile.aggregate";
diff --git a/modules/companies/src/api/domain/folder-mapping-revision.entity.ts b/modules/companies/src/api/domain/folder-mapping-revision.entity.ts
index 0a4f4f9..996ffee 100644
--- a/modules/companies/src/api/domain/folder-mapping-revision.entity.ts
+++ b/modules/companies/src/api/domain/folder-mapping-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { FolderMappingValues } from "./value-objects/folder-mapping-values";
export type FolderMappingRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/folder-mapping.aggregate.ts b/modules/companies/src/api/domain/folder-mapping.aggregate.ts
index bc077ca..0d590a0 100644
--- a/modules/companies/src/api/domain/folder-mapping.aggregate.ts
+++ b/modules/companies/src/api/domain/folder-mapping.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/intervention-revision.entity.ts b/modules/companies/src/api/domain/intervention-revision.entity.ts
index 8e5bb62..ff61703 100644
--- a/modules/companies/src/api/domain/intervention-revision.entity.ts
+++ b/modules/companies/src/api/domain/intervention-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { InterventionValues } from "./value-objects/intervention-values";
export type InterventionRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/intervention-step.entity.ts b/modules/companies/src/api/domain/intervention-step.entity.ts
index 51fac39..c0e4731 100644
--- a/modules/companies/src/api/domain/intervention-step.entity.ts
+++ b/modules/companies/src/api/domain/intervention-step.entity.ts
@@ -1,11 +1,8 @@
import { DomainEntity, Name, UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import {
- type InterventionCheckInput,
- InterventionError,
- InterventionStepSchema,
-} from "./intervention-values";
+import type { InterventionCheckInput } from "./intervention-values";
+import { InterventionError, InterventionStepSchema } from "./intervention-values";
type Props = Readonly<{
title: Name;
diff --git a/modules/companies/src/api/domain/intervention-template-revision.entity.ts b/modules/companies/src/api/domain/intervention-template-revision.entity.ts
index ec5a13f..46c0fcd 100644
--- a/modules/companies/src/api/domain/intervention-template-revision.entity.ts
+++ b/modules/companies/src/api/domain/intervention-template-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { Maybe } from "@repo/rdx-utils";
import type { InterventionTemplateValues } from "./value-objects/intervention-template-values";
diff --git a/modules/companies/src/api/domain/intervention-template-step.entity.ts b/modules/companies/src/api/domain/intervention-template-step.entity.ts
index 67c240e..acd2944 100644
--- a/modules/companies/src/api/domain/intervention-template-step.entity.ts
+++ b/modules/companies/src/api/domain/intervention-template-step.entity.ts
@@ -1,8 +1,8 @@
import { DomainEntity, Name, UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
+import type { InterventionStepInput } from "./intervention-template-values";
import {
- type InterventionStepInput,
InterventionStepInputSchema,
InterventionTemplateError,
} from "./intervention-template-values";
diff --git a/modules/companies/src/api/domain/intervention-template.aggregate.ts b/modules/companies/src/api/domain/intervention-template.aggregate.ts
index 48e1683..e80bd9a 100644
--- a/modules/companies/src/api/domain/intervention-template.aggregate.ts
+++ b/modules/companies/src/api/domain/intervention-template.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/intervention-template.test.ts b/modules/companies/src/api/domain/intervention-template.test.ts
index fae2a9a..2ad4193 100644
--- a/modules/companies/src/api/domain/intervention-template.test.ts
+++ b/modules/companies/src/api/domain/intervention-template.test.ts
@@ -9,10 +9,8 @@ import { InterventionTemplatePersistenceMapper } from "../infrastructure/persist
import { InterventionTemplate } from "./intervention-template.aggregate";
import { interventionTemplateSeeds } from "./intervention-template-seed";
-import {
- type InterventionTemplateInput,
- InterventionTemplateInputSchema,
-} from "./intervention-template-values";
+import type { InterventionTemplateInput } from "./intervention-template-values";
+import { InterventionTemplateInputSchema } from "./intervention-template-values";
import { InterventionTemplateValues } from "./value-objects/intervention-template-values";
const actor = UniqueID.generateNewID();
diff --git a/modules/companies/src/api/domain/intervention.aggregate.ts b/modules/companies/src/api/domain/intervention.aggregate.ts
index b5ba4ff..c6c5cd0 100644
--- a/modules/companies/src/api/domain/intervention.aggregate.ts
+++ b/modules/companies/src/api/domain/intervention.aggregate.ts
@@ -1,5 +1,7 @@
-import { AggregateRoot, type Name, type UniqueID } from "@repo/rdx-ddd";
-import { type Maybe, Result } from "@repo/rdx-utils";
+import type { Name, UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
+import type { Maybe } from "@repo/rdx-utils";
+import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
import { InterventionRevision } from "./intervention-revision.entity";
diff --git a/modules/companies/src/api/domain/intervention.test.ts b/modules/companies/src/api/domain/intervention.test.ts
index 093c3da..da3bb0d 100644
--- a/modules/companies/src/api/domain/intervention.test.ts
+++ b/modules/companies/src/api/domain/intervention.test.ts
@@ -7,7 +7,8 @@ import { Maybe } from "@repo/rdx-utils";
import { InterventionPersistenceMapper } from "../infrastructure/persistence/intervention-persistence.mapper";
import { Intervention } from "./intervention.aggregate";
-import { type InterventionInput, InterventionInputSchema } from "./intervention-values";
+import type { InterventionInput } from "./intervention-values";
+import { InterventionInputSchema } from "./intervention-values";
import { InterventionProcedure } from "./value-objects/intervention-procedure";
import { InterventionValues } from "./value-objects/intervention-values";
diff --git a/modules/companies/src/api/domain/mail-configuration-revision.entity.ts b/modules/companies/src/api/domain/mail-configuration-revision.entity.ts
index 9945ad8..0fe8d03 100644
--- a/modules/companies/src/api/domain/mail-configuration-revision.entity.ts
+++ b/modules/companies/src/api/domain/mail-configuration-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { MailConfigurationValues } from "./value-objects/mail-configuration-values";
export type MailRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/mail-configuration.aggregate.ts b/modules/companies/src/api/domain/mail-configuration.aggregate.ts
index 6263feb..29cb928 100644
--- a/modules/companies/src/api/domain/mail-configuration.aggregate.ts
+++ b/modules/companies/src/api/domain/mail-configuration.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/mailbox-revision.entity.ts b/modules/companies/src/api/domain/mailbox-revision.entity.ts
index f209ce5..7a4c631 100644
--- a/modules/companies/src/api/domain/mailbox-revision.entity.ts
+++ b/modules/companies/src/api/domain/mailbox-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { MailboxValues } from "./value-objects/mailbox-values";
export type MailboxRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/mailbox-use-revision.entity.ts b/modules/companies/src/api/domain/mailbox-use-revision.entity.ts
index 77652f7..6a3a582 100644
--- a/modules/companies/src/api/domain/mailbox-use-revision.entity.ts
+++ b/modules/companies/src/api/domain/mailbox-use-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { MailboxUseValues } from "./value-objects/mailbox-use-values";
export type MailboxUseRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/mailbox-use.aggregate.ts b/modules/companies/src/api/domain/mailbox-use.aggregate.ts
index c5b361b..e25d226 100644
--- a/modules/companies/src/api/domain/mailbox-use.aggregate.ts
+++ b/modules/companies/src/api/domain/mailbox-use.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/mailbox.aggregate.ts b/modules/companies/src/api/domain/mailbox.aggregate.ts
index 37b6e54..8838272 100644
--- a/modules/companies/src/api/domain/mailbox.aggregate.ts
+++ b/modules/companies/src/api/domain/mailbox.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/printer-configuration-revision.entity.ts b/modules/companies/src/api/domain/printer-configuration-revision.entity.ts
index f5f3f13..1c33af4 100644
--- a/modules/companies/src/api/domain/printer-configuration-revision.entity.ts
+++ b/modules/companies/src/api/domain/printer-configuration-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { PrinterConfigurationValues } from "./value-objects/printer-configuration-values";
export type PrinterConfigurationRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/printer-configuration.aggregate.ts b/modules/companies/src/api/domain/printer-configuration.aggregate.ts
index 2876d5b..e7848e3 100644
--- a/modules/companies/src/api/domain/printer-configuration.aggregate.ts
+++ b/modules/companies/src/api/domain/printer-configuration.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/printer-configuration.test.ts b/modules/companies/src/api/domain/printer-configuration.test.ts
index 4b1e1be..d6e0729 100644
--- a/modules/companies/src/api/domain/printer-configuration.test.ts
+++ b/modules/companies/src/api/domain/printer-configuration.test.ts
@@ -9,10 +9,8 @@ import { buildPrinterResponse } from "../application/printer-configuration-respo
import { PrinterConfigurationPersistenceMapper } from "../infrastructure/persistence/printer-configuration-persistence.mapper";
import { PrinterConfiguration } from "./printer-configuration.aggregate";
-import {
- type PrinterConfigurationInput,
- PrinterConfigurationInputSchema,
-} from "./printer-configuration-values";
+import type { PrinterConfigurationInput } from "./printer-configuration-values";
+import { PrinterConfigurationInputSchema } from "./printer-configuration-values";
import { PrinterConfigurationValues } from "./value-objects/printer-configuration-values";
import { WorkProfileValues } from "./value-objects/work-profile-values";
import { WorkProfile } from "./work-profile.aggregate";
diff --git a/modules/companies/src/api/domain/process-revision.entity.ts b/modules/companies/src/api/domain/process-revision.entity.ts
index e413990..783d16e 100644
--- a/modules/companies/src/api/domain/process-revision.entity.ts
+++ b/modules/companies/src/api/domain/process-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { Maybe } from "@repo/rdx-utils";
import type { ProcessValues } from "./value-objects/process-values";
diff --git a/modules/companies/src/api/domain/process-task.entity.ts b/modules/companies/src/api/domain/process-task.entity.ts
index 9907b86..621fa11 100644
--- a/modules/companies/src/api/domain/process-task.entity.ts
+++ b/modules/companies/src/api/domain/process-task.entity.ts
@@ -1,12 +1,8 @@
import { DomainEntity, Name, UniqueID } from "@repo/rdx-ddd";
import { Maybe } from "@repo/rdx-utils";
-import {
- type ProcessReferenceInput,
- ProcessReferenceSchema,
- type ProcessTaskInput,
- ProcessTaskSchema,
-} from "./process-values";
+import type { ProcessReferenceInput, ProcessTaskInput } from "./process-values";
+import { ProcessReferenceSchema, ProcessTaskSchema } from "./process-values";
class ProcessReferenceValues {
private constructor(
diff --git a/modules/companies/src/api/domain/process-template-revision.entity.ts b/modules/companies/src/api/domain/process-template-revision.entity.ts
index b1d1116..9f04c0f 100644
--- a/modules/companies/src/api/domain/process-template-revision.entity.ts
+++ b/modules/companies/src/api/domain/process-template-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { Maybe } from "@repo/rdx-utils";
import type { ProcessTemplateValues } from "./value-objects/process-template-values";
diff --git a/modules/companies/src/api/domain/process-template.aggregate.ts b/modules/companies/src/api/domain/process-template.aggregate.ts
index 8c687b4..bb99288 100644
--- a/modules/companies/src/api/domain/process-template.aggregate.ts
+++ b/modules/companies/src/api/domain/process-template.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/process.aggregate.ts b/modules/companies/src/api/domain/process.aggregate.ts
index 0a55707..dcec9bf 100644
--- a/modules/companies/src/api/domain/process.aggregate.ts
+++ b/modules/companies/src/api/domain/process.aggregate.ts
@@ -1,10 +1,12 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
import { PersonProcessRevision } from "./process-revision.entity";
import { ProcessTask } from "./process-task.entity";
-import { ProcessError, type ProcessReferenceInput } from "./process-values";
+import type { ProcessReferenceInput } from "./process-values";
+import { ProcessError } from "./process-values";
import { ProcessValues } from "./value-objects/process-values";
type Props = Readonly<{
diff --git a/modules/companies/src/api/domain/process.test.ts b/modules/companies/src/api/domain/process.test.ts
index deee67d..f4046be 100644
--- a/modules/companies/src/api/domain/process.test.ts
+++ b/modules/companies/src/api/domain/process.test.ts
@@ -4,18 +4,16 @@ import { test } from "node:test";
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe } from "@repo/rdx-utils";
-import {
- type ProcessReviewSources,
- buildProcessReview,
-} from "../application/process-review.builder";
+import type { ProcessReviewSources } from "../application/process-review.builder";
+import { buildProcessReview } from "../application/process-review.builder";
import { PersonProcessPersistenceMapper } from "../infrastructure/persistence/process-persistence.mapper";
import { PersonProcess } from "./process.aggregate";
import { ProcessTask } from "./process-task.entity";
import { ProcessTemplate } from "./process-template.aggregate";
+import type { ProcessValuesInput } from "./process-values";
import {
ProcessTemplateInputSchema,
- type ProcessValuesInput,
ProcessValuesSchema,
StartProcessInputSchema,
} from "./process-values";
diff --git a/modules/companies/src/api/domain/remote-connection-revision.entity.ts b/modules/companies/src/api/domain/remote-connection-revision.entity.ts
index 6342bc1..8880e48 100644
--- a/modules/companies/src/api/domain/remote-connection-revision.entity.ts
+++ b/modules/companies/src/api/domain/remote-connection-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { RemoteConnectionValues } from "./value-objects/remote-connection-values";
export type RemoteConnectionRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/remote-connection.aggregate.ts b/modules/companies/src/api/domain/remote-connection.aggregate.ts
index 8714c84..b29f56e 100644
--- a/modules/companies/src/api/domain/remote-connection.aggregate.ts
+++ b/modules/companies/src/api/domain/remote-connection.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/remote-connection.test.ts b/modules/companies/src/api/domain/remote-connection.test.ts
index f5efd2b..e1c708e 100644
--- a/modules/companies/src/api/domain/remote-connection.test.ts
+++ b/modules/companies/src/api/domain/remote-connection.test.ts
@@ -9,10 +9,8 @@ import { remoteNeedsReview } from "../application/remote-connection-policy";
import { RemoteConnectionPersistenceMapper } from "../infrastructure/persistence/remote-connection-persistence.mapper";
import { RemoteConnection } from "./remote-connection.aggregate";
-import {
- type RemoteConnectionInput,
- RemoteConnectionInputSchema,
-} from "./remote-connection-values";
+import type { RemoteConnectionInput } from "./remote-connection-values";
+import { RemoteConnectionInputSchema } from "./remote-connection-values";
import { TeleworkAuthorization } from "./telework-authorization.aggregate";
import { RemoteConnectionValues } from "./value-objects/remote-connection-values";
import { TeleworkAuthorizationValues } from "./value-objects/telework-authorization-values";
diff --git a/modules/companies/src/api/domain/telework-authorization-revision.entity.ts b/modules/companies/src/api/domain/telework-authorization-revision.entity.ts
index 52fde28..e5d4429 100644
--- a/modules/companies/src/api/domain/telework-authorization-revision.entity.ts
+++ b/modules/companies/src/api/domain/telework-authorization-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { TeleworkAuthorizationValues } from "./value-objects/telework-authorization-values";
export type TeleworkAuthorizationRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/telework-authorization.aggregate.ts b/modules/companies/src/api/domain/telework-authorization.aggregate.ts
index 6591344..ed1f9c4 100644
--- a/modules/companies/src/api/domain/telework-authorization.aggregate.ts
+++ b/modules/companies/src/api/domain/telework-authorization.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/telework-authorization.test.ts b/modules/companies/src/api/domain/telework-authorization.test.ts
index 441ca78..0dd9968 100644
--- a/modules/companies/src/api/domain/telework-authorization.test.ts
+++ b/modules/companies/src/api/domain/telework-authorization.test.ts
@@ -9,10 +9,8 @@ import { teleworkAuthorizationState } from "../application/telework-authorizatio
import { TeleworkAuthorizationPersistenceMapper } from "../infrastructure/persistence/telework-authorization-persistence.mapper";
import { TeleworkAuthorization } from "./telework-authorization.aggregate";
-import {
- type TeleworkAuthorizationInput,
- TeleworkAuthorizationInputSchema,
-} from "./telework-authorization-values";
+import type { TeleworkAuthorizationInput } from "./telework-authorization-values";
+import { TeleworkAuthorizationInputSchema } from "./telework-authorization-values";
import { TeleworkAuthorizationValues } from "./value-objects/telework-authorization-values";
const company = UniqueID.generateNewID();
diff --git a/modules/companies/src/api/domain/ticket-revision.entity.ts b/modules/companies/src/api/domain/ticket-revision.entity.ts
index acba0cb..01acf7a 100644
--- a/modules/companies/src/api/domain/ticket-revision.entity.ts
+++ b/modules/companies/src/api/domain/ticket-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { TicketValues } from "./value-objects/ticket-values";
export type TicketRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/ticket.aggregate.ts b/modules/companies/src/api/domain/ticket.aggregate.ts
index c3156c9..997fdeb 100644
--- a/modules/companies/src/api/domain/ticket.aggregate.ts
+++ b/modules/companies/src/api/domain/ticket.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type Name, type UniqueID } from "@repo/rdx-ddd";
+import type { Name, UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/domain/value-objects/application-configuration-values.ts b/modules/companies/src/api/domain/value-objects/application-configuration-values.ts
index b2dde33..f307d31 100644
--- a/modules/companies/src/api/domain/value-objects/application-configuration-values.ts
+++ b/modules/companies/src/api/domain/value-objects/application-configuration-values.ts
@@ -1,9 +1,9 @@
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
+import type { ApplicationConfigurationInput } from "../application-configuration-values";
import {
ApplicationConfigurationError,
- type ApplicationConfigurationInput,
ApplicationConfigurationInputSchema,
} from "../application-configuration-values";
export class ApplicationConfigurationValues {
diff --git a/modules/companies/src/api/domain/value-objects/certificate-configuration-values.ts b/modules/companies/src/api/domain/value-objects/certificate-configuration-values.ts
index 80c33e3..aba3956 100644
--- a/modules/companies/src/api/domain/value-objects/certificate-configuration-values.ts
+++ b/modules/companies/src/api/domain/value-objects/certificate-configuration-values.ts
@@ -1,9 +1,9 @@
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
+import type { CertificateConfigurationInput } from "../certificate-configuration-values";
import {
CertificateConfigurationError,
- type CertificateConfigurationInput,
CertificateConfigurationInputSchema,
} from "../certificate-configuration-values";
export class CertificateConfigurationValues {
diff --git a/modules/companies/src/api/domain/value-objects/folder-mapping-values.ts b/modules/companies/src/api/domain/value-objects/folder-mapping-values.ts
index 3092a11..be1dfd0 100644
--- a/modules/companies/src/api/domain/value-objects/folder-mapping-values.ts
+++ b/modules/companies/src/api/domain/value-objects/folder-mapping-values.ts
@@ -1,11 +1,8 @@
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
-import {
- FolderMappingError,
- type FolderMappingInput,
- FolderMappingInputSchema,
-} from "../folder-mapping-values";
+import type { FolderMappingInput } from "../folder-mapping-values";
+import { FolderMappingError, FolderMappingInputSchema } from "../folder-mapping-values";
import { DriveLetter } from "./drive-letter";
import { SharedFolderPath } from "./shared-folder-path";
diff --git a/modules/companies/src/api/domain/value-objects/intervention-template-values.ts b/modules/companies/src/api/domain/value-objects/intervention-template-values.ts
index 30d6dfe..f5b0724 100644
--- a/modules/companies/src/api/domain/value-objects/intervention-template-values.ts
+++ b/modules/companies/src/api/domain/value-objects/intervention-template-values.ts
@@ -2,9 +2,9 @@ import { Name } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { InterventionTemplateStep } from "../intervention-template-step.entity";
+import type { InterventionTemplateInput } from "../intervention-template-values";
import {
InterventionTemplateError,
- type InterventionTemplateInput,
InterventionTemplateInputSchema,
} from "../intervention-template-values";
diff --git a/modules/companies/src/api/domain/value-objects/intervention-values.ts b/modules/companies/src/api/domain/value-objects/intervention-values.ts
index e792c0f..d1e2f47 100644
--- a/modules/companies/src/api/domain/value-objects/intervention-values.ts
+++ b/modules/companies/src/api/domain/value-objects/intervention-values.ts
@@ -2,11 +2,8 @@ import { Name, UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
import { InterventionStep } from "../intervention-step.entity";
-import {
- InterventionError,
- type InterventionInput,
- InterventionInputSchema,
-} from "../intervention-values";
+import type { InterventionInput } from "../intervention-values";
+import { InterventionError, InterventionInputSchema } from "../intervention-values";
import { TicketTarget } from "./ticket-values";
diff --git a/modules/companies/src/api/domain/value-objects/mail-configuration-values.ts b/modules/companies/src/api/domain/value-objects/mail-configuration-values.ts
index ccc7418..9f016b5 100644
--- a/modules/companies/src/api/domain/value-objects/mail-configuration-values.ts
+++ b/modules/companies/src/api/domain/value-objects/mail-configuration-values.ts
@@ -1,11 +1,8 @@
import { EmailAddress, UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
-import {
- MailConfigurationError,
- type MailSnapshot,
- MailSnapshotSchema,
-} from "../mail-configuration-values";
+import type { MailSnapshot } from "../mail-configuration-values";
+import { MailConfigurationError, MailSnapshotSchema } from "../mail-configuration-values";
export class MailConfigurationValues {
private constructor(
diff --git a/modules/companies/src/api/domain/value-objects/mailbox-use-values.ts b/modules/companies/src/api/domain/value-objects/mailbox-use-values.ts
index 54059e9..fa60888 100644
--- a/modules/companies/src/api/domain/value-objects/mailbox-use-values.ts
+++ b/modules/companies/src/api/domain/value-objects/mailbox-use-values.ts
@@ -1,7 +1,8 @@
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
-import { MailboxError, type MailboxUseInput, MailboxUseInputSchema } from "../mailbox-values";
+import type { MailboxUseInput } from "../mailbox-values";
+import { MailboxError, MailboxUseInputSchema } from "../mailbox-values";
import { CalendarDate } from "./calendar-date";
diff --git a/modules/companies/src/api/domain/value-objects/mailbox-values.ts b/modules/companies/src/api/domain/value-objects/mailbox-values.ts
index a772094..d8845eb 100644
--- a/modules/companies/src/api/domain/value-objects/mailbox-values.ts
+++ b/modules/companies/src/api/domain/value-objects/mailbox-values.ts
@@ -1,7 +1,8 @@
import { EmailAddress, UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
-import { MailboxError, type MailboxInput, MailboxInputSchema } from "../mailbox-values";
+import type { MailboxInput } from "../mailbox-values";
+import { MailboxError, MailboxInputSchema } from "../mailbox-values";
export class MailboxValues {
private constructor(
diff --git a/modules/companies/src/api/domain/value-objects/printer-configuration-values.ts b/modules/companies/src/api/domain/value-objects/printer-configuration-values.ts
index be04dd5..380ccf9 100644
--- a/modules/companies/src/api/domain/value-objects/printer-configuration-values.ts
+++ b/modules/companies/src/api/domain/value-objects/printer-configuration-values.ts
@@ -1,9 +1,9 @@
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
+import type { PrinterConfigurationInput } from "../printer-configuration-values";
import {
PrinterConfigurationError,
- type PrinterConfigurationInput,
PrinterConfigurationInputSchema,
} from "../printer-configuration-values";
export class PrinterConfigurationValues {
diff --git a/modules/companies/src/api/domain/value-objects/process-template-values.ts b/modules/companies/src/api/domain/value-objects/process-template-values.ts
index c64184a..f2acc10 100644
--- a/modules/companies/src/api/domain/value-objects/process-template-values.ts
+++ b/modules/companies/src/api/domain/value-objects/process-template-values.ts
@@ -1,11 +1,8 @@
import { Name } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
-import {
- ProcessError,
- type ProcessTemplateInput,
- ProcessTemplateInputSchema,
-} from "../process-values";
+import type { ProcessTemplateInput } from "../process-values";
+import { ProcessError, ProcessTemplateInputSchema } from "../process-values";
export class ProcessTemplateValues {
private constructor(
public readonly name: Name,
diff --git a/modules/companies/src/api/domain/value-objects/process-values.ts b/modules/companies/src/api/domain/value-objects/process-values.ts
index 477f9bf..1dc26b2 100644
--- a/modules/companies/src/api/domain/value-objects/process-values.ts
+++ b/modules/companies/src/api/domain/value-objects/process-values.ts
@@ -2,7 +2,8 @@ import { Name, UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
import { ProcessTask } from "../process-task.entity";
-import { ProcessError, type ProcessValuesInput, ProcessValuesSchema } from "../process-values";
+import type { ProcessValuesInput } from "../process-values";
+import { ProcessError, ProcessValuesSchema } from "../process-values";
export class ProcessValues {
private constructor(
public readonly personId: UniqueID,
diff --git a/modules/companies/src/api/domain/value-objects/remote-connection-values.ts b/modules/companies/src/api/domain/value-objects/remote-connection-values.ts
index 1a7baa6..587acc2 100644
--- a/modules/companies/src/api/domain/value-objects/remote-connection-values.ts
+++ b/modules/companies/src/api/domain/value-objects/remote-connection-values.ts
@@ -1,11 +1,8 @@
import { Name, UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
-import {
- RemoteConnectionError,
- type RemoteConnectionInput,
- RemoteConnectionInputSchema,
-} from "../remote-connection-values";
+import type { RemoteConnectionInput } from "../remote-connection-values";
+import { RemoteConnectionError, RemoteConnectionInputSchema } from "../remote-connection-values";
export class RemoteConnectionValues {
private constructor(
public readonly personId: UniqueID,
diff --git a/modules/companies/src/api/domain/value-objects/telework-authorization-values.ts b/modules/companies/src/api/domain/value-objects/telework-authorization-values.ts
index c7af92e..86757a0 100644
--- a/modules/companies/src/api/domain/value-objects/telework-authorization-values.ts
+++ b/modules/companies/src/api/domain/value-objects/telework-authorization-values.ts
@@ -1,9 +1,9 @@
import { UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
+import type { TeleworkAuthorizationInput } from "../telework-authorization-values";
import {
TeleworkAuthorizationError,
- type TeleworkAuthorizationInput,
TeleworkAuthorizationInputSchema,
} from "../telework-authorization-values";
diff --git a/modules/companies/src/api/domain/value-objects/ticket-values.ts b/modules/companies/src/api/domain/value-objects/ticket-values.ts
index 1312583..4c1592a 100644
--- a/modules/companies/src/api/domain/value-objects/ticket-values.ts
+++ b/modules/companies/src/api/domain/value-objects/ticket-values.ts
@@ -1,12 +1,8 @@
import { Name, UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
-import {
- TicketError,
- type TicketInput,
- TicketInputSchema,
- type TicketTargetInput,
-} from "../ticket-values";
+import type { TicketInput, TicketTargetInput } from "../ticket-values";
+import { TicketError, TicketInputSchema } from "../ticket-values";
export class TicketTarget {
private constructor(
public readonly kind: TicketTargetInput["kind"],
diff --git a/modules/companies/src/api/domain/value-objects/work-profile-values.ts b/modules/companies/src/api/domain/value-objects/work-profile-values.ts
index b401509..d032b99 100644
--- a/modules/companies/src/api/domain/value-objects/work-profile-values.ts
+++ b/modules/companies/src/api/domain/value-objects/work-profile-values.ts
@@ -1,11 +1,8 @@
import { Name, UniqueID } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
-import {
- WorkProfileError,
- type WorkProfileInput,
- WorkProfileInputSchema,
-} from "../work-profile-values";
+import type { WorkProfileInput } from "../work-profile-values";
+import { WorkProfileError, WorkProfileInputSchema } from "../work-profile-values";
export class WorkProfileValues {
private constructor(
diff --git a/modules/companies/src/api/domain/work-profile-revision.entity.ts b/modules/companies/src/api/domain/work-profile-revision.entity.ts
index 4b9de02..4bba545 100644
--- a/modules/companies/src/api/domain/work-profile-revision.entity.ts
+++ b/modules/companies/src/api/domain/work-profile-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { WorkProfileValues } from "./value-objects/work-profile-values";
export type WorkProfileRevisionProps = Readonly<{
diff --git a/modules/companies/src/api/domain/work-profile.aggregate.ts b/modules/companies/src/api/domain/work-profile.aggregate.ts
index b232ff3..3970557 100644
--- a/modules/companies/src/api/domain/work-profile.aggregate.ts
+++ b/modules/companies/src/api/domain/work-profile.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { z } from "zod/v4";
diff --git a/modules/companies/src/api/infrastructure/http/application-configuration.routes.ts b/modules/companies/src/api/infrastructure/http/application-configuration.routes.ts
index de2bdf5..219e173 100644
--- a/modules/companies/src/api/infrastructure/http/application-configuration.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/application-configuration.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import {
diff --git a/modules/companies/src/api/infrastructure/http/certificate-configuration.routes.ts b/modules/companies/src/api/infrastructure/http/certificate-configuration.routes.ts
index f46c12d..55e6c16 100644
--- a/modules/companies/src/api/infrastructure/http/certificate-configuration.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/certificate-configuration.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import {
diff --git a/modules/companies/src/api/infrastructure/http/folder-mapping.routes.ts b/modules/companies/src/api/infrastructure/http/folder-mapping.routes.ts
index 65c1a34..a71dfab 100644
--- a/modules/companies/src/api/infrastructure/http/folder-mapping.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/folder-mapping.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import { SaveFolderMappingRequestSchema } from "../../../common/folder-mappings";
diff --git a/modules/companies/src/api/infrastructure/http/mail-configuration.routes.ts b/modules/companies/src/api/infrastructure/http/mail-configuration.routes.ts
index e5920df..e722612 100644
--- a/modules/companies/src/api/infrastructure/http/mail-configuration.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/mail-configuration.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import {
diff --git a/modules/companies/src/api/infrastructure/http/mailbox.routes.ts b/modules/companies/src/api/infrastructure/http/mailbox.routes.ts
index 7f6de30..300c86f 100644
--- a/modules/companies/src/api/infrastructure/http/mailbox.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/mailbox.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import { MailItemParamsSchema, MailParamsSchema } from "../../../common/mail-configurations";
diff --git a/modules/companies/src/api/infrastructure/http/printer-configuration.routes.ts b/modules/companies/src/api/infrastructure/http/printer-configuration.routes.ts
index f5500f5..87674b6 100644
--- a/modules/companies/src/api/infrastructure/http/printer-configuration.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/printer-configuration.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import {
diff --git a/modules/companies/src/api/infrastructure/http/process.routes.ts b/modules/companies/src/api/infrastructure/http/process.routes.ts
index dcdfdb4..b0ce0c5 100644
--- a/modules/companies/src/api/infrastructure/http/process.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/process.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import {
diff --git a/modules/companies/src/api/infrastructure/http/remote-connection.routes.ts b/modules/companies/src/api/infrastructure/http/remote-connection.routes.ts
index 62d8979..5d1edb5 100644
--- a/modules/companies/src/api/infrastructure/http/remote-connection.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/remote-connection.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import {
diff --git a/modules/companies/src/api/infrastructure/http/telework-authorization.routes.ts b/modules/companies/src/api/infrastructure/http/telework-authorization.routes.ts
index e02d47e..cd1bebb 100644
--- a/modules/companies/src/api/infrastructure/http/telework-authorization.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/telework-authorization.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import {
diff --git a/modules/companies/src/api/infrastructure/http/work-profile.routes.ts b/modules/companies/src/api/infrastructure/http/work-profile.routes.ts
index d826170..e9d591a 100644
--- a/modules/companies/src/api/infrastructure/http/work-profile.routes.ts
+++ b/modules/companies/src/api/infrastructure/http/work-profile.routes.ts
@@ -1,4 +1,5 @@
-import { type Application, type RequestHandler, type Response, Router } from "express";
+import type { Application, RequestHandler, Response } from "express";
+import { Router } from "express";
import { z } from "zod/v4";
import {
diff --git a/modules/companies/src/api/infrastructure/persistence/application-configuration-migration.ts b/modules/companies/src/api/infrastructure/persistence/application-configuration-migration.ts
index 39cb6e0..84465cc 100644
--- a/modules/companies/src/api/infrastructure/persistence/application-configuration-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/application-configuration-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateApplicationConfigurations(database: Sequelize) {
const q = database.getQueryInterface();
const tables = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/certificate-configuration-migration.ts b/modules/companies/src/api/infrastructure/persistence/certificate-configuration-migration.ts
index b56d710..8c16ba0 100644
--- a/modules/companies/src/api/infrastructure/persistence/certificate-configuration-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/certificate-configuration-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateCertificateConfigurations(database: Sequelize) {
const q = database.getQueryInterface();
const tables = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/folder-mapping-migration.ts b/modules/companies/src/api/infrastructure/persistence/folder-mapping-migration.ts
index dd9e038..5c5bdbc 100644
--- a/modules/companies/src/api/infrastructure/persistence/folder-mapping-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/folder-mapping-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateFolderMappings(database: Sequelize) {
const q = database.getQueryInterface();
const tables = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/intervention-migration.ts b/modules/companies/src/api/infrastructure/persistence/intervention-migration.ts
index 9643d56..5a8f036 100644
--- a/modules/companies/src/api/infrastructure/persistence/intervention-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/intervention-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateInterventions(database: Sequelize) {
const query = database.getQueryInterface();
const tables = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/intervention-template-migration.ts b/modules/companies/src/api/infrastructure/persistence/intervention-template-migration.ts
index 92b2a0a..3340b6a 100644
--- a/modules/companies/src/api/infrastructure/persistence/intervention-template-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/intervention-template-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
import { interventionTemplateSeeds } from "../../domain/intervention-template-seed";
diff --git a/modules/companies/src/api/infrastructure/persistence/mail-configuration-migration.ts b/modules/companies/src/api/infrastructure/persistence/mail-configuration-migration.ts
index 328472b..aa2ab65 100644
--- a/modules/companies/src/api/infrastructure/persistence/mail-configuration-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/mail-configuration-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateMailConfigurations(database: Sequelize) {
const query = database.getQueryInterface();
const rows = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/mailbox-migration.ts b/modules/companies/src/api/infrastructure/persistence/mailbox-migration.ts
index e0db75a..0fd965a 100644
--- a/modules/companies/src/api/infrastructure/persistence/mailbox-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/mailbox-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateMailboxes(database: Sequelize) {
const query = database.getQueryInterface();
const tables = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/printer-configuration-migration.ts b/modules/companies/src/api/infrastructure/persistence/printer-configuration-migration.ts
index 0933541..cdc40a3 100644
--- a/modules/companies/src/api/infrastructure/persistence/printer-configuration-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/printer-configuration-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migratePrinterConfigurations(database: Sequelize) {
const q = database.getQueryInterface();
const tables = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/process-migration.ts b/modules/companies/src/api/infrastructure/persistence/process-migration.ts
index c6ccdbb..bc001a5 100644
--- a/modules/companies/src/api/infrastructure/persistence/process-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/process-migration.ts
@@ -1,5 +1,6 @@
import { Maybe } from "@repo/rdx-utils";
-import { DataTypes, QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
import { ProcessTemplate } from "../../domain/process-template.aggregate";
import { ProcessTemplateValues } from "../../domain/value-objects/process-template-values";
diff --git a/modules/companies/src/api/infrastructure/persistence/process-review-reader.ts b/modules/companies/src/api/infrastructure/persistence/process-review-reader.ts
index fbcf793..e6e1b74 100644
--- a/modules/companies/src/api/infrastructure/persistence/process-review-reader.ts
+++ b/modules/companies/src/api/infrastructure/persistence/process-review-reader.ts
@@ -1,11 +1,10 @@
import type { UniqueID } from "@repo/rdx-ddd";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type { IProcessAssetInventoryService } from "../../application/process.repository";
-import {
- type ProcessReviewSources,
- buildProcessReview,
-} from "../../application/process-review.builder";
+import type { ProcessReviewSources } from "../../application/process-review.builder";
+import { buildProcessReview } from "../../application/process-review.builder";
import { accessReviewRelationships } from "../../application/process-review-access";
import { AccessDefinitionSchema } from "../../domain/access/access-definition";
import { ApplicationConfigurationInputSchema } from "../../domain/application-configuration-values";
diff --git a/modules/companies/src/api/infrastructure/persistence/remote-connection-migration.ts b/modules/companies/src/api/infrastructure/persistence/remote-connection-migration.ts
index 836976d..67bd2c8 100644
--- a/modules/companies/src/api/infrastructure/persistence/remote-connection-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/remote-connection-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateRemoteConnections(database: Sequelize) {
const query = database.getQueryInterface();
const tables = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-application-configuration.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-application-configuration.repository.ts
index 456b7ae..b76fd84 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-application-configuration.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-application-configuration.repository.ts
@@ -1,7 +1,8 @@
import type { IResourceInventoryService } from "@metis/resources/services";
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type {
ApplicationContext,
@@ -11,17 +12,13 @@ import { applicationReferences } from "../../application/application-configurati
import type { IWorkProfileInventoryService } from "../../application/work-profile.repository";
import { ApplicationConfigurationError } from "../../domain/application-configuration-values";
-import {
- ApplicationConfigurationPersistenceMapper,
- type ApplicationRevisionRow,
- type ApplicationRow,
+import type {
+ ApplicationRevisionRow,
+ ApplicationRow,
} from "./application-configuration-persistence.mapper";
-import {
- type ProfileRevisionRow,
- type ProfileRow,
- WorkProfilePersistenceMapper,
- profileIdentity,
-} from "./work-profile-persistence.mapper";
+import { ApplicationConfigurationPersistenceMapper } from "./application-configuration-persistence.mapper";
+import type { ProfileRevisionRow, ProfileRow } from "./work-profile-persistence.mapper";
+import { WorkProfilePersistenceMapper, profileIdentity } from "./work-profile-persistence.mapper";
export class SequelizeApplicationConfigurationRepository
implements IApplicationConfigurationRepository
{
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-certificate-configuration.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-certificate-configuration.repository.ts
index d9a3baa..3429c41 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-certificate-configuration.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-certificate-configuration.repository.ts
@@ -1,7 +1,8 @@
import type { IResourceInventoryService } from "@metis/resources/services";
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type {
CertificateContext,
@@ -11,17 +12,13 @@ import { certificateReferences } from "../../application/certificate-configurati
import type { IWorkProfileInventoryService } from "../../application/work-profile.repository";
import { CertificateConfigurationError } from "../../domain/certificate-configuration-values";
-import {
- CertificateConfigurationPersistenceMapper,
- type CertificateRevisionRow,
- type CertificateRow,
+import type {
+ CertificateRevisionRow,
+ CertificateRow,
} from "./certificate-configuration-persistence.mapper";
-import {
- type ProfileRevisionRow,
- type ProfileRow,
- WorkProfilePersistenceMapper,
- profileIdentity,
-} from "./work-profile-persistence.mapper";
+import { CertificateConfigurationPersistenceMapper } from "./certificate-configuration-persistence.mapper";
+import type { ProfileRevisionRow, ProfileRow } from "./work-profile-persistence.mapper";
+import { WorkProfilePersistenceMapper, profileIdentity } from "./work-profile-persistence.mapper";
export class SequelizeCertificateConfigurationRepository
implements ICertificateConfigurationRepository
{
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-dashboard.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-dashboard.repository.ts
index a1f04a1..aded47e 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-dashboard.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-dashboard.repository.ts
@@ -1,4 +1,5 @@
-import { QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { QueryTypes } from "sequelize";
import type { DashboardDetailsQuery, DashboardEntryDTO } from "../../../common/dashboard";
import type {
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-folder-mapping.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-folder-mapping.repository.ts
index 4f53af4..30118b4 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-folder-mapping.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-folder-mapping.repository.ts
@@ -1,6 +1,7 @@
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type {
FolderContext,
@@ -12,14 +13,10 @@ import { AccessDefinitionSchema } from "../../domain/access/access-definition";
import { AccessValues } from "../../domain/access/access-values";
import { FolderMappingError } from "../../domain/folder-mapping-values";
+import type { FolderRevisionRow, FolderRow } from "./folder-mapping-persistence.mapper";
+import { FolderMappingPersistenceMapper } from "./folder-mapping-persistence.mapper";
+import type { ProfileRevisionRow, ProfileRow } from "./work-profile-persistence.mapper";
import {
- FolderMappingPersistenceMapper,
- type FolderRevisionRow,
- type FolderRow,
-} from "./folder-mapping-persistence.mapper";
-import {
- type ProfileRevisionRow,
- type ProfileRow,
WorkProfilePersistenceMapper,
persistedJson,
profileIdentity,
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-intervention-template.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-intervention-template.repository.ts
index 42abb62..f2e8f91 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-intervention-template.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-intervention-template.repository.ts
@@ -1,6 +1,7 @@
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type { IInterventionTemplateRepository } from "../../application/intervention-template.repository";
import type { InterventionTemplate } from "../../domain/intervention-template.aggregate";
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-intervention.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-intervention.repository.ts
index cab0b78..de3c44f 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-intervention.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-intervention.repository.ts
@@ -1,6 +1,7 @@
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import { z } from "zod/v4";
import type {
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-mail-configuration.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-mail-configuration.repository.ts
index 21852b5..f213a01 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-mail-configuration.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-mail-configuration.repository.ts
@@ -1,6 +1,7 @@
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type {
IMailConfigurationRepository,
@@ -11,18 +12,14 @@ import type { MailboxContext } from "../../application/mailbox.repository";
import { MailConfigurationError } from "../../domain/mail-configuration-values";
import type { MailConfigurationValues } from "../../domain/value-objects/mail-configuration-values";
+import type { MailRevisionRow, MailRow } from "./mail-configuration-persistence.mapper";
import {
MailConfigurationPersistenceMapper,
- type MailRevisionRow,
- type MailRow,
mailIdentity,
} from "./mail-configuration-persistence.mapper";
import type { SequelizeMailboxRepository } from "./sequelize-mailbox.repository";
-import {
- type ProfileRevisionRow,
- type ProfileRow,
- WorkProfilePersistenceMapper,
-} from "./work-profile-persistence.mapper";
+import type { ProfileRevisionRow, ProfileRow } from "./work-profile-persistence.mapper";
+import { WorkProfilePersistenceMapper } from "./work-profile-persistence.mapper";
function validateLink(
values: MailConfigurationValues,
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-mailbox.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-mailbox.repository.ts
index ea8013b..9834661 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-mailbox.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-mailbox.repository.ts
@@ -1,6 +1,7 @@
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type { IMailboxRepository, MailboxContext } from "../../application/mailbox.repository";
import { AccessDefinitionSchema } from "../../domain/access/access-definition";
@@ -8,13 +9,8 @@ import { Mailbox } from "../../domain/mailbox.aggregate";
import type { MailboxUse } from "../../domain/mailbox-use.aggregate";
import { MailboxError } from "../../domain/mailbox-values";
-import {
- MailboxPersistenceMapper,
- type MailboxRevisionRow,
- type MailboxRow,
- type MailboxUseRow,
- mailboxIdentity,
-} from "./mailbox-persistence.mapper";
+import type { MailboxRevisionRow, MailboxRow, MailboxUseRow } from "./mailbox-persistence.mapper";
+import { MailboxPersistenceMapper, mailboxIdentity } from "./mailbox-persistence.mapper";
export class SequelizeMailboxRepository implements IMailboxRepository {
private readonly mapper = new MailboxPersistenceMapper();
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-printer-configuration.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-printer-configuration.repository.ts
index 18296d5..d55bc3a 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-printer-configuration.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-printer-configuration.repository.ts
@@ -1,6 +1,7 @@
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type {
IPrinterConfigurationRepository,
@@ -10,17 +11,10 @@ import { printerReferences } from "../../application/printer-configuration-polic
import type { IWorkProfileInventoryService } from "../../application/work-profile.repository";
import { PrinterConfigurationError } from "../../domain/printer-configuration-values";
-import {
- PrinterConfigurationPersistenceMapper,
- type PrinterRevisionRow,
- type PrinterRow,
-} from "./printer-configuration-persistence.mapper";
-import {
- type ProfileRevisionRow,
- type ProfileRow,
- WorkProfilePersistenceMapper,
- profileIdentity,
-} from "./work-profile-persistence.mapper";
+import type { PrinterRevisionRow, PrinterRow } from "./printer-configuration-persistence.mapper";
+import { PrinterConfigurationPersistenceMapper } from "./printer-configuration-persistence.mapper";
+import type { ProfileRevisionRow, ProfileRow } from "./work-profile-persistence.mapper";
+import { WorkProfilePersistenceMapper, profileIdentity } from "./work-profile-persistence.mapper";
export class SequelizePrinterConfigurationRepository implements IPrinterConfigurationRepository {
private readonly mapper = new PrinterConfigurationPersistenceMapper();
constructor(
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-process.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-process.repository.ts
index 2633d85..cbd1b5c 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-process.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-process.repository.ts
@@ -1,7 +1,8 @@
import type { IResourceInventoryService } from "@metis/resources/services";
import { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type {
IProcessAssetInventoryService,
@@ -11,17 +12,14 @@ import type {
} from "../../application/process.repository";
import { ProcessError } from "../../domain/process-values";
-import {
- PersonProcessPersistenceMapper,
- type PersonProcessRevisionRow,
- type PersonProcessRow,
-} from "./process-persistence.mapper";
+import type { PersonProcessRevisionRow, PersonProcessRow } from "./process-persistence.mapper";
+import { PersonProcessPersistenceMapper } from "./process-persistence.mapper";
import { ProcessReviewReader } from "./process-review-reader";
-import {
- ProcessTemplatePersistenceMapper,
- type ProcessTemplateRevisionRow,
- type ProcessTemplateRow,
+import type {
+ ProcessTemplateRevisionRow,
+ ProcessTemplateRow,
} from "./process-template-persistence.mapper";
+import { ProcessTemplatePersistenceMapper } from "./process-template-persistence.mapper";
export class SequelizeProcessRepository implements IProcessRepository {
private readonly processMapper = new PersonProcessPersistenceMapper();
private readonly templateMapper = new ProcessTemplatePersistenceMapper();
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-remote-connection.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-remote-connection.repository.ts
index ce8d967..935df8a 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-remote-connection.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-remote-connection.repository.ts
@@ -1,7 +1,8 @@
import type { IResourceInventoryService } from "@metis/resources/services";
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type {
IRemoteConnectionRepository,
@@ -11,15 +12,11 @@ import { remoteReferences } from "../../application/remote-connection-policy";
import type { IWorkProfileInventoryService } from "../../application/work-profile.repository";
import { RemoteConnectionError } from "../../domain/remote-connection-values";
-import {
- RemoteConnectionPersistenceMapper,
- type RemoteRevisionRow,
- type RemoteRow,
-} from "./remote-connection-persistence.mapper";
+import type { RemoteRevisionRow, RemoteRow } from "./remote-connection-persistence.mapper";
+import { RemoteConnectionPersistenceMapper } from "./remote-connection-persistence.mapper";
+import type { TeleworkRevisionRow, TeleworkRow } from "./telework-authorization-persistence.mapper";
import {
TeleworkAuthorizationPersistenceMapper,
- type TeleworkRevisionRow,
- type TeleworkRow,
teleworkIdentity,
} from "./telework-authorization-persistence.mapper";
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-telework-authorization.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-telework-authorization.repository.ts
index 699d81a..757bbba 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-telework-authorization.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-telework-authorization.repository.ts
@@ -1,6 +1,7 @@
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type {
ITeleworkAuthorizationRepository,
@@ -8,10 +9,9 @@ import type {
} from "../../application/telework-authorization.repository";
import { TeleworkAuthorizationError } from "../../domain/telework-authorization-values";
+import type { TeleworkRevisionRow, TeleworkRow } from "./telework-authorization-persistence.mapper";
import {
TeleworkAuthorizationPersistenceMapper,
- type TeleworkRevisionRow,
- type TeleworkRow,
teleworkIdentity,
} from "./telework-authorization-persistence.mapper";
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-ticket.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-ticket.repository.ts
index 4da77c3..6eaabd4 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-ticket.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-ticket.repository.ts
@@ -1,7 +1,8 @@
import type { IResourceInventoryService } from "@metis/resources/services";
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import { z } from "zod/v4";
import type {
diff --git a/modules/companies/src/api/infrastructure/persistence/sequelize-work-profile.repository.ts b/modules/companies/src/api/infrastructure/persistence/sequelize-work-profile.repository.ts
index cc062f3..530e437 100644
--- a/modules/companies/src/api/infrastructure/persistence/sequelize-work-profile.repository.ts
+++ b/modules/companies/src/api/infrastructure/persistence/sequelize-work-profile.repository.ts
@@ -1,6 +1,7 @@
import type { UniqueID } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
-import { QueryTypes, type Sequelize, type Transaction } from "sequelize";
+import type { Sequelize, Transaction } from "sequelize";
+import { QueryTypes } from "sequelize";
import type {
IWorkProfileInventoryService,
@@ -10,9 +11,8 @@ import type {
import { AccessDefinitionSchema } from "../../domain/access/access-definition";
import { WorkProfileError } from "../../domain/work-profile-values";
+import type { ProfileRevisionRow, ProfileRow } from "./work-profile-persistence.mapper";
import {
- type ProfileRevisionRow,
- type ProfileRow,
WorkProfilePersistenceMapper,
persistedJson,
profileIdentity,
diff --git a/modules/companies/src/api/infrastructure/persistence/telework-authorization-migration.ts b/modules/companies/src/api/infrastructure/persistence/telework-authorization-migration.ts
index ca50c30..fae4a77 100644
--- a/modules/companies/src/api/infrastructure/persistence/telework-authorization-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/telework-authorization-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateTeleworkAuthorizations(database: Sequelize) {
const query = database.getQueryInterface();
const tables = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/ticket-migration.ts b/modules/companies/src/api/infrastructure/persistence/ticket-migration.ts
index 6a659ec..a3eac16 100644
--- a/modules/companies/src/api/infrastructure/persistence/ticket-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/ticket-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateTickets(database: Sequelize) {
const query = database.getQueryInterface();
const tables = await database.query<{ name: string }>(
diff --git a/modules/companies/src/api/infrastructure/persistence/work-profile-migration.ts b/modules/companies/src/api/infrastructure/persistence/work-profile-migration.ts
index 62e6198..50c81b4 100644
--- a/modules/companies/src/api/infrastructure/persistence/work-profile-migration.ts
+++ b/modules/companies/src/api/infrastructure/persistence/work-profile-migration.ts
@@ -1,4 +1,5 @@
-import { DataTypes, QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { DataTypes, QueryTypes } from "sequelize";
export async function migrateWorkProfiles(database: Sequelize) {
const query = database.getQueryInterface();
const rows = await database.query<{ name: string }>(
diff --git a/modules/companies/src/web/access/access-editor-dialog.tsx b/modules/companies/src/web/access/access-editor-dialog.tsx
new file mode 100644
index 0000000..4803337
--- /dev/null
+++ b/modules/companies/src/web/access/access-editor-dialog.tsx
@@ -0,0 +1,56 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps } from "react";
+import { useTranslation } from "react-i18next";
+
+import type { AccessKind } from "../../common";
+
+import { createLabels } from "./access-fields";
+import { AccessForm } from "./access-form";
+
+export function AccessEditorDialog({
+ editor,
+ selected,
+ kind,
+ scope,
+ csrfToken,
+ data,
+ people,
+ complex,
+ onSaved,
+ onOpenChange,
+}: {
+ editor: string | undefined;
+ selected: ComponentProps["item"];
+ kind: AccessKind;
+ scope: string;
+ csrfToken: string;
+ data: ComponentProps["data"];
+ people: ComponentProps["people"];
+ complex: boolean;
+ onSaved: () => void;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("access");
+
+ return (
+
+
+
+ );
+}
diff --git a/modules/companies/src/web/access/access-help-dialog.tsx b/modules/companies/src/web/access/access-help-dialog.tsx
new file mode 100644
index 0000000..6fc59f4
--- /dev/null
+++ b/modules/companies/src/web/access/access-help-dialog.tsx
@@ -0,0 +1,31 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import type { AccessKind } from "../../common";
+
+import { EntityHelp } from "./entity-help";
+
+export function AccessHelpDialog({
+ kind,
+ scope,
+ open,
+ onOpenChange,
+}: {
+ kind: AccessKind;
+ scope: string;
+ open: boolean;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("access");
+
+ return (
+
+
+
+ );
+}
diff --git a/modules/companies/src/web/access/access-workspace.tsx b/modules/companies/src/web/access/access-workspace.tsx
index bb42fbd..f11259b 100644
--- a/modules/companies/src/web/access/access-workspace.tsx
+++ b/modules/companies/src/web/access/access-workspace.tsx
@@ -1,6 +1,5 @@
import { Button } from "@repo/shadcn-ui/components/button";
import { EntityListHeader, EntityTable } from "@repo/shadcn-ui/components/entity-list";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { useQuery } from "@tanstack/react-query";
import { useState } from "react";
import { useTranslation } from "react-i18next";
@@ -8,12 +7,12 @@ import { useTranslation } from "react-i18next";
import type { AccessKind, PersonDTO } from "../../common";
import { AccessApiError, accessApi, accessKeys } from "./access-api";
+import { AccessEditorDialog } from "./access-editor-dialog";
import { accessFields, createLabels } from "./access-fields";
-import { AccessForm } from "./access-form";
+import { AccessHelpDialog } from "./access-help-dialog";
import { AccessHistory } from "./access-history";
import { accessLabel } from "./access-labels";
import { AccessCell } from "./access-row";
-import { EntityHelp } from "./entity-help";
export function AccessWorkspacePage({
scope,
@@ -82,14 +81,7 @@ export function AccessWorkspacePage({
locale={i18n.language}
title={t(`kinds.${kind}`)}
/>
-
-
-
+
)}
-
- {t(mutation.isPending ? "saving" : "save")}
-
+
+
+ {t(mutation.isPending ? "saving" : "save")}
+
+
);
}
diff --git a/modules/identity/src/web/components/user-editor-dialog.tsx b/modules/identity/src/web/components/user-editor-dialog.tsx
new file mode 100644
index 0000000..69ab5e0
--- /dev/null
+++ b/modules/identity/src/web/components/user-editor-dialog.tsx
@@ -0,0 +1,54 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import type { UserDTO } from "../../common";
+
+import { PasswordForm } from "./password-form";
+import { UserForm } from "./user-form";
+
+export function UserEditorDialog(
+ props: {
+ open: boolean;
+ csrfToken: string;
+ onClose: () => void;
+ } & ({ mode: "create" } | { mode: "edit" | "password"; user: UserDTO })
+) {
+ const { t } = useTranslation("identity");
+ return (
+ {
+ if (!open) {
+ props.onClose();
+ }
+ }}
+ open={props.open}
+ title={t(
+ props.mode === "create"
+ ? "createUser"
+ : props.mode === "edit"
+ ? "editUser"
+ : "resetPassword"
+ )}
+ >
+ {props.mode === "password" ? (
+
+ ) : (
+
+ )}
+
+ );
+}
diff --git a/modules/identity/src/web/components/user-form.tsx b/modules/identity/src/web/components/user-form.tsx
index b439ba7..9e73d27 100644
--- a/modules/identity/src/web/components/user-form.tsx
+++ b/modules/identity/src/web/components/user-form.tsx
@@ -1,6 +1,7 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { Button } from "@repo/shadcn-ui/components/button";
import { Checkbox } from "@repo/shadcn-ui/components/checkbox";
+import { FormActions } from "@repo/shadcn-ui/components/form-dialog";
import { Input } from "@repo/shadcn-ui/components/input";
import { Label } from "@repo/shadcn-ui/components/label";
import { useMutation, useQueryClient } from "@tanstack/react-query";
@@ -132,9 +133,11 @@ export function UserForm({
)}
-
- {t(mutation.isPending ? "saving" : "save")}
-
+
+
+ {t(mutation.isPending ? "saving" : "save")}
+
+
);
}
diff --git a/modules/identity/src/web/components/user-management-dialog.tsx b/modules/identity/src/web/components/user-management-dialog.tsx
new file mode 100644
index 0000000..ff6f6e9
--- /dev/null
+++ b/modules/identity/src/web/components/user-management-dialog.tsx
@@ -0,0 +1,28 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import { UserManagement } from "./user-management";
+
+export function UserManagementDialog({
+ open,
+ csrfToken,
+ onOpenChange,
+}: {
+ open: boolean;
+ csrfToken: string;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("identity");
+
+ return (
+
+
+
+ );
+}
diff --git a/modules/identity/src/web/components/user-management.tsx b/modules/identity/src/web/components/user-management.tsx
index 2b6b720..477d665 100644
--- a/modules/identity/src/web/components/user-management.tsx
+++ b/modules/identity/src/web/components/user-management.tsx
@@ -6,7 +6,6 @@ import {
EntityStatus,
EntityTable,
} from "@repo/shadcn-ui/components/entity-list";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { useQuery } from "@tanstack/react-query";
import { useState } from "react";
import { useTranslation } from "react-i18next";
@@ -15,8 +14,7 @@ import type { UserDTO } from "../../common";
import { identityApi, identityKeys } from "../api/identity-api";
import { FormFeedback } from "./form-feedback";
-import { PasswordForm } from "./password-form";
-import { UserForm } from "./user-form";
+import { UserEditorDialog } from "./user-editor-dialog";
export function UserManagement({ csrfToken }: { csrfToken: string }) {
const { t, i18n } = useTranslation("identity");
@@ -112,43 +110,21 @@ export function UserManagement({ csrfToken }: { csrfToken: string }) {
title={t("users")}
/>
)}
- setCreateOpen(false)}
open={createOpen}
- title={t("createUser")}
- >
- setCreateOpen(false)} showTitle={false} />
-
- {
- if (!open) {
- setSelection(undefined);
- }
- }}
- open={selected !== undefined}
- title={t(selection?.action === "password" ? "resetPassword" : "editUser")}
- >
- {selected &&
- (selection?.action === "edit" ? (
- setSelection(undefined)}
- showTitle={false}
- user={selected}
- />
- ) : (
- setSelection(undefined)}
- showTitle={false}
- target={selected}
- />
- ))}
-
+ />
+ {selected && selection && (
+ setSelection(undefined)}
+ open
+ user={selected}
+ />
+ )}
);
}
diff --git a/modules/resources/src/api/domain/resource-catalog.aggregate.ts b/modules/resources/src/api/domain/resource-catalog.aggregate.ts
index 3a18ecd..f5f49a4 100644
--- a/modules/resources/src/api/domain/resource-catalog.aggregate.ts
+++ b/modules/resources/src/api/domain/resource-catalog.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
import { ResourceCatalogError } from "./resource-definition";
diff --git a/modules/resources/src/api/domain/resource-definition.entity.ts b/modules/resources/src/api/domain/resource-definition.entity.ts
index 4cbeebc..45429ae 100644
--- a/modules/resources/src/api/domain/resource-definition.entity.ts
+++ b/modules/resources/src/api/domain/resource-definition.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import { Maybe, Result } from "@repo/rdx-utils";
import { ResourceCatalogError } from "./resource-definition";
diff --git a/modules/resources/src/api/domain/resource-revision.entity.ts b/modules/resources/src/api/domain/resource-revision.entity.ts
index 1d5c458..1ef2ca7 100644
--- a/modules/resources/src/api/domain/resource-revision.entity.ts
+++ b/modules/resources/src/api/domain/resource-revision.entity.ts
@@ -1,4 +1,5 @@
-import { DomainEntity, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { DomainEntity } from "@repo/rdx-ddd";
import type { ResourceValues } from "./value-objects/resource-values";
export type ResourceRevisionProps = Readonly<{
diff --git a/modules/resources/src/api/domain/resource.aggregate.ts b/modules/resources/src/api/domain/resource.aggregate.ts
index 6d4aabf..e47369e 100644
--- a/modules/resources/src/api/domain/resource.aggregate.ts
+++ b/modules/resources/src/api/domain/resource.aggregate.ts
@@ -1,4 +1,5 @@
-import { AggregateRoot, type UniqueID } from "@repo/rdx-ddd";
+import type { UniqueID } from "@repo/rdx-ddd";
+import { AggregateRoot } from "@repo/rdx-ddd";
import { Result } from "@repo/rdx-utils";
import { ResourceCatalogError } from "./resource-definition";
diff --git a/modules/resources/src/api/infrastructure/persistence/resource-dashboard-reader.ts b/modules/resources/src/api/infrastructure/persistence/resource-dashboard-reader.ts
index eb28c0e..617053a 100644
--- a/modules/resources/src/api/infrastructure/persistence/resource-dashboard-reader.ts
+++ b/modules/resources/src/api/infrastructure/persistence/resource-dashboard-reader.ts
@@ -1,4 +1,5 @@
-import { QueryTypes, type Sequelize } from "sequelize";
+import type { Sequelize } from "sequelize";
+import { QueryTypes } from "sequelize";
type Entry = {
eventId?: string;
diff --git a/modules/resources/src/web/catalog-editor-dialog.tsx b/modules/resources/src/web/catalog-editor-dialog.tsx
new file mode 100644
index 0000000..e460ec4
--- /dev/null
+++ b/modules/resources/src/web/catalog-editor-dialog.tsx
@@ -0,0 +1,68 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import type { CatalogItemDTO } from "../common";
+
+import { CatalogFieldForm } from "./catalog-form";
+import { CatalogTemplateForm } from "./catalog-template-form";
+
+export type CatalogEditor = {
+ kind: "field" | "template";
+ item?: CatalogItemDTO;
+ copy?: CatalogItemDTO;
+};
+function editorTitle(editor: CatalogEditor) {
+ if (editor.kind === "field") {
+ return editor.item ? "editField" : "newField";
+ }
+ return editor.item ? "editTemplate" : "newTemplate";
+}
+
+export function CatalogEditorDialog({
+ editor,
+ items,
+ scope,
+ csrfToken,
+ onClose,
+}: {
+ editor: CatalogEditor;
+ items: readonly CatalogItemDTO[];
+ scope: string;
+ csrfToken: string;
+ onClose: () => void;
+}) {
+ const { t } = useTranslation("resources");
+
+ return (
+ {
+ if (!open) {
+ onClose();
+ }
+ }}
+ open
+ title={t(editorTitle(editor))}
+ wide={editor.kind === "template"}
+ >
+ {editor.kind === "field" ? (
+ onClose()}
+ scope={scope}
+ />
+ ) : (
+ onClose()}
+ scope={scope}
+ />
+ )}
+
+ );
+}
diff --git a/modules/resources/src/web/catalog-field-create-dialog.tsx b/modules/resources/src/web/catalog-field-create-dialog.tsx
new file mode 100644
index 0000000..f899e56
--- /dev/null
+++ b/modules/resources/src/web/catalog-field-create-dialog.tsx
@@ -0,0 +1,31 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { useTranslation } from "react-i18next";
+
+import { CatalogFieldForm } from "./catalog-form";
+
+export function CatalogFieldCreateDialog({
+ scope,
+ csrfToken,
+ onSaved,
+ onOpenChange,
+}: {
+ scope: string;
+ csrfToken: string;
+ onSaved: (id: string) => void;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("resources");
+
+ return (
+
+ {t("quickNotice")}
+
+
+ );
+}
diff --git a/modules/resources/src/web/catalog-page.tsx b/modules/resources/src/web/catalog-page.tsx
index b4625db..a8adc29 100644
--- a/modules/resources/src/web/catalog-page.tsx
+++ b/modules/resources/src/web/catalog-page.tsx
@@ -1,6 +1,5 @@
import { Button } from "@repo/shadcn-ui/components/button";
import { EntityListHeader, EntityTable } from "@repo/shadcn-ui/components/entity-list";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { useState } from "react";
import { useTranslation } from "react-i18next";
@@ -10,15 +9,9 @@ import type { CatalogItemDTO } from "../common";
import { catalogApi, catalogKeys } from "./catalog-api";
import { CatalogCell } from "./catalog-cell";
import { CatalogDefinitionDialog } from "./catalog-definition-dialog";
+import type { CatalogEditor } from "./catalog-editor-dialog";
+import { CatalogEditorDialog } from "./catalog-editor-dialog";
import { CatalogError } from "./catalog-error";
-import { CatalogFieldForm } from "./catalog-form";
-import { CatalogTemplateForm } from "./catalog-template-form";
-
-type Editor = {
- kind: "field" | "template";
- item?: CatalogItemDTO;
- copy?: CatalogItemDTO;
-};
export function ResourceCatalogPage({ scope, csrfToken }: { scope: string; csrfToken: string }) {
const { t, i18n } = useTranslation("resources");
@@ -26,7 +19,7 @@ export function ResourceCatalogPage({ scope, csrfToken }: { scope: string; csrfT
const [tab, setTab] = useState<"field" | "template">("template");
const [search, setSearch] = useState("");
const [viewId, setViewId] = useState();
- const [editor, setEditor] = useState();
+ const [editor, setEditor] = useState();
const query = useQuery({
queryKey: catalogKeys.scope(scope),
queryFn: () => catalogApi.get(scope),
@@ -195,44 +188,14 @@ export function ResourceCatalogPage({ scope, csrfToken }: { scope: string; csrfT
/>
setViewId(undefined)} />
{editor && (
- {
- if (!open) {
- setEditor(undefined);
- }
- }}
- open
- title={t(editorTitle(editor))}
- wide={editor.kind === "template"}
- >
- {editor.kind === "field" ? (
- setEditor(undefined)}
- scope={scope}
- />
- ) : (
- setEditor(undefined)}
- scope={scope}
- />
- )}
-
+ setEditor(undefined)}
+ scope={scope}
+ />
)}
);
}
-
-function editorTitle(editor: Editor) {
- if (editor.kind === "field") {
- return editor.item ? "editField" : "newField";
- }
- return editor.item ? "editTemplate" : "newTemplate";
-}
diff --git a/modules/resources/src/web/catalog-template-create-dialog.tsx b/modules/resources/src/web/catalog-template-create-dialog.tsx
new file mode 100644
index 0000000..bb2e38f
--- /dev/null
+++ b/modules/resources/src/web/catalog-template-create-dialog.tsx
@@ -0,0 +1,41 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps } from "react";
+import { useTranslation } from "react-i18next";
+
+import { CatalogTemplateForm } from "./catalog-template-form";
+
+export function CatalogTemplateCreateDialog({
+ scope,
+ csrfToken,
+ items,
+ onSaved,
+ onOpenChange,
+}: {
+ scope: string;
+ csrfToken: string;
+ items: ComponentProps["items"];
+ onSaved: (id: string) => void;
+ onOpenChange: (open: boolean) => void;
+}) {
+ const { t } = useTranslation("resources");
+
+ return (
+
+ {t("relatedNotice")}
+
+
+ );
+}
diff --git a/modules/resources/src/web/catalog-template-form.tsx b/modules/resources/src/web/catalog-template-form.tsx
index ebed07a..5976717 100644
--- a/modules/resources/src/web/catalog-template-form.tsx
+++ b/modules/resources/src/web/catalog-template-form.tsx
@@ -1,7 +1,7 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { Button } from "@repo/shadcn-ui/components/button";
import { Checkbox } from "@repo/shadcn-ui/components/checkbox";
-import { FormActions, FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { FormActions } from "@repo/shadcn-ui/components/form-dialog";
import { Input } from "@repo/shadcn-ui/components/input";
import { Label } from "@repo/shadcn-ui/components/label";
import { SelectWithAction } from "@repo/shadcn-ui/components/select-with-action";
@@ -15,7 +15,7 @@ import type { CatalogItemDTO } from "../common";
import { ResourceDefinitionSchema } from "../common";
import { CatalogError } from "./catalog-error";
-import { CatalogFieldForm } from "./catalog-form";
+import { CatalogFieldCreateDialog } from "./catalog-field-create-dialog";
import { CatalogHelp } from "./catalog-help";
import type { CatalogSaved } from "./use-catalog-save";
import { useCatalogSave } from "./use-catalog-save";
@@ -196,27 +196,19 @@ export function CatalogTemplateForm({
{creatingField && (
- {
if (!open) {
setCreatingField(false);
}
}}
- open
- title={t("newField")}
- >
- {t("quickNotice")}
- {
- add(fieldId);
- setCreatingField(false);
- }}
- scope={scope}
- />
-
+ onSaved={(fieldId) => {
+ add(fieldId);
+ setCreatingField(false);
+ }}
+ scope={scope}
+ />
)}
>
);
diff --git a/modules/resources/src/web/resource-detail-dialog.tsx b/modules/resources/src/web/resource-detail-dialog.tsx
new file mode 100644
index 0000000..4341d89
--- /dev/null
+++ b/modules/resources/src/web/resource-detail-dialog.tsx
@@ -0,0 +1,38 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps, ReactNode } from "react";
+import { useTranslation } from "react-i18next";
+
+import { ResourceDetail } from "./resource-detail";
+
+export function ResourceDetailDialog({
+ resource,
+ references,
+ relatedContent,
+ onClose,
+}: {
+ resource: ComponentProps["resource"];
+ references: NonNullable["references"]>;
+ relatedContent:
+ | ((resource: ComponentProps["resource"]) => ReactNode)
+ | undefined;
+ onClose: () => void;
+}) {
+ const { t } = useTranslation("resources");
+
+ return (
+ {
+ if (!open) {
+ onClose();
+ }
+ }}
+ open
+ title={resource.values.name}
+ wide
+ >
+
+ {relatedContent?.(resource)}
+
+ );
+}
diff --git a/modules/resources/src/web/resource-editor-dialog.tsx b/modules/resources/src/web/resource-editor-dialog.tsx
new file mode 100644
index 0000000..18f200d
--- /dev/null
+++ b/modules/resources/src/web/resource-editor-dialog.tsx
@@ -0,0 +1,46 @@
+import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import type { ComponentProps } from "react";
+import { useTranslation } from "react-i18next";
+
+import { ResourceForm } from "./resource-form";
+
+export function ResourceEditorDialog({
+ resource,
+ companyId,
+ csrfToken,
+ items,
+ onClose,
+ onSaved,
+}: {
+ resource: ComponentProps["resource"];
+ companyId: string;
+ csrfToken: string;
+ items: ComponentProps["items"];
+ onClose: () => void;
+ onSaved: (id: string) => void;
+}) {
+ const { t } = useTranslation("resources");
+
+ return (
+ {
+ if (!open) {
+ onClose();
+ }
+ }}
+ open
+ title={t(resource ? "editResource" : "newResource")}
+ wide
+ >
+
+
+ );
+}
diff --git a/modules/resources/src/web/resource-form.tsx b/modules/resources/src/web/resource-form.tsx
index 26fe078..b765be4 100644
--- a/modules/resources/src/web/resource-form.tsx
+++ b/modules/resources/src/web/resource-form.tsx
@@ -1,7 +1,7 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { Button } from "@repo/shadcn-ui/components/button";
import { ContextHelp } from "@repo/shadcn-ui/components/context-help";
-import { FormActions, FormDialog } from "@repo/shadcn-ui/components/form-dialog";
+import { FormActions } from "@repo/shadcn-ui/components/form-dialog";
import { Input } from "@repo/shadcn-ui/components/input";
import { Label } from "@repo/shadcn-ui/components/label";
import { SelectWithAction } from "@repo/shadcn-ui/components/select-with-action";
@@ -15,7 +15,7 @@ import type { CatalogItemDTO } from "../common";
import type { ResourceDTO, ResourceInput } from "../common/inventory";
import { ResourceInputSchema } from "../common/inventory";
-import { CatalogTemplateForm } from "./catalog-template-form";
+import { CatalogTemplateCreateDialog } from "./catalog-template-create-dialog";
import { inventoryApi, inventoryKeys } from "./inventory-api";
import { InventoryFeedback } from "./inventory-feedback";
import { ResourceCharacteristicControl } from "./resource-characteristic-control";
@@ -246,31 +246,21 @@ export function ResourceForm({
{creatingTemplate && (
- {
if (!open) {
setCreatingTemplate(false);
}
}}
- open
- title={t("newTemplate")}
- wide
- >
- {t("relatedNotice")}
- {
- form.setValue("templateId", id);
- form.setValue("characteristics", {});
- setCreatingTemplate(false);
- }}
- scope={companyId}
- />
-
+ onSaved={(id) => {
+ form.setValue("templateId", id);
+ form.setValue("characteristics", {});
+ setCreatingTemplate(false);
+ }}
+ scope={companyId}
+ />
)}
>
);
diff --git a/modules/resources/src/web/resources-page.tsx b/modules/resources/src/web/resources-page.tsx
index c08c007..e56053b 100644
--- a/modules/resources/src/web/resources-page.tsx
+++ b/modules/resources/src/web/resources-page.tsx
@@ -6,7 +6,6 @@ import {
EntityStatus,
EntityTable,
} from "@repo/shadcn-ui/components/entity-list";
-import { FormDialog } from "@repo/shadcn-ui/components/form-dialog";
import { useQuery } from "@tanstack/react-query";
import type { ReactNode } from "react";
import { useState } from "react";
@@ -17,8 +16,8 @@ import type { ResourceDTO } from "../common";
import { catalogApi, catalogKeys } from "./catalog-api";
import { inventoryApi, inventoryKeys } from "./inventory-api";
import { InventoryFeedback } from "./inventory-feedback";
-import { ResourceDetail } from "./resource-detail";
-import { ResourceForm } from "./resource-form";
+import { ResourceDetailDialog } from "./resource-detail-dialog";
+import { ResourceEditorDialog } from "./resource-editor-dialog";
export function ResourcesPage({
companyId,
@@ -144,45 +143,25 @@ export function ResourcesPage({
unavailable={(!query.data && query.isError) || (!catalog.data && catalog.isError)}
/>
{editor && catalog.data && (
- {
- if (!open) {
- setEditor(undefined);
- }
+ setEditor(undefined)}
+ onSaved={(id) => {
+ setEditor(undefined);
+ setViewId(id);
}}
- open
- title={t(edited ? "editResource" : "newResource")}
- wide
- >
- {
- setEditor(undefined);
- setViewId(id);
- }}
- resource={edited}
- />
-
+ resource={edited}
+ />
)}
{viewed && (
- {
- if (!open) {
- setViewId(undefined);
- }
- }}
- open
- title={viewed.values.name}
- wide
- >
-
- {relatedContent?.(viewed)}
-
+ setViewId(undefined)}
+ references={query.data?.references ?? []}
+ relatedContent={relatedContent}
+ resource={viewed}
+ />
)}
);