Merge branch 'main' into feat/stepper

This commit is contained in:
David
2025-08-01 21:24:33 +03:00
committed by GitHub
25 changed files with 3642 additions and 6 deletions

View File

@@ -1,5 +1,5 @@
// Highlighted sidebar items
export const NEW = ['Target Cursor', 'Ripple Grid', 'Magic Bento', 'Galaxy', 'Text Type', 'Glass Surface', 'Sticker Peel'];
export const NEW = ['Target Cursor', 'Ripple Grid', 'Magic Bento', 'Galaxy', 'Text Type', 'Glass Surface', 'Sticker Peel', 'Scroll Stack', 'Faulty Terminal'];
export const UPDATED = [];
// Used for main sidebar navigation
@@ -27,7 +27,8 @@ export const CATEGORIES = [
'Rotating Text',
'Glitch Text',
'Scroll Velocity',
'Text Type'
'Text Type',
'Variable Proximity',
]
},
{
@@ -63,6 +64,7 @@ export const CATEGORIES = [
'Masonry',
'Glass Surface',
'Magic Bento',
'Scroll Stack',
'Profile Card',
'Dock',
'Gooey Nav',
@@ -81,7 +83,10 @@ export const CATEGORIES = [
'Elastic Slider',
'Stack',
'Chroma Grid',
'Stepper'
'Stepper',
'Bounce Cards',
'Counter',
'Rolling Gallery'
]
},
{
@@ -93,6 +98,7 @@ export const CATEGORIES = [
'Dither',
'Dot Grid',
'Hyperspeed',
'Faulty Terminal',
'Ripple Grid',
'Silk',
'Lightning',
@@ -109,6 +115,7 @@ export const CATEGORIES = [
'Liquid Chrome',
'Grid Distortion',
'Galaxy',
'Light Rays',
]
}
];

View File

@@ -44,6 +44,7 @@ const textAnimations = {
'glitch-text': () => import("../demo/TextAnimations/GlitchTextDemo.vue"),
'scroll-velocity': () => import("../demo/TextAnimations/ScrollVelocityDemo.vue"),
'text-type': () => import("../demo/TextAnimations/TextTypeDemo.vue"),
'variable-proximity': () => import("../demo/TextAnimations/VariableProximityDemo.vue"),
};
const components = {
@@ -70,6 +71,10 @@ const components = {
'stack': () => import('../demo/Components/StackDemo.vue'),
'chroma-grid': () => import('../demo/Components/ChromaGridDemo.vue'),
'stepper': () => import('../demo/Components/StepperDemo.vue'),
'bounce-cards': () => import('../demo/Components/BounceCardsDemo.vue'),
'counter': () => import('../demo/Components/CounterDemo.vue'),
'rolling-gallery': () => import('../demo/Components/RollingGalleryDemo.vue'),
'scroll-stack': () => import('../demo/Components/ScrollStackDemo.vue'),
};
const backgrounds = {
@@ -95,6 +100,8 @@ const backgrounds = {
'grid-distortion': () => import('../demo/Backgrounds/GridDistortionDemo.vue'),
'ripple-grid': () => import('../demo/Backgrounds/RippleGridDemo.vue'),
'galaxy': () => import('../demo/Backgrounds/GalaxyDemo.vue'),
'faulty-terminal': () => import('../demo/Backgrounds/FaultyTerminalDemo.vue'),
'light-rays': () => import('../demo/Backgrounds/LightRaysDemo.vue'),
};
export const componentMap = {

View File

@@ -0,0 +1,33 @@
import code from '@content/Backgrounds/FaultyTerminal/FaultyTerminal.vue?raw';
import { createCodeObject } from '../../../types/code';
export const faultyTerminal = createCodeObject(code, 'Backgrounds/FaultyTerminal', {
installation: `npm install ogl`,
usage: `<template>
<div class="relative w-full h-[600px]">
<FaultyTerminal
:scale="1.5"
:grid-mul="[2, 1]"
:digit-size="1.2"
:time-scale="1"
:pause="false"
:scanline-intensity="1"
:glitch-amount="1"
:flicker-amount="1"
:noise-amp="1"
:chromatic-aberration="0"
:dither="0"
:curvature="0"
tint="#ffffff"
:mouse-react="true"
:mouse-strength="0.5"
:page-load-animation="false"
:brightness="1"
/>
</div>
</template>
<script setup lang="ts">
import FaultyTerminal from "./FaultyTerminal.vue";
</script>`
});

View File

@@ -0,0 +1,26 @@
import code from '@content/Backgrounds/LightRays/LightRays.vue?raw';
import { createCodeObject } from '@/types/code';
export const lightRays = createCodeObject(code, 'Backgrounds/LightRays', {
installation: `npm install ogl`,
usage: `<template>
<div class="w-full h-[600px] relative">
<LightRays
rays-origin="top-center"
rays-color="#00ffff"
:rays-speed="1.5"
:light-spread="0.8"
:ray-length="1.2"
:follow-mouse="true"
:mouse-influence="0.1"
:noise-amount="0.1"
:distortion="0.05"
class-name="custom-rays"
/>
</div>
</template>
<script setup lang="ts">
import LightRays from "./LightRays.vue";
</script>`
});

View File

@@ -0,0 +1,39 @@
import code from '@content/Components/BounceCards/BounceCards.vue?raw';
import { createCodeObject } from '@/types/code';
export const bounceCards = createCodeObject(code, 'Components/BounceCards', {
installation: `npm install gsap`,
usage: `<template>
<BounceCards
:images="images"
:container-width="500"
:container-height="250"
:animation-delay="0.5"
:animation-stagger="0.06"
ease-type="elastic.out(1, 0.8)"
:transform-styles="transformStyles"
:enable-hover="true"
class="custom-bounce-cards"
/>
</template>
<script setup lang="ts">
import BounceCards from "./BounceCards.vue";
const images = [
'https://picsum.photos/400/400?grayscale',
'https://picsum.photos/500/500?grayscale',
'https://picsum.photos/600/600?grayscale',
'https://picsum.photos/700/700?grayscale',
'https://picsum.photos/300/300?grayscale'
];
const transformStyles = [
'rotate(5deg) translate(-150px)',
'rotate(0deg) translate(-70px)',
'rotate(-5deg)',
'rotate(5deg) translate(70px)',
'rotate(-5deg) translate(150px)'
];
</script>`
});

View File

@@ -0,0 +1,17 @@
import code from '@content/Components/Counter/Counter.vue?raw';
import { createCodeObject } from '../../../types/code';
export const counter = createCodeObject(code, 'Components/Counter', {
installation: `npm i motion-v`,
usage: `import Counter from './Counter.vue'
<Counter
:value="1"
:places="[100, 10, 1]"
:fontSize="80"
:padding="5"
:gap="10"
textColor="white"
:fontWeight="900"
/>`
});

View File

@@ -0,0 +1,26 @@
import code from '@content/Components/RollingGallery/RollingGallery.vue?raw';
import { createCodeObject } from '@/types/code.ts';
export const rollingGallery = createCodeObject(code, 'Components/RollingGallery', {
installation: `npm install motion-v`,
usage: `<template>
<RollingGallery
:autoplay="true"
:pause-on-hover="true"
:images="customImages"
/>
</template>
<script setup lang="ts">
import RollingGallery from "./RollingGallery.vue";
const customImages = [
"https://images.unsplash.com/photo-1528181304800-259b08848526?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
"https://images.unsplash.com/photo-1506665531195-3566af2b4dfa?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
"https://images.unsplash.com/photo-1520250497591-112f2f40a3f4?q=80&w=3456&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
"https://images.unsplash.com/photo-1495103033382-fe343886b671?q=80&w=3870&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
"https://images.unsplash.com/photo-1506781961370-37a89d6b3095?q=80&w=3264&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
// Add more images as needed
];
</script>`
});

View File

@@ -0,0 +1,26 @@
import code from '@content/Components/ScrollStack/ScrollStack.vue?raw';
import { createCodeObject } from '../../../types/code';
export const scrollStack = createCodeObject(code, 'Components/ScrollStack', {
installation: `npm install lenis`,
usage: `<template>
<ScrollStack>
<ScrollStackItem>
<h2>Card 1</h2>
<p>This is the first card in the stack</p>
</ScrollStackItem>
<ScrollStackItem>
<h2>Card 2</h2>
<p>This is the second card in the stack</p>
</ScrollStackItem>
<ScrollStackItem>
<h2>Card 3</h2>
<p>This is the third card in the stack</p>
</ScrollStackItem>
</ScrollStack>
</template>
<script setup lang="ts">
import ScrollStack, { ScrollStackItem } from "./ScrollStack.vue";
</script>`
});

View File

@@ -0,0 +1,26 @@
import code from '@content/TextAnimations/VariableProximity/VariableProximity.vue?raw';
import { createCodeObject } from '@/types/code';
export const variableProximity = createCodeObject(code, 'TextAnimations/VariableProximity', {
installation: `npm install motion-v`,
usage: `<template>
<div ref="containerRef" class="relative min-h-[400px] p-4">
<VariableProximity
label="Hover me! Variable font magic!"
from-font-variation-settings="'wght' 400, 'opsz' 9"
to-font-variation-settings="'wght' 1000, 'opsz' 40"
:container-ref="containerRef"
:radius="100"
falloff="linear"
class-name="text-4xl font-bold text-center"
/>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import VariableProximity, { type FalloffType } from './VariableProximity.vue';
const containerRef = ref<HTMLElement | null>(null);
</script>`
});