* Export TitleProps interface for use on storybook

* Add Storybook entry for Title
This commit is contained in:
Thomas Roberts 2023-11-07 13:45:38 +00:00 committed by GitHub
parent b3b52dbff4
commit 61b1272d8a
2 changed files with 62 additions and 11 deletions

View File

@ -9,20 +9,12 @@ import type { ReactNode } from 'react';
*/
import './style.scss';
/** @typedef {import('react')} React */
/**
* Component that renders a block title.
*
* @param {Object} props Incoming props for the component.
* @param {React.ReactNode} [props.children] Children elements this component wraps.
* @param {string} [props.className] CSS class used.
* @param {string} props.headingLevel Heading level for title.
* @param {Object} [props.props] Rest of props passed through to component.
*/
const Title = ( {
children,
className,
className = '',
headingLevel,
...props
}: TitleProps ): JSX.Element => {
@ -39,9 +31,9 @@ const Title = ( {
);
};
interface TitleProps {
export interface TitleProps {
headingLevel: '1' | '2' | '3' | '4' | '5' | '6';
className: string;
className?: string | undefined;
children: ReactNode;
}

View File

@ -0,0 +1,59 @@
/**
* External dependencies
*/
import type { StoryFn, Meta } from '@storybook/react';
/**
* Internal dependencies
*/
import Title, { type TitleProps } from '..';
import '../style.scss';
export default {
title: 'Block Components/Title',
component: Title,
argTypes: {
className: {
control: 'text',
table: {
type: {
summary: 'string',
},
},
description:
'Additional CSS classes to apply to the title element.',
},
headingLevel: {
control: 'select',
options: [ '1', '2', '3', '4', '5', '6' ],
table: {
type: {
summary: "'1' | '2' | '3' | '4' | '5' | '6'",
},
},
description:
'What level of heading tag should be used, e.g. h1, h2 etc.',
},
children: {
control: 'text',
table: {
type: {
summary: 'ReactNode',
},
},
description: 'The text/children to render in the title element.',
},
},
} as Meta< TitleProps >;
const Template: StoryFn< TitleProps > = ( args ) => {
const { children, ...rest } = args;
return <Title { ...rest }>{ children }</Title>;
};
export const Default = Template.bind( {} );
Default.args = {
headingLevel: '1',
children: 'Title',
};