TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/sys-witch/llms.txt
Use this file to discover all available pages before exploring further.
ProjectPanel and RuneTile components are the primary content-display units for the Projects and Skills pages respectively. Both pull from their corresponding data files and translate raw configuration objects into richly styled, animated cards that match the sys.witch cyber-occult aesthetic — neon glows, monospace type, and Framer Motion entrance animations throughout.
ProjectPanel
ProjectPanel renders the detail view for a single project. It sits in the right-hand column of the Projects page alongside the SummoningCircle selector grid. When a project is selected, Framer Motion animates the panel into view with a slide-and-fade transition; when no project is selected a placeholder projects sigil icon prompts the user to make a choice.
The panel receives a single project prop — an object sourced directly from data/projects.js.
Props
| Prop | Type | Required | Description |
|---|---|---|---|
project | object | Yes | A project entry from data/projects.js, or null to show the empty state |
Rendered Sections
- Hero image — full-width,
object-cover, rendered withfilter grayscale contrast-125and a magenta colour-overlay blended on top. - Title —
font-display(Tektur), neon-magenta with text-glow. - Tags — each tag from the
tagsarray is rendered as a neon-magenta-bordered mono badge. - Description —
font-sansbody copy. - Binding Notes — optional footer block rendered only when
bindingNotesis present; displayed inside a neon-purple bordered annotation box with arune-3sigil icon. - Action links — rendered as
GlyphButtoninstances:demoUrl→ “Summon Demo” (solid magenta)sourceUrl→ “Reveal Source” (outline purple)readmeUrl→ “Inspect Readme” (outline cyan)
All three action link fields (
demoUrl, sourceUrl, readmeUrl) are optional. Buttons only render when their corresponding URL is present in the project data.Data Shape
Each project object indata/projects.js follows this shape:
JSX Usage
SummoningCircle
SummoningCircle is the circular project-selector button that appears in the left-hand column of the Projects page. Each circle represents one project and, when active, triggers the corresponding ProjectPanel to animate in.
Props
| Prop | Type | Required | Description |
|---|---|---|---|
project | object | Yes | A project entry from data/projects.js |
onClick | function | Yes | Callback fired when the circle is clicked |
isActive | boolean | Yes | Whether this circle is the currently selected item |
Behaviour
- Two concentric dashed rings (outer magenta, inner purple dotted) rotate continuously via Framer Motion when
isActiveis true. - The inner content area shows a faint background image of the project, a
projectssigil icon, and the project title infont-display. - Four cardinal-point rune icons orbit the ring edge at 0°, 90°, 180°, and 270°.
- When active the title glows neon-magenta; when hovered it transitions from
text-text-primaryto neon-magenta.
RuneTile
RuneTile renders a single skill card on the Skills page. Skills are sourced from data/skills.js and mapped to a grid of tiles, each receiving its skill object and a numeric index for staggered entrance animation delays.
Props
| Prop | Type | Required | Description |
|---|---|---|---|
skill | object | Yes | A skill entry from data/skills.js |
index | number | Yes | Position in the rendered list; drives animation delay (index * 0.05s) |
Mastery Colour Map
Themastery field controls the colour of the badge label in the top-right corner of each tile:
| Mastery value | Colour token |
|---|---|
"Initiate" | text-neon-cyan |
"Adept" | text-neon-purple |
"Master" | text-neon-lime |
neon-lime/20 to neon-lime/60 and a lime glow shadow appears. The sigil icon in the top-left gains a drop-shadow-glow-lime effect.