The Work page renders career history as if it is being typed live into a Windows Notepad document. ADocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/digital-domain/llms.txt
Use this file to discover all available pages before exploring further.
useEffect hook drives a character-by-character reveal animation from a full text string — appending one character every 10 milliseconds — with a blinking cursor anchored at the insertion point. The result feels like watching a dot-matrix printer produce a résumé in real time. The window is non-draggable and fills the full 80vh viewport height, giving the typewriter output plenty of room to breathe.
Notepad Window
The entire page is a singleWindow component titled “CAREER.TXT - Notepad” with a FileText Lucide icon:
!static class overrides the Window component’s default positioning, keeping it in the document flow. The window fills the parent container at full width and height.
Visual appearance: Standard Win98 grey window border with a blue title bar displaying a file icon and “CAREER.TXT - Notepad”. The interior is split vertically: a thin grey menu bar at the top, and the scrollable text content below. The overall appearance is an authentic Windows Notepad clone.
Decorative Menu Bar
A row of non-functional menu items sits at the top of the window interior, styled to match Notepad’s own menu bar:Visual appearance: Each menu item is plain text in
font-comic text-sm on the bg-win-gray toolbar. Hovering any item applies a blue background (hover:bg-blue-800) and white text, mimicking an open menu highlight. None of the items trigger any action — they are purely decorative.Typewriter Animation
AuseState hook holds the currently displayed text, and a useEffect drives the reveal:
setInterval callback calls setDisplayedText on every tick, slicing fullText from index 0 to the current cursor position i, then incrementing i. At 10ms per character, the full text (approximately 730 characters) completes in roughly 7.3 seconds. The cleanup function clearInterval ensures the interval is cancelled if the component unmounts before completion.
The interval fires at 10ms — the minimum reliable interval in modern browsers. This produces a rapid, smooth typing effect rather than a slow dramatic reveal. The animation runs once on mount and does not loop.
Full Career Text Content
The complete text string is defined as a template literal constant (k in the compiled source):
| Period | Role | Company |
|---|---|---|
| 2022 – Present | Senior Full-Stack Developer | TechCorp Solutions Inc. |
| 2019 – 2022 | Frontend Engineer | StartupXYZ |
| 2017 – 2019 | Junior Web Developer | Local Agency |
Text Rendering and Blinking Cursor
The text content area useswhitespace-pre-wrap to preserve the ASCII art formatting of the text string:
Visual appearance: The revealed text renders in a monospace courier font (
font-courier) at text-sm with leading-relaxed line spacing. The black background of the <span> cursor blinks continuously via a CSS blink keyframe animation (animate-blink) — a solid 8×16px black rectangle toggling between visible and invisible. The cursor sits immediately after the last revealed character, align-middle to the text baseline.overflow-auto on the content container allows the window to scroll if the text grows taller than the visible area, though the h-[80vh] window is tall enough to contain the full career text without scrolling.
Component Dependencies
| Component | Source | Usage |
|---|---|---|
Window (p) | components/Window.js | CAREER.TXT window frame |
file-text (Lucide) | lucide-react | Window title bar icon |
useState | React 18 | displayedText state |
useEffect | React 18 | setInterval typewriter driver |
CSS animate-blink | Tailwind config | Blinking cursor keyframe |