Merge origin/master into codex/rpg-creation-cg-fix

This commit is contained in:
kdletters
2026-05-22 03:22:12 +08:00
142 changed files with 11156 additions and 4071 deletions

View File

@@ -2100,6 +2100,7 @@ test('logged out bottom nav turns active recommend tab into next action', () =>
const nav = container.querySelector('.platform-bottom-nav');
expect(nav).toBeTruthy();
expect(nav?.classList.contains('platform-bottom-nav')).toBe(true);
const buttons = within(nav as HTMLElement).getAllByRole('button');
expect(buttons.map((button) => button.textContent)).toEqual([
@@ -2110,6 +2111,12 @@ test('logged out bottom nav turns active recommend tab into next action', () =>
expect(buttons[0]?.querySelector('.lucide-chevron-down')).toBeTruthy();
expect(buttons[1]?.querySelector('.lucide-sparkles')).toBeTruthy();
expect(buttons[2]?.querySelector('.lucide-compass')).toBeTruthy();
expect(
buttons[1]?.querySelector('.platform-bottom-nav__primary-action'),
).toBeTruthy();
expect(
buttons[0]?.querySelector('.platform-bottom-nav__active-mark'),
).toBeTruthy();
});
test('logged in draft bottom tab shows unread marker', () => {

View File

@@ -1168,13 +1168,21 @@ function PlatformTabButton({
className={`platform-bottom-nav__button ${emphasized ? 'platform-bottom-nav__button--primary' : ''} ${active ? 'platform-bottom-nav__button--active' : ''}`}
>
<span className="platform-bottom-nav__button-content">
<span className="platform-bottom-nav__icon-shell">
<span
className={`platform-bottom-nav__icon-shell ${emphasized ? 'platform-bottom-nav__primary-action' : ''}`}
>
<Icon className="platform-bottom-nav__icon" />
{showDot ? (
<span aria-hidden="true" className="platform-nav-unread-dot" />
) : null}
</span>
<span className="platform-bottom-nav__label">{label}</span>
{active ? (
<span
aria-hidden="true"
className="platform-bottom-nav__active-mark"
/>
) : null}
</span>
</button>
);