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 3b6ead7..53a91ec 100644 --- a/src/constants/Categories.ts +++ b/src/constants/Categories.ts @@ -1,5 +1,5 @@ // Highlighted sidebar items -export const NEW = ['Infinite Menu', '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', @@ -87,6 +88,7 @@ export const CATEGORIES = [ 'Tilted Card', 'Glass Icons', 'Decay Card', + 'Dome Gallery', 'Flowing Menu', 'Elastic Slider', 'Stack', diff --git a/src/constants/Components.ts b/src/constants/Components.ts index 36cbaf5..326c231 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 = { @@ -70,6 +71,7 @@ const components = { 'infinite-scroll': () => import('../demo/Components/InfiniteScrollDemo.vue'), 'glass-icons': () => import('../demo/Components/GlassIconsDemo.vue'), 'decay-card': () => import('../demo/Components/DecayCardDemo.vue'), + 'dome-gallery': () => import('../demo/Components/DomeGalleryDemo.vue'), 'flowing-menu': () => import('../demo/Components/FlowingMenuDemo.vue'), 'elastic-slider': () => import('../demo/Components/ElasticSliderDemo.vue'), 'tilted-card': () => import('../demo/Components/TiltedCardDemo.vue'), 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/constants/code/Components/domeGalleryCode.ts b/src/constants/code/Components/domeGalleryCode.ts new file mode 100644 index 0000000..1568cb7 --- /dev/null +++ b/src/constants/code/Components/domeGalleryCode.ts @@ -0,0 +1,30 @@ +import code from '@content/Components/DomeGallery/DomeGallery.vue?raw'; +import { createCodeObject } from '../../../types/code'; + +export const domeGallery = createCodeObject(code, 'Components/DomeGallery', { + installation: `# No external dependencies required`, + usage: ` + +` +}); \ No newline at end of file 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/Components/DomeGallery/DomeGallery.vue b/src/content/Components/DomeGallery/DomeGallery.vue new file mode 100644 index 0000000..3c628af --- /dev/null +++ b/src/content/Components/DomeGallery/DomeGallery.vue @@ -0,0 +1,866 @@ + + + + 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 @@ + + + + + diff --git a/src/demo/Components/DomeGalleryDemo.vue b/src/demo/Components/DomeGalleryDemo.vue new file mode 100644 index 0000000..1cfe4bf --- /dev/null +++ b/src/demo/Components/DomeGalleryDemo.vue @@ -0,0 +1,221 @@ + + + \ No newline at end of file