aboutsummaryrefslogtreecommitdiff
path: root/components/Breadcrumbs
diff options
context:
space:
mode:
Diffstat (limited to 'components/Breadcrumbs')
-rw-r--r--components/Breadcrumbs/breadcrumbs.module.scss15
-rw-r--r--components/Breadcrumbs/index.tsx50
2 files changed, 65 insertions, 0 deletions
diff --git a/components/Breadcrumbs/breadcrumbs.module.scss b/components/Breadcrumbs/breadcrumbs.module.scss
new file mode 100644
index 0000000..104eec2
--- /dev/null
+++ b/components/Breadcrumbs/breadcrumbs.module.scss
@@ -0,0 +1,15 @@
+.crumb {
+ font-size: 1.10rem;
+}
+
+.divider {
+ font-size: 1.0rem;
+}
+
+.crumb {
+ align-content: center;
+}
+
+.divider {
+ margin: 0 0.3rem;
+} \ No newline at end of file
diff --git a/components/Breadcrumbs/index.tsx b/components/Breadcrumbs/index.tsx
new file mode 100644
index 0000000..ed650e3
--- /dev/null
+++ b/components/Breadcrumbs/index.tsx
@@ -0,0 +1,50 @@
+import React, { Children, FC } from "react";
+import Link from "next/link";
+import styles from './breadcrumbs.module.scss';
+import clsx from 'clsx';
+
+export type BreadcrumbsProps = {
+ className?: string;
+ style?: object;
+};
+
+const Breadcrumbs : FC<BreadcrumbsProps> = ({children, className, ...props}) => (
+ <div className={clsx(styles.breadcrumbs, className)} {...props}>
+ {Children.map(children, (child, index) => {
+ return (
+ <>
+ {
+ index !== 0 ? (
+ <span className={styles.divider}>/</span>
+ ) : undefined
+ }
+ {child}
+ </>
+ );
+ })}
+ </div>
+);
+
+const Crumb : FC = ({children, ...props}) => (
+ <span className={styles.crumb} {...props}>
+ {children}
+ </span>
+);
+
+export type LinkCrumbProps = {
+ href: string;
+}
+
+const LinkCrumb : FC<LinkCrumbProps> = ({children, href, ...props}) => (
+ <Crumb>
+ <Link href={href}>
+ <a>{children}</a>
+ </Link>
+ </Crumb>
+);
+
+export {
+ Crumb,
+ Breadcrumbs,
+ LinkCrumb
+}; \ No newline at end of file