diff --git a/src/layout/Breadcrumbs/Breadcrumbs.story.tsx b/src/layout/Breadcrumbs/Breadcrumbs.story.tsx
new file mode 100644
index 00000000..aa4ceb24
--- /dev/null
+++ b/src/layout/Breadcrumbs/Breadcrumbs.story.tsx
@@ -0,0 +1,33 @@
+import { Breadcrumbs } from './Breadcrumbs';
+
+export default {
+ title: 'Components/Layout/Breadcrumbs',
+ component: Breadcrumbs
+};
+
+export const Basic = () => (
+
+);
+
+export const WithCustomSeparator = () => (
+
+);
diff --git a/src/layout/Breadcrumbs/Breadcrumbs.tsx b/src/layout/Breadcrumbs/Breadcrumbs.tsx
new file mode 100644
index 00000000..b79f7892
--- /dev/null
+++ b/src/layout/Breadcrumbs/Breadcrumbs.tsx
@@ -0,0 +1,65 @@
+import { cn, useComponentTheme } from '@/utils';
+import React, { FC } from 'react';
+import { BreadcrumbsTheme } from './BreadcrumbsTheme';
+
+export interface BreadcrumbsProps extends React.HTMLAttributes {
+ breadcrumbs: { label: string; href: string }[];
+ seperator?: React.ReactNode;
+ theme?: BreadcrumbsTheme;
+}
+
+const Chevron = () => (
+
+);
+
+export const Breadcrumbs: FC = ({
+ breadcrumbs,
+ seperator = ,
+ theme: customTheme,
+ ...rest
+}) => {
+ const theme = useComponentTheme('breadcrumbs', customTheme);
+
+ return (
+
+ );
+};
diff --git a/src/layout/Breadcrumbs/BreadcrumbsTheme.ts b/src/layout/Breadcrumbs/BreadcrumbsTheme.ts
new file mode 100644
index 00000000..eb65c93e
--- /dev/null
+++ b/src/layout/Breadcrumbs/BreadcrumbsTheme.ts
@@ -0,0 +1,14 @@
+export interface BreadcrumbsTheme {
+ base: string;
+ breadcrumb: string;
+ activeBreadcrumb: string;
+}
+
+export const breadcrumbsTheme: BreadcrumbsTheme = {
+ base: 'flex gap-2 items-center',
+ breadcrumb:
+ 'hover:text-panel-content text-panel-secondary-content transition-colors',
+ activeBreadcrumb: 'text-primary pointer-events-none'
+};
+
+export const legacyBreadcrumbTheme: BreadcrumbsTheme = breadcrumbsTheme;
diff --git a/src/layout/Breadcrumbs/index.ts b/src/layout/Breadcrumbs/index.ts
new file mode 100644
index 00000000..d9888f1e
--- /dev/null
+++ b/src/layout/Breadcrumbs/index.ts
@@ -0,0 +1,2 @@
+export * from './Breadcrumbs';
+export * from './BreadcrumbsTheme';
diff --git a/src/layout/index.ts b/src/layout/index.ts
index ce38e960..5f9f2ec7 100644
--- a/src/layout/index.ts
+++ b/src/layout/index.ts
@@ -8,3 +8,4 @@ export * from './Stack';
export * from './Tree';
export * from './VerticalSpacer';
export * from './Tabs';
+export * from './Breadcrumbs';
diff --git a/src/utils/Theme/themes/theme.ts b/src/utils/Theme/themes/theme.ts
index 039978c2..9aed6b56 100644
--- a/src/utils/Theme/themes/theme.ts
+++ b/src/utils/Theme/themes/theme.ts
@@ -112,7 +112,10 @@ import {
legacyDividerTheme,
JsonTreeTheme,
jsonTreeTheme,
- legacyJsonTreeTheme
+ legacyJsonTreeTheme,
+ breadcrumbsTheme,
+ BreadcrumbsTheme,
+ legacyBreadcrumbTheme
} from '@/layout';
import {
@@ -182,6 +185,7 @@ export interface ReablocksTheme {
popover: PopoverTheme;
pager: PagerTheme;
tabs: TabsTheme;
+ breadcrumbs: BreadcrumbsTheme;
};
}
@@ -227,7 +231,8 @@ export const theme: ReablocksTheme = {
popover: popoverTheme,
pager: pagerTheme,
tabs: tabsTheme,
- jsonTree: jsonTreeTheme
+ jsonTree: jsonTreeTheme,
+ breadcrumbs: breadcrumbsTheme
}
};
@@ -273,6 +278,7 @@ export const legacyThemeVars: ReablocksTheme = {
popover: legacyPopoverTheme,
pager: legacyPagerTheme,
tabs: legacyTabsTheme,
- jsonTree: legacyJsonTreeTheme
+ jsonTree: legacyJsonTreeTheme,
+ breadcrumbs: legacyBreadcrumbTheme
}
};