diff --git a/packages/app-builder/src/routes/_builder+/cases+/$caseId.decisions.tsx b/packages/app-builder/src/routes/_builder+/cases+/$caseId+/decisions.tsx
similarity index 93%
rename from packages/app-builder/src/routes/_builder+/cases+/$caseId.decisions.tsx
rename to packages/app-builder/src/routes/_builder+/cases+/$caseId+/decisions.tsx
index d4d0f5be8..b60263593 100644
--- a/packages/app-builder/src/routes/_builder+/cases+/$caseId.decisions.tsx
+++ b/packages/app-builder/src/routes/_builder+/cases+/$caseId+/decisions.tsx
@@ -5,7 +5,7 @@ import { Link } from '@remix-run/react';
import { type Namespace } from 'i18next';
import { Trans, useTranslation } from 'react-i18next';
-import { useCurrentCase } from './$caseId._layout';
+import { useCurrentCase } from './_layout';
export const handle = {
i18n: ['common', 'navigation', 'data', ...casesI18n] satisfies Namespace,
@@ -27,7 +27,7 @@ export default function CasePage() {
Link: (
),
}}
diff --git a/packages/app-builder/src/routes/_builder+/cases+/$caseId.files.tsx b/packages/app-builder/src/routes/_builder+/cases+/$caseId+/files.tsx
similarity index 96%
rename from packages/app-builder/src/routes/_builder+/cases+/$caseId.files.tsx
rename to packages/app-builder/src/routes/_builder+/cases+/$caseId+/files.tsx
index 5b436165c..71c9ec9ab 100644
--- a/packages/app-builder/src/routes/_builder+/cases+/$caseId.files.tsx
+++ b/packages/app-builder/src/routes/_builder+/cases+/$caseId+/files.tsx
@@ -5,7 +5,7 @@ import { UploadFile } from '@app-builder/routes/ressources+/cases+/upload-file';
import { type Namespace } from 'i18next';
import { Trans, useTranslation } from 'react-i18next';
-import { useCurrentCase } from './$caseId._layout';
+import { useCurrentCase } from './_layout';
export const handle = {
i18n: ['common', 'navigation', ...casesI18n] satisfies Namespace,
diff --git a/packages/app-builder/src/routes/_builder+/cases+/$caseId.information.tsx b/packages/app-builder/src/routes/_builder+/cases+/$caseId+/information.tsx
similarity index 97%
rename from packages/app-builder/src/routes/_builder+/cases+/$caseId.information.tsx
rename to packages/app-builder/src/routes/_builder+/cases+/$caseId+/information.tsx
index 3b9292cfc..920fdc2cd 100644
--- a/packages/app-builder/src/routes/_builder+/cases+/$caseId.information.tsx
+++ b/packages/app-builder/src/routes/_builder+/cases+/$caseId+/information.tsx
@@ -7,7 +7,7 @@ import { formatDateTime, useFormatLanguage } from '@app-builder/utils/format';
import { type Namespace } from 'i18next';
import { useTranslation } from 'react-i18next';
-import { useCurrentCase } from './$caseId._layout';
+import { useCurrentCase } from './_layout';
export const handle = {
i18n: ['common', 'navigation', ...casesI18n] satisfies Namespace,
diff --git a/packages/app-builder/src/routes/_builder+/cases+/_index.tsx b/packages/app-builder/src/routes/_builder+/cases+/_index.tsx
index 991781326..436ab7c49 100644
--- a/packages/app-builder/src/routes/_builder+/cases+/_index.tsx
+++ b/packages/app-builder/src/routes/_builder+/cases+/_index.tsx
@@ -1,4 +1,5 @@
import { Page } from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { CreateInbox } from '@app-builder/routes/ressources+/settings+/inboxes+/create';
import { isCreateInboxAvailable } from '@app-builder/services/feature-access';
import { serverServices } from '@app-builder/services/init.server';
@@ -8,7 +9,6 @@ import { json, type LoaderFunctionArgs, redirect } from '@remix-run/node';
import { useLoaderData } from '@remix-run/react';
import { useTranslation } from 'react-i18next';
import * as R from 'remeda';
-import { Icon } from 'ui-icons';
export async function loader({ request }: LoaderFunctionArgs) {
const { authService } = serverServices;
@@ -36,8 +36,7 @@ export default function Cases() {
return (
-
- {t('navigation:case_manager')}
+
diff --git a/packages/app-builder/src/routes/_builder+/cases+/_layout.tsx b/packages/app-builder/src/routes/_builder+/cases+/_layout.tsx
new file mode 100644
index 000000000..f18ff7aea
--- /dev/null
+++ b/packages/app-builder/src/routes/_builder+/cases+/_layout.tsx
@@ -0,0 +1,18 @@
+import { Outlet } from '@remix-run/react';
+import { useTranslation } from 'react-i18next';
+import { Icon } from 'ui-icons';
+
+export const BreadCrumb = () => {
+ const { t } = useTranslation(['navigation', 'cases']);
+
+ return (
+
+
+ {t('navigation:case_manager')}
+
+ );
+};
+
+export default function CasesLayout() {
+ return ;
+}
diff --git a/packages/app-builder/src/routes/_builder+/cases+/inboxes.$inboxId.tsx b/packages/app-builder/src/routes/_builder+/cases+/inboxes.$inboxId.tsx
index 1317a73b5..b0b843eb1 100644
--- a/packages/app-builder/src/routes/_builder+/cases+/inboxes.$inboxId.tsx
+++ b/packages/app-builder/src/routes/_builder+/cases+/inboxes.$inboxId.tsx
@@ -96,7 +96,7 @@ export async function loader({ request, params }: LoaderFunctionArgs) {
} catch (error) {
// if inbox is deleted or user no longer have access, the user is redirected
if (isNotFoundHttpError(error) || isForbiddenHttpError(error)) {
- return redirect(getRoute('/cases/'));
+ return redirect(getRoute('/cases'));
} else {
throw error;
}
diff --git a/packages/app-builder/src/routes/_builder+/cases+/inboxes._layout.tsx b/packages/app-builder/src/routes/_builder+/cases+/inboxes._layout.tsx
index f2593e7d1..ad91f5fb1 100644
--- a/packages/app-builder/src/routes/_builder+/cases+/inboxes._layout.tsx
+++ b/packages/app-builder/src/routes/_builder+/cases+/inboxes._layout.tsx
@@ -1,4 +1,5 @@
import { Page } from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { casesI18n } from '@app-builder/components/Cases';
import { CreateInbox } from '@app-builder/routes/ressources+/settings+/inboxes+/create';
import { isCreateInboxAvailable } from '@app-builder/services/feature-access';
@@ -30,6 +31,17 @@ export async function loader({ request }: LoaderFunctionArgs) {
});
}
+export const BreadCrumb = () => {
+ const { t } = useTranslation(['navigation', 'cases']);
+
+ return (
+
+
+ {t('navigation:case_manager')}
+
+ );
+};
+
export default function Cases() {
const { t } = useTranslation(handle.i18n);
const { inboxes, isCreateInboxAvailable } = useLoaderData();
@@ -37,8 +49,7 @@ export default function Cases() {
return (
-
- {t('navigation:case_manager')}
+
diff --git a/packages/app-builder/src/routes/_builder+/data+/_layout.tsx b/packages/app-builder/src/routes/_builder+/data+/_layout.tsx
index 1f8700331..d67ab987b 100644
--- a/packages/app-builder/src/routes/_builder+/data+/_layout.tsx
+++ b/packages/app-builder/src/routes/_builder+/data+/_layout.tsx
@@ -1,4 +1,5 @@
import { Page } from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { DataModelContextProvider } from '@app-builder/services/data/data-model';
import {
isCreateDataModelFieldAvailable,
@@ -45,6 +46,17 @@ export async function loader({ request }: LoaderFunctionArgs) {
});
}
+export const BreadCrumb = () => {
+ const { t } = useTranslation(['navigation']);
+
+ return (
+
+
+ {t('navigation:data')}
+
+ );
+};
+
export default function Data() {
const { t } = useTranslation(handle.i18n);
const { dataModel, dataModelFeatureAccess } = useLoaderData
();
@@ -52,10 +64,7 @@ export default function Data() {
return (
-
-
- {t('navigation:data')}
-
+
{
+ const { t } = useTranslation(['decisions']);
+ const { decision } = useLoaderData();
+
+ return (
+
+ {t('decisions:decision')}
+
+
+ ID {decision.id}
+
+
+
+ );
+};
+
export default function DecisionPage() {
const { decision, pivots, astRuleData } = useLoaderData();
- const { t } = useTranslation(decisionsI18n);
const pivotValues = R.pipe(
decision.pivotValues,
@@ -119,18 +135,8 @@ export default function DecisionPage() {
return (
-
-
-
-
- {t('decisions:decision')}
-
-
-
- ID {decision.id}
-
-
-
+
+
{!decision.case ? : null}
diff --git a/packages/app-builder/src/routes/_builder+/decisions+/_index.tsx b/packages/app-builder/src/routes/_builder+/decisions+/_index.tsx
index 6352fbfa2..4589a1c92 100644
--- a/packages/app-builder/src/routes/_builder+/decisions+/_index.tsx
+++ b/packages/app-builder/src/routes/_builder+/decisions+/_index.tsx
@@ -14,6 +14,7 @@ import {
useDecisionRightPanelContext,
useSelectedDecisionIds,
} from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { decisionFilterNames } from '@app-builder/components/Decisions/Filters/filters';
import { FiltersButton } from '@app-builder/components/Filters';
import { useCursorPaginatedFetcher } from '@app-builder/hooks/useCursorPaginatedFetcher';
@@ -118,7 +119,6 @@ export async function loader({ request }: LoaderFunctionArgs) {
}
export default function Decisions() {
- const { t } = useTranslation(handle.i18n);
const {
decisionsData: initialDecisionsData,
filters,
@@ -173,8 +173,7 @@ export default function Decisions() {
-
- {t('navigation:decisions')}
+
diff --git a/packages/app-builder/src/routes/_builder+/decisions+/_layout.tsx b/packages/app-builder/src/routes/_builder+/decisions+/_layout.tsx
new file mode 100644
index 000000000..a77e52236
--- /dev/null
+++ b/packages/app-builder/src/routes/_builder+/decisions+/_layout.tsx
@@ -0,0 +1,18 @@
+import { Outlet } from '@remix-run/react';
+import { useTranslation } from 'react-i18next';
+import { Icon } from 'ui-icons';
+
+export const BreadCrumb = () => {
+ const { t } = useTranslation(['navigation']);
+
+ return (
+
+
+ {t('navigation:decisions')}
+
+ );
+};
+
+export const DecisionLayout = () => {
+ return ;
+};
diff --git a/packages/app-builder/src/routes/_builder+/lists+/$listId.tsx b/packages/app-builder/src/routes/_builder+/lists+/$listId.tsx
index b25e37668..cf1f76a74 100644
--- a/packages/app-builder/src/routes/_builder+/lists+/$listId.tsx
+++ b/packages/app-builder/src/routes/_builder+/lists+/$listId.tsx
@@ -1,4 +1,5 @@
import { ErrorComponent, Page } from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { LoadingIcon } from '@app-builder/components/Spinner';
import { DeleteList } from '@app-builder/routes/ressources+/lists+/delete';
import { EditList } from '@app-builder/routes/ressources+/lists+/edit';
@@ -79,6 +80,12 @@ type CustomListValue = {
const columnHelper = createColumnHelper();
+export const BreadCrumb = () => {
+ const { customList } = useLoaderData();
+
+ return {customList.name};
+};
+
export default function Lists() {
const { customList, listFeatureAccess } = useLoaderData();
const listValues = customList.values ?? [];
@@ -137,17 +144,14 @@ export default function Lists() {
return (
-
-
-
{customList.name}
- {listFeatureAccess.isEditListAvailable ? (
-
- ) : null}
-
+
+ {listFeatureAccess.isEditListAvailable ? (
+
+ ) : null}
{customList.description ? (
diff --git a/packages/app-builder/src/routes/_builder+/lists+/_index.tsx b/packages/app-builder/src/routes/_builder+/lists+/_index.tsx
index ebaad435c..5467910df 100644
--- a/packages/app-builder/src/routes/_builder+/lists+/_index.tsx
+++ b/packages/app-builder/src/routes/_builder+/lists+/_index.tsx
@@ -1,4 +1,5 @@
import { ErrorComponent, Page } from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { type CustomList } from '@app-builder/models/custom-list';
import { CreateList } from '@app-builder/routes/ressources+/lists+/create';
import { isCreateListAvailable } from '@app-builder/services/feature-access';
@@ -17,7 +18,6 @@ import { type Namespace } from 'i18next';
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { Table, useVirtualTable } from 'ui-design-system';
-import { Icon } from 'ui-icons';
export async function loader({ request }: LoaderFunctionArgs) {
const { authService } = serverServices;
@@ -82,8 +82,7 @@ export default function ListsPage() {
return (
-
- {t('navigation:lists')}
+
diff --git a/packages/app-builder/src/routes/_builder+/lists+/_layout.tsx b/packages/app-builder/src/routes/_builder+/lists+/_layout.tsx
new file mode 100644
index 000000000..32e2d62a8
--- /dev/null
+++ b/packages/app-builder/src/routes/_builder+/lists+/_layout.tsx
@@ -0,0 +1,18 @@
+import { Outlet } from '@remix-run/react';
+import { useTranslation } from 'react-i18next';
+import { Icon } from 'ui-icons';
+
+export const BreadCrumb = () => {
+ const { t } = useTranslation(['navigation']);
+
+ return (
+
+
+ {t('navigation:lists')}
+
+ );
+};
+
+export default function ListsLayout() {
+ return ;
+}
diff --git a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/_layout.tsx b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/_layout.tsx
index a2371eb0e..021432004 100644
--- a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/_layout.tsx
+++ b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/_layout.tsx
@@ -1,4 +1,5 @@
import { ErrorComponent } from '@app-builder/components';
+import { TriggerObjectTag } from '@app-builder/components/Scenario/TriggerObjectTag';
import { adaptScenarioIterationWithType } from '@app-builder/models/scenario-iteration';
import { serverServices } from '@app-builder/services/init.server';
import { getRoute, type RouteID } from '@app-builder/utils/routes';
@@ -49,9 +50,21 @@ export function useCurrentScenario() {
return currentScenario;
}
+export const BreadCrumb = () => {
+ const currentScenario = useCurrentScenario();
+
+ return (
+
+
{currentScenario.name}
+
{currentScenario.triggerObjectType}
+
+ );
+};
+
export default function CurrentScenarioLayout() {
return ;
}
+
export function ErrorBoundary() {
const error = useRouteError();
captureRemixErrorBoundaryError(error);
diff --git a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/home.tsx b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/home.tsx
index 5505cb48a..474a573f3 100644
--- a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/home.tsx
+++ b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/home.tsx
@@ -1,4 +1,5 @@
import { CopyToClipboardButton } from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { CalloutV2 } from '@app-builder/components/Callout';
import { ExternalLink } from '@app-builder/components/ExternalLink';
import { setToastMessage } from '@app-builder/components/MarbleToaster';
@@ -10,7 +11,6 @@ import {
ScenarioIterationMenu,
} from '@app-builder/components/Scenario/Iteration/ScenarioIterationMenu';
import { TestRunNudge } from '@app-builder/components/Scenario/TestRun/TestRunNudge';
-import { TriggerObjectTag } from '@app-builder/components/Scenario/TriggerObjectTag';
import { WorkflowNudge } from '@app-builder/components/Scenario/Workflow/WorkflowNudge';
import { Spinner } from '@app-builder/components/Spinner';
import { type ScheduledExecution } from '@app-builder/models/decision';
@@ -148,36 +148,28 @@ export default function ScenarioHome() {
return (
-
-
-
-
-
{currentScenario.name}
-
- {currentScenario.triggerObjectType}
-
- {featureAccess.isEditScenarioAvailable ? (
-
-
-
-
-
- ) : null}
+
+
+ {featureAccess.isEditScenarioAvailable ? (
+
+
+
+
-
+ ) : null}
{currentScenario.description ? (
diff --git a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/i+/$iterationId+/_edit-view+/_layout.tsx b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/i+/$iterationId+/_edit-view+/_layout.tsx
index 425ca5bf3..5b668f1c3 100644
--- a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/i+/$iterationId+/_edit-view+/_layout.tsx
+++ b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/i+/$iterationId+/_edit-view+/_layout.tsx
@@ -1,11 +1,11 @@
import { navigationI18n, Page, TabLink } from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { CornerPing } from '@app-builder/components/Ping';
import {
getFormattedLive,
getFormattedVersion,
ScenarioIterationMenu,
} from '@app-builder/components/Scenario/Iteration/ScenarioIterationMenu';
-import { TriggerObjectTag } from '@app-builder/components/Scenario/TriggerObjectTag';
import { type ScenarioIterationWithType } from '@app-builder/models/scenario-iteration';
import {
useCurrentScenario,
@@ -75,6 +75,26 @@ export async function loader({ request, params }: LoaderFunctionArgs) {
});
}
+export const BreadCrumb = () => {
+ const scenarioIterations = useScenarioIterations();
+ const iterationId = useParam('iterationId');
+
+ const currentIteration = React.useMemo(() => {
+ const currentIteration = scenarioIterations.find(
+ ({ id }) => id === iterationId,
+ );
+ invariant(currentIteration, 'currentIteration is required');
+ return currentIteration;
+ }, [iterationId, scenarioIterations]);
+
+ return (
+
+ );
+};
+
export default function ScenarioEditLayout() {
const { t } = useTranslation(handle.i18n);
const currentScenario = useCurrentScenario();
@@ -107,19 +127,8 @@ export default function ScenarioEditLayout() {
-
-
{currentScenario.name}
-
- {currentScenario.triggerObjectType}
-
-
+
+
{withEditTag ? (
{t('common:edit')}
diff --git a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/scheduled-executions.tsx b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/scheduled-executions.tsx
index 378d06814..503e6fedd 100644
--- a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/scheduled-executions.tsx
+++ b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/scheduled-executions.tsx
@@ -1,21 +1,27 @@
import { ErrorComponent, Page, scenarioI18n } from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { ScheduledExecutionsList } from '@app-builder/components/Scenario/ScheduledExecutionsList';
-import { TriggerObjectTag } from '@app-builder/components/Scenario/TriggerObjectTag';
import { serverServices } from '@app-builder/services/init.server';
import { getRoute } from '@app-builder/utils/routes';
-import { fromParams, fromUUID } from '@app-builder/utils/short-uuid';
+import { fromParams } from '@app-builder/utils/short-uuid';
import { json, type LoaderFunctionArgs } from '@remix-run/node';
import { useLoaderData, useRouteError } from '@remix-run/react';
import { captureRemixErrorBoundaryError } from '@sentry/remix';
import { type Namespace } from 'i18next';
import { useTranslation } from 'react-i18next';
-import { useCurrentScenario } from './_layout';
-
export const handle = {
i18n: [...scenarioI18n] satisfies Namespace,
};
+export const BreadCrumb = () => {
+ const { t } = useTranslation(handle.i18n);
+
+ return (
+ {t('scenarios:home.execution')}
+ );
+};
+
export async function loader({ request, params }: LoaderFunctionArgs) {
const { authService } = serverServices;
const { decision } = await authService.isAuthenticated(request, {
@@ -36,19 +42,10 @@ export default function ScheduledExecutions() {
const { t } = useTranslation(handle.i18n);
const { scheduledExecutions } = useLoaderData();
- const currentScenario = useCurrentScenario();
-
return (
-
- {currentScenario.name}
-
- {currentScenario.triggerObjectType}
+
diff --git a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/test-run+/$testRunId.tsx b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/test-run+/$testRunId+/index.tsx
similarity index 84%
rename from packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/test-run+/$testRunId.tsx
rename to packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/test-run+/$testRunId+/index.tsx
index d7bb9eb94..9181f6b83 100644
--- a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/test-run+/$testRunId.tsx
+++ b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/test-run+/$testRunId+/index.tsx
@@ -1,17 +1,17 @@
-import { Page } from '@app-builder/components';
+import { CopyToClipboardButton, Page } from '@app-builder/components';
+import { BreadCrumbs } from '@app-builder/components/Breadcrumbs';
import { DistributionOfDecisionChart } from '@app-builder/components/Scenario/TestRun/Graphs/DistributionOfDecisionChart';
import { FilterTransactionByDecision } from '@app-builder/components/Scenario/TestRun/Graphs/FilterTransactionByDecision';
import { type Versions } from '@app-builder/components/Scenario/TestRun/Graphs/HamburgerGraph';
import { DistributionOfDecisionChartSkeleton } from '@app-builder/components/Scenario/TestRun/Skeletons/DistributionOfDecicionSkeleton';
import { FilterTransactionByDecisionSkeleton } from '@app-builder/components/Scenario/TestRun/Skeletons/FilterTransactionByDecicionSkeleton';
import { TestRunDetails } from '@app-builder/components/Scenario/TestRun/TestRunDetails';
-import { TriggerObjectTag } from '@app-builder/components/Scenario/TriggerObjectTag';
import { adaptScenarioIterationWithType } from '@app-builder/models/scenario-iteration';
import { CancelTestRun } from '@app-builder/routes/ressources+/scenarios+/$scenarioId+/testrun+/$testRunId+/cancel';
import { serverServices } from '@app-builder/services/init.server';
import { useOrganizationUsers } from '@app-builder/services/organization/organization-users';
import { getRoute } from '@app-builder/utils/routes';
-import { fromParams, fromUUID } from '@app-builder/utils/short-uuid';
+import { fromParams } from '@app-builder/utils/short-uuid';
import { defer, type LoaderFunctionArgs } from '@remix-run/node';
import { Await, useLoaderData } from '@remix-run/react';
import { Suspense, useMemo } from 'react';
@@ -20,7 +20,7 @@ import { mapToObj, pick } from 'remeda';
import { Button } from 'ui-design-system';
import { Icon } from 'ui-icons';
-import { useCurrentScenario, useScenarioIterations } from '../_layout';
+import { useCurrentScenario, useScenarioIterations } from '../../_layout';
export async function loader({ request, params }: LoaderFunctionArgs) {
const { authService } = serverServices;
@@ -36,6 +36,22 @@ export async function loader({ request, params }: LoaderFunctionArgs) {
return defer({ run, decisionsPromise, rulesPromise });
}
+export function BreadCrumb() {
+ const { run } = useLoaderData();
+ const { t } = useTranslation(['scenarios']);
+
+ return (
+
+
{t('scenarios:home.testrun')}
+
+
+ ID {run.id}
+
+
+
+ );
+}
+
export default function TestRun() {
const { run, decisionsPromise, rulesPromise } =
useLoaderData();
@@ -78,14 +94,8 @@ export default function TestRun() {
return (
-
-
- {currentScenario.name}
- {currentScenario.triggerObjectType}
+
+
{run.status === 'up' ? (