Documentation 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.
GlowFrame and GlyphButton are the two foundational building blocks that give Sys.Witch V2 its consistent cyber-occult feel across every page. GlowFrame supplies the card surface — a semi-transparent elevated panel with hairline neon borders and decorative corner brackets that flare brighter on hover. GlyphButton is the primary interactive control, combining uppercase display typography, an optional inline Sigil icon, three visual variants, and a scan-line shimmer animation that plays on hover. Both components accept a color prop that propagates the chosen neon accent through borders, shadows, and focus rings without any extra CSS.
GlowFrame
GlowFrame wraps any content in a <div> (or, when animate is true, a Framer Motion motion.div) styled as a card panel. The component applies a semi-transparent bg-surface-elevated/50 background (#12101c at 50 % opacity) with backdrop-blur-sm frosted glass, and a 1-pixel border whose color starts at {color}/30 opacity and brightens to {color}/80 on hover. Four corner-bracket pseudo-elements — built from absolute-positioned <div> nodes with border-t border-l, border-t border-r, etc. — reinforce the UI frame aesthetic.
The animate variant is powered by Framer Motion’s whileInView API: the card fades and slides up (opacity: 0, y: 20 → opacity: 1, y: 0) with a 0.5-second ease, triggering once as the element enters the viewport (viewport: { once: true }).
Props
| Prop | Type | Default | Description |
|---|---|---|---|
color | "purple" | "cyan" | "magenta" | "lime" | "purple" | Neon accent applied to border, hover border, and hover box-shadow. |
animate | boolean | false | When true, wraps with Framer Motion and plays a scroll-triggered entrance animation. |
className | string | "" | Additional classes merged onto the outermost element. |
children | ReactNode | — | Content rendered inside the panel. |
Hover Glow Classes
Each color maps to three Tailwind utilities applied at different states:| Color | Resting border | Hover border | Hover box-shadow |
|---|---|---|---|
purple | border-neon-purple/30 | hover:border-neon-purple/80 | hover:shadow-glow-purple |
cyan | border-neon-cyan/30 | hover:border-neon-cyan/80 | hover:shadow-glow-cyan |
magenta | border-neon-magenta/30 | hover:border-neon-magenta/80 | hover:shadow-glow-magenta |
lime | border-neon-lime/30 | hover:border-neon-lime/80 | hover:shadow-glow-lime |
shadow-glow-* utilities are defined in main.css as double-layered radial box-shadows using the matching CSS variable — for example, --glow-purple: 0 0 10px rgba(176, 38, 255, 0.5), 0 0 20px rgba(176, 38, 255, 0.3).
Usage
The default internal padding is
p-6 (1.5 rem). Use the className prop to override it — for example, className="p-4" for a tighter card or className="p-8" for a spacious one.GlyphButton
GlyphButton is a <button> element styled with the Tektur display typeface (font-display), uppercase text, and tracking-widest letter-spacing. It supports three visual variants (outline, solid, ghost) across all four neon colors. An optional sigilId prop injects a Sigil icon to the left of the label text. A <span> scan-line overlay (bg-gradient-to-b from-transparent via-white/5 to-transparent) animates upward on hover via the custom scan keyframe animation (group-hover:animate-[scan_2s_ease-in-out_infinite]), giving buttons a holographic shimmer.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
color | "purple" | "cyan" | "magenta" | "lime" | "purple" | Neon accent applied to border, text, hover shadow, and focus ring. |
variant | "outline" | "solid" | "ghost" | "outline" | Visual treatment of the button surface. |
sigilId | string | — | Optional sigil registry key. When provided, a Sigil icon is rendered at size={18} before the label. |
fullWidth | boolean | false | Adds w-full to make the button span its container. |
className | string | "" | Additional classes merged onto the button. |
children | ReactNode | — | Button label text. |
...rest | ButtonHTMLAttributes | — | All standard button attributes (e.g., onClick, type, disabled) are spread onto the underlying <button>. |
Variant Styles
Each variant produces a distinct visual weight. Thesolid variant fills the button with a semi-transparent neon background at rest and floods it with the full neon color on hover, switching the text to var(--bg-base) (near-black) for contrast. outline keeps the background transparent and only lights up the border and glow on hover. ghost removes the border entirely and shows only the colored text, with a faint neon background wash on hover.
Accessibility
EveryGlyphButton includes focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-base in its base class string. The focus:ring-* color is set per-variant to match the active neon accent (e.g., focus:ring-neon-cyan for color="cyan"), producing a clearly visible 2-pixel focus ring that matches the theme palette. The ring-offset-base token offsets the ring against the dark var(--bg-base) background.
Using GlowFrame and GlyphButton Together
A typical card-with-action pattern in Sys.Witch V2 pairs aGlowFrame panel with one or more GlyphButton controls at its footer: