valaxy-theme-yun 0.19.13 → 0.20.0-beta.1

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.
Files changed (106) hide show
  1. package/App.vue +30 -4
  2. package/client/constants/index.ts +13 -0
  3. package/components/ValaxyMain.vue +48 -52
  4. package/components/YunAside.vue +66 -43
  5. package/components/YunBackToTop.vue +11 -4
  6. package/components/YunBanner.vue +31 -15
  7. package/components/YunBg.vue +2 -0
  8. package/components/YunCard.vue +5 -1
  9. package/components/YunCategories.vue +14 -34
  10. package/components/YunCategory.vue +42 -11
  11. package/components/YunClassifyPopover.vue +59 -0
  12. package/components/YunCloud.vue +5 -10
  13. package/components/YunConfig.vue +2 -19
  14. package/components/YunDebug.vue +47 -0
  15. package/components/YunDock.vue +223 -0
  16. package/components/YunFooter.vue +56 -4
  17. package/components/YunFullscreenMenu.vue +57 -0
  18. package/components/YunGirlItem.vue +98 -0
  19. package/components/YunGirls.vue +2 -73
  20. package/components/YunGoDown.vue +8 -15
  21. package/components/YunLinkItem.vue +62 -0
  22. package/components/YunLinks.vue +15 -47
  23. package/components/YunNavMenu.vue +125 -0
  24. package/components/YunOutline.vue +1 -2
  25. package/components/YunOverlay.vue +31 -0
  26. package/components/YunOverview.vue +2 -74
  27. package/components/YunPageHeader.vue +1 -1
  28. package/components/YunPagination.vue +105 -0
  29. package/components/YunPostCard.vue +32 -3
  30. package/components/YunPostCategories.vue +3 -3
  31. package/components/YunPostCollapse.vue +7 -72
  32. package/components/YunPostCollapseItem.vue +137 -0
  33. package/components/YunPostDateMeta.vue +30 -0
  34. package/components/YunPostList.vue +6 -11
  35. package/components/YunPostMeta.vue +31 -39
  36. package/components/YunPostTags.vue +2 -2
  37. package/components/YunPostsInfo.vue +41 -0
  38. package/components/YunPrologue.vue +24 -0
  39. package/components/YunSearchBtn.vue +8 -6
  40. package/components/YunSelect.vue +1 -11
  41. package/components/YunSidebar.vue +7 -4
  42. package/components/YunSidebarCard.vue +10 -0
  43. package/components/YunSidebarNav.vue +0 -1
  44. package/components/YunSiteInfo.vue +72 -0
  45. package/components/YunSponsor.vue +21 -6
  46. package/components/animation/LineBurstEffects.vue +75 -0
  47. package/components/author/YunAuthorAvatar.vue +12 -0
  48. package/components/author/YunAuthorIntro.vue +11 -0
  49. package/components/author/YunAuthorName.vue +14 -0
  50. package/components/config/YunToggleDark.vue +37 -0
  51. package/components/layout/YunLayoutLeft.vue +12 -0
  52. package/components/layout/YunLayoutRight.vue +21 -0
  53. package/components/layout/YunLayoutWrapper.vue +17 -0
  54. package/components/menu/YunNavMenuItem.vue +22 -0
  55. package/components/menu/YunNavMenuTitle.vue +86 -0
  56. package/components/menu/YunPostClassifyNavItem.vue +30 -0
  57. package/components/page/YunPageHeaderGradient.vue +38 -0
  58. package/components/project/YunProjectCard.vue +94 -0
  59. package/components/project/YunProjectCollection.vue +15 -0
  60. package/components/project/YunProjectLinkItem.vue +60 -0
  61. package/components/project/YunProjectToggleButton.vue +16 -0
  62. package/components/project/YunProjects.vue +48 -0
  63. package/components/prologue/PrologueSocialIcon.vue +58 -0
  64. package/components/prologue/PrologueSocialLinks.vue +16 -0
  65. package/components/prologue/PrologueSquare.vue +144 -0
  66. package/components/prologue/YunAEFrame.vue +155 -0
  67. package/components/prologue/YunAERect.vue +127 -0
  68. package/components/site/YunFullscreenMenuItem.vue +26 -0
  69. package/components/site/YunFullscreenMenuList.vue +19 -0
  70. package/components/site/YunSiteLinkItem.vue +26 -0
  71. package/components/site/YunSiteLinks.vue +19 -0
  72. package/components/site/YunSiteTitle.vue +59 -0
  73. package/components/third/YunWalineMeta.vue +17 -5
  74. package/docs/zh-CN/config.md +0 -3
  75. package/layouts/archives.vue +33 -21
  76. package/layouts/categories.vue +43 -31
  77. package/layouts/default.vue +10 -5
  78. package/layouts/empty.vue +3 -0
  79. package/layouts/home.vue +12 -5
  80. package/layouts/post.vue +23 -20
  81. package/layouts/posts.vue +10 -0
  82. package/layouts/projects.vue +25 -0
  83. package/layouts/tags.vue +45 -41
  84. package/node/config.ts +2 -5
  85. package/package.json +10 -5
  86. package/pages/page/[page].vue +3 -6
  87. package/pages/posts/index.vue +11 -0
  88. package/setup/main.ts +51 -9
  89. package/stores/app.ts +25 -3
  90. package/styles/animations/index.scss +36 -0
  91. package/styles/common/markdown.scss +4 -0
  92. package/styles/css-vars.scss +19 -1
  93. package/styles/global.scss +8 -0
  94. package/styles/index.scss +1 -0
  95. package/styles/layout/index.scss +3 -0
  96. package/styles/modules/prologue.scss +1 -0
  97. package/styles/primevue/index.ts +7 -0
  98. package/styles/primevue/tooltip.scss +55 -0
  99. package/styles/primevue/tooltip.ts +14 -0
  100. package/styles/vars.scss +23 -2
  101. package/styles/widgets/banner.scss +26 -6
  102. package/types/index.d.ts +53 -5
  103. package/types/projects.ts +48 -0
  104. package/unocss.config.ts +1 -1
  105. package/utils/animation.ts +33 -0
  106. package/utils/index.ts +2 -0
@@ -1,7 +1,6 @@
1
1
  <script lang="ts" setup>
2
2
  import { useI18n } from 'vue-i18n'
3
3
  import type { Post } from 'valaxy'
4
- import type { StyleValue } from 'vue'
5
4
  import { usePostProperty } from '../composables'
6
5
 
7
6
  const props = defineProps<{
@@ -14,7 +13,12 @@ const { icon, styles } = usePostProperty(props.post.type)
14
13
  </script>
15
14
 
16
15
  <template>
17
- <YunCard m="y-4 auto" :class="post.cover ? 'post-card-image' : 'post-card'" overflow="hidden" :style="styles as StyleValue">
16
+ <YunCard
17
+ class="w-full"
18
+ m="auto"
19
+ :class="post.cover ? 'post-card-image' : 'post-card'"
20
+ overflow="hidden" :style="styles"
21
+ >
18
22
  <div class="flex flex-1 of-hidden justify-start items-start post-card-info" w="full">
19
23
  <img
20
24
  v-if="post.cover"
@@ -67,7 +71,7 @@ const { icon, styles } = usePostProperty(props.post.type)
67
71
  <div
68
72
  w="full" class="yun-card-actions flex justify-between"
69
73
  min-h="10"
70
- border="t" text="sm"
74
+ text="sm"
71
75
  >
72
76
  <div class="post-categories inline-flex" flex="wrap 1" items="center">
73
77
  <YunPostCategories m="l-1" :categories="post.categories" />
@@ -77,3 +81,28 @@ const { icon, styles } = usePostProperty(props.post.type)
77
81
  </div>
78
82
  </YunCard>
79
83
  </template>
84
+
85
+ <style lang="scss">
86
+ .post-card {
87
+ // safari not support
88
+ // animation: card-appear 0.6s ease-in-out forwards, card-appear 0.6s ease-in-out forwards reverse;
89
+ // animation-timeline: view();
90
+ // animation-range: entry, exit;
91
+ }
92
+
93
+ @keyframes card-appear {
94
+ 0% {
95
+ opacity: 0;
96
+ transform: scale(0.8) translateY(20px);
97
+ }
98
+
99
+ 100% {
100
+ opacity: 1;
101
+ transform: scale(1) translateY(0);
102
+ }
103
+ }
104
+
105
+ .yun-card-actions {
106
+ border-top: 1px solid rgb(122 122 122 / 0.05);
107
+ }
108
+ </style>
@@ -12,14 +12,14 @@ defineProps<{
12
12
  path: '/categories',
13
13
  query: { category: Array.isArray(categories) ? categories.join('/') : categories },
14
14
  }"
15
- class="transition post-category inline-flex-center text-xs border-$va-c-divider hover:(text-blue-500 border-blue-500)"
15
+ class="transition post-category inline-flex-center text-xs border-$va-c-divider"
16
16
  px-2 h="7"
17
17
  border rounded-full
18
- bg="hover:(blue-500 opacity-10)"
18
+ hover="bg-blue-500 text-white"
19
19
  >
20
20
  <div m="x-1" inline-flex i-ri-folder-2-line />
21
21
  <span>
22
- {{ Array.isArray(categories) ? categories.join(' > ') : categories }}
22
+ {{ Array.isArray(categories) ? categories.join(' / ') : categories }}
23
23
  </span>
24
24
  </RouterLink>
25
25
  </template>
@@ -44,7 +44,7 @@ const sortedYears = computed(() => {
44
44
  </script>
45
45
 
46
46
  <template>
47
- <div class="post-collapse px-10 lt-sm:px-5" relative>
47
+ <div class="post-collapse px-10 lt-sm:px-5 max-w-3xl" relative>
48
48
  <div w="full" text="center" class="yun-text-light" p="2">
49
49
  {{ t('counter.archives', posts.length) }}
50
50
  </div>
@@ -63,23 +63,12 @@ const sortedYears = computed(() => {
63
63
  </h2>
64
64
  </div>
65
65
 
66
- <article
67
- v-for="post, j in sortByDate(postListByYear[year], isDesc)" :key="j"
68
- class="post-item" relative
69
- >
70
- <header class="post-header" flex items-center relative>
71
- <div class="post-meta">
72
- <time v-if="post.date" class="post-time" font="mono" opacity="80">{{
73
- formatDate(post.date, 'MM-dd') }}
74
- </time>
75
- </div>
76
- <h2 class="post-title" inline-flex items-center font="serif black">
77
- <RouterLink :to="post.path || ''" class="post-title-link">
78
- {{ post.title }}
79
- </RouterLink>
80
- </h2>
81
- </header>
82
- </article>
66
+ <YunPostCollapseItem
67
+ v-for="post, j in sortByDate(postListByYear[year], isDesc)"
68
+ :key="j"
69
+ :post="post"
70
+ :i="j"
71
+ />
83
72
  </div>
84
73
  </div>
85
74
  </template>
@@ -116,59 +105,5 @@ const sortedYears = computed(() => {
116
105
  }
117
106
  }
118
107
  }
119
-
120
- .post-item {
121
- &::before {
122
- content: '';
123
- position: absolute;
124
- width: 2px;
125
- height: 100%;
126
- background: rgba(var(--va-c-primary-rgb), 0.3);
127
- }
128
- }
129
-
130
- .post-header {
131
- border-bottom: 1px solid rgba(var(--va-c-primary-rgb), 0.3);
132
-
133
- &::before {
134
- content: '';
135
- position: absolute;
136
- left: 0;
137
- width: 10px;
138
- height: 10px;
139
- margin-left: -4px;
140
- border-radius: 50%;
141
- border: 1px solid var(--va-c-primary);
142
- background-color: var(--va-c-bg-light);
143
- z-index: 1;
144
- transition: background var(--va-transition-duration);
145
- }
146
-
147
- &:hover {
148
- &::before {
149
- background: var(--va-c-primary);
150
- }
151
- }
152
-
153
- .post-title {
154
- margin-left: 0.1rem;
155
- padding: 0;
156
- font-size: 1rem;
157
-
158
- .post-title-link {
159
- .icon {
160
- width: 1.1rem;
161
- height: 1.1rem;
162
- margin-right: 0.3rem;
163
- }
164
- }
165
- }
166
-
167
- .post-meta {
168
- font-size: 1rem;
169
- margin: 1rem 0 1rem 1.2rem;
170
- white-space: nowrap;
171
- }
172
- }
173
108
  }
174
109
  </style>
@@ -0,0 +1,137 @@
1
+ <script setup lang="ts">
2
+ import { useMotion } from '@vueuse/motion'
3
+ import type { Post } from 'valaxy'
4
+ import { formatDate } from 'valaxy'
5
+ import { ref } from 'vue'
6
+
7
+ const props = defineProps<{
8
+ i: number
9
+ post: Post
10
+ }>()
11
+
12
+ const show = ref(false)
13
+
14
+ const itemRef = ref<HTMLElement>()
15
+ useMotion(itemRef, {
16
+ initial: { opacity: 0, y: 20 },
17
+ enter: {
18
+ opacity: 1,
19
+ y: 0,
20
+ transition: {
21
+ duration: 200,
22
+ delay: props.i * 50,
23
+ onComplete() {
24
+ show.value = true
25
+ },
26
+ },
27
+ },
28
+ })
29
+ </script>
30
+
31
+ <template>
32
+ <article
33
+ ref="itemRef"
34
+ class="post-item relative"
35
+ :class="{ show }"
36
+ >
37
+ <header
38
+ class="post-header cursor-pointer w-full" flex="~" items-center relative
39
+ hover="bg-black/1"
40
+ :class="{ show }"
41
+ >
42
+ <div class="post-meta">
43
+ <time v-if="post.date" class="post-time" font="mono" opacity="80">{{
44
+ formatDate(post.date, 'MM-dd') }}
45
+ </time>
46
+ </div>
47
+ <h2 class="post-title w-full" inline-flex items-center font="serif black">
48
+ <RouterLink :to="post.path || ''" class="post-title-link">
49
+ {{ post.title }}
50
+ </RouterLink>
51
+ </h2>
52
+ </header>
53
+ </article>
54
+ </template>
55
+
56
+ <style lang="scss">
57
+ @use 'sass:map';
58
+ @use 'valaxy-theme-yun/styles/vars.scss' as *;
59
+
60
+ .post-collapse {
61
+ .post-header {
62
+ &::before {
63
+ content: '';
64
+ position: absolute;
65
+ left: 0;
66
+ width: 10px;
67
+ height: 10px;
68
+ margin-left: -4px;
69
+ border-radius: 50%;
70
+ border: 1px solid var(--va-c-primary);
71
+ background-color: var(--va-c-bg-light);
72
+ z-index: 1;
73
+ transition: background var(--va-transition-duration);
74
+ }
75
+
76
+ &::after {
77
+ content: '';
78
+ position: absolute;
79
+ bottom: 0;
80
+ left: 0;
81
+ width: 0;
82
+ height: 1px;
83
+ background-color: rgba(var(--va-c-primary-rgb), 0.3);
84
+ transition: width 800ms map.get($cubic-bezier, 'ease-in');
85
+ }
86
+
87
+ &.show {
88
+ &::after {
89
+ width: 100%;
90
+ }
91
+ }
92
+
93
+ &:hover {
94
+ &::before {
95
+ background: var(--va-c-primary);
96
+ }
97
+ }
98
+
99
+ .post-title {
100
+ margin-left: 0.1rem;
101
+ padding: 0;
102
+ font-size: 1rem;
103
+
104
+ .post-title-link {
105
+ .icon {
106
+ width: 1.1rem;
107
+ height: 1.1rem;
108
+ margin-right: 0.3rem;
109
+ }
110
+ }
111
+ }
112
+
113
+ .post-meta {
114
+ font-size: 1rem;
115
+ margin: 1rem 0 1rem 1.2rem;
116
+ white-space: nowrap;
117
+ }
118
+ }
119
+
120
+ .post-item {
121
+ &::before {
122
+ content: '';
123
+ position: absolute;
124
+ width: 2px;
125
+ height: 0;
126
+ background: rgba(var(--va-c-primary-rgb), 0.3);
127
+ transition: height 600ms map.get($cubic-bezier, 'ease-in');
128
+ }
129
+
130
+ &.show {
131
+ &::before {
132
+ height: 100%;
133
+ }
134
+ }
135
+ }
136
+ }
137
+ </style>
@@ -0,0 +1,30 @@
1
+ <script lang="ts" setup>
2
+ import type { Post } from 'valaxy'
3
+ import { formatDate } from 'valaxy'
4
+ import { useI18n } from 'vue-i18n'
5
+ import { formatTimestamp } from '../utils'
6
+
7
+ defineProps<{
8
+ // FrontMatter
9
+ frontmatter: Post
10
+ }>()
11
+
12
+ const { t } = useI18n()
13
+ </script>
14
+
15
+ <template>
16
+ <div v-if="frontmatter.date" class="post-time flex items-center gap-4">
17
+ <span class="posted-time inline-flex-center gap-1" :title="t('post.posted') + formatTimestamp(frontmatter.date)">
18
+ <div class="inline-block" i-ri-calendar-line />
19
+ <time class="op-80">{{ formatDate(frontmatter.date) }}</time>
20
+ </span>
21
+
22
+ <span
23
+ v-if="frontmatter.updated && frontmatter.updated !== frontmatter.date"
24
+ class="edited-time inline-flex-center gap-1" :title="t('post.edited') + formatTimestamp(frontmatter.updated)"
25
+ >
26
+ <div i-ri-calendar-2-line />
27
+ <time class="op-80">{{ formatDate(frontmatter.updated) }}</time>
28
+ </span>
29
+ </div>
30
+ </template>
@@ -28,23 +28,18 @@ const displayedPosts = computed(() =>
28
28
  </script>
29
29
 
30
30
  <template>
31
- <div class="yun-post-list" w="full" p="x-4 lt-sm:0">
31
+ <div flex="~ col" class="yun-post-list gap-4" w="full" p="x-4 lt-sm:0">
32
32
  <template v-if="!displayedPosts.length">
33
33
  <div py2 op50 text-center>
34
34
  博主还什么都没写哦~
35
35
  </div>
36
36
  </template>
37
37
 
38
- <TransitionGroup name="fade">
39
- <YunPostCard v-for="route, i in displayedPosts" :key="i" :post="route" />
40
- </TransitionGroup>
38
+ <YunPostCard v-for="route, i in displayedPosts" :key="i" :post="route" />
41
39
  </div>
42
40
 
43
- <ValaxyPagination :cur-page="curPage" :page-size="pageSize" :total="posts.length" />
41
+ <YunPagination
42
+ class="mt-5"
43
+ :total="posts.length" :page-size="pageSize"
44
+ />
44
45
  </template>
45
-
46
- <style>
47
- .yun-card-actions {
48
- border-top: 1px solid rgba(122, 122, 122, 0.15);
49
- }
50
- </style>
@@ -1,14 +1,14 @@
1
1
  <script lang="ts" setup>
2
2
  import type { Post } from 'valaxy'
3
- import { formatDate, useSiteConfig } from 'valaxy'
3
+ import { useAppStore, useSiteConfig } from 'valaxy'
4
4
  import { useI18n } from 'vue-i18n'
5
- import { formatTimestamp } from '../utils'
6
5
 
7
6
  defineProps<{
8
7
  // FrontMatter
9
8
  frontmatter: Post
10
9
  }>()
11
10
 
11
+ const app = useAppStore()
12
12
  const { t } = useI18n()
13
13
 
14
14
  const siteConfig = useSiteConfig()
@@ -27,50 +27,42 @@ const siteConfig = useSiteConfig()
27
27
  </div>
28
28
 
29
29
  <div
30
- v-if="frontmatter" class="post-meta"
31
- flex="~ col" justify="center" items="center" text="sm" py="1"
30
+ v-if="frontmatter"
31
+ class="post-meta gap-4"
32
+ flex="~ center"
33
+ text="sm"
34
+ :class="{
35
+ 'flex-col gap-2!': app.isMobile || frontmatter.updated,
36
+ }"
32
37
  >
33
- <div v-if="frontmatter.date" class="post-time flex items-center">
34
- <span class="posted-time inline-flex-center" :title="t('post.posted') + formatTimestamp(frontmatter.date)">
35
- <div class="inline-block" i-ri-calendar-line />
36
- <time m="l-1">{{ formatDate(frontmatter.date) }}</time>
37
- </span>
38
+ <YunPostDateMeta :frontmatter="frontmatter" />
38
39
 
39
- <span
40
- v-if="frontmatter.updated && frontmatter.updated !== frontmatter.date"
41
- class="edited-time inline-flex-center" :title="t('post.edited') + formatTimestamp(frontmatter.updated)"
40
+ <div class="inline-flex-center gap-4">
41
+ <div
42
+ v-if="siteConfig.statistics.enable"
43
+ class="inline-flex-center post-counter gap-4"
42
44
  >
43
- <span m="x-2">-</span>
44
- <div i-ri-calendar-2-line />
45
- <time m="l-1">{{ formatDate(frontmatter.updated) }}</time>
46
- </span>
47
- </div>
45
+ <span
46
+ v-if="frontmatter.wordCount"
47
+ class="word-count inline-flex-center gap-1" :title="t('statistics.word')"
48
+ >
49
+ <div class="inline-block" i-ri-file-word-line />
50
+ <span class="op-80">{{ frontmatter.wordCount }}</span>
51
+ </span>
48
52
 
49
- <div
50
- v-if="siteConfig.statistics.enable"
51
- class="post-counter flex items-center" mt="2"
52
- >
53
- <span
54
- v-if="frontmatter.wordCount"
55
- class="word-count inline-flex-center" :title="t('statistics.word')"
56
- >
57
- <div class="inline-block" i-ri-file-word-line />
58
- <span m="l-1">{{ frontmatter.wordCount }}</span>
59
- </span>
53
+ <span
54
+ v-if="frontmatter.readingTime"
55
+ class="reading-time inline-flex-center gap-1"
56
+ :title="t('statistics.time')"
57
+ >
58
+ <div i-ri-timer-line />
59
+ <time class="op-80">{{ frontmatter.readingTime }}m</time>
60
+ </span>
61
+ </div>
60
62
 
61
- <span
62
- v-if="frontmatter.readingTime"
63
- class="reading-time inline-flex-center"
64
- :title="t('statistics.time')"
65
- >
66
- <span m="x-2">-</span>
67
- <div i-ri-timer-line />
68
- <time m="l-1">{{ frontmatter.readingTime }}m</time>
69
- </span>
63
+ <YunWalineMeta />
70
64
  </div>
71
65
  </div>
72
-
73
- <slot />
74
66
  </template>
75
67
 
76
68
  <style>
@@ -13,11 +13,11 @@ defineProps<{
13
13
  >
14
14
  <RouterLink
15
15
  v-for="tag, i in tags" :key="i" :to="{ path: '/tags/', query: { tag } }"
16
- class="transition post-tag inline-flex-center text-xs border-$va-c-divider hover:(text-blue-500 border-blue-500)"
16
+ class="transition post-tag inline-flex-center text-xs border-$va-c-divider"
17
17
  px-2 h="7"
18
18
  rounded-full
19
19
  border
20
- bg="hover:(blue-500 opacity-10)"
20
+ hover="bg-blue-500 text-white"
21
21
  >
22
22
  <span>{{ tag }}</span>
23
23
  </RouterLink>
@@ -0,0 +1,41 @@
1
+ <script lang="ts" setup>
2
+ import { useCategories, useSiteStore, useTags } from 'valaxy'
3
+ import { useI18n } from 'vue-i18n'
4
+
5
+ const { t } = useI18n()
6
+
7
+ const site = useSiteStore()
8
+
9
+ const categories = useCategories()
10
+ const tags = useTags()
11
+ </script>
12
+
13
+ <template>
14
+ <nav class="site-nav" text-xl mt-2>
15
+ <YunPostClassifyNavItem
16
+ to="/archives/" icon="i-ri-archive-line" :title="t('menu.archives')"
17
+ :total="site.postList.length"
18
+ />
19
+ <YunPostClassifyNavItem
20
+ to="/categories/" icon="i-ri-folder-2-line" :title="t('menu.categories')"
21
+ :total="Array.from(categories.children).length"
22
+ />
23
+ <YunPostClassifyNavItem
24
+ to="/tags/" icon="i-ri-price-tag-3-line" :title="t('menu.tags')"
25
+ :total="Array.from(tags).length"
26
+ />
27
+ </nav>
28
+ </template>
29
+
30
+ <style lang="scss">
31
+ @use "valaxy/client/styles/mixins/index.scss" as *;
32
+
33
+ .site-nav {
34
+ display: flex;
35
+ justify-content: center;
36
+ overflow: hidden;
37
+ line-height: 1.5;
38
+ white-space: nowrap;
39
+ text-align: center;
40
+ }
41
+ </style>
@@ -0,0 +1,24 @@
1
+ <template>
2
+ <div class="grid-bg">
3
+ <YunAEFrame />
4
+ <YunAERect />
5
+
6
+ <div
7
+ flex="~ col"
8
+ class="justify-center items-center absolute bottom-5 md:bottom-12 left-0 right-0"
9
+ >
10
+ <PrologueSocialLinks />
11
+ </div>
12
+ </div>
13
+ </template>
14
+
15
+ <style lang="scss">
16
+ .grid-bg {
17
+ --size: 40px;
18
+
19
+ background:
20
+ linear-gradient(90deg, rgb(255 255 255 / .1) 1px, transparent 1px),
21
+ linear-gradient(rgb(255 255 255 / .1) 1px, transparent 1px);
22
+ background-size: var(--size) var(--size);
23
+ }
24
+ </style>
@@ -20,18 +20,20 @@ function onClick() {
20
20
  </script>
21
21
 
22
22
  <template>
23
- <button class="yun-search-btn popup-trigger yun-icon-btn" :title="t('menu.search')" @click="onClick">
24
- <div v-if="!open" i-ri-search-line />
23
+ <button
24
+ class="yun-search-btn popup-trigger size-12 inline-flex justify-center items-center"
25
+ text="xl $va-c-text"
26
+ hover="bg-white/80 dark:bg-black/80"
27
+ :title="t('menu.search')"
28
+ @click="onClick"
29
+ >
30
+ <div v-if="!open" i-ri-search-line op-80 hover="op-100" />
25
31
  <div v-else text="!2xl" i-ri-close-line />
26
32
  </button>
27
33
  </template>
28
34
 
29
35
  <style lang="scss">
30
36
  .yun-search-btn {
31
- position: fixed;
32
- top: 0.6rem;
33
- right: 0.8rem;
34
- color: var(--va-c-primary);
35
37
  z-index: var(--yun-z-search-btn);
36
38
  }
37
39
  </style>
@@ -22,7 +22,7 @@ function toggleOptionVisible(e: MouseEvent) {
22
22
  </script>
23
23
 
24
24
  <template>
25
- <div class="relative h-8 w-30 text-$va-c-text-2 z-10" @mousedown.stop>
25
+ <div class="relative h-8 w-30 text-$va-c-text-2 z-$yun-z-select" @mousedown.stop>
26
26
  <button
27
27
  class="flex h-full w-full px-2 items-center justify-between rounded transition"
28
28
  border="~ gray op-30"
@@ -55,14 +55,4 @@ function toggleOptionVisible(e: MouseEvent) {
55
55
  .select-options {
56
56
  margin: 0;
57
57
  }
58
-
59
- .v-enter-active,
60
- .v-leave-active {
61
- transition: opacity .2s ease;
62
- }
63
-
64
- .v-enter-from,
65
- .v-leave-to {
66
- opacity: 0;
67
- }
68
58
  </style>
@@ -13,13 +13,13 @@ const showOverview = ref(false)
13
13
  <template>
14
14
  <ValaxyOverlay class="md:hidden" :show="yunStore.leftSidebar.isOpen" @click="yunStore.leftSidebar.toggle()" />
15
15
 
16
- <ValaxyHamburger
16
+ <!-- <ValaxyHamburger
17
17
  :active="yunStore.leftSidebar.isOpen"
18
18
  class="menu-btn sidebar-toggle yun-icon-btn leading-4 fixed left-0.8rem top-0.6rem"
19
19
  inline-flex cursor="pointer" z="$yun-z-menu-btn"
20
20
  :class="showHamburger ? '' : 'md:hidden'"
21
21
  @click="yunStore.leftSidebar.toggle()"
22
- />
22
+ /> -->
23
23
 
24
24
  <aside
25
25
  class="va-card transition sidebar fixed inset-y-0 left-0 overflow-y-auto"
@@ -55,6 +55,9 @@ const showOverview = ref(false)
55
55
  </template>
56
56
 
57
57
  <style lang="scss">
58
+ @use 'sass:map';
59
+ @use 'valaxy-theme-yun/styles/vars.scss' as *;
60
+
58
61
  .sidebar {
59
62
  width: calc(100vw - 64px);
60
63
  max-width: var(--va-sidebar-width);
@@ -62,8 +65,8 @@ const showOverview = ref(false)
62
65
  background-position: bottom 1rem center;
63
66
  transform: translateX(-100%);
64
67
  transition: box-shadow var(--va-transition-duration),
65
- background-color var(--va-transition-duration), opacity 0.25s,
66
- transform var(--va-transition-duration) cubic-bezier(0.19, 1, 0.22, 1) !important;
68
+ background-color var(--va-transition-duration), opacity var(--va-transition-duration),
69
+ transform var(--va-transition-duration) map.get($cubic-bezier, 'ease-in-out') !important;
67
70
 
68
71
  &.open {
69
72
  transform: translateX(0);
@@ -0,0 +1,10 @@
1
+ <script setup lang="ts">
2
+ // new sidebar card
3
+ </script>
4
+
5
+ <template>
6
+ <YunCard class="p-4 min-h-sm">
7
+ <YunSiteInfo class="text-center" />
8
+ <YunPostsInfo />
9
+ </YunCard>
10
+ </template>
@@ -47,7 +47,6 @@ const tags = useTags()
47
47
  line-height: 1.5;
48
48
  white-space: nowrap;
49
49
  text-align: center;
50
- margin-top: 1rem;
51
50
  }
52
51
 
53
52
  .site-link-item {