✨ Globalization
This commit is contained in:
4
app/components.d.ts
vendored
4
app/components.d.ts
vendored
@@ -15,9 +15,7 @@ declare module 'vue' {
|
||||
NAvatar: typeof import('naive-ui')['NAvatar']
|
||||
NButton: typeof import('naive-ui')['NButton']
|
||||
NCard: typeof import('naive-ui')['NCard']
|
||||
NDropdown: typeof import('naive-ui')['NDropdown']
|
||||
NIcon: typeof import('naive-ui')['NIcon']
|
||||
NMenu: typeof import('naive-ui')['NMenu']
|
||||
NPopover: typeof import('naive-ui')['NPopover']
|
||||
NTag: typeof import('naive-ui')['NTag']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
@@ -30,9 +28,7 @@ declare global {
|
||||
const NAvatar: typeof import('naive-ui')['NAvatar']
|
||||
const NButton: typeof import('naive-ui')['NButton']
|
||||
const NCard: typeof import('naive-ui')['NCard']
|
||||
const NDropdown: typeof import('naive-ui')['NDropdown']
|
||||
const NIcon: typeof import('naive-ui')['NIcon']
|
||||
const NMenu: typeof import('naive-ui')['NMenu']
|
||||
const NPopover: typeof import('naive-ui')['NPopover']
|
||||
const NTag: typeof import('naive-ui')['NTag']
|
||||
const RouterLink: typeof import('vue-router')['RouterLink']
|
||||
|
||||
@@ -32,7 +32,16 @@
|
||||
/>
|
||||
</n-popover>
|
||||
|
||||
<naive-color-mode-switch />
|
||||
<div class="flex gap-4">
|
||||
<naive-color-mode-switch />
|
||||
<n-dropdown
|
||||
trigger="hover"
|
||||
:options="localeDropdownOptions"
|
||||
@select="handleLocaleSelect"
|
||||
>
|
||||
<n-button text>{{ locale.toUpperCase().split("-")[0] }}</n-button>
|
||||
</n-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -46,39 +55,45 @@
|
||||
<aside>
|
||||
<nuxt-img src="/favicon.png" alt="Solsynth" class="w-12 h-12" />
|
||||
<div>
|
||||
<h3 class="text-lg font-bold">Solsynth</h3>
|
||||
Making software, hardware and experiences since 2024
|
||||
<h3 class="text-lg font-bold">{{ t("common.solsynth") }}</h3>
|
||||
{{ t("layout.default.footer.tagline") }}
|
||||
</div>
|
||||
</aside>
|
||||
<nav>
|
||||
<h6 class="footer-title">Products</h6>
|
||||
<a href="https://solian.app" target="_blank" class="link link-hover"
|
||||
>Solar Network</a
|
||||
>
|
||||
<nuxt-link to="/products" class="link link-hover">Catalog</nuxt-link>
|
||||
<h6 class="footer-title">{{ t("layout.default.footer.products") }}</h6>
|
||||
<a href="https://solian.app" target="_blank" class="link link-hover">{{
|
||||
t("layout.default.footer.solarNetwork")
|
||||
}}</a>
|
||||
<nuxt-link to="/products" class="link link-hover">{{
|
||||
t("layout.default.footer.catalog")
|
||||
}}</nuxt-link>
|
||||
</nav>
|
||||
<nav>
|
||||
<h6 class="footer-title">Company</h6>
|
||||
<nuxt-link to="/about" class="link link-hover">About us</nuxt-link>
|
||||
<h6 class="footer-title">{{ t("layout.default.footer.company") }}</h6>
|
||||
<nuxt-link to="/about" class="link link-hover">{{
|
||||
t("layout.default.footer.about")
|
||||
}}</nuxt-link>
|
||||
<a
|
||||
href="https://github.com/Solsynth"
|
||||
target="_blank"
|
||||
class="link link-hover"
|
||||
>GitHub</a
|
||||
>{{ t("layout.default.footer.github") }}</a
|
||||
>
|
||||
</nav>
|
||||
<nav>
|
||||
<h6 class="footer-title">Legal</h6>
|
||||
<nuxt-link to="/terms/user-agreement" class="link link-hover"
|
||||
>Terms of Service</nuxt-link
|
||||
>
|
||||
<nuxt-link to="/terms/privacy-policy" class="link link-hover"
|
||||
>Privacy Policy</nuxt-link
|
||||
>
|
||||
<nuxt-link to="/terms/refund-policy" class="link link-hover"
|
||||
>Refund Policy</nuxt-link
|
||||
>
|
||||
<nuxt-link to="/terms" class="link link-hover">All Documents</nuxt-link>
|
||||
<h6 class="footer-title">{{ t("layout.default.footer.legal") }}</h6>
|
||||
<nuxt-link to="/terms/user-agreement" class="link link-hover">{{
|
||||
t("layout.default.footer.tos")
|
||||
}}</nuxt-link>
|
||||
<nuxt-link to="/terms/privacy-policy" class="link link-hover">{{
|
||||
t("layout.default.footer.privacy")
|
||||
}}</nuxt-link>
|
||||
<nuxt-link to="/terms/refund-policy" class="link link-hover">{{
|
||||
t("layout.default.footer.refund")
|
||||
}}</nuxt-link>
|
||||
<nuxt-link to="/terms" class="link link-hover">{{
|
||||
t("layout.default.footer.allDocs")
|
||||
}}</nuxt-link>
|
||||
</nav>
|
||||
</footer>
|
||||
</div>
|
||||
@@ -86,9 +101,10 @@
|
||||
|
||||
<script lang="ts" setup>
|
||||
import type { MenuOption } from "naive-ui";
|
||||
import { NIcon, NAvatar, NMenu } from "naive-ui";
|
||||
import { NIcon, NAvatar, NMenu, NDropdown, NButton } from "naive-ui";
|
||||
import { computed, h } from "vue";
|
||||
import { useRoute, RouterLink } from "vue-router";
|
||||
import { useRoute, useRouter, RouterLink } from "vue-router";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import {
|
||||
ExploreOutlined,
|
||||
CategoryOutlined,
|
||||
@@ -96,11 +112,26 @@ import {
|
||||
} from "@vicons/material";
|
||||
import { breakpointsTailwind } from "@vueuse/core";
|
||||
|
||||
const router = useRouter();
|
||||
const switchLocalePath = useSwitchLocalePath();
|
||||
const { t, locale, locales } = useI18n();
|
||||
|
||||
const localeDropdownOptions = computed(() => {
|
||||
return locales.value?.map((l: any) => ({
|
||||
label: l.name,
|
||||
key: l.code,
|
||||
}));
|
||||
});
|
||||
|
||||
const handleLocaleSelect = (key: string) => {
|
||||
router.push(switchLocalePath(key));
|
||||
};
|
||||
|
||||
const route = useRoute();
|
||||
const breakpoints = useBreakpoints(breakpointsTailwind);
|
||||
|
||||
const { data: recentProducts } = await useAsyncData("recent-products", () =>
|
||||
queryCollection("products").order("updatedDate", "DESC").limit(5).all()
|
||||
queryCollection("products").order("updatedDate", "DESC").limit(5).all(),
|
||||
);
|
||||
|
||||
const activeKey = computed(() => {
|
||||
@@ -148,12 +179,12 @@ const menuOptions = computed<MenuOption[]>(() => {
|
||||
|
||||
return [
|
||||
{
|
||||
label: renderLabel("Explore", "/"),
|
||||
label: renderLabel(t("layout.default.menu.explore"), "/"),
|
||||
key: "explore",
|
||||
icon: renderIcon(ExploreOutlined),
|
||||
},
|
||||
{
|
||||
label: renderLabel("Products", "/products"),
|
||||
label: renderLabel(t("layout.default.menu.products"), "/products"),
|
||||
key: "products",
|
||||
icon: renderIcon(CategoryOutlined),
|
||||
children: productChildren,
|
||||
|
||||
@@ -11,11 +11,10 @@
|
||||
|
||||
<nuxt-img src="/favicon.png" class="w-32 h-32 mb-8 animate-float" />
|
||||
<h1 class="text-6xl font-extrabold mb-6 tracking-tight">
|
||||
We <span ref="typedElement" class="text-primary" />
|
||||
{{ t('page.index.hero.we') }} <span ref="typedElement" class="text-primary" />
|
||||
</h1>
|
||||
<p class="text-2xl mb-10 opacity-80 max-w-2xl">
|
||||
We are a group of friends that make software, hardware and any stuff
|
||||
that is interesting.
|
||||
{{ t('page.index.hero.subtitle') }}
|
||||
</p>
|
||||
<n-space justify="center" size="large">
|
||||
<n-button
|
||||
@@ -26,10 +25,10 @@
|
||||
href="#products"
|
||||
class="px-8 text-lg font-bold shadow-lg shadow-primary/30 hover:shadow-primary/50 transition-shadow"
|
||||
>
|
||||
Explore Products
|
||||
{{ t('page.index.hero.explore') }}
|
||||
</n-button>
|
||||
<n-button size="large" round tag="a" href="/about" class="px-8 text-lg">
|
||||
About Us
|
||||
{{ t('page.index.hero.about') }}
|
||||
</n-button>
|
||||
</n-space>
|
||||
|
||||
@@ -45,10 +44,9 @@
|
||||
<!-- Products Section -->
|
||||
<div id="products" class="scroll-mt-24">
|
||||
<div class="text-center mb-16">
|
||||
<h2 class="text-4xl font-bold mb-4">Our Creations</h2>
|
||||
<h2 class="text-4xl font-bold mb-4">{{ t('page.index.creations.title') }}</h2>
|
||||
<p class="text-xl opacity-70 max-w-2xl mx-auto">
|
||||
From social networks to cloud drives, we build tools that empower and
|
||||
connect.
|
||||
{{ t('page.index.creations.subtitle') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -134,14 +132,12 @@
|
||||
class="flex flex-col md:flex-row items-center gap-12 relative z-10 p-8"
|
||||
>
|
||||
<div class="flex-1">
|
||||
<h2 class="text-3xl font-bold mb-4">More Than Just Code</h2>
|
||||
<h2 class="text-3xl font-bold mb-4">{{ t('page.index.about.title') }}</h2>
|
||||
<p class="text-lg opacity-80 mb-6 leading-relaxed">
|
||||
We are a community-driven team focused on creating meaningful
|
||||
experiences. Our mission goes beyond software—it's about
|
||||
connection, innovation, and fun.
|
||||
{{ t('page.index.about.subtitle') }}
|
||||
</p>
|
||||
<n-button type="primary" ghost size="large" tag="a" href="/about">
|
||||
Read Our Story
|
||||
{{ t('page.index.about.readStory') }}
|
||||
<template #icon>
|
||||
<n-icon :component="ChevronRightOutlined"></n-icon>
|
||||
</template>
|
||||
@@ -180,13 +176,16 @@ import {
|
||||
InfoRound,
|
||||
} from "@vicons/material";
|
||||
import Typed from "typed.js";
|
||||
import { useI18n } from "vue-i18n";
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const route = useRoute();
|
||||
const typedElement = ref(null);
|
||||
const typed = shallowRef(null);
|
||||
|
||||
useHead({
|
||||
title: "We are Solsynth",
|
||||
title: t('page.index.title'),
|
||||
titleTemplate: "%s",
|
||||
});
|
||||
|
||||
@@ -197,11 +196,11 @@ onMounted(() => {
|
||||
}
|
||||
typed.value = new Typed(typedElement.value, {
|
||||
strings: [
|
||||
"make software",
|
||||
"make hardware",
|
||||
"craft experiences",
|
||||
"write stories",
|
||||
"are Solsynth",
|
||||
t("page.index.hero.typed.makeSoftware"),
|
||||
t("page.index.hero.typed.makeHardware"),
|
||||
t("page.index.hero.typed.craftExperiences"),
|
||||
t("page.index.hero.typed.writeStories"),
|
||||
t("page.index.hero.typed.areSolsynth"),
|
||||
],
|
||||
typeSpeed: 50,
|
||||
backDelay: 1500,
|
||||
|
||||
@@ -27,14 +27,11 @@
|
||||
</div>
|
||||
|
||||
<h1 class="text-6xl md:text-7xl font-extrabold mb-6 tracking-tight">
|
||||
Solar Network
|
||||
{{ t('page.product.solarNetwork.hero.title') }}
|
||||
</h1>
|
||||
|
||||
<p class="text-xl md:text-2xl mb-10 max-w-2xl mx-auto leading-relaxed">
|
||||
The next-generation social network designed for
|
||||
<span class="text-primary font-semibold">technology enthusiasts</span
|
||||
>, <span class="text-secondary font-semibold">developers</span>, and
|
||||
<span class="text-info font-semibold">ACG culture</span>.
|
||||
{{ t('page.product.solarNetwork.hero.subtitle', [t('page.product.solarNetwork.hero.subtitle.enthusiasts'), t('page.product.solarNetwork.hero.subtitle.developers'), t('page.product.solarNetwork.hero.subtitle.acg')]) }}
|
||||
</p>
|
||||
|
||||
<n-space justify="center" size="large" class="mb-16">
|
||||
@@ -46,7 +43,7 @@
|
||||
href="#download"
|
||||
class="px-8 py-6 text-lg font-bold shadow-lg shadow-primary/25 hover:shadow-primary/40 transition-all download-button"
|
||||
>
|
||||
Get Started
|
||||
{{ t('page.product.solarNetwork.hero.getStarted') }}
|
||||
<template #icon>
|
||||
<n-icon :component="ArrowDownwardRound" />
|
||||
</template>
|
||||
@@ -59,7 +56,7 @@
|
||||
href="#features"
|
||||
class="px-8 py-6 text-lg hover:bg-gray-100 dark:hover:bg-white/10 transition-all"
|
||||
>
|
||||
Learn More
|
||||
{{ t('page.product.solarNetwork.hero.learnMore') }}
|
||||
</n-button>
|
||||
</n-space>
|
||||
</div>
|
||||
@@ -77,11 +74,10 @@
|
||||
<div class="container mx-auto max-w-6xl">
|
||||
<div class="text-center mb-20">
|
||||
<h2 class="text-4xl md:text-5xl font-bold mb-6">
|
||||
Why Solar Network?
|
||||
{{ t('page.product.solarNetwork.features.title') }}
|
||||
</h2>
|
||||
<p class="text-xl max-w-2xl mx-auto">
|
||||
Built for those who create, code, and connect. Experience a platform
|
||||
that understands your passions.
|
||||
{{ t('page.product.solarNetwork.features.subtitle') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -94,10 +90,11 @@
|
||||
>
|
||||
<n-icon size="32" :component="CodeRound" />
|
||||
</div>
|
||||
<h3 class="text-2xl font-bold mb-4">Developer First</h3>
|
||||
<h3 class="text-2xl font-bold mb-4">
|
||||
{{ t('page.product.solarNetwork.features.devFirst.title') }}
|
||||
</h3>
|
||||
<p class="opacity-80 leading-relaxed">
|
||||
Native syntax highlighting, code snippet sharing, and seamless
|
||||
integration with your favorite dev tools.
|
||||
{{ t('page.product.solarNetwork.features.devFirst.content') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -110,11 +107,11 @@
|
||||
>
|
||||
<n-icon size="32" :component="ApiRound" />
|
||||
</div>
|
||||
<h3 class="text-2xl font-bold mb-4">OpenAPI</h3>
|
||||
<h3 class="text-2xl font-bold mb-4">
|
||||
{{ t('page.product.solarNetwork.features.openapi.title') }}
|
||||
</h3>
|
||||
<p class="opacity-80 leading-relaxed">
|
||||
Fully documented API, transparent rate limiting and risk
|
||||
control. Great start for developing your own app with the
|
||||
Solar Network!
|
||||
{{ t('page.product.solarNetwork.features.openapi.content') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -127,10 +124,11 @@
|
||||
>
|
||||
<n-icon size="32" :component="AutoAwesomeRound" />
|
||||
</div>
|
||||
<h3 class="text-2xl font-bold mb-4">ACG Culture</h3>
|
||||
<h3 class="text-2xl font-bold mb-4">
|
||||
{{ t('page.product.solarNetwork.features.acg.title') }}
|
||||
</h3>
|
||||
<p class="opacity-80 leading-relaxed">
|
||||
A dedicated space for Anime, Comic, and Game enthusiasts.
|
||||
Share your art, reviews, and passion.
|
||||
{{ t('page.product.solarNetwork.features.acg.content') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -143,10 +141,11 @@
|
||||
>
|
||||
<n-icon size="32" :component="FavoriteRound" />
|
||||
</div>
|
||||
<h3 class="text-2xl font-bold mb-4">Friendly Community</h3>
|
||||
<h3 class="text-2xl font-bold mb-4">
|
||||
{{ t('page.product.solarNetwork.features.community.title') }}
|
||||
</h3>
|
||||
<p class="opacity-80 leading-relaxed">
|
||||
Join a vibrant community of like-minded individuals. Share
|
||||
your knowledge, ask questions, and connect with others.
|
||||
{{ t('page.product.solarNetwork.features.community.content') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -159,18 +158,18 @@
|
||||
>
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-0">
|
||||
<div class="p-12 flex flex-col justify-center">
|
||||
<h3 class="text-3xl font-bold mb-6">Experience the Future</h3>
|
||||
<h3 class="text-3xl font-bold mb-6">
|
||||
{{ t('page.product.solarNetwork.experience.title') }}
|
||||
</h3>
|
||||
<p class="text-lg mb-8">
|
||||
Watch our promotional video to see Solar Network in action.
|
||||
Discover a fluid, responsive, and beautiful interface designed
|
||||
for modern interactions.
|
||||
{{ t('page.product.solarNetwork.experience.content') }}
|
||||
</p>
|
||||
<div class="flex gap-4">
|
||||
<n-tag type="warning" round :bordered="false">
|
||||
<template #icon
|
||||
><n-icon :component="ConstructionRound"
|
||||
/></template>
|
||||
Under Construction
|
||||
{{ t('page.product.solarNetwork.experience.wip') }}
|
||||
</n-tag>
|
||||
</div>
|
||||
</div>
|
||||
@@ -207,10 +206,10 @@
|
||||
<div class="container mx-auto max-w-5xl">
|
||||
<div class="text-center mb-20">
|
||||
<h2 class="text-2xl md:text-3xl font-bold mb-2">
|
||||
Start Your Journey
|
||||
{{ t('page.product.solarNetwork.download.title') }}
|
||||
</h2>
|
||||
<p class="text-xl">
|
||||
Available on iOS, Android, macOS, Windows, and Linux.
|
||||
{{ t('page.product.solarNetwork.download.subtitle') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -227,7 +226,7 @@
|
||||
class="shadow-lg shadow-success/20"
|
||||
>
|
||||
<template #icon><n-icon :component="StarRound" /></template>
|
||||
Recommended
|
||||
{{ t('page.product.solarNetwork.download.faster.recommended') }}
|
||||
</n-tag>
|
||||
</div>
|
||||
|
||||
@@ -237,9 +236,11 @@
|
||||
>
|
||||
<n-icon size="36" color="white" :component="IosShareRound" />
|
||||
</div>
|
||||
<h3 class="text-2xl font-bold mb-2">Faster Release</h3>
|
||||
<h3 class="text-2xl font-bold mb-2">
|
||||
{{ t('page.product.solarNetwork.download.faster.title') }}
|
||||
</h3>
|
||||
<p class="opacity-80 mb-8 grow">
|
||||
Get early access to the latest features on all platforms.
|
||||
{{ t('page.product.solarNetwork.download.faster.content') }}
|
||||
<br />
|
||||
<span class="text-xs opacity-70 mt-2 block">
|
||||
<n-space size="small" align="center">
|
||||
@@ -261,7 +262,7 @@
|
||||
target="_blank"
|
||||
class="py-6 font-bold"
|
||||
>
|
||||
Join TestFlight (iOS, macOS)
|
||||
{{ t('page.product.solarNetwork.download.faster.testflight') }}
|
||||
<template #icon><n-icon :component="LaunchRound" /></template>
|
||||
</n-button>
|
||||
<n-button
|
||||
@@ -274,7 +275,7 @@
|
||||
target="_blank"
|
||||
class="py-6 font-bold"
|
||||
>
|
||||
Direct Download
|
||||
{{ t('page.product.solarNetwork.download.faster.direct') }}
|
||||
<template #icon
|
||||
><n-icon :component="CloudDownloadRound"
|
||||
/></template>
|
||||
@@ -289,7 +290,7 @@
|
||||
target="_blank"
|
||||
class="py-2 font-bold text-primary hover:underline"
|
||||
>
|
||||
Open in your Browser
|
||||
{{ t('page.product.solarNetwork.download.faster.browser') }}
|
||||
<template #icon><n-icon :component="WebRound" /></template>
|
||||
</n-button>
|
||||
</div>
|
||||
@@ -309,9 +310,11 @@
|
||||
>
|
||||
<n-icon size="36" color="white" :component="LogoApple" />
|
||||
</div>
|
||||
<h3 class="text-2xl font-bold mb-2">App Store</h3>
|
||||
<h3 class="text-2xl font-bold mb-2">
|
||||
{{ t('page.product.solarNetwork.download.appstore.title') }}
|
||||
</h3>
|
||||
<p class="opacity-80 mb-8 grow">
|
||||
Stable release for general users. Leave a review to support us!
|
||||
{{ t('page.product.solarNetwork.download.appstore.content') }}
|
||||
</p>
|
||||
<n-button
|
||||
secondary
|
||||
@@ -323,7 +326,7 @@
|
||||
target="_blank"
|
||||
class="py-6 font-bold"
|
||||
>
|
||||
Visit Store Page
|
||||
{{ t('page.product.solarNetwork.download.appstore.visit') }}
|
||||
<template #icon><n-icon :component="LaunchRound" /></template>
|
||||
</n-button>
|
||||
</div>
|
||||
@@ -345,7 +348,7 @@
|
||||
<div
|
||||
class="text-xs opacity-80 uppercase tracking-wider font-bold mb-1"
|
||||
>
|
||||
Latest Release
|
||||
{{ t('page.product.solarNetwork.download.latest.title') }}
|
||||
</div>
|
||||
<div class="font-mono text-primary font-bold">
|
||||
{{ latestRelease.data.value?.tag_name }}
|
||||
@@ -358,7 +361,7 @@
|
||||
:href="latestRelease.data.value?.html_url"
|
||||
target="_blank"
|
||||
>
|
||||
View on GitHub
|
||||
{{ t('page.product.solarNetwork.download.latest.view') }}
|
||||
<template #icon
|
||||
><n-icon :component="ArrowForwardRound"
|
||||
/></template>
|
||||
@@ -371,10 +374,11 @@
|
||||
<!-- Footer / Support -->
|
||||
<div class="py-24 bg-primary/5">
|
||||
<div class="container mx-auto px-4 text-center">
|
||||
<h2 class="text-2xl font-bold mb-2">Need Help?</h2>
|
||||
<h2 class="text-2xl font-bold mb-2">
|
||||
{{ t('page.product.solarNetwork.support.title') }}
|
||||
</h2>
|
||||
<p class="mb-12 text-lg">
|
||||
Feel free to contact your customer service or report a bug on the
|
||||
GitHub.
|
||||
{{ t('page.product.solarNetwork.support.content') }}
|
||||
</p>
|
||||
<div class="flex flex-wrap justify-center gap-8">
|
||||
<a
|
||||
@@ -383,14 +387,14 @@
|
||||
class="flex items-center gap-3 px-6 py-4 rounded-xl bg-white dark:bg-white/5 hover:bg-gray-100 dark:hover:bg-white/10 transition-colors border border-gray-200 dark:border-white/5 text-gray-900 dark:text-white shadow-sm"
|
||||
>
|
||||
<n-icon :component="LogoGithub" size="24" />
|
||||
<span class="font-semibold">Report an Issue</span>
|
||||
<span class="font-semibold">{{ t('page.product.solarNetwork.support.report') }}</span>
|
||||
</a>
|
||||
<a
|
||||
href="mailto:lily@solsynth.dev"
|
||||
class="flex items-center gap-3 px-6 py-4 rounded-xl bg-white dark:bg-white/5 hover:bg-gray-100 dark:hover:bg-white/10 transition-colors border border-gray-200 dark:border-white/5 text-gray-900 dark:text-white shadow-sm"
|
||||
>
|
||||
<n-icon :component="MailOutlineRound" size="24" />
|
||||
<span class="font-semibold">Contact Support</span>
|
||||
<span class="font-semibold">{{ t('page.product.solarNetwork.support.contact') }}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -423,14 +427,16 @@ import {
|
||||
LogoWindows,
|
||||
LogoTux,
|
||||
} from "@vicons/ionicons5";
|
||||
import { useI18n } from "vue-i18n";
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
useHead({
|
||||
title: "Solar Network - Stay Connected",
|
||||
title: t('page.product.solarNetwork.title'),
|
||||
meta: [
|
||||
{
|
||||
name: "description",
|
||||
content:
|
||||
"The amazing social network for technology, programming, and ACG fans.",
|
||||
content: t('page.product.solarNetwork.description'),
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
71
i18n/en.json
Normal file
71
i18n/en.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"common.solsynth": "Solsynth",
|
||||
"layout.default.footer.tagline": "Making software, hardware and experiences since 2024",
|
||||
"layout.default.footer.products": "Products",
|
||||
"layout.default.footer.solarNetwork": "Solar Network",
|
||||
"layout.default.footer.catalog": "Catalog",
|
||||
"layout.default.footer.company": "Company",
|
||||
"layout.default.footer.about": "About us",
|
||||
"layout.default.footer.github": "GitHub",
|
||||
"layout.default.footer.legal": "Legal",
|
||||
"layout.default.footer.tos": "Terms of Service",
|
||||
"layout.default.footer.privacy": "Privacy Policy",
|
||||
"layout.default.footer.refund": "Refund Policy",
|
||||
"layout.default.footer.allDocs": "All Documents",
|
||||
"layout.default.menu.explore": "Explore",
|
||||
"layout.default.menu.products": "Products",
|
||||
"page.index.title": "We are Solsynth",
|
||||
"page.index.hero.we": "We",
|
||||
"page.index.hero.typed.makeSoftware": "make software",
|
||||
"page.index.hero.typed.makeHardware": "make hardware",
|
||||
"page.index.hero.typed.craftExperiences": "craft experiences",
|
||||
"page.index.hero.typed.writeStories": "write stories",
|
||||
"page.index.hero.typed.areSolsynth": "are Solsynth",
|
||||
"page.index.hero.subtitle": "We are a group of friends that make software, hardware and any stuff that is interesting.",
|
||||
"page.index.hero.explore": "Explore Products",
|
||||
"page.index.hero.about": "About Us",
|
||||
"page.index.creations.title": "Our Creations",
|
||||
"page.index.creations.subtitle": "From social networks to cloud drives, we build tools that empower and connect.",
|
||||
"page.index.about.title": "More Than Just Code",
|
||||
"page.index.about.subtitle": "We are a community-driven team focused on creating meaningful experiences. Our mission goes beyond software—it's about connection, innovation, and fun.",
|
||||
"page.index.about.readStory": "Read Our Story",
|
||||
"page.product.solarNetwork.title": "Solar Network - Stay Connected",
|
||||
"page.product.solarNetwork.description": "The amazing social network for technology, programming, and ACG fans.",
|
||||
"page.product.solarNetwork.hero.title": "Solar Network",
|
||||
"page.product.solarNetwork.hero.subtitle": "The next-generation social network designed for {0}, {1}, and {2}.",
|
||||
"page.product.solarNetwork.hero.subtitle.enthusiasts": "technology enthusiasts",
|
||||
"page.product.solarNetwork.hero.subtitle.developers": "developers",
|
||||
"page.product.solarNetwork.hero.subtitle.acg": "ACG culture",
|
||||
"page.product.solarNetwork.hero.getStarted": "Get Started",
|
||||
"page.product.solarNetwork.hero.learnMore": "Learn More",
|
||||
"page.product.solarNetwork.features.title": "Why Solar Network?",
|
||||
"page.product.solarNetwork.features.subtitle": "Built for those who create, code, and connect. Experience a platform that understands your passions.",
|
||||
"page.product.solarNetwork.features.devFirst.title": "Developer First",
|
||||
"page.product.solarNetwork.features.devFirst.content": "Native syntax highlighting, code snippet sharing, and seamless integration with your favorite dev tools.",
|
||||
"page.product.solarNetwork.features.openapi.title": "OpenAPI",
|
||||
"page.product.solarNetwork.features.openapi.content": "Fully documented API, transparent rate limiting and risk control. Great start for developing your own app with the Solar Network!",
|
||||
"page.product.solarNetwork.features.acg.title": "ACG Culture",
|
||||
"page.product.solarNetwork.features.acg.content": "A dedicated space for Anime, Comic, and Game enthusiasts. Share your art, reviews, and passion.",
|
||||
"page.product.solarNetwork.features.community.title": "Friendly Community",
|
||||
"page.product.solarNetwork.features.community.content": "Join a vibrant community of like-minded individuals. Share your knowledge, ask questions, and connect with others.",
|
||||
"page.product.solarNetwork.experience.title": "Experience the Future",
|
||||
"page.product.solarNetwork.experience.content": "Watch our promotional video to see Solar Network in action. Discover a fluid, responsive, and beautiful interface designed for modern interactions.",
|
||||
"page.product.solarNetwork.experience.wip": "Under Construction",
|
||||
"page.product.solarNetwork.download.title": "Start Your Journey",
|
||||
"page.product.solarNetwork.download.subtitle": "Available on iOS, Android, macOS, Windows, and Linux.",
|
||||
"page.product.solarNetwork.download.faster.title": "Faster Release",
|
||||
"page.product.solarNetwork.download.faster.recommended": "Recommended",
|
||||
"page.product.solarNetwork.download.faster.content": "Get early access to the latest features on all platforms.",
|
||||
"page.product.solarNetwork.download.faster.testflight": "Join TestFlight (iOS, macOS)",
|
||||
"page.product.solarNetwork.download.faster.direct": "Direct Download",
|
||||
"page.product.solarNetwork.download.faster.browser": "Open in your Browser",
|
||||
"page.product.solarNetwork.download.appstore.title": "App Store",
|
||||
"page.product.solarNetwork.download.appstore.content": "Stable release for general users. Leave a review to support us!",
|
||||
"page.product.solarNetwork.download.appstore.visit": "Visit Store Page",
|
||||
"page.product.solarNetwork.download.latest.title": "Latest Release",
|
||||
"page.product.solarNetwork.download.latest.view": "View on GitHub",
|
||||
"page.product.solarNetwork.support.title": "Need Help?",
|
||||
"page.product.solarNetwork.support.content": "Feel free to contact your customer service or report a bug on the GitHub.",
|
||||
"page.product.solarNetwork.support.report": "Report an Issue",
|
||||
"page.product.solarNetwork.support.contact": "Contact Support"
|
||||
}
|
||||
71
i18n/zh-cn.json
Normal file
71
i18n/zh-cn.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"common.solsynth": "Solsynth",
|
||||
"layout.default.footer.tagline": "自 2024 年以来,我们一直致力于软件、硬件和体验的创造。",
|
||||
"layout.default.footer.products": "产品",
|
||||
"layout.default.footer.solarNetwork": "Solar Network",
|
||||
"layout.default.footer.catalog": "目录",
|
||||
"layout.default.footer.company": "公司",
|
||||
"layout.default.footer.about": "关于我们",
|
||||
"layout.default.footer.github": "GitHub",
|
||||
"layout.default.footer.legal": "法律",
|
||||
"layout.default.footer.tos": "服务条款",
|
||||
"layout.default.footer.privacy": "隐私政策",
|
||||
"layout.default.footer.refund": "退款政策",
|
||||
"layout.default.footer.allDocs": "所有文档",
|
||||
"layout.default.menu.explore": "发现",
|
||||
"layout.default.menu.products": "产品",
|
||||
"page.index.title": "我们是 Solsynth",
|
||||
"page.index.hero.we": "我们",
|
||||
"page.index.hero.typed.makeSoftware": "创造软件",
|
||||
"page.index.hero.typed.makeHardware": "构建硬件",
|
||||
"page.index.hero.typed.craftExperiences": "打造体验",
|
||||
"page.index.hero.typed.writeStories": "撰写故事",
|
||||
"page.index.hero.typed.areSolsynth": "是 Solsynth",
|
||||
"page.index.hero.subtitle": "我们是一群朋友,致力于创造有趣的软件、硬件和任何新奇玩意。",
|
||||
"page.index.hero.explore": "探索产品",
|
||||
"page.index.hero.about": "关于我们",
|
||||
"page.index.creations.title": "我们的作品",
|
||||
"page.index.creations.subtitle": "从社交网络到云存储,我们构建的工具旨在赋能与连接。",
|
||||
"page.index.about.title": "不止于代码",
|
||||
"page.index.about.subtitle": "我们是一个由社区驱动的团队,专注于创造有意义的体验。我们的使命超越软件——关乎连接、创新和乐趣。",
|
||||
"page.index.about.readStory": "阅读我们的故事",
|
||||
"page.product.solarNetwork.title": "Solar Network - 保持联系",
|
||||
"page.product.solarNetwork.description": "为技术、编程和 ACG 爱好者打造的卓越社交网络。",
|
||||
"page.product.solarNetwork.hero.title": "Solar Network",
|
||||
"page.product.solarNetwork.hero.subtitle": "为 {0}、{1} 和 {2} 设计的下一代社交网络。",
|
||||
"page.product.solarNetwork.hero.subtitle.enthusiasts": "技术爱好者",
|
||||
"page.product.solarNetwork.hero.subtitle.developers": "开发者",
|
||||
"page.product.solarNetwork.hero.subtitle.acg": "ACG 文化",
|
||||
"page.product.solarNetwork.hero.getStarted": "开始使用",
|
||||
"page.product.solarNetwork.hero.learnMore": "了解更多",
|
||||
"page.product.solarNetwork.features.title": "为何选择 Solar Network?",
|
||||
"page.product.solarNetwork.features.subtitle": "为创造者、编码者和连接者而构建。体验一个懂你热情的平台。",
|
||||
"page.product.solarNetwork.features.devFirst.title": "开发者优先",
|
||||
"page.product.solarNetwork.features.devFirst.content": "原生语法高亮、代码片段分享,以及与你喜爱的开发工具无缝集成。",
|
||||
"page.product.solarNetwork.features.openapi.title": "开放 API",
|
||||
"page.product.solarNetwork.features.openapi.content": "提供完整文档的 API,透明的速率限制和风险控制。是你利用 Solar Network 开发自己应用的绝佳起点!",
|
||||
"page.product.solarNetwork.features.acg.title": "ACG 文化",
|
||||
"page.product.solarNetwork.features.acg.content": "一个专为动漫、漫画和游戏爱好者打造的空间。分享你的艺术、评论和热情。",
|
||||
"page.product.solarNetwork.features.community.title": "友好的社区",
|
||||
"page.product.solarNetwork.features.community.content": "加入一个由志同道合的人组成的充满活力的社区。分享你的知识、提出问题并与他人建立联系。",
|
||||
"page.product.solarNetwork.experience.title": "体验未来",
|
||||
"page.product.solarNetwork.experience.content": "观看我们的宣传视频,了解 Solar Network 的实际运行情况。发现专为现代交互设计的流畅、响应迅速且美观的界面。",
|
||||
"page.product.solarNetwork.experience.wip": "正在建设中",
|
||||
"page.product.solarNetwork.download.title": "开启你的旅程",
|
||||
"page.product.solarNetwork.download.subtitle": "支持 iOS、Android、macOS、Windows 和 Linux。",
|
||||
"page.product.solarNetwork.download.faster.title": "抢先版",
|
||||
"page.product.solarNetwork.download.faster.recommended": "推荐",
|
||||
"page.product.solarNetwork.download.faster.content": "在所有平台上抢先体验最新功能。",
|
||||
"page.product.solarNetwork.download.faster.testflight": "加入 TestFlight (iOS, macOS)",
|
||||
"page.product.solarNetwork.download.faster.direct": "直接下载",
|
||||
"page.product.solarNetwork.download.faster.browser": "在浏览器中打开",
|
||||
"page.product.solarNetwork.download.appstore.title": "App Store",
|
||||
"page.product.solarNetwork.download.appstore.content": "为普通用户提供的稳定版本。留下评论以支持我们!",
|
||||
"page.product.solarNetwork.download.appstore.visit": "访问商店页面",
|
||||
"page.product.solarNetwork.download.latest.title": "最新发布",
|
||||
"page.product.solarNetwork.download.latest.view": "在 GitHub 上查看",
|
||||
"page.product.solarNetwork.support.title": "需要帮助?",
|
||||
"page.product.solarNetwork.support.content": "随时联系我们的客服或在 GitHub 上报告错误。",
|
||||
"page.product.solarNetwork.support.report": "报告问题",
|
||||
"page.product.solarNetwork.support.contact": "联系支持"
|
||||
}
|
||||
@@ -8,7 +8,6 @@ import { generateTailwindColorThemes } from "@bg-dev/nuxt-naiveui/utils";
|
||||
export default defineNuxtConfig({
|
||||
compatibilityDate: "2025-07-15",
|
||||
devtools: { enabled: true },
|
||||
ssr: false,
|
||||
css: ["~/assets/css/main.css"],
|
||||
app: {
|
||||
pageTransition: { name: "page", mode: "out-in" },
|
||||
@@ -18,7 +17,6 @@ export default defineNuxtConfig({
|
||||
link: [{ rel: "icon", type: "image/png", href: "/favicon.png" }],
|
||||
},
|
||||
},
|
||||
nitro: {},
|
||||
modules: [
|
||||
"@nuxt/content",
|
||||
"@nuxt/eslint",
|
||||
@@ -26,7 +24,25 @@ export default defineNuxtConfig({
|
||||
"@nuxt/scripts",
|
||||
"@vueuse/nuxt",
|
||||
"@bg-dev/nuxt-naiveui",
|
||||
"@nuxtjs/i18n",
|
||||
],
|
||||
i18n: {
|
||||
langDir: ".",
|
||||
strategy: "prefix_except_default",
|
||||
locales: [
|
||||
{
|
||||
code: "en",
|
||||
name: "English",
|
||||
file: "en.json",
|
||||
},
|
||||
{
|
||||
code: "zh-cn",
|
||||
name: "简体中文",
|
||||
file: "zh-cn.json",
|
||||
},
|
||||
],
|
||||
defaultLocale: "en",
|
||||
},
|
||||
vite: {
|
||||
plugins: [
|
||||
tailwindcss(),
|
||||
@@ -47,6 +63,27 @@ export default defineNuxtConfig({
|
||||
}),
|
||||
],
|
||||
},
|
||||
nitro: {
|
||||
preset: "cloudflare_module",
|
||||
cloudflare: {
|
||||
deployConfig: true,
|
||||
wrangler: {
|
||||
d1_databases: [
|
||||
{
|
||||
binding: "DB",
|
||||
database_name: "capital-content",
|
||||
database_id: "73d65123-3c42-4dc9-b540-8e89678962a2",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
content: {
|
||||
database: {
|
||||
type: "d1",
|
||||
bindingName: "DB",
|
||||
},
|
||||
},
|
||||
naiveui: {
|
||||
colorModePreference: "system",
|
||||
colorModePreferenceCookieName: "fi-ColorMode",
|
||||
|
||||
1853
package-lock.json
generated
1853
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,8 @@
|
||||
"dev": "nuxt dev",
|
||||
"generate": "nuxt generate",
|
||||
"preview": "nuxt preview",
|
||||
"postinstall": "nuxt prepare"
|
||||
"postinstall": "nuxt prepare",
|
||||
"deploy": "npx wrangler --cwd .output deploy --name capital"
|
||||
},
|
||||
"dependencies": {
|
||||
"@bg-dev/nuxt-naiveui": "^2.0.0",
|
||||
@@ -16,6 +17,7 @@
|
||||
"@nuxt/eslint": "1.7.1",
|
||||
"@nuxt/image": "1.10.0",
|
||||
"@nuxt/scripts": "0.11.10",
|
||||
"@nuxtjs/i18n": "10.2.1",
|
||||
"@octokit/rest": "^22.0.1",
|
||||
"@unhead/vue": "^2.0.19",
|
||||
"@vueuse/core": "^13.9.0",
|
||||
|
||||
Reference in New Issue
Block a user