npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@echoes-io/brand

v1.1.0

Published

Visual identity and brand assets for **Echoes** - a multi-POV digital storytelling platform.

Readme

Echoes Brand Identity

Visual identity and brand assets for Echoes - a multi-POV digital storytelling platform.

Table of Contents

Overview

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.

Repository Structure

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)

Color System

Source

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.

Palettes

Neutral - GitHub-inspired neutral colors for UI elements

  • Light mode: 50-300 for backgrounds, 600-950 for text
  • Dark mode: 800-950 for backgrounds, 50-300 for text

Anima - Sage green / Soft teal

  • Mood: Growth, support, tenderness
  • Use: Reassuring, hopeful, organic growth themes

Eros - Deep red / Bordeaux

  • Mood: Passion, intensity, rawness
  • Use: Mature, carnal, direct themes

Bloom - Peach / Coral

  • Mood: Blossoming, balance, discovery
  • Use: Romantic with character, warm without being saccharine

Color Scales

All palettes use a Tailwind-inspired scale (50-950):

  • 50-100: Lightest tints (backgrounds, subtle highlights)
  • 200-400: Light variants (borders, hover states, disabled)
  • 500: Base color (primary actions, brand identity)
  • 600-800: Dark variants (text on light, active states)
  • 900-950: Darkest shades (text, high contrast elements)

Export Formats

Generated in exports/:

  • variables.css - CSS custom properties (colors + fonts)
  • tailwind.config.cjs - Tailwind CSS preset
  • figma-tokens.json - Figma design tokens
  • index.html - Visual preview (deployed to GitHub Pages)

Usage Examples

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

Accessibility

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.

Development

Scripts

  • npm run export - Generate all exports (colors + typography)
  • npm run colors:check - Verify WCAG AA contrast ratios
  • npm run lint - Run all linters

Workflow

  1. Edit colors/index.ts or typography/index.ts
  2. Run npm run export to build and verify
  3. Commit and push to main
  4. GitHub Actions will:
    • Run quality checks (lint, accessibility, build)
    • Release to NPM (semantic versioning)
    • Build and commit updated exports
    • Deploy preview to GitHub Pages

Typography

Typography choices prioritize readability for long-form content across devices:

  • Headings: Crimson Text - Literary serif for distinctive, readable headings
  • Body: Inter - Optimized for extended reading on mobile and desktop
  • Monospace: JetBrains Mono - For CLI and code examples

All fonts are available via Google Fonts and exported as CSS variables, Tailwind classes, and Figma tokens.

Usage Guidelines

Color Palette Application

Anima - Growth & Support

Mood: Organic growth, reassurance, hope, tenderness
Narrative Context:

  • Healing and recovery scenes
  • Supportive relationships
  • Nature and growth metaphors
  • Hopeful, nurturing moments

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); }

Eros - Passion & Intensity

Mood: Raw emotion, passion, intensity, vulnerability
Narrative Context:

  • Intimate and romantic scenes
  • Emotional confrontations
  • Moments of vulnerability
  • Mature, complex relationships

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); }

Bloom - Discovery & Balance

Mood: Romantic discovery, balanced growth, warm exploration
Narrative Context:

  • New relationships forming
  • Character development arcs
  • Moments of realization
  • Warm, authentic connections

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); }

Neutral - Foundation & Structure

Mood: Reliable, clean, literary foundation
Usage: UI elements, text, backgrounds, structural elements

Typography Guidelines

Heading Hierarchy

/* 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;
}

Body Text Best Practices

/* 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;
}

Color Combinations

Recommended Pairings

/* 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 Mode Adaptations

/* 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); }

Do's and Don'ts

✅ Do's

  • Use Anima for supportive, growth-oriented content
  • Use Eros sparingly for high-impact emotional moments
  • Use Bloom for warm, discovery-focused interactions
  • Maintain WCAG AA contrast ratios (automatically verified)
  • Use Crimson Text for narrative headings to maintain literary feel
  • Combine colors within the same emotional context

❌ Don'ts

  • Don't mix conflicting moods (e.g., Eros + Anima in same component)
  • Don't use Eros for general UI elements (too intense)
  • Don't override font weights outside the defined range
  • Don't use colors below 400 for text (insufficient contrast)
  • Don't use more than 2 accent colors in a single interface
  • Don't use Crimson Text for body text (readability issues)

Accessibility Guidelines

All color combinations are automatically tested for WCAG AA compliance:

npm run colors:check

Contrast Requirements Met:

  • Normal text: 4.5:1 minimum
  • Large text: 3:1 minimum
  • UI components: 3:1 minimum

Additional Considerations:

  • Provide text alternatives for color-coded information
  • Test with color blindness simulators
  • Ensure interactive elements have focus indicators
  • Use semantic HTML with proper heading hierarchy

Platform-Specific Usage

Web Application

  • Use CSS variables for dynamic theming
  • Implement dark mode with neutral 800-950 backgrounds
  • Apply color psychology to enhance narrative immersion

CLI Tools

# 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

Documentation

  • Crimson Text for main headings to maintain literary brand
  • Inter for body text to ensure readability
  • Color-coded examples using appropriate palette moods

Logo & Wordmark

Visual identity based on the concept of "echoes" - resonance, repetition, and connection across timelines.

Variants:

  • Full logo
  • Icon only
  • Wordmark

Usage

NPM Package

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"

Direct from GitHub

https://raw.githubusercontent.com/echoes-io/brand/main/exports/variables.css

Brand assets are designed to be used across:

  • Web application
  • CLI tools
  • Documentation
  • Marketing materials

Development Status

Phase 1: Complete

  • [x] Color palette generation (Tailwind scale 50-950)
  • [x] Typography system (Crimson Text, Inter, JetBrains Mono)
  • [x] Unified export system (CSS vars, Tailwind config, Figma tokens, HTML preview)
  • [x] Accessibility testing (WCAG AA compliance)
  • [x] Automated CI/CD (lint, check, build, deploy)
  • [x] NPM package publishing (semantic versioning)
  • [x] Usage guidelines and best practices

🚧 Phase 2: In Progress

  • [ ] Logo design and wordmark variants
  • [ ] Examples and mockups

License

MIT