style: refactoring ui

This commit is contained in:
Neko Ayaka
2025-02-16 20:10:01 +08:00
parent c391bdac38
commit 40a1dd4970
21 changed files with 148 additions and 374 deletions
+2
View File
@@ -69,6 +69,7 @@ words:
- Maru - Maru
- micvad - micvad
- mineflayer - mineflayer
- mingcute
- mkdist - mkdist
- moeru - moeru
- Morioki - Morioki
@@ -117,6 +118,7 @@ words:
- unocss - unocss
- unplugin - unplugin
- valibot - valibot
- vaul
- VITE - VITE
- vrma - vrma
- vueuse - vueuse
@@ -6,6 +6,10 @@ import { defineBuildConfig } from 'unbuild'
import packageJSON from './package.json' import packageJSON from './package.json'
function json(any: any) {
return JSON.stringify(any, null, 2)
}
export default defineBuildConfig({ export default defineBuildConfig({
entries: [ entries: [
{ builder: 'rollup', input: 'src/index.ts', outDir: 'dist', declaration: true }, { builder: 'rollup', input: 'src/index.ts', outDir: 'dist', declaration: true },
@@ -35,10 +39,10 @@ export default defineBuildConfig({
const iconSetData = await importDirectory(join(pkg.rootPath, 'icons'), { prefix: 'lobe-icons', ignoreImportErrors: 'warn' }) const iconSetData = await importDirectory(join(pkg.rootPath, 'icons'), { prefix: 'lobe-icons', ignoreImportErrors: 'warn' })
const iconJSONData = iconSetData.export() const iconJSONData = iconSetData.export()
await writeFile('./dist/metadata.json', JSON.stringify({ categories: iconSetData.categories }, null, 2), { encoding: 'utf8' }) await writeFile('./dist/metadata.json', json({ categories: iconSetData.categories }), { encoding: 'utf8' })
await writeFile('./dist/icons.json', JSON.stringify(iconJSONData, null, 2), { encoding: 'utf8' }) await writeFile('./dist/icons.json', json(iconJSONData), { encoding: 'utf8' })
await writeFile('./dist/chars.json', JSON.stringify({}, null, 2), { encoding: 'utf8' }) await writeFile('./dist/chars.json', json({}), { encoding: 'utf8' })
await writeFile('./dist/info.json', JSON.stringify({ await writeFile('./dist/info.json', json({
prefix: 'lobe-icons', prefix: 'lobe-icons',
name: 'Lobe Icons', name: 'Lobe Icons',
total: Object.keys(iconJSONData.icons).length, total: Object.keys(iconJSONData.icons).length,
@@ -56,9 +60,9 @@ export default defineBuildConfig({
'deepseek', 'deepseek',
'claude', 'claude',
], ],
height: 32, height: 20,
displayHeight: 16, displayHeight: 20,
category: 'Logos 16px / 32px', category: 'Logos 20px',
tags: [ tags: [
'AI', 'AI',
'Models', 'Models',
@@ -66,7 +70,7 @@ export default defineBuildConfig({
'Lobe', 'Lobe',
], ],
palette: false, palette: false,
}, null, 2), { encoding: 'utf8' }) }), { encoding: 'utf8' })
}, },
}, },
}) })
@@ -1,5 +1,5 @@
{ {
"name": "@proj-airi/iconify-json-lobe", "name": "@proj-airi/lobe-icons",
"type": "module", "type": "module",
"version": "1.0.0", "version": "1.0.0",
"private": true, "private": true,
@@ -13,7 +13,7 @@
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/moeru-ai/airi.git", "url": "https://github.com/moeru-ai/airi.git",
"directory": "packages/iconify-json-lobe" "directory": "packages/lobe-icons"
}, },
"exports": { "exports": {
"./*": "./*", "./*": "./*",
+4 -1
View File
@@ -1,4 +1,4 @@
import { defineConfig, mergeConfigs, presetWebFonts } from 'unocss' import { defineConfig, mergeConfigs, presetIcons, presetWebFonts } from 'unocss'
import UnoCSSConfig from '../../uno.config' import UnoCSSConfig from '../../uno.config'
@@ -13,6 +13,9 @@ export default defineConfig(mergeConfigs([
mono: 'DM Mono', mono: 'DM Mono',
}, },
}), }),
presetIcons({
scale: 1.2,
}),
], ],
}, },
])) ]))
+4 -1
View File
@@ -1,4 +1,4 @@
import { defineConfig, mergeConfigs, presetWebFonts } from 'unocss' import { defineConfig, mergeConfigs, presetIcons, presetWebFonts } from 'unocss'
import UnoCSSConfig from '../../uno.config' import UnoCSSConfig from '../../uno.config'
@@ -15,6 +15,9 @@ export default defineConfig(mergeConfigs([
cuteen: 'Sniglet', cuteen: 'Sniglet',
}, },
}), }),
presetIcons({
scale: 1.2,
}),
], ],
// hyoban/unocss-preset-shadcn: Use shadcn ui with UnoCSS // hyoban/unocss-preset-shadcn: Use shadcn ui with UnoCSS
// https://github.com/hyoban/unocss-preset-shadcn // https://github.com/hyoban/unocss-preset-shadcn
@@ -35,18 +35,13 @@ defineExpose({
<template> <template>
<Screen v-slot="{ width, height }" relative> <Screen v-slot="{ width, height }" relative>
<Live2DViewer ref="modelRef" :canvas-width="width" :canvas-height="height" :model="model" :mouth-open-size="mouthOpenSize" /> <Live2DViewer ref="modelRef" :canvas-width="width" :canvas-height="height" :model="model" :mouth-open-size="mouthOpenSize" />
<div absolute bottom="2" right="2"> <div absolute bottom="3" right="3">
<div <div flex="~ row" cursor-pointer>
flex="~ row"
bg="zinc-100 dark:zinc-700"
text="sm zinc-400 dark:zinc-500"
h-fit w-fit appearance-none gap-1 rounded-lg rounded-md border-none
>
<label <label
h-fit cursor-pointer :class="[show ? 'bg-zinc-300 dark:bg-zinc-200' : 'bg-zinc-100 dark:bg-zinc-700']"
:class="[show ? 'bg-zinc-300 text-zinc-900 dark:bg-zinc-200 dark:text-zinc-800' : '']"
transition="all ease-in-out duration-500" transition="all ease-in-out duration-500"
rounded-md px-2 py-2 z="<md:20" text="lg zinc-500 dark:zinc-400"
m-1 h-fit w-fit cursor-pointer appearance-none gap-1 rounded-lg rounded-md border-none p-2 outline-none
> >
<input <input
v-model="show" v-model="show"
@@ -57,12 +52,12 @@ defineExpose({
hidden appearance-none outline-none hidden appearance-none outline-none
> >
<div select-none> <div select-none>
<div i-solar:bug-bold-duotone text="text-zinc-900 dark:text-zinc-800" /> <div i-solar:bug-bold-duotone />
</div> </div>
</label> </label>
</div> </div>
<TransitionVertical> <TransitionVertical>
<div v-if="show" absolute w-full min-w="50vw" z="<md:20" class="bottom-10 right-0"> <div v-if="show" min-w="50vw" z="<md:20" class="bottom-11 right-0" absolute m-1 w-full>
<div bg="zinc-200/20 dark:black/20" rounded-lg p-2 backdrop-blur-sm> <div bg="zinc-200/20 dark:black/20" rounded-lg p-2 backdrop-blur-sm>
<div font-mono> <div font-mono>
<span>{{ $t('stage.viewers.debug-menu.emotions') }}</span> <span>{{ $t('stage.viewers.debug-menu.emotions') }}</span>
@@ -55,18 +55,13 @@ defineExpose({
@error="(val) => emit('error', val)" @error="(val) => emit('error', val)"
/> />
</TresCanvas> </TresCanvas>
<div absolute bottom="2" right="2"> <div absolute bottom="3" right="3">
<div <div flex="~ row" cursor-pointer>
flex="~ row"
bg="zinc-100 dark:zinc-700"
text="sm zinc-400 dark:zinc-500"
h-fit w-fit appearance-none gap-1 rounded-lg rounded-md border-none
>
<label <label
h-fit cursor-pointer :class="[show ? 'bg-zinc-300 dark:bg-zinc-200' : 'bg-zinc-100 dark:bg-zinc-700']"
:class="[show ? 'bg-zinc-300 text-zinc-900 dark:bg-zinc-200 dark:text-zinc-800' : '']"
transition="all ease-in-out duration-500" transition="all ease-in-out duration-500"
rounded-md px-2 py-2 z="<md:20" text="lg zinc-500 dark:zinc-400"
m-1 h-fit w-fit cursor-pointer appearance-none gap-1 rounded-lg rounded-md border-none p-2 outline-none
> >
<input <input
v-model="show" v-model="show"
@@ -77,12 +72,12 @@ defineExpose({
hidden appearance-none outline-none hidden appearance-none outline-none
> >
<div select-none> <div select-none>
<div i-solar:bug-bold-duotone text="text-zinc-900 dark:text-zinc-800" /> <div i-solar:bug-bold-duotone />
</div> </div>
</label> </label>
</div> </div>
<TransitionVertical> <TransitionVertical>
<div v-if="show" absolute w-full min-w="50vw" z="<md:20" class="bottom-10 right-0"> <div v-if="show" min-w="50vw" z="<md:20" class="bottom-11 right-0" absolute m-1 w-full>
<div bg="zinc-200/20 dark:black/20" flex="~ col" gap-2 rounded-lg p-2 backdrop-blur-sm> <div bg="zinc-200/20 dark:black/20" flex="~ col" gap-2 rounded-lg p-2 backdrop-blur-sm>
<div font-mono> <div font-mono>
<span>{{ $t('stage.viewers.debug-menu.vrm.model.title') }}</span> <span>{{ $t('stage.viewers.debug-menu.vrm.model.title') }}</span>
+2
View File
@@ -84,8 +84,10 @@
"@iconify-json/mingcute": "^1.2.3", "@iconify-json/mingcute": "^1.2.3",
"@iconify-json/solar": "^1.2.2", "@iconify-json/solar": "^1.2.2",
"@iconify-json/svg-spinners": "^1.2.2", "@iconify-json/svg-spinners": "^1.2.2",
"@iconify/utils": "^2.3.0",
"@intlify/unplugin-vue-i18n": "^6.0.3", "@intlify/unplugin-vue-i18n": "^6.0.3",
"@proj-airi/elevenlabs": "workspace:^", "@proj-airi/elevenlabs": "workspace:^",
"@proj-airi/lobe-icons": "workspace:^",
"@proj-airi/unplugin-download": "workspace:^", "@proj-airi/unplugin-download": "workspace:^",
"@proj-airi/unplugin-live2d-sdk": "workspace:^", "@proj-airi/unplugin-live2d-sdk": "workspace:^",
"@shikijs/markdown-it": "^2.3.2", "@shikijs/markdown-it": "^2.3.2",
@@ -1,15 +1,18 @@
<script setup lang="ts"> <script setup lang="ts">
import Settings from '../Settings.vue' import DesktopSettings from '../Widgets/DesktopSettings.vue'
</script> </script>
<template> <template>
<header mb-1 w-full gap-2> <header mb-1 w-full gap-2>
<a href="https://github.com/moeru-ai/airi" rel="noreferrer noopener" target="_blank" flex="~ 1" w-full items-center gap-2 px-2 text-nowrap text-2xl> <a
href="https://github.com/moeru-ai/airi" rel="noreferrer noopener" target="_blank" flex="~ 1" w-full items-center
gap-2 px-2 text-nowrap text-2xl outline-none
>
<div i-solar:cat-outline text="[#ed869d]" /> <div i-solar:cat-outline text="[#ed869d]" />
<div font-cute> <div font-cute>
<span>アイリ</span> <span>アイリ</span>
</div> </div>
</a> </a>
<Settings /> <DesktopSettings />
</header> </header>
</template> </template>
@@ -98,7 +98,7 @@ onAfterSend(async () => {
</script> </script>
<template> <template>
<div flex="col" items-center pt-4> <div v-if="false" flex="col" items-center pt-4>
<fieldset flex="~ row" w-fit rounded-lg> <fieldset flex="~ row" w-fit rounded-lg>
<label <label
:class="[ :class="[
@@ -1,274 +0,0 @@
<script setup lang="ts">
import type { Voice } from '@proj-airi/stage-ui/constants'
import { TransitionVertical } from '@proj-airi/stage-ui/components'
import { voiceList } from '@proj-airi/stage-ui/constants'
import { useLLM, useSettings } from '@proj-airi/stage-ui/stores'
import { useDark } from '@vueuse/core'
import { storeToRefs } from 'pinia'
import { onMounted, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
const { t, locale } = useI18n()
const settings = useSettings()
const show = ref(false)
const dark = useDark({ disableTransition: false })
const supportedModels = ref<{ id: string, name?: string }[]>([])
const { models } = useLLM()
const { openAiModel, openAiApiBaseURL, openAiApiKey, elevenlabsVoiceEnglish, elevenlabsVoiceJapanese } = storeToRefs(settings)
function handleModelChange(event: Event) {
const target = event.target as HTMLSelectElement
const found = supportedModels.value.find(m => m.id === target.value)
if (!found) {
openAiModel.value = undefined
return
}
openAiModel.value = found
}
function handleVoiceChange(event: Event) {
const value = (event.target as HTMLSelectElement).value as Voice
switch (locale.value) {
case 'en':
case 'en-US':
elevenlabsVoiceEnglish.value = value
break
case 'zh':
case 'zh-CN':
case 'zh-TW':
case 'zh-HK':
elevenlabsVoiceEnglish.value = value
break
case 'jp':
case 'jp-JP':
elevenlabsVoiceJapanese.value = value
break
}
}
watch([openAiApiBaseURL, openAiApiKey], async ([baseUrl, apiKey]) => {
if (!baseUrl || !apiKey) {
supportedModels.value = []
return
}
supportedModels.value = await models(baseUrl, apiKey)
})
onMounted(async () => {
if (!openAiApiBaseURL.value || !openAiApiKey.value)
return
supportedModels.value = await models(openAiApiBaseURL.value, openAiApiKey.value)
})
</script>
<template>
<div flex="~" gap-2>
<fieldset
flex="~ row"
bg="zinc-100 dark:zinc-700"
text="sm zinc-400 dark:zinc-500"
appearance-none gap-1 rounded-lg rounded-md border-none p-1
>
<label
h-fit cursor-pointer
:class="[settings.stageView === '2d' ? 'bg-zinc-300 text-zinc-900 dark:bg-zinc-200 dark:text-zinc-800' : '']"
rounded-md px-4 py-2
>
<input
v-model="settings.stageView"
:checked="settings.stageView === '2d'"
:aria-checked="settings.stageView === '2d'"
name="settings.stageView"
type="radio"
role="radio"
value="2d"
hidden appearance-none outline-none
>
<div select-none :class="[settings.stageView === '2d' ? 'font-semibold' : '']">
2D
</div>
</label>
<label
h-fit cursor-pointer
:class="[settings.stageView === '3d' ? 'bg-zinc-300 text-zinc-900 dark:bg-zinc-200 dark:text-zinc-800' : '']"
rounded-md px-4 py-2
>
<input
v-model="settings.stageView"
:checked="settings.stageView === '3d'"
:aria-checked="settings.stageView === '3d'"
name="stageView"
type="radio"
role="radio"
value="3d"
hidden appearance-none outline-none
>
<div select-none :class="[settings.stageView === '3d' ? 'font-semibold' : '']">
3D
</div>
</label>
</fieldset>
<div relative>
<div
flex="~ row"
bg="zinc-100 dark:zinc-700"
text="sm zinc-400 dark:zinc-500"
h-fit w-fit appearance-none gap-1 rounded-lg rounded-md border-none p-1
>
<label
h-fit cursor-pointer
:class="[show ? 'bg-zinc-300 text-zinc-900 dark:bg-zinc-200 dark:text-zinc-800' : '']"
transition="all ease-in-out duration-500"
rounded-md px-2 py-2
>
<input
v-model="show"
:checked="show"
:aria-checked="show"
name="stageView"
type="checkbox"
hidden appearance-none outline-none
>
<div select-none>
<div i-solar:settings-minimalistic-bold-duotone text="text-zinc-900 dark:text-zinc-800 lg" />
</div>
</label>
</div>
<TransitionVertical>
<div
v-if="show" w="120 <sm:[calc(100vw-16px)]" right="0" bg="zinc-100 dark:zinc-700"
grid="~ cols-[140px_1fr]" absolute z-100 my-2 items-center gap-1.5 rounded-lg px-3 py-2
>
<div text-sm>
<span>{{ t('settings.openai-base-url.label') }}</span>
</div>
<div flex="~ row" w-full text="sm">
<input
v-model="settings.openAiApiBaseURL"
type="text"
:placeholder="t('settings.openai-base-url.placeholder')"
bg="zinc-200 dark:zinc-800/50" w-full rounded-md px-2 py-1 font-mono outline-none
>
</div>
<div text-sm>
<span>{{ t('settings.openai-api-key.label') }}</span>
</div>
<div flex="~ row" w-full text="sm">
<input
v-model="settings.openAiApiKey"
type="text"
:placeholder="t('settings.openai-api-key.placeholder')"
bg="zinc-200 dark:zinc-800/50" w-full rounded-md px-2 py-1 font-mono outline-none
>
</div>
<div text-sm>
<span>{{ t('settings.elevenlabs-api-key.label') }}</span>
</div>
<div flex="~ row" w-full text="sm">
<input
v-model="settings.elevenLabsApiKey"
type="text"
:placeholder="t('settings.elevenlabs-api-key.placeholder')"
bg="zinc-200 dark:zinc-800/50" w-full rounded-md px-2 py-1 font-mono outline-none
>
</div>
<div text-sm>
<span>{{ t('settings.language.title') }}</span>
</div>
<div flex="~ row" w-full text="sm">
<select
v-model="settings.language" bg="zinc-200 dark:zinc-800/50" w-full rounded-md px-2 py-1 font-mono
outline-none
>
<option value="en-US">
{{ $t('settings.language.english') }}
</option>
<option value="zh-CN">
{{ $t('settings.language.chinese') }}
</option>
</select>
</div>
<div text-sm>
<span>{{ t('settings.models') }}</span>
</div>
<div flex="~ row" w-full text="sm">
<select
bg="zinc-200 dark:zinc-800/50" w-full rounded-md px-2 py-1 font-mono
outline-none
@change="handleModelChange"
>
<option disabled class="bg-white dark:bg-zinc-800">
{{ t('stage.select-a-model') }}
</option>
<option v-if="settings.openAiModel" :value="settings.openAiModel.id">
{{ 'name' in settings.openAiModel ? `${settings.openAiModel.name} (${settings.openAiModel.id})` : settings.openAiModel.id }}
</option>
<option v-for="m in supportedModels" :key="m.id" :value="m.id">
{{ 'name' in m ? `${m.name} (${m.id})` : m.id }}
</option>
</select>
</div>
<div text-sm>
<span>{{ t('settings.voices') }}</span>
</div>
<div flex="~ row" w-full text="sm">
<select
bg="zinc-200 dark:zinc-800/50" w-full rounded-md px-2 py-1 font-mono
outline-none
@change="handleVoiceChange"
>
<option disabled class="bg-white dark:bg-zinc-800">
{{ t('stage.select-a-voice') }}
</option>
<option v-if="['en', 'en-US'].indexOf(locale) !== -1 && elevenlabsVoiceEnglish" :value="elevenlabsVoiceEnglish">
{{ elevenlabsVoiceEnglish }}
</option>
<option v-if="['zh', 'zh-CN', 'zh-TW', 'zh-HK'].indexOf(locale) !== -1 && elevenlabsVoiceEnglish" :value="elevenlabsVoiceEnglish">
{{ elevenlabsVoiceEnglish }}
</option>
<option v-if="['jp', 'jp-JP'].indexOf(locale) !== -1 && elevenlabsVoiceJapanese" :value="elevenlabsVoiceJapanese">
{{ elevenlabsVoiceJapanese }}
</option>
<option v-for="(m, index) in voiceList[locale]" :key="index" :value="m">
{{ m }}
</option>
</select>
</div>
</div>
</TransitionVertical>
</div>
<div>
<div
flex="~ row"
bg="zinc-100 dark:zinc-700"
text="sm zinc-400 dark:zinc-500"
h-fit w-fit appearance-none gap-1 rounded-lg rounded-md border-none p-1
>
<label
h-fit cursor-pointer
rounded-md px-2 py-2
>
<input
v-model="dark"
:checked="dark"
:aria-checked="dark"
name="stageView"
type="checkbox"
hidden appearance-none outline-none
>
<div select-none>
<Transition name="slide-away" mode="out-in">
<div v-if="dark" i-solar:sun-fog-bold-duotone text="lg hover:zinc-600 dark:hover:zinc-300" transition="all ease-in-out duration-250" />
<div v-else i-solar:moon-stars-bold-duotone text="lg hover:zinc-600 dark:hover:zinc-300" transition="all ease-in-out duration-250" />
</Transition>
</div>
</label>
</div>
</div>
</div>
</template>
@@ -0,0 +1,31 @@
<script setup lang="ts">
import { DrawerContent, DrawerOverlay, DrawerPortal, DrawerRoot, DrawerTrigger } from 'vaul-vue'
import MobileSettings from './MobileSettings.vue'
</script>
<template>
<div flex="~" gap-2>
<DrawerRoot should-scale-background direction="right">
<DrawerTrigger
bg="zinc-100 dark:zinc-800"
text="lg zinc-500 dark:zinc-400"
max-h="[10lh]" min-h="[1lh]"
m-1 rounded-lg p-2 outline-none
>
<div i-solar:settings-minimalistic-bold-duotone />
</DrawerTrigger>
<DrawerPortal>
<DrawerOverlay class="fixed inset-0 z-50 bg-black/40" />
<DrawerContent
max-w="[50%]" bg="[#fffbff] dark:[#1f1a1d]" fixed bottom-0 right-0 top-0 z-50 ml-24 h-full w-full
flex flex-col overflow-y-scroll rounded-l-lg
>
<div class="flex flex-1 flex-col rounded-t-lg p-5" bg="[#fffbff] dark:[#1f1a1d]" gap-2>
<MobileSettings />
</div>
</DrawerContent>
</DrawerPortal>
</DrawerRoot>
</div>
</template>
@@ -76,10 +76,10 @@ onMounted(async () => {
</h2> </h2>
<div> <div>
<div <div
grid="~ cols-[140px_1fr]" my-2 items-center gap-1.5 rounded-lg grid="~ cols-[150px_1fr]" my-2 items-center gap-1.5 rounded-lg
bg="[#fff6fc] dark:[#2c2529]" px-2 py-1 text="pink-400" bg="[#fff6fc] dark:[#2c2529]" px-2 py-1 text="pink-400"
> >
<div text="sm pink-500"> <div text="sm pink-500" pl-1>
<span>{{ t('settings.openai-base-url.label') }}</span> <span>{{ t('settings.openai-base-url.label') }}</span>
</div> </div>
<div flex="~ row" w-full text="sm"> <div flex="~ row" w-full text="sm">
@@ -90,7 +90,7 @@ onMounted(async () => {
h-8 w-full rounded-md bg-transparent px-2 py-1 text-right font-mono outline-none h-8 w-full rounded-md bg-transparent px-2 py-1 text-right font-mono outline-none
> >
</div> </div>
<div text="sm pink-500"> <div text="sm pink-500" pl-1>
<span>{{ t('settings.openai-api-key.label') }}</span> <span>{{ t('settings.openai-api-key.label') }}</span>
</div> </div>
<div flex="~ row" w-full text="sm"> <div flex="~ row" w-full text="sm">
@@ -101,7 +101,7 @@ onMounted(async () => {
h-8 w-full rounded-md bg-transparent px-2 py-1 text-right font-mono outline-none h-8 w-full rounded-md bg-transparent px-2 py-1 text-right font-mono outline-none
> >
</div> </div>
<div text="sm pink-500"> <div text="sm pink-500" pl-1>
<span>{{ t('settings.elevenlabs-api-key.label') }}</span> <span>{{ t('settings.elevenlabs-api-key.label') }}</span>
</div> </div>
<div flex="~ row" w-full text="sm"> <div flex="~ row" w-full text="sm">
@@ -112,7 +112,7 @@ onMounted(async () => {
h-8 w-full rounded-md bg-transparent px-2 py-1 text-right font-mono outline-none h-8 w-full rounded-md bg-transparent px-2 py-1 text-right font-mono outline-none
> >
</div> </div>
<div text="sm pink-500"> <div text="sm pink-500" pl-1>
<span>{{ t('settings.language.title') }}</span> <span>{{ t('settings.language.title') }}</span>
</div> </div>
<div flex="~ row" w-full text="sm"> <div flex="~ row" w-full text="sm">
@@ -128,7 +128,7 @@ onMounted(async () => {
</option> </option>
</select> </select>
</div> </div>
<div text="sm pink-500"> <div text="sm pink-500" pl-1>
<span>{{ t('settings.models') }}</span> <span>{{ t('settings.models') }}</span>
</div> </div>
<div flex="~ row" w-full text="sm"> <div flex="~ row" w-full text="sm">
@@ -147,7 +147,7 @@ onMounted(async () => {
</option> </option>
</select> </select>
</div> </div>
<div text="sm pink-500"> <div text="sm pink-500" pl-1>
<span>{{ t('settings.voices') }}</span> <span>{{ t('settings.voices') }}</span>
</div> </div>
<div flex="~ row" w-full text="sm"> <div flex="~ row" w-full text="sm">
@@ -183,7 +183,7 @@ onMounted(async () => {
grid="~ cols-[140px_1fr]" my-2 items-center gap-1.5 rounded-lg grid="~ cols-[140px_1fr]" my-2 items-center gap-1.5 rounded-lg
bg="[#fff6fc] dark:[#2c2529]" px-2 py-1 text="pink-400" bg="[#fff6fc] dark:[#2c2529]" px-2 py-1 text="pink-400"
> >
<div text="sm pink-500"> <div text="sm pink-500" pl-1>
<span>Viewer</span> <span>Viewer</span>
</div> </div>
<select <select
@@ -197,7 +197,7 @@ onMounted(async () => {
3D 3D
</option> </option>
</select> </select>
<div text="sm pink-500"> <div text="sm pink-500" pl-1>
<span>Theme</span> <span>Theme</span>
</div> </div>
<label h-8 flex cursor-pointer items-center justify-end> <label h-8 flex cursor-pointer items-center justify-end>
+1 -1
View File
@@ -25,7 +25,7 @@ html.dark {
} }
#nprogress .bar { #nprogress .bar {
background: rgb(13, 148, 136); background: #f472b6;
opacity: 0.75; opacity: 0.75;
position: fixed; position: fixed;
z-index: 1031; z-index: 1031;
+11
View File
@@ -18,5 +18,16 @@ declare module 'vue-router/auto-routes' {
* Route name map generated by unplugin-vue-router * Route name map generated by unplugin-vue-router
*/ */
export interface RouteNamedMap { export interface RouteNamedMap {
'/': RouteRecordInfo<'/', '/', Record<never, never>, Record<never, never>>,
'/[...all]': RouteRecordInfo<'/[...all]', '/:all(.*)', { all: ParamValue<true> }, { all: ParamValue<false> }>,
'/audio': RouteRecordInfo<'/audio', '/audio', Record<never, never>, Record<never, never>>,
'/devtools/image': RouteRecordInfo<'/devtools/image', '/devtools/image', Record<never, never>, Record<never, never>>,
'/index-v2': RouteRecordInfo<'/index-v2', '/index-v2', Record<never, never>, Record<never, never>>,
'/lobe-icons': RouteRecordInfo<'/lobe-icons', '/lobe-icons', Record<never, never>, Record<never, never>>,
'/queue': RouteRecordInfo<'/queue', '/queue', Record<never, never>, Record<never, never>>,
'/test/filter-message': RouteRecordInfo<'/test/filter-message', '/test/filter-message', Record<never, never>, Record<never, never>>,
'/test/queues/delays': RouteRecordInfo<'/test/queues/delays', '/test/queues/delays', Record<never, never>, Record<never, never>>,
'/test/queues/emotions': RouteRecordInfo<'/test/queues/emotions', '/test/queues/emotions', Record<never, never>, Record<never, never>>,
'/test/queues/messages': RouteRecordInfo<'/test/queues/messages', '/test/queues/messages', Record<never, never>, Record<never, never>>,
} }
} }
+8 -1
View File
@@ -1,4 +1,5 @@
import { defineConfig, mergeConfigs, presetWebFonts } from 'unocss' import { createExternalPackageIconLoader } from '@iconify/utils/lib/loader/external-pkg'
import { defineConfig, mergeConfigs, presetIcons, presetWebFonts } from 'unocss'
import UnoCSSConfig from '../../uno.config' import UnoCSSConfig from '../../uno.config'
@@ -15,6 +16,12 @@ export default defineConfig(mergeConfigs([
cuteen: 'Sniglet', cuteen: 'Sniglet',
}, },
}), }),
presetIcons({
scale: 1.2,
collections: {
...createExternalPackageIconLoader('@proj-airi/lobe-icons'),
},
}),
], ],
// hyoban/unocss-preset-shadcn: Use shadcn ui with UnoCSS // hyoban/unocss-preset-shadcn: Use shadcn ui with UnoCSS
// https://github.com/hyoban/unocss-preset-shadcn // https://github.com/hyoban/unocss-preset-shadcn
+4 -1
View File
@@ -1,4 +1,4 @@
import { defineConfig, mergeConfigs, presetWebFonts } from 'unocss' import { defineConfig, mergeConfigs, presetIcons, presetWebFonts } from 'unocss'
import UnoCSSConfig from '../../uno.config' import UnoCSSConfig from '../../uno.config'
@@ -15,6 +15,9 @@ export default defineConfig(mergeConfigs([
cuteen: 'Sniglet', cuteen: 'Sniglet',
}, },
}), }),
presetIcons({
scale: 1.2,
}),
], ],
}, },
])) ]))
+37 -44
View File
@@ -132,7 +132,7 @@ importers:
specifier: ^6.1.0 specifier: ^6.1.0
version: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0) version: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0)
packages/iconify-json-lobe: packages/lobe-icons:
devDependencies: devDependencies:
'@iconify/tools': '@iconify/tools':
specifier: ^4.1.1 specifier: ^4.1.1
@@ -487,7 +487,7 @@ importers:
version: 1.2.2 version: 1.2.2
'@intlify/unplugin-vue-i18n': '@intlify/unplugin-vue-i18n':
specifier: ^6.0.3 specifier: ^6.0.3
version: 6.0.3(@vue/compiler-dom@3.5.13)(eslint@9.20.0(jiti@2.4.2))(rollup@2.79.1)(typescript@5.7.3)(vue-i18n@11.1.1(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)) version: 6.0.3(@vue/compiler-dom@3.5.13)(eslint@9.20.0(jiti@2.4.2))(rollup@4.34.6)(typescript@5.7.3)(vue-i18n@11.1.1(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))
'@proj-airi/elevenlabs': '@proj-airi/elevenlabs':
specifier: workspace:^ specifier: workspace:^
version: link:../elevenlabs version: link:../elevenlabs
@@ -514,10 +514,10 @@ importers:
version: 5.2.1(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) version: 5.2.1(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))
'@vue-macros/volar': '@vue-macros/volar':
specifier: ^0.30.14 specifier: ^0.30.14
version: 0.30.14(rollup@2.79.1)(typescript@5.7.3)(vue-tsc@2.2.0(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3)) version: 0.30.14(rollup@4.34.6)(typescript@5.7.3)(vue-tsc@2.2.0(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3))
'@vueuse/motion': '@vueuse/motion':
specifier: ^2.2.6 specifier: ^2.2.6
version: 2.2.6(magicast@0.3.5)(rollup@2.79.1)(vue@3.5.13(typescript@5.7.3)) version: 2.2.6(magicast@0.3.5)(rollup@4.34.6)(vue@3.5.13(typescript@5.7.3))
electron: electron:
specifier: ^34.1.1 specifier: ^34.1.1
version: 34.1.1 version: 34.1.1
@@ -532,28 +532,28 @@ importers:
version: 4.0.1 version: 4.0.1
unplugin-auto-import: unplugin-auto-import:
specifier: ^19.0.0 specifier: ^19.0.0
version: 19.0.0(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(@vueuse/core@12.5.0(typescript@5.7.3))(rollup@2.79.1) version: 19.0.0(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.34.6))(@vueuse/core@12.5.0(typescript@5.7.3))(rollup@4.34.6)
unplugin-vue-components: unplugin-vue-components:
specifier: ^28.0.0 specifier: ^28.0.0
version: 28.0.0(@babel/parser@7.26.7)(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(rollup@2.79.1)(vue@3.5.13(typescript@5.7.3)) version: 28.0.0(@babel/parser@7.26.7)(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.34.6))(rollup@4.34.6)(vue@3.5.13(typescript@5.7.3))
unplugin-vue-macros: unplugin-vue-macros:
specifier: ^2.14.2 specifier: ^2.14.2
version: 2.14.2(@vueuse/core@12.5.0(typescript@5.7.3))(esbuild@0.24.2)(rollup@2.79.1)(typescript@5.7.3)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3)) version: 2.14.2(@vueuse/core@12.5.0(typescript@5.7.3))(esbuild@0.24.2)(rollup@4.34.6)(typescript@5.7.3)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3))
unplugin-vue-markdown: unplugin-vue-markdown:
specifier: ^28.3.0 specifier: ^28.3.0
version: 28.3.0(rollup@2.79.1)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0)) version: 28.3.0(rollup@4.34.6)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))
unplugin-vue-router: unplugin-vue-router:
specifier: ^0.11.2 specifier: ^0.11.2
version: 0.11.2(rollup@2.79.1)(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)) version: 0.11.2(rollup@4.34.6)(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))
vite-bundle-visualizer: vite-bundle-visualizer:
specifier: ^1.2.1 specifier: ^1.2.1
version: 1.2.1(rollup@2.79.1) version: 1.2.1(rollup@4.34.6)
vite-plugin-pwa: vite-plugin-pwa:
specifier: ^0.21.1 specifier: ^0.21.1
version: 0.21.1(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0) version: 0.21.1(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0)
vite-plugin-vue-devtools: vite-plugin-vue-devtools:
specifier: ^7.7.1 specifier: ^7.7.1
version: 7.7.1(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(rollup@2.79.1)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) version: 7.7.1(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.34.6))(rollup@4.34.6)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))
vite-plugin-vue-layouts: vite-plugin-vue-layouts:
specifier: ^0.11.0 specifier: ^0.11.0
version: 0.11.0(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)) version: 0.11.0(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))
@@ -761,12 +761,18 @@ importers:
'@iconify-json/svg-spinners': '@iconify-json/svg-spinners':
specifier: ^1.2.2 specifier: ^1.2.2
version: 1.2.2 version: 1.2.2
'@iconify/utils':
specifier: ^2.3.0
version: 2.3.0
'@intlify/unplugin-vue-i18n': '@intlify/unplugin-vue-i18n':
specifier: ^6.0.3 specifier: ^6.0.3
version: 6.0.3(@vue/compiler-dom@3.5.13)(eslint@9.20.0(jiti@2.4.2))(rollup@4.34.6)(typescript@5.7.3)(vue-i18n@11.1.1(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)) version: 6.0.3(@vue/compiler-dom@3.5.13)(eslint@9.20.0(jiti@2.4.2))(rollup@2.79.1)(typescript@5.7.3)(vue-i18n@11.1.1(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))
'@proj-airi/elevenlabs': '@proj-airi/elevenlabs':
specifier: workspace:^ specifier: workspace:^
version: link:../elevenlabs version: link:../elevenlabs
'@proj-airi/lobe-icons':
specifier: workspace:^
version: link:../lobe-icons
'@proj-airi/unplugin-download': '@proj-airi/unplugin-download':
specifier: workspace:^ specifier: workspace:^
version: link:../unplugin-download version: link:../unplugin-download
@@ -790,10 +796,10 @@ importers:
version: 5.2.1(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) version: 5.2.1(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))
'@vue-macros/volar': '@vue-macros/volar':
specifier: ^0.30.14 specifier: ^0.30.14
version: 0.30.14(rollup@4.34.6)(typescript@5.7.3)(vue-tsc@2.2.0(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3)) version: 0.30.14(rollup@2.79.1)(typescript@5.7.3)(vue-tsc@2.2.0(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3))
'@vueuse/motion': '@vueuse/motion':
specifier: ^2.2.6 specifier: ^2.2.6
version: 2.2.6(magicast@0.3.5)(rollup@4.34.6)(vue@3.5.13(typescript@5.7.3)) version: 2.2.6(magicast@0.3.5)(rollup@2.79.1)(vue@3.5.13(typescript@5.7.3))
hfup: hfup:
specifier: workspace:^ specifier: workspace:^
version: link:../hfup version: link:../hfup
@@ -802,28 +808,28 @@ importers:
version: 4.0.1 version: 4.0.1
unplugin-auto-import: unplugin-auto-import:
specifier: ^19.0.0 specifier: ^19.0.0
version: 19.0.0(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.34.6))(@vueuse/core@12.5.0(typescript@5.7.3))(rollup@4.34.6) version: 19.0.0(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(@vueuse/core@12.5.0(typescript@5.7.3))(rollup@2.79.1)
unplugin-vue-components: unplugin-vue-components:
specifier: ^28.0.0 specifier: ^28.0.0
version: 28.0.0(@babel/parser@7.26.7)(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.34.6))(rollup@4.34.6)(vue@3.5.13(typescript@5.7.3)) version: 28.0.0(@babel/parser@7.26.7)(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(rollup@2.79.1)(vue@3.5.13(typescript@5.7.3))
unplugin-vue-macros: unplugin-vue-macros:
specifier: ^2.14.2 specifier: ^2.14.2
version: 2.14.2(@vueuse/core@12.5.0(typescript@5.7.3))(esbuild@0.24.2)(rollup@4.34.6)(typescript@5.7.3)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3)) version: 2.14.2(@vueuse/core@12.5.0(typescript@5.7.3))(esbuild@0.24.2)(rollup@2.79.1)(typescript@5.7.3)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3))
unplugin-vue-markdown: unplugin-vue-markdown:
specifier: ^28.3.0 specifier: ^28.3.0
version: 28.3.0(rollup@4.34.6)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0)) version: 28.3.0(rollup@2.79.1)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))
unplugin-vue-router: unplugin-vue-router:
specifier: ^0.11.2 specifier: ^0.11.2
version: 0.11.2(rollup@4.34.6)(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)) version: 0.11.2(rollup@2.79.1)(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))
vite-bundle-visualizer: vite-bundle-visualizer:
specifier: ^1.2.1 specifier: ^1.2.1
version: 1.2.1(rollup@4.34.6) version: 1.2.1(rollup@2.79.1)
vite-plugin-pwa: vite-plugin-pwa:
specifier: ^0.21.1 specifier: ^0.21.1
version: 0.21.1(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0) version: 0.21.1(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(workbox-build@7.3.0)(workbox-window@7.3.0)
vite-plugin-vue-devtools: vite-plugin-vue-devtools:
specifier: ^7.7.1 specifier: ^7.7.1
version: 7.7.1(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.34.6))(rollup@4.34.6)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) version: 7.7.1(@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@2.79.1))(rollup@2.79.1)(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))
vite-plugin-vue-layouts: vite-plugin-vue-layouts:
specifier: ^0.11.0 specifier: ^0.11.0
version: 0.11.0(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)) version: 0.11.0(vite@6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0))(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3))
@@ -1145,9 +1151,6 @@ packages:
svelte-eslint-parser: svelte-eslint-parser:
optional: true optional: true
'@antfu/install-pkg@0.4.1':
resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==}
'@antfu/install-pkg@1.0.0': '@antfu/install-pkg@1.0.0':
resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==} resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==}
@@ -2764,8 +2767,8 @@ packages:
'@iconify/types@2.0.0': '@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
'@iconify/utils@2.2.1': '@iconify/utils@2.3.0':
resolution: {integrity: sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==} resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
'@img/sharp-darwin-arm64@0.33.5': '@img/sharp-darwin-arm64@0.33.5':
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
@@ -8438,9 +8441,6 @@ packages:
package-json-from-dist@1.0.1: package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
package-manager-detector@0.2.8:
resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==}
package-manager-detector@0.2.9: package-manager-detector@0.2.9:
resolution: {integrity: sha512-+vYvA/Y31l8Zk8dwxHhL3JfTuHPm6tlxM2A3GeQyl7ovYnSp1+mzAxClxaOr0qO1TtPxbQxetI7v5XqKLJZk7Q==} resolution: {integrity: sha512-+vYvA/Y31l8Zk8dwxHhL3JfTuHPm6tlxM2A3GeQyl7ovYnSp1+mzAxClxaOr0qO1TtPxbQxetI7v5XqKLJZk7Q==}
@@ -11087,14 +11087,9 @@ snapshots:
- typescript - typescript
- vitest - vitest
'@antfu/install-pkg@0.4.1':
dependencies:
package-manager-detector: 0.2.9
tinyexec: 0.3.2
'@antfu/install-pkg@1.0.0': '@antfu/install-pkg@1.0.0':
dependencies: dependencies:
package-manager-detector: 0.2.8 package-manager-detector: 0.2.9
tinyexec: 0.3.2 tinyexec: 0.3.2
'@antfu/ni@23.3.1': {} '@antfu/ni@23.3.1': {}
@@ -12718,7 +12713,7 @@ snapshots:
'@iconify/tools@4.1.1': '@iconify/tools@4.1.1':
dependencies: dependencies:
'@iconify/types': 2.0.0 '@iconify/types': 2.0.0
'@iconify/utils': 2.2.1 '@iconify/utils': 2.3.0
'@types/tar': 6.1.13 '@types/tar': 6.1.13
axios: 1.7.9 axios: 1.7.9
cheerio: 1.0.0 cheerio: 1.0.0
@@ -12734,15 +12729,15 @@ snapshots:
'@iconify/types@2.0.0': {} '@iconify/types@2.0.0': {}
'@iconify/utils@2.2.1': '@iconify/utils@2.3.0':
dependencies: dependencies:
'@antfu/install-pkg': 0.4.1 '@antfu/install-pkg': 1.0.0
'@antfu/utils': 0.7.10 '@antfu/utils': 8.1.0
'@iconify/types': 2.0.0 '@iconify/types': 2.0.0
debug: 4.4.0 debug: 4.4.0
globals: 15.14.0 globals: 15.14.0
kolorist: 1.8.0 kolorist: 1.8.0
local-pkg: 0.5.1 local-pkg: 1.0.0
mlly: 1.7.4 mlly: 1.7.4
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -14435,7 +14430,7 @@ snapshots:
'@unocss/preset-icons@65.4.3': '@unocss/preset-icons@65.4.3':
dependencies: dependencies:
'@iconify/utils': 2.2.1 '@iconify/utils': 2.3.0
'@unocss/core': 65.4.3 '@unocss/core': 65.4.3
ofetch: 1.4.1 ofetch: 1.4.1
transitivePeerDependencies: transitivePeerDependencies:
@@ -18684,7 +18679,7 @@ snapshots:
local-pkg@0.5.1: local-pkg@0.5.1:
dependencies: dependencies:
mlly: 1.7.3 mlly: 1.7.4
pkg-types: 1.3.0 pkg-types: 1.3.0
local-pkg@1.0.0: local-pkg@1.0.0:
@@ -19941,8 +19936,6 @@ snapshots:
package-json-from-dist@1.0.1: {} package-json-from-dist@1.0.1: {}
package-manager-detector@0.2.8: {}
package-manager-detector@0.2.9: {} package-manager-detector@0.2.9: {}
packrup@0.1.2: {} packrup@0.1.2: {}
-4
View File
@@ -1,7 +1,6 @@
import { import {
defineConfig, defineConfig,
presetAttributify, presetAttributify,
presetIcons,
presetTypography, presetTypography,
presetUno, presetUno,
transformerDirectives, transformerDirectives,
@@ -12,9 +11,6 @@ export default defineConfig({
presets: [ presets: [
presetUno(), presetUno(),
presetAttributify(), presetAttributify(),
presetIcons({
scale: 1.2,
}),
presetTypography(), presetTypography(),
], ],
transformers: [ transformers: [