https://github.com/nsbno/spor
Spor - Vy's Design System
https://github.com/nsbno/spor
design-system react
Last synced: 3 months ago
JSON representation
Spor - Vy's Design System
- Host: GitHub
- URL: https://github.com/nsbno/spor
- Owner: nsbno
- Created: 2022-01-12T09:20:23.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2026-03-31T07:40:19.000Z (3 months ago)
- Last Synced: 2026-03-31T08:44:28.277Z (3 months ago)
- Topics: design-system, react
- Language: TypeScript
- Homepage: https://spor.vy.no
- Size: 54.6 MB
- Stars: 29
- Watchers: 20
- Forks: 8
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# π¨ 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?](#-what-is-spor)
- [Repository Structure](#-repository-structure)
- [Getting Started](#-getting-started)
- [How to Contribute](#-how-to-contribute)
- [Design System Fundamentals](#-design-system-fundamentals)
- [Accessibility](#-accessibility)
- [Releasing New Versions](#-releasing-new-versions)
- [Adding New Icons](#-adding-new-icons)
- [Additional Resources](#-additional-resources)
---
## π 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
- **`designmanual-frontend`** β A Remix app for documentation and demos (this site).
- **`design-studio`** β A Sanity Studio app for managing documentation ([spor.vy.no/studio](https://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
```sh
git clone https://github.com/nsbno/spor.git
```
### π¦ Installing Dependencies
```sh
cd spor
pnpm install
```
### β‘ Building the Project
```sh
pnpm build
```
### π» Running the Development Server
```sh
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:
- **[Creating a New React Component](https://spor.vy.no/guides/how-to-make-new-react-components)**
- **[Creating a New React Native Component](https://spor.vy.no/guides/how-to-make-new-react-native-components)**
- **[Releasing New Versions](https://spor.vy.no/guides/releasing-new-versions)**
π‘ **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** (``, `
`, ``, etc.).
- **Follow proper heading structure** (no skipping levels like `` β ``).
- **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](https://spor.vy.no/guides/releasing-new-versions)**.
---
## πΌοΈ 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](https://spor.vy.no/guides/how-to-add-new-icons)**. π¨
---
## π Additional Resources
π **[Spor Documentation](https://spor.vy.no/)** β Official documentation and guides.
π **[Figma Library](https://www.figma.com/design/Tmr2URVX2vNkyRLqKhNRQA/Vy_komponentbibliotek?node-id=0-1&p=f&t=0FRcZh8C5N0edYFm-0)** β Explore design components in Figma.
π **[GitHub Issues](https://github.com/nsbno/spor/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! π