aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/atoms/headings/heading.tsx
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-04-04 15:45:08 +0200
committerArmand Philippot <git@armandphilippot.com>2022-04-04 15:45:08 +0200
commit8a4fbf91b0ffdcb0ec38105f918ce6f90e6ec161 (patch)
treead4be73ddaf8d8b82fb43740d25aa72d2b8ff055 /src/components/atoms/headings/heading.tsx
parent1fe43a98098eeef254a26b21d77e2d0ce8e55c30 (diff)
chore: add a Branding component
Diffstat (limited to 'src/components/atoms/headings/heading.tsx')
-rw-r--r--src/components/atoms/headings/heading.tsx35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/components/atoms/headings/heading.tsx b/src/components/atoms/headings/heading.tsx
index 1535140..77580cc 100644
--- a/src/components/atoms/headings/heading.tsx
+++ b/src/components/atoms/headings/heading.tsx
@@ -1,21 +1,48 @@
import { FC } from 'react';
+import styles from './heading.module.scss';
type HeadingProps = {
/**
+ * Adds additional classes.
+ */
+ additionalClasses?: string;
+ /**
+ * Use an heading element or only its styles. Default: false.
+ */
+ isFake?: boolean;
+ /**
* HTML heading level: 'h1', 'h2', 'h3', 'h4', 'h5' or 'h6'.
*/
level: 1 | 2 | 3 | 4 | 5 | 6;
+ /**
+ * Adds margin. Default: true.
+ */
+ withMargin?: boolean;
};
/**
* Heading component.
*
- * Render an HTML heading element.
+ * Render an HTML heading element or a paragraph with heading styles.
*/
-const Heading: FC<HeadingProps> = ({ children, level }) => {
- const TitleTag = `h${level}` as keyof JSX.IntrinsicElements;
+const Heading: FC<HeadingProps> = ({
+ children,
+ additionalClasses,
+ isFake = false,
+ level,
+ withMargin = true,
+}) => {
+ const TitleTag = isFake ? `p` : (`h${level}` as keyof JSX.IntrinsicElements);
+ const variantClass = withMargin ? 'heading--margin' : 'heading--regular';
+ const levelClass = `heading--${level}`;
- return <TitleTag>{children}</TitleTag>;
+ return (
+ <TitleTag
+ className={`${styles.heading} ${styles[variantClass]} ${styles[levelClass]} ${additionalClasses}`}
+ >
+ {children}
+ </TitleTag>
+ );
};
export default Heading;