
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
onno-react
Advanced tools
Onno propTypes
for React
yarn add onno-react
You can use onno-react
in place of onno
since it re-exports the API:
import styled from "styled-components"
import { display, padding } from "onno-react"
const Box = styled.div(display, padding)
// [{ display: "flex" }, { padding: "10px" }]
<Box display="flex" padding="10px" />
// [{ display: "grid" }, { padding: "20em" }]
<Box d="grid" p="20em" />
To add propTypes
for onno's render functions to your components:
import styled from "styled-components"
import { display, padding, propTypes } from "onno-react"
const Box = styled.div(display, padding)
Box.propTypes = propTypes(display, padding)
// Warning: Failed prop type: Invalid prop "display" supplied to "Box".
// Warning: Failed prop type: Invalid prop "padding" supplied to "Box".
<Box display={true} padding={[false]} />
// Warning: Failed prop type: Invalid prop "d" supplied to "Box".
// Warning: Failed prop type: Invalid prop "p" supplied to "Box".
<Box d={true} p={[false]} />
Render functions can be passed to propTypes
as an array or list of arguments:
import { display, padding, propTypes } from "onno-react"
// Array of render functions
const propTypes2 = propTypes([display, padding])
// List of render functions
const propTypes1 = propTypes(display, padding)
Following DRY principles, wrap your render functions in an array or use onno's compose
method:
import styled from "styled-components"
import { display, padding, compose, propTypes } from "onno-react"
const styles = [display, padding]
const boxSet = compose({
name: "box",
renderers: styles
})
// Spread the styles array
const Box1 = styled.div(...styles)
Box1.propTypes = propTypes(styles)
// Pass the composed renderer
const Box2 = styled.div(boxSet)
Box2.propTypes = propTypes(boxSet)
To add other propTypes
alongside the render function props:
import styled from "styled-components"
import { display, padding, propTypes } from "onno-react"
import { number, string } from "prop-types"
const styles = [display, padding]
const Box = styled.div(...styles)
Box.propTypes = {
...propTypes(styles),
foo: string.isRequired,
bar: number.isRequired
}
To sanitize props
before applying them to a component, you can use onno's omit
function:
import { omit, display, padding } from "onno-react"
const omitPropsKeys = omit({
propsKeys: ["foo", "bar"]
})
const omitRenderers = omit({
renderers: [display, padding]
})
const omitComposite = omit({
propsKeys: ["foo", "bar"],
renderers: [display, padding]
})
const props = {
foo: "foo",
bar: "bar",
baz: "baz",
display: "block",
d: "inline-block",
padding: 4,
p: 8
}
// {
// baz: "baz",
// display: "block",
// d: "inline-block",
// padding: 4,
// p: 8
// }
omitPropsKeys(props)
// {
// foo: "foo",
// bar: "bar",
// baz: "baz"
// }
omitRenderers(props)
// {
// baz: "baz"
// }
omitComposite(props)
FAQs
Onno propTypes for React
The npm package onno-react receives a total of 1,465 weekly downloads. As such, onno-react popularity was classified as popular.
We found that onno-react demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.