feat(ui): ReplyPier 品牌、中文界面与前端构建产物

替换品牌文案与图标,补齐窄屏布局和加载失败提示,确认主要旅程可操作。
This commit is contained in:
WangShen007 committed 2026-10-15 20:25:00 +08:00
1 parent 2adf288cd2
commit ba91abc4b2
77 files changed
+2916

No files matched your search

@@ -0,0 +1,75 @@
<!--
Copyright 2024-2026 ChatterMate
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<script setup lang="ts" name="InstallPrompt">
import { computed } from 'vue'
import { usePWAInstall } from '@/composables/usePWAInstall'
import { isShopifyEmbedded } from '@/pwa/register'
const { canInstall, needsManualInstall, promptInstall } = usePWAInstall()
// Dashed hint card per the design: native prompt where supported, share-sheet
// instructions on iOS, hidden when installed/unsupported/embedded.
const visible = computed(() => !isShopifyEmbedded() && (canInstall.value || needsManualInstall.value))
const handleClick = () => {
if (canInstall.value) promptInstall()
}
</script>
<template>
<button v-if="visible" type="button" class="install-hint" @click="handleClick">
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="install-icon" aria-hidden="true"><path d="M12 15V3m0 0L8 7m4-4l4 4"/><path d="M5 13v5a3 3 0 003 3h8a3 3 0 003-3v-5"/></svg>
<span class="install-text">
安装 ChatterMate —
<span v-if="needsManualInstall" class="install-sub">分享 → 添加到主屏幕</span>
<span v-else class="install-sub">像原生应用一样使用</span>
</span>
</button>
</template>
<style scoped>
.install-hint {
display: flex;
align-items: center;
gap: 11px;
width: 100%;
padding: 13px 15px;
border-radius: 14px;
border: 1px dashed var(--o10);
background: var(--o03);
color: var(--text3);
font-family: var(--font-sans);
font-size: 12.5px;
line-height: 1.35;
text-align: left;
cursor: pointer;
transition: background-color var(--transition-fast);
}
.install-hint:hover {
background: var(--o05);
}
.install-icon {
color: var(--c-teal);
flex-shrink: 0;
}
.install-sub {
color: var(--muted);
}
</style>