diff --git a/packages/vx-hierarchy/src/DefaultLink.js b/packages/vx-hierarchy/src/DefaultLink.js
new file mode 100644
index 000000000..aa7cae506
--- /dev/null
+++ b/packages/vx-hierarchy/src/DefaultLink.js
@@ -0,0 +1,15 @@
+import React from "react";
+
+export default function DefaultLink({ link }) {
+ return (
+
+ );
+}
diff --git a/packages/vx-hierarchy/src/DefaultNode.js b/packages/vx-hierarchy/src/DefaultNode.js
new file mode 100644
index 000000000..2dc91862b
--- /dev/null
+++ b/packages/vx-hierarchy/src/DefaultNode.js
@@ -0,0 +1,5 @@
+import React from "react";
+
+export default function DefaultNode({ node }) {
+ return ;
+}
diff --git a/packages/vx-hierarchy/src/hierarchies/Cluster.js b/packages/vx-hierarchy/src/hierarchies/Cluster.js
index 44a2102c3..4011627f6 100644
--- a/packages/vx-hierarchy/src/hierarchies/Cluster.js
+++ b/packages/vx-hierarchy/src/hierarchies/Cluster.js
@@ -1,7 +1,9 @@
-import React from 'react';
-import cx from 'classnames';
-import { Group } from '@vx/group';
-import { cluster as d3cluster } from 'd3-hierarchy';
+import React from "react";
+import cx from "classnames";
+import { Group } from "@vx/group";
+import { cluster as d3cluster } from "d3-hierarchy";
+import DefaultLink from "../DefaultLink";
+import DefaultNode from "../DefaultNode";
export default function Cluster({
top,
@@ -11,8 +13,8 @@ export default function Cluster({
size,
nodeSize,
separation,
- linkComponent,
- nodeComponent,
+ linkComponent = DefaultLink,
+ nodeComponent = DefaultNode,
...restProps
}) {
const cluster = d3cluster();
@@ -23,21 +25,23 @@ export default function Cluster({
const links = data.links();
const descendants = root.descendants();
return (
-
- {linkComponent && links.map((link, i) => {
- return (
-
- {React.createElement(linkComponent, { link })}
-
- );
- })}
- {nodeComponent && descendants.map((node, i) => {
- return (
-
- {React.createElement(nodeComponent, { node })}
-
- );
- })}
+
+ {linkComponent &&
+ links.map((link, i) => {
+ return (
+
+ {React.createElement(linkComponent, { link })}
+
+ );
+ })}
+ {nodeComponent &&
+ descendants.map((node, i) => {
+ return (
+
+ {React.createElement(nodeComponent, { node })}
+
+ );
+ })}
);
-}
\ No newline at end of file
+}
diff --git a/packages/vx-hierarchy/src/hierarchies/Tree.js b/packages/vx-hierarchy/src/hierarchies/Tree.js
index 3ca1eb7f6..5e45821d4 100644
--- a/packages/vx-hierarchy/src/hierarchies/Tree.js
+++ b/packages/vx-hierarchy/src/hierarchies/Tree.js
@@ -1,7 +1,9 @@
-import React from 'react';
-import cx from 'classnames';
-import { Group } from '@vx/group';
-import { tree as d3tree } from 'd3-hierarchy';
+import React from "react";
+import cx from "classnames";
+import { Group } from "@vx/group";
+import { tree as d3tree } from "d3-hierarchy";
+import DefaultLink from "../DefaultLink";
+import DefaultNode from "../DefaultNode";
export default function Tree({
top,
@@ -11,8 +13,8 @@ export default function Tree({
size,
nodeSize,
separation,
- linkComponent,
- nodeComponent,
+ linkComponent = DefaultLink,
+ nodeComponent = DefaultNode,
...restProps
}) {
const tree = d3tree();
@@ -23,21 +25,23 @@ export default function Tree({
const links = data.links();
const descendants = root.descendants();
return (
-
- {linkComponent && links.map((link, i) => {
- return (
-
- {React.createElement(linkComponent, { link })}
-
- );
- })}
- {nodeComponent && descendants.map((node, i) => {
- return (
-
- {React.createElement(nodeComponent, { node })}
-
- );
- })}
+
+ {linkComponent &&
+ links.map((link, i) => {
+ return (
+
+ {React.createElement(linkComponent, { link })}
+
+ );
+ })}
+ {nodeComponent &&
+ descendants.map((node, i) => {
+ return (
+
+ {React.createElement(nodeComponent, { node })}
+
+ );
+ })}
);
-}
\ No newline at end of file
+}
diff --git a/packages/vx-hierarchy/src/index.js b/packages/vx-hierarchy/src/index.js
index 5ab369194..927db6b9c 100644
--- a/packages/vx-hierarchy/src/index.js
+++ b/packages/vx-hierarchy/src/index.js
@@ -1,2 +1,4 @@
-export { default as Tree } from './hierarchies/Tree';
-export { default as Cluster } from './hierarchies/Cluster';
+export { default as Tree } from "./hierarchies/Tree";
+export { default as Cluster } from "./hierarchies/Cluster";
+export { default as DefaultLink } from "./DefaultLink";
+export { default as DefaultNode } from "./DefaultNode";
diff --git a/packages/vx-hierarchy/test/Defaults.test.js b/packages/vx-hierarchy/test/Defaults.test.js
new file mode 100644
index 000000000..826acf93b
--- /dev/null
+++ b/packages/vx-hierarchy/test/Defaults.test.js
@@ -0,0 +1,13 @@
+import { DefaultLink, DefaultNode } from "../src";
+
+describe("", () => {
+ test("it should be defined", () => {
+ expect(DefaultLink).toBeDefined();
+ });
+});
+
+describe("", () => {
+ test("it should be defined", () => {
+ expect(DefaultNode).toBeDefined();
+ });
+});