A React PPM component for use with Web Audio API
npm install react-ppmreact-ppm is a performant React Component that renders an animated Peak Programme Meter (PPM) for a connected Web Audio API webaudioNode.
- 60fps PPM
- Integration time of <5 ms
- Return time of 20 dB in 1.7 s
- Follows standard IEC 60268-18 and EBU R.68
- Look and feel customisable and extendable via CSS custom properties
Checkout the live demo with the CSS customizer at my web portfolio page.
You can run this demo locally on 8080 by cloning this repository and running npm start
Checkout the Storybook at my web portfolio page.
Import it directly into your Figma project.
You can run the storybook locally on 6006 by cloning this repository and running npm run storybook
```
npm install --save react-awesome-button
`jsx
import { AwesomeButton } from "react-awesome-button";
import "react-awesome-button/dist/styles.css";
function Button() {
return
}
`
`jsx
import { AwesomeButton } from "react-awesome-button";
import AwesomeButtonStyles from "react-awesome-button/src/styles/styles.scss";
function Button() {
return (
Button
);
}
`
Renders the component with a Button tag and an onPress prop called on animation release.`
Checkout this example live on the storyboard.jsx
import { AwesomeButton } from "react-awesome-button";
import AwesomeButtonStyles from "react-awesome-button/src/styles/styles.scss";
function Button() {
return (
type="primary"
ripple
onPress={() => {
// do something
}}
>
Button
);
}
`
Render the component with an anchor tag setting the href and target attributes.
Checkout this example live on the storyboard.
`jsx
import { AwesomeButton } from "react-awesome-button";
import AwesomeButtonStyles from "react-awesome-button/src/styles/styles.scss";
function Button() {
return (
type="primary"
href="https://google.com"
target="_blank"
>
Button
);
}
`
| Attribute | Type | Default | Description |
| :-------- | :--------: | :-------: | :------------------------------------------------------------------------------------------------------- |
| type | string | primary | Render a specific button type, styled by the .scss type list |string
| size | | auto | Render a specific button size, styled by the .scss size list |node
| element | | null | Overwrites the default container element renderer, useful for using it with react-router Link component. |bool
| disabled | | false | Should render a disabled button |bool
| visible | | true | Should the button be visible |bool
| ripple | | false | Should render the animated ripple effect |function
| onPress | | null | Default click/press function |string
| href | | null | Forces the button to be rendered on an anchor container and sets the href to the specified value |string
| target | | null | When used together with href renders an anchor with a specific target attribute |
Checkout this example live on the storyboard.
`jsx
import { AwesomeButtonProgress } from 'react-awesome-button';
import AwesomeButtonStyles from 'react-awesome-button/src/styles/styles.scss'
function Button() {
return (
type="primary"
onPress={next => {
// do a sync/async task then call next()`
}}
>
Button
);
}
Being a wrapper on the AwesomeButton component, it accepts its props plus the following ones.
| Attribute | Type | Default | Description |
| :----------- | :-------: | :-------: | :---------------------------------------------------------- |
| loadingLabel | string | Wait .. | Progress button loading label text |string
| resultLabel | | Success | Progress button success label text |number
| releaseDelay | | 500 | Delay for releasing the button after the progress animation |boolean
| fakePress | | false | When set to true triggers a fake button press |
Checkout this example live on the storyboard.
`jsx
import { AwesomeButtonSocial } from 'react-awesome-button';
import AwesomeButtonStyles from 'react-awesome-button/src/styles/styles.scss'
function Button() {
return (
type="facebook"
url="https://caferati.me"
>
Button
);
}
`
Being a wrapper on the AwesomeButton component, it accepts its props plus the following ones.
| Attribute | Type | Default | Description |
| :----------- | :-------: | :-------: | :---------------------------------------------------------- |
| type | string | primary | Render a specific button type. Bundled with Facebook, Instagram, Twitter, Github, Youtube, Linkedin, Pinterest, Reddit, Messenger, Whatsapp and Google Plus (RIP) types and share methods |bool
| icon | | false | Should render the social icon relative to the button type |number
| iconHeight | | 23 | Rendered icon height |number
| icon | | 30 | Rendered icon width |string
| url | | null | Url string to be used on the sharer |string
| image | | null | Image url to be rendered on the sharer |string
| message | | null | Message string to be rendered on the share post |string
| phone | | null | Phone number to be used when using the Whatsapp sharer |string
| user | | null` | Username to be redirected to when using the Messenger sharer |
Checkout the React Native version of the Awesome Button UI Component at rcaferati/react-native-really-awesome-button

#### Rafael Caferati
- Checkout my Full-Stack Web Developer Website
- Other open source projects @ Code Laboratory
- A scope of my work @ Web Developer Portfolio
MIT. Copyright (c) 2019 Rafael Caferati.