diff --git a/components/ui/CustomCursorArea/CustomCursorArea.html b/components/ui/CustomCursorArea/CustomCursorArea.html
new file mode 100644
index 0000000000..f86ff66b8c
--- /dev/null
+++ b/components/ui/CustomCursorArea/CustomCursorArea.html
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/components/ui/CustomCursorArea/CustomCursorArea.less b/components/ui/CustomCursorArea/CustomCursorArea.less
new file mode 100644
index 0000000000..7979cdffea
--- /dev/null
+++ b/components/ui/CustomCursorArea/CustomCursorArea.less
@@ -0,0 +1,33 @@
+#custom-cursor {
+ top: 0;
+ left: 0;
+ position: fixed;
+ width: 30px;
+ height: 30px;
+ pointer-events: none;
+ user-select: none;
+ border-radius: 100%;
+ z-index: 55555555;
+ backface-visibility: hidden;
+ will-change: transform;
+ box-shadow: 0 0 8px #fff, inset 0 0 8px #fff;
+ -webkit-animation: pulse 2s linear 1s infinite;
+ background: -webkit-radial-gradient(
+ rgba(255, 255, 255, 0.2),
+ rgba(255, 255, 255, 0.4),
+ rgba(255, 255, 255, 0.7)
+ );
+ opacity: 0.4;
+}
+
+@-webkit-keyframes pulse {
+ 0% {
+ box-shadow: 0 0 8px #fff, inset 0 0 8px #fff;
+ }
+ 50% {
+ box-shadow: 0 0 20px #fff, inset 0 0 18px #fff;
+ }
+ 100% {
+ box-shadow: 0 0 8px #fff, inset 0 0 8px #fff;
+ }
+}
diff --git a/components/ui/CustomCursorArea/CustomCursorArea.vue b/components/ui/CustomCursorArea/CustomCursorArea.vue
new file mode 100644
index 0000000000..f10178f1ca
--- /dev/null
+++ b/components/ui/CustomCursorArea/CustomCursorArea.vue
@@ -0,0 +1,31 @@
+
+
+