
Research
Supply Chain Attack on Axios Pulls Malicious Dependency from npm
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.
@echoes-io/brand
Advanced tools
Visual identity and brand assets for **Echoes** - a multi-POV digital storytelling platform.
Visual identity and brand assets for Echoes - a multi-POV digital storytelling platform.
This repository contains the brand guidelines, color palettes, typography, and visual assets for the Echoes project.
Concept: "Echoes" represents the resonance between characters across different timelines - voices that echo through interconnected stories.
Tone: Literary yet accessible, with varying levels of intimacy depending on the narrative context.
brand/
├── colors/
│ └── index.ts # Color definitions (single source of truth)
├── typography/
│ └── index.ts # Typography definitions (fonts, metadata)
├── exports/ # Generated exports (CSS, Tailwind, Figma, HTML)
├── scripts/
│ ├── export.ts # Generate all exports
│ └── colors-check.ts # Verify WCAG AA compliance
├── logo/ # Logo and wordmark variants (TODO)
└── guidelines.md # Usage guidelines (TODO)
All colors are defined in colors/index.ts and typography in typography/index.ts as single sources of truth. All exports are generated from these files.
Neutral - GitHub-inspired neutral colors for UI elements
Anima - Sage green / Soft teal
Eros - Deep red / Bordeaux
Bloom - Peach / Coral
All palettes use a Tailwind-inspired scale (50-950):
Generated in exports/:
variables.css - CSS custom properties (colors + fonts)tailwind.config.cjs - Tailwind CSS presetfigma-tokens.json - Figma design tokensindex.html - Visual preview (deployed to GitHub Pages)CSS Variables:
.anima-card {
background: var(--echoes-anima-50);
color: var(--echoes-anima-900);
font-family: var(--echoes-font-body);
}
.chapter-title {
font-family: var(--echoes-font-heading);
}
Tailwind CSS:
<div className="bg-anima-50 text-anima-900">
Anima timeline content
</div>
Direct from GitHub:
https://raw.githubusercontent.com/echoes-io/brand/main/exports/variables.css
All combinations meet WCAG AA standards (4.5:1 minimum contrast for normal text).
Test locally: npm run colors:check
Preview: https://echoes-io.github.io/brand/
Automated testing and deployment run on every push via GitHub Actions.
npm run export - Generate all exports (colors + typography)npm run colors:check - Verify WCAG AA contrast ratiosnpm run lint - Run all linterscolors/index.ts or typography/index.tsnpm run export to build and verifymainTypography choices prioritize readability for long-form content across devices:
All fonts are available via Google Fonts and exported as CSS variables, Tailwind classes, and Figma tokens.
Mood: Organic growth, reassurance, hope, tenderness
Narrative Context:
Recommended Usage:
/* Primary actions in supportive contexts */
.support-button { background: var(--echoes-anima-500); }
/* Gentle backgrounds for positive content */
.growth-section { background: var(--echoes-anima-50); }
/* Success states and positive feedback */
.success-message { color: var(--echoes-anima-700); }
Mood: Raw emotion, passion, intensity, vulnerability
Narrative Context:
Recommended Usage:
/* Emphasis for emotional content */
.intense-moment { border-left: 4px solid var(--echoes-eros-500); }
/* Warning states and critical actions */
.critical-action { background: var(--echoes-eros-600); }
/* Highlighting passionate dialogue */
.emotional-quote { color: var(--echoes-eros-700); }
Mood: Romantic discovery, balanced growth, warm exploration
Narrative Context:
Recommended Usage:
/* Warm call-to-actions */
.discover-button { background: var(--echoes-bloom-500); }
/* Highlighting new content */
.new-chapter { background: var(--echoes-bloom-100); }
/* Warm accent elements */
.connection-indicator { color: var(--echoes-bloom-600); }
Mood: Reliable, clean, literary foundation
Usage: UI elements, text, backgrounds, structural elements
/* Main titles - Literary impact */
h1 {
font-family: var(--echoes-font-heading);
font-weight: 700;
font-size: 2.5rem;
}
/* Chapter/Section titles */
h2 {
font-family: var(--echoes-font-heading);
font-weight: 600;
font-size: 2rem;
}
/* Subsections */
h3 {
font-family: var(--echoes-font-heading);
font-weight: 400;
font-size: 1.5rem;
}
/* Long-form content */
.narrative-text {
font-family: var(--echoes-font-body);
font-size: 1rem;
line-height: 1.6;
max-width: 65ch; /* Optimal reading width */
}
/* UI text */
.interface-text {
font-family: var(--echoes-font-body);
font-size: 0.875rem;
line-height: 1.5;
}
/* Anima + Neutral - Supportive interfaces */
.support-card {
background: var(--echoes-anima-50);
color: var(--echoes-neutral-800);
border: 1px solid var(--echoes-anima-200);
}
/* Eros + Neutral - Intense moments */
.intense-card {
background: var(--echoes-eros-50);
color: var(--echoes-neutral-900);
accent-color: var(--echoes-eros-600);
}
/* Bloom + Neutral - Warm discovery */
.discovery-card {
background: var(--echoes-bloom-50);
color: var(--echoes-neutral-800);
border-left: 3px solid var(--echoes-bloom-500);
}
/* Dark backgrounds with light text */
.dark-theme {
background: var(--echoes-neutral-900);
color: var(--echoes-neutral-100);
}
/* Accent colors remain vibrant */
.dark-theme .anima-accent { color: var(--echoes-anima-400); }
.dark-theme .eros-accent { color: var(--echoes-eros-400); }
.dark-theme .bloom-accent { color: var(--echoes-bloom-400); }
All color combinations are automatically tested for WCAG AA compliance:
npm run colors:check
Contrast Requirements Met:
Additional Considerations:
# Use JetBrains Mono for all CLI output
# Color coding for different message types:
# Anima (green) - Success, growth, positive feedback
# Eros (red) - Errors, critical warnings
# Bloom (orange) - Warnings, discoveries, new features
# Neutral - Standard output, help text
Visual identity based on the concept of "echoes" - resonance, repetition, and connection across timelines.
Variants:
npm install @echoes-io/brand
import { colors, typography, metadata } from '@echoes-io/brand/colors';
// Use colors in your app
const animaColor = colors.anima[500]; // #2fc470
const headingFont = typography.heading.name; // "Crimson Text"
https://raw.githubusercontent.com/echoes-io/brand/main/exports/variables.css
Brand assets are designed to be used across:
✅ Phase 1: Complete
🚧 Phase 2: In Progress
MIT
FAQs
Visual identity and brand assets for **Echoes** - a multi-POV digital storytelling platform.
We found that @echoes-io/brand demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.

Security News
TeamPCP is partnering with ransomware group Vect to turn open source supply chain attacks on tools like Trivy and LiteLLM into large-scale ransomware operations.