Code Monkey home page Code Monkey logo

npm-library's Introduction

NPM and React Component Library

NPM

Collection of React components written with Typescript and individually installable with npm.

Documentation

https://unleashit.github.io/npm-library

Demo

https://npm-library-demo.vercel.app

FORMS

Not just dumb components, these offer out of the box functionality to handle both client and server validations, custom fields, success messages and more. Aside from React, required peer dependencies are react-hook-form, @hookform/resolvers and zod.

Authentication Suite

  • Login - customizable, responsive login component with server support that validates against a default or custom Zod schema.
  • Sign-up/registration - customizable, responsive signup component with server support that validates against a default or custom Zod schema.
  • Forgot password - customizable, responsive set of forgot password components with server support that validate against a default or custom Zod schema.

Simple custom forms builder

  • Quick Form - form generator that can quickly produce simple React forms with validation and server support. By default, it is a Contact form.

UI WIDGETS

  • Navigation - customizable, responsive navigation component. Supports auth states and comes with an optional sidecar component for login/logout/signup.
  • Pagination - sexy and responsive pagination component for React.
  • Modal - customizable, responsive, portal free modal component. Optional animation state support when adding/removing from DOM.

OTHER

  • Recursive Data Lister - component that recursively pretty prints nested lists or objects with various options for html markup and styling.
  • Async Handler - HOC that takes an async function and returns views for loading, no-data and error states. It accepts an optional method to check a cache before the async function is run. Note: this package has been deprecated and will be archived in the near future. React Query is a more feature rich implementation based on React hooks.
  • demo app is available for previewing the components that can be run in parallel with a demo backend to demonstrate server functionality.

Common Features

  • Customizable with uniform APIs
  • Default CSS with CSS module support that can override internal classes.
  • cssVars prop can override any CSS vars without touching CSS.
  • Light/Dark Modes.
  • Forms support custom fields
  • Common package greatly reduces individual package sizes.

How to Use

  • Install the individual components via npm. See each component.
  • To develop (also runs a component demo in the background): pnpm dev

npm-library's People

Contributors

unleashit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

npm-library's Issues

Switch from Webpack to Babel or just Typescript?

Consider moving from webpack to compiling with typescript (and babel?).

Helpful link: https://blog.newrelic.com/engineering/best-practices-shared-ui-libraries/

Reasons:

  • no bundle, compile one-to-one
  • consumer can receive minor/patch updates of deps directly
  • peer deps not listed in webpack externals can bloat webpack bundles
  • tree shaking: offer both commonjs and es6 module options
    • babel may be needed for this (not sure if typescript can do it alone)
    • .babelrc can be configured for the two environments (see below)
    • main property with path to es6 added to package.json

Issues:

  • if not using Webpack, will need an alternate build system (Gulp?) for sass, images/assets, svgr, etc.
  • imports of scss/assets will need to be removed from code. No more CSS Modules

Sample .babelrc for dual module types:

{
"env": {
  "commonjs": {
     "plugins": [
       "transform-runtime",
       ["transform-react-remove-prop-types", { "mode": "wrap" }]
     ],
     "presets": [ "env", "react" ]
 },
 "esmodules": {
    "plugins": [
      "transform-runtime",
      ["transform-react-remove-prop-types", { "mode": "wrap" }]
    ],
    "presets": [
      ["env", { modules: false }],
      "react",
    ]
  }
 }
}

$ BABEL_ENV=commonjs babel src/ --out-dir build/commonjs
$ BABEL_ENV=esmodules babel src/ --out-dir build/es

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.