feat: 🎸 update portal
26
1000h-portal/.gitignore
vendored
@@ -1,2 +1,24 @@
|
||||
.output/
|
||||
dist/
|
||||
# Nuxt dev/build outputs
|
||||
.output
|
||||
.data
|
||||
.nuxt
|
||||
.nitro
|
||||
.cache
|
||||
dist
|
||||
|
||||
# Node dependencies
|
||||
node_modules
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Misc
|
||||
.DS_Store
|
||||
.fleet
|
||||
.idea
|
||||
|
||||
# Local env files
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<div class="items-container">
|
||||
<div class="items">
|
||||
<div v-for="(item, index) in items" :key="index" class="item">
|
||||
<img class="quote" src="/icon/double-quote.svg" />
|
||||
<img class="quote" src="/portal-static/icon/double-quote.svg" />
|
||||
|
||||
<div class="top">
|
||||
<span>
|
||||
@@ -40,43 +40,43 @@ export default {
|
||||
<script lang="ts" setup>
|
||||
const items = ref([
|
||||
{
|
||||
avatar: "/images/avatar.png",
|
||||
avatar: "/portal-static/images/avatar.png",
|
||||
name: "花开富贵",
|
||||
hint: "连续打卡 1,000 天",
|
||||
text: "这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App",
|
||||
},
|
||||
{
|
||||
avatar: "/images/avatar.png",
|
||||
avatar: "/portal-static/images/avatar.png",
|
||||
name: "花开富贵",
|
||||
hint: "连续打卡 1,000 天",
|
||||
text: "这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App",
|
||||
},
|
||||
{
|
||||
avatar: "/images/avatar.png",
|
||||
avatar: "/portal-static/images/avatar.png",
|
||||
name: "花开富贵",
|
||||
hint: "连续打卡 1,000 天",
|
||||
text: "这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App",
|
||||
},
|
||||
{
|
||||
avatar: "/images/avatar.png",
|
||||
avatar: "/portal-static/images/avatar.png",
|
||||
name: "花开富贵",
|
||||
hint: "连续打卡 1,000 天",
|
||||
text: "这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App",
|
||||
},
|
||||
{
|
||||
avatar: "/images/avatar.png",
|
||||
avatar: "/portal-static/images/avatar.png",
|
||||
name: "花开富贵",
|
||||
hint: "连续打卡 1,000 天",
|
||||
text: "这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App",
|
||||
},
|
||||
{
|
||||
avatar: "/images/avatar.png",
|
||||
avatar: "/portal-static/images/avatar.png",
|
||||
name: "花开富贵",
|
||||
hint: "连续打卡 1,000 天",
|
||||
text: "这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App",
|
||||
},
|
||||
{
|
||||
avatar: "/images/avatar.png",
|
||||
avatar: "/portal-static/images/avatar.png",
|
||||
name: "花开富贵",
|
||||
hint: "连续打卡 1,000 天",
|
||||
text: "这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App这是一个非常好的App",
|
||||
|
||||
@@ -42,37 +42,37 @@ export default {
|
||||
<script lang="ts" setup>
|
||||
const features = ref([
|
||||
{
|
||||
icon: "/images/head-phone.png",
|
||||
icon: "/portal-static/images/head-phone.png",
|
||||
title: "音频跟读",
|
||||
subtitle: "支持下载/导入各类外语音频,进行解析跟读",
|
||||
},
|
||||
{
|
||||
icon: "/images/camera.png",
|
||||
icon: "/portal-static/images/camera.png",
|
||||
title: "视频跟读",
|
||||
subtitle: "支持下载/导入各类外语视频,进行解析跟读",
|
||||
},
|
||||
{
|
||||
icon: "/images/lang.png",
|
||||
icon: "/portal-static/images/lang.png",
|
||||
title: "外语阅读",
|
||||
subtitle: "支持下载/导入各类外语文章,进行解析跟读",
|
||||
},
|
||||
{
|
||||
icon: "/images/robot.png",
|
||||
icon: "/portal-static/images/robot.png",
|
||||
title: "AI自然对话",
|
||||
subtitle: "说你想说的,跟AI一起复读学习",
|
||||
},
|
||||
{
|
||||
icon: "/images/note.png",
|
||||
icon: "/portal-static/images/note.png",
|
||||
title: "重温笔记",
|
||||
subtitle: "学习遇到难点?先添加笔记,再巩固复习",
|
||||
},
|
||||
{
|
||||
icon: "/images/book.png",
|
||||
icon: "/portal-static/images/book.png",
|
||||
title: "词典助记",
|
||||
subtitle: "学习遇到生词?添加到生词本,再巩固复习",
|
||||
},
|
||||
{
|
||||
icon: "/images/cham.png",
|
||||
icon: "/portal-static/images/cham.png",
|
||||
title: "社区竞赛",
|
||||
subtitle: "每日、每周、每月都有人跟你一起学习进步",
|
||||
},
|
||||
@@ -132,7 +132,7 @@ const features = ref([
|
||||
|
||||
.compitition {
|
||||
color: #fff;
|
||||
background-image: url("/images/bg-features.png");
|
||||
background-image: url("/portal-static/images/bg-features.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
position: relative;
|
||||
@@ -145,7 +145,7 @@ const features = ref([
|
||||
right: -20px;
|
||||
width: 824px;
|
||||
height: 448px;
|
||||
background-image: url("/images/rank.png");
|
||||
background-image: url("/portal-static/images/rank.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
</div>
|
||||
|
||||
<div class="arrow">
|
||||
<img src="/icon/arrow-upright.svg" />
|
||||
<img src="/portal-static/icon/arrow-upright.svg" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -53,28 +53,28 @@ const cards = ref([
|
||||
label: "Self Taught.",
|
||||
title: "帮助自主学习",
|
||||
subtitle: "我们提倡直接上手学习,不用理会方法论",
|
||||
bg: "/images/bg-intro-1.png",
|
||||
bg: "/portal-static/images/bg-intro-1.png",
|
||||
colors: ["#384C6B", "#7B93AF"],
|
||||
},
|
||||
{
|
||||
label: "Pronunciation Correction.",
|
||||
title: "纠正口语发音",
|
||||
subtitle: "我们提倡直接上手学习,不用理会方法论",
|
||||
bg: "/images/bg-intro-2.png",
|
||||
bg: "/portal-static/images/bg-intro-2.png",
|
||||
colors: ["#4A6760", "#7C978F"],
|
||||
},
|
||||
{
|
||||
label: "AI Companion.",
|
||||
title: "AI辅助学习",
|
||||
subtitle: "我们提倡直接上手学习,不用理会方法论",
|
||||
bg: "/images/bg-intro-3.png",
|
||||
bg: "/portal-static/images/bg-intro-3.png",
|
||||
colors: ["#384C6B", "#7B93AF"],
|
||||
},
|
||||
{
|
||||
label: "Memory Enhancement.",
|
||||
title: "拓展记忆力",
|
||||
subtitle: "我们提倡直接上手学习,不用理会方法论",
|
||||
bg: "/images/bg-intro-4.png",
|
||||
bg: "/portal-static/images/bg-intro-4.png",
|
||||
colors: ["#70584A", "#A4978D"],
|
||||
},
|
||||
]);
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<div class="items">
|
||||
<div v-for="(item, index) in items" :key="index" class="item">
|
||||
<span>
|
||||
<img src="/icon/check.svg" />
|
||||
<img src="/portal-static/icon/check.svg" />
|
||||
</span>
|
||||
<span class="text-[14px] md:text-[16px]">{{ item }}</span>
|
||||
</div>
|
||||
@@ -22,10 +22,13 @@
|
||||
<div class="self-center">
|
||||
<img
|
||||
class="h-[100%] md:h-[356px] lg:hidden"
|
||||
src="/images/payment.png"
|
||||
src="/portal-static/images/payment.png"
|
||||
/>
|
||||
|
||||
<img class="hidden lg:block" src="/images/payment-2.png" />
|
||||
<img
|
||||
class="hidden lg:block"
|
||||
src="/portal-static/images/payment-2.png"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -17,7 +17,12 @@
|
||||
>
|
||||
与
|
||||
<span class="flex text-greyscale_1 mr-1">
|
||||
<img src="/icon/enjoy-app.svg" width="24" height="24" class="mx-1" />
|
||||
<img
|
||||
src="/portal-static/icon/enjoy-app.svg"
|
||||
width="24"
|
||||
height="24"
|
||||
class="mx-1"
|
||||
/>
|
||||
Enjoy App
|
||||
</span>
|
||||
一起,享受这1000小时
|
||||
@@ -29,7 +34,7 @@
|
||||
>
|
||||
<span class="mr-1">体验 Enjoy App</span>
|
||||
|
||||
<img src="/icon/arrow-right.svg" width="24" />
|
||||
<img src="/portal-static/icon/arrow-right.svg" width="24" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -40,7 +45,7 @@
|
||||
<div class="container m-auto text-center">
|
||||
<img
|
||||
class="demo-screen inline w-[312px] md:w-[682px] lg:w-[924px] xl:w-[1024px] mt-[-40px] md:mt-[-60px]"
|
||||
src="/images/demo.png"
|
||||
src="/portal-static/images/demo.png"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -77,7 +82,7 @@ export default {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background-image: url("/images/bg-demo.png");
|
||||
background-image: url("/portal-static/images/bg-demo.png");
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
|
||||
@@ -3,13 +3,15 @@ export default defineNuxtConfig({
|
||||
devtools: { enabled: true },
|
||||
css: ["~/styles/main.css"],
|
||||
site: {
|
||||
url: "https://1000h.org",
|
||||
name: "Enjoying App",
|
||||
description: "Welcome to Enjoying App!",
|
||||
url: "https://example.com",
|
||||
name: "Enjoy App",
|
||||
description: "Welcome to Enjoy App!",
|
||||
tagline: "",
|
||||
defaultLocale: "zh", // not needed if you have @nuxtjs/i18n installed
|
||||
},
|
||||
|
||||
app: {
|
||||
buildAssetsDir: "portal-assets",
|
||||
head: {
|
||||
viewport:
|
||||
"width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no, viewport-fit=cover",
|
||||
@@ -17,20 +19,19 @@ export default defineNuxtConfig({
|
||||
{
|
||||
rel: "apple-touch-icon",
|
||||
sizes: "180x180",
|
||||
href: "/apple-touch-icon.png",
|
||||
href: "/portal-static/images/apple-touch-icon.png",
|
||||
},
|
||||
{ rel: "mask-icon", href: "/mask-icon.svg" },
|
||||
{
|
||||
rel: "icon",
|
||||
type: "image/png",
|
||||
sizes: "24x24",
|
||||
href: "/favicon-24x24.png",
|
||||
href: "/portal-static/images/favicon-24x24.png",
|
||||
},
|
||||
{
|
||||
rel: "icon",
|
||||
type: "image/png",
|
||||
sizes: "12x12",
|
||||
href: "favicon-12x12.png",
|
||||
href: "/portal-static/images/favicon-12x12.png",
|
||||
},
|
||||
],
|
||||
script: [],
|
||||
@@ -44,5 +45,5 @@ export default defineNuxtConfig({
|
||||
},
|
||||
},
|
||||
|
||||
modules: ["nuxt-og-image", "@nuxtjs/seo"],
|
||||
modules: ["@nuxtjs/seo"],
|
||||
});
|
||||
|
||||
@@ -19,7 +19,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
defineOgImage({ url: "/images/og-image.png" });
|
||||
// defineOgImage({ url: "/images/og-image.png" });
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
|
Before Width: | Height: | Size: 276 B After Width: | Height: | Size: 276 B |
|
Before Width: | Height: | Size: 315 B After Width: | Height: | Size: 315 B |
|
Before Width: | Height: | Size: 752 B After Width: | Height: | Size: 752 B |
|
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 611 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 744 KiB After Width: | Height: | Size: 744 KiB |
|
Before Width: | Height: | Size: 327 B After Width: | Height: | Size: 327 B |
|
Before Width: | Height: | Size: 639 B After Width: | Height: | Size: 639 B |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 744 KiB After Width: | Height: | Size: 744 KiB |
|
Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 306 KiB |
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 169 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
@@ -1,13 +1,13 @@
|
||||
@font-face {
|
||||
font-family: "Noto Serif SC";
|
||||
font-display: swap;
|
||||
src: url("/fonts/NotoSerifSC-Bold.ttf") format("truetype");
|
||||
src: url("/portal-static/fonts/NotoSerifSC-Bold.ttf") format("truetype");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "New York";
|
||||
font-display: swap;
|
||||
src: url("/fonts/NewYorkItalic.ttf") format("truetype");
|
||||
src: url("/portal-static/fonts/NewYorkItalic.ttf") format("truetype");
|
||||
}
|
||||
|
||||
|
||||
|
||||