Skip to content

nsbno/spor

Repository files navigation

🎨 Spor: Vy's Design System

Welcome to Spor, Vy's open-source design system! Spor is a shared language for designers and developers, helping us build consistent, accessible, and high-quality user experiences across all platforms.

πŸ“– Table of Contents


πŸ“Œ What is Spor?

Spor provides:

  • Reusable UI components for web and mobile
  • Design tokens for colors, typography, spacing, and more
  • Guidelines and documentation for usage and best practices
  • A collaborative space for designers and developers to contribute

Our goal is to ensure visual and functional consistency across Vy's digital products. Anyoneβ€”inside or outside Vyβ€”can contribute! πŸš€


πŸ“‚ Repository Structure

Spor follows a monorepo structure, containing multiple packages and applications.

πŸš€ Applications

  • docs – A Remix app for documentation and demos (this site).
  • studio – A Sanity Studio app for managing documentation (spor.vy.no/studio).

πŸ“¦ Key Packages

  • @vygruppen/spor-react – The React component library.
  • @vygruppen/spor-design-tokens – Design tokens (colors, typography, spacing, etc.).
  • @vygruppen/spor-icon – SVG icons.
  • @vygruppen/spor-icon-react – React components for icons.
  • @vygruppen/spor-icon-react-native – React Native components for icons.
  • @vygruppen/spor-loader – All Lottie loading animation data.

πŸ”§ Getting Started

βœ… Prerequisites

Before you begin, ensure you have:

  • Node.js installed.
  • Basic familiarity with Git for version control.

πŸ“₯ Cloning the Repository

git clone https://github.com/nsbno/spor.git

πŸ“¦ Installing Dependencies

cd spor
pnpm install

Run typegen

pnpm typegen

⚑ Building the Project

pnpm build

πŸ’» Running the Development Server

pnpm dev

πŸ‘‹ How to Contribute

Spor is built collaboratively, and contributions are welcome! Here are some ways you can help:

  • πŸ›  Develop new components, features, or bug fixes.
  • 🎨 Design new components and propose design improvements.
  • πŸ“ Enhance documentation by adding examples or proofreading.
  • πŸ” Increase test coverage by writing more tests.
  • πŸ› Report bugs or suggest improvements via GitHub issues.
  • πŸ’¬ Provide feedback on design and developer experience.
  • βœ… Review pull requests and help maintain code quality.

For detailed guides, check out:

πŸ’‘ Not sure where to start? Look for GitHub issues labeled good first issue for beginner-friendly tasks.


🎨 Design System Fundamentals

πŸ— Components

Spor provides pre-built UI components that:

  • Follow accessibility best practices
  • Include built-in states and interactivity
  • Have corresponding Figma components for designers

Browse the component library to see them in action! 🧩

🎨 Design Tokens

Design tokens define:

  • Colors (brand.primary, text.default)
  • Spacing & Layout (spacing.md, radius.lg)
  • Typography (font.heading, lineHeight.base)

Use design tokens instead of hard-coded values for consistency across products.


β™Ώ Accessibility

βœ… Web Accessibility Best Practices

  • Use semantic HTML (<button>, <h1>, <input>, etc.).
  • Follow proper heading structure (no skipping levels like <h1> β†’ <h3>).
  • Use ARIA only when necessary (aria-expanded, aria-live).
  • Ensure proper keyboard navigation (Tab, Enter, Spacebar, Arrow keys).

πŸ” Checking Zoom Accessibility

  • Test browser zoom up to 200% to ensure readability.
  • Avoid horizontal scrolling unless required.
  • Use DevTools β†’ Rendering β†’ Emulate Vision Deficiencies for testing.

πŸ“± React Native Accessibility

  • Set accessibilityRole for meaningful interaction.
  • Use accessibilityLabel for better screen reader support.
  • Ensure dynamic updates use accessibilityLiveRegion.

For more details, check our accessibility guide. 🎯


πŸ”„ Releasing New Versions

Spor follows semantic versioning (SemVer), and new versions are released using Changesets.

πŸ“¦ Steps to Release a New Version:

  1. Run npx changeset to document changes.
  2. Select affected packages and choose a version bump (major, minor, patch).
  3. Commit the changeset (this creates a file in .changeset/).
  4. Merge the pull request, triggering an automatic release.

For more details, see our release guide.


πŸ–ΌοΈ Adding New Icons

To add new icons to Spor:

  1. Get SVG assets from a designer.
  2. Follow the naming convention (icon-name-variant-size.svg).
  3. Place them in packages/spor-icon/svg/ under the correct category.
  4. Run pnpm build to generate React components.
  5. Create a changeset and submit a pull request.

For a step-by-step guide, see our icon contribution guide. 🎨


πŸ“š Additional Resources

πŸ“– Spor Documentation – Official documentation and guides.
πŸ“ Figma Library – Explore design components in Figma.
πŸ› GitHub Issues – Report bugs or find tasks to work on.
πŸ’¬ Slack (#spor channel) – Discuss and collaborate with the team.


Spor is built by everyone at Vyβ€”so jump in, contribute, and help shape our design system! πŸš€

About

Spor - Vy's Design System

Topics

Resources

Stars

Watchers

Forks

Contributors 63

Languages