From 82f1a6fcbd9a14288b6eb47613b0885527075e03 Mon Sep 17 00:00:00 2001 From: Alfarish Fizikri Date: Wed, 23 Jul 2025 09:16:28 +0700 Subject: [PATCH 1/2] Create component --- src/constants/Categories.ts | 3 +- src/constants/Components.ts | 1 + src/constants/code/Components/counterCode.ts | 17 ++ src/content/Components/Counter/Counter.vue | 219 +++++++++++++++++++ src/demo/Components/CounterDemo.vue | 195 +++++++++++++++++ 5 files changed, 434 insertions(+), 1 deletion(-) create mode 100644 src/constants/code/Components/counterCode.ts create mode 100644 src/content/Components/Counter/Counter.vue create mode 100644 src/demo/Components/CounterDemo.vue diff --git a/src/constants/Categories.ts b/src/constants/Categories.ts index ac41eb1..a33f44a 100644 --- a/src/constants/Categories.ts +++ b/src/constants/Categories.ts @@ -80,7 +80,8 @@ export const CATEGORIES = [ 'Flowing Menu', 'Elastic Slider', 'Stack', - 'Chroma Grid' + 'Chroma Grid', + 'Counter' ] }, { diff --git a/src/constants/Components.ts b/src/constants/Components.ts index d543dc2..5f9b341 100644 --- a/src/constants/Components.ts +++ b/src/constants/Components.ts @@ -69,6 +69,7 @@ const components = { 'tilted-card': () => import('../demo/Components/TiltedCardDemo.vue'), 'stack': () => import('../demo/Components/StackDemo.vue'), 'chroma-grid': () => import('../demo/Components/ChromaGridDemo.vue'), + 'counter': () => import('../demo/Components/CounterDemo.vue'), }; const backgrounds = { diff --git a/src/constants/code/Components/counterCode.ts b/src/constants/code/Components/counterCode.ts new file mode 100644 index 0000000..8f1fe16 --- /dev/null +++ b/src/constants/code/Components/counterCode.ts @@ -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' + +`, +}) \ No newline at end of file diff --git a/src/content/Components/Counter/Counter.vue b/src/content/Components/Counter/Counter.vue new file mode 100644 index 0000000..451e9cb --- /dev/null +++ b/src/content/Components/Counter/Counter.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/demo/Components/CounterDemo.vue b/src/demo/Components/CounterDemo.vue new file mode 100644 index 0000000..02c624d --- /dev/null +++ b/src/demo/Components/CounterDemo.vue @@ -0,0 +1,195 @@ + + + From 71c0503e24c96d46cade0fd714784a409a8b9a55 Mon Sep 17 00:00:00 2001 From: Alfarish Fizikri Date: Thu, 24 Jul 2025 04:29:23 +0700 Subject: [PATCH 2/2] refactor(style): utilize tailwind instead of CSS --- src/content/Components/Counter/Counter.vue | 96 +++++----------------- 1 file changed, 19 insertions(+), 77 deletions(-) diff --git a/src/content/Components/Counter/Counter.vue b/src/content/Components/Counter/Counter.vue index 451e9cb..4ffca9e 100644 --- a/src/content/Components/Counter/Counter.vue +++ b/src/content/Components/Counter/Counter.vue @@ -1,29 +1,21 @@ @@ -90,15 +82,19 @@ const digitStyles = computed(() => ({ ...props.digitStyle })); -const topGradientStyles = computed((): CSSProperties => ({ - height: `${props.gradientHeight}px`, - background: `linear-gradient(to bottom, ${props.gradientFrom}, ${props.gradientTo})` -})); +const topGradientStyles = computed( + (): CSSProperties => ({ + height: `${props.gradientHeight}px`, + background: `linear-gradient(to bottom, ${props.gradientFrom}, ${props.gradientTo})` + }) +); -const bottomGradientStyles = computed((): CSSProperties => ({ - height: `${props.gradientHeight}px`, - background: `linear-gradient(to top, ${props.gradientFrom}, ${props.gradientTo})` -})); +const bottomGradientStyles = computed( + (): CSSProperties => ({ + height: `${props.gradientHeight}px`, + background: `linear-gradient(to top, ${props.gradientFrom}, ${props.gradientTo})` + }) +); const springValues = ref>({}); @@ -163,57 +159,3 @@ const getDigitPosition = (place: number, digit: number): number => { return position; }; - -