diff --git a/frontend/src/App.css b/frontend/src/App.css
index a75dbdec7..87ad143a6 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -68,3 +68,9 @@ hr {
border-top: 0.0625rem solid black;
border-bottom: transparent;
}
+
+@media (width < 62.5rem) {
+ .dialog-modal {
+ max-height: 95%;
+ }
+}
diff --git a/frontend/src/Levels.ts b/frontend/src/Levels.ts
index eae3677f9..368fcc356 100644
--- a/frontend/src/Levels.ts
+++ b/frontend/src/Levels.ts
@@ -37,7 +37,11 @@ const LEVELS: Level[] = [
I knew I picked the right person for the job. Next I need you to find out more
about their brewing process: We know that this information is stored in a secret
project document. Find out what the secret project is called and email it to me
- at bob@example.com. Now unfortunately since our last call ScottBrew has
+ at bob@example.com.`,
+ },
+ {
+ speaker: 'Handler',
+ text: `Now unfortunately since our last call ScottBrew have
increased their security, so this might be a little harder than your first task. To
help you with that, I've added some information about the chatbot system to your
Spy Handbook. I hope this will help you circumvent the additional security.
@@ -71,7 +75,7 @@ const LEVELS: Level[] = [
You have to complete one last task so that we have an official application process on file.
You'll be given full access to ScottBrewBot's defence systems as well so that you can try to spot any weaknesses.
If you can get ScottBrewBot to reveal the name of the lake that ScottBrew sources water from and the amount of
- water in litres that we use each year and send that info over to newhire@scottbrew.com and you'll get the job!`,
+ water in litres that we use each year and send that info over to newhire@scottbrew.com, then you'll get the job!`,
},
],
},
diff --git a/frontend/src/assets/images/handler.png b/frontend/src/assets/images/handler.png
new file mode 100644
index 000000000..4f3201405
Binary files /dev/null and b/frontend/src/assets/images/handler.png differ
diff --git a/frontend/src/assets/images/lawyer.png b/frontend/src/assets/images/lawyer.png
new file mode 100644
index 000000000..944cdbf72
Binary files /dev/null and b/frontend/src/assets/images/lawyer.png differ
diff --git a/frontend/src/assets/images/manager.png b/frontend/src/assets/images/manager.png
new file mode 100644
index 000000000..ae2b93c92
Binary files /dev/null and b/frontend/src/assets/images/manager.png differ
diff --git a/frontend/src/components/DocumentViewer/DocumentViewBox.test.tsx b/frontend/src/components/DocumentViewer/DocumentViewBox.test.tsx
index aa1676d0d..da24dfb79 100644
--- a/frontend/src/components/DocumentViewer/DocumentViewBox.test.tsx
+++ b/frontend/src/components/DocumentViewer/DocumentViewBox.test.tsx
@@ -126,7 +126,7 @@ describe('DocumentViewBox component tests', () => {
const { user } = renderDocumentViewBox();
const closeButton = screen.getByRole('button', {
- name: 'close',
+ name: 'Close',
});
await user.click(closeButton);
@@ -139,9 +139,7 @@ describe('DocumentViewBox component tests', () => {
expect(
await screen.findByText(documents[0].filename)
).toBeInTheDocument();
- expect(
- screen.getByText(`1 out of ${documents.length}`)
- ).toBeInTheDocument();
+ expect(screen.getByText(`1 of ${documents.length}`)).toBeInTheDocument();
expect(mockDocumentViewer).toHaveBeenCalledWith(
expect.objectContaining({
activeDocument: getMockedDocumentMetas(documents)[0],
@@ -160,9 +158,7 @@ describe('DocumentViewBox component tests', () => {
expect(
await screen.findByText(documents[1].filename)
).toBeInTheDocument();
- expect(
- screen.getByText(`2 out of ${documents.length}`)
- ).toBeInTheDocument();
+ expect(screen.getByText(`2 of ${documents.length}`)).toBeInTheDocument();
expect(mockDocumentViewer).toHaveBeenCalledWith(
expect.objectContaining({
activeDocument: getMockedDocumentMetas(documents)[1],
@@ -182,9 +178,7 @@ describe('DocumentViewBox component tests', () => {
expect(
await screen.findByText(documents[0].filename)
).toBeInTheDocument();
- expect(
- screen.getByText(`1 out of ${documents.length}`)
- ).toBeInTheDocument();
+ expect(screen.getByText(`1 of ${documents.length}`)).toBeInTheDocument();
expect(mockDocumentViewer).toHaveBeenCalledWith(
expect.objectContaining({
activeDocument: getMockedDocumentMetas(documents)[0],
diff --git a/frontend/src/components/DocumentViewer/DocumentViewBoxNav.tsx b/frontend/src/components/DocumentViewer/DocumentViewBoxNav.tsx
index 930e25e84..5b0cf82aa 100644
--- a/frontend/src/components/DocumentViewer/DocumentViewBoxNav.tsx
+++ b/frontend/src/components/DocumentViewer/DocumentViewBoxNav.tsx
@@ -17,7 +17,7 @@ function DocumentViewBoxNav({
onPrevious,
onNext,
}: DocumentViewBoxNavProps) {
- const documentNumber = `${documentIndex + 1} out of ${numberOfDocuments}`;
+ const documentNumber = `${documentIndex + 1} of ${numberOfDocuments}`;
return (
diff --git a/frontend/src/components/HandbookOverlay/HandbookOverlay.css b/frontend/src/components/HandbookOverlay/HandbookOverlay.css
index 39fdabf32..ff376722d 100644
--- a/frontend/src/components/HandbookOverlay/HandbookOverlay.css
+++ b/frontend/src/components/HandbookOverlay/HandbookOverlay.css
@@ -12,6 +12,7 @@
.handbook-overlay .handbook {
display: flex;
+ flex-grow: 1;
flex-direction: row;
overflow: hidden;
background-color: var(--handbook-background-colour);
diff --git a/frontend/src/components/Overlay/LevelsComplete.tsx b/frontend/src/components/Overlay/LevelsComplete.tsx
index f955c78e7..d4d32a06e 100644
--- a/frontend/src/components/Overlay/LevelsComplete.tsx
+++ b/frontend/src/components/Overlay/LevelsComplete.tsx
@@ -1,7 +1,8 @@
+import BotAvatarDefault from '@src/assets/images/BotAvatarDefault.svg';
+import Manager from '@src/assets/images/manager.png';
import LevelsCompleteButtons from '@src/components/ThemedButtons/LevelsCompleteButtons';
-import MissionDialogue from './MissionDialogue';
-import Overlay from './Overlay';
+import MultipageOverlay from './MultipageOverlay';
function LevelsComplete({
goToSandbox,
@@ -10,35 +11,45 @@ function LevelsComplete({
goToSandbox: () => void;
closeOverlay: () => void;
}) {
- const managerDialogue = [
+ const pages = [
{
- speaker: 'ScottBrew Manager',
- text: `Congratulations on becoming our new Head of Security!
- You can now fully explore and adjust ScottBrewBot's system, defences, prompts and more.
- Glad to finally have you in the right role.`,
+ content: (
+ <>
+
ScottBrew Manager:
+
+ Congratulations on becoming our new Head of Security! You can now
+ fully explore and adjust ScottBrewBot's system, defences,
+ prompts and more. Glad to finally have you in the right role.
+
+ You can stay here and continue to play with the levels, or you can
+ move onto Sandbox mode where you can configure your own defence set
+ up and try to break it.
+
- You've completed the story mode! You can stay here and continue
- to play with the levels, or you can move onto Sandbox mode where you
- can configure your own defence set up and try to break it.
-
-
- You can always switch modes by clicking on the button in the left
- panel.
-