调整创作页入口和选中态
隐藏创作桌面侧栏推荐和发现入口 调整创作页左侧导航、品牌区和按钮选中态为 IP 主题扁平效果 更新桌面导航相关测试断言
This commit is contained in:
@@ -9426,8 +9426,7 @@ test('creation home community opens in place without switching to profile', asyn
|
||||
expect(screen.queryByText('陶泥号')).toBeNull();
|
||||
});
|
||||
|
||||
test('creation home desktop rail can return to platform tabs', async () => {
|
||||
const user = userEvent.setup();
|
||||
test('creation home desktop rail hides recommend and discover entries', async () => {
|
||||
mockDesktopPlatformLayout();
|
||||
window.history.replaceState(null, '', '/creation');
|
||||
const { container } = render(<TestWrapper withAuth />);
|
||||
@@ -9437,17 +9436,24 @@ test('creation home desktop rail can return to platform tabs', async () => {
|
||||
});
|
||||
const nav = container.querySelector('.platform-desktop-rail');
|
||||
expect(nav).toBeTruthy();
|
||||
|
||||
await user.click(within(nav as HTMLElement).getByRole('button', { name: '推荐' }));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.queryByRole('main', { name: '陶泥儿创作主页' })).toBeNull();
|
||||
});
|
||||
expect(window.location.pathname).toBe('/');
|
||||
expect(
|
||||
within(nav as HTMLElement).queryByRole('button', { name: '推荐' }),
|
||||
).toBeNull();
|
||||
expect(
|
||||
within(nav as HTMLElement).queryByRole('button', { name: '发现' }),
|
||||
).toBeNull();
|
||||
expect(
|
||||
within(nav as HTMLElement).getByRole('button', { name: '创作' }),
|
||||
).toBeTruthy();
|
||||
expect(
|
||||
within(nav as HTMLElement).getByRole('button', { name: '项目' }),
|
||||
).toBeTruthy();
|
||||
expect(
|
||||
within(nav as HTMLElement).getByRole('button', { name: '我的' }),
|
||||
).toBeTruthy();
|
||||
});
|
||||
|
||||
test('project page keeps desktop rail and can return to platform tabs', async () => {
|
||||
const user = userEvent.setup();
|
||||
test('project page keeps desktop rail with recommend and discover hidden', async () => {
|
||||
mockDesktopPlatformLayout();
|
||||
window.history.replaceState(null, '', '/project');
|
||||
const { container } = render(<TestWrapper withAuth />);
|
||||
@@ -9470,13 +9476,15 @@ test('project page keeps desktop rail and can return to platform tabs', async ()
|
||||
expect(createNavButton.className).not.toContain(
|
||||
'platform-desktop-rail__button--primary',
|
||||
);
|
||||
|
||||
await user.click(within(nav as HTMLElement).getByRole('button', { name: '推荐' }));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.queryByRole('main', { name: '项目' })).toBeNull();
|
||||
});
|
||||
expect(window.location.pathname).toBe('/');
|
||||
expect(
|
||||
within(nav as HTMLElement).queryByRole('button', { name: '推荐' }),
|
||||
).toBeNull();
|
||||
expect(
|
||||
within(nav as HTMLElement).queryByRole('button', { name: '发现' }),
|
||||
).toBeNull();
|
||||
expect(
|
||||
within(nav as HTMLElement).getByRole('button', { name: '我的' }),
|
||||
).toBeTruthy();
|
||||
});
|
||||
|
||||
test('desktop project tab switch clears creation primary styling', async () => {
|
||||
|
||||
@@ -3856,6 +3856,15 @@ test('desktop nav shows creation and projects without draft entry', async () =>
|
||||
expect(
|
||||
within(nav as HTMLElement).getByRole('button', { name: '项目' }),
|
||||
).toBeTruthy();
|
||||
expect(
|
||||
within(nav as HTMLElement).getByRole('button', { name: '我的' }),
|
||||
).toBeTruthy();
|
||||
expect(
|
||||
within(nav as HTMLElement).queryByRole('button', { name: '推荐' }),
|
||||
).toBeNull();
|
||||
expect(
|
||||
within(nav as HTMLElement).queryByRole('button', { name: '发现' }),
|
||||
).toBeNull();
|
||||
expect(
|
||||
within(nav as HTMLElement).queryByRole('button', {
|
||||
name: '草稿,有新草稿',
|
||||
@@ -3909,7 +3918,13 @@ test('desktop recommend page reuses compact workbench chrome', () => {
|
||||
).toBe('/branding/taonier-product-ip.png');
|
||||
expect(topbar?.querySelector('.creation-home-brand-lockup')).toBeNull();
|
||||
expect(
|
||||
within(leftbar as HTMLElement).getByRole('button', { name: '推荐' }),
|
||||
within(leftbar as HTMLElement).queryByRole('button', { name: '推荐' }),
|
||||
).toBeNull();
|
||||
expect(
|
||||
within(leftbar as HTMLElement).queryByRole('button', { name: '发现' }),
|
||||
).toBeNull();
|
||||
expect(
|
||||
within(leftbar as HTMLElement).getByRole('button', { name: '创作' }),
|
||||
).toBeTruthy();
|
||||
expect(
|
||||
within(topbar as HTMLElement).getByPlaceholderText(
|
||||
|
||||
@@ -327,6 +327,10 @@ const PLATFORM_DESKTOP_NAV_TABS: PlatformNavTab[] = [
|
||||
'projects',
|
||||
'profile',
|
||||
];
|
||||
const HIDDEN_DESKTOP_CREATION_NAV_TABS = new Set<PlatformNavTab>([
|
||||
'home',
|
||||
'category',
|
||||
]);
|
||||
const CREATION_HOME_NAV_ICON_SRC: Record<PlatformNavTab, string> = {
|
||||
home: '/creation-home/nav-recommend.png',
|
||||
category: '/creation-home/nav-discover.png',
|
||||
@@ -2897,9 +2901,10 @@ export function RpgEntryHomeView({
|
||||
);
|
||||
const visibleDesktopNavTabs = useMemo<PlatformNavTab[]>(
|
||||
() =>
|
||||
isAuthenticated
|
||||
(isAuthenticated
|
||||
? PLATFORM_DESKTOP_NAV_TABS
|
||||
: ['home', 'category', 'create', 'projects', 'profile'],
|
||||
: ['home', 'category', 'create', 'projects', 'profile']
|
||||
).filter((tab) => !HIDDEN_DESKTOP_CREATION_NAV_TABS.has(tab)),
|
||||
[isAuthenticated],
|
||||
);
|
||||
const publicUserCode = buildPublicUserCode(authUi?.user);
|
||||
|
||||
+58
-50
@@ -3307,6 +3307,9 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock {
|
||||
--creation-clay: #c76532;
|
||||
--creation-clay-dark: #914315;
|
||||
--creation-clay-soft: #ead2bf;
|
||||
--creation-ip: #c7653d;
|
||||
--creation-ip-soft: #fff2e7;
|
||||
--creation-ip-border: rgba(199, 101, 61, 0.32);
|
||||
--creation-ink: #26170f;
|
||||
--creation-muted: #87756a;
|
||||
min-height: 0;
|
||||
@@ -3383,9 +3386,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock {
|
||||
padding: 0 2rem 0 1.35rem !important;
|
||||
font-size: 1.02rem !important;
|
||||
letter-spacing: 0.08em;
|
||||
box-shadow:
|
||||
0 16px 28px rgba(130, 66, 24, 0.18),
|
||||
inset 0 1px 0 rgba(255, 255, 255, 0.42);
|
||||
box-shadow: 0 10px 22px rgba(130, 66, 24, 0.08);
|
||||
}
|
||||
|
||||
.creation-landing__button-art {
|
||||
@@ -3399,21 +3400,18 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock {
|
||||
mix-blend-mode: multiply;
|
||||
}
|
||||
|
||||
.creation-landing__hero-action--primary {
|
||||
border: 1px solid rgba(157, 74, 22, 0.44) !important;
|
||||
background:
|
||||
radial-gradient(circle at 30% 18%, rgba(255, 194, 128, 0.58), transparent 42%),
|
||||
linear-gradient(180deg, #d97937 0%, #bd5b20 100%) !important;
|
||||
color: #fff9f0 !important;
|
||||
.creation-landing__hero-action--primary,
|
||||
.creation-landing__hero-action--secondary {
|
||||
border: 1px solid var(--creation-ip-border) !important;
|
||||
background: rgba(255, 250, 244, 0.82) !important;
|
||||
color: #8b5738 !important;
|
||||
box-shadow: 0 10px 22px rgba(130, 66, 24, 0.08);
|
||||
}
|
||||
|
||||
.creation-landing__hero-action--secondary {
|
||||
border: 1px solid rgba(209, 178, 151, 0.9) !important;
|
||||
background: rgba(255, 250, 244, 0.78) !important;
|
||||
color: #8b5738 !important;
|
||||
box-shadow:
|
||||
0 12px 24px rgba(130, 66, 24, 0.08),
|
||||
inset 0 1px 0 rgba(255, 255, 255, 0.88);
|
||||
.creation-landing__hero-action--primary:hover:not(:disabled),
|
||||
.creation-landing__hero-action--secondary:hover:not(:disabled) {
|
||||
border-color: rgba(199, 101, 61, 0.48) !important;
|
||||
background: var(--creation-ip-soft) !important;
|
||||
}
|
||||
|
||||
.creation-landing__hero-board {
|
||||
@@ -11810,29 +11808,37 @@ button.image-canvas-editor__reference-chip:disabled {
|
||||
|
||||
.platform-desktop-shell--workbench .platform-brand-logo {
|
||||
align-self: center;
|
||||
gap: 0.1rem;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .creation-home-brand-lockup {
|
||||
align-self: flex-start;
|
||||
min-height: 3.28rem;
|
||||
padding-left: 0.28rem;
|
||||
min-height: 4.18rem;
|
||||
padding-left: 0.02rem;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-brand-logo__image {
|
||||
width: 2.82rem;
|
||||
height: 2.82rem;
|
||||
width: 4.12rem;
|
||||
height: 4.12rem;
|
||||
flex: 0 0 auto;
|
||||
filter: drop-shadow(0 0.36rem 0.34rem rgba(112, 62, 32, 0.18));
|
||||
filter: drop-shadow(0 0.5rem 0.4rem rgba(112, 62, 32, 0.2));
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-brand-logo__copy {
|
||||
gap: 0.11rem;
|
||||
transform: translateY(0.02rem);
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-brand-logo__title {
|
||||
font-size: 1.38rem;
|
||||
font-size: 1.46rem;
|
||||
color: #4a220f;
|
||||
letter-spacing: 0.025em;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-brand-logo__subtitle {
|
||||
color: #9b5a35;
|
||||
font-size: 0.46rem;
|
||||
font-size: 0.48rem;
|
||||
letter-spacing: 0.07em;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench
|
||||
@@ -11938,7 +11944,7 @@ button.image-canvas-editor__reference-chip:disabled {
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail {
|
||||
align-self: flex-start;
|
||||
width: 7.05rem;
|
||||
width: 7.6rem;
|
||||
margin: 1.12rem auto 0;
|
||||
border-color: rgba(220, 192, 168, 0.7);
|
||||
border-radius: 1.55rem;
|
||||
@@ -11950,61 +11956,63 @@ button.image-canvas-editor__reference-chip:disabled {
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__button {
|
||||
min-height: 2.88rem;
|
||||
min-height: 3.18rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
gap: 0.34rem;
|
||||
border-radius: 0.82rem;
|
||||
padding: 0 0.34rem;
|
||||
gap: 0.42rem;
|
||||
border-radius: 0.96rem;
|
||||
padding: 0 0.42rem;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__button--primary {
|
||||
min-height: 2.88rem;
|
||||
min-height: 3.18rem;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__icon-shell {
|
||||
width: 2.08rem;
|
||||
height: 2.08rem;
|
||||
width: 2.44rem;
|
||||
height: 2.44rem;
|
||||
flex: 0 0 auto;
|
||||
border-radius: 0.74rem;
|
||||
border-radius: 0.9rem;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__button--active .platform-desktop-rail__icon-shell {
|
||||
background:
|
||||
radial-gradient(circle at 35% 22%, rgba(255, 196, 133, 0.72), transparent 42%),
|
||||
linear-gradient(180deg, #df884b 0%, #c6652a 100%);
|
||||
box-shadow:
|
||||
0 0.62rem 1rem rgba(139, 73, 32, 0.18),
|
||||
inset 0 1px 0 rgba(255, 255, 255, 0.5);
|
||||
background: #fff2e7;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__button--active .platform-desktop-rail__icon {
|
||||
color: #fffaf3;
|
||||
color: #c7653d;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .creation-home-nav-art {
|
||||
display: block;
|
||||
width: 1.62rem;
|
||||
height: 1.62rem;
|
||||
width: 2.12rem;
|
||||
height: 2.12rem;
|
||||
object-fit: contain;
|
||||
object-position: center;
|
||||
filter: drop-shadow(0 0.3rem 0.28rem rgba(112, 62, 32, 0.14));
|
||||
mix-blend-mode: multiply;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__label {
|
||||
min-width: 0;
|
||||
color: #70452d;
|
||||
font-size: 0.76rem !important;
|
||||
font-weight: 760 !important;
|
||||
letter-spacing: 0.04em !important;
|
||||
line-height: 1.05;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench
|
||||
.platform-desktop-rail__button--active
|
||||
.creation-home-nav-art {
|
||||
filter:
|
||||
saturate(0.34)
|
||||
brightness(1.68)
|
||||
contrast(0.82)
|
||||
drop-shadow(0 0.22rem 0.2rem rgba(112, 62, 32, 0.18));
|
||||
mix-blend-mode: screen;
|
||||
filter: drop-shadow(0 0.24rem 0.22rem rgba(112, 62, 32, 0.12));
|
||||
mix-blend-mode: multiply;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__icon {
|
||||
@@ -12012,13 +12020,13 @@ button.image-canvas-editor__reference-chip:disabled {
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__button--active {
|
||||
border-color: transparent;
|
||||
background: transparent;
|
||||
border-color: rgba(199, 101, 61, 0.22);
|
||||
background: rgba(255, 242, 231, 0.74);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__button--active .platform-desktop-rail__label {
|
||||
color: #c15f28;
|
||||
color: #c7653d;
|
||||
}
|
||||
|
||||
.platform-desktop-shell--workbench .platform-desktop-rail__label {
|
||||
|
||||
Reference in New Issue
Block a user