4.2.5 • Published 3 months ago

frr-web v4.2.5

Weekly downloads
484
License
MIT
Repository
-
Last release
3 months ago

Configurable & Styleable React Component Library

Motivation

It is tiresome constantly having to import 15 different dependencies for your favorite React components (e.g Dropdowns, Inputs, Tables, etc). This library is a wrapper around all my favorite components. The main purpose of this wrapper is to support styling & translations to all these core components. It's as easy as just loading in a single style and translation object and viola, you have a multi language component library that is styled in your own custom way.

Getting started

Yarn Install

yarn add frr-web

NPM Install

npm install frr-web

Usage

import React, { useEffect } from 'react'
import { Button } from '../../components'
import { AppThemeContext, configureAppTheme } from '../../theme/theme'
import { configureLanguage, Language } from '../../theme/language'
import { TranslationsContext, Translations, LanguageContext } from '../../theme/language'

const appTheme = configureAppTheme({
  button: {
    chromeless: {},
    secondary: {},
    common: {
      backgroundColor: 'red',
      color: 'white',
    },
  },
})

const translations = {
  submit: {
    [Language.EN]: 'Submit',
    [Language.DE]: 'Einreichen',
    [Language.IT]: 'Invia',
    [Language.FR]: 'Soumettre',
  },
}

const App = () => {
  const language = Language.EN

  return (
    <TranslationsContext.Provider value={translations}>
      <LanguageContext.Provider value={language}>
        <AppThemeContext.Provider value={appTheme}>
          <Button label="submit" />
        </AppThemeContext.Provider>
      </LanguageContext.Provider>
    </TranslationsContext.Provider>
  )
}

Form Motivation

It seems like 90% of a frontend developer's life is implementing forms. Forms, forms, forms. They're boring and styling them is a pain. You usually end up with way too much code for something that seems so boilerplate. For this reason, I've been using a configurable typesafe form instead. You provide the styling & layout once via a context hook and BOOM, you can crank out tons of forms throughout your app with just a configuration array. NO STYLING. NO JSX. Of course there are limitiations, but for your standard day-to-day forms, this library should be suitable.

Form Example

import * as React from 'react'
import { Lens } from 'monocle-ts'
import { FormThemeContext, configureFormTheme } from 'frr-form/lib/theme/theme'
import { FormField, Form } from 'frr-form/lib/components/Form'
import { FormFieldType } from 'frr-form/lib/components/types'

type Person = {
  name: string
  hairColor: string
  age: number
  height: number
  description: string
  email: string
  website: string
}

const mkLens = Lens.fromPath<Person>()

export const personFormFields: Array<FormField<Person, any>> = [
  {
    type: FormFieldType.FormSection,
    title: 'Information',
    fields: [
      [
        {
          label: 'Name',
          type: FormFieldType.TextInput,
          lens: mkLens(['name']),
          required: true,
        },

        {
          label: 'Hair color',
          type: FormFieldType.TextInput,
          lens: mkLens(['hairColor']),
          required: true,
        },
      ],
      [
        {
          label: 'Age',
          type: FormFieldType.TextNumber,
          lens: mkLens(['age']),
          required: true,
        },
        {
          label: 'Height',
          type: FormFieldType.TextNumber,
          lens: mkLens(['height']),
          required: true,
        },
      ],
      [
        {
          label: 'Description',
          type: FormFieldType.TextInput,
          lens: mkLens(['description']),
          required: true,
        },
      ],
      [
        {
          label: 'Email',
          type: FormFieldType.TextInput,
          lens: mkLens(['email']),
          required: true,
        },
        {
          label: 'Website',
          type: FormFieldType.TextInput,
          lens: mkLens(['website']),
          required: true,
        },
      ],
    ],
  },
]

const personData = {
  name: 'Luke',
  hairColor: 'brown',
  age: 23,
  height: 194,
  description: 'average height',
  email: 'luke@google.com',
  website: 'www.foronered.com',
}

const FormTheme = configureFormTheme({})

export const App = () => (
  <FormThemeContext.Provider value={FormTheme}>
    <Form<Person>
      formFields={personFormFields}
      data={personData}
      onChange={(p) => {
        // add update function
      }}
    />
  </FormThemeContext.Provider>
)

Development

Build library

To build the library, run the build script.

  1. Install packages: yarn
  2. Build library with types: yarn build

Develop in watch-mode

Follow these steps to run the library build in watch mode:

  1. Start the build in watch mode (babel): yarn build:watch

Use package in linked (watch-)mode

You might want to link this library to the consuming application and keep it in watch mode to develop in parallel.

  • Create a symlink: yarn link (This you have to do only once)
  • Run build with babel: yarn build:watch

Use package in linked (watch-)mode updated!

cd YOUR_PROJECT cd node_modules/react yarn link cd ../react-dom yarn link

sometimes you need also to link react-redux

cd PACKAGE_YOU_DEBUG_LOCALLY yarn link yarn install yarn link react yarn link react-dom yarn build:watch

cd YOUR_PROJECT yarn link PACKAGE_YOU_DEBUG_LOCALLY

4.2.5

3 months ago

4.2.3

4 months ago

4.2.2

4 months ago

4.2.4

4 months ago

4.2.1

4 months ago

4.2.0

4 months ago

4.1.49

4 months ago

4.1.48

4 months ago

4.1.46

4 months ago

4.1.47

4 months ago

4.1.44

4 months ago

4.1.45

4 months ago

5.0.1

4 months ago

5.0.0

4 months ago

4.1.43

4 months ago

4.1.42

4 months ago

4.1.38

5 months ago

4.1.39

5 months ago

4.1.36

5 months ago

4.1.37

5 months ago

4.1.41

5 months ago

4.1.40

5 months ago

4.1.34

5 months ago

4.1.35

5 months ago

4.1.31

6 months ago

4.1.32

6 months ago

4.1.33

6 months ago

4.1.30

12 months ago

4.1.29

1 year ago

4.1.28

1 year ago

4.1.27

1 year ago

4.1.26

1 year ago

4.1.24

1 year ago

4.1.25

1 year ago

4.1.22

1 year ago

4.1.23

1 year ago

4.1.20

1 year ago

4.1.21

1 year ago

4.1.16

1 year ago

4.1.17

1 year ago

4.1.18

1 year ago

4.1.19

1 year ago

4.1.13

1 year ago

4.1.14

1 year ago

4.1.15

1 year ago

4.1.9

1 year ago

4.1.10

1 year ago

4.1.11

1 year ago

4.1.12

1 year ago

4.1.8

2 years ago

4.1.7

2 years ago

4.0.5

2 years ago

4.0.4

2 years ago

4.0.7

2 years ago

4.0.6

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.3

2 years ago

4.0.2

2 years ago

4.0.9

2 years ago

4.0.8

2 years ago

3.7.5

2 years ago

3.7.4

2 years ago

3.7.3

2 years ago

3.7.8

2 years ago

3.7.7

2 years ago

3.7.6

2 years ago

4.1.4

2 years ago

4.1.3

2 years ago

4.1.6

2 years ago

4.1.5

2 years ago

4.1.0

2 years ago

4.1.2

2 years ago

4.1.1

2 years ago

4.0.19

2 years ago

4.0.21

2 years ago

4.0.20

2 years ago

4.0.27

2 years ago

4.0.26

2 years ago

4.0.29

2 years ago

4.0.28

2 years ago

4.0.23

2 years ago

4.0.22

2 years ago

4.0.25

2 years ago

4.0.24

2 years ago

4.0.10

2 years ago

4.0.16

2 years ago

4.0.15

2 years ago

4.0.18

2 years ago

4.0.17

2 years ago

4.0.12

2 years ago

4.0.11

2 years ago

4.0.14

2 years ago

4.0.13

2 years ago

3.7.1

2 years ago

4.0.30

2 years ago

4.0.32

2 years ago

4.0.31

2 years ago

4.0.37

2 years ago

4.0.34

2 years ago

4.0.33

2 years ago

4.0.36

2 years ago

4.0.35

2 years ago

3.7.2

2 years ago

3.6.64

2 years ago

3.6.63

2 years ago

3.8.0

2 years ago

3.8.4

2 years ago

3.8.3

2 years ago

3.8.2

2 years ago

3.8.1

2 years ago

3.8.6

2 years ago

3.8.5

2 years ago

3.7.0

2 years ago

3.6.62

2 years ago

3.6.61

2 years ago

3.6.60

2 years ago

3.6.59

2 years ago

3.6.58

2 years ago

3.6.57

2 years ago

3.6.56

2 years ago

3.6.55

2 years ago

3.6.54

2 years ago

3.6.53

2 years ago

3.6.52

2 years ago

3.6.26

2 years ago

3.6.29

2 years ago

3.6.28

2 years ago

3.6.27

2 years ago

3.6.37

2 years ago

3.6.36

2 years ago

3.6.35

2 years ago

3.6.34

2 years ago

3.6.33

2 years ago

3.6.32

2 years ago

3.6.31

2 years ago

3.6.30

2 years ago

3.6.39

2 years ago

3.6.38

2 years ago

3.6.48

2 years ago

3.6.47

2 years ago

3.6.46

2 years ago

3.6.45

2 years ago

3.6.44

2 years ago

3.6.43

2 years ago

3.6.42

2 years ago

3.6.41

2 years ago

3.6.49

2 years ago

3.6.40

2 years ago

3.6.51

2 years ago

3.6.50

2 years ago

3.6.2

2 years ago

3.6.1

2 years ago

3.6.0

2 years ago

3.6.6

2 years ago

3.6.5

2 years ago

3.6.4

2 years ago

3.6.3

2 years ago

3.6.9

2 years ago

3.6.8

2 years ago

3.6.7

2 years ago

3.6.25

2 years ago

3.6.24

2 years ago

3.6.23

2 years ago

3.6.22

2 years ago

3.6.21

2 years ago

3.6.20

2 years ago

3.6.15

2 years ago

3.6.14

2 years ago

3.6.13

2 years ago

3.6.12

2 years ago

3.6.11

2 years ago

3.6.10

2 years ago

3.6.19

2 years ago

3.6.18

2 years ago

3.6.17

2 years ago

3.6.16

2 years ago

3.5.28

2 years ago

3.5.14

2 years ago

3.5.13

2 years ago

3.5.19

2 years ago

3.5.18

2 years ago

3.5.17

2 years ago

3.5.16

2 years ago

3.5.15

2 years ago

3.5.25

2 years ago

3.5.24

2 years ago

3.5.23

2 years ago

3.5.22

2 years ago

3.5.21

2 years ago

3.5.20

2 years ago

3.5.27

2 years ago

3.5.26

2 years ago

3.5.12

2 years ago

3.5.11

2 years ago

3.5.10

2 years ago

3.5.3

2 years ago

3.5.2

2 years ago

3.5.7

2 years ago

3.5.6

2 years ago

3.5.5

2 years ago

3.5.4

2 years ago

3.5.9

2 years ago

3.5.8

2 years ago

3.4.14

3 years ago

3.4.15

3 years ago

3.4.16

3 years ago

3.4.17

3 years ago

3.4.18

3 years ago

3.4.19

3 years ago

3.4.10

3 years ago

3.4.11

3 years ago

3.4.12

3 years ago

3.4.13

3 years ago

3.4.20

3 years ago

3.4.21

3 years ago

3.4.22

3 years ago

3.4.23

3 years ago

3.4.24

3 years ago

3.5.1

2 years ago

3.5.0

3 years ago

3.4.0

3 years ago

3.4.4

3 years ago

3.4.3

3 years ago

3.4.2

3 years ago

3.4.1

3 years ago

3.4.8

3 years ago

3.4.7

3 years ago

3.4.6

3 years ago

3.4.5

3 years ago

3.4.9

3 years ago

3.3.8

3 years ago

3.3.7

3 years ago

3.3.6

3 years ago

3.2.2

3 years ago

3.2.1

3 years ago

3.2.0

3 years ago

3.2.6

3 years ago

3.2.5

3 years ago

3.2.4

3 years ago

3.2.3

3 years ago

3.2.9

3 years ago

3.2.8

3 years ago

3.2.7

3 years ago

3.2.13

3 years ago

3.1.3

3 years ago

3.2.12

3 years ago

3.1.2

3 years ago

3.1.1

3 years ago

3.1.7

3 years ago

3.1.6

3 years ago

3.1.5

3 years ago

3.1.4

3 years ago

3.2.11

3 years ago

3.2.10

3 years ago

3.1.9

3 years ago

3.1.8

3 years ago

3.1.11

3 years ago

3.1.14

3 years ago

3.1.13

3 years ago

3.1.15

3 years ago

3.1.10

3 years ago

3.3.1

3 years ago

3.3.0

3 years ago

3.3.5

3 years ago

3.3.4

3 years ago

3.3.3

3 years ago

3.3.2

3 years ago

3.0.67

3 years ago

3.0.68

3 years ago

3.0.65

3 years ago

3.0.66

3 years ago

3.0.69

3 years ago

3.0.60

3 years ago

3.0.63

3 years ago

3.0.64

3 years ago

3.0.61

3 years ago

3.0.62

3 years ago

3.1.0

3 years ago

3.0.70

3 years ago

3.0.71

3 years ago

2.2.88

3 years ago

2.2.86

3 years ago

2.2.87

3 years ago

2.2.84

3 years ago

2.2.85

3 years ago

3.0.45

3 years ago

3.0.46

3 years ago

3.0.43

3 years ago

3.0.44

3 years ago

3.0.49

3 years ago

3.0.47

3 years ago

3.0.48

3 years ago

3.0.41

3 years ago

3.0.42

3 years ago

3.0.40

3 years ago

3.0.56

3 years ago

3.0.57

3 years ago

3.0.54

3 years ago

3.0.55

3 years ago

3.0.58

3 years ago

3.0.59

3 years ago

3.0.52

3 years ago

3.0.53

3 years ago

3.0.50

3 years ago

3.0.51

3 years ago

3.0.27

3 years ago

3.0.28

3 years ago

3.0.26

3 years ago

3.0.34

3 years ago

3.0.35

3 years ago

3.0.32

3 years ago

3.0.33

3 years ago

3.0.38

3 years ago

3.0.39

3 years ago

3.0.36

3 years ago

3.0.37

3 years ago

3.0.30

3 years ago

3.0.31

3 years ago

3.0.29

3 years ago

2.2.68

3 years ago

2.2.69

3 years ago

2.2.67

3 years ago

2.2.74

3 years ago

2.2.71

3 years ago

2.2.72

3 years ago

2.2.70

3 years ago

3.0.24

3 years ago

3.0.25

3 years ago

2.2.66

3 years ago

3.0.12

3 years ago

3.0.13

3 years ago

3.0.11

3 years ago

3.0.16

3 years ago

3.0.14

3 years ago

3.0.15

3 years ago

3.0.23

3 years ago

3.0.21

3 years ago

3.0.22

3 years ago

3.0.20

3 years ago

3.0.18

3 years ago

3.0.19

3 years ago

3.0.9

3 years ago

3.0.10

3 years ago

3.0.4

3 years ago

3.0.3

4 years ago

3.0.2

4 years ago

3.0.8

3 years ago

3.0.7

3 years ago

3.0.6

3 years ago

3.0.5

3 years ago

2.2.59

4 years ago

2.2.58

4 years ago

2.2.64

4 years ago

2.2.65

4 years ago

2.2.60

4 years ago

3.0.1

4 years ago

2.2.57

4 years ago

2.2.56

4 years ago

2.2.55

4 years ago

2.2.53

4 years ago

2.2.54

4 years ago

2.2.52

4 years ago

3.0.0

4 years ago

2.2.51

4 years ago

2.2.50

4 years ago

2.2.48

4 years ago

2.2.49

4 years ago

2.2.45

4 years ago

2.2.46

4 years ago

2.2.44

4 years ago

2.2.43

4 years ago

2.2.42

4 years ago

2.2.41

4 years ago

2.2.40

4 years ago

2.2.39

4 years ago

2.2.38

4 years ago

2.2.37

4 years ago

2.2.36

4 years ago

2.2.35

4 years ago

2.2.34

4 years ago

2.2.33

4 years ago

2.2.31

4 years ago

2.2.32

4 years ago

2.2.30

4 years ago

2.2.29

4 years ago

2.2.28

4 years ago

2.2.27

4 years ago

2.2.9

4 years ago

2.2.8

4 years ago

2.2.17

4 years ago

2.2.18

4 years ago

2.2.15

4 years ago

2.2.16

4 years ago

2.2.13

4 years ago

2.2.14

4 years ago

2.2.11

4 years ago

2.2.12

4 years ago

2.2.10

4 years ago

2.2.19

4 years ago

2.2.26

4 years ago

2.2.24

4 years ago

2.2.25

4 years ago

2.2.22

4 years ago

2.2.23

4 years ago

2.2.20

4 years ago

2.2.21

4 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.2.3

4 years ago

2.2.5

4 years ago

2.2.4

4 years ago

2.2.7

4 years ago

2.2.6

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.4

4 years ago

2.1.3

4 years ago

2.1.6

4 years ago

2.1.5

4 years ago

2.1.7

4 years ago

2.1.0

4 years ago

2.0.33

4 years ago

2.0.32

4 years ago

2.0.31

4 years ago

2.0.30

4 years ago

2.0.29

4 years ago

2.0.28

4 years ago

2.0.26

4 years ago

2.0.27

4 years ago

2.0.24

4 years ago

2.0.25

4 years ago

2.0.23

4 years ago

2.0.22

4 years ago

2.0.21

4 years ago

2.0.15

4 years ago

2.0.16

4 years ago

2.0.19

4 years ago

2.0.17

4 years ago

2.0.18

4 years ago

2.0.20

4 years ago

2.0.7

4 years ago

2.0.6

4 years ago

2.0.9

4 years ago

2.0.8

4 years ago

2.0.13

4 years ago

2.0.14

4 years ago

2.0.11

4 years ago

2.0.12

4 years ago

2.0.10

4 years ago

2.0.3

4 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.1.48

4 years ago

1.1.46

4 years ago

1.1.51

4 years ago

1.1.50

4 years ago

1.1.45

4 years ago

1.1.44

4 years ago

1.1.43

4 years ago

1.1.41

4 years ago

1.1.40

4 years ago

1.1.39

4 years ago

1.1.38

4 years ago

1.1.37

4 years ago

1.1.35

4 years ago

1.1.34

4 years ago

1.1.33

4 years ago

1.1.31

4 years ago

1.1.29

4 years ago

1.1.28

4 years ago

1.1.30

4 years ago

1.1.27

4 years ago

1.1.26

4 years ago

1.1.25

4 years ago

1.1.24

4 years ago

1.1.23

4 years ago

1.1.22

4 years ago

1.1.21

4 years ago

1.1.20

4 years ago

1.1.19

4 years ago

1.1.18

4 years ago

1.1.17

4 years ago

1.1.16

4 years ago

1.1.15

4 years ago

1.1.14

4 years ago

1.1.12

4 years ago

1.1.11

4 years ago

1.1.10

4 years ago

1.1.13

4 years ago

1.1.9

4 years ago

1.1.8

4 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.1

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.0

4 years ago

1.0.77

4 years ago

1.0.76

4 years ago

1.0.75

4 years ago

1.0.74

4 years ago

1.0.79

4 years ago

1.0.78

4 years ago

1.0.80

4 years ago

1.0.82

4 years ago

1.0.81

4 years ago

1.0.73

4 years ago

1.0.72

4 years ago

1.0.71

4 years ago

1.0.69

4 years ago

1.0.68

4 years ago

1.0.67

4 years ago

1.0.66

4 years ago

1.0.65

4 years ago

1.0.64

4 years ago

1.0.62

4 years ago

1.0.63

4 years ago

1.0.61

4 years ago

1.0.60

4 years ago

1.0.59

4 years ago

1.0.58

4 years ago

1.0.57

4 years ago

1.0.55

4 years ago

1.0.54

4 years ago

1.0.56

4 years ago

1.0.51

4 years ago

1.0.50

4 years ago

1.0.53

4 years ago

1.0.52

4 years ago

1.0.49

4 years ago

1.0.48

4 years ago

1.0.47

4 years ago

1.0.46

4 years ago

1.0.45

4 years ago

1.0.44

5 years ago

1.0.43

5 years ago

1.0.42

5 years ago

1.0.41

5 years ago

1.0.40

5 years ago

1.0.39

5 years ago

1.0.38

5 years ago

1.0.37

5 years ago

1.0.36

5 years ago

1.0.35

5 years ago

1.0.34

5 years ago

1.0.33

5 years ago

1.0.32

5 years ago

1.0.31

5 years ago

1.0.30

5 years ago

1.0.29

5 years ago

1.0.26

5 years ago

1.0.28

5 years ago

1.0.27

5 years ago

1.0.25

5 years ago

1.0.24

5 years ago

1.0.22

5 years ago

1.0.21

5 years ago

1.0.20

5 years ago

1.0.19

5 years ago

1.0.18

5 years ago

1.0.17

5 years ago

1.0.16

5 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.13

5 years ago

1.0.12

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.2

5 years ago

1.0.3

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago