+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
{{
+ $t('login.login_btn')
+ }}
+
+
+
+
diff --git a/webui/src/utils/mobile.ts b/webui/src/utils/mobile.ts
new file mode 100644
index 00000000..236eea3d
--- /dev/null
+++ b/webui/src/utils/mobile.ts
@@ -0,0 +1,3 @@
+export function isMobile() {
+ return window.innerWidth <= 768 || /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
+}
\ No newline at end of file
diff --git a/webui/types/dts/auto-imports.d.ts b/webui/types/dts/auto-imports.d.ts
index f68e10ba..eb123aae 100644
--- a/webui/types/dts/auto-imports.d.ts
+++ b/webui/types/dts/auto-imports.d.ts
@@ -56,6 +56,7 @@ declare global {
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
const inject: typeof import('vue')['inject']
const isDefined: typeof import('@vueuse/core')['isDefined']
+ const isMobile: typeof import('../../src/utils/mobile')['isMobile']
const isProxy: typeof import('vue')['isProxy']
const isReactive: typeof import('vue')['isReactive']
const isReadonly: typeof import('vue')['isReadonly']
diff --git a/webui/types/dts/components.d.ts b/webui/types/dts/components.d.ts
index cc313003..20b5c151 100644
--- a/webui/types/dts/components.d.ts
+++ b/webui/types/dts/components.d.ts
@@ -12,6 +12,7 @@ declare module '@vue/runtime-core' {
AbAdd: typeof import('./../../src/components/basic/ab-add.vue')['default']
AbAddRss: typeof import('./../../src/components/ab-add-rss.vue')['default']
AbBangumiCard: typeof import('./../../src/components/ab-bangumi-card.vue')['default']
+ AbBottombar: typeof import('./../../src/components/layout/ab-bottombar.vue')['default']
AbButton: typeof import('./../../src/components/basic/ab-button.vue')['default']
AbChangeAccount: typeof import('./../../src/components/ab-change-account.vue')['default']
AbCheckbox: typeof import('./../../src/components/basic/ab-checkbox.vue')['default']
diff --git a/webui/unocss.config.ts b/webui/unocss.config.ts
index 2c24c0e7..24216c35 100644
--- a/webui/unocss.config.ts
+++ b/webui/unocss.config.ts
@@ -7,49 +7,49 @@ import {
import presetRemToPx from '@unocss/preset-rem-to-px';
export default defineConfig({
- presets: [
- presetUno(),
- presetRemToPx(),
- presetAttributify(),
- presetIcons({ cdn: 'https://esm.sh/' }),
- ],
- theme: {
- colors: {
- primary: '#493475',
- running: '#A3D491',
- stopped: '#DF7F91',
- page: '#F0F0F0',
+ presets: [
+ presetUno(),
+ presetRemToPx(),
+ presetAttributify(),
+ presetIcons({cdn: 'https://esm.sh/'}),
+ ],
+ theme: {
+ colors: {
+ primary: '#493475',
+ running: '#A3D491',
+ stopped: '#DF7F91',
+ page: '#F0F0F0',
+ },
},
- },
- rules: [
- [
- 'bg-theme-row',
- {
- background: 'linear-gradient(90.5deg, #492897 1.53%, #783674 96.48%)',
- },
+ rules: [
+ [
+ 'bg-theme-row',
+ {
+ background: 'linear-gradient(90.5deg, #492897 1.53%, #783674 96.48%)',
+ },
+ ],
+ [
+ 'bg-theme-col',
+ {
+ background: 'linear-gradient(180deg, #492897 0%, #783674 100%)',
+ },
+ ],
+ [
+ 'poster-shandow',
+ {
+ filter: 'drop-shadow(2px 2px 2px rgba(0, 0, 0, 0.1))',
+ },
+ ],
+ [
+ 'poster-pen-active',
+ {
+ background: '#B4ABC6',
+ 'box-shadow': '2px 2px 4px rgba(0, 0, 0, 0.25)',
+ },
+ ],
],
- [
- 'bg-theme-col',
- {
- background: 'linear-gradient(180deg, #492897 0%, #783674 100%)',
- },
- ],
- [
- 'poster-shandow',
- {
- filter: 'drop-shadow(2px 2px 2px rgba(0, 0, 0, 0.1))',
- },
- ],
- [
- 'poster-pen-active',
- {
- background: '#B4ABC6',
- 'box-shadow': '2px 2px 4px rgba(0, 0, 0, 0.25)',
- },
- ],
- ],
- shortcuts: [
- [/^wh-(.*)$/, ([, t]) => `w-${t} h-${t}`],
+ shortcuts: [
+ [/^wh-(.*)$/, ([, t]) => `w-${t} h-${t}`],
[
'layout-container',
@@ -60,6 +60,8 @@ export default defineConfig({
'flex space-x-20px overflow-hidden h-[calc(100vh_-_2_*_16px_-_60px_-_12px)]',
],
['layout-content', 'overflow-hidden h-full flex flex-col flex-1'],
+ ['layout-container-mobile',
+ 'wh-screen flex flex-col max-w-768px p-16px space-y-12px f-cer flex-col bg-theme-row'],
['rel', 'relative'],
['abs', 'absolute'],