The Skills page abandons the conventional progress-bar or tag-cloud approach in favour of an interactive constellation map. Every skill is a glowing star dot positioned inside a glass-morphism panel; three animated SVG path lines connect related skills the way constellation lines connect stars in a star chart. Hovering any dot reveals the skill name and its magnitude — a scaled score that reflects proficiency — making capability immediately readable at a glance without a single percentage label.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/cosmic-developer/llms.txt
Use this file to discover all available pages before exploring further.
Visual Overview
The entire skills display lives inside a single full-widthglass-panel div. Three layers render inside it, back to front:
| Layer | Element | Purpose |
|---|---|---|
| Constellation lines | <svg> with three <path> strokes | Connect related skills with animated dim lines |
| Star dots | Framer Motion <motion.div> elements | Represent individual skills; size scales with magnitude |
| Hover labels | <motion.div> tooltips | Appear below the hovered dot with name + magnitude score |
Skills Data
All skill positions and scores are defined in theht array in the ft component:
Skill Properties Reference
| Property | Type | Description |
|---|---|---|
name | string | Displayed in the hover tooltip |
x | number (%) | Horizontal position as a percentage of the panel width |
y | number (%) | Vertical position as a percentage of the panel height |
magnitude | number (0–1) | Proficiency score; drives dot scale and tooltip display |
category | string | Groups skills by color; one of frontend, backend, design, creative |
Skills by Category
| Category | Skills | Accent Color |
|---|---|---|
frontend | React, TypeScript, Tailwind, Framer Motion | aurora-teal |
backend | Node.js, PostgreSQL | aurora-magenta |
design | Figma, UI/UX | aurora-violet |
creative | WebGL | aurora-green |
Dot Size Formula
Each skill dot is a<div> with base classes w-4 h-4 (16 px square, border-radius: 50%). Its rendered size is further scaled by an inline CSS transform:
magnitude * 1.5 scale multiplier means a skill at 0.9 renders at 1.35× the base size, while WebGL at 0.5 renders at 0.75×. On hover the dot switches from w-4 h-4 to w-6 h-6 and changes color to bg-aurora-green for a clear active state.
Constellation Line Paths
Three SVG<path> elements are rendered in an <svg> positioned to fill the panel. All paths use stroke="#7af0a8", strokeWidth="1", and fill="none", and each animates its pathLength from 0 to 1 on mount using Framer Motion:
opacity-20) so the dots remain the primary visual element.
Hover Interaction
Each skill dot is wrapped in a<motion.div> with onHoverStart / onHoverEnd handlers that set the hoveredSkill state. When a skill is hovered:
- The dot switches from
w-4 h-4tow-6 h-6and changes tobg-aurora-green. - A tooltip
<motion.div>fades in (opacity: 0 → 1) positioned below the dot. - The tooltip shows the skill name and the magnitude formatted as
Mag: (value * 10).toFixed(1)(so0.9displays asMag: 9.0).
TeletypeText Configuration
Customization
- Add a skill — Append a new object to the
skillsarray. Choosex/yvalues (percentages) that place it near related skills without overlapping existing dots, setmagnitude(0–1), and assign acategory. - Remove a skill — Delete the entry from
skills. Also update any SVG<path>dattributes that connected to that skill’s position to avoid orphaned line segments. - Change skill positions — Update
xandyvalues to rearrange the constellation. Since values are percentages, the layout adapts to any panel size automatically. - Adjust magnitude scores — Update the
magnitudevalue for any skill. Dot size and tooltip readout update automatically. - Add a new category — Add a new
categorystring to a skill and extend the category-to-color lookup in the component with a matching Tailwind color token. - Edit constellation lines — Update the
dattribute on one of the three<path>elements to change which skill coordinates are connected. Use thex%/y%values from theskillsarray as your coordinate source. - Change dot scale factor — To make all dots larger across the board, increase the
1.5multiplier inskill.magnitude * 1.5. To create a wider visual spread between high- and low-proficiency skills, increase it further (e.g.,2.5).
All coordinates are expressed as percentages of the glass panel’s bounding box, so the constellation map is fully responsive — it reflows correctly when the panel resizes between breakpoints. Avoid using fixed-pixel
x/y values if you extend this component, as they would break the responsive layout.