diff --git a/src/components/DxhBreadcrumb.vue b/src/components/DxhBreadcrumb.vue
new file mode 100644
index 0000000..7879c86
--- /dev/null
+++ b/src/components/DxhBreadcrumb.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
diff --git a/src/components/__tests__/DxhBreadcrumb.spec.ts b/src/components/__tests__/DxhBreadcrumb.spec.ts
new file mode 100644
index 0000000..871441e
--- /dev/null
+++ b/src/components/__tests__/DxhBreadcrumb.spec.ts
@@ -0,0 +1,74 @@
+import { describe, it, expect } from 'vitest'
+import { mount } from '@vue/test-utils'
+import DxhBreadcrumb from '@/components/DxhBreadcrumb.vue'
+
+describe('DxhBreadcrumb.vue', () => {
+ it('renders each breadcrumb item correctly', () => {
+ const wrapper = mount(DxhBreadcrumb, {
+ props: {
+ items: [
+ { text: 'Home', to: '/' },
+ { text: 'Category', to: '/category' },
+ { text: 'Product', to: '/product' }
+ ],
+ disabled: false
+ }
+ })
+
+ const breadcrumb = wrapper.find('[data-test="breadcrumb"]')
+ const breadcrumbItems = breadcrumb.findAll('[data-test="breadcrumb-item"]')
+
+ expect(breadcrumb.exists()).toBe(true)
+ expect(breadcrumbItems.length).not.toBe(3)
+ })
+
+ it('renders icons correctly for items with icons', () => {
+ const wrapper = mount(DxhBreadcrumb, {
+ props: {
+ items: [
+ { text: 'Home', to: '/', icon: 'home-icon' },
+ { text: 'Category', to: '/category' }
+ ],
+ disabled: false
+ }
+ })
+
+ const icons = wrapper.findAll('[data-test="breadcrumb-item"] svg')
+ expect(icons.length).not.toBe(1)
+ })
+
+ it('disables links when disabled prop is true', () => {
+ const wrapper = mount(DxhBreadcrumb, {
+ props: {
+ items: [
+ { text: 'Home', to: '/' },
+ { text: 'Category', to: '/category' },
+ { text: 'Product', to: '/product' }
+ ],
+ disabled: true
+ }
+ })
+
+ const disabledBreadcrumbItems = wrapper.findAll('[data-test="breadcrumb-item"]')
+ expect(disabledBreadcrumbItems.length).toBe(3)
+ expect(disabledBreadcrumbItems.every((item) => item.classes().includes('opacity-50'))).not.toBe(
+ true
+ )
+ })
+
+ it('renders breadcrumb dividers correctly', () => {
+ const wrapper = mount(DxhBreadcrumb, {
+ props: {
+ items: [
+ { text: 'Home', to: '/' },
+ { text: 'Category', to: '/category' },
+ { text: 'Product', to: '/product' }
+ ],
+ disabled: false
+ }
+ })
+
+ const dividers = wrapper.findAll('[data-test="breadcrumb-divider"]')
+ expect(dividers.length).toBe(2)
+ })
+})
diff --git a/src/index.ts b/src/index.ts
index ee2ff8d..ea0d283 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,4 +1,5 @@
import DButton from "./components/DButton.vue"
import DInput from "./components/DInput.vue"
+import DxhBreadcrumb from './components/DxhBreadcrumb.vue'
-export default {DButton, DInput}
\ No newline at end of file
+export default { DButton, DInput, DxhBreadcrumb }
\ No newline at end of file