valaxy-theme-yun 0.20.0-beta.8 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,7 +38,7 @@ watch(() => [yun.rightSidebar.isOpen, yun.size.isXl], async () => {
38
38
  overflow="auto"
39
39
  >
40
40
  <Transition name="fade" :delay="100">
41
- <div v-show="show" class="w-full" flex="~ col">
41
+ <div v-show="show" class="w-full" flex="~ col" pb-2>
42
42
  <template v-if="showToc">
43
43
  <h2
44
44
  m="t-6 b-2"
@@ -11,6 +11,7 @@ const props = defineProps<{
11
11
  const tagRef = ref<HTMLElement>()
12
12
  useYunSpringAnimation(tagRef, {
13
13
  i: props.i || 0,
14
+ delay: 25,
14
15
  })
15
16
  </script>
16
17
 
@@ -5,16 +5,17 @@ defineProps<{
5
5
  </script>
6
6
 
7
7
  <template>
8
- <div class="yun-notice m-auto">
9
- <span v-html="content" />
10
- <slot />
8
+ <div class="w-full px-4 flex-center">
9
+ <div class="yun-notice w-full">
10
+ <span v-html="content" />
11
+ <slot />
12
+ </div>
11
13
  </div>
12
14
  </template>
13
15
 
14
16
  <style>
15
17
  .yun-notice {
16
18
  border: 1px solid var(--va-c-text);
17
- width: calc(100% - 2rem);
18
19
  display: flex;
19
20
  flex-direction: column;
20
21
  justify-content: center;
@@ -23,6 +24,6 @@ defineProps<{
23
24
  font-weight: bold;
24
25
  padding: 1rem;
25
26
  max-width: var(--yun-post-card-max-width);
26
- background-color: rgba(200, 200, 200, 0.1);
27
+ background-color: rgb(200 200 200 / 0.1);
27
28
  }
28
29
  </style>
@@ -25,9 +25,4 @@
25
25
  font-family: get-css-var('font-serif');
26
26
  font-weight: 900;
27
27
  }
28
-
29
- .site-description {
30
- color: var(--va-c-text);
31
- font-size: 0.8rem;
32
- }
33
28
  </style>
@@ -16,6 +16,10 @@ const { curPage, totalPages, showPage, getTo, surLen, prevTo, nextTo, showPrev,
16
16
  total: props.total,
17
17
  pageSize: props.pageSize,
18
18
  })
19
+
20
+ defineExpose({
21
+ curPage,
22
+ })
19
23
  </script>
20
24
 
21
25
  <template>
@@ -48,7 +52,7 @@ const { curPage, totalPages, showPage, getTo, surLen, prevTo, nextTo, showPrev,
48
52
 
49
53
  <style lang="scss">
50
54
  :root {
51
- --page-btn-bg-color: rgba(255, 255, 255, 0.5);
55
+ --page-btn-bg-color: rgb(255 255 255 / 0.5);
52
56
  --page-btn-hover-bg-color: var(--va-c-primary-lighter);
53
57
  --page-btn-active-bg-color: var(--va-c-primary-light);
54
58
  }
@@ -69,10 +73,10 @@ const { curPage, totalPages, showPage, getTo, surLen, prevTo, nextTo, showPrev,
69
73
  width: 2rem;
70
74
  height: 2rem;
71
75
  margin: 0;
72
- transition: background-color var(--va-transition-duration) ease;
73
76
 
74
77
  // disabled attr
75
78
  &[disabled] {
79
+ color: var(--va-c-text-light);
76
80
  background-color: var(--va-c-bg-mute);
77
81
  }
78
82
  }
@@ -84,19 +88,22 @@ const { curPage, totalPages, showPage, getTo, surLen, prevTo, nextTo, showPrev,
84
88
  background-color: var(--page-btn-bg-color);
85
89
 
86
90
  &:hover {
87
- color: var(--va-c-bg);
91
+ // color: var(--va-c-bg);
92
+ color: white;
88
93
  background: var(--page-btn-hover-bg-color);
89
94
  }
90
95
 
91
96
  &:active {
92
- color: var(--va-c-bg);
97
+ // color: var(--va-c-bg);
98
+ color: white;
93
99
  background: var(--page-btn-active-bg-color);
94
100
  }
95
101
 
96
102
  &.active {
103
+ // color: var(--va-c-bg);
104
+ color: white;
97
105
  font-weight: normal;
98
106
  background: var(--page-btn-active-bg-color);
99
- color: var(--va-c-bg);
100
107
  cursor: default;
101
108
  }
102
109
 
@@ -52,12 +52,12 @@ const { icon, styles } = usePostProperty(props.post.type)
52
52
  </div>
53
53
  <!-- <div m="b-5" /> -->
54
54
 
55
- <div v-if="post.excerpt" w="full" h="10" class="absolute bottom-0 bg-gradient-to-t from-$va-c-bg-light to-transparent z-1" />
55
+ <YunExcerptBottomGradient v-if="post.excerpt" />
56
56
 
57
57
  <a
58
58
  v-if="post.url"
59
59
  :href="post.url"
60
- class="post-link-btn shadow hover:shadow-md"
60
+ class="post-link-btn shadow hover:shadow-md z-2"
61
61
  rounded
62
62
  target="_blank"
63
63
  m="b-4"
@@ -1,15 +1,15 @@
1
1
  <script setup lang="ts">
2
- import { computed } from 'vue'
2
+ import { computed, ref } from 'vue'
3
3
  import { useSiteConfig, useSiteStore } from 'valaxy'
4
4
  import type { Post } from 'valaxy/types'
5
5
 
6
6
  const props = withDefaults(defineProps<{
7
7
  type?: string
8
8
  posts?: Post[]
9
- curPage?: number
10
- }>(), {
11
- curPage: 1,
12
- })
9
+ }>(), {})
10
+
11
+ const paginationRef = ref()
12
+ const curPage = computed(() => paginationRef.value?.curPage || 1)
13
13
 
14
14
  const site = useSiteStore()
15
15
  const siteConfig = useSiteConfig()
@@ -21,8 +21,8 @@ const posts = computed(() => (
21
21
 
22
22
  const displayedPosts = computed(() =>
23
23
  posts.value.slice(
24
- (props.curPage - 1) * pageSize.value,
25
- props.curPage * pageSize.value,
24
+ (curPage.value - 1) * pageSize.value,
25
+ curPage.value * pageSize.value,
26
26
  ),
27
27
  )
28
28
  </script>
@@ -39,6 +39,7 @@ const displayedPosts = computed(() =>
39
39
  </div>
40
40
 
41
41
  <YunPagination
42
+ ref="paginationRef"
42
43
  class="mt-5"
43
44
  :total="posts.length" :page-size="pageSize"
44
45
  />
@@ -5,7 +5,7 @@
5
5
 
6
6
  <div
7
7
  flex="~ col"
8
- class="justify-center items-center absolute bottom-5 md:bottom-12 left-0 right-0"
8
+ class="justify-center items-center absolute bottom-$rect-margin left-0 right-0"
9
9
  >
10
10
  <PrologueSocialLinks />
11
11
  </div>
@@ -1,16 +1,19 @@
1
1
  <script setup lang="ts">
2
2
  // 播放完销毁 css 动画
3
+ import { sleep } from 'valaxy'
3
4
  import { onMounted, ref } from 'vue'
4
5
 
5
6
  const props = defineProps<{
7
+ delay: number
6
8
  duration: number
7
9
  }>()
8
10
 
9
- const destroy = ref(false)
10
- onMounted(() => {
11
- setTimeout(() => {
12
- destroy.value = true
13
- }, props.duration)
11
+ const destroy = ref(true)
12
+ onMounted(async () => {
13
+ await sleep(props.delay)
14
+ destroy.value = false
15
+ await sleep(props.duration)
16
+ destroy.value = true
14
17
  })
15
18
  </script>
16
19
 
@@ -7,6 +7,7 @@ const siteConfig = useSiteConfig()
7
7
  <template>
8
8
  <img
9
9
  class="rounded-full size-full"
10
- :src="siteConfig.author.avatar" alt="avatar"
10
+ :src="siteConfig.author.avatar"
11
+ alt="avatar"
11
12
  >
12
13
  </template>
@@ -1,122 +1,73 @@
1
1
  <script setup lang="ts">
2
- import { useMotion } from '@vueuse/motion'
3
2
  import { ref } from 'vue'
4
- import { useSiteConfig } from 'valaxy'
5
- import { cubicBezier } from '../../client/constants'
6
3
  import { useThemeConfig } from '../../composables'
7
4
 
8
- const siteConfig = useSiteConfig()
9
5
  const themeConfig = useThemeConfig()
10
6
 
11
7
  const showContent = ref(false)
12
- const avatarRef = ref<HTMLElement>()
13
- const motionInstance = useMotion(avatarRef, {
14
- initial: {
15
- borderRadius: '0%',
16
- width: 'var(--total-char-height)',
17
- height: 'var(--total-char-height)',
18
- rotate: 135,
19
- y: '0%',
20
- },
21
- enter: {
22
- borderRadius: '50%',
23
- rotate: 0,
24
- y: '0%',
25
- width: '120px',
26
- height: '120px',
27
- boxShadow: 'none',
28
- transition: {
29
- type: 'keyframes',
30
- ease: cubicBezier.easeIn,
31
- duration: 800,
32
- onComplete: () => {
33
- motionInstance.variant.value = 'leave'
34
- showContent.value = true
35
- },
36
- },
37
- },
38
- leave: {
39
- // y: '-50%',
40
- boxShadow: '0 5px 100px rgba(0, 0, 0, 0.15)',
41
- transition: {
42
- type: 'keyframes',
43
- ease: cubicBezier.easeInOut,
44
- duration: 500,
45
- },
46
- },
47
- })
48
-
49
- const introRef = ref<HTMLElement>()
50
- useMotion(introRef, {
51
- initial: {
52
- y: '0%',
53
- },
54
- enter: {
55
- y: 'calc(-50%)',
56
- transition: {
57
- delay: 800,
58
- type: 'keyframes',
59
- ease: cubicBezier.easeInOut,
60
- duration: 400,
61
- },
62
- },
63
- })
64
8
  </script>
65
9
 
66
10
  <template>
67
11
  <div
68
12
  flex="~ col"
69
- class="yun-square-container items-center justify-center text-center"
70
- :class="{
71
- 'size-$total-char-height': !showContent,
72
- }"
13
+ class="yun-square-container items-center justify-center text-center size-$total-char-height"
73
14
  >
74
15
  <slot />
75
16
 
76
17
  <div
77
- ref="introRef"
78
18
  flex="~ col center"
79
- class="info relative"
19
+ class="info-with-avatar relative duration-800 transition-cubic-bezier-ease-in"
20
+ :class="{
21
+ show: showContent,
22
+ }"
80
23
  >
81
- <div
82
- ref="avatarRef" flex="~ col" class="absolute yun-square bg-$va-c-text square-rotate w-full"
24
+ <Transition
25
+ enter-from-class="enter-from"
26
+ enter-to-class="enter-to"
27
+ appear
28
+ @after-appear="showContent = true"
83
29
  >
84
- <LineBurstEffects
85
- class="absolute top-0 left-0 right-0 bottom-0 size-full scale-200"
86
- :duration="800"
87
- />
88
- <YunAuthorAvatar />
89
- </div>
30
+ <div
31
+ flex="~ col"
32
+ class="absolute yun-square bg-$va-c-text square-rotate z-1"
33
+ >
34
+ <LineBurstEffects
35
+ class="absolute top-0 left-0 right-0 bottom-0 size-full scale-200"
36
+ :delay="200"
37
+ :duration="400"
38
+ />
39
+ <Transition
40
+ enter-from-class="op-0"
41
+ enter-to-class="op-100"
42
+ enter-active-class="transition-400 delay-400"
43
+ appear
44
+ >
45
+ <YunAuthorAvatar />
46
+ </Transition>
47
+ </div>
48
+ </Transition>
90
49
 
91
50
  <div
92
- v-if="showContent"
93
- v-motion
94
- :initial="{
95
- opacity: 0,
96
- y: '0',
97
- }"
98
- :enter="{
99
- opacity: 1,
100
- y: 'calc(50% + 60px)',
101
- transition: {
102
- type: 'keyframes',
103
- ease: cubicBezier.easeInOut,
104
- duration: 400,
105
- },
51
+ class="info"
52
+ :class="{
53
+ show: showContent,
106
54
  }"
107
55
  >
108
56
  <YunAuthorName class="mt-3" />
109
57
  <YunAuthorIntro />
110
- <YunSiteTitle />
111
- <h4 v-if="siteConfig.subtitle" class="site-subtitle block text-$va-c-text op-80" text="sm">
112
- {{ siteConfig.subtitle }}
113
- </h4>
114
- <div v-if="siteConfig.description" class="site-description my-1">
115
- {{ siteConfig.description }}
58
+
59
+ <YunDivider />
60
+
61
+ <div flex="~ col" class="gap-2 items-center justify-center">
62
+ <YunSiteTitle />
63
+ <YunSiteSubtitle />
64
+ <YunSiteDescription />
116
65
  </div>
117
66
 
67
+ <YunDivider />
68
+
118
69
  <div
119
- class="mt-4 flex-center w-50 md:w-100 m-auto gap-2"
70
+ class="mt-4 flex-center w-64 md:w-100 m-auto gap-2"
120
71
  flex="~ wrap"
121
72
  p="x-$rect-margin"
122
73
  >
@@ -141,4 +92,45 @@ useMotion(introRef, {
141
92
  <style lang="scss">
142
93
  @use 'sass:map';
143
94
  @use 'valaxy-theme-yun/styles/vars.scss' as *;
95
+
96
+ .yun-square {
97
+ transition: all 0.8s map.get($cubic-bezier, 'ease-in');
98
+ border-radius: 50%;
99
+ transform: rotate(0deg) translateY(0%);
100
+ width: var(--avatar-size);
101
+ height: var(--avatar-size);
102
+ box-shadow: 0 5px 100px rgb(0 0 0 / 0.15);
103
+
104
+ &.enter-from {
105
+ border-radius: 0%;
106
+ width: var(--total-char-height);
107
+ height: var(--total-char-height);
108
+ transform: rotate(135deg) translateY(0%);
109
+ box-shadow: none;
110
+ }
111
+ }
112
+
113
+ .yun-square-container {
114
+ --avatar-size: 100px;
115
+
116
+ .info-with-avatar {
117
+ position: relative;
118
+
119
+ &.show {
120
+ transform: translateY(-50%);
121
+ }
122
+ }
123
+
124
+ .info {
125
+ position: relative;
126
+ opacity: 0;
127
+ transform: translateY(0);
128
+ transition: all 0.8s map.get($cubic-bezier, 'ease-in');
129
+
130
+ &.show {
131
+ opacity: 1;
132
+ transform: translateY(calc(50% + var(--avatar-size) / 2));
133
+ }
134
+ }
135
+ }
144
136
  </style>
@@ -1,100 +1,44 @@
1
1
  <script setup lang="ts">
2
- import type { PopmotionTransitionProps } from '@vueuse/motion'
3
- import { useMotion } from '@vueuse/motion'
4
- import { useAppStore } from 'valaxy'
5
- import { computed, ref } from 'vue'
6
-
7
- const tlRef = ref<HTMLElement>()
8
- const trRef = ref<HTMLElement>()
9
- const blRef = ref<HTMLElement>()
10
- const brRef = ref<HTMLElement>()
11
-
12
- const app = useAppStore()
13
- const cornerSize = computed(() => {
14
- return app.isMobile ? 40 : 50
15
- })
16
- const cornerMargin = computed(() => {
17
- return app.isMobile ? 10 : 30
18
- })
19
- const cornerBorderSize = computed(() => {
20
- return app.isMobile ? 3 : 5
21
- })
22
-
23
- const cornerTransitionProps: PopmotionTransitionProps = {
24
- type: 'spring',
25
- duration: 600,
26
- }
2
+ import { onMounted, ref } from 'vue'
27
3
 
28
- useMotion(tlRef, {
29
- initial: {
30
- x: -cornerMargin.value,
31
- y: -cornerMargin.value,
32
- },
33
- enter: {
34
- x: 0,
35
- y: 0,
36
- transition: cornerTransitionProps,
37
- },
38
- })
39
-
40
- useMotion(trRef, {
41
- initial: {
42
- x: cornerMargin.value,
43
- y: -cornerMargin.value,
44
- },
45
- enter: {
46
- x: 0,
47
- y: 0,
48
- transition: cornerTransitionProps,
49
- },
50
- })
51
-
52
- useMotion(blRef, {
53
- initial: {
54
- x: -cornerMargin.value,
55
- y: cornerMargin.value,
56
- },
57
- enter: {
58
- x: 0,
59
- y: 0,
60
- transition: cornerTransitionProps,
61
- },
62
- })
63
-
64
- useMotion(brRef, {
65
- initial: {
66
- x: cornerMargin.value,
67
- y: cornerMargin.value,
68
- },
69
- enter: {
70
- x: 0,
71
- y: 0,
72
- transition: cornerTransitionProps,
73
- },
74
- })
75
-
76
- const cssVarStyles = computed(() => {
77
- return {
78
- '--corner-size': `${cornerSize.value}px`,
79
- '--corner-margin': `${cornerMargin.value}px`,
80
- '--corner-border-size': `${cornerBorderSize.value}px`,
81
- }
4
+ const playAnim = ref(false)
5
+ onMounted(() => {
6
+ playAnim.value = true
82
7
  })
83
8
  </script>
84
9
 
85
10
  <template>
86
11
  <div
87
- class="ae-frame" :style="cssVarStyles"
12
+ class="yun-ae-frame"
13
+ :class="{
14
+ play: playAnim,
15
+ }"
88
16
  >
89
- <div ref="tlRef" class="absolute" />
90
- <div ref="trRef" class="absolute" />
91
- <div ref="blRef" class="absolute" />
92
- <div ref="brRef" class="absolute" />
17
+ <div class="tl absolute" />
18
+ <div class="tr absolute" />
19
+ <div class="bl absolute" />
20
+ <div class="br absolute" />
93
21
  </div>
94
22
  </template>
95
23
 
96
24
  <style lang="scss">
97
- .ae-frame {
25
+ @use 'sass:map';
26
+ @use 'valaxy/client/styles/mixins/index.scss' as *;
27
+ @use 'valaxy-theme-yun/styles/vars.scss' as *;
28
+
29
+ @include screen('md') {
30
+ .yun-ae-frame {
31
+ --corner-size: 50px;
32
+ --corner-margin: 30px;
33
+ --corner-border-size: 5px;
34
+ }
35
+ }
36
+
37
+ .yun-ae-frame {
38
+ --corner-size: 40px;
39
+ --corner-margin: 8px;
40
+ --corner-border-size: 3px;
41
+
98
42
  div {
99
43
  width: var(--corner-size);
100
44
  height: var(--corner-size);
@@ -151,5 +95,44 @@ const cssVarStyles = computed(() => {
151
95
  }
152
96
  }
153
97
  }
98
+
99
+ .tl, .tr, .bl, .br {
100
+ position: absolute;
101
+ transition: transform 0.6s map.get($cubic-bezier, 'ease-in');
102
+ }
103
+
104
+ .tl {
105
+ transform: translate(calc(var(--corner-margin) * -1), calc(var(--corner-margin) * -1));
106
+ }
107
+
108
+ .tr {
109
+ transform: translate(calc(var(--corner-margin)), calc(var(--corner-margin) * -1));
110
+ }
111
+
112
+ .bl {
113
+ transform: translate(calc(var(--corner-margin) * -1), calc(var(--corner-margin)));
114
+ }
115
+
116
+ .br {
117
+ transform: translate(calc(var(--corner-margin)), calc(var(--corner-margin)));
118
+ }
119
+
120
+ &.play {
121
+ .tl {
122
+ transform: translate(0, 0);
123
+ }
124
+
125
+ .tr {
126
+ transform: translate(0, 0);
127
+ }
128
+
129
+ .bl {
130
+ transform: translate(0, 0);
131
+ }
132
+
133
+ .br {
134
+ transform: translate(0, 0);
135
+ }
136
+ }
154
137
  }
155
138
  </style>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { useSiteConfig } from 'valaxy'
3
+
4
+ const siteConfig = useSiteConfig()
5
+ </script>
6
+
7
+ <template>
8
+ <div v-if="siteConfig.description" class="site-description text-$va-c-text text-sm">
9
+ {{ siteConfig.description }}
10
+ </div>
11
+ </template>
@@ -15,7 +15,7 @@ const yunApp = useYunAppStore()
15
15
  inline-flex
16
16
  :to="page.url" :title="page.name"
17
17
  :style="`color:${page.color}`"
18
- hover="bg-gray-100/50 dark:bg-gray-800/50"
18
+ hover="bg-white/80 dark:bg-black/80"
19
19
  @click="yunApp.fullscreenMenu.isOpen = false"
20
20
  >
21
21
  <div :class="page.icon" class="icon" />
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import { useSiteConfig } from 'valaxy'
3
+
4
+ const siteConfig = useSiteConfig()
5
+ </script>
6
+
7
+ <template>
8
+ <h4
9
+ v-if="siteConfig.subtitle"
10
+ class="site-subtitle block text-$va-c-text op-80" text="sm"
11
+ >
12
+ {{ siteConfig.subtitle }}
13
+ </h4>
14
+ </template>
@@ -0,0 +1,3 @@
1
+ <template>
2
+ <div class="h-1px bg-black/50 dark:bg-white/80 my-4 md:my-6" />
3
+ </template>
@@ -0,0 +1,6 @@
1
+ <template>
2
+ <div
3
+ w="full" h="10"
4
+ class="absolute bottom-0 bg-gradient-to-t from-$va-c-bg-light to-transparent z-1"
5
+ />
6
+ </template>
@@ -12,6 +12,10 @@ export function useYunSpringAnimation(target: MaybeRef<HTMLElement | undefined>,
12
12
  i: number
13
13
  y?: number
14
14
  duration?: number
15
+ /**
16
+ * delay in ms
17
+ */
18
+ delay?: number
15
19
  }) {
16
20
  useMotion(target, {
17
21
  initial: {
@@ -22,7 +26,7 @@ export function useYunSpringAnimation(target: MaybeRef<HTMLElement | undefined>,
22
26
  opacity: 1,
23
27
  y: 0,
24
28
  transition: {
25
- delay: options.i * 50,
29
+ delay: options.i * (options.delay || 50),
26
30
  type: 'spring',
27
31
  ease: cubicBezier.easeIn,
28
32
  damping: 8,
package/layouts/home.vue CHANGED
@@ -16,7 +16,7 @@ const showNotice = computed(() => {
16
16
 
17
17
  <template>
18
18
  <YunLayoutWrapper
19
- class="items-center flex-col"
19
+ class="items-center flex-col"
20
20
  :class="{
21
21
  'mt-0!': !isPage,
22
22
  }"
@@ -29,7 +29,7 @@ const showNotice = computed(() => {
29
29
 
30
30
  <YunNotice
31
31
  v-if="showNotice"
32
- class="mb-10"
32
+ class="mb-2 md:mb-6"
33
33
  :class="{
34
34
  'mt-4': !isPage,
35
35
  }"
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "valaxy-theme-yun",
3
- "version": "0.20.0-beta.8",
3
+ "type": "module",
4
+ "version": "0.20.0",
4
5
  "author": {
5
6
  "email": "me@yunyoujun.cn",
6
7
  "name": "YunYouJun",
@@ -19,23 +20,23 @@
19
20
  },
20
21
  "main": "index.ts",
21
22
  "module": "index.ts",
22
- "scripts": {
23
- "release": "bumpp && npm publish"
24
- },
25
23
  "dependencies": {
26
24
  "@ctrl/tinycolor": "^4.1.0",
27
25
  "@explosions/fireworks": "^0.1.0",
28
- "@iconify-json/ant-design": "^1.2.1",
29
- "@iconify-json/simple-icons": "^1.2.5",
26
+ "@iconify-json/ant-design": "^1.2.2",
27
+ "@iconify-json/simple-icons": "^1.2.7",
30
28
  "@vueuse/motion": "^2.2.5",
31
29
  "animejs": "^3.2.2",
32
30
  "gsap": "^3.12.5",
33
- "primevue": "^4.0.7",
34
- "radix-vue": "^1.9.6"
31
+ "primevue": "^4.1.0",
32
+ "radix-vue": "^1.9.7"
35
33
  },
36
34
  "devDependencies": {
37
35
  "@types/animejs": "^3.1.12",
38
- "valaxy": "workspace:*",
39
- "valaxy-addon-waline": "workspace:*"
36
+ "valaxy-addon-waline": "0.2.0",
37
+ "valaxy": "0.20.0"
38
+ },
39
+ "scripts": {
40
+ "release": "bumpp && npm publish"
40
41
  }
41
- }
42
+ }
@@ -4,6 +4,14 @@
4
4
  @use 'sass:map';
5
5
  @use '../vars.scss' as *;
6
6
 
7
+ .transition-cubic-bezier-ease-in {
8
+ transition-timing-function: map.get($cubic-bezier, 'ease-in');
9
+ }
10
+
11
+ .transition-cubic-bezier-ease-in-out {
12
+ transition-timing-function: map.get($cubic-bezier, 'ease-in-out');
13
+ }
14
+
7
15
  .v-enter-active,
8
16
  .v-leave-active {
9
17
  transition: opacity .2s map.get($cubic-bezier, 'ease-in');
@@ -26,7 +26,7 @@ html.dark {
26
26
  // animation
27
27
  @media screen and (width <= 768px) {
28
28
  :root {
29
- --rect-margin: 20px;
29
+ --rect-margin: 16px;
30
30
  }
31
31
  }
32
32
 
@@ -1,6 +1,7 @@
1
1
  import { gsap } from 'gsap'
2
- // use it for esm
3
- import ScrollToPlugin from 'gsap/ScrollToPlugin'
2
+ // gsap/ScrollToPlugin is ESM, but gsap not include 'type:module' in package.json
3
+ // use cjs for vite-ssg, optimizeDeps for ESM
4
+ import ScrollToPlugin from 'gsap/dist/ScrollToPlugin'
4
5
 
5
6
  gsap.registerPlugin(ScrollToPlugin)
6
7
 
package/valaxy.config.ts CHANGED
@@ -20,6 +20,7 @@ function ThemeVitePlugin(options: ResolvedValaxyOptions<ThemeConfig>): Plugin {
20
20
  },
21
21
 
22
22
  optimizeDeps: {
23
+ include: ['gsap/dist/ScrollToPlugin'],
23
24
  exclude: ['@docsearch/js'],
24
25
  },
25
26
  }