Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/sys-core/llms.txt
Use this file to discover all available pages before exploring further.
SignalBars renders a compact five-bar signal-strength indicator styled in mint-comms green — the visual shorthand throughout sys-core for “how strong is this signal?”. Bars scale in height from left to right (20 % to 100 % of the component’s 16 px height), and active bars animate with a slow pulsing opacity loop using Framer Motion. Inactive bars are rendered at 20 % opacity as a faint background scale. The component is used wherever the site needs to communicate relative strength, confidence, or prominence — on article cards (via a signalStrength field) and alongside skill entries as a quick visual complement to the FrequencyGauge arcs.
Visual Role
Signal bars translate abstract numeric values into an immediately recognisable visual metaphor: mobile signal strength. In the context of a spacecraft comms interface, signal strength is a natural proxy for skill fluency or article significance. An article with asignalStrength of 5 is a flagship transmission; a skill at level 90+ maps to 5 bars; a beginner skill at level 30 might show only 2 bars. The mint-comms green (rgba(110, 231, 183, ...)) is shared with the RadarSweep component, reinforcing a visual grouping of “comms and scanning” instrumentation.
Active bars have a subtle box-shadow glow (shadow-[0_0_5px_rgba(110,231,183,0.5)]) and animate with a staggered pulse — each bar has a delay of bar index × 0.2 s, creating a ripple effect across the five bars.
Usage
Pass astrength value from 1 to 5. Values outside this range will still render (bars with index ≤ strength are active), but 1–5 is the intended scale.
Props
A number from
1 to 5 representing the number of active (lit) bars. Bars with index ≤ strength render in full mint-comms green with a glow and pulse animation. Bars with index > strength render at mint-comms/20 (20 % opacity) as inactive scale marks.Additional Tailwind classes appended to the outer flex container. Use for margin, alignment, or positioning adjustments. The container is
flex items-end gap-1 h-4 — classes added here extend rather than replace that base.Mapping Skill Levels to Bars
SignalBars uses a 1–5 scale, while skill entries in data/skills.js use a 0–100 level field. The standard mapping used across the Skills section is:
level range | Bars displayed | Interpretation |
|---|---|---|
| 1 – 20 | 1 | Beginner |
| 21 – 40 | 2 | Developing |
| 41 – 60 | 3 | Competent |
| 61 – 80 | 4 | Proficient |
| 81 – 100 | 5 | Expert |
| Skill | Level | Bars |
|---|---|---|
| React / Next.js | 95 | 5 |
| TypeScript | 90 | 5 |
| Tailwind CSS | 85 | 5 |
| Framer Motion | 80 | 4 |
| Node.js | 85 | 5 |
| PostgreSQL | 80 | 4 |
| Redis | 75 | 4 |
| GraphQL | 70 | 4 |
| Git / CI/CD | 90 | 5 |
| Docker | 75 | 4 |
| AWS / Vercel | 80 | 4 |
| Jest / Vitest | 85 | 5 |
| UI/UX Design | 85 | 5 |
| Tech Writing | 90 | 5 |
| Mentorship | 80 | 4 |
| Agile/Scrum | 85 | 5 |
Implementation Notes
Bar geometry
Each of the five bars is a Framer Motion<motion.div> with:
- Width:
w-1.5(6 px) withrounded-t-smtop corners. - Height: inline
style={{ height: \$%` }}` — bar 1 is 20 % tall, bar 5 is 100 % tall. - Colour: active bars use
bg-mint-comms shadow-[0_0_5px_rgba(110,231,183,0.5)]; inactive bars usebg-mint-comms/20.
flex items-end gap-1 h-4, so all bars share the same bottom baseline and shorter bars appear to grow upward from it.
Framer Motion pulse animation
Active bars animate with:delay creates a left-to-right ripple across the active bars. Inactive bars have an empty animate={{}} object, so they render statically without any Framer Motion overhead.
SignalBars depends on Framer Motion via the ../../assets/proxy.js import alias in the built dist. Ensure Framer Motion is available in the project environment before using this component outside the standard Vite build.