react-preset
TypeScript icon, indicating that this package has built-in type declarations

0.1.3 • Public • Published

React Preset

npm npm bundle size CI Gitter

Smash your props into single `preset` prop.

Edit react-preset

Quick start

npm install react-preset
  1. Create preset object and extend TypeScript definitions:
// preset.tsx
const preset = {
  // Preset group name
  button: {
    // Single preset
    save: {
      // These props should be handled by component
      children: 'Save',
      appearance: 'primary'
    },
    cancel: {
      children: 'Cancel',
      appearance: 'minimal'
    }
  }
}

declare module 'react-preset' {
  export interface DefaultPreset extends Required<typeof preset> {}
}

export default preset
  1. Wrap your App component with preset provider
// App.tsx
import {PresetContext} from 'react-preset'
import Button from './Button'
import preset from './preset'

const App = () => (
  <PresetContext.Provider value={preset}>
    <Button preset="cancel" />
    <Button preset="save" />
  </PresetContext.Provider>
);
  1. Wrap your component with withPreset
// Button.tsx
import * as React from 'react'
import {withPreset} from 'react-preset'

type Props = {
  appearance: 'minimal' | 'primary'
}

const Button: React.FC<Props> = (props) => <button {...props}/>

export default withPreset('button')(Button)

Check example directory to learn more.

API

PresetContext

Used to provide presets to components.

<PresetContext.Provider value={preset}>
  <Page />
</PresetContext.Provider>

usePreset

Hook used to get access to all presets inside component.

const MyComponent = () => {
  const presets = usePreset()
  // presets.button.save
}

withPreset(groupName)(component)

Apply preset to component.

const Card = () => <div {...props} />

export default withPreset('card')(Card)

Readme

Keywords

Package Sidebar

Install

npm i react-preset

Weekly Downloads

1

Version

0.1.3

License

MIT

Unpacked Size

17.1 kB

Total Files

15

Last publish

Collaborators

  • kasper.mikiewicz