chore: add demo/custom to custom theme in local, close #344

This commit is contained in:
YunYouJun 2024-02-12 18:36:34 +08:00
parent 90630037c1
commit 0ecc5b3094
66 changed files with 1496 additions and 13 deletions

20
demo/custom/.gitignore vendored Normal file
View File

@ -0,0 +1,20 @@
# valaxy
valaxy-fuse-list.json
# vite-ssg
.vite-ssg-dist
.vite-ssg-temp
temp/
.DS_Store
*.local
dist
dist-ssr
node_modules
.idea/
*.log
components.d.ts

3
demo/custom/.npmrc Normal file
View File

@ -0,0 +1,3 @@
# for pnpm
shamefully-hoist=true
strict-peer-dependencies=false

150
demo/custom/.valaxy/typed-router.d.ts vendored Normal file
View File

@ -0,0 +1,150 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-router. ‼️ DO NOT MODIFY THIS FILE ‼️
// It's recommended to commit this file.
// Make sure to add this file to your tsconfig.json file as an "includes" or "files" entry.
/// <reference types="unplugin-vue-router/client" />
import type {
// type safe route locations
RouteLocationTypedList,
RouteLocationResolvedTypedList,
RouteLocationNormalizedTypedList,
RouteLocationNormalizedLoadedTypedList,
RouteLocationAsString,
RouteLocationAsRelativeTypedList,
RouteLocationAsPathTypedList,
// helper types
// route definitions
RouteRecordInfo,
ParamValue,
ParamValueOneOrMore,
ParamValueZeroOrMore,
ParamValueZeroOrOne,
// vue-router extensions
_RouterTyped,
RouterLinkTyped,
RouterLinkPropsTyped,
NavigationGuard,
UseLinkFnTyped,
// data fetching
_DataLoader,
_DefineLoaderOptions,
} from 'unplugin-vue-router/types'
declare module 'vue-router/auto/routes' {
export interface RouteNamedMap {
'/': RouteRecordInfo<'/', '/', Record<never, never>, Record<never, never>>,
'/[...path]': RouteRecordInfo<'/[...path]', '/:path(.*)', { path: ParamValue<true> }, { path: ParamValue<false> }>,
'/404': RouteRecordInfo<'/404', '/404', Record<never, never>, Record<never, never>>,
'/about/': RouteRecordInfo<'/about/', '/about', Record<never, never>, Record<never, never>>,
'/about/site': RouteRecordInfo<'/about/site', '/about/site', Record<never, never>, Record<never, never>>,
'/archives/': RouteRecordInfo<'/archives/', '/archives', Record<never, never>, Record<never, never>>,
'/categories/': RouteRecordInfo<'/categories/', '/categories', Record<never, never>, Record<never, never>>,
'/links/': RouteRecordInfo<'/links/', '/links', Record<never, never>, Record<never, never>>,
'/posts/hello-valaxy': RouteRecordInfo<'/posts/hello-valaxy', '/posts/hello-valaxy', Record<never, never>, Record<never, never>>,
'/tags/': RouteRecordInfo<'/tags/', '/tags', Record<never, never>, Record<never, never>>,
}
}
declare module 'vue-router/auto' {
import type { RouteNamedMap } from 'vue-router/auto/routes'
export type RouterTyped = _RouterTyped<RouteNamedMap>
/**
* Type safe version of `RouteLocationNormalized` (the type of `to` and `from` in navigation guards).
* Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationNormalized<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationNormalizedTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocationNormalizedLoaded` (the return type of `useRoute()`).
* Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationNormalizedLoaded<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationNormalizedLoadedTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocationResolved` (the returned route of `router.resolve()`).
* Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationResolved<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationResolvedTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocation` . Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocation<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocationRaw` . Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationRaw<Name extends keyof RouteNamedMap = keyof RouteNamedMap> =
| RouteLocationAsString<RouteNamedMap>
| RouteLocationAsRelativeTypedList<RouteNamedMap>[Name]
| RouteLocationAsPathTypedList<RouteNamedMap>[Name]
/**
* Generate a type safe params for a route location. Requires the name of the route to be passed as a generic.
*/
export type RouteParams<Name extends keyof RouteNamedMap> = RouteNamedMap[Name]['params']
/**
* Generate a type safe raw params for a route location. Requires the name of the route to be passed as a generic.
*/
export type RouteParamsRaw<Name extends keyof RouteNamedMap> = RouteNamedMap[Name]['paramsRaw']
export function useRouter(): RouterTyped
export function useRoute<Name extends keyof RouteNamedMap = keyof RouteNamedMap>(name?: Name): RouteLocationNormalizedLoadedTypedList<RouteNamedMap>[Name]
export const useLink: UseLinkFnTyped<RouteNamedMap>
export function onBeforeRouteLeave(guard: NavigationGuard<RouteNamedMap>): void
export function onBeforeRouteUpdate(guard: NavigationGuard<RouteNamedMap>): void
export const RouterLink: RouterLinkTyped<RouteNamedMap>
export const RouterLinkProps: RouterLinkPropsTyped<RouteNamedMap>
// Experimental Data Fetching
export function defineLoader<
P extends Promise<any>,
Name extends keyof RouteNamedMap = keyof RouteNamedMap,
isLazy extends boolean = false,
>(
name: Name,
loader: (route: RouteLocationNormalizedLoaded<Name>) => P,
options?: _DefineLoaderOptions<isLazy>,
): _DataLoader<Awaited<P>, isLazy>
export function defineLoader<
P extends Promise<any>,
isLazy extends boolean = false,
>(
loader: (route: RouteLocationNormalizedLoaded) => P,
options?: _DefineLoaderOptions<isLazy>,
): _DataLoader<Awaited<P>, isLazy>
export {
_definePage as definePage,
_HasDataLoaderMeta as HasDataLoaderMeta,
_setupDataFetchingGuard as setupDataFetchingGuard,
_stopDataFetchingScope as stopDataFetchingScope,
} from 'unplugin-vue-router/runtime'
}
declare module 'vue-router' {
import type { RouteNamedMap } from 'vue-router/auto/routes'
export interface TypesConfig {
beforeRouteUpdate: NavigationGuard<RouteNamedMap>
beforeRouteLeave: NavigationGuard<RouteNamedMap>
$route: RouteLocationNormalizedLoadedTypedList<RouteNamedMap>[keyof RouteNamedMap]
$router: _RouterTyped<RouteNamedMap>
RouterLink: RouterLinkTyped<RouteNamedMap>
}
}

14
demo/custom/README.md Normal file
View File

@ -0,0 +1,14 @@
# Custom Theme Demo
This is a demo for custom theme in local.
```bash
pnpm i
pnpm dev
```
## Custom
## Ref
- [valaxy-theme-starter](https://github.com/valaxyjs/valaxy-theme-starter/): If you want to create a new theme and publish it, you can start from here.

View File

@ -0,0 +1,7 @@
# Components
Components in this dir will be auto-registered and on-demand, powered by [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components).
## Icons
You can use icons from almost any icon sets by the power of [Iconify](https://iconify.design/).

View File

@ -0,0 +1,3 @@
# layouts
You can override valaxy/theme layouts here.

View File

@ -0,0 +1,3 @@
# locales
You can custom i18n here.

View File

@ -0,0 +1,4 @@
# you can custom locale
intro:
desc: Valaxy Template
hi: Hello, Valaxy!

View File

@ -0,0 +1,4 @@
# 你可以像这样自定义 i18n
intro:
desc: Valaxy 模版
hi: 你好Valaxy

21
demo/custom/package.json Normal file
View File

@ -0,0 +1,21 @@
{
"name": "valaxy-blog",
"type": "module",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "npm run build:ssg",
"build:spa": "valaxy build",
"build:ssg": "valaxy build --ssg",
"dev": "valaxy",
"rss": "valaxy rss",
"serve": "vite preview"
},
"dependencies": {
"valaxy": "0.18.0-beta.0",
"valaxy-theme-custom": "./valaxy-theme-custom"
},
"devDependencies": {
"typescript": "^5.3.3"
}
}

3
demo/custom/pages/404.md Normal file
View File

@ -0,0 +1,3 @@
---
layout: 404
---

View File

@ -0,0 +1,15 @@
---
title: 关于我
---
I am developing [Valaxy](https://github.com/YunYouJun/valaxy) - Next Generation Static Blog Framework.
If you like it, you can sponsor me in [GitHub](https://github.com/sponsors/YunYouJun) or [sponsors.yunyoujun.cn](https://sponsors.yunyoujun.cn).
---
我正在开发 [Valaxy](https://github.com/YunYouJun/valaxy) - 下一代静态博客框架。
如果你喜欢它,你可以在 [GitHub](https://github.com/sponsors/YunYouJun) 或 [sponsors.yunyoujun.cn](https://sponsors.yunyoujun.cn) 赞助我。
Check out the [Valaxy | GitHub](https://github.com/YunYouJun/valaxy) for more details.

View File

@ -0,0 +1,7 @@
---
title: 关于站点
---
Valaxy + valaxy-theme-yun Demo Site
- Default Theme: [valaxy-theme-yun](https://github.com/YunYouJun/valaxy/blob/main/packages/valaxy-theme-yun/)

View File

@ -0,0 +1,5 @@
---
layout: archives
nav: false
comment: false
---

View File

@ -0,0 +1,9 @@
---
layout: categories
nav: false
toc: false
icon: i-ri-folder-2-line
# You can custom title
# title: 云游的小分类
# comment: false
---

View File

@ -0,0 +1,9 @@
---
title: 我的小伙伴们
keywords: 链接
description: 云游的小伙伴们
links: https://www.yunyoujun.cn/friends/links.json
random: true
---
<YunLinks :links="frontmatter.links" :random="frontmatter.random" />

View File

@ -0,0 +1,20 @@
---
title: Hello, Valaxy!
date: 2022-04-01
updated: 2022-04-01
categories: Valaxy 笔记
tags:
- valaxy
- 笔记
top: 1
---
## Valaxy
Next Generation Static Blog Framework.
Write your first post!
## Usage
Modify `valaxy.config.ts` to custom your blog.

View File

@ -0,0 +1,7 @@
---
layout: tags
# title: 云游的小标签
icon: i-ri-price-tag-3-line
nav: false
# comment: false
---

View File

@ -0,0 +1,3 @@
/assets/*
cache-control: max-age=31536000
cache-control: immutable

View File

@ -0,0 +1,33 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_757_102259" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="97" y="222" width="830" height="647">
<path fill-rule="evenodd" clip-rule="evenodd" d="M729.48 756.469C729.478 756.471 729.475 756.473 729.472 756.475C729.606 756.361 729.625 756.36 729.48 756.469ZM690.046 767.723C685.618 766.845 680.868 765.982 675.803 765.143C634.63 758.32 576.843 753.701 512.383 753.12C447.923 752.538 390.063 756.114 348.774 762.193C343.694 762.941 338.929 763.717 334.486 764.515C338.914 765.394 343.664 766.256 348.729 767.095C389.902 773.918 447.689 778.537 512.149 779.119C576.609 779.7 634.469 776.124 675.758 770.045C680.838 769.298 685.603 768.521 690.046 767.723ZM295.261 752.552C295.118 752.441 295.137 752.442 295.269 752.558C295.266 752.556 295.264 752.554 295.261 752.552ZM295.052 775.769C295.054 775.768 295.057 775.766 295.06 775.764C294.926 775.877 294.907 775.878 295.052 775.769ZM729.263 779.68C729.266 779.682 729.268 779.684 729.271 779.686C729.413 779.798 729.395 779.796 729.263 779.68ZM511.932 803.118C642.542 804.296 748.572 788.686 748.756 768.252C748.941 747.819 643.21 730.299 512.6 729.121C381.99 727.942 275.96 743.552 275.776 763.986C275.591 784.42 381.322 801.939 511.932 803.118Z" fill="url(#paint0_linear_757_102259)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M729.48 756.469C729.478 756.471 729.475 756.473 729.472 756.475C729.606 756.361 729.625 756.36 729.48 756.469ZM690.046 767.723C685.618 766.845 680.868 765.982 675.803 765.143C634.63 758.32 576.843 753.701 512.383 753.12C447.923 752.538 390.063 756.114 348.774 762.193C343.694 762.941 338.929 763.717 334.486 764.515C338.914 765.394 343.664 766.256 348.729 767.095C389.902 773.918 447.689 778.537 512.149 779.119C576.609 779.7 634.469 776.124 675.758 770.045C680.838 769.298 685.603 768.521 690.046 767.723ZM295.261 752.552C295.118 752.441 295.137 752.442 295.269 752.558C295.266 752.556 295.264 752.554 295.261 752.552ZM295.052 775.769C295.054 775.768 295.057 775.766 295.06 775.764C294.926 775.877 294.907 775.878 295.052 775.769ZM729.263 779.68C729.266 779.682 729.268 779.684 729.271 779.686C729.413 779.798 729.395 779.796 729.263 779.68ZM511.932 803.118C642.542 804.296 748.572 788.686 748.756 768.252C748.941 747.819 643.21 730.299 512.6 729.121C381.99 727.942 275.96 743.552 275.776 763.986C275.591 784.42 381.322 801.939 511.932 803.118Z" fill="url(#paint1_linear_757_102259)"/>
<mask id="mask1_757_102259" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="97" y="121" width="830" height="748">
<g style="mix-blend-mode:darken">
<ellipse cx="512" cy="766" rx="102.062" ry="102.062" transform="rotate(-15 512 766)" fill="#9038FF"/>
</g>
<rect x="-0.183013" y="-0.683013" width="579" height="159" transform="matrix(0.5 -0.866025 -0.866025 -0.5 635.881 702.112)" fill="#D9D9D9" stroke="black" stroke-linejoin="round"/>
<rect x="387.183" y="702.612" width="579" height="159" transform="rotate(-120 387.183 702.612)" fill="#D9D9D9" stroke="black" stroke-linejoin="round"/>
</mask>
<g mask="url(#mask1_757_102259)">
<rect x="-15" y="222" width="1071" height="979" fill="#D9D9D9"/>
</g>
</mask>
<g mask="url(#mask0_757_102259)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M1024 0H0V1024H1024V0ZM666 766C666 851.052 597.052 920 512 920C426.948 920 358 851.052 358 766C358 680.949 426.948 612 512 612C597.052 612 666 680.949 666 766ZM610.584 739.585C625.173 794.031 592.862 849.996 538.416 864.585C483.969 879.174 428.005 846.863 413.416 792.416C398.827 737.969 431.138 682.005 485.584 667.416C540.031 652.827 595.995 685.138 610.584 739.585Z" fill="url(#paint2_diamond_757_102259)"/>
</g>
<defs>
<linearGradient id="paint0_linear_757_102259" x1="472.734" y1="695.005" x2="499.213" y2="841.207" gradientUnits="userSpaceOnUse">
<stop stop-color="#9444FB"/>
<stop offset="1" stop-color="#4D08A4"/>
</linearGradient>
<linearGradient id="paint1_linear_757_102259" x1="543.866" y1="836.077" x2="534.684" y2="776.831" gradientUnits="userSpaceOnUse">
<stop stop-opacity="0.19"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
<radialGradient id="paint2_diamond_757_102259" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(510 767) rotate(-90) scale(1452.5)">
<stop stop-color="#8300EF"/>
<stop offset="1" stop-color="#3B82F6"/>
</radialGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,41 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M2916 6015 c-93 -57 -173 -108 -178 -113 -6 -6 7 -36 33 -78 23 -38
86 -141 139 -229 54 -88 135 -221 180 -295 46 -74 94 -155 108 -180 14 -25 29
-52 35 -60 7 -12 -9 -45 -62 -130 -39 -63 -85 -140 -103 -170 -18 -30 -117
-194 -222 -365 -104 -170 -199 -326 -210 -346 -12 -19 -61 -102 -111 -183 -49
-81 -101 -166 -115 -189 -14 -23 -39 -64 -55 -90 -17 -27 -77 -126 -134 -220
-57 -95 -127 -210 -156 -257 -194 -315 -325 -533 -325 -541 0 -5 -4 -9 -10 -9
-5 0 -10 -4 -10 -9 0 -5 -55 -98 -121 -207 -247 -404 -403 -660 -416 -684 -8
-14 -58 -97 -112 -185 l-98 -160 -189 -2 c-104 -1 -225 -2 -269 -2 l-80 -1 1
-210 c0 -116 4 -213 8 -218 11 -11 6107 -9 6114 2 8 13 8 406 0 419 -4 7 -88
10 -265 9 l-259 -2 -50 77 c-27 43 -54 87 -60 98 -6 11 -62 103 -124 205 -62
102 -120 197 -129 212 -9 16 -85 142 -170 280 -85 139 -160 262 -165 273 -6
11 -13 22 -16 25 -3 3 -30 46 -59 95 -30 50 -102 169 -161 265 -59 96 -240
393 -402 660 -163 267 -371 609 -463 760 -92 151 -194 318 -225 370 -31 52
-101 167 -155 255 l-97 160 27 50 c16 27 32 55 36 61 5 5 38 59 74 120 36 60
69 116 74 124 5 8 75 122 155 253 81 131 144 242 141 247 -4 7 -114 76 -183
115 -10 6 -52 32 -95 58 -42 27 -81 46 -87 42 -8 -5 -94 -140 -140 -219 -19
-33 -221 -365 -246 -404 -15 -22 -18 -18 -111 135 -52 87 -123 203 -157 258
-67 108 -67 110 -111 184 -16 28 -34 51 -40 50 -5 0 -86 -47 -179 -104z m739
-1642 c319 -526 519 -854 637 -1046 43 -70 78 -130 78 -133 0 -2 5 -10 10 -17
6 -7 69 -109 140 -227 72 -118 134 -222 139 -230 5 -8 55 -89 111 -180 56 -91
105 -172 110 -180 9 -14 52 -84 270 -445 54 -88 135 -221 180 -295 46 -74 91
-148 100 -165 9 -16 31 -53 48 -81 18 -28 32 -54 32 -57 0 -3 -403 -6 -895 -5
l-895 0 0 81 c-1 45 -1 439 -1 875 l0 792 -37 1 c-57 1 -344 1 -374 0 l-27 -1
0 -832 c0 -458 0 -852 0 -875 l-1 -42 -895 1 c-492 0 -895 3 -895 5 0 9 115
198 122 201 5 2 8 7 8 12 0 5 23 46 51 92 28 46 78 128 112 183 33 55 70 116
82 135 12 19 132 215 265 435 133 220 266 438 295 485 65 105 206 338 220 362
6 10 172 284 370 608 198 325 387 635 420 690 33 55 62 100 65 100 3 0 73
-111 155 -247z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

120
demo/custom/site.config.ts Normal file
View File

@ -0,0 +1,120 @@
import { defineSiteConfig } from 'valaxy'
export default defineSiteConfig({
url: 'https://valaxy.site/',
lang: 'zh-CN',
title: 'Valaxy Theme Yun',
author: {
name: '云游君',
},
description: 'Valaxy Theme Yun Preview.',
social: [
{
name: 'RSS',
link: '/atom.xml',
icon: 'i-ri-rss-line',
color: 'orange',
},
{
name: 'QQ 群 1050458482',
link: 'https://qm.qq.com/cgi-bin/qm/qr?k=kZJzggTTCf4SpvEQ8lXWoi5ZjhAx0ILZ&jump_from=webapi',
icon: 'i-ri-qq-line',
color: '#12B7F5',
},
{
name: 'GitHub',
link: 'https://github.com/YunYouJun',
icon: 'i-ri-github-line',
color: '#6e5494',
},
{
name: '微博',
link: 'https://weibo.com/jizhideyunyoujun',
icon: 'i-ri-weibo-line',
color: '#E6162D',
},
{
name: '豆瓣',
link: 'https://www.douban.com/people/yunyoujun/',
icon: 'i-ri-douban-line',
color: '#007722',
},
{
name: '网易云音乐',
link: 'https://music.163.com/#/user/home?id=247102977',
icon: 'i-ri-netease-cloud-music-line',
color: '#C20C0C',
},
{
name: '知乎',
link: 'https://www.zhihu.com/people/yunyoujun/',
icon: 'i-ri-zhihu-line',
color: '#0084FF',
},
{
name: '哔哩哔哩',
link: 'https://space.bilibili.com/1579790',
icon: 'i-ri-bilibili-line',
color: '#FF8EB3',
},
{
name: '微信公众号',
link: 'https://cdn.yunyoujun.cn/img/about/white-qrcode-and-search.jpg',
icon: 'i-ri-wechat-2-line',
color: '#1AAD19',
},
{
name: 'Twitter',
link: 'https://twitter.com/YunYouJun',
icon: 'i-ri-twitter-line',
color: '#1da1f2',
},
{
name: 'Telegram Channel',
link: 'https://t.me/elpsycn',
icon: 'i-ri-telegram-line',
color: '#0088CC',
},
{
name: 'E-Mail',
link: 'mailto:me@yunyoujun.cn',
icon: 'i-ri-mail-line',
color: '#8E71C1',
},
{
name: 'Travelling',
link: 'https://www.travellings.cn/go.html',
icon: 'i-ri-train-line',
color: 'var(--va-c-text)',
},
],
search: {
enable: false,
},
sponsor: {
enable: true,
title: '我很可爱,请给我钱!',
methods: [
{
name: '支付宝',
url: 'https://cdn.yunyoujun.cn/img/donate/alipay-qrcode.jpg',
color: '#00A3EE',
icon: 'i-ri-alipay-line',
},
{
name: 'QQ 支付',
url: 'https://cdn.yunyoujun.cn/img/donate/qqpay-qrcode.png',
color: '#12B7F5',
icon: 'i-ri-qq-line',
},
{
name: '微信支付',
url: 'https://cdn.yunyoujun.cn/img/donate/wechatpay-qrcode.jpg',
color: '#2DC100',
icon: 'i-ri-wechat-pay-line',
},
],
},
})

View File

@ -0,0 +1,8 @@
# styles
You can override styles here.
- New file `index.scss` to write global css.
- New file `css-vars.scss` to set css vars.
More info see <https://valaxy.site/guide/custom/styles>.

View File

@ -0,0 +1 @@
// you can custom css vars here

View File

@ -0,0 +1 @@
// you can custom css here

21
demo/custom/tsconfig.json Normal file
View File

@ -0,0 +1,21 @@
{
"compilerOptions": {
"target": "ESNext",
"jsx": "preserve",
"lib": ["DOM", "ESNext"],
"baseUrl": ".",
"module": "ESNext",
"moduleResolution": "node",
"paths": {
"~/*": ["./*"]
},
"resolveJsonModule": true,
"strict": true,
"strictNullChecks": true,
"noUnusedLocals": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"skipLibCheck": true
},
"exclude": ["dist", "node_modules"]
}

View File

@ -0,0 +1 @@
export * from '../composables'

View File

@ -0,0 +1,92 @@
<script setup lang="ts">
import { computed } from 'vue'
import { useRoute } from 'vue-router'
import { useFrontmatter, usePostList } from 'valaxy'
const frontmatter = useFrontmatter()
const route = useRoute()
const posts = usePostList()
function findCurrentIndex() {
return posts.value.findIndex(p => p.path === route.path)
}
const nextPost = computed(() => posts.value[findCurrentIndex() - 1])
const prevPost = computed(() => posts.value[findCurrentIndex() + 1])
</script>
<template>
<article class="xl:divide-y xl:divide-gray-200 xl:dark:divide-gray-700">
<header class="pt-6 xl:pb-10 space-y-1 text-center">
<StarterDate :date="frontmatter.date" />
<h1
class="
st-text
text-3xl
leading-9
font-extrabold
tracking-tight
sm:text-4xl sm:leading-10
md:text-5xl md:leading-14
"
>
{{ frontmatter.title }}
</h1>
</header>
<div
class="
divide-y
xl:divide-y-0
divide-gray-200 dark:divide-gray-700
xl:grid xl:grid-cols-4 xl:gap-x-10
pb-16
xl:pb-20
"
style="grid-template-rows: auto 1fr"
>
<StarterAuthor v-if="frontmatter.author" :frontmatter="frontmatter" />
<div class="divide-y divide-gray-200 dark:divide-gray-700 xl:pb-0 xl:col-span-3 xl:row-span-2">
<slot />
</div>
<footer
class="
text-sm
font-medium
leading-5
divide-y divide-gray-200 dark:divide-gray-700
xl:col-start-1 xl:row-start-2
"
>
<div v-if="nextPost && nextPost.path" class="py-8">
<h2 class="text-xs tracking-wide uppercase text-gray-500">
Next Article
</h2>
<div class="link">
<RouterLink :to="nextPost.path">
{{ nextPost.title }}
</RouterLink>
</div>
</div>
<div v-if="prevPost && prevPost.path" class="py-8">
<h2 class="text-xs tracking-wide uppercase text-gray-500">
Previous Article
</h2>
<div class="link">
<RouterLink :to="prevPost.path">
{{ prevPost.title }}
</RouterLink>
</div>
</div>
<div class="pt-8">
<RouterLink class="link" to="/">
Back to the blog
</RouterLink>
</div>
</footer>
</div>
</article>
</template>

View File

@ -0,0 +1,32 @@
<script lang="ts" setup>
import type { Post } from 'valaxy'
defineProps<{
post: Post
}>()
</script>
<template>
<article class="space-y-2 xl:grid xl:grid-cols-4 xl:space-y-0 xl:items-baseline">
<StarterDate :date="post.date" />
<div class="space-y-5 xl:col-span-3">
<div class="space-y-6">
<h2 class="text-2xl leading-8 font-bold tracking-tight">
<RouterLink class="st-text" :to="post.path || ''">
{{ post.title }}
</RouterLink>
</h2>
<div
v-if="post.excerpt"
class="prose max-w-none text-gray-500"
v-html="post.excerpt"
/>
</div>
<div class="text-base leading-6 font-medium">
<RouterLink class="link" aria-label="read more" :to="post.path || ''">
Read more
</RouterLink>
</div>
</div>
</article>
</template>

View File

@ -0,0 +1,55 @@
<script setup lang="ts">
import type { Post } from 'valaxy'
defineProps<{
frontmatter: Post
}>()
</script>
<template>
<dl class="pt-6 pb-10 xl:pt-11 xl:border-b xl:border-gray-200">
<dt class="sr-only">
Authors
</dt>
<dd>
<ul
class="
flex
justify-center
xl:block
space-x-8
sm:space-x-12
xl:space-x-0 xl:space-y-8
"
>
<li class="flex items-center space-x-2">
<img
v-if="frontmatter.gravatar"
:src="`https://gravatar.com/avatar/${frontmatter.gravatar}`"
alt="author image"
class="w-10 h-10 rounded-full"
>
<dl class="text-sm font-medium leading-5 whitespace-nowrap">
<dt class="sr-only">
Name
</dt>
<dd class="st-text">
{{ frontmatter.author }}
</dd>
<dt v-if="frontmatter.twitter" class="sr-only">
Twitter
</dt>
<dd v-if="frontmatter.twitter">
<a
:href="`https://twitter.com/${frontmatter.twitter}`"
target="_blank"
rel="noopnener noreferrer"
class="link"
>{{ frontmatter.twitter }}</a>
</dd>
</dl>
</li>
</ul>
</dd>
</dl>
</template>

View File

@ -0,0 +1,21 @@
<script lang="ts" setup>
import { formatDate } from 'valaxy'
import { computed } from 'vue'
const props = defineProps<{
date?: Date | number | string
}>()
const datetime = computed(() => formatDate(props.date || ''))
</script>
<template>
<dl>
<dt class="sr-only">
Published on
</dt>
<dd class="text-base leading-6 font-medium text-gray-500">
<time :datetime="datetime">{{ datetime }}</time>
</dd>
</dl>
</template>

View File

@ -0,0 +1,55 @@
<script lang="ts" setup>
import { capitalize, computed } from 'vue'
import { useSiteConfig, useValaxyConfig } from 'valaxy'
import { useI18n } from 'vue-i18n'
import pkg from 'valaxy/package.json'
import { useThemeConfig } from '../composables'
const { t } = useI18n()
const config = useValaxyConfig()
const siteConfig = useSiteConfig()
const themeConfig = useThemeConfig()
const year = new Date().getFullYear()
const isThisYear = computed(() => {
return year === themeConfig.value.footer.since
})
const poweredHtml = computed(() => t('footer.powered', [`<a href="${pkg.repository}" target="_blank" rel="noopener">Valaxy</a> v${pkg.version}`]))
const footerIcon = computed(() => themeConfig.value.footer.icon!)
</script>
<template>
<footer class="va-footer p-4" text="center sm" style="color:var(--va-c-text-light)">
<div v-if="themeConfig.footer.beian?.enable && themeConfig.footer.beian.icp" class="beian" m="y-2">
<a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">
{{ themeConfig.footer.beian.icp }}
</a>
</div>
<div class="copyright flex justify-center items-center" p="1">
<span>
&copy;
<template v-if="!isThisYear">
{{ themeConfig.footer.since }} -
</template>
{{ year }}
</span>
<a m="x-2" class="inline-flex animate-pulse" :href="footerIcon.url" target="_blank" :title="footerIcon.title">
<div :class="footerIcon.name" />
</a>
<span>{{ siteConfig.author.name }}</span>
</div>
<div v-if="themeConfig.footer.powered" class="powered" m="2">
<span v-html="poweredHtml" /> | <span>{{ t('footer.theme') }} - <a :href="themeConfig.pkg.homepage" :title="`valaxy-theme-${config.theme}`" target="_blank">{{ capitalize(config.theme) }}</a> v{{ themeConfig.pkg.version }}</span>
</div>
<slot />
</footer>
</template>

View File

@ -0,0 +1,26 @@
<script lang="ts" setup>
import { useSiteConfig } from 'valaxy'
const siteConfig = useSiteConfig()
</script>
<template>
<div class="pt-6 pb-8 space-y-2 md:space-y-5">
<h1
class="
st-text
text-3xl
leading-9
font-extrabold
tracking-tight
sm:text-4xl sm:leading-10
md:text-6xl md:leading-14
"
>
{{ siteConfig.title }}
</h1>
<p class="text-lg leading-7 text-gray-500">
{{ siteConfig.subtitle }}
</p>
</div>
</template>

View File

@ -0,0 +1,26 @@
<script lang="ts" setup>
import { isClient, useWindowScroll } from '@vueuse/core'
import { computed } from 'vue'
const { y } = useWindowScroll()
const showBackToTop = computed(() => y.value > 50)
function backToTop() {
if (!isClient)
return
window.scrollTo({ top: 0 })
}
</script>
<template>
<div class="fixed right-8 bottom-8 hidden flex-col gap-3 md:flex">
<Transition>
<button
v-if="showBackToTop" class="rounded-full bg-gray-200 p-2 text-gray-500 transition-all hover:bg-gray-300 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600"
@click="backToTop"
>
<div i-ri-arrow-up-line />
</button>
</Transition>
</div>
</template>

View File

@ -0,0 +1,43 @@
<script lang="ts" setup>
import { isDark, toggleDark, useSiteConfig } from 'valaxy'
// import { computed } from 'vue'
// import { useRoute } from 'vue-router'
import { useThemeConfig } from '../composables'
// const route = useRoute()
// const isIndex = computed(() => route.path.replace(/index.html$/, '') === '/')
const siteConfig = useSiteConfig()
const themeConfig = useThemeConfig()
</script>
<template>
<nav w="full" class="flex justify-between items-center py-10 font-bold">
<RouterLink class="text-xl" to="/" :aria-label="siteConfig.title">
<img
class="inline-block mr-2"
style="width: 50px; height: 35px"
alt="logo"
:src="siteConfig.favicon"
>
<span class="hidden md:inline">{{ siteConfig.title }}</span>
</RouterLink>
<div class="text-sm text-gray-500 leading-5">
<template v-for="(item, i) in themeConfig.nav" :key="i">
<AppLink
:to="item.link"
rel="noopener"
>
{{ item.text }}
</AppLink>
<span v-if="i !== themeConfig.nav.length - 1" class="mr-2 ml-2">·</span>
</template>
</div>
<button type="button" aria-label="Toggle Dark Mode" @click="toggleDark()">
<div v-if="!isDark" i-ri-sun-line />
<div v-else i-ri-moon-line />
</button>
</nav>
</template>

View File

@ -0,0 +1,28 @@
<script setup lang="ts">
import { computed } from 'vue'
import type { Post } from 'valaxy'
import { usePostList } from 'valaxy'
const props = withDefaults(defineProps<{
type?: string
posts?: Post[]
curPage?: number
}>(), {
curPage: 1,
})
const routes = usePostList({ type: props.type || '' })
const posts = computed(() => props.posts || routes.value)
</script>
<template>
<ul class="divide-y divide-gray-200 dark:divide-gray-700">
<template v-for="post in posts" :key="post.path">
<Transition name="fade">
<li v-if="post" class="py-12">
<StarterArticleCard :post="post" />
</li>
</Transition>
</template>
</ul>
</template>

View File

@ -0,0 +1,13 @@
<script lang="ts" setup>
import { useI18n } from 'vue-i18n'
import { useLocale } from 'valaxy'
const { t, locale } = useI18n()
const { toggleLocales } = useLocale()
</script>
<template>
<button class="yun-icon-btn" :title="t('button.toggle_langs')" style="color:var(--va-c-text)" @click="toggleLocales">
<div i-ri-translate class="transition transform" :class="locale === 'en' ? 'rotate-y-180' : ''" />
</button>
</template>

View File

@ -0,0 +1,45 @@
<script lang="ts" setup>
import type { PageData, Post } from 'valaxy'
import { useSiteConfig } from 'valaxy'
defineProps<{
frontmatter: Post
data?: PageData
}>()
const siteConfig = useSiteConfig()
</script>
<template>
<main>
<div w="full" flex="~">
<slot name="main">
<div class="content" flex="~ col grow" w="full" p="l-4 lt-md:0">
<slot name="main-header" />
<slot name="main-header-after" />
<slot name="main-content">
<div class="markdown-body prose max-w-none pb-8">
<ValaxyMd :frontmatter="frontmatter">
<slot name="main-content-md" />
<slot />
</ValaxyMd>
</div>
<slot name="main-content-after" />
</slot>
</div>
<slot name="main-nav-before" />
<slot name="main-nav" />
<slot name="main-nav-after" />
<slot v-if="siteConfig.comment.enable && frontmatter.comment !== false" name="comment" />
<slot name="footer" />
</slot>
</div>
<slot name="aside" />
</main>
</template>

View File

@ -0,0 +1,50 @@
<template>
<div class="antialiased">
<div class="max-w-3xl mx-auto px-4 sm:px-6 xl:max-w-5xl xl:px-0">
<StarterNav />
</div>
<main class="max-w-3xl mx-auto px-4 sm:px-6 xl:max-w-5xl xl:px-0">
<slot>
<RouterView v-slot="{ Component }">
<component :is="Component">
<template #main-header>
<slot name="main-header" />
</template>
<template #main-header-after>
<slot name="main-header-after" />
</template>
<template #main>
<slot name="main" />
</template>
<template #main-content>
<slot name="main-content" />
</template>
<template #main-content-after>
<slot name="main-content-after" />
</template>
<template #main-nav-before>
<slot name="main-nav-before" />
</template>
<template #main-nav-after>
<slot name="main-nav-after" />
</template>
<template #aside-custom>
<slot name="aside-custom" />
</template>
<template #footer>
<slot name="footer" />
</template>
</component>
</RouterView>
</slot>
</main>
<StarterHelper />
<StarterFooter>
<slot name="footer" />
</StarterFooter>
</div>
</template>

View File

@ -0,0 +1,11 @@
import { computed } from 'vue'
import { useConfig } from 'valaxy'
import type { ThemeConfig } from '../types'
/**
* getThemeConfig
*/
export function useThemeConfig<T = ThemeConfig>() {
const config = useConfig<T>()
return computed(() => config!.value.themeConfig)
}

View File

@ -0,0 +1 @@
export * from './config'

View File

@ -0,0 +1,25 @@
<script lang="ts" setup>
import { useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
const router = useRouter()
const { t } = useI18n()
</script>
<template>
<Layout>
<template #content>
<div text="center">
<div text-4xl>
<div i-ri-alarm-warning-line inline-block />
</div>
<RouterView />
<div>
<button btn text-sm m="3 t8" @click="router.back()">
{{ t('button.back') }}
</button>
</div>
</div>
</template>
</Layout>
</template>

View File

@ -0,0 +1,5 @@
<template>
<Layout>
<RouterView />
</Layout>
</template>

View File

@ -0,0 +1,11 @@
<template>
<Layout>
<div class="divide-y divide-gray-200 dark:divide-gray-700">
<StarterHeader />
<slot>
<RouterView />
</slot>
</div>
</Layout>
</template>

View File

@ -0,0 +1,5 @@
<template>
<StarterArticle>
<RouterView />
</StarterArticle>
</template>

View File

@ -0,0 +1 @@
valaxy_theme_starter: Valaxy Theme Starter

View File

@ -0,0 +1 @@
valaxy_theme_starter: Valaxy 主题 Starter

View File

@ -0,0 +1,70 @@
import type { Plugin } from 'vite'
import type { ResolvedValaxyOptions } from 'valaxy'
import type { ThemeConfig } from '../types'
/**
* Default Config
*/
export const defaultThemeConfig: ThemeConfig = {
colors: {
primary: '#0078E7',
},
footer: {
since: 2022,
icon: {
name: 'i-ri-cloud-line',
animated: true,
color: 'var(--va-c-primary)',
url: 'https://sponsors.yunyoujun.cn',
title: 'Sponsor YunYouJun',
},
powered: true,
beian: {
enable: false,
icp: '',
},
},
nav: [],
}
// write a vite plugin
// https://vitejs.dev/guide/api-plugin.html
export function themePlugin(options: ResolvedValaxyOptions<ThemeConfig>): Plugin {
const themeConfig = options.config.themeConfig || {}
return {
name: 'valaxy-theme-starter',
config() {
return {
css: {
preprocessorOptions: {
scss: {
additionalData: `$c-primary: ${themeConfig.colors?.primary || '#0078E7'} !default;`,
},
},
},
valaxy: {},
}
},
}
}
/**
* generateSafelist by config
* @param themeConfig
*/
export function generateSafelist(themeConfig: ThemeConfig) {
const safelist: string[] = []
const footerIcon = themeConfig.footer?.icon?.name
if (footerIcon)
safelist.push(footerIcon)
return safelist
}

View File

@ -0,0 +1,27 @@
{
"name": "valaxy-theme-custom",
"version": "0.0.0",
"packageManager": "pnpm@8.15.1",
"author": {
"email": "me@yunyoujun.cn",
"name": "YunYouJun",
"url": "https://www.yunyoujun.cn"
},
"homepage": "https://starter.valaxy.site",
"repository": {
"type": "git",
"url": "https://github.com/YunYouJun/valaxy-theme-starter"
},
"keywords": [
"valaxy",
"theme",
"starter",
"vue"
],
"main": "client/index.ts",
"types": "types/index.d.ts",
"dependencies": {
"@iconify-json/ant-design": "^1.1.15",
"@iconify-json/simple-icons": "^1.1.91"
}
}

View File

@ -0,0 +1,9 @@
<template>
<StarterPostList />
</template>
<route lang="yaml">
# default is home
meta:
layout: home
</route>

View File

@ -0,0 +1,21 @@
@use "./vars" as *;
@use "valaxy/client/styles/mixins/index.scss" as * with ($namespace: "st");
:root {
--un-prose-links: var(--st-c-link);
@include set-css-var-from-map($common);
@include set-css-var-from-map($z-index, "z");
}
:root {
@include set-css-var-from-map($light);
}
html.dark {
@include set-css-var-from-map($dark);
}
:root {
--va-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}

View File

@ -0,0 +1,2 @@
@use './layout' as *;
@use './markdown' as *;

View File

@ -0,0 +1,11 @@
.link {
color: var(--st-c-brand);
}
html {
color: var(--st-c-text);
}
.st-text {
color: var(--st-c-text);
}

View File

@ -0,0 +1,64 @@
@use "valaxy/client/styles/mixins/index.scss" as *;
@use "valaxy/client/styles/components/code-group.scss" as *;
@use "valaxy/client/styles/components/custom-block.scss" as *;
.markdown-body {
--c-toc-link: var(--va-c-text-light);
}
html.dark {
.markdown-body {
--c-toc-link: var(--va-c-text-dark);
}
}
.markdown-body {
word-wrap: break-word;
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--va-font-family-base);
font-weight: 900;
}
ul {
li>p {
margin-bottom: 0;
}
}
blockquote {
margin: 16px 0;
border-left: 4px solid var(--va-c-divider);
padding-left: 12px;
transition: border-color .5s
p {
margin: 0;
font-size: 16px;
color: var(--vp-c-text-2);
transition: color .5s;
}
}
code:not(pre > code) {
color: var(--va-c-text-code);
background-color: var(--va-c-bg-mute);
padding: 3px 6px;
border-radius: 4px;
font-weight: 500;
&::before {
content: none;
}
&::after {
content: none;
}
}
}

View File

@ -0,0 +1,22 @@
@use "sass:map";
// common
$common: () !default;
$common: map.merge((), $common);
// palette
$light: (
"c-brand": #3e88f6,
"c-link": "var(--st-c-brand)",
"c-text": #101820,
) !default;
$light: map.merge((), $light);
$dark: (
"c-text": #f0f8ff,
) !default;
$dark: map.merge((), $dark);
$z-index: () !default;
$z-index: map.merge((), $z-index);

View File

@ -0,0 +1,25 @@
{
// we need tsconfig.json to compile without
// error: This is likely not portable. A type annotation is necessary.
"compilerOptions": {
"target": "ESNext",
"jsx": "preserve",
"lib": ["DOM", "ESNext"],
"baseUrl": ".",
"module": "ESNext",
"moduleResolution": "node",
"resolveJsonModule": true,
"types": [
"vite/client",
"vite-plugin-vue-layouts/client"
],
"allowJs": true,
"strict": true,
"strictNullChecks": true,
"noUnusedLocals": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"skipLibCheck": true
},
"exclude": ["**/dist/**", "node_modules"]
}

View File

@ -0,0 +1,73 @@
export namespace StarterTheme {
export type Config = ThemeConfig
export type Sidebar = any
}
/**
* Theme Config
*/
export interface ThemeConfig {
colors: {
/**
* primary color
* @default '#0078E7'
*/
primary: string
}
/**
* footer
*/
footer: Partial<{
/**
*
*/
since: number
/**
* Icon between year and copyright info.
*/
icon: {
/**
* icon name, i-xxx
*/
name: string
animated: boolean
color: string
url: string
title: string
}
/**
* Powered by valaxy & valaxy-theme-${name}, default is yun
*/
powered: boolean
/**
* Chinese Users |
* ICP
* ICP
* https://beian.miit.gov.cn/
*/
beian: {
enable: boolean
/**
* ICP备xxxxxxxx号
*/
icp: string
}
}>
/**
* navbar
*/
nav: NavItem[]
}
export interface NavItem {
text: string
link: string
icon?: string
}
export type ThemeUserConfig = Partial<ThemeConfig>

View File

@ -0,0 +1,15 @@
import { defineTheme } from 'valaxy'
import { defaultThemeConfig, generateSafelist, themePlugin } from './node'
import type { ThemeConfig } from './types'
export default defineTheme<ThemeConfig>((options) => {
return {
themeConfig: defaultThemeConfig,
vite: {
plugins: [themePlugin(options)],
},
unocss: {
safelist: generateSafelist(options.config.themeConfig as ThemeConfig),
},
}
})

View File

@ -0,0 +1,51 @@
import { defineValaxyConfig } from 'valaxy'
import type { UserThemeConfig } from 'valaxy-theme-yun'
// add icons what you will need
const safelist = [
'i-ri-home-line',
]
/**
* User Config
*/
export default defineValaxyConfig<UserThemeConfig>({
// site config see site.config.ts
theme: 'custom',
themeConfig: {
banner: {
enable: true,
title: '云游君的小站',
cloud: {
enable: true,
},
},
pages: [
{
name: '我的小伙伴们',
url: '/links/',
icon: 'i-ri-genderless-line',
color: 'dodgerblue',
},
{
name: '喜欢的女孩子',
url: '/girls/',
icon: 'i-ri-women-line',
color: 'hotpink',
},
],
footer: {
since: 2016,
beian: {
enable: true,
icp: '苏ICP备17038157号',
},
},
},
unocss: { safelist },
})

View File

@ -20,7 +20,7 @@
"valaxy-theme-press": "link:../packages/valaxy-theme-press"
},
"devDependencies": {
"@iconify-json/simple-icons": "^1.1.90",
"@iconify-json/simple-icons": "^1.1.91",
"nodemon": "^3.0.3",
"vite": "^5.1.1",
"vitepress": "1.0.0-rc.42"

View File

@ -32,6 +32,7 @@
"build:devtools": "pnpm -C packages/devtools run build",
"ci": "pnpm run build && pnpm -C demo/yun run fuse && pnpm build:create-valaxy && node packages/create-valaxy/dist/index.mjs -y",
"ci:publish": "pnpm -r publish --access public --no-git-checks",
"custom": "pnpm -C demo/custom run dev",
"demo": "pnpm run demo:yun",
"demo:build": "pnpm -C demo/yun run build",
"demo:serve": "pnpm -C demo/yun run serve",

View File

@ -20,7 +20,7 @@
"dependencies": {
"@explosions/fireworks": "^0.0.2",
"@iconify-json/ant-design": "^1.1.15",
"@iconify-json/simple-icons": "^1.1.90",
"@iconify-json/simple-icons": "^1.1.91",
"animejs": "^3.2.2"
},
"devDependencies": {

View File

@ -65,7 +65,7 @@
"dependencies": {
"@antfu/utils": "^0.7.7",
"@ctrl/tinycolor": "^4.0.3",
"@iconify-json/carbon": "^1.1.29",
"@iconify-json/carbon": "^1.1.30",
"@iconify-json/ri": "^1.1.19",
"@intlify/unplugin-vue-i18n": "^2.0.0",
"@types/body-scroll-lock": "^3.1.2",

View File

@ -139,6 +139,19 @@ importers:
specifier: ^7.2.3
version: 7.2.3
demo/custom:
dependencies:
valaxy:
specifier: 0.18.0-beta.0
version: link:../../packages/valaxy
valaxy-theme-custom:
specifier: ./valaxy-theme-custom
version: link:valaxy-theme-custom
devDependencies:
typescript:
specifier: ^5.3.3
version: 5.3.3
demo/yun:
dependencies:
valaxy:
@ -189,8 +202,8 @@ importers:
version: link:../packages/valaxy-theme-press
devDependencies:
'@iconify-json/simple-icons':
specifier: ^1.1.90
version: 1.1.90
specifier: ^1.1.91
version: 1.1.91
nodemon:
specifier: ^3.0.3
version: 3.0.3
@ -247,8 +260,8 @@ importers:
specifier: ^4.0.3
version: 4.0.3
'@iconify-json/carbon':
specifier: ^1.1.29
version: 1.1.29
specifier: ^1.1.30
version: 1.1.30
'@iconify-json/ri':
specifier: ^1.1.19
version: 1.1.19
@ -576,8 +589,8 @@ importers:
specifier: ^1.1.15
version: 1.1.15
'@iconify-json/simple-icons':
specifier: ^1.1.90
version: 1.1.90
specifier: ^1.1.91
version: 1.1.91
animejs:
specifier: ^3.2.2
version: 3.2.2
@ -1728,8 +1741,8 @@ packages:
'@iconify/types': 2.0.0
dev: false
/@iconify-json/carbon@1.1.29:
resolution: {integrity: sha512-zfyvX/kPItpBEU0fV0FhMW8Ln8PJX6is/L/GX7z9OOoVWEz1k8IlbK3KoBBH6ODZ8HHKG7HQ9FZ4nNl6RDe0Lw==}
/@iconify-json/carbon@1.1.30:
resolution: {integrity: sha512-tEvEmxCO0J0t0p2NT2IvJ+iiSNqqnabygSo/S8wkeh2Guhc4tQOgl9dxvDMpy6RqwtKRTKsaROPtnRfu/bl+Tg==}
dependencies:
'@iconify/types': 2.0.0
dev: false
@ -1746,8 +1759,8 @@ packages:
'@iconify/types': 2.0.0
dev: false
/@iconify-json/simple-icons@1.1.90:
resolution: {integrity: sha512-IYDCQD3VJ5verAwWwMgnbJ6SvPzEqH0SG6JsI2ySuI64d7qVbcJMFycc0kGPfSsi2yAPYHk+tD6Iln17y1MuNA==}
/@iconify-json/simple-icons@1.1.91:
resolution: {integrity: sha512-hFWxeQWjCh26nObKnEm+AMB5W+bh4pXtmT3PnecS7rP2Crh0AHi5QBHPtH+6L8R6xZtBk5I2TLoA0TRzCgrF8A==}
dependencies:
'@iconify/types': 2.0.0