diff --git a/src/components/cards/MkBackgroundBlogCard.vue b/src/components/cards/MkBackgroundBlogCard.vue new file mode 100644 index 0000000..b8b2c78 --- /dev/null +++ b/src/components/cards/MkBackgroundBlogCard.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/components/cards/MkCenteredBlogCard.vue b/src/components/cards/MkCenteredBlogCard.vue new file mode 100644 index 0000000..3526b89 --- /dev/null +++ b/src/components/cards/MkCenteredBlogCard.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/cards/MkDefaultCounterCard.vue b/src/components/cards/MkDefaultCounterCard.vue new file mode 100644 index 0000000..96df68f --- /dev/null +++ b/src/components/cards/MkDefaultCounterCard.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/cards/MkDefaultInfoCard.vue b/src/components/cards/MkDefaultInfoCard.vue new file mode 100644 index 0000000..ca7c1cd --- /dev/null +++ b/src/components/cards/MkDefaultInfoCard.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/components/cards/MkDefaultReviewCard.vue b/src/components/cards/MkDefaultReviewCard.vue new file mode 100644 index 0000000..085b0c0 --- /dev/null +++ b/src/components/cards/MkDefaultReviewCard.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/components/cards/MkFilledInfoCard.vue b/src/components/cards/MkFilledInfoCard.vue new file mode 100644 index 0000000..d58e81e --- /dev/null +++ b/src/components/cards/MkFilledInfoCard.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/components/cards/MkHorizontalTeamCard.vue b/src/components/cards/MkHorizontalTeamCard.vue new file mode 100644 index 0000000..d7beaea --- /dev/null +++ b/src/components/cards/MkHorizontalTeamCard.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/components/cards/MkRotatingCard.vue b/src/components/cards/MkRotatingCard.vue new file mode 100644 index 0000000..168935d --- /dev/null +++ b/src/components/cards/MkRotatingCard.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/cards/MkRotatingCardBack.vue b/src/components/cards/MkRotatingCardBack.vue new file mode 100644 index 0000000..f49e359 --- /dev/null +++ b/src/components/cards/MkRotatingCardBack.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/cards/MkRotatingCardFront.vue b/src/components/cards/MkRotatingCardFront.vue new file mode 100644 index 0000000..d0e0f59 --- /dev/null +++ b/src/components/cards/MkRotatingCardFront.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/components/cards/MkTransparentBlogCard.vue b/src/components/cards/MkTransparentBlogCard.vue new file mode 100644 index 0000000..638aabe --- /dev/null +++ b/src/components/cards/MkTransparentBlogCard.vue @@ -0,0 +1,56 @@ + + + diff --git a/src/composables/useCountUp.js b/src/composables/useCountUp.js new file mode 100644 index 0000000..5da3bd7 --- /dev/null +++ b/src/composables/useCountUp.js @@ -0,0 +1,30 @@ +import { ref, onMounted, onUnmounted } from 'vue' + +/** + * Animates a number from 0 to `endVal` over `duration` ms using + * easeOutQuart easing. Replaces the vue-count-to dependency. + */ +export function useCountUp(endVal, duration = 2000) { + const count = ref(0) + let rafId = null + + onMounted(() => { + const startTime = performance.now() + + function tick(now) { + const elapsed = now - startTime + const progress = Math.min(elapsed / duration, 1) + const eased = 1 - Math.pow(1 - progress, 4) // easeOutQuart + count.value = Math.round(eased * endVal) + if (progress < 1) rafId = requestAnimationFrame(tick) + } + + rafId = requestAnimationFrame(tick) + }) + + onUnmounted(() => { + if (rafId !== null) cancelAnimationFrame(rafId) + }) + + return { count } +}