mirror of
https://github.com/Steffo99/bluelib.git
synced 2024-12-22 19:44:21 +00:00
✨ Add Heading
component
This commit is contained in:
parent
8b7c57aae6
commit
4cb5cd803e
2 changed files with 79 additions and 0 deletions
50
src/components/common/Heading.stories.jsx
Normal file
50
src/components/common/Heading.stories.jsx
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
import * as React from "react"
|
||||||
|
import * as ReactDOM from "react-dom"
|
||||||
|
import * as Decorators from "../../utils/Decorators"
|
||||||
|
import { Heading as HeadingComponent } from "./Heading"
|
||||||
|
|
||||||
|
|
||||||
|
export default {
|
||||||
|
component: HeadingComponent,
|
||||||
|
title: "Common/Heading",
|
||||||
|
decorators: [Decorators.Bluelib],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const HeadingTemplate = props => (
|
||||||
|
<HeadingComponent {...props}>
|
||||||
|
The United Cantons capitulate!
|
||||||
|
</HeadingComponent>
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
export const HeadingLevel1 = HeadingTemplate.bind({})
|
||||||
|
HeadingLevel1.args = {
|
||||||
|
level: 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const HeadingLevel2 = HeadingTemplate.bind({})
|
||||||
|
HeadingLevel2.args = {
|
||||||
|
level: 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const HeadingLevel3 = HeadingTemplate.bind({})
|
||||||
|
HeadingLevel3.args = {
|
||||||
|
level: 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const HeadingLevel4 = HeadingTemplate.bind({})
|
||||||
|
HeadingLevel4.args = {
|
||||||
|
level: 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const HeadingLevel5 = HeadingTemplate.bind({})
|
||||||
|
HeadingLevel5.args = {
|
||||||
|
level: 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const HeadingLevel6 = HeadingTemplate.bind({})
|
||||||
|
HeadingLevel6.args = {
|
||||||
|
level: 6,
|
||||||
|
}
|
||||||
|
|
29
src/components/common/Heading.tsx
Normal file
29
src/components/common/Heading.tsx
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
import * as React from "react"
|
||||||
|
import * as ReactDOM from "react-dom"
|
||||||
|
import * as Types from "../../types"
|
||||||
|
import {BaseElement} from "../BaseElement"
|
||||||
|
import mergeClassNames from "classnames"
|
||||||
|
|
||||||
|
|
||||||
|
export interface HeadingProps extends Types.BluelibHTMLProps<HTMLHeadingElement> {
|
||||||
|
level: 1 | 2 | 3 | 4 | 5 | 6,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const HEADING_KINDS_BY_LEVEL = {
|
||||||
|
1: "h1",
|
||||||
|
2: "h2",
|
||||||
|
3: "h3",
|
||||||
|
4: "h4",
|
||||||
|
5: "h5",
|
||||||
|
6: "h6",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function Heading({level, ...props}: HeadingProps): JSX.Element {
|
||||||
|
props.bluelibClassNames = mergeClassNames(props.bluelibClassNames, "heading")
|
||||||
|
|
||||||
|
return (
|
||||||
|
<BaseElement kind={HEADING_KINDS_BY_LEVEL[level]} {...props}/>
|
||||||
|
)
|
||||||
|
}
|
Loading…
Reference in a new issue