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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@teliafi/fi-ds

v2.62.0

Published

The intention behind this package is for it to be the source of truth for all DS needs when in comes to FI Engagement applications. It's maintained by all product teams' developers.

Downloads

203

Readme

FI Design System

The intention behind this package is for it to be the source of truth for all DS needs when in comes to FI Engagement applications. It's maintained by all product teams' developers.

What it does:

  • Exposes PurPur components
  • Exposes modified PurPur components based on FI Engagement needs
  • Exposes custom FI Engagement components

Target compatibility

React 17

Usage

  1. Install the fi-ds package:
npm i @teliafi/fi-ds
  1. Add the imports for PurPur tokens and TeliaSans font in your root stylesheet
@import url('https://cdn.voca.teliacompany.com/fonts/TeliaSansV10/TeliaSans.css');
@import '~@purpurds/tokens/index.css'; // installed as a subdependency of @teliafi/fi-ds

Alternatively you can import PurPur tokens in your app's entrypoint

  1. Add the scale multiplier for PurPur styles at your root stylesheet
:root {
  --purpur-rescale: 1;
}

Development

pnpm is used as a package manager, you can install it by running npm i -g pnpm.

Commands:

  • Start: pnpm start
  • Storybook: pnpm run start:storybook
  • Update Purpur to latest version: pnpm run update-purpur

Architecture

  • Components: lib/components
  • Tokens: lib/tokens
  • Storybook: src/stories
  • Development environment: src/App.tsx

Code

  • Styling: Use @import "@common-styles"; at the top of the stylesheet to import variables, and mixins.
  • Styling: For custom component use @include reset; at the component's topmost element's style rule to include default styles.

Assets

  • Assets that should be moved into distribution build without transpilation (like .scss variables file) live inside public

Workflow

  1. Create a component in lib/components (you can use App.tsx for preview)
  2. Export the component in lib/index.ts
  3. Bump the version number in package.json
    • patch (0.0.x) small, non-breaking fix/adjustment
    • minor (0.x.0) non-breaking feature/fix/adjustment
    • major (x.0.0) breaking change
  4. Create a story in src/stories/(FI-DS|PurPur) (put the story under FI-DS or PurPur based on if it's a custom component or a PurPur proxy)
  5. Create a Pull Request
  6. Merge
  7. Run Publish Workflow to release a new package and Storybook version

Please refer to the troubleshooting section below for common issues and gotchas.

Branch naming convention

  • feature/my-custom-name - new feature/component
  • maintenance/my-custom-name - maintenance work like workflow, readme, configuration updates
  • refactor/my-custom-name - refactoring work, like rewriting component implementation, syntax updates
  • fix/my-custom-name - bug and other types of fixes

Pull Request should contain only a single type of work, do not mix different types of work into a single Pull Request, like introducing a new component and refactoring/fixing a bug in an existing one. Please create separate PRs for these type of cases.

Commits

Naming convention

Commit naming is based on basic Conventional Commits usage. Keep it simple, e.g.: docs: update readme workflow section, fix: add Badge default color, feat: ColorDot component, style: update Heading background color, refactor: Button syntax cleanup, test: introduce Icon tests, chore: bump package version, etc.

Merge style

Squash your commits when merging.

General guiding rules

The library is intended to have a low learning and be easy to contribute to, please follow these rules when contributing:

  • Make it simple, stick with the KISS (Keep it simple, stupid!) design principle
  • Avoid building abstractions - aim for component module to be self-contained, without needing to read a bunch of common utils in order to understand how it works
  • Avoid premature optimization - aim for code readability, optimize performance only when issues arise
  • Prioritize existing PurPur components instead of creating custom ones
  • If introducing a breaking change, inform #fi-ds-community slack channel
  • Avoid ambiguous Pull Request comments, every code comment should be met with a practical suggestion
  • Use nitpicking to a reasonable extent - convention is important but do not hold off PRs for too long only for minor nitpick reasons

Publishing

  1. Bump the version in package.json
  • pnpm version patch (0.0.x) small, non-breaking fix/adjustment
  • pnpm version minor (0.x.0) non-breaking feature/fix/adjustment
  • pnpm version major (x.0.0) breaking change
  1. Merge the version bump
  2. Run the Github Action Publish

Hosted Storybook can be found here

Troubleshooting

PurPur integrated component is missing styles

PurPur component's style export contains only the styles for the particular component, but often times, the imported component makes use of other PurPur components, so make sure that the styles those components are imported as well into the stylesheet.

See the example of the Checkbox

You can gather the necessary styles based on component's dependencies by looking at PurPur's source code, just check the imports of the component you're integrating.

Cannot find module 'react/jsx-runtime'

This is caused due to compatibility issues between React 18 which is used by PurPur and older versions of React. In order to resolve this, you'll have to update your webpack.config.js or install CRA configuration override tool like craco and describe how to resolve this package.

resolve: {
  fallback: {
    'react/jsx-runtime': 'react/jsx-runtime.js'
  }
}

Uncaught ReferenceError: React is not defined

Likely, you'll get this error together with the previous one. If you are using Babel and React 17, you might need to add "runtime": "automatic" to Babel config.

In .babelrc config file add:

{
     "presets": [
         "@babel/preset-env",
        ["@babel/preset-react", {"runtime": "automatic"}]
     ]
 }

Otherwise you can define React globally in your entrypoint:

import React from 'react';
window.React = React

To do

  • Find a system user for npm package deployments (currently configured with a personal token of [email protected])