diff --git a/src/components/landing/Hero/Hero.vue b/src/components/landing/Hero/Hero.vue
index a276611..36b952f 100644
--- a/src/components/landing/Hero/Hero.vue
+++ b/src/components/landing/Hero/Hero.vue
@@ -19,10 +19,10 @@
/>
-
+
New 🎉
- Liquid Ether
+ Laser Flow
diff --git a/src/constants/Categories.ts b/src/constants/Categories.ts
index d8af5c4..4059c8f 100644
--- a/src/constants/Categories.ts
+++ b/src/constants/Categories.ts
@@ -1,5 +1,5 @@
// Highlighted sidebar items
-export const NEW = ['Dome Gallery', 'Liquid Ether', 'Staggered Menu', 'Pixel Blast', 'Gradual Blur', 'Gradient Blinds', 'Bubble Menu', 'Prism', 'Plasma', 'Electric Border', 'Target Cursor', 'Pill Nav', 'Card Nav', 'Logo Loop', 'Prismatic Burst'];
+export const NEW = ['Laser Flow', 'Dome Gallery', 'Liquid Ether', 'Staggered Menu', 'Pixel Blast', 'Gradual Blur', 'Gradient Blinds', 'Bubble Menu', 'Prism', 'Plasma', 'Electric Border', 'Target Cursor', 'Pill Nav', 'Card Nav', 'Logo Loop', 'Prismatic Burst'];
export const UPDATED = [];
// Used for main sidebar navigation
@@ -37,6 +37,7 @@ export const CATEGORIES = [
'Animated Content',
'Fade Content',
'Gradual Blur',
+ 'Laser Flow',
'Noise',
'Splash Cursor',
'Logo Loop',
diff --git a/src/constants/Components.ts b/src/constants/Components.ts
index c385017..7480543 100644
--- a/src/constants/Components.ts
+++ b/src/constants/Components.ts
@@ -23,6 +23,7 @@ const animations = {
'sticker-peel': () => import('../demo/Animations/StickerPeelDemo.vue'),
'electric-border': () => import('../demo/Animations/ElectricBorderDemo.vue'),
'gradual-blur': () => import('../demo/Animations/GradualBlurDemo.vue'),
+ 'laser-flow': () => import('../demo/Animations/LaserFlowDemo.vue'),
};
const textAnimations = {
diff --git a/src/constants/code/Animations/gradualBlurCode.ts b/src/constants/code/Animations/gradualBlurCode.ts
index 3a4d480..fbe391b 100644
--- a/src/constants/code/Animations/gradualBlurCode.ts
+++ b/src/constants/code/Animations/gradualBlurCode.ts
@@ -3,7 +3,24 @@ import { createCodeObject } from '@/types/code';
export const gradualBlur = createCodeObject(code, 'Animations/GradualBlur', {
installation: `npm install mathjs`,
- usage: `
+ usage: `
+
+
`
+});
diff --git a/src/content/Animations/LaserFlow/LaserFlow.vue b/src/content/Animations/LaserFlow/LaserFlow.vue
new file mode 100644
index 0000000..412c624
--- /dev/null
+++ b/src/content/Animations/LaserFlow/LaserFlow.vue
@@ -0,0 +1,615 @@
+
+
+
+
+
diff --git a/src/content/TextAnimations/TrueFocus/TrueFocus.vue b/src/content/TextAnimations/TrueFocus/TrueFocus.vue
index f1de0b6..3ef0096 100644
--- a/src/content/TextAnimations/TrueFocus/TrueFocus.vue
+++ b/src/content/TextAnimations/TrueFocus/TrueFocus.vue
@@ -31,26 +31,6 @@ const focusRect = ref({ x: 0, y: 0, width: 0, height: 0 });
let interval: number | null = null;
-watch(
- [() => props.manualMode, () => props.animationDuration, () => props.pauseBetweenAnimations, () => words.value],
- () => {
- if (interval) {
- clearInterval(interval);
- interval = null;
- }
-
- if (!props.manualMode) {
- interval = setInterval(
- () => {
- currentIndex.value = (currentIndex.value + 1) % words.value.length;
- },
- (props.animationDuration + props.pauseBetweenAnimations) * 1000
- );
- }
- },
- { immediate: true }
-);
-
watch(
[currentIndex, () => words.value.length],
async () => {
@@ -105,6 +85,26 @@ onMounted(async () => {
height: activeRect.height
};
}
+
+ watch(
+ [() => props.manualMode, () => props.animationDuration, () => props.pauseBetweenAnimations, () => words.value],
+ () => {
+ if (interval) {
+ clearInterval(interval);
+ interval = null;
+ }
+
+ if (!props.manualMode) {
+ interval = setInterval(
+ () => {
+ currentIndex.value = (currentIndex.value + 1) % words.value.length;
+ },
+ (props.animationDuration + props.pauseBetweenAnimations) * 1000
+ );
+ }
+ },
+ { immediate: true }
+ );
});
onUnmounted(() => {
diff --git a/src/demo/Animations/LaserFlowDemo.vue b/src/demo/Animations/LaserFlowDemo.vue
new file mode 100644
index 0000000..bc5b240
--- /dev/null
+++ b/src/demo/Animations/LaserFlowDemo.vue
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+