notion-components v0.0.4
React Component Library for the minimalist
Prerequisites
- node >=10
Install
npm install notion-componentsWhen importing a component make sure to import the css file too. Like this
import 'notion-components/dist/index.css'
Simple TextBox Component
Renders an Invisible TextBox. In the above gif, There are two TextBox components. One is the heading, beside the emoji. Another one is the description, with a Lot of Text.
The Component itself is customizable with your css, So you have to set things like, font-size and font-weight to layout the TextBox accordingly.
App.js :
import React, { useState } from 'react'
import { TextBox } from 'notion-components'
import 'notion-components/dist/index.css'
import './App.css'
const App = () => {
const [text, setText] = useState('Meeting Notes')
const onChangeHandler = (value) => {
setText(value)
}
return (
<TextBox
onChangeHandler={onChangeHandler}
placeholder='Untitled'
initialValue={text}
customClassName="textbox"
/>
);
}
export default AppApp.css :
.textbox{
font-size: 4rem;
font-weight: 700;
}Simple Button props
| Attribute | Type | Default | Description |
|---|---|---|---|
| placeholder | string | empty string | Renders when the TextBox is empty |
| disabled | bool | false | Should render a disabled TextBox, if set to true |
| className | string | null | Pass your css className here. Works with css modules too. |
| onChangeHandler | function | null | A function that gets value inside TextBox as an argument at every keypress |
| placeholderColor | string | css color | '#e1e1e0' | Css color that sets the placeholder color |
| initialValue | string | null | The value inside the TextBox before the initial render |
Simple Button rendered with a Dropdown
Renders a Button with a dropdown. We have to pass an array of options with two properties, value and function like in the example below.
import React from 'react'
import { Button } from 'notion-components'
import 'notion-components/dist/index.css'
const App = () => {
const first = () => {
console.log('1st option was clicked')
}
const second = () => {
console.log('2nd option was clicked')
}
const third = () => {
console.log('3rd option was clicked')
}
const onPress = () => {
console.log('Did you just click me?!')
}
const options = [
{
value: 'Started from the bottom',
function: first
},
{
value: 'Sometimes its the journey',
function: second
},
{
value: 'Trust the process',
function: third
}
]
return (
<Button top='100%' left='30px' options={options} onClick={() => onPress()}>
New
</Button>
);
}
export default AppSimple Button rendered without a Dropdown

Renders a Button without a dropdown. If the option prop's length is found to be 0 or if its value is null, then the deopdown will not render at all.
import React from 'react'
import { Button } from 'notion-components'
import 'notion-components/dist/index.css'
const App = () => {
const onPress = () => {
console.log('Did you just click me?!')
}
return (
<Button onClick={() => onPress()}>
New
</Button>
);
}
export default AppSimple Button props
| Attribute | Type | Default | Description |
|---|---|---|---|
| onClick | function | null | Default click/press function |
| disabled | bool | false | Should render a disabled button |
| options | array | null | An array of objects with properties .If empty array is passed, Dropdown button will not render |
| top | string | "80%" | Controls the top css property for the Dropdown |
| left | string | "0px" | Controls the left css property for the Dropdown |
| width | string | null | Controls the width css property for the Dropdown |
Author
š¤ tanvesh01
Website: tanvesh.vercel.app
Twitter: @Sarve___tanvesh
Github: @tanvesh01
LinkedIn: @tanvesh01
Show your support
Please Give a āļø if this project helped you! It will motivate me to keep working on this!
License
MIT. Copyright (c) 2021 Tanvesh Sarve.

