TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/blairxu13/persona3-website/llms.txt
Use this file to discover all available pages before exploring further.
AboutMe component is a full-screen, keyboard-driven character profile page inspired by the Persona 3 status screen. It renders three animated parallelogram bars on the left — each representing a personal fact category — and an overlay reveal panel that slides in when the user presses Enter or →, displaying character art alongside structured bio content.
Props
AboutMe is a standalone route component. It takes no props and manages all navigation internally via React Router’s useNavigate hook.
Screen Layout
The screen is split into two interactive layers that exist simultaneously in the DOM: Layer 1 — Bar List (always visible) Three.sc-bar-outer rows stack on the left side of the screen. The active bar expands to 90 px height, reveals a red underlay (.sc-bar-red), and pushes a white fill section in from the right edge. Inactive bars sit at 64 px with a dark #111 background. A .sc-right-nav overlay in the top-right corner shows LB / RB navigation hints at all times.
Layer 2 — Reveal Panel (shown on Enter / →)
Pressing Enter or → sets revealed: true, which fades in a dimmed overlay, animates a white rotated panel (.sc-reveal-panel) in from the left at −20 deg starting at top: 44vh, and slides a character portrait (.sc-main-portrait-shell) in from the right with a blur effect. The panel displays the text content from REVEAL_CONTENT (upper lines and a lower caption) — it does not show info bars. Pressing ← dismisses the panel without leaving the route.
The ITEMS Array
Each entry inITEMS defines one bar row and all of its associated reveal data.
| Field | Type | Purpose |
|---|---|---|
id | string | Unique key for React rendering |
label | string | Bold heading text inside the bar |
handle | string | Secondary handle / subtitle text |
href | string | External URL for reference |
icon | string | Emoji displayed left of the label |
barIcon | image | Imported PNG/SVG asset for the icon slot |
bars | number | How many info bar rows are associated with this item |
newBars | number[] | Zero-based indices of bars that display a “NEW” badge |
counts | string[] | View / engagement count per info bar row |
links | string[] | Destination URL per info bar row |
stats | object[] | Two stat chips shown in the bar (see Stats Object below) |
ITEMS and add a matching entry to REVEAL_CONTENT. The ROLES array must also be extended so every item has a role entry.
The REVEAL_CONTENT Array
REVEAL_CONTENT is indexed in parallel with ITEMS. The entry at index i is displayed when item i is active and the reveal panel is open.
| Field | Type | Purpose |
|---|---|---|
upper | string[] | One or more lines rendered in the upper section of the reveal panel |
lower | string | A single caption line rendered below the horizontal rule |
Character & Portrait Images
Character Sprites (CHARS)
Three small character sprite images appear as decorative elements in the bar rows:
CHARS[i] image is rendered alongside the corresponding ITEMS[i] bar. Swap these files in src/assets/ to use your own sprite art.
Portrait Images (MAIN_IMAGES)
When the reveal panel opens, a full-height portrait image is shown on the right side. The active item index selects the portrait:
mainm.jpeg, mainm2.jpeg, and mainf.jpeg in src/assets/ with portrait photos or illustrations. Images are rendered inside .sc-main-portrait-shell with a skewX(-8deg) transform for the stylised Persona look.
ROLES Array
Each item has a role badge rendered inside the bar. Each entry carries the display text, the text color, a translucent background, and a border color:text, color, bg, and border to reflect the role you want displayed next to each bar’s character sprite.
Keyboard Controls
All interaction is keyboard-driven. Mouse clicks are not wired in the default implementation.| Key | Revealed = false | Revealed = true |
|---|---|---|
ArrowUp | Move selection up in ITEMS | Move selection up in ITEMS |
ArrowDown | Move selection down in ITEMS | Move selection down in ITEMS |
Enter | Open reveal panel (revealed → true) | No effect (already revealed) |
ArrowRight | Open reveal panel (revealed → true) | No effect (already revealed) |
ArrowLeft | Navigate back (navigate(-1)) | Close reveal panel (revealed → false) |
Escape or Backspace | Navigate back (navigate(-1)) | Navigate back (navigate(-1)) |
CSS Classes Reference
| Class | Description |
|---|---|
.sc-bar | Core bar shape — 45vw wide, 64px tall, #111 background, clip-path parallelogram |
.sc-bar-outer.active | Expands bar to 90px, makes .sc-bar-red (#c4001a) visible as an underlay |
.sc-bar-fill | White section inside the bar that grows from the right edge when the bar is active |
.sc-bar-red | Red parallelogram underlay exposed when the bar is active |
.sc-reveal-panel | White rotated panel at −20deg, positioned at top: 44vh, that animates in from the left via sc-reveal-bar-in |
.sc-main-portrait-shell | Full-height portrait container, skewX(-8deg), animates in via sc-portrait-in |
.sc-right-nav | Fixed top-right overlay showing LB / RB button hints at 100px font size |
Key Animations
@keyframes sc-reveal-bar-in— Panel slides in from the left with rotation, giving the impression it’s being drawn from off-screen.@keyframes sc-portrait-in— Portrait fades in from the right with a blur, matching the Persona 3 character reveal style.