feat(links): align the friends page layout and submit UI

- assemble the friends template with page header, search cover, content position, widget zones and comments
- render the three page title styles and the tabbed search cover
- restore card, category nav and submit modal markup for the friends page
- add page content style support to the page editor
- port the linked card, category nav and submit modal styles to the mobile and desktop breakpoints

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-11-05 21:09:40 +08:00
1 parent 4c562428b4
commit f53cdd4dc8
7 files changed
+328 -402

No files matched your search

@@ -294,7 +294,7 @@ test('the top-nav user popover reproduces the reference quick-login block', () =
// Callers append the block verbatim — no hand-rolled separator or wrapper.
assert.match(header, /render_social_buttons\(__\('快速登录', 'jio'\)\)/);
assert.doesNotMatch(header, /social-separator|social_loginbar/);
assert.match(links, /render_social_buttons\(__\('使用以下方式快速登录', 'jio'\)\)/);
assert.match(links, /render_social_buttons\(\)/);
assert.doesNotMatch(links, /social_loginbar/);
// The retired .social-login-divider / .oauth-row / .oauth-btn markup and its
@@ -53,11 +53,11 @@ test('the user center and public user home keep their legacy rounded-square avat
assert.doesNotMatch(userHome, /\.jio-author-hero__avatar img\s*\{[^}]*--radius-avatar/s);
});
test('link page cards keep their circular logo frames', () => {
const links = read('assets/css/routes/links.css');
test('link page cards keep their legacy logo frames', () => {
const main = read('assets/css/main.css');
assert.match(links, /\.links-card\.big-card \.link-img img\s*\{[^}]*border-radius:\s*100px/s);
assert.match(links, /\.link-img\s*\{[^}]*width:\s*var\(--this-size\)/s);
assert.match(main, /\.links-card\.big-card \.link-img img\s*\{[^}]*border-radius:\s*100px/s);
assert.match(main, /\.link-img img\s*\{[^}]*border-radius:\s*4px/s);
});
test('the user card name row can shrink once the VIP icon joins the badge row', () => {