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.
docs
β A Remix app for documentation and demos (this site).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.git
cd spor
pnpm install
pnpm typegen
pnpm build
pnpm dev
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.
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 changeset
to 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 build
to 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! π