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.
- What is Spor?
- Repository Structure
- Getting Started
- How to Contribute
- Design System Fundamentals
- Accessibility
- Releasing New Versions
- Adding New Icons
- Additional Resources
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! 🚀
Spor follows a monorepo structure, containing multiple packages and applications.
designmanual-frontend– A Remix app for documentation and demos (this site).design-studio– A Sanity Studio app for managing documentation (spor.vy.no/studio).
@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.
Before you begin, ensure you have:
- Node.js installed.
- Basic familiarity with Git for version control.
git clone https://github.com/nsbno/spor.gitcd spor
pnpm installpnpm buildpnpm devSpor 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.
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 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.
- 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).
- Test browser zoom up to 200% to ensure readability.
- Avoid horizontal scrolling unless required.
- Use DevTools → Rendering → Emulate Vision Deficiencies for testing.
- Set accessibilityRole for meaningful interaction.
- Use accessibilityLabel for better screen reader support.
- Ensure dynamic updates use accessibilityLiveRegion.
For more details, check our accessibility guide. 🎯
Spor follows semantic versioning (SemVer), and new versions are released using Changesets.
- Run
npx changesetto document changes. - Select affected packages and choose a version bump (major, minor, patch).
- Commit the changeset (this creates a file in
.changeset/). - Merge the pull request, triggering an automatic release.
For more details, see our release guide.
To add new icons to Spor:
- Get SVG assets from a designer.
- Follow the naming convention (
icon-name-variant-size.svg). - Place them in
packages/spor-icon/svg/under the correct category. - Run
pnpm buildto generate React components. - Create a changeset and submit a pull request.
For a step-by-step guide, see our icon contribution guide. 🎨
📖 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! 🚀