feat(portal): mount PuroLocaleSwitcher in Landing/Docs/AuthLayout
This commit is contained in:
@@ -2,6 +2,10 @@
|
|||||||
<div class="auth-shell" :class="{ 'auth-shell-split': hasNarrative }">
|
<div class="auth-shell" :class="{ 'auth-shell-split': hasNarrative }">
|
||||||
<div class="bg-glow soft"></div>
|
<div class="bg-glow soft"></div>
|
||||||
|
|
||||||
|
<div v-if="hasNarrative" class="auth-locale-corner">
|
||||||
|
<PuroLocaleSwitcher />
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- LEFT: Narrative (split mode only, hidden on mobile) -->
|
<!-- LEFT: Narrative (split mode only, hidden on mobile) -->
|
||||||
<aside v-if="hasNarrative" class="auth-narrative">
|
<aside v-if="hasNarrative" class="auth-narrative">
|
||||||
<slot name="narrative"></slot>
|
<slot name="narrative"></slot>
|
||||||
@@ -42,6 +46,7 @@
|
|||||||
import { computed, onMounted, useSlots } from 'vue'
|
import { computed, onMounted, useSlots } from 'vue'
|
||||||
import { useAppStore } from '@/stores'
|
import { useAppStore } from '@/stores'
|
||||||
import { sanitizeUrl } from '@/utils/url'
|
import { sanitizeUrl } from '@/utils/url'
|
||||||
|
import PuroLocaleSwitcher from '@/components/puro/PuroLocaleSwitcher.vue'
|
||||||
|
|
||||||
const appStore = useAppStore()
|
const appStore = useAppStore()
|
||||||
|
|
||||||
@@ -78,6 +83,12 @@ onMounted(() => {
|
|||||||
font-family: var(--font-sans);
|
font-family: var(--font-sans);
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
.auth-shell-split .auth-locale-corner {
|
||||||
|
position: absolute;
|
||||||
|
top: 24px;
|
||||||
|
right: 24px;
|
||||||
|
z-index: 20;
|
||||||
|
}
|
||||||
@media (max-width: 900px) {
|
@media (max-width: 900px) {
|
||||||
.auth-shell-split {
|
.auth-shell-split {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
|
|||||||
@@ -11,13 +11,14 @@
|
|||||||
<span>PURO AI</span>
|
<span>PURO AI</span>
|
||||||
</router-link>
|
</router-link>
|
||||||
<div class="nav-links">
|
<div class="nav-links">
|
||||||
<router-link to="/">首页</router-link>
|
<router-link to="/">产品</router-link>
|
||||||
<a href="#codex">Codex</a>
|
<router-link to="/pricing">定价</router-link>
|
||||||
<a href="#claude-code">Claude Code</a>
|
<router-link to="/docs" class="active">文档</router-link>
|
||||||
<a href="#curl">curl</a>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-cta">
|
<div class="nav-cta">
|
||||||
<router-link to="/login" class="btn btn-primary">登录 →</router-link>
|
<PuroLocaleSwitcher />
|
||||||
|
<router-link to="/login" class="btn btn-ghost">登录</router-link>
|
||||||
|
<router-link to="/register" class="btn btn-primary">注册</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -251,8 +252,8 @@ requires_openai_auth = <span class="kw">true</span></code></pre>
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
// DocsView — public quickstart documentation
|
import PuroLocaleSwitcher from '@/components/puro/PuroLocaleSwitcher.vue'
|
||||||
// Route: /docs (no auth required)
|
|
||||||
async function copyCode(ev: MouseEvent) {
|
async function copyCode(ev: MouseEvent) {
|
||||||
const button = ev.currentTarget as HTMLButtonElement
|
const button = ev.currentTarget as HTMLButtonElement
|
||||||
const panel = button.closest('.code-panel')
|
const panel = button.closest('.code-panel')
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
<a href="/docs">文档</a>
|
<a href="/docs">文档</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-cta">
|
<div class="nav-cta">
|
||||||
|
<PuroLocaleSwitcher />
|
||||||
<router-link to="/login" class="btn btn-ghost">登录</router-link>
|
<router-link to="/login" class="btn btn-ghost">登录</router-link>
|
||||||
<router-link to="/register" class="btn btn-primary">免费试用 →</router-link>
|
<router-link to="/register" class="btn btn-primary">免费试用 →</router-link>
|
||||||
</div>
|
</div>
|
||||||
@@ -329,8 +330,7 @@ requires_openai_auth = <span class="kw">true</span></code></pre>
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
// LandingView — public marketing landing page for PURO AI
|
import PuroLocaleSwitcher from '@/components/puro/PuroLocaleSwitcher.vue'
|
||||||
// Rendered at `/` when user is unauthenticated (see router/index.ts)
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
Reference in New Issue
Block a user