Compare commits

...

3 Commits

Author SHA1 Message Date
admin f7d59d2ea3 fix(splash): hide experimental splash components
Docker Image / Quality and Bundle Budgets (push) Successful in 3m28s
Docker Image / Build and Push Docker Image (push) Successful in 1m56s
2026-07-18 15:53:39 +08:00
admin 1a328fad6c chore(icons): 使用生产环境的图标 2026-07-18 15:53:39 +08:00
admin 11c1747a68 fix(feedback): show minimum content length 2026-07-18 15:52:19 +08:00
8 changed files with 35 additions and 8 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 19 KiB

@@ -59,6 +59,14 @@ describe("FeedbackScreen", () => {
container.querySelector<HTMLInputElement>('input[value="problem"]')
?.checked,
).toBe(true);
expect(container.textContent).toContain(
"Minimum 10 characters required.",
);
expect(
container
.querySelector("textarea")
?.getAttribute("aria-describedby"),
).toBe("feedback-content-hint");
});
it("submits valid text and renders the feedback id", async () => {
@@ -238,6 +238,14 @@ h2.fieldLabel {
font-weight: 570;
}
.contentHint {
margin: -6px 0 0;
color: #998b90;
font-size: 11px;
font-weight: 570;
line-height: 1.4;
}
.imageCount {
flex: 0 0 auto;
color: #8d7c82;
+5
View File
@@ -25,6 +25,7 @@ import {
FEEDBACK_IMAGE_LIMIT,
} from "./feedback-image";
import {
FEEDBACK_CONTENT_MIN_LENGTH,
FEEDBACK_CONTENT_MAX_LENGTH,
useFeedbackSubmission,
} from "./use-feedback-submission";
@@ -143,9 +144,13 @@ export function FeedbackScreen() {
<label className={styles.fieldLabel} htmlFor="feedback-content">
Describe your feedback
</label>
<p id="feedback-content-hint" className={styles.contentHint}>
Minimum {FEEDBACK_CONTENT_MIN_LENGTH} characters required.
</p>
<div className={styles.textareaFrame}>
<textarea
id="feedback-content"
aria-describedby="feedback-content-hint"
value={form.content}
maxLength={FEEDBACK_CONTENT_MAX_LENGTH}
disabled={form.isSubmitting}
@@ -31,10 +31,7 @@
padding:
calc(var(--page-padding-y, 20px) + var(--app-safe-top, 0px))
calc(var(--page-padding-x, 26px) + var(--app-safe-right, 0px))
calc(
var(--spacing-md, 12px) + var(--app-safe-bottom, 0px) +
var(--app-bottom-nav-height, 64px)
)
calc(var(--page-padding-y, 20px) + var(--app-safe-bottom, 0px))
calc(var(--page-padding-x, 26px) + var(--app-safe-left, 0px));
}
+13 -4
View File
@@ -2,29 +2,31 @@
import { useEffect } from "react";
import { AppBottomNav, MobileShell } from "@/app/_components/core";
import { MobileShell } from "@/app/_components/core";
// import { AppBottomNav } from "@/app/_components/core";
import { useAppNavigator } from "@/router/use-app-navigator";
import {
useActiveCharacter,
useActiveCharacterRoutes,
} from "@/providers/character-provider";
import { useAuthState } from "@/stores/auth/auth-context";
// import { useAuthState } from "@/stores/auth/auth-context";
import { pwaUtil } from "@/utils/pwa";
import {
SplashBackground,
SplashButton,
SplashContent,
SplashLatestMessage,
// SplashLatestMessage,
SplashLogo,
} from "./components";
import { useSplashLatestMessage } from "./hooks/use-splash-latest-message";
// import { useSplashLatestMessage } from "./hooks/use-splash-latest-message";
import styles from "./components/splash-screen.module.css";
export function SplashScreen() {
const navigator = useAppNavigator();
const character = useActiveCharacter();
const characterRoutes = useActiveCharacterRoutes();
/*
const authState = useAuthState();
const latestMessage = useSplashLatestMessage({
characterId: character.id,
@@ -32,14 +34,17 @@ export function SplashScreen() {
isAuthLoading: authState.isLoading,
loginStatus: authState.loginStatus,
});
*/
const handleStartChat = () => {
navigator.openChat({ replace: true });
};
/*
const handleOpenPrivateRoom = () => {
navigator.push(characterRoutes.privateRoom, { scroll: false });
};
*/
const handleOpenSplash = () => {
navigator.push(characterRoutes.splash, { scroll: false });
@@ -58,6 +63,7 @@ export function SplashScreen() {
<div className={styles.content}>
<SplashLogo />
<div className={styles.spacer} />
{/*
<SplashLatestMessage
message={latestMessage.message}
characterName={character.shortName}
@@ -65,6 +71,7 @@ export function SplashScreen() {
isLoading={latestMessage.isLoading}
onOpenChat={handleStartChat}
/>
*/}
<SplashContent />
<div className={styles.buttonArea}>
<SplashButton onStartChat={handleStartChat} />
@@ -75,12 +82,14 @@ export function SplashScreen() {
24/7 online | Chat | Companion | Heal | Sweet moments
</p>
</div>
{/*
<AppBottomNav
activeItem="chat"
privateRoomLabel={character.copy.privateRoomTitle}
onChatClick={handleOpenSplash}
onPrivateRoomClick={handleOpenPrivateRoom}
/>
*/}
</div>
</MobileShell>
);