@gemboss/ui 0.46.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +90 -0
- package/README.md +59 -8
- package/catalog/editor.html +1 -1
- package/catalog/index.html +44 -40
- package/gemboss-ui.css +4 -4
- package/package.json +6 -1
- package/parts/components.css +2 -2
- package/parts/core.css +1 -1
- package/parts/shell.css +2 -2
- package/src/assistant-plain.js +1 -1
- package/src/assistant.css +1 -1
- package/src/index.ts +2 -0
- package/src/kit-plain.css +1 -1
- package/src/language-switcher-plain.js +1 -1
- package/src/language-switcher.css +1 -1
- package/src/logo-sheet.css +1 -0
- package/src/logo-sheet.tsx +63 -0
- package/src/portal.tsx +19 -4
- package/src/question-card.css +1 -1
- package/src/question-card.tsx +19 -4
- package/src/session-rail-plain.js +1 -0
- package/src/shell.css +1 -1
- package/src/topnav-fold.css +1 -0
package/catalog/index.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<!doctype html><html lang="vi"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
|
|
2
|
-
<title>@gemboss/ui catalog</title><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><style>
|
|
2
|
+
<title>@gemboss/ui catalog</title><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"><style>
|
|
3
3
|
body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text);font-family:var(--gemboss-font-sans)}
|
|
4
4
|
.cat{display:grid;grid-template-columns:220px minmax(0,1fr);max-width:1180px;margin:0 auto;gap:32px;padding:32px 24px}
|
|
5
5
|
.cat-nav{position:sticky;top:24px;align-self:start;display:flex;flex-direction:column;gap:2px}
|
|
@@ -27,7 +27,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
27
27
|
@media (max-width:760px){.cat{grid-template-columns:1fr;padding:16px}.cat-nav{position:static;flex-direction:row;flex-wrap:wrap}}
|
|
28
28
|
</style></head><body>
|
|
29
29
|
<div class="cat"><nav class="cat-nav" aria-label="Mục"><a href="#tokens">Token</a><a href="#buttons">Nút</a><a href="#fields">Ô nhập</a><a href="#choice">Tab, nhóm nút, thẻ</a><a href="#surfaces">Thẻ, số liệu, bảng, trạng thái trống</a><a href="#report">Báo cáo</a><a href="#collections">Bảng, list, lưới, board</a><a href="#resizer">Thanh kéo giữa hai cột</a><a href="#modal">Hộp thoại, toast, menu (JS thuần)</a><a href="#sheet">Ngăn trượt cạnh phải</a><a href="#reader">Hộp đọc tài liệu</a><a href="#settings">Hộp cài đặt</a><a href="#switcher">Chuyển dịch vụ</a><a href="#shell">Khung app</a><a href="#nav">Chờ điều hướng</a><a href="#page">Bề rộng nội dung</a><a href="#portal">Cổng công khai: tab trên topbar, tìm kiếm, sáng / tối, người dẫn đầu</a><a href="#site">Trang công khai: thanh trên, logo cỡ site, nút, chân trang</a><a href="#auth">Đăng nhập</a><a href="#setup">Hướng dẫn thiết lập</a><a href="#chat">Thân chat</a><a href="#reactions">Reactions</a><a href="#team-chat">Chat đội</a><a href="#action-card">Thẻ hành động</a><a href="#assistant-engine">Trợ lý: chọn engine</a><a href="#assistant-bridge">Trợ lý: cầu nối trên máy (0.32.0)</a><a href="#assistant-chat">Trợ lý: khung chat (0.29.0)</a><a href="#assistant">Trợ lý: cột phiên</a><a href="#icons">Icon</a><a href="#editor">Editor</a></nav>
|
|
30
|
-
<main><header class="cat-head"><h1>@gemboss/ui 0.
|
|
30
|
+
<main><header class="cat-head"><h1>@gemboss/ui 0.48.0</h1><p>Ngôn ngữ thiết kế chung của các công cụ GemBoss. Markup dưới mỗi ví dụ là đúng thứ package render ra; bề mặt không dùng React (HTML tĩnh, Python) chép markup này và nạp <code>gemboss-ui.css</code>. Dựng từ gemboss <code>0a653d36517c</code>.</p></header>
|
|
31
31
|
<section id="tokens"><h2>Token</h2><p>Đổi giao diện một bề mặt bằng cách đặt lại token, không viết đè class. Tên và giá trị đọc thẳng từ gemboss-ui.css.</p><div class="cat-swatches"><div class="cat-swatch"><i style="background:var(--gemboss-primary)"></i><code>--gemboss-primary</code><span>#1b1c1e</span></div><div class="cat-swatch"><i style="background:var(--gemboss-primary-dark)"></i><code>--gemboss-primary-dark</code><span>#000000</span></div><div class="cat-swatch"><i style="background:var(--gemboss-primary-soft)"></i><code>--gemboss-primary-soft</code><span>#f2f3f5</span></div><div class="cat-swatch"><i style="background:var(--gemboss-accent)"></i><code>--gemboss-accent</code><span>#5661f5</span></div><div class="cat-swatch"><i style="background:var(--gemboss-accent-strong)"></i><code>--gemboss-accent-strong</code><span>#3a44de</span></div><div class="cat-swatch"><i style="background:var(--gemboss-accent-soft)"></i><code>--gemboss-accent-soft</code><span>#eef0fe</span></div><div class="cat-swatch"><i style="background:var(--gemboss-accent-wash)"></i><code>--gemboss-accent-wash</code><span>#f7f8ff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-accent-tint)"></i><code>--gemboss-accent-tint</code><span>#dfe2ff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-accent-mid)"></i><code>--gemboss-accent-mid</code><span>#c9cffd</span></div><div class="cat-swatch"><i style="background:var(--gemboss-text-strong)"></i><code>--gemboss-text-strong</code><span>#1b1c1e</span></div><div class="cat-swatch"><i style="background:var(--gemboss-text)"></i><code>--gemboss-text</code><span>#1b1c1e</span></div><div class="cat-swatch"><i style="background:var(--gemboss-text-muted)"></i><code>--gemboss-text-muted</code><span>#686b71</span></div><div class="cat-swatch"><i style="background:var(--gemboss-surface)"></i><code>--gemboss-surface</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-canvas)"></i><code>--gemboss-canvas</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-preview-canvas)"></i><code>--gemboss-preview-canvas</code><span>#eceef1</span></div><div class="cat-swatch"><i style="background:var(--gemboss-rail-bg)"></i><code>--gemboss-rail-bg</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-panel-bg)"></i><code>--gemboss-panel-bg</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-divider)"></i><code>--gemboss-divider</code><span>#e5e7ea</span></div><div class="cat-swatch"><i style="background:var(--gemboss-divider-soft)"></i><code>--gemboss-divider-soft</code><span>#edeff2</span></div><div class="cat-swatch"><i style="background:var(--gemboss-hover)"></i><code>--gemboss-hover</code><span>#eceef2</span></div><div class="cat-swatch"><i style="background:var(--gemboss-active-bg)"></i><code>--gemboss-active-bg</code><span>#f0f1f4</span></div><div class="cat-swatch"><i style="background:var(--gemboss-active-fg)"></i><code>--gemboss-active-fg</code><span>#1b1c1e</span></div><div class="cat-swatch"><i style="background:var(--gemboss-danger)"></i><code>--gemboss-danger</code><span>#d72c0d</span></div><div class="cat-swatch"><i style="background:var(--gemboss-danger-strong)"></i><code>--gemboss-danger-strong</code><span>#b42318</span></div><div class="cat-swatch"><i style="background:var(--gemboss-danger-soft)"></i><code>--gemboss-danger-soft</code><span>#fff0e9</span></div><div class="cat-swatch"><i style="background:var(--gemboss-danger-border)"></i><code>--gemboss-danger-border</code><span>#f5c9bc</span></div><div class="cat-swatch"><i style="background:var(--gemboss-success)"></i><code>--gemboss-success</code><span>#007f5f</span></div><div class="cat-swatch"><i style="background:var(--gemboss-success-strong)"></i><code>--gemboss-success-strong</code><span>#0a6a4c</span></div><div class="cat-swatch"><i style="background:var(--gemboss-success-soft)"></i><code>--gemboss-success-soft</code><span>#e3f1df</span></div><div class="cat-swatch"><i style="background:var(--gemboss-success-border)"></i><code>--gemboss-success-border</code><span>#b7dfcd</span></div><div class="cat-swatch"><i style="background:var(--gemboss-warning)"></i><code>--gemboss-warning</code><span>#9a6700</span></div><div class="cat-swatch"><i style="background:var(--gemboss-warning-soft)"></i><code>--gemboss-warning-soft</code><span>#fff8e0</span></div><div class="cat-swatch"><i style="background:var(--gemboss-warning-border)"></i><code>--gemboss-warning-border</code><span>#f5d569</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-bg)"></i><code>--gemboss-dark-bg</code><span>#0a0a0c</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-rail)"></i><code>--gemboss-dark-rail</code><span>#0e0e11</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-surface)"></i><code>--gemboss-dark-surface</code><span>#16161a</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-surface-2)"></i><code>--gemboss-dark-surface-2</code><span>#1e1e24</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-divider)"></i><code>--gemboss-dark-divider</code><span>#2a2a31</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-text)"></i><code>--gemboss-dark-text</code><span>#ededf0</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-muted)"></i><code>--gemboss-dark-muted</code><span>#9a9aa4</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-bg)"></i><code>--gemboss-field-bg</code><span>#fdfdfd</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-bg-hover)"></i><code>--gemboss-field-bg-hover</code><span>#fafafa</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-ink)"></i><code>--gemboss-field-ink</code><span>#303030</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-placeholder)"></i><code>--gemboss-field-placeholder</code><span>#616161</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-line)"></i><code>--gemboss-field-line</code><span>#8a8a8a</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-line-hover)"></i><code>--gemboss-field-line-hover</code><span>#616161</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-line-active)"></i><code>--gemboss-field-line-active</code><span>#1a1a1a</span></div><div class="cat-swatch"><i style="background:var(--gemboss-chip-ink)"></i><code>--gemboss-chip-ink</code><span>#303633</span></div><div class="cat-swatch"><i style="background:var(--gemboss-chip-line)"></i><code>--gemboss-chip-line</code><span>#cfd6ce</span></div><div class="cat-swatch"><i style="background:var(--gemboss-chip-line-hover)"></i><code>--gemboss-chip-line-hover</code><span>#aab4ad</span></div><div class="cat-swatch"><i style="background:var(--gemboss-chip-bg-hover)"></i><code>--gemboss-chip-bg-hover</code><span>#f6f7f5</span></div><div class="cat-swatch"><i style="background:var(--gemboss-on-primary)"></i><code>--gemboss-on-primary</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-app-bg)"></i><code>--gemboss-app-bg</code><span>#ffffff</span></div></div><table class="ui-table cat-scale"><thead><tr><th>Token</th><th>Giá trị</th><th>Mẫu</th></tr></thead><tbody><tr><td><code>--gemboss-fs-micro</code></td><td>11px</td><td style="font-size:var(--gemboss-fs-micro)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-caption</code></td><td>12px</td><td style="font-size:var(--gemboss-fs-caption)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-body</code></td><td>14px</td><td style="font-size:var(--gemboss-fs-body)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-body-lg</code></td><td>16px</td><td style="font-size:var(--gemboss-fs-body-lg)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-h3</code></td><td>16px</td><td style="font-size:var(--gemboss-fs-h3)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-h2</code></td><td>20px</td><td style="font-size:var(--gemboss-fs-h2)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-h1</code></td><td>24px</td><td style="font-size:var(--gemboss-fs-h1)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-display</code></td><td>30px</td><td style="font-size:var(--gemboss-fs-display)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-radius-xs</code></td><td>4px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-xs)"></i></td></tr><tr><td><code>--gemboss-radius-sm</code></td><td>6px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-sm)"></i></td></tr><tr><td><code>--gemboss-radius-md</code></td><td>8px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-md)"></i></td></tr><tr><td><code>--gemboss-radius-lg</code></td><td>12px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-lg)"></i></td></tr><tr><td><code>--gemboss-radius-xl</code></td><td>16px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-xl)"></i></td></tr><tr><td><code>--gemboss-radius-2xl</code></td><td>20px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-2xl)"></i></td></tr><tr><td><code>--gemboss-radius-full</code></td><td>999px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-full)"></i></td></tr><tr><td><code>--gemboss-shadow-resting</code></td><td class="cat-small">0 1px 2px rgba(31, 30, 29, 0.04), 0 2px 6px rgba(31, 30, 29, 0.06)</td><td><i class="cat-radius" style="box-shadow:var(--gemboss-shadow-resting);border:0"></i></td></tr><tr><td><code>--gemboss-shadow-raised</code></td><td class="cat-small">0 4px 16px rgba(31, 30, 29, 0.10)</td><td><i class="cat-radius" style="box-shadow:var(--gemboss-shadow-raised);border:0"></i></td></tr><tr><td><code>--gemboss-shadow-overlay</code></td><td class="cat-small">0 16px 48px rgba(31, 30, 29, 0.18)</td><td><i class="cat-radius" style="box-shadow:var(--gemboss-shadow-overlay);border:0"></i></td></tr></tbody></table></section>
|
|
32
32
|
<section id="buttons"><h2>Nút</h2><p>Một lớp <code>ui-btn</code>, ba biến thể, tông đỏ, một cỡ nhỏ. Cao 28px dưới chuột như Button của Polaris (ô nhập và ô chọn 32, như TextField), 44px dưới ngón tay và ở khổ điện thoại, cỡ nhỏ cũng vậy. Dùng được trên <code><button></code> lẫn <code><a></code> (căn giữa sẵn).</p><figure class="cat-demo"><figcaption>Mặc định · chính · ghost · nhỏ · tắt</figcaption><div class="cat-live"><div class="cat-row"><button type="button" class="ui-btn">Lưu nháp</button><button type="button" class="ui-btn ui-btn--primary">Xuất bản</button><button type="button" class="ui-btn ui-btn--ghost">Huỷ</button><button type="button" class="ui-btn ui-btn--sm">Nhỏ</button><button type="button" class="ui-btn ui-btn--primary" disabled>Đang lưu…</button><a class="ui-btn" href="#buttons">Link dạng nút</a></div></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="cat-row">
|
|
33
33
|
<button type="button" class="ui-btn">Lưu nháp</button>
|
|
@@ -785,7 +785,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
785
785
|
</tbody>
|
|
786
786
|
</table>
|
|
787
787
|
</div>
|
|
788
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1 · Data table ở 390px: vẫn là bảng, cuộn ngang, cột đầu dính</figcaption><div class="cat-wide"><iframe title="1 · Data table ở 390px: vẫn là bảng, cuộn ngang, cột đầu dính" style="height:300px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px"><div class="ui-table-wrap"><table class="ui-table ui-table--sticky-first"><caption class="ui-sr-only">Pages captured per day</caption><thead><tr><th scope="col">Store</th><th scope="col" class="is-num">Mon</th><th scope="col" class="is-num">Tue</th><th scope="col" class="is-num">Wed</th><th scope="col" class="is-num">Thu</th><th scope="col" class="is-num">Fri</th><th scope="col" class="is-num">Sat</th><th scope="col" class="is-num">Sun</th><th scope="col" class="is-num">Week</th><th scope="col" class="is-num">Prev</th><th scope="col" class="is-num">Δ</th></tr></thead><tbody><tr><th scope="row" class="ui-table__rowhead">glowrecipe.com</th><td class="is-num">102</td><td class="is-num">136</td><td class="is-num">170</td><td class="is-num">204</td><td class="is-num">238</td><td class="is-num">272</td><td class="is-num">306</td><td class="is-num">340</td><td class="is-num">374</td><td class="is-num">408</td></tr><tr><th scope="row" class="ui-table__rowhead">fluke.com</th><td class="is-num">153</td><td class="is-num">204</td><td class="is-num">255</td><td class="is-num">306</td><td class="is-num">357</td><td class="is-num">408</td><td class="is-num">459</td><td class="is-num">510</td><td class="is-num">561</td><td class="is-num">612</td></tr><tr><th scope="row" class="ui-table__rowhead">ruggable.com</th><td class="is-num">204</td><td class="is-num">272</td><td class="is-num">340</td><td class="is-num">408</td><td class="is-num">476</td><td class="is-num">544</td><td class="is-num">612</td><td class="is-num">680</td><td class="is-num">748</td><td class="is-num">816</td></tr><tr><th scope="row" class="ui-table__rowhead">allbirds.com</th><td class="is-num">255</td><td class="is-num">340</td><td class="is-num">425</td><td class="is-num">510</td><td class="is-num">595</td><td class="is-num">680</td><td class="is-num">765</td><td class="is-num">850</td><td class="is-num">935</td><td class="is-num">1020</td></tr></tbody></table></div></div><script src="../src/kit-plain.js"></script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
788
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1 · Data table ở 390px: vẫn là bảng, cuộn ngang, cột đầu dính</figcaption><div class="cat-wide"><iframe title="1 · Data table ở 390px: vẫn là bảng, cuộn ngang, cột đầu dính" style="height:300px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px"><div class="ui-table-wrap"><table class="ui-table ui-table--sticky-first"><caption class="ui-sr-only">Pages captured per day</caption><thead><tr><th scope="col">Store</th><th scope="col" class="is-num">Mon</th><th scope="col" class="is-num">Tue</th><th scope="col" class="is-num">Wed</th><th scope="col" class="is-num">Thu</th><th scope="col" class="is-num">Fri</th><th scope="col" class="is-num">Sat</th><th scope="col" class="is-num">Sun</th><th scope="col" class="is-num">Week</th><th scope="col" class="is-num">Prev</th><th scope="col" class="is-num">Δ</th></tr></thead><tbody><tr><th scope="row" class="ui-table__rowhead">glowrecipe.com</th><td class="is-num">102</td><td class="is-num">136</td><td class="is-num">170</td><td class="is-num">204</td><td class="is-num">238</td><td class="is-num">272</td><td class="is-num">306</td><td class="is-num">340</td><td class="is-num">374</td><td class="is-num">408</td></tr><tr><th scope="row" class="ui-table__rowhead">fluke.com</th><td class="is-num">153</td><td class="is-num">204</td><td class="is-num">255</td><td class="is-num">306</td><td class="is-num">357</td><td class="is-num">408</td><td class="is-num">459</td><td class="is-num">510</td><td class="is-num">561</td><td class="is-num">612</td></tr><tr><th scope="row" class="ui-table__rowhead">ruggable.com</th><td class="is-num">204</td><td class="is-num">272</td><td class="is-num">340</td><td class="is-num">408</td><td class="is-num">476</td><td class="is-num">544</td><td class="is-num">612</td><td class="is-num">680</td><td class="is-num">748</td><td class="is-num">816</td></tr><tr><th scope="row" class="ui-table__rowhead">allbirds.com</th><td class="is-num">255</td><td class="is-num">340</td><td class="is-num">425</td><td class="is-num">510</td><td class="is-num">595</td><td class="is-num">680</td><td class="is-num">765</td><td class="is-num">850</td><td class="is-num">935</td><td class="is-num">1020</td></tr></tbody></table></div></div><script src="../src/kit-plain.js"></script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
789
789
|
<div class="ui-table-wrap">
|
|
790
790
|
<table class="ui-table ui-table--sticky-first">
|
|
791
791
|
<caption class="ui-sr-only">Pages captured per day</caption>
|
|
@@ -917,7 +917,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
917
917
|
</tr>
|
|
918
918
|
</tbody>
|
|
919
919
|
</table>
|
|
920
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1 · Data table nhiều dòng ở 390px: vẫn cuộn ngang, cột đầu dính và xuống dòng</figcaption><div class="cat-wide"><iframe title="1 · Data table nhiều dòng ở 390px: vẫn cuộn ngang, cột đầu dính và xuống dòng" style="height:320px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px"><div class="ui-table-wrap"><table class="ui-table ui-table--sticky-first"><caption class="ui-sr-only">Jobs</caption><thead><tr><th scope="col">Job</th><th scope="col">State</th><th scope="col">Source</th><th scope="col">Last run</th><th scope="col" class="is-num">Runs</th></tr></thead><tbody><tr><th scope="row" class="ui-table__rowhead"><a href="#job0">Weekly integrations crawl</a><span class="ui-sub">PageFly, GemPages, Replo, Shogun, EComposer and 14 more partner page builders · every Monday 08:00 UTC</span></th><td><span class="ui-tag ui-tag--success">OK</span></td><td><a href="#src0">sitemap</a></td><td>2h ago</td><td class="is-num">1,204</td></tr><tr><th scope="row" class="ui-table__rowhead"><a href="#job1">StoreLeads refresh</a><span class="ui-sub">Apps with a GemPages mention, ranked by install growth · daily</span></th><td><span class="ui-tag ui-tag--warning">Late</span></td><td><a href="#src1">api</a></td><td>26h ago</td><td class="is-num">311</td></tr><tr><th scope="row" class="ui-table__rowhead"><a href="#job2">LinkedIn people at Shopify</a><span class="ui-sub">367 profiles · Find people on the organization page</span></th><td><span class="ui-tag ui-tag--success">OK</span></td><td><a href="#src2">apify</a></td><td>3d ago</td><td class="is-num">18</td></tr></tbody></table></div></div><script src="../src/kit-plain.js"></script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
920
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1 · Data table nhiều dòng ở 390px: vẫn cuộn ngang, cột đầu dính và xuống dòng</figcaption><div class="cat-wide"><iframe title="1 · Data table nhiều dòng ở 390px: vẫn cuộn ngang, cột đầu dính và xuống dòng" style="height:320px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px"><div class="ui-table-wrap"><table class="ui-table ui-table--sticky-first"><caption class="ui-sr-only">Jobs</caption><thead><tr><th scope="col">Job</th><th scope="col">State</th><th scope="col">Source</th><th scope="col">Last run</th><th scope="col" class="is-num">Runs</th></tr></thead><tbody><tr><th scope="row" class="ui-table__rowhead"><a href="#job0">Weekly integrations crawl</a><span class="ui-sub">PageFly, GemPages, Replo, Shogun, EComposer and 14 more partner page builders · every Monday 08:00 UTC</span></th><td><span class="ui-tag ui-tag--success">OK</span></td><td><a href="#src0">sitemap</a></td><td>2h ago</td><td class="is-num">1,204</td></tr><tr><th scope="row" class="ui-table__rowhead"><a href="#job1">StoreLeads refresh</a><span class="ui-sub">Apps with a GemPages mention, ranked by install growth · daily</span></th><td><span class="ui-tag ui-tag--warning">Late</span></td><td><a href="#src1">api</a></td><td>26h ago</td><td class="is-num">311</td></tr><tr><th scope="row" class="ui-table__rowhead"><a href="#job2">LinkedIn people at Shopify</a><span class="ui-sub">367 profiles · Find people on the organization page</span></th><td><span class="ui-tag ui-tag--success">OK</span></td><td><a href="#src2">apify</a></td><td>3d ago</td><td class="is-num">18</td></tr></tbody></table></div></div><script src="../src/kit-plain.js"></script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
921
921
|
<div class="ui-table-wrap">
|
|
922
922
|
<table class="ui-table ui-table--sticky-first">
|
|
923
923
|
<caption class="ui-sr-only">Jobs</caption>
|
|
@@ -1343,7 +1343,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
1343
1343
|
</tbody>
|
|
1344
1344
|
</table>
|
|
1345
1345
|
</div>
|
|
1346
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>2 · Index table ở 390px: ĐỔI thành list (container ≤ 768): tiêu đề, dòng phụ, các ô còn lại trên một dòng chữ nhỏ, checkbox + hành động giữ chỗ</figcaption><div class="cat-wide"><iframe title="2 · Index table ở 390px: ĐỔI thành list (container ≤ 768): tiêu đề, dòng phụ, các ô còn lại trên một dòng chữ nhỏ, checkbox + hành động giữ chỗ" style="height:460px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px"><div class="ui-index"><div class="ui-index__sortbar" role="group" aria-label="Sort"><span aria-hidden="true">Sort</span><a class="ui-chip" href="#collections" aria-current="true">Supplier ↑</a><a class="ui-chip" href="#collections">Score</a></div><div class="ui-bulkbar" hidden><label class="ui-table__checkbox"><input type="checkbox" data-gb-select-all aria-label="Select all"></label><span class="ui-bulkbar__count" data-gb-count="{n} selected" aria-live="polite">0 selected</span><span class="ui-bulkbar__actions"><button type="button" class="ui-btn ui-btn--sm">Add to outreach</button><button type="button" class="ui-btn ui-btn--sm ui-btn--critical">Archive</button></span></div><div class="ui-table-wrap"><table class="ui-table ui-table--index" data-gb-sort="client"><caption class="ui-sr-only">Suppliers</caption><thead><tr><th class="ui-table__check" scope="col"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select-all aria-label="Select all"></label></th><th class="ui-table__primary" scope="col" aria-sort="ascending"><button type="button" class="ui-table__sort">Supplier</button></th><th scope="col">Location</th><th scope="col">Verdict</th><th scope="col" class="is-num" aria-sort="none"><button type="button" class="ui-table__sort">Score</button></th><th scope="col">Ads</th><th class="ui-table__actions" scope="col"><span class="ui-sr-only">Actions</span></th></tr></thead><tbody><tr data-href="#c1"><td class="ui-table__check"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select value="c1" aria-label="Select Guangzhou Yanmei Cosmetics"></label></td><td class="ui-table__primary"><a class="ui-table__title" href="#c1" title="Guangzhou Yanmei Cosmetics">Guangzhou Yanmei Cosmetics</a><span class="ui-sub">OEM · Skincare</span></td><td data-label="In">Guangzhou</td><td><span class="ui-tag ui-tag--success">Likely factory</span></td><td class="is-num" data-label="Score" data-sort-value="86">86</td><td data-condensed="hide">TikTok</td><td class="ui-table__actions"><span class="ui-row-actions"><button type="button" class="ui-btn ui-btn--sm">Contact</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More actions for Guangzhou Yanmei Cosmetics"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="5" cy="10" r="1.5"/><circle cx="10" cy="10" r="1.5"/><circle cx="15" cy="10" r="1.5"/></svg></summary><div class="ui-menu__list gemboss-popover-surface"><button type="button" class="ui-menu__item">Copy link</button><button type="button" class="ui-menu__item">Archive</button></div></details></span></td></tr><tr data-href="#c2"><td class="ui-table__check"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select value="c2" aria-label="Select Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)"></label></td><td class="ui-table__primary"><a class="ui-table__title" href="#c2" title="Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)">Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)</a><span class="ui-sub">ODM · Haircare</span></td><td data-label="In">Shantou</td><td><span class="ui-tag ui-tag--warning">Maybe</span></td><td class="is-num" data-label="Score" data-sort-value="64">64</td><td data-condensed="hide">Meta</td><td class="ui-table__actions"><span class="ui-row-actions"><button type="button" class="ui-btn ui-btn--sm">Contact</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More actions for Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="5" cy="10" r="1.5"/><circle cx="10" cy="10" r="1.5"/><circle cx="15" cy="10" r="1.5"/></svg></summary><div class="ui-menu__list gemboss-popover-surface"><button type="button" class="ui-menu__item">Copy link</button><button type="button" class="ui-menu__item">Archive</button></div></details></span></td></tr><tr data-href="#c3"><td class="ui-table__check"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select value="c3" aria-label="Select Yiwu Bloom Packaging"></label></td><td class="ui-table__primary"><a class="ui-table__title" href="#c3" title="Yiwu Bloom Packaging">Yiwu Bloom Packaging</a><span class="ui-sub">Trader · Packaging</span></td><td data-label="In">Yiwu</td><td><span class="ui-tag ui-tag--danger">Trader</span></td><td class="is-num" data-label="Score" data-sort-value="31">31</td><td data-condensed="hide">—</td><td class="ui-table__actions"><span class="ui-row-actions"><button type="button" class="ui-btn ui-btn--sm">Contact</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More actions for Yiwu Bloom Packaging"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="5" cy="10" r="1.5"/><circle cx="10" cy="10" r="1.5"/><circle cx="15" cy="10" r="1.5"/></svg></summary><div class="ui-menu__list gemboss-popover-surface"><button type="button" class="ui-menu__item">Copy link</button><button type="button" class="ui-menu__item">Archive</button></div></details></span></td></tr><tr data-href="#c4"><td class="ui-table__check"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select value="c4" aria-label="Select Shanghai Kerui Labs"></label></td><td class="ui-table__primary"><a class="ui-table__title" href="#c4" title="Shanghai Kerui Labs">Shanghai Kerui Labs</a><span class="ui-sub">OEM · Serums</span></td><td data-label="In">Shanghai</td><td><span class="ui-tag ui-tag--success">Likely factory</span></td><td class="is-num" data-label="Score" data-sort-value="91">91</td><td data-condensed="hide">Google</td><td class="ui-table__actions"><span class="ui-row-actions"><button type="button" class="ui-btn ui-btn--sm">Contact</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More actions for Shanghai Kerui Labs"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="5" cy="10" r="1.5"/><circle cx="10" cy="10" r="1.5"/><circle cx="15" cy="10" r="1.5"/></svg></summary><div class="ui-menu__list gemboss-popover-surface"><button type="button" class="ui-menu__item">Copy link</button><button type="button" class="ui-menu__item">Archive</button></div></details></span></td></tr></tbody></table></div></div></div><script src="../src/kit-plain.js"></script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
1346
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>2 · Index table ở 390px: ĐỔI thành list (container ≤ 768): tiêu đề, dòng phụ, các ô còn lại trên một dòng chữ nhỏ, checkbox + hành động giữ chỗ</figcaption><div class="cat-wide"><iframe title="2 · Index table ở 390px: ĐỔI thành list (container ≤ 768): tiêu đề, dòng phụ, các ô còn lại trên một dòng chữ nhỏ, checkbox + hành động giữ chỗ" style="height:460px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px"><div class="ui-index"><div class="ui-index__sortbar" role="group" aria-label="Sort"><span aria-hidden="true">Sort</span><a class="ui-chip" href="#collections" aria-current="true">Supplier ↑</a><a class="ui-chip" href="#collections">Score</a></div><div class="ui-bulkbar" hidden><label class="ui-table__checkbox"><input type="checkbox" data-gb-select-all aria-label="Select all"></label><span class="ui-bulkbar__count" data-gb-count="{n} selected" aria-live="polite">0 selected</span><span class="ui-bulkbar__actions"><button type="button" class="ui-btn ui-btn--sm">Add to outreach</button><button type="button" class="ui-btn ui-btn--sm ui-btn--critical">Archive</button></span></div><div class="ui-table-wrap"><table class="ui-table ui-table--index" data-gb-sort="client"><caption class="ui-sr-only">Suppliers</caption><thead><tr><th class="ui-table__check" scope="col"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select-all aria-label="Select all"></label></th><th class="ui-table__primary" scope="col" aria-sort="ascending"><button type="button" class="ui-table__sort">Supplier</button></th><th scope="col">Location</th><th scope="col">Verdict</th><th scope="col" class="is-num" aria-sort="none"><button type="button" class="ui-table__sort">Score</button></th><th scope="col">Ads</th><th class="ui-table__actions" scope="col"><span class="ui-sr-only">Actions</span></th></tr></thead><tbody><tr data-href="#c1"><td class="ui-table__check"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select value="c1" aria-label="Select Guangzhou Yanmei Cosmetics"></label></td><td class="ui-table__primary"><a class="ui-table__title" href="#c1" title="Guangzhou Yanmei Cosmetics">Guangzhou Yanmei Cosmetics</a><span class="ui-sub">OEM · Skincare</span></td><td data-label="In">Guangzhou</td><td><span class="ui-tag ui-tag--success">Likely factory</span></td><td class="is-num" data-label="Score" data-sort-value="86">86</td><td data-condensed="hide">TikTok</td><td class="ui-table__actions"><span class="ui-row-actions"><button type="button" class="ui-btn ui-btn--sm">Contact</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More actions for Guangzhou Yanmei Cosmetics"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="5" cy="10" r="1.5"/><circle cx="10" cy="10" r="1.5"/><circle cx="15" cy="10" r="1.5"/></svg></summary><div class="ui-menu__list gemboss-popover-surface"><button type="button" class="ui-menu__item">Copy link</button><button type="button" class="ui-menu__item">Archive</button></div></details></span></td></tr><tr data-href="#c2"><td class="ui-table__check"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select value="c2" aria-label="Select Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)"></label></td><td class="ui-table__primary"><a class="ui-table__title" href="#c2" title="Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)">Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)</a><span class="ui-sub">ODM · Haircare</span></td><td data-label="In">Shantou</td><td><span class="ui-tag ui-tag--warning">Maybe</span></td><td class="is-num" data-label="Score" data-sort-value="64">64</td><td data-condensed="hide">Meta</td><td class="ui-table__actions"><span class="ui-row-actions"><button type="button" class="ui-btn ui-btn--sm">Contact</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More actions for Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="5" cy="10" r="1.5"/><circle cx="10" cy="10" r="1.5"/><circle cx="15" cy="10" r="1.5"/></svg></summary><div class="ui-menu__list gemboss-popover-surface"><button type="button" class="ui-menu__item">Copy link</button><button type="button" class="ui-menu__item">Archive</button></div></details></span></td></tr><tr data-href="#c3"><td class="ui-table__check"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select value="c3" aria-label="Select Yiwu Bloom Packaging"></label></td><td class="ui-table__primary"><a class="ui-table__title" href="#c3" title="Yiwu Bloom Packaging">Yiwu Bloom Packaging</a><span class="ui-sub">Trader · Packaging</span></td><td data-label="In">Yiwu</td><td><span class="ui-tag ui-tag--danger">Trader</span></td><td class="is-num" data-label="Score" data-sort-value="31">31</td><td data-condensed="hide">—</td><td class="ui-table__actions"><span class="ui-row-actions"><button type="button" class="ui-btn ui-btn--sm">Contact</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More actions for Yiwu Bloom Packaging"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="5" cy="10" r="1.5"/><circle cx="10" cy="10" r="1.5"/><circle cx="15" cy="10" r="1.5"/></svg></summary><div class="ui-menu__list gemboss-popover-surface"><button type="button" class="ui-menu__item">Copy link</button><button type="button" class="ui-menu__item">Archive</button></div></details></span></td></tr><tr data-href="#c4"><td class="ui-table__check"><label class="ui-table__checkbox"><input type="checkbox" data-gb-select value="c4" aria-label="Select Shanghai Kerui Labs"></label></td><td class="ui-table__primary"><a class="ui-table__title" href="#c4" title="Shanghai Kerui Labs">Shanghai Kerui Labs</a><span class="ui-sub">OEM · Serums</span></td><td data-label="In">Shanghai</td><td><span class="ui-tag ui-tag--success">Likely factory</span></td><td class="is-num" data-label="Score" data-sort-value="91">91</td><td data-condensed="hide">Google</td><td class="ui-table__actions"><span class="ui-row-actions"><button type="button" class="ui-btn ui-btn--sm">Contact</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More actions for Shanghai Kerui Labs"><svg viewBox="0 0 20 20" aria-hidden="true"><circle cx="5" cy="10" r="1.5"/><circle cx="10" cy="10" r="1.5"/><circle cx="15" cy="10" r="1.5"/></svg></summary><div class="ui-menu__list gemboss-popover-surface"><button type="button" class="ui-menu__item">Copy link</button><button type="button" class="ui-menu__item">Archive</button></div></details></span></td></tr></tbody></table></div></div></div><script src="../src/kit-plain.js"></script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
1347
1347
|
<div class="ui-index">
|
|
1348
1348
|
<div class="ui-index__sortbar" role="group" aria-label="Sort">
|
|
1349
1349
|
<span aria-hidden="true">Sort</span>
|
|
@@ -1806,7 +1806,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
1806
1806
|
</div>
|
|
1807
1807
|
</li>
|
|
1808
1808
|
</ul>
|
|
1809
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>3 · Resource list chọn được ở 390px: ô chọn 44 (điều khiển dưới ngón tay) kéo vào lề hàng, ảnh không bị đẩy</figcaption><div class="cat-wide"><iframe title="3 · Resource list chọn được ở 390px: ô chọn 44 (điều khiển dưới ngón tay) kéo vào lề hàng, ảnh không bị đẩy" style="height:420px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px"><div class="ui-resource"><div class="ui-bulkbar" data-fit="pending"><label class="ui-table__checkbox"><input type="checkbox" aria-label="Select all"/></label><span class="ui-bulkbar__count" aria-live="polite">0 selected</span><span class="ui-bulkbar__actions"><button type="button" class="ui-btn ui-btn--sm" disabled="">Shortlist</button><button type="button" class="ui-btn ui-btn--sm" disabled="">Compare</button><button type="button" class="ui-btn ui-btn--sm ui-btn--critical" disabled="">Not fit</button></span><span class="ui-bulkbar__measure" aria-hidden="true"><span class="ui-btn ui-btn--sm">Shortlist</span><span class="ui-btn ui-btn--sm">Compare</span><span class="ui-btn ui-btn--sm ui-btn--critical">Not fit</span><span class="ui-btn ui-btn--icon"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle></g></svg></span></span></div><ul class="ui-list" aria-label="Candidates"><li class="ui-list__item"><div class="ui-list__media"><label class="ui-list__check"><input type="checkbox" aria-label="Select Lily Tran"/></label><span class="gb-avatar gb-avatar--32" data-tone="1" aria-hidden="true">LT</span></div><div class="ui-list__body"><a class="ui-list__title" href="#s0">Lily Tran</a><p class="ui-list__sub">Head of CRO at Ruggable</p><p class="ui-list__meta">Replied 2 days ago</p><div class="ui-list__badges"><span class="ui-badge">CRO</span><span class="ui-badge">Plus</span></div></div><div class="ui-list__aside"><b>82</b></div></li><li class="ui-list__item"><div class="ui-list__media"><label class="ui-list__check"><input type="checkbox" aria-label="Select Marcus Bell"/></label><span class="gb-avatar gb-avatar--32" data-tone="0" aria-hidden="true">MB</span></div><div class="ui-list__body"><a class="ui-list__title" href="#s1">Marcus Bell</a><p class="ui-list__sub">Founder, Bell &amp; Co. Media. Runs Meta ads for 40 Shopify brands, mostly apparel and home goods; asked about the agency plan twice.</p><p class="ui-list__meta">New</p><div class="ui-list__badges"><span class="ui-badge">Media buyer</span></div></div><div class="ui-list__aside"><b>77</b></div></li><li class="ui-list__item"><div class="ui-list__media"><label class="ui-list__check"><input type="checkbox" aria-label="Select Aiko Sato"/></label><span class="gb-avatar gb-avatar--32" data-tone="5" aria-hidden="true">AS</span></div><div class="ui-list__body"><a class="ui-list__title" href="#s2">Aiko Sato</a><p class="ui-list__sub">Shopify app founder (reviews)</p><p class="ui-list__meta">Waiting on intro</p><div class="ui-list__badges"><span class="ui-badge">App</span><span class="ui-badge">Japan</span><span class="ui-badge">Plus</span><span class="ui-badge">+1 more<span class="ui-sr-only">: <span class="ui-badge">Partner</span></span></span></div></div><div class="ui-list__aside"><b>64</b></div></li></ul></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
1809
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>3 · Resource list chọn được ở 390px: ô chọn 44 (điều khiển dưới ngón tay) kéo vào lề hàng, ảnh không bị đẩy</figcaption><div class="cat-wide"><iframe title="3 · Resource list chọn được ở 390px: ô chọn 44 (điều khiển dưới ngón tay) kéo vào lề hàng, ảnh không bị đẩy" style="height:420px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px"><div class="ui-resource"><div class="ui-bulkbar" data-fit="pending"><label class="ui-table__checkbox"><input type="checkbox" aria-label="Select all"/></label><span class="ui-bulkbar__count" aria-live="polite">0 selected</span><span class="ui-bulkbar__actions"><button type="button" class="ui-btn ui-btn--sm" disabled="">Shortlist</button><button type="button" class="ui-btn ui-btn--sm" disabled="">Compare</button><button type="button" class="ui-btn ui-btn--sm ui-btn--critical" disabled="">Not fit</button></span><span class="ui-bulkbar__measure" aria-hidden="true"><span class="ui-btn ui-btn--sm">Shortlist</span><span class="ui-btn ui-btn--sm">Compare</span><span class="ui-btn ui-btn--sm ui-btn--critical">Not fit</span><span class="ui-btn ui-btn--icon"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle></g></svg></span></span></div><ul class="ui-list" aria-label="Candidates"><li class="ui-list__item"><div class="ui-list__media"><label class="ui-list__check"><input type="checkbox" aria-label="Select Lily Tran"/></label><span class="gb-avatar gb-avatar--32" data-tone="1" aria-hidden="true">LT</span></div><div class="ui-list__body"><a class="ui-list__title" href="#s0">Lily Tran</a><p class="ui-list__sub">Head of CRO at Ruggable</p><p class="ui-list__meta">Replied 2 days ago</p><div class="ui-list__badges"><span class="ui-badge">CRO</span><span class="ui-badge">Plus</span></div></div><div class="ui-list__aside"><b>82</b></div></li><li class="ui-list__item"><div class="ui-list__media"><label class="ui-list__check"><input type="checkbox" aria-label="Select Marcus Bell"/></label><span class="gb-avatar gb-avatar--32" data-tone="0" aria-hidden="true">MB</span></div><div class="ui-list__body"><a class="ui-list__title" href="#s1">Marcus Bell</a><p class="ui-list__sub">Founder, Bell &amp; Co. Media. Runs Meta ads for 40 Shopify brands, mostly apparel and home goods; asked about the agency plan twice.</p><p class="ui-list__meta">New</p><div class="ui-list__badges"><span class="ui-badge">Media buyer</span></div></div><div class="ui-list__aside"><b>77</b></div></li><li class="ui-list__item"><div class="ui-list__media"><label class="ui-list__check"><input type="checkbox" aria-label="Select Aiko Sato"/></label><span class="gb-avatar gb-avatar--32" data-tone="5" aria-hidden="true">AS</span></div><div class="ui-list__body"><a class="ui-list__title" href="#s2">Aiko Sato</a><p class="ui-list__sub">Shopify app founder (reviews)</p><p class="ui-list__meta">Waiting on intro</p><div class="ui-list__badges"><span class="ui-badge">App</span><span class="ui-badge">Japan</span><span class="ui-badge">Plus</span><span class="ui-badge">+1 more<span class="ui-sr-only">: <span class="ui-badge">Partner</span></span></span></div></div><div class="ui-list__aside"><b>64</b></div></li></ul></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
1810
1810
|
<div class="ui-resource">
|
|
1811
1811
|
<div class="ui-bulkbar" data-fit="pending">
|
|
1812
1812
|
<label class="ui-table__checkbox">
|
|
@@ -1902,7 +1902,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
1902
1902
|
</li>
|
|
1903
1903
|
</ul>
|
|
1904
1904
|
</div>
|
|
1905
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>3 · Resource list trong khung ≤ 400 (0.15.0): thân luôn cạnh ảnh và lấy hết bề ngang còn lại; aside + hành động chung MỘT dòng dưới thân (aside trái, hành động phải); hàng không ảnh thì thân rộng hết hàng</figcaption><div class="cat-wide"><iframe title="3 · Resource list trong khung ≤ 400 (0.15.0): thân luôn cạnh ảnh và lấy hết bề ngang còn lại; aside + hành động chung MỘT dòng dưới thân (aside trái, hành động phải); hàng không ảnh thì thân rộng hết hàng" style="height:420px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px"><ul class="ui-list" aria-label="People"><li class="ui-list__item"><div class="ui-list__media"><span class="gb-avatar gb-avatar--40" data-tone="1" aria-hidden="true">LT</span></div><div class="ui-list__body"><a class="ui-list__title" href="#n1">Lily Tran</a><p class="ui-list__sub">Head of CRO at Ruggable. I help Shopify Plus brands turn traffic into revenue with landing pages, offers and A/B tests</p><p class="ui-list__meta">linkedin · cro-agency · Austin, TX · posted 2d ago</p></div><div class="ui-list__aside"><span class="ui-tag ui-tag--success">82</span></div><div class="ui-list__actions"><a href="#orig" aria-label="Open original profile" style="display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px">↗</a></div></li><li class="ui-list__item"><div class="ui-list__body"><a class="ui-list__title" href="#n2">Marcus Bell</a><p class="ui-list__sub">Founder, Bell UGC Studio · 12,400 followers</p><p class="ui-list__meta"><span>Runs the ads himself<span style="display:block;margin-top:4px">Signals: arcads · heygen · veo 3 · capcut</span></span></p><div class="ui-list__badges"><span class="ui-tag">Hands-on</span><span class="ui-tag ui-tag--success">Email verified</span></div></div><div class="ui-list__aside"><span><span class="ui-tag ui-tag--success">91</span><span class="ui-sub">Unverified</span></span></div><div class="ui-list__actions"><span><button type="button" class="ui-btn ui-btn--ghost">Evidence (3)</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More profiles">⋯</summary><div class="ui-menu__list gemboss-popover-surface"><a class="ui-menu__item" href="#x">X ↗</a></div></details></span></div></li></ul></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
1905
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>3 · Resource list trong khung ≤ 400 (0.15.0): thân luôn cạnh ảnh và lấy hết bề ngang còn lại; aside + hành động chung MỘT dòng dưới thân (aside trái, hành động phải); hàng không ảnh thì thân rộng hết hàng</figcaption><div class="cat-wide"><iframe title="3 · Resource list trong khung ≤ 400 (0.15.0): thân luôn cạnh ảnh và lấy hết bề ngang còn lại; aside + hành động chung MỘT dòng dưới thân (aside trái, hành động phải); hàng không ảnh thì thân rộng hết hàng" style="height:420px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px"><ul class="ui-list" aria-label="People"><li class="ui-list__item"><div class="ui-list__media"><span class="gb-avatar gb-avatar--40" data-tone="1" aria-hidden="true">LT</span></div><div class="ui-list__body"><a class="ui-list__title" href="#n1">Lily Tran</a><p class="ui-list__sub">Head of CRO at Ruggable. I help Shopify Plus brands turn traffic into revenue with landing pages, offers and A/B tests</p><p class="ui-list__meta">linkedin · cro-agency · Austin, TX · posted 2d ago</p></div><div class="ui-list__aside"><span class="ui-tag ui-tag--success">82</span></div><div class="ui-list__actions"><a href="#orig" aria-label="Open original profile" style="display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px">↗</a></div></li><li class="ui-list__item"><div class="ui-list__body"><a class="ui-list__title" href="#n2">Marcus Bell</a><p class="ui-list__sub">Founder, Bell UGC Studio · 12,400 followers</p><p class="ui-list__meta"><span>Runs the ads himself<span style="display:block;margin-top:4px">Signals: arcads · heygen · veo 3 · capcut</span></span></p><div class="ui-list__badges"><span class="ui-tag">Hands-on</span><span class="ui-tag ui-tag--success">Email verified</span></div></div><div class="ui-list__aside"><span><span class="ui-tag ui-tag--success">91</span><span class="ui-sub">Unverified</span></span></div><div class="ui-list__actions"><span><button type="button" class="ui-btn ui-btn--ghost">Evidence (3)</button><details class="ui-menu ui-menu--end"><summary class="ui-btn ui-btn--icon" aria-label="More profiles">⋯</summary><div class="ui-menu__list gemboss-popover-surface"><a class="ui-menu__item" href="#x">X ↗</a></div></details></span></div></li></ul></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
1906
1906
|
<ul class="ui-list" aria-label="People">
|
|
1907
1907
|
<li class="ui-list__item">
|
|
1908
1908
|
<div class="ui-list__media">
|
|
@@ -2017,7 +2017,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
2017
2017
|
<time class="ui-list__time">Yesterday</time>
|
|
2018
2018
|
</li>
|
|
2019
2019
|
</ul>
|
|
2020
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>4 · <code>--activity</code> + <code>body</code> + <code>wrap</code> (0.15.0): nhãn và chi tiết xuống dòng thay vì "…" (title không đọc được trên màn chạm), thân (<code>.ui-list__content</code>) cỡ chữ thân, không cắt</figcaption><div class="cat-wide"><iframe title="4 · <code>--activity</code> + <code>body</code> + <code>wrap</code> (0.15.0): nhãn và chi tiết xuống dòng thay vì "…" (title không đọc được trên màn chạm), thân (<code>.ui-list__content</code>) cỡ chữ thân, không cắt" style="height:360px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px"><ul class="ui-list ui-list--compact ui-list--activity ui-list--wrap" aria-label="Relationship history"><li class="ui-list__item"><span class="ui-list__dot ui-list__dot--info" aria-hidden="true"></span><div><span class="ui-list__label"><span>Intro call with <a href="#org">Ruggable</a>&#x27;s growth team</span></span><span class="ui-list__detail">by Lily Tran · with Marcus Bell and Aiko Sato</span><div class="ui-list__content"><p>They want a landing page per ad set and asked whether the agency plan covers four stores; send the pricing sheet by Friday.</p></div></div><time class="ui-list__time" dateTime="2026-10-03">Oct 3</time></li><li class="ui-list__item"><span class="ui-list__dot ui-list__dot--warning" aria-hidden="true"></span><div><span class="ui-list__label">No reply to the follow-up</span><span class="ui-list__detail">sent by Lily Tran</span></div><time class="ui-list__time">Sep 28</time></li><li class="ui-list__item"><span class="ui-list__dot ui-list__dot--success" aria-hidden="true"></span><div><span class="ui-list__label">Signed the agency plan</span><span class="ui-list__detail">4 stores · Shopify Plus</span><div class="ui-list__content"><p>Starts Monday; the first store is the Austin one.</p></div></div><time class="ui-list__time">Sep 20</time></li></ul></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
2020
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>4 · <code>--activity</code> + <code>body</code> + <code>wrap</code> (0.15.0): nhãn và chi tiết xuống dòng thay vì "…" (title không đọc được trên màn chạm), thân (<code>.ui-list__content</code>) cỡ chữ thân, không cắt</figcaption><div class="cat-wide"><iframe title="4 · <code>--activity</code> + <code>body</code> + <code>wrap</code> (0.15.0): nhãn và chi tiết xuống dòng thay vì "…" (title không đọc được trên màn chạm), thân (<code>.ui-list__content</code>) cỡ chữ thân, không cắt" style="height:360px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px"><ul class="ui-list ui-list--compact ui-list--activity ui-list--wrap" aria-label="Relationship history"><li class="ui-list__item"><span class="ui-list__dot ui-list__dot--info" aria-hidden="true"></span><div><span class="ui-list__label"><span>Intro call with <a href="#org">Ruggable</a>&#x27;s growth team</span></span><span class="ui-list__detail">by Lily Tran · with Marcus Bell and Aiko Sato</span><div class="ui-list__content"><p>They want a landing page per ad set and asked whether the agency plan covers four stores; send the pricing sheet by Friday.</p></div></div><time class="ui-list__time" dateTime="2026-10-03">Oct 3</time></li><li class="ui-list__item"><span class="ui-list__dot ui-list__dot--warning" aria-hidden="true"></span><div><span class="ui-list__label">No reply to the follow-up</span><span class="ui-list__detail">sent by Lily Tran</span></div><time class="ui-list__time">Sep 28</time></li><li class="ui-list__item"><span class="ui-list__dot ui-list__dot--success" aria-hidden="true"></span><div><span class="ui-list__label">Signed the agency plan</span><span class="ui-list__detail">4 stores · Shopify Plus</span><div class="ui-list__content"><p>Starts Monday; the first store is the Austin one.</p></div></div><time class="ui-list__time">Sep 20</time></li></ul></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
2021
2021
|
<ul class="ui-list ui-list--compact ui-list--activity ui-list--wrap" aria-label="Relationship history">
|
|
2022
2022
|
<li class="ui-list__item">
|
|
2023
2023
|
<span class="ui-list__dot ui-list__dot--info" aria-hidden="true">
|
|
@@ -2460,7 +2460,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
2460
2460
|
</header>
|
|
2461
2461
|
<p class="ui-board__empty">Nothing here</p>
|
|
2462
2462
|
</section>
|
|
2463
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>6 · Board ở 390px: cột 78% bề ngang, cuộn ngang có snap, không xếp chồng</figcaption><div class="cat-wide"><iframe title="6 · Board ở 390px: cột 78% bề ngang, cuộn ngang có snap, không xếp chồng" style="height:520px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px"><div class="ui-board" role="region" aria-label="Element pipeline"><section class="ui-board__col" data-col="todo" aria-labelledby="ui-board-todo"><header class="ui-board__head"><span class="ui-board__dot" aria-hidden="true"></span><span class="ui-board__name" id="ui-board-todo">To do</span><span class="ui-board__count">14</span></header><ol class="ui-board__list"><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b0">Popup variant 1</a><span class="ui-card__meta">#120 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b1">Popup variant 2</a><span class="ui-card__meta">#121 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b2">Popup variant 3</a><span class="ui-card__meta">#122 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b3">Popup variant 4</a><span class="ui-card__meta">#123 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b4">Popup variant 5</a><span class="ui-card__meta">#124 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b5">Popup variant 6</a><span class="ui-card__meta">#125 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b6">Popup variant 7</a><span class="ui-card__meta">#126 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b7">Popup variant 8</a><span class="ui-card__meta">#127 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b8">Popup variant 9</a><span class="ui-card__meta">#128 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b9">Popup variant 10</a><span class="ui-card__meta">#129 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b10">Popup variant 11</a><span class="ui-card__meta">#130 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b11">Popup variant 12</a><span class="ui-card__meta">#131 · 2 errors</span></div></article></li></ol><details class="ui-board__more"><summary class="ui-btn ui-btn--sm">Show 2 more</summary><ol class="ui-board__list"><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b12">Popup variant 13</a><span class="ui-card__meta">#132 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b13">Popup variant 14</a><span class="ui-card__meta">#133 · 2 errors</span></div></article></li></ol></details></section><section class="ui-board__col" data-col="review" aria-labelledby="ui-board-review"><header class="ui-board__head"><span class="ui-board__dot ui-board__dot--info" aria-hidden="true"></span><span class="ui-board__name" id="ui-board-review">Review</span><span class="ui-board__count">2</span></header><ol class="ui-board__list"><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b40">Countdown bar, 6 frames</a><span class="ui-card__meta">#160 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b41">Spin to win, no bait</a><span class="ui-card__meta">#161 · 2 errors</span></div></article></li></ol></section><section class="ui-board__col" data-col="done" aria-labelledby="ui-board-done"><header class="ui-board__head"><span class="ui-board__dot ui-board__dot--success" aria-hidden="true"></span><span class="ui-board__name" id="ui-board-done">Done</span><span class="ui-board__count">0</span></header><p class="ui-board__empty">Nothing here</p></section></div></div><script src="../src/kit-plain.js"></script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
2463
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>6 · Board ở 390px: cột 78% bề ngang, cuộn ngang có snap, không xếp chồng</figcaption><div class="cat-wide"><iframe title="6 · Board ở 390px: cột 78% bề ngang, cuộn ngang có snap, không xếp chồng" style="height:520px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px"><div class="ui-board" role="region" aria-label="Element pipeline"><section class="ui-board__col" data-col="todo" aria-labelledby="ui-board-todo"><header class="ui-board__head"><span class="ui-board__dot" aria-hidden="true"></span><span class="ui-board__name" id="ui-board-todo">To do</span><span class="ui-board__count">14</span></header><ol class="ui-board__list"><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b0">Popup variant 1</a><span class="ui-card__meta">#120 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b1">Popup variant 2</a><span class="ui-card__meta">#121 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b2">Popup variant 3</a><span class="ui-card__meta">#122 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b3">Popup variant 4</a><span class="ui-card__meta">#123 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b4">Popup variant 5</a><span class="ui-card__meta">#124 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b5">Popup variant 6</a><span class="ui-card__meta">#125 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b6">Popup variant 7</a><span class="ui-card__meta">#126 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b7">Popup variant 8</a><span class="ui-card__meta">#127 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b8">Popup variant 9</a><span class="ui-card__meta">#128 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b9">Popup variant 10</a><span class="ui-card__meta">#129 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b10">Popup variant 11</a><span class="ui-card__meta">#130 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b11">Popup variant 12</a><span class="ui-card__meta">#131 · 2 errors</span></div></article></li></ol><details class="ui-board__more"><summary class="ui-btn ui-btn--sm">Show 2 more</summary><ol class="ui-board__list"><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b12">Popup variant 13</a><span class="ui-card__meta">#132 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b13">Popup variant 14</a><span class="ui-card__meta">#133 · 2 errors</span></div></article></li></ol></details></section><section class="ui-board__col" data-col="review" aria-labelledby="ui-board-review"><header class="ui-board__head"><span class="ui-board__dot ui-board__dot--info" aria-hidden="true"></span><span class="ui-board__name" id="ui-board-review">Review</span><span class="ui-board__count">2</span></header><ol class="ui-board__list"><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b40">Countdown bar, 6 frames</a><span class="ui-card__meta">#160 · 2 errors</span></div></article></li><li><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#b41">Spin to win, no bait</a><span class="ui-card__meta">#161 · 2 errors</span></div></article></li></ol></section><section class="ui-board__col" data-col="done" aria-labelledby="ui-board-done"><header class="ui-board__head"><span class="ui-board__dot ui-board__dot--success" aria-hidden="true"></span><span class="ui-board__name" id="ui-board-done">Done</span><span class="ui-board__count">0</span></header><p class="ui-board__empty">Nothing here</p></section></div></div><script src="../src/kit-plain.js"></script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
2464
2464
|
<div class="ui-board" role="region" aria-label="Element pipeline">
|
|
2465
2465
|
<section class="ui-board__col" data-col="todo" aria-labelledby="ui-board-todo">
|
|
2466
2466
|
<header class="ui-board__head">
|
|
@@ -2690,7 +2690,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
2690
2690
|
</header>
|
|
2691
2691
|
<p class="ui-board__empty">Nothing here</p>
|
|
2692
2692
|
</section>
|
|
2693
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>6 · Board phân trang THEO SERVER (0.18.0, <code>hasMore</code> + <code>moreHref</code>): mỗi cột chỉ có 12 thẻ trong HTML, MỘT link "Show 24 more" (<code>?col=x&amp;page=2</code>); kit-plain.js tải trang đó và nối thẻ mới tại chỗ, React dùng <code>onLoadMore</code> hoặc <code>linkAs</code></figcaption><div class="cat-wide"><iframe title="6 · Board phân trang THEO SERVER (0.18.0, <code>hasMore</code> + <code>moreHref</code>): mỗi cột chỉ có 12 thẻ trong HTML, MỘT link "Show 24 more" (<code>?col=x&amp;page=2</code>); kit-plain.js tải trang đó và nối thẻ mới tại chỗ, React dùng <code>onLoadMore</code> hoặc <code>linkAs</code>" style="height:560px;width:900px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px"><div class="ui-board" id="catalog-paged" role="region" aria-label="Ideas"><section class="ui-board__col" data-col="enough" aria-labelledby="catalog-paged-enough"><header class="ui-board__head"><span class="ui-board__dot ui-board__dot--success" aria-hidden="true"></span><span class="ui-board__name" id="catalog-paged-enough">Ready to write</span><span class="ui-board__count">412</span></header><ol class="ui-board__list"><li data-id="i0" data-name="Idea 1"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i0">Idea 1</a><span class="ui-card__meta">#0 · Section</span></div></article></li><li data-id="i1" data-name="Idea 2"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i1">Idea 2</a><span class="ui-card__meta">#1 · Section</span></div></article></li><li data-id="i2" data-name="Idea 3"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i2">Idea 3</a><span class="ui-card__meta">#2 · Section</span></div></article></li><li data-id="i3" data-name="Idea 4"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i3">Idea 4</a><span class="ui-card__meta">#3 · Section</span></div></article></li><li data-id="i4" data-name="Idea 5"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i4">Idea 5</a><span class="ui-card__meta">#4 · Section</span></div></article></li><li data-id="i5" data-name="Idea 6"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i5">Idea 6</a><span class="ui-card__meta">#5 · Section</span></div></article></li><li data-id="i6" data-name="Idea 7"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i6">Idea 7</a><span class="ui-card__meta">#6 · Section</span></div></article></li><li data-id="i7" data-name="Idea 8"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i7">Idea 8</a><span class="ui-card__meta">#7 · Section</span></div></article></li><li data-id="i8" data-name="Idea 9"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i8">Idea 9</a><span class="ui-card__meta">#8 · Section</span></div></article></li><li data-id="i9" data-name="Idea 10"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i9">Idea 10</a><span class="ui-card__meta">#9 · Section</span></div></article></li><li data-id="i10" data-name="Idea 11"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i10">Idea 11</a><span class="ui-card__meta">#10 · Section</span></div></article></li><li data-id="i11" data-name="Idea 12"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i11">Idea 12</a><span class="ui-card__meta">#11 · Section</span></div></article></li></ol><div class="ui-more ui-board__next"><a class="ui-btn ui-btn--sm" href="#collections">Show 24 more</a></div></section><section class="ui-board__col" data-col="partial" aria-labelledby="catalog-paged-partial"><header class="ui-board__head"><span class="ui-board__dot ui-board__dot--warning" aria-hidden="true"></span><span class="ui-board__name" id="catalog-paged-partial">Needs more</span><span class="ui-board__count">9</span></header><ol class="ui-board__list"><li data-id="p0" data-name="Idea 100"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p0">Idea 100</a><span class="ui-card__meta">#0 · Section</span></div></article></li><li data-id="p1" data-name="Idea 101"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p1">Idea 101</a><span class="ui-card__meta">#1 · Section</span></div></article></li><li data-id="p2" data-name="Idea 102"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p2">Idea 102</a><span class="ui-card__meta">#2 · Section</span></div></article></li><li data-id="p3" data-name="Idea 103"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p3">Idea 103</a><span class="ui-card__meta">#3 · Section</span></div></article></li><li data-id="p4" data-name="Idea 104"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p4">Idea 104</a><span class="ui-card__meta">#4 · Section</span></div></article></li><li data-id="p5" data-name="Idea 105"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p5">Idea 105</a><span class="ui-card__meta">#5 · Section</span></div></article></li><li data-id="p6" data-name="Idea 106"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p6">Idea 106</a><span class="ui-card__meta">#6 · Section</span></div></article></li><li data-id="p7" data-name="Idea 107"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p7">Idea 107</a><span class="ui-card__meta">#7 · Section</span></div></article></li><li data-id="p8" data-name="Idea 108"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p8">Idea 108</a><span class="ui-card__meta">#8 · Section</span></div></article></li></ol></section></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
2693
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>6 · Board phân trang THEO SERVER (0.18.0, <code>hasMore</code> + <code>moreHref</code>): mỗi cột chỉ có 12 thẻ trong HTML, MỘT link "Show 24 more" (<code>?col=x&amp;page=2</code>); kit-plain.js tải trang đó và nối thẻ mới tại chỗ, React dùng <code>onLoadMore</code> hoặc <code>linkAs</code></figcaption><div class="cat-wide"><iframe title="6 · Board phân trang THEO SERVER (0.18.0, <code>hasMore</code> + <code>moreHref</code>): mỗi cột chỉ có 12 thẻ trong HTML, MỘT link "Show 24 more" (<code>?col=x&amp;page=2</code>); kit-plain.js tải trang đó và nối thẻ mới tại chỗ, React dùng <code>onLoadMore</code> hoặc <code>linkAs</code>" style="height:560px;width:900px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px"><div class="ui-board" id="catalog-paged" role="region" aria-label="Ideas"><section class="ui-board__col" data-col="enough" aria-labelledby="catalog-paged-enough"><header class="ui-board__head"><span class="ui-board__dot ui-board__dot--success" aria-hidden="true"></span><span class="ui-board__name" id="catalog-paged-enough">Ready to write</span><span class="ui-board__count">412</span></header><ol class="ui-board__list"><li data-id="i0" data-name="Idea 1"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i0">Idea 1</a><span class="ui-card__meta">#0 · Section</span></div></article></li><li data-id="i1" data-name="Idea 2"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i1">Idea 2</a><span class="ui-card__meta">#1 · Section</span></div></article></li><li data-id="i2" data-name="Idea 3"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i2">Idea 3</a><span class="ui-card__meta">#2 · Section</span></div></article></li><li data-id="i3" data-name="Idea 4"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i3">Idea 4</a><span class="ui-card__meta">#3 · Section</span></div></article></li><li data-id="i4" data-name="Idea 5"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i4">Idea 5</a><span class="ui-card__meta">#4 · Section</span></div></article></li><li data-id="i5" data-name="Idea 6"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i5">Idea 6</a><span class="ui-card__meta">#5 · Section</span></div></article></li><li data-id="i6" data-name="Idea 7"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i6">Idea 7</a><span class="ui-card__meta">#6 · Section</span></div></article></li><li data-id="i7" data-name="Idea 8"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i7">Idea 8</a><span class="ui-card__meta">#7 · Section</span></div></article></li><li data-id="i8" data-name="Idea 9"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i8">Idea 9</a><span class="ui-card__meta">#8 · Section</span></div></article></li><li data-id="i9" data-name="Idea 10"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i9">Idea 10</a><span class="ui-card__meta">#9 · Section</span></div></article></li><li data-id="i10" data-name="Idea 11"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i10">Idea 11</a><span class="ui-card__meta">#10 · Section</span></div></article></li><li data-id="i11" data-name="Idea 12"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#i11">Idea 12</a><span class="ui-card__meta">#11 · Section</span></div></article></li></ol><div class="ui-more ui-board__next"><a class="ui-btn ui-btn--sm" href="#collections">Show 24 more</a></div></section><section class="ui-board__col" data-col="partial" aria-labelledby="catalog-paged-partial"><header class="ui-board__head"><span class="ui-board__dot ui-board__dot--warning" aria-hidden="true"></span><span class="ui-board__name" id="catalog-paged-partial">Needs more</span><span class="ui-board__count">9</span></header><ol class="ui-board__list"><li data-id="p0" data-name="Idea 100"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p0">Idea 100</a><span class="ui-card__meta">#0 · Section</span></div></article></li><li data-id="p1" data-name="Idea 101"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p1">Idea 101</a><span class="ui-card__meta">#1 · Section</span></div></article></li><li data-id="p2" data-name="Idea 102"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p2">Idea 102</a><span class="ui-card__meta">#2 · Section</span></div></article></li><li data-id="p3" data-name="Idea 103"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p3">Idea 103</a><span class="ui-card__meta">#3 · Section</span></div></article></li><li data-id="p4" data-name="Idea 104"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p4">Idea 104</a><span class="ui-card__meta">#4 · Section</span></div></article></li><li data-id="p5" data-name="Idea 105"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p5">Idea 105</a><span class="ui-card__meta">#5 · Section</span></div></article></li><li data-id="p6" data-name="Idea 106"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p6">Idea 106</a><span class="ui-card__meta">#6 · Section</span></div></article></li><li data-id="p7" data-name="Idea 107"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p7">Idea 107</a><span class="ui-card__meta">#7 · Section</span></div></article></li><li data-id="p8" data-name="Idea 108"><article class="ui-card ui-card--media"><div class="ui-card__body"><a class="ui-card__link" href="#p8">Idea 108</a><span class="ui-card__meta">#8 · Section</span></div></article></li></ol></section></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px">
|
|
2694
2694
|
<div class="ui-board" id="catalog-paged" role="region" aria-label="Ideas">
|
|
2695
2695
|
<section class="ui-board__col" data-col="enough" aria-labelledby="catalog-paged-enough">
|
|
2696
2696
|
<header class="ui-board__head">
|
|
@@ -3627,7 +3627,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
3627
3627
|
<button type="button" class="ui-btn ui-btn--primary">Xoá</button>
|
|
3628
3628
|
</div>
|
|
3629
3629
|
</div></code></pre></details></figure></section>
|
|
3630
|
-
<section id="sheet"><h2>Ngăn trượt cạnh phải</h2><p><code>Sheet</code>: hộp thoại của gói (<code>ui-modal</code>, cùng head / body / foot) dính cạnh phải, cao hết màn, rộng 560 (<code>wide</code> 760), ở điện thoại chiếm cả màn. Mở một bản ghi ngay trên danh sách đang xem (người, tổ chức, app), đọc xong đóng lại đúng chỗ cũ. Escape, nền bị khoá, focus trả về hàng đã mở: nó chính là <code>Dialog</code> thêm lớp <code>ui-sheet</code>. CSS <code>sheet.css</code> do component tự nạp. Markup dưới đây mang thuộc tính <code>open</code> chỉ để vẽ được trong catalog; chép về thì bỏ <code>open</code> và mở bằng <code>showModal()</code> (thiếu nó: không nền mờ, trang sau không bị khoá).</p><figure class="cat-demo cat-screen"><figcaption>Sheet mở trên một danh sách</figcaption><iframe title="Sheet mở trên một danh sách" style="height:380px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px;display:grid;gap:8px"><div class="ui-card" style="padding:12px">Jane Doe</div><div class="ui-card" style="padding:12px">Minh Tran</div><div class="ui-card" style="padding:12px">Ana Silva</div><div class="ui-card" style="padding:12px">Kenji Sato</div></div><dialog open class="ui-modal ui-sheet" aria-labelledby=":c56-R0:" aria-describedby=":c56-R0H1:" tabindex="-1"><div class="ui-modal__head"><div class="ui-modal__title"><span id=":c56-R0:">Jane Doe</span><span class="ui-modal__subtitle" id=":c56-R0H1:">CRO agency · Plus partner</span></div><div class="ui-modal__actions"><a class="ui-btn" href="#">Open full profile</a></div><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="ui-modal__body"><p style="margin:0">Founder at Example Agency. Last talked 3 days ago, next step due Friday.</p><p class="ui-muted" style="margin:12px 0 0">The body scrolls; the head stays.</p></div></dialog></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px;display:grid;gap:8px">
|
|
3630
|
+
<section id="sheet"><h2>Ngăn trượt cạnh phải</h2><p><code>Sheet</code>: hộp thoại của gói (<code>ui-modal</code>, cùng head / body / foot) dính cạnh phải, cao hết màn, rộng 560 (<code>wide</code> 760), ở điện thoại chiếm cả màn. Mở một bản ghi ngay trên danh sách đang xem (người, tổ chức, app), đọc xong đóng lại đúng chỗ cũ. Escape, nền bị khoá, focus trả về hàng đã mở: nó chính là <code>Dialog</code> thêm lớp <code>ui-sheet</code>. CSS <code>sheet.css</code> do component tự nạp. Markup dưới đây mang thuộc tính <code>open</code> chỉ để vẽ được trong catalog; chép về thì bỏ <code>open</code> và mở bằng <code>showModal()</code> (thiếu nó: không nền mờ, trang sau không bị khoá).</p><figure class="cat-demo cat-screen"><figcaption>Sheet mở trên một danh sách</figcaption><iframe title="Sheet mở trên một danh sách" style="height:380px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px;display:grid;gap:8px"><div class="ui-card" style="padding:12px">Jane Doe</div><div class="ui-card" style="padding:12px">Minh Tran</div><div class="ui-card" style="padding:12px">Ana Silva</div><div class="ui-card" style="padding:12px">Kenji Sato</div></div><dialog open class="ui-modal ui-sheet" aria-labelledby=":c56-R0:" aria-describedby=":c56-R0H1:" tabindex="-1"><div class="ui-modal__head"><div class="ui-modal__title"><span id=":c56-R0:">Jane Doe</span><span class="ui-modal__subtitle" id=":c56-R0H1:">CRO agency · Plus partner</span></div><div class="ui-modal__actions"><a class="ui-btn" href="#">Open full profile</a></div><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="ui-modal__body"><p style="margin:0">Founder at Example Agency. Last talked 3 days ago, next step due Friday.</p><p class="ui-muted" style="margin:12px 0 0">The body scrolls; the head stays.</p></div></dialog></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px;display:grid;gap:8px">
|
|
3631
3631
|
<div class="ui-card" style="padding:12px">Jane Doe</div>
|
|
3632
3632
|
<div class="ui-card" style="padding:12px">Minh Tran</div>
|
|
3633
3633
|
<div class="ui-card" style="padding:12px">Ana Silva</div>
|
|
@@ -3656,7 +3656,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
3656
3656
|
<p class="ui-muted" style="margin:12px 0 0">The body scrolls; the head stays.</p>
|
|
3657
3657
|
</div>
|
|
3658
3658
|
</dialog></code></pre></details></figure></section>
|
|
3659
|
-
<section id="reader"><h2>Hộp đọc tài liệu</h2><p><code>ReaderDialog</code>: hộp thoại của gói (<code>ui-modal</code>, cùng head / body / foot) cỡ để ĐỌC một tài liệu ngay trên danh sách đang xem: rộng <code>min(1440px, 94vw)</code>, cao <code>min(92dvh, 1200px)</code>, ở điện thoại chiếm cả màn và hàng nút xuống dòng dưới tiêu đề. Thân không đệm, tài liệu lấp đầy: một <code>iframe.ui-reader__frame</code> (file HTML tự đứng) hoặc khung cuộn của chính trang với <code>ui-reader__scroll</code>. Nó chính là <code>Dialog</code> thêm lớp <code>ui-reader</code>; CSS <code>reader-dialog.css</code> do component tự nạp. Docs của GemMedia và Partner Radar dùng nó. Markup dưới đây mang thuộc tính <code>open</code> chỉ để vẽ được trong catalog; chép về thì bỏ <code>open</code> và mở bằng <code>showModal()</code>.</p><figure class="cat-demo cat-screen"><figcaption>ReaderDialog mở trên danh sách tài liệu</figcaption><iframe title="ReaderDialog mở trên danh sách tài liệu" style="height:420px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div style="padding:16px;display:grid;gap:8px"><div class="ui-card" style="padding:12px">Partnership Playbook</div><div class="ui-card" style="padding:12px">GemMedia developer brief</div><div class="ui-card" style="padding:12px">Media Studio research</div></div><dialog open class="ui-modal ui-reader" aria-labelledby=":c57-R0:" aria-describedby=":c57-R0H1:"><div class="ui-modal__head"><div class="ui-modal__title"><span id=":c57-R0:">Partnership Playbook</span><span class="ui-modal__subtitle" id=":c57-R0H1:">v1.1 · updated 20 Oct 2026</span></div><div class="ui-modal__actions"><button type="button" class="ui-btn ui-btn--sm">Copy link</button><a class="ui-btn ui-btn--sm" href="#">Open in a new tab</a></div><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="ui-modal__body"><div class="ui-reader__scroll"><h2 style="margin:0 0 8px">1. How to use this doc</h2><p style="margin:0 0 12px">The document fills the popup and scrolls inside it; the list behind holds still.</p><p class="ui-muted" style="margin:0">An iframe takes ui-reader__frame instead of this scroller.</p></div></div></dialog></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px;display:grid;gap:8px">
|
|
3659
|
+
<section id="reader"><h2>Hộp đọc tài liệu</h2><p><code>ReaderDialog</code>: hộp thoại của gói (<code>ui-modal</code>, cùng head / body / foot) cỡ để ĐỌC một tài liệu ngay trên danh sách đang xem: rộng <code>min(1440px, 94vw)</code>, cao <code>min(92dvh, 1200px)</code>, ở điện thoại chiếm cả màn và hàng nút xuống dòng dưới tiêu đề. Thân không đệm, tài liệu lấp đầy: một <code>iframe.ui-reader__frame</code> (file HTML tự đứng) hoặc khung cuộn của chính trang với <code>ui-reader__scroll</code>. Nó chính là <code>Dialog</code> thêm lớp <code>ui-reader</code>; CSS <code>reader-dialog.css</code> do component tự nạp. Docs của GemMedia và Partner Radar dùng nó. Markup dưới đây mang thuộc tính <code>open</code> chỉ để vẽ được trong catalog; chép về thì bỏ <code>open</code> và mở bằng <code>showModal()</code>.</p><figure class="cat-demo cat-screen"><figcaption>ReaderDialog mở trên danh sách tài liệu</figcaption><iframe title="ReaderDialog mở trên danh sách tài liệu" style="height:420px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div style="padding:16px;display:grid;gap:8px"><div class="ui-card" style="padding:12px">Partnership Playbook</div><div class="ui-card" style="padding:12px">GemMedia developer brief</div><div class="ui-card" style="padding:12px">Media Studio research</div></div><dialog open class="ui-modal ui-reader" aria-labelledby=":c57-R0:" aria-describedby=":c57-R0H1:"><div class="ui-modal__head"><div class="ui-modal__title"><span id=":c57-R0:">Partnership Playbook</span><span class="ui-modal__subtitle" id=":c57-R0H1:">v1.1 · updated 20 Oct 2026</span></div><div class="ui-modal__actions"><button type="button" class="ui-btn ui-btn--sm">Copy link</button><a class="ui-btn ui-btn--sm" href="#">Open in a new tab</a></div><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="ui-modal__body"><div class="ui-reader__scroll"><h2 style="margin:0 0 8px">1. How to use this doc</h2><p style="margin:0 0 12px">The document fills the popup and scrolls inside it; the list behind holds still.</p><p class="ui-muted" style="margin:0">An iframe takes ui-reader__frame instead of this scroller.</p></div></div></dialog></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div style="padding:16px;display:grid;gap:8px">
|
|
3660
3660
|
<div class="ui-card" style="padding:12px">Partnership Playbook</div>
|
|
3661
3661
|
<div class="ui-card" style="padding:12px">GemMedia developer brief</div>
|
|
3662
3662
|
<div class="ui-card" style="padding:12px">Media Studio research</div>
|
|
@@ -3688,7 +3688,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
3688
3688
|
</div>
|
|
3689
3689
|
</div>
|
|
3690
3690
|
</dialog></code></pre></details></figure></section>
|
|
3691
|
-
<section id="settings"><h2>Hộp cài đặt</h2><p><code>SettingsDialog</code>: Settings là MỘT hộp thoại phủ lên app, dáng của admin: rail các mục bên trái có ô tìm, mục đang chọn bên phải, nút đóng ở góc; dưới 861px rail thành một dải ngang trên đầu. Chỉ là khung: bề mặt đưa danh sách mục và vẽ mục đang chọn (<code>children</code>); mục là nút (<code>onSelect</code>) hoặc link (<code>href</code> + <code>linkAs</code>, khi mỗi mục là một route). CSS <code>settings-dialog.css</code> do component tự nạp. Markup dưới đây mang <code>open</code> chỉ để vẽ trong catalog; chép về thì mở bằng <code>showModal()</code>.</p><figure class="cat-demo cat-screen"><figcaption>SettingsDialog, mục Scoring principles đang chọn</figcaption><div class="cat-wide"><iframe title="SettingsDialog, mục Scoring principles đang chọn" style="height:520px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><dialog open class="ui-modal ui-modal--lg ui-settings" aria-labelledby=":c58-R0:" tabindex="-1"><div class="ui-settings__layout"><nav class="ui-settings__rail" aria-label="Settings sections"><div class="ui-settings__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="settings-search" autoComplete="off" placeholder="Search settings" aria-label="Search settings" value=""/></label></div><div class="ui-settings__scroll"><div class="ui-settings__group"><h3 class="ui-settings__group-title">Workspace</h3><button type="button" class="ui-settings__item"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.52 9.08 17.15 9.15 17.15 10.85 15.52 10.92 14.56 13.26 15.66 14.45 14.45 15.66 13.26 14.56 10.92 15.52 10.85 17.15 9.15 17.15 9.08 15.52 6.74 14.56 5.55 15.66 4.34 14.45 5.44 13.26 4.48 10.92 2.85 10.85 2.85 9.15 4.48 9.08 5.44 6.74 4.34 5.55 5.55 4.34 6.74 5.44 9.08 4.48 9.15 2.85 10.85 2.85 10.92 4.48 13.26 5.44 14.45 4.34 15.66 5.55 14.56 6.74Z"></path><circle cx="10" cy="10" r="2.4"></circle></g></svg><span class="ui-settings__label">General</span></button><button type="button" class="ui-settings__item ui-settings__item--active" aria-current="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg><span class="ui-settings__label">Scoring principles</span></button></div><div class="ui-settings__group"><h3 class="ui-settings__group-title">Account</h3><button type="button" class="ui-settings__item"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="ui-settings__label">Members</span></button></div></div><div class="ui-settings__foot"><a href="#" class="ui-settings__item"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg><span class="ui-settings__label">Jobs</span></a></div></nav><section class="ui-settings__pane" aria-labelledby=":c58-R0:"><div class="ui-settings__pane-head"><h2 class="ui-settings__pane-title" id=":c58-R0:">Scoring principles</h2><p class="ui-settings__pane-sub">What makes a partner worth a call, and how much each signal weighs.</p></div><div class="ui-settings__pane-body"><div class="ui-settings__measure"><p style="margin:0">The active section is the surface&#x27;s own content.</p></div></div></section></div><button type="button" class="ui-modal__close ui-settings__close" aria-label="Close settings"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></dialog></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><dialog open class="ui-modal ui-modal--lg ui-settings" aria-labelledby=":c58-R0:" tabindex="-1">
|
|
3691
|
+
<section id="settings"><h2>Hộp cài đặt</h2><p><code>SettingsDialog</code>: Settings là MỘT hộp thoại phủ lên app, dáng của admin: rail các mục bên trái có ô tìm, mục đang chọn bên phải, nút đóng ở góc; dưới 861px rail thành một dải ngang trên đầu. Chỉ là khung: bề mặt đưa danh sách mục và vẽ mục đang chọn (<code>children</code>); mục là nút (<code>onSelect</code>) hoặc link (<code>href</code> + <code>linkAs</code>, khi mỗi mục là một route). CSS <code>settings-dialog.css</code> do component tự nạp. Markup dưới đây mang <code>open</code> chỉ để vẽ trong catalog; chép về thì mở bằng <code>showModal()</code>.</p><figure class="cat-demo cat-screen"><figcaption>SettingsDialog, mục Scoring principles đang chọn</figcaption><div class="cat-wide"><iframe title="SettingsDialog, mục Scoring principles đang chọn" style="height:520px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><dialog open class="ui-modal ui-modal--lg ui-settings" aria-labelledby=":c58-R0:" tabindex="-1"><div class="ui-settings__layout"><nav class="ui-settings__rail" aria-label="Settings sections"><div class="ui-settings__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="settings-search" autoComplete="off" placeholder="Search settings" aria-label="Search settings" value=""/></label></div><div class="ui-settings__scroll"><div class="ui-settings__group"><h3 class="ui-settings__group-title">Workspace</h3><button type="button" class="ui-settings__item"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.52 9.08 17.15 9.15 17.15 10.85 15.52 10.92 14.56 13.26 15.66 14.45 14.45 15.66 13.26 14.56 10.92 15.52 10.85 17.15 9.15 17.15 9.08 15.52 6.74 14.56 5.55 15.66 4.34 14.45 5.44 13.26 4.48 10.92 2.85 10.85 2.85 9.15 4.48 9.08 5.44 6.74 4.34 5.55 5.55 4.34 6.74 5.44 9.08 4.48 9.15 2.85 10.85 2.85 10.92 4.48 13.26 5.44 14.45 4.34 15.66 5.55 14.56 6.74Z"></path><circle cx="10" cy="10" r="2.4"></circle></g></svg><span class="ui-settings__label">General</span></button><button type="button" class="ui-settings__item ui-settings__item--active" aria-current="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg><span class="ui-settings__label">Scoring principles</span></button></div><div class="ui-settings__group"><h3 class="ui-settings__group-title">Account</h3><button type="button" class="ui-settings__item"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="ui-settings__label">Members</span></button></div></div><div class="ui-settings__foot"><a href="#" class="ui-settings__item"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg><span class="ui-settings__label">Jobs</span></a></div></nav><section class="ui-settings__pane" aria-labelledby=":c58-R0:"><div class="ui-settings__pane-head"><h2 class="ui-settings__pane-title" id=":c58-R0:">Scoring principles</h2><p class="ui-settings__pane-sub">What makes a partner worth a call, and how much each signal weighs.</p></div><div class="ui-settings__pane-body"><div class="ui-settings__measure"><p style="margin:0">The active section is the surface&#x27;s own content.</p></div></div></section></div><button type="button" class="ui-modal__close ui-settings__close" aria-label="Close settings"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></dialog></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><dialog open class="ui-modal ui-modal--lg ui-settings" aria-labelledby=":c58-R0:" tabindex="-1">
|
|
3692
3692
|
<div class="ui-settings__layout">
|
|
3693
3693
|
<nav class="ui-settings__rail" aria-label="Settings sections">
|
|
3694
3694
|
<div class="ui-settings__search">
|
|
@@ -3784,7 +3784,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
3784
3784
|
</svg>
|
|
3785
3785
|
</button>
|
|
3786
3786
|
</dialog></code></pre></details></figure></section>
|
|
3787
|
-
<section id="switcher"><h2>Chuyển dịch vụ</h2><p><code>ServiceSwitcher</code> (0.36.0): bấm logo vẫn về trang chủ của dịch vụ; nút chín chấm ngay sau logo mở bảng mọi dịch vụ Gem, xếp theo cách một store được dựng rồi vận hành: GemBoss, Dựng store, Đọc thị trường, Nội dung và cộng đồng, Khách hàng, Đội và đối tác. Mỗi ô là logo (icon của bộ, nền tô theo dịch vụ, đọc được cả sáng lẫn tối), tên, một câu nói nó để làm gì; ô của dịch vụ đang đứng có viền accent và vẫn là link về trang chủ của nó. Ô tìm lọc theo tên và công dụng; mũi tên đi giữa các ô theo vị trí trên màn. Desktop: treo dưới topbar từ mép trái logo, rộng 760, cao tối đa 80%; ≤640px: cả màn, hai cột. React: <code>BrandLockup switcher={{ current: "gemfactory" }}</code>, hoặc <code><ServiceSwitcher current=… /></code> sau logo riêng. Danh sách là <code>GEM_SERVICES</code> (<code>@gemboss/ui/services</code>). CSS <code>service-switcher.css</code> do component tự nạp. Markup dưới đây mang <code>open</code> chỉ để vẽ trong catalog; chép về thì mở bằng <code>showModal()</code>. HTML thuần (không React): đặt <code><span data-gb-service-switcher="gemcapture" hidden></code> ngay sau logo, nạp <code>service-switcher.css</code>, rồi <code>kit-plain.js</code>, <code>service-switcher-plain.js</code> và gọi <code>gembossUI.initServiceSwitcher()</code>: script vẽ đúng markup trên vào chỗ đó, cùng hành vi (khung cuối chạy thật).</p><figure class="cat-demo cat-screen"><figcaption>Bảng dịch vụ mở, desktop 1280</figcaption><div class="cat-wide"><iframe title="Bảng dịch vụ mở, desktop 1280" style="height:720px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c59-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c59-Rkj:svc" aria-label="Switch service" title="Switch service"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c59-Rkj:svc" class="gb-svc" aria-labelledby=":c59-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c59-Rkj:svc-t">Gem services</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Find a service" aria-label="Find a service" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-gemboss"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-gemboss">GemBoss</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://admin.gemboss.ai" data-tint="iris" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="6" height="6" rx="1.3"></rect><rect x="11" y="3" width="6" height="6" rx="1.3"></rect><rect x="3" y="11" width="6" height="6" rx="1.3"></rect><rect x="11" y="11" width="6" height="6" rx="1.3"></rect></g></svg></span><span class="gb-svc__name">GemBoss</span><span class="gb-svc__purpose">The seller app and the ops console.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-build"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-build">Build the store</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemfactory.ops.gemboss.ai" data-tint="blue" aria-current="page" tabindex="0"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3 17 6.8 10 10.6 3 6.8z"></path><path d="M3 10.1l7 3.8 7-3.8"></path><path d="M3 13.4l7 3.8 7-3.8"></path></g></svg></span><span class="gb-svc__name">GemFactory</span><span class="gb-svc__purpose">Review sections, elements and templates.</span></a></li><li><a class="gb-svc__tile" href="https://media.gemboss.ai" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.8"></rect><circle cx="7.3" cy="7.8" r="1.3"></circle><path d="M3.5 15l4.2-4.2 3 3 2.2-2.2 3.6 3.6"></path></g></svg></span><span class="gb-svc__name">GemMedia</span><span class="gb-svc__purpose">Images and videos made for stores, and their cost.</span></a></li><li><a class="gb-svc__tile" href="https://gemform.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 2.8h6.8l3.2 3.2v11.2H5z"></path><path d="M11.8 2.8V6H15M7.5 10h5M7.5 13h5"></path></g></svg></span><span class="gb-svc__name">GemForm</span><span class="gb-svc__purpose">Form submissions from stores.</span></a></li><li><a class="gb-svc__tile" href="https://x.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg></span><span class="gb-svc__name">GemX</span><span class="gb-svc__purpose">Tests and personalization across every store.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-market"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-market">Read the market</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemwatcher.ops.gemboss.ai" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1.8 10S4.7 4.8 10 4.8 18.2 10 18.2 10 15.3 15.2 10 15.2 1.8 10 1.8 10z"></path><circle cx="10" cy="10" r="2.5"></circle></g></svg></span><span class="gb-svc__name">GemWatcher</span><span class="gb-svc__purpose">Store and market intelligence.</span></a></li><li><a class="gb-svc__tile" href="https://market.gemboss.ai" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gb-svc__name">GemMarket</span><span class="gb-svc__purpose">Each store&#x27;s market read and its competitors.</span></a></li><li><a class="gb-svc__tile" href="https://pixel.gemboss.ai" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg></span><span class="gb-svc__name">GemPixel</span><span class="gb-svc__purpose">Events every store sends, and whether they add up.</span></a></li><li><a class="gb-svc__tile" href="https://capture.gemboss.ai/admin" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gb-svc__name">GemCapture</span><span class="gb-svc__purpose">Page captures and visual checks.</span></a></li><li><a class="gb-svc__tile" href="https://search-radar.ops.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Search Radar</span><span class="gb-svc__purpose">Rankings on the App Store, Google and AI answers.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-content"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-content">Content and community</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://press.gemboss.ai/admin" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.5"></rect><path d="M6 7h8M6 10h8M6 13h5"></path></g></svg></span><span class="gb-svc__name">GemPress</span><span class="gb-svc__purpose">Articles and the content store.</span></a></li><li><a class="gb-svc__tile" href="https://content-radar.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Content Radar</span><span class="gb-svc__purpose">From the topics worth writing to articles.</span></a></li><li><a class="gb-svc__tile" href="https://community.gemboss.ai/admin" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">The seller community.</span></a></li><li><a class="gb-svc__tile" href="https://news.gemboss.ai/admin" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8v4h3l6 4V4L6 8H3z"></path><path d="M15 7.5a3.5 3.5 0 0 1 0 5"></path></g></svg></span><span class="gb-svc__name">GemCommunity News</span><span class="gb-svc__purpose">News posts and how they are read.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-customers"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-customers">Customers</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://care.gemboss.ai/inbox" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gb-svc__name">GemCare</span><span class="gb-svc__purpose">The customer care inbox.</span></a></li><li><a class="gb-svc__tile" href="https://feedback.gemboss.ai/admin" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 11l2-7h10l2 7v5H3z"></path><path d="M3 11h4l1 2h4l1-2h4"></path></g></svg></span><span class="gb-svc__name">GemFeedback</span><span class="gb-svc__purpose">The feedback backlog.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-team"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-team">Team and partners</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://partner-radar.ops.gemboss.ai" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.6 11.4a3 3 0 0 0 4.2 0l2.6-2.6a3 3 0 0 0-4.2-4.2l-1 1"></path><path d="M11.4 8.6a3 3 0 0 0-4.2 0l-2.6 2.6a3 3 0 0 0 4.2 4.2l1-1"></path></g></svg></span><span class="gb-svc__name">Partner Radar</span><span class="gb-svc__purpose">Partners and agencies, as a CRM.</span></a></li><li><a class="gb-svc__tile" href="https://gemlabs-taskdesk-production.up.railway.app" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 5h9M8 10h9M8 15h9"></path><circle cx="4" cy="5" r=".9"></circle><circle cx="4" cy="10" r=".9"></circle><circle cx="4" cy="15" r=".9"></circle></g></svg></span><span class="gb-svc__name">Taskdesk</span><span class="gb-svc__purpose">Every job the fleet is running.</span></a></li></ul></div></div><div class="gb-svc__foot"><a class="gb-svc__all" href="https://gemfactory.ops.gemboss.ai/services">All services and their health<span aria-hidden="true">→</span></a></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search" aria-label="Search" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c59-R0:"><div class="gnav-scroll"><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Review queue</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
3787
|
+
<section id="switcher"><h2>Chuyển dịch vụ</h2><p><code>ServiceSwitcher</code> (0.36.0): bấm logo vẫn về trang chủ của dịch vụ; nút chín chấm ngay sau logo mở bảng mọi dịch vụ Gem, xếp theo cách một store được dựng rồi vận hành: GemBoss, Dựng store, Đọc thị trường, Nội dung và cộng đồng, Khách hàng, Đội và đối tác. Mỗi ô là logo (icon của bộ, nền tô theo dịch vụ, đọc được cả sáng lẫn tối), tên, một câu nói nó để làm gì; ô của dịch vụ đang đứng có viền accent và vẫn là link về trang chủ của nó. Ô tìm lọc theo tên và công dụng; mũi tên đi giữa các ô theo vị trí trên màn. Desktop: treo dưới topbar từ mép trái logo, rộng 760, cao tối đa 80%; ≤640px: cả màn, hai cột. React: <code>BrandLockup switcher={{ current: "gemfactory" }}</code>, hoặc <code><ServiceSwitcher current=… /></code> sau logo riêng. Danh sách là <code>GEM_SERVICES</code> (<code>@gemboss/ui/services</code>). CSS <code>service-switcher.css</code> do component tự nạp. Markup dưới đây mang <code>open</code> chỉ để vẽ trong catalog; chép về thì mở bằng <code>showModal()</code>. HTML thuần (không React): đặt <code><span data-gb-service-switcher="gemcapture" hidden></code> ngay sau logo, nạp <code>service-switcher.css</code>, rồi <code>kit-plain.js</code>, <code>service-switcher-plain.js</code> và gọi <code>gembossUI.initServiceSwitcher()</code>: script vẽ đúng markup trên vào chỗ đó, cùng hành vi (khung cuối chạy thật).</p><figure class="cat-demo cat-screen"><figcaption>Bảng dịch vụ mở, desktop 1280</figcaption><div class="cat-wide"><iframe title="Bảng dịch vụ mở, desktop 1280" style="height:720px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c59-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c59-Rkj:svc" aria-label="Switch service" title="Switch service"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c59-Rkj:svc" class="gb-svc" aria-labelledby=":c59-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c59-Rkj:svc-t">Gem services</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Find a service" aria-label="Find a service" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-gemboss"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-gemboss">GemBoss</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://admin.gemboss.ai" data-tint="iris" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="6" height="6" rx="1.3"></rect><rect x="11" y="3" width="6" height="6" rx="1.3"></rect><rect x="3" y="11" width="6" height="6" rx="1.3"></rect><rect x="11" y="11" width="6" height="6" rx="1.3"></rect></g></svg></span><span class="gb-svc__name">GemBoss</span><span class="gb-svc__purpose">The seller app and the ops console.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-build"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-build">Build the store</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemfactory.ops.gemboss.ai" data-tint="blue" aria-current="page" tabindex="0"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3 17 6.8 10 10.6 3 6.8z"></path><path d="M3 10.1l7 3.8 7-3.8"></path><path d="M3 13.4l7 3.8 7-3.8"></path></g></svg></span><span class="gb-svc__name">GemFactory</span><span class="gb-svc__purpose">Review sections, elements and templates.</span></a></li><li><a class="gb-svc__tile" href="https://media.gemboss.ai" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.8"></rect><circle cx="7.3" cy="7.8" r="1.3"></circle><path d="M3.5 15l4.2-4.2 3 3 2.2-2.2 3.6 3.6"></path></g></svg></span><span class="gb-svc__name">GemMedia</span><span class="gb-svc__purpose">Images and videos made for stores, and their cost.</span></a></li><li><a class="gb-svc__tile" href="https://gemform.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 2.8h6.8l3.2 3.2v11.2H5z"></path><path d="M11.8 2.8V6H15M7.5 10h5M7.5 13h5"></path></g></svg></span><span class="gb-svc__name">GemForm</span><span class="gb-svc__purpose">Form submissions from stores.</span></a></li><li><a class="gb-svc__tile" href="https://x.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg></span><span class="gb-svc__name">GemX</span><span class="gb-svc__purpose">Tests and personalization across every store.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-market"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-market">Read the market</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemwatcher.ops.gemboss.ai" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1.8 10S4.7 4.8 10 4.8 18.2 10 18.2 10 15.3 15.2 10 15.2 1.8 10 1.8 10z"></path><circle cx="10" cy="10" r="2.5"></circle></g></svg></span><span class="gb-svc__name">GemWatcher</span><span class="gb-svc__purpose">Store and market intelligence.</span></a></li><li><a class="gb-svc__tile" href="https://market.gemboss.ai" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gb-svc__name">GemMarket</span><span class="gb-svc__purpose">Each store&#x27;s market read and its competitors.</span></a></li><li><a class="gb-svc__tile" href="https://pixel.gemboss.ai" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg></span><span class="gb-svc__name">GemPixel</span><span class="gb-svc__purpose">Events every store sends, and whether they add up.</span></a></li><li><a class="gb-svc__tile" href="https://capture.gemboss.ai/admin" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gb-svc__name">GemCapture</span><span class="gb-svc__purpose">Page captures and visual checks.</span></a></li><li><a class="gb-svc__tile" href="https://search-radar.ops.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Search Radar</span><span class="gb-svc__purpose">Rankings on the App Store, Google and AI answers.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-content"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-content">Content and community</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://press.gemboss.ai/admin" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.5"></rect><path d="M6 7h8M6 10h8M6 13h5"></path></g></svg></span><span class="gb-svc__name">GemPress</span><span class="gb-svc__purpose">Articles and the content store.</span></a></li><li><a class="gb-svc__tile" href="https://content-radar.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Content Radar</span><span class="gb-svc__purpose">From the topics worth writing to articles.</span></a></li><li><a class="gb-svc__tile" href="https://community.gemboss.ai/admin" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">The seller community.</span></a></li><li><a class="gb-svc__tile" href="https://news.gemboss.ai/admin" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8v4h3l6 4V4L6 8H3z"></path><path d="M15 7.5a3.5 3.5 0 0 1 0 5"></path></g></svg></span><span class="gb-svc__name">GemCommunity News</span><span class="gb-svc__purpose">News posts and how they are read.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-customers"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-customers">Customers</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://care.gemboss.ai/inbox" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gb-svc__name">GemCare</span><span class="gb-svc__purpose">The customer care inbox.</span></a></li><li><a class="gb-svc__tile" href="https://feedback.gemboss.ai/admin" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 11l2-7h10l2 7v5H3z"></path><path d="M3 11h4l1 2h4l1-2h4"></path></g></svg></span><span class="gb-svc__name">GemFeedback</span><span class="gb-svc__purpose">The feedback backlog.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-team"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-team">Team and partners</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://partner-radar.ops.gemboss.ai" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.6 11.4a3 3 0 0 0 4.2 0l2.6-2.6a3 3 0 0 0-4.2-4.2l-1 1"></path><path d="M11.4 8.6a3 3 0 0 0-4.2 0l-2.6 2.6a3 3 0 0 0 4.2 4.2l1-1"></path></g></svg></span><span class="gb-svc__name">Partner Radar</span><span class="gb-svc__purpose">Partners and agencies, as a CRM.</span></a></li><li><a class="gb-svc__tile" href="https://gemlabs-taskdesk-production.up.railway.app" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 5h9M8 10h9M8 15h9"></path><circle cx="4" cy="5" r=".9"></circle><circle cx="4" cy="10" r=".9"></circle><circle cx="4" cy="15" r=".9"></circle></g></svg></span><span class="gb-svc__name">Taskdesk</span><span class="gb-svc__purpose">Every job the fleet is running.</span></a></li></ul></div></div><div class="gb-svc__foot"><a class="gb-svc__all" href="https://gemfactory.ops.gemboss.ai/services">All services and their health<span aria-hidden="true">→</span></a></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search" aria-label="Search" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c59-R0:"><div class="gnav-scroll"><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Review queue</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
3788
3788
|
<header class="gemboss-platform-topbar">
|
|
3789
3789
|
<div class="gemboss-topbar-start">
|
|
3790
3790
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c59-R0:">
|
|
@@ -4257,7 +4257,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
4257
4257
|
<h1 style="margin:0">Review queue</h1>
|
|
4258
4258
|
</div>
|
|
4259
4259
|
</main>
|
|
4260
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Bảng dịch vụ mở, nền tối</figcaption><div class="cat-wide"><iframe title="Bảng dịch vụ mở, nền tối" style="height:720px;width:1280px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c59-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c59-Rkj:svc" aria-label="Switch service" title="Switch service"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c59-Rkj:svc" class="gb-svc" aria-labelledby=":c59-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c59-Rkj:svc-t">Gem services</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Find a service" aria-label="Find a service" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-gemboss"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-gemboss">GemBoss</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://admin.gemboss.ai" data-tint="iris" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="6" height="6" rx="1.3"></rect><rect x="11" y="3" width="6" height="6" rx="1.3"></rect><rect x="3" y="11" width="6" height="6" rx="1.3"></rect><rect x="11" y="11" width="6" height="6" rx="1.3"></rect></g></svg></span><span class="gb-svc__name">GemBoss</span><span class="gb-svc__purpose">The seller app and the ops console.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-build"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-build">Build the store</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemfactory.ops.gemboss.ai" data-tint="blue" aria-current="page" tabindex="0"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3 17 6.8 10 10.6 3 6.8z"></path><path d="M3 10.1l7 3.8 7-3.8"></path><path d="M3 13.4l7 3.8 7-3.8"></path></g></svg></span><span class="gb-svc__name">GemFactory</span><span class="gb-svc__purpose">Review sections, elements and templates.</span></a></li><li><a class="gb-svc__tile" href="https://media.gemboss.ai" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.8"></rect><circle cx="7.3" cy="7.8" r="1.3"></circle><path d="M3.5 15l4.2-4.2 3 3 2.2-2.2 3.6 3.6"></path></g></svg></span><span class="gb-svc__name">GemMedia</span><span class="gb-svc__purpose">Images and videos made for stores, and their cost.</span></a></li><li><a class="gb-svc__tile" href="https://gemform.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 2.8h6.8l3.2 3.2v11.2H5z"></path><path d="M11.8 2.8V6H15M7.5 10h5M7.5 13h5"></path></g></svg></span><span class="gb-svc__name">GemForm</span><span class="gb-svc__purpose">Form submissions from stores.</span></a></li><li><a class="gb-svc__tile" href="https://x.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg></span><span class="gb-svc__name">GemX</span><span class="gb-svc__purpose">Tests and personalization across every store.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-market"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-market">Read the market</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemwatcher.ops.gemboss.ai" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1.8 10S4.7 4.8 10 4.8 18.2 10 18.2 10 15.3 15.2 10 15.2 1.8 10 1.8 10z"></path><circle cx="10" cy="10" r="2.5"></circle></g></svg></span><span class="gb-svc__name">GemWatcher</span><span class="gb-svc__purpose">Store and market intelligence.</span></a></li><li><a class="gb-svc__tile" href="https://market.gemboss.ai" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gb-svc__name">GemMarket</span><span class="gb-svc__purpose">Each store&#x27;s market read and its competitors.</span></a></li><li><a class="gb-svc__tile" href="https://pixel.gemboss.ai" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg></span><span class="gb-svc__name">GemPixel</span><span class="gb-svc__purpose">Events every store sends, and whether they add up.</span></a></li><li><a class="gb-svc__tile" href="https://capture.gemboss.ai/admin" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gb-svc__name">GemCapture</span><span class="gb-svc__purpose">Page captures and visual checks.</span></a></li><li><a class="gb-svc__tile" href="https://search-radar.ops.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Search Radar</span><span class="gb-svc__purpose">Rankings on the App Store, Google and AI answers.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-content"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-content">Content and community</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://press.gemboss.ai/admin" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.5"></rect><path d="M6 7h8M6 10h8M6 13h5"></path></g></svg></span><span class="gb-svc__name">GemPress</span><span class="gb-svc__purpose">Articles and the content store.</span></a></li><li><a class="gb-svc__tile" href="https://content-radar.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Content Radar</span><span class="gb-svc__purpose">From the topics worth writing to articles.</span></a></li><li><a class="gb-svc__tile" href="https://community.gemboss.ai/admin" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">The seller community.</span></a></li><li><a class="gb-svc__tile" href="https://news.gemboss.ai/admin" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8v4h3l6 4V4L6 8H3z"></path><path d="M15 7.5a3.5 3.5 0 0 1 0 5"></path></g></svg></span><span class="gb-svc__name">GemCommunity News</span><span class="gb-svc__purpose">News posts and how they are read.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-customers"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-customers">Customers</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://care.gemboss.ai/inbox" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gb-svc__name">GemCare</span><span class="gb-svc__purpose">The customer care inbox.</span></a></li><li><a class="gb-svc__tile" href="https://feedback.gemboss.ai/admin" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 11l2-7h10l2 7v5H3z"></path><path d="M3 11h4l1 2h4l1-2h4"></path></g></svg></span><span class="gb-svc__name">GemFeedback</span><span class="gb-svc__purpose">The feedback backlog.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-team"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-team">Team and partners</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://partner-radar.ops.gemboss.ai" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.6 11.4a3 3 0 0 0 4.2 0l2.6-2.6a3 3 0 0 0-4.2-4.2l-1 1"></path><path d="M11.4 8.6a3 3 0 0 0-4.2 0l-2.6 2.6a3 3 0 0 0 4.2 4.2l1-1"></path></g></svg></span><span class="gb-svc__name">Partner Radar</span><span class="gb-svc__purpose">Partners and agencies, as a CRM.</span></a></li><li><a class="gb-svc__tile" href="https://gemlabs-taskdesk-production.up.railway.app" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 5h9M8 10h9M8 15h9"></path><circle cx="4" cy="5" r=".9"></circle><circle cx="4" cy="10" r=".9"></circle><circle cx="4" cy="15" r=".9"></circle></g></svg></span><span class="gb-svc__name">Taskdesk</span><span class="gb-svc__purpose">Every job the fleet is running.</span></a></li></ul></div></div><div class="gb-svc__foot"><a class="gb-svc__all" href="https://gemfactory.ops.gemboss.ai/services">All services and their health<span aria-hidden="true">→</span></a></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search" aria-label="Search" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c59-R0:"><div class="gnav-scroll"><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Review queue</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
4260
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Bảng dịch vụ mở, nền tối</figcaption><div class="cat-wide"><iframe title="Bảng dịch vụ mở, nền tối" style="height:720px;width:1280px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c59-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c59-Rkj:svc" aria-label="Switch service" title="Switch service"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c59-Rkj:svc" class="gb-svc" aria-labelledby=":c59-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c59-Rkj:svc-t">Gem services</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Find a service" aria-label="Find a service" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-gemboss"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-gemboss">GemBoss</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://admin.gemboss.ai" data-tint="iris" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="6" height="6" rx="1.3"></rect><rect x="11" y="3" width="6" height="6" rx="1.3"></rect><rect x="3" y="11" width="6" height="6" rx="1.3"></rect><rect x="11" y="11" width="6" height="6" rx="1.3"></rect></g></svg></span><span class="gb-svc__name">GemBoss</span><span class="gb-svc__purpose">The seller app and the ops console.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-build"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-build">Build the store</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemfactory.ops.gemboss.ai" data-tint="blue" aria-current="page" tabindex="0"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3 17 6.8 10 10.6 3 6.8z"></path><path d="M3 10.1l7 3.8 7-3.8"></path><path d="M3 13.4l7 3.8 7-3.8"></path></g></svg></span><span class="gb-svc__name">GemFactory</span><span class="gb-svc__purpose">Review sections, elements and templates.</span></a></li><li><a class="gb-svc__tile" href="https://media.gemboss.ai" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.8"></rect><circle cx="7.3" cy="7.8" r="1.3"></circle><path d="M3.5 15l4.2-4.2 3 3 2.2-2.2 3.6 3.6"></path></g></svg></span><span class="gb-svc__name">GemMedia</span><span class="gb-svc__purpose">Images and videos made for stores, and their cost.</span></a></li><li><a class="gb-svc__tile" href="https://gemform.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 2.8h6.8l3.2 3.2v11.2H5z"></path><path d="M11.8 2.8V6H15M7.5 10h5M7.5 13h5"></path></g></svg></span><span class="gb-svc__name">GemForm</span><span class="gb-svc__purpose">Form submissions from stores.</span></a></li><li><a class="gb-svc__tile" href="https://x.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg></span><span class="gb-svc__name">GemX</span><span class="gb-svc__purpose">Tests and personalization across every store.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-market"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-market">Read the market</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemwatcher.ops.gemboss.ai" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1.8 10S4.7 4.8 10 4.8 18.2 10 18.2 10 15.3 15.2 10 15.2 1.8 10 1.8 10z"></path><circle cx="10" cy="10" r="2.5"></circle></g></svg></span><span class="gb-svc__name">GemWatcher</span><span class="gb-svc__purpose">Store and market intelligence.</span></a></li><li><a class="gb-svc__tile" href="https://market.gemboss.ai" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gb-svc__name">GemMarket</span><span class="gb-svc__purpose">Each store&#x27;s market read and its competitors.</span></a></li><li><a class="gb-svc__tile" href="https://pixel.gemboss.ai" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg></span><span class="gb-svc__name">GemPixel</span><span class="gb-svc__purpose">Events every store sends, and whether they add up.</span></a></li><li><a class="gb-svc__tile" href="https://capture.gemboss.ai/admin" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gb-svc__name">GemCapture</span><span class="gb-svc__purpose">Page captures and visual checks.</span></a></li><li><a class="gb-svc__tile" href="https://search-radar.ops.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Search Radar</span><span class="gb-svc__purpose">Rankings on the App Store, Google and AI answers.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-content"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-content">Content and community</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://press.gemboss.ai/admin" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.5"></rect><path d="M6 7h8M6 10h8M6 13h5"></path></g></svg></span><span class="gb-svc__name">GemPress</span><span class="gb-svc__purpose">Articles and the content store.</span></a></li><li><a class="gb-svc__tile" href="https://content-radar.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Content Radar</span><span class="gb-svc__purpose">From the topics worth writing to articles.</span></a></li><li><a class="gb-svc__tile" href="https://community.gemboss.ai/admin" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">The seller community.</span></a></li><li><a class="gb-svc__tile" href="https://news.gemboss.ai/admin" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8v4h3l6 4V4L6 8H3z"></path><path d="M15 7.5a3.5 3.5 0 0 1 0 5"></path></g></svg></span><span class="gb-svc__name">GemCommunity News</span><span class="gb-svc__purpose">News posts and how they are read.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-customers"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-customers">Customers</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://care.gemboss.ai/inbox" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gb-svc__name">GemCare</span><span class="gb-svc__purpose">The customer care inbox.</span></a></li><li><a class="gb-svc__tile" href="https://feedback.gemboss.ai/admin" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 11l2-7h10l2 7v5H3z"></path><path d="M3 11h4l1 2h4l1-2h4"></path></g></svg></span><span class="gb-svc__name">GemFeedback</span><span class="gb-svc__purpose">The feedback backlog.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-team"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-team">Team and partners</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://partner-radar.ops.gemboss.ai" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.6 11.4a3 3 0 0 0 4.2 0l2.6-2.6a3 3 0 0 0-4.2-4.2l-1 1"></path><path d="M11.4 8.6a3 3 0 0 0-4.2 0l-2.6 2.6a3 3 0 0 0 4.2 4.2l1-1"></path></g></svg></span><span class="gb-svc__name">Partner Radar</span><span class="gb-svc__purpose">Partners and agencies, as a CRM.</span></a></li><li><a class="gb-svc__tile" href="https://gemlabs-taskdesk-production.up.railway.app" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 5h9M8 10h9M8 15h9"></path><circle cx="4" cy="5" r=".9"></circle><circle cx="4" cy="10" r=".9"></circle><circle cx="4" cy="15" r=".9"></circle></g></svg></span><span class="gb-svc__name">Taskdesk</span><span class="gb-svc__purpose">Every job the fleet is running.</span></a></li></ul></div></div><div class="gb-svc__foot"><a class="gb-svc__all" href="https://gemfactory.ops.gemboss.ai/services">All services and their health<span aria-hidden="true">→</span></a></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search" aria-label="Search" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c59-R0:"><div class="gnav-scroll"><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Review queue</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
4261
4261
|
<header class="gemboss-platform-topbar">
|
|
4262
4262
|
<div class="gemboss-topbar-start">
|
|
4263
4263
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c59-R0:">
|
|
@@ -4730,7 +4730,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
4730
4730
|
<h1 style="margin:0">Review queue</h1>
|
|
4731
4731
|
</div>
|
|
4732
4732
|
</main>
|
|
4733
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Bảng dịch vụ mở, điện thoại 390</figcaption><div class="cat-wide"><iframe title="Bảng dịch vụ mở, điện thoại 390" style="height:760px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c59-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c59-Rkj:svc" aria-label="Switch service" title="Switch service"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c59-Rkj:svc" class="gb-svc" aria-labelledby=":c59-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c59-Rkj:svc-t">Gem services</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Find a service" aria-label="Find a service" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-gemboss"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-gemboss">GemBoss</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://admin.gemboss.ai" data-tint="iris" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="6" height="6" rx="1.3"></rect><rect x="11" y="3" width="6" height="6" rx="1.3"></rect><rect x="3" y="11" width="6" height="6" rx="1.3"></rect><rect x="11" y="11" width="6" height="6" rx="1.3"></rect></g></svg></span><span class="gb-svc__name">GemBoss</span><span class="gb-svc__purpose">The seller app and the ops console.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-build"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-build">Build the store</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemfactory.ops.gemboss.ai" data-tint="blue" aria-current="page" tabindex="0"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3 17 6.8 10 10.6 3 6.8z"></path><path d="M3 10.1l7 3.8 7-3.8"></path><path d="M3 13.4l7 3.8 7-3.8"></path></g></svg></span><span class="gb-svc__name">GemFactory</span><span class="gb-svc__purpose">Review sections, elements and templates.</span></a></li><li><a class="gb-svc__tile" href="https://media.gemboss.ai" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.8"></rect><circle cx="7.3" cy="7.8" r="1.3"></circle><path d="M3.5 15l4.2-4.2 3 3 2.2-2.2 3.6 3.6"></path></g></svg></span><span class="gb-svc__name">GemMedia</span><span class="gb-svc__purpose">Images and videos made for stores, and their cost.</span></a></li><li><a class="gb-svc__tile" href="https://gemform.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 2.8h6.8l3.2 3.2v11.2H5z"></path><path d="M11.8 2.8V6H15M7.5 10h5M7.5 13h5"></path></g></svg></span><span class="gb-svc__name">GemForm</span><span class="gb-svc__purpose">Form submissions from stores.</span></a></li><li><a class="gb-svc__tile" href="https://x.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg></span><span class="gb-svc__name">GemX</span><span class="gb-svc__purpose">Tests and personalization across every store.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-market"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-market">Read the market</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemwatcher.ops.gemboss.ai" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1.8 10S4.7 4.8 10 4.8 18.2 10 18.2 10 15.3 15.2 10 15.2 1.8 10 1.8 10z"></path><circle cx="10" cy="10" r="2.5"></circle></g></svg></span><span class="gb-svc__name">GemWatcher</span><span class="gb-svc__purpose">Store and market intelligence.</span></a></li><li><a class="gb-svc__tile" href="https://market.gemboss.ai" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gb-svc__name">GemMarket</span><span class="gb-svc__purpose">Each store&#x27;s market read and its competitors.</span></a></li><li><a class="gb-svc__tile" href="https://pixel.gemboss.ai" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg></span><span class="gb-svc__name">GemPixel</span><span class="gb-svc__purpose">Events every store sends, and whether they add up.</span></a></li><li><a class="gb-svc__tile" href="https://capture.gemboss.ai/admin" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gb-svc__name">GemCapture</span><span class="gb-svc__purpose">Page captures and visual checks.</span></a></li><li><a class="gb-svc__tile" href="https://search-radar.ops.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Search Radar</span><span class="gb-svc__purpose">Rankings on the App Store, Google and AI answers.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-content"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-content">Content and community</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://press.gemboss.ai/admin" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.5"></rect><path d="M6 7h8M6 10h8M6 13h5"></path></g></svg></span><span class="gb-svc__name">GemPress</span><span class="gb-svc__purpose">Articles and the content store.</span></a></li><li><a class="gb-svc__tile" href="https://content-radar.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Content Radar</span><span class="gb-svc__purpose">From the topics worth writing to articles.</span></a></li><li><a class="gb-svc__tile" href="https://community.gemboss.ai/admin" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">The seller community.</span></a></li><li><a class="gb-svc__tile" href="https://news.gemboss.ai/admin" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8v4h3l6 4V4L6 8H3z"></path><path d="M15 7.5a3.5 3.5 0 0 1 0 5"></path></g></svg></span><span class="gb-svc__name">GemCommunity News</span><span class="gb-svc__purpose">News posts and how they are read.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-customers"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-customers">Customers</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://care.gemboss.ai/inbox" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gb-svc__name">GemCare</span><span class="gb-svc__purpose">The customer care inbox.</span></a></li><li><a class="gb-svc__tile" href="https://feedback.gemboss.ai/admin" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 11l2-7h10l2 7v5H3z"></path><path d="M3 11h4l1 2h4l1-2h4"></path></g></svg></span><span class="gb-svc__name">GemFeedback</span><span class="gb-svc__purpose">The feedback backlog.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-team"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-team">Team and partners</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://partner-radar.ops.gemboss.ai" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.6 11.4a3 3 0 0 0 4.2 0l2.6-2.6a3 3 0 0 0-4.2-4.2l-1 1"></path><path d="M11.4 8.6a3 3 0 0 0-4.2 0l-2.6 2.6a3 3 0 0 0 4.2 4.2l1-1"></path></g></svg></span><span class="gb-svc__name">Partner Radar</span><span class="gb-svc__purpose">Partners and agencies, as a CRM.</span></a></li><li><a class="gb-svc__tile" href="https://gemlabs-taskdesk-production.up.railway.app" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 5h9M8 10h9M8 15h9"></path><circle cx="4" cy="5" r=".9"></circle><circle cx="4" cy="10" r=".9"></circle><circle cx="4" cy="15" r=".9"></circle></g></svg></span><span class="gb-svc__name">Taskdesk</span><span class="gb-svc__purpose">Every job the fleet is running.</span></a></li></ul></div></div><div class="gb-svc__foot"><a class="gb-svc__all" href="https://gemfactory.ops.gemboss.ai/services">All services and their health<span aria-hidden="true">→</span></a></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search" aria-label="Search" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c59-R0:"><div class="gnav-scroll"><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Review queue</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
4733
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Bảng dịch vụ mở, điện thoại 390</figcaption><div class="cat-wide"><iframe title="Bảng dịch vụ mở, điện thoại 390" style="height:760px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c59-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c59-Rkj:svc" aria-label="Switch service" title="Switch service"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c59-Rkj:svc" class="gb-svc" aria-labelledby=":c59-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c59-Rkj:svc-t">Gem services</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Find a service" aria-label="Find a service" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-gemboss"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-gemboss">GemBoss</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://admin.gemboss.ai" data-tint="iris" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="6" height="6" rx="1.3"></rect><rect x="11" y="3" width="6" height="6" rx="1.3"></rect><rect x="3" y="11" width="6" height="6" rx="1.3"></rect><rect x="11" y="11" width="6" height="6" rx="1.3"></rect></g></svg></span><span class="gb-svc__name">GemBoss</span><span class="gb-svc__purpose">The seller app and the ops console.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-build"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-build">Build the store</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemfactory.ops.gemboss.ai" data-tint="blue" aria-current="page" tabindex="0"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3 17 6.8 10 10.6 3 6.8z"></path><path d="M3 10.1l7 3.8 7-3.8"></path><path d="M3 13.4l7 3.8 7-3.8"></path></g></svg></span><span class="gb-svc__name">GemFactory</span><span class="gb-svc__purpose">Review sections, elements and templates.</span></a></li><li><a class="gb-svc__tile" href="https://media.gemboss.ai" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.8"></rect><circle cx="7.3" cy="7.8" r="1.3"></circle><path d="M3.5 15l4.2-4.2 3 3 2.2-2.2 3.6 3.6"></path></g></svg></span><span class="gb-svc__name">GemMedia</span><span class="gb-svc__purpose">Images and videos made for stores, and their cost.</span></a></li><li><a class="gb-svc__tile" href="https://gemform.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 2.8h6.8l3.2 3.2v11.2H5z"></path><path d="M11.8 2.8V6H15M7.5 10h5M7.5 13h5"></path></g></svg></span><span class="gb-svc__name">GemForm</span><span class="gb-svc__purpose">Form submissions from stores.</span></a></li><li><a class="gb-svc__tile" href="https://x.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg></span><span class="gb-svc__name">GemX</span><span class="gb-svc__purpose">Tests and personalization across every store.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-market"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-market">Read the market</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemwatcher.ops.gemboss.ai" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1.8 10S4.7 4.8 10 4.8 18.2 10 18.2 10 15.3 15.2 10 15.2 1.8 10 1.8 10z"></path><circle cx="10" cy="10" r="2.5"></circle></g></svg></span><span class="gb-svc__name">GemWatcher</span><span class="gb-svc__purpose">Store and market intelligence.</span></a></li><li><a class="gb-svc__tile" href="https://market.gemboss.ai" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gb-svc__name">GemMarket</span><span class="gb-svc__purpose">Each store&#x27;s market read and its competitors.</span></a></li><li><a class="gb-svc__tile" href="https://pixel.gemboss.ai" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg></span><span class="gb-svc__name">GemPixel</span><span class="gb-svc__purpose">Events every store sends, and whether they add up.</span></a></li><li><a class="gb-svc__tile" href="https://capture.gemboss.ai/admin" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gb-svc__name">GemCapture</span><span class="gb-svc__purpose">Page captures and visual checks.</span></a></li><li><a class="gb-svc__tile" href="https://search-radar.ops.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Search Radar</span><span class="gb-svc__purpose">Rankings on the App Store, Google and AI answers.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-content"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-content">Content and community</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://press.gemboss.ai/admin" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.5"></rect><path d="M6 7h8M6 10h8M6 13h5"></path></g></svg></span><span class="gb-svc__name">GemPress</span><span class="gb-svc__purpose">Articles and the content store.</span></a></li><li><a class="gb-svc__tile" href="https://content-radar.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Content Radar</span><span class="gb-svc__purpose">From the topics worth writing to articles.</span></a></li><li><a class="gb-svc__tile" href="https://community.gemboss.ai/admin" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">The seller community.</span></a></li><li><a class="gb-svc__tile" href="https://news.gemboss.ai/admin" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8v4h3l6 4V4L6 8H3z"></path><path d="M15 7.5a3.5 3.5 0 0 1 0 5"></path></g></svg></span><span class="gb-svc__name">GemCommunity News</span><span class="gb-svc__purpose">News posts and how they are read.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-customers"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-customers">Customers</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://care.gemboss.ai/inbox" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gb-svc__name">GemCare</span><span class="gb-svc__purpose">The customer care inbox.</span></a></li><li><a class="gb-svc__tile" href="https://feedback.gemboss.ai/admin" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 11l2-7h10l2 7v5H3z"></path><path d="M3 11h4l1 2h4l1-2h4"></path></g></svg></span><span class="gb-svc__name">GemFeedback</span><span class="gb-svc__purpose">The feedback backlog.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c59-Rkj:svc-team"><h3 class="gb-svc__heading" id=":c59-Rkj:svc-team">Team and partners</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://partner-radar.ops.gemboss.ai" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.6 11.4a3 3 0 0 0 4.2 0l2.6-2.6a3 3 0 0 0-4.2-4.2l-1 1"></path><path d="M11.4 8.6a3 3 0 0 0-4.2 0l-2.6 2.6a3 3 0 0 0 4.2 4.2l1-1"></path></g></svg></span><span class="gb-svc__name">Partner Radar</span><span class="gb-svc__purpose">Partners and agencies, as a CRM.</span></a></li><li><a class="gb-svc__tile" href="https://gemlabs-taskdesk-production.up.railway.app" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 5h9M8 10h9M8 15h9"></path><circle cx="4" cy="5" r=".9"></circle><circle cx="4" cy="10" r=".9"></circle><circle cx="4" cy="15" r=".9"></circle></g></svg></span><span class="gb-svc__name">Taskdesk</span><span class="gb-svc__purpose">Every job the fleet is running.</span></a></li></ul></div></div><div class="gb-svc__foot"><a class="gb-svc__all" href="https://gemfactory.ops.gemboss.ai/services">All services and their health<span aria-hidden="true">→</span></a></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search" aria-label="Search" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c59-R0:"><div class="gnav-scroll"><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Review queue</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
4734
4734
|
<header class="gemboss-platform-topbar">
|
|
4735
4735
|
<div class="gemboss-topbar-start">
|
|
4736
4736
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c59-R0:">
|
|
@@ -5203,7 +5203,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
5203
5203
|
<h1 style="margin:0">Review queue</h1>
|
|
5204
5204
|
</div>
|
|
5205
5205
|
</main>
|
|
5206
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Switcher (0.40.0): nhóm cộng đồng dạng thẻ có hình, desktop 1280</figcaption><div class="cat-wide"><iframe title="Switcher (0.40.0): nhóm cộng đồng dạng thẻ có hình, desktop 1280" style="height:760px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c61-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemCommunity home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemCommunity</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c61-Rkj:svc" aria-label="Đổi nhóm" title="Đổi nhóm"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c61-Rkj:svc" class="gb-svc" aria-labelledby=":c61-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c61-Rkj:svc-t">Cộng đồng</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Tìm nhóm" aria-label="Tìm nhóm" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-mine"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-mine">Nhóm của bạn</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="iris" aria-current="page" tabindex="0"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">◈</span></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">Nhóm người dùng GemBoss: funnel, store, kết quả thật.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="teal" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22320%22%20height%3D%22180%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235661f5%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%230d9488%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22320%22%20height%3D%22180%22%20fill%3D%22url(%23g)%22%2F%3E%3Cpath%20d%3D%22M120%2C50%20200%2C50%20230%2C90%20160%2C150%2090%2C90Z%22%20fill%3D%22none%22%20stroke%3D%22%23fff%22%20stroke-width%3D%226%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.85%22%2F%3E%3C%2Fsvg%3E" alt="" loading="lazy" decoding="async"/></span><span class="gb-svc__name">AI-native Sales Funnel</span><span class="gb-svc__purpose">Người dùng GemPages và GemBoss dựng funnel bằng AI.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-discover"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-discover">Khám phá thêm</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="rose" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">🇨🇳</span></span><span class="gb-svc__name">China Brands Go Global · 中国品牌出海<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Thương hiệu Trung Quốc bán ra thế giới.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="violet" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">💄</span></span><span class="gb-svc__name">Beauty Brands<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Nhà sáng lập skincare và làm đẹp.</span></a></li></ul></div></div><div class="gb-svc__foot"><button type="button" class="ui-btn ui-btn--sm">+ Tạo cộng đồng</button></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Tìm bài &amp; thành viên" aria-label="Tìm bài &amp; thành viên" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c61-R0:"><div class="gnav-scroll"></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Bảng tin</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5206
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Switcher (0.40.0): nhóm cộng đồng dạng thẻ có hình, desktop 1280</figcaption><div class="cat-wide"><iframe title="Switcher (0.40.0): nhóm cộng đồng dạng thẻ có hình, desktop 1280" style="height:760px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c61-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemCommunity home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemCommunity</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c61-Rkj:svc" aria-label="Đổi nhóm" title="Đổi nhóm"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c61-Rkj:svc" class="gb-svc" aria-labelledby=":c61-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c61-Rkj:svc-t">Cộng đồng</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Tìm nhóm" aria-label="Tìm nhóm" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-mine"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-mine">Nhóm của bạn</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="iris" aria-current="page" tabindex="0"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">◈</span></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">Nhóm người dùng GemBoss: funnel, store, kết quả thật.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="teal" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22320%22%20height%3D%22180%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235661f5%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%230d9488%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22320%22%20height%3D%22180%22%20fill%3D%22url(%23g)%22%2F%3E%3Cpath%20d%3D%22M120%2C50%20200%2C50%20230%2C90%20160%2C150%2090%2C90Z%22%20fill%3D%22none%22%20stroke%3D%22%23fff%22%20stroke-width%3D%226%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.85%22%2F%3E%3C%2Fsvg%3E" alt="" loading="lazy" decoding="async"/></span><span class="gb-svc__name">AI-native Sales Funnel</span><span class="gb-svc__purpose">Người dùng GemPages và GemBoss dựng funnel bằng AI.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-discover"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-discover">Khám phá thêm</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="rose" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">🇨🇳</span></span><span class="gb-svc__name">China Brands Go Global · 中国品牌出海<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Thương hiệu Trung Quốc bán ra thế giới.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="violet" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">💄</span></span><span class="gb-svc__name">Beauty Brands<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Nhà sáng lập skincare và làm đẹp.</span></a></li></ul></div></div><div class="gb-svc__foot"><button type="button" class="ui-btn ui-btn--sm">+ Tạo cộng đồng</button></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Tìm bài &amp; thành viên" aria-label="Tìm bài &amp; thành viên" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c61-R0:"><div class="gnav-scroll"></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Bảng tin</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5207
5207
|
<header class="gemboss-platform-topbar">
|
|
5208
5208
|
<div class="gemboss-topbar-start">
|
|
5209
5209
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c61-R0:">
|
|
@@ -5366,7 +5366,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
5366
5366
|
<h1 style="margin:0">Bảng tin</h1>
|
|
5367
5367
|
</div>
|
|
5368
5368
|
</main>
|
|
5369
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Switcher: nhóm cộng đồng, nền tối</figcaption><div class="cat-wide"><iframe title="Switcher: nhóm cộng đồng, nền tối" style="height:760px;width:1280px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c61-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemCommunity home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemCommunity</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c61-Rkj:svc" aria-label="Đổi nhóm" title="Đổi nhóm"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c61-Rkj:svc" class="gb-svc" aria-labelledby=":c61-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c61-Rkj:svc-t">Cộng đồng</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Tìm nhóm" aria-label="Tìm nhóm" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-mine"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-mine">Nhóm của bạn</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="iris" aria-current="page" tabindex="0"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">◈</span></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">Nhóm người dùng GemBoss: funnel, store, kết quả thật.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="teal" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22320%22%20height%3D%22180%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235661f5%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%230d9488%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22320%22%20height%3D%22180%22%20fill%3D%22url(%23g)%22%2F%3E%3Cpath%20d%3D%22M120%2C50%20200%2C50%20230%2C90%20160%2C150%2090%2C90Z%22%20fill%3D%22none%22%20stroke%3D%22%23fff%22%20stroke-width%3D%226%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.85%22%2F%3E%3C%2Fsvg%3E" alt="" loading="lazy" decoding="async"/></span><span class="gb-svc__name">AI-native Sales Funnel</span><span class="gb-svc__purpose">Người dùng GemPages và GemBoss dựng funnel bằng AI.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-discover"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-discover">Khám phá thêm</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="rose" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">🇨🇳</span></span><span class="gb-svc__name">China Brands Go Global · 中国品牌出海<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Thương hiệu Trung Quốc bán ra thế giới.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="violet" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">💄</span></span><span class="gb-svc__name">Beauty Brands<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Nhà sáng lập skincare và làm đẹp.</span></a></li></ul></div></div><div class="gb-svc__foot"><button type="button" class="ui-btn ui-btn--sm">+ Tạo cộng đồng</button></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Tìm bài &amp; thành viên" aria-label="Tìm bài &amp; thành viên" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c61-R0:"><div class="gnav-scroll"></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Bảng tin</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5369
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Switcher: nhóm cộng đồng, nền tối</figcaption><div class="cat-wide"><iframe title="Switcher: nhóm cộng đồng, nền tối" style="height:760px;width:1280px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c61-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemCommunity home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemCommunity</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c61-Rkj:svc" aria-label="Đổi nhóm" title="Đổi nhóm"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c61-Rkj:svc" class="gb-svc" aria-labelledby=":c61-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c61-Rkj:svc-t">Cộng đồng</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Tìm nhóm" aria-label="Tìm nhóm" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-mine"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-mine">Nhóm của bạn</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="iris" aria-current="page" tabindex="0"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">◈</span></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">Nhóm người dùng GemBoss: funnel, store, kết quả thật.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="teal" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22320%22%20height%3D%22180%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235661f5%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%230d9488%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22320%22%20height%3D%22180%22%20fill%3D%22url(%23g)%22%2F%3E%3Cpath%20d%3D%22M120%2C50%20200%2C50%20230%2C90%20160%2C150%2090%2C90Z%22%20fill%3D%22none%22%20stroke%3D%22%23fff%22%20stroke-width%3D%226%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.85%22%2F%3E%3C%2Fsvg%3E" alt="" loading="lazy" decoding="async"/></span><span class="gb-svc__name">AI-native Sales Funnel</span><span class="gb-svc__purpose">Người dùng GemPages và GemBoss dựng funnel bằng AI.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-discover"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-discover">Khám phá thêm</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="rose" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">🇨🇳</span></span><span class="gb-svc__name">China Brands Go Global · 中国品牌出海<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Thương hiệu Trung Quốc bán ra thế giới.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="violet" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">💄</span></span><span class="gb-svc__name">Beauty Brands<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Nhà sáng lập skincare và làm đẹp.</span></a></li></ul></div></div><div class="gb-svc__foot"><button type="button" class="ui-btn ui-btn--sm">+ Tạo cộng đồng</button></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Tìm bài &amp; thành viên" aria-label="Tìm bài &amp; thành viên" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c61-R0:"><div class="gnav-scroll"></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Bảng tin</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5370
5370
|
<header class="gemboss-platform-topbar">
|
|
5371
5371
|
<div class="gemboss-topbar-start">
|
|
5372
5372
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c61-R0:">
|
|
@@ -5529,7 +5529,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
5529
5529
|
<h1 style="margin:0">Bảng tin</h1>
|
|
5530
5530
|
</div>
|
|
5531
5531
|
</main>
|
|
5532
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Switcher: nhóm cộng đồng, điện thoại 390</figcaption><div class="cat-wide"><iframe title="Switcher: nhóm cộng đồng, điện thoại 390" style="height:820px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c61-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemCommunity home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemCommunity</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c61-Rkj:svc" aria-label="Đổi nhóm" title="Đổi nhóm"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c61-Rkj:svc" class="gb-svc" aria-labelledby=":c61-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c61-Rkj:svc-t">Cộng đồng</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Tìm nhóm" aria-label="Tìm nhóm" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-mine"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-mine">Nhóm của bạn</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="iris" aria-current="page" tabindex="0"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">◈</span></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">Nhóm người dùng GemBoss: funnel, store, kết quả thật.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="teal" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22320%22%20height%3D%22180%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235661f5%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%230d9488%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22320%22%20height%3D%22180%22%20fill%3D%22url(%23g)%22%2F%3E%3Cpath%20d%3D%22M120%2C50%20200%2C50%20230%2C90%20160%2C150%2090%2C90Z%22%20fill%3D%22none%22%20stroke%3D%22%23fff%22%20stroke-width%3D%226%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.85%22%2F%3E%3C%2Fsvg%3E" alt="" loading="lazy" decoding="async"/></span><span class="gb-svc__name">AI-native Sales Funnel</span><span class="gb-svc__purpose">Người dùng GemPages và GemBoss dựng funnel bằng AI.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-discover"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-discover">Khám phá thêm</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="rose" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">🇨🇳</span></span><span class="gb-svc__name">China Brands Go Global · 中国品牌出海<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Thương hiệu Trung Quốc bán ra thế giới.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="violet" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">💄</span></span><span class="gb-svc__name">Beauty Brands<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Nhà sáng lập skincare và làm đẹp.</span></a></li></ul></div></div><div class="gb-svc__foot"><button type="button" class="ui-btn ui-btn--sm">+ Tạo cộng đồng</button></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Tìm bài &amp; thành viên" aria-label="Tìm bài &amp; thành viên" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c61-R0:"><div class="gnav-scroll"></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Bảng tin</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5532
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Switcher: nhóm cộng đồng, điện thoại 390</figcaption><div class="cat-wide"><iframe title="Switcher: nhóm cộng đồng, điện thoại 390" style="height:820px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c61-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemCommunity home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemCommunity</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c61-Rkj:svc" aria-label="Đổi nhóm" title="Đổi nhóm"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog open id=":c61-Rkj:svc" class="gb-svc" aria-labelledby=":c61-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c61-Rkj:svc-t">Cộng đồng</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Tìm nhóm" aria-label="Tìm nhóm" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-mine"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-mine">Nhóm của bạn</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="iris" aria-current="page" tabindex="0"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">◈</span></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">Nhóm người dùng GemBoss: funnel, store, kết quả thật.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="teal" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22320%22%20height%3D%22180%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%235661f5%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22%230d9488%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%22320%22%20height%3D%22180%22%20fill%3D%22url(%23g)%22%2F%3E%3Cpath%20d%3D%22M120%2C50%20200%2C50%20230%2C90%20160%2C150%2090%2C90Z%22%20fill%3D%22none%22%20stroke%3D%22%23fff%22%20stroke-width%3D%226%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.85%22%2F%3E%3C%2Fsvg%3E" alt="" loading="lazy" decoding="async"/></span><span class="gb-svc__name">AI-native Sales Funnel</span><span class="gb-svc__purpose">Người dùng GemPages và GemBoss dựng funnel bằng AI.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c61-Rkj:svc-discover"><h3 class="gb-svc__heading" id=":c61-Rkj:svc-discover">Khám phá thêm</h3><ul class="gb-svc__grid gb-svc__grid--media" role="list"><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="rose" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">🇨🇳</span></span><span class="gb-svc__name">China Brands Go Global · 中国品牌出海<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Thương hiệu Trung Quốc bán ra thế giới.</span></a></li><li><a class="gb-svc__tile gb-svc__tile--media" href="#" data-tint="violet" tabindex="-1"><span class="gb-svc__media" aria-hidden="true"><span class="gb-svc__media-glyph">💄</span></span><span class="gb-svc__name">Beauty Brands<span class="gb-svc__badge">Xin vào</span></span><span class="gb-svc__purpose">Nhà sáng lập skincare và làm đẹp.</span></a></li></ul></div></div><div class="gb-svc__foot"><button type="button" class="ui-btn ui-btn--sm">+ Tạo cộng đồng</button></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Tìm bài &amp; thành viên" aria-label="Tìm bài &amp; thành viên" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c61-R0:"><div class="gnav-scroll"></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Bảng tin</h1></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5533
5533
|
<header class="gemboss-platform-topbar">
|
|
5534
5534
|
<div class="gemboss-topbar-start">
|
|
5535
5535
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c61-R0:">
|
|
@@ -5692,7 +5692,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
5692
5692
|
<h1 style="margin:0">Bảng tin</h1>
|
|
5693
5693
|
</div>
|
|
5694
5694
|
</main>
|
|
5695
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>HTML thuần (service-switcher-plain.js, chạy thật): bấm nút chín chấm</figcaption><div class="cat-wide"><iframe title="HTML thuần (service-switcher-plain.js, chạy thật): bấm nút chín chấm" style="height:720px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c60-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemCapture home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemCapture</span></a><span data-gb-service-switcher="gemcapture" hidden=""></span></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search" aria-label="Search" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c60-R0:"><div class="gnav-scroll"><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gnav-label">Captures</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Live captures</h1></div></main></div><script src="../src/kit-plain.js"></script><script src="../src/service-switcher-plain.js"></script><script>gembossUI.initMenus(); gembossUI.initServiceSwitcher();</script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5695
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>HTML thuần (service-switcher-plain.js, chạy thật): bấm nút chín chấm</figcaption><div class="cat-wide"><iframe title="HTML thuần (service-switcher-plain.js, chạy thật): bấm nút chín chấm" style="height:720px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c60-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemCapture home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemCapture</span></a><span data-gb-service-switcher="gemcapture" hidden=""></span></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search" aria-label="Search" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div></div></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c60-R0:"><div class="gnav-scroll"><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gnav-label">Captures</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Live captures</h1></div></main></div><script src="../src/kit-plain.js"></script><script src="../src/service-switcher-plain.js"></script><script>gembossUI.initMenus(); gembossUI.initServiceSwitcher();</script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5696
5696
|
<header class="gemboss-platform-topbar">
|
|
5697
5697
|
<div class="gemboss-topbar-start">
|
|
5698
5698
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c60-R0:">
|
|
@@ -5775,7 +5775,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
5775
5775
|
<script src="../src/service-switcher-plain.js">
|
|
5776
5776
|
</script>
|
|
5777
5777
|
<script>gembossUI.initMenus(); gembossUI.initServiceSwitcher();</script></code></pre></details></figure></section>
|
|
5778
|
-
<section id="shell"><h2>Khung app</h2><p>Topbar 56px, rail 240px, ≤760px thành ngăn kéo. Logo <code>BrandLockup</code> (với <code>switcher</code>: nút chín chấm mở bảng các dịch vụ Gem, mục “Chuyển dịch vụ”), tài khoản <code>AccountMenu</code> (bấm chữ viết tắt), mục Trợ lý ở chân rail có class <code>gnav-assistant</code>.</p><figure class="cat-demo cat-screen"><figcaption>AppShell + BrandLockup (switcher) + AccountMenu + Icon</figcaption><iframe title="AppShell + BrandLockup (switcher) + AccountMenu + Icon" style="height:460px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Mở menu" aria-expanded="false" data-label-open="Mở menu" data-label-close="Đóng menu" aria-controls=":c62-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c62-Rkj:svc" aria-label="Switch service" title="Switch service"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog id=":c62-Rkj:svc" class="gb-svc" aria-labelledby=":c62-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c62-Rkj:svc-t">Gem services</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Find a service" aria-label="Find a service" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-gemboss"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-gemboss">GemBoss</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://admin.gemboss.ai" data-tint="iris" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="6" height="6" rx="1.3"></rect><rect x="11" y="3" width="6" height="6" rx="1.3"></rect><rect x="3" y="11" width="6" height="6" rx="1.3"></rect><rect x="11" y="11" width="6" height="6" rx="1.3"></rect></g></svg></span><span class="gb-svc__name">GemBoss</span><span class="gb-svc__purpose">The seller app and the ops console.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-build"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-build">Build the store</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemfactory.ops.gemboss.ai" data-tint="blue" aria-current="page" tabindex="0"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3 17 6.8 10 10.6 3 6.8z"></path><path d="M3 10.1l7 3.8 7-3.8"></path><path d="M3 13.4l7 3.8 7-3.8"></path></g></svg></span><span class="gb-svc__name">GemFactory</span><span class="gb-svc__purpose">Review sections, elements and templates.</span></a></li><li><a class="gb-svc__tile" href="https://media.gemboss.ai" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.8"></rect><circle cx="7.3" cy="7.8" r="1.3"></circle><path d="M3.5 15l4.2-4.2 3 3 2.2-2.2 3.6 3.6"></path></g></svg></span><span class="gb-svc__name">GemMedia</span><span class="gb-svc__purpose">Images and videos made for stores, and their cost.</span></a></li><li><a class="gb-svc__tile" href="https://gemform.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 2.8h6.8l3.2 3.2v11.2H5z"></path><path d="M11.8 2.8V6H15M7.5 10h5M7.5 13h5"></path></g></svg></span><span class="gb-svc__name">GemForm</span><span class="gb-svc__purpose">Form submissions from stores.</span></a></li><li><a class="gb-svc__tile" href="https://x.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg></span><span class="gb-svc__name">GemX</span><span class="gb-svc__purpose">Tests and personalization across every store.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-market"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-market">Read the market</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemwatcher.ops.gemboss.ai" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1.8 10S4.7 4.8 10 4.8 18.2 10 18.2 10 15.3 15.2 10 15.2 1.8 10 1.8 10z"></path><circle cx="10" cy="10" r="2.5"></circle></g></svg></span><span class="gb-svc__name">GemWatcher</span><span class="gb-svc__purpose">Store and market intelligence.</span></a></li><li><a class="gb-svc__tile" href="https://market.gemboss.ai" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gb-svc__name">GemMarket</span><span class="gb-svc__purpose">Each store&#x27;s market read and its competitors.</span></a></li><li><a class="gb-svc__tile" href="https://pixel.gemboss.ai" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg></span><span class="gb-svc__name">GemPixel</span><span class="gb-svc__purpose">Events every store sends, and whether they add up.</span></a></li><li><a class="gb-svc__tile" href="https://capture.gemboss.ai/admin" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gb-svc__name">GemCapture</span><span class="gb-svc__purpose">Page captures and visual checks.</span></a></li><li><a class="gb-svc__tile" href="https://search-radar.ops.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Search Radar</span><span class="gb-svc__purpose">Rankings on the App Store, Google and AI answers.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-content"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-content">Content and community</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://press.gemboss.ai/admin" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.5"></rect><path d="M6 7h8M6 10h8M6 13h5"></path></g></svg></span><span class="gb-svc__name">GemPress</span><span class="gb-svc__purpose">Articles and the content store.</span></a></li><li><a class="gb-svc__tile" href="https://content-radar.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Content Radar</span><span class="gb-svc__purpose">From the topics worth writing to articles.</span></a></li><li><a class="gb-svc__tile" href="https://community.gemboss.ai/admin" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">The seller community.</span></a></li><li><a class="gb-svc__tile" href="https://news.gemboss.ai/admin" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8v4h3l6 4V4L6 8H3z"></path><path d="M15 7.5a3.5 3.5 0 0 1 0 5"></path></g></svg></span><span class="gb-svc__name">GemCommunity News</span><span class="gb-svc__purpose">News posts and how they are read.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-customers"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-customers">Customers</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://care.gemboss.ai/inbox" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gb-svc__name">GemCare</span><span class="gb-svc__purpose">The customer care inbox.</span></a></li><li><a class="gb-svc__tile" href="https://feedback.gemboss.ai/admin" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 11l2-7h10l2 7v5H3z"></path><path d="M3 11h4l1 2h4l1-2h4"></path></g></svg></span><span class="gb-svc__name">GemFeedback</span><span class="gb-svc__purpose">The feedback backlog.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-team"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-team">Team and partners</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://partner-radar.ops.gemboss.ai" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.6 11.4a3 3 0 0 0 4.2 0l2.6-2.6a3 3 0 0 0-4.2-4.2l-1 1"></path><path d="M11.4 8.6a3 3 0 0 0-4.2 0l-2.6 2.6a3 3 0 0 0 4.2 4.2l1-1"></path></g></svg></span><span class="gb-svc__name">Partner Radar</span><span class="gb-svc__purpose">Partners and agencies, as a CRM.</span></a></li><li><a class="gb-svc__tile" href="https://gemlabs-taskdesk-production.up.railway.app" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 5h9M8 10h9M8 15h9"></path><circle cx="4" cy="5" r=".9"></circle><circle cx="4" cy="10" r=".9"></circle><circle cx="4" cy="15" r=".9"></circle></g></svg></span><span class="gb-svc__name">Taskdesk</span><span class="gb-svc__purpose">Every job the fleet is running.</span></a></li></ul></div></div><div class="gb-svc__foot"><a class="gb-svc__all" href="https://gemfactory.ops.gemboss.ai/services">All services and their health<span aria-hidden="true">→</span></a></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search by #ID, name or key" aria-label="Search by #ID, name or key" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div><div class="gb-account-role">Designer</div></div><a role="menuitem" class="gemboss-account-menu-item" href="#">Cài đặt</a><form method="post" action="#" class="gb-account-form"><button role="menuitem" type="submit" class="gemboss-account-menu-item danger">Đăng xuất</button></form></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c62-R0:"><div class="gnav-scroll"><div class="gnav-heading">Kho</div><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3.5" y="3" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="8.25" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="13.5" width="13" height="3.5" rx="1"></rect></g></svg></span><span class="gnav-label">Ghép trang</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3.2 17.3 16H2.7z"></path><path d="M10 8.2v3.6M10 13.9v.1"></path></g></svg></span><span class="gnav-label">Framework thiếu</span><span class="gnav-count" aria-label="3 mục đang mở">3</span></a></div></div><div class="gnav-bottom"><div class="gnav-sep"></div><a class="gnav-item gnav-assistant" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gnav-label">Trợ lý</span></a></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Đóng menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Nội dung màn</h1></div></main></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5778
|
+
<section id="shell"><h2>Khung app</h2><p>Topbar 56px, rail 240px, ≤760px thành ngăn kéo. Logo <code>BrandLockup</code> (với <code>switcher</code>: nút chín chấm mở bảng các dịch vụ Gem, mục “Chuyển dịch vụ”), tài khoản <code>AccountMenu</code> (bấm chữ viết tắt), mục Trợ lý ở chân rail có class <code>gnav-assistant</code>.</p><figure class="cat-demo cat-screen"><figcaption>AppShell + BrandLockup (switcher) + AccountMenu + Icon</figcaption><iframe title="AppShell + BrandLockup (switcher) + AccountMenu + Icon" style="height:460px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Mở menu" aria-expanded="false" data-label-open="Mở menu" data-label-close="Đóng menu" aria-controls=":c62-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a><button type="button" class="gb-svc-trigger" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c62-Rkj:svc" aria-label="Switch service" title="Switch service"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="4.5" cy="4.5" r="1"></circle><circle cx="10" cy="4.5" r="1"></circle><circle cx="15.5" cy="4.5" r="1"></circle><circle cx="4.5" cy="10" r="1"></circle><circle cx="10" cy="10" r="1"></circle><circle cx="15.5" cy="10" r="1"></circle><circle cx="4.5" cy="15.5" r="1"></circle><circle cx="10" cy="15.5" r="1"></circle><circle cx="15.5" cy="15.5" r="1"></circle></g></svg></button><dialog id=":c62-Rkj:svc" class="gb-svc" aria-labelledby=":c62-Rkj:svc-t"><div class="gb-svc__head"><h2 class="gb-svc__title" id=":c62-Rkj:svc-t">Gem services</h2><button type="button" class="ui-modal__close" aria-label="Close"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></div><div class="gb-svc__search"><label class="gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-field__bare" type="search" name="service-search" autoComplete="off" placeholder="Find a service" aria-label="Find a service" value=""/></label></div><div class="gb-svc__body"><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-gemboss"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-gemboss">GemBoss</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://admin.gemboss.ai" data-tint="iris" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="6" height="6" rx="1.3"></rect><rect x="11" y="3" width="6" height="6" rx="1.3"></rect><rect x="3" y="11" width="6" height="6" rx="1.3"></rect><rect x="11" y="11" width="6" height="6" rx="1.3"></rect></g></svg></span><span class="gb-svc__name">GemBoss</span><span class="gb-svc__purpose">The seller app and the ops console.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-build"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-build">Build the store</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemfactory.ops.gemboss.ai" data-tint="blue" aria-current="page" tabindex="0"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3 17 6.8 10 10.6 3 6.8z"></path><path d="M3 10.1l7 3.8 7-3.8"></path><path d="M3 13.4l7 3.8 7-3.8"></path></g></svg></span><span class="gb-svc__name">GemFactory</span><span class="gb-svc__purpose">Review sections, elements and templates.</span></a></li><li><a class="gb-svc__tile" href="https://media.gemboss.ai" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.8"></rect><circle cx="7.3" cy="7.8" r="1.3"></circle><path d="M3.5 15l4.2-4.2 3 3 2.2-2.2 3.6 3.6"></path></g></svg></span><span class="gb-svc__name">GemMedia</span><span class="gb-svc__purpose">Images and videos made for stores, and their cost.</span></a></li><li><a class="gb-svc__tile" href="https://gemform.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 2.8h6.8l3.2 3.2v11.2H5z"></path><path d="M11.8 2.8V6H15M7.5 10h5M7.5 13h5"></path></g></svg></span><span class="gb-svc__name">GemForm</span><span class="gb-svc__purpose">Form submissions from stores.</span></a></li><li><a class="gb-svc__tile" href="https://x.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h14M3 10h14M3 15h14"></path><circle cx="7" cy="5" r="1.6"></circle><circle cx="13" cy="10" r="1.6"></circle><circle cx="9" cy="15" r="1.6"></circle></g></svg></span><span class="gb-svc__name">GemX</span><span class="gb-svc__purpose">Tests and personalization across every store.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-market"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-market">Read the market</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://gemwatcher.ops.gemboss.ai" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1.8 10S4.7 4.8 10 4.8 18.2 10 18.2 10 15.3 15.2 10 15.2 1.8 10 1.8 10z"></path><circle cx="10" cy="10" r="2.5"></circle></g></svg></span><span class="gb-svc__name">GemWatcher</span><span class="gb-svc__purpose">Store and market intelligence.</span></a></li><li><a class="gb-svc__tile" href="https://market.gemboss.ai" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gb-svc__name">GemMarket</span><span class="gb-svc__purpose">Each store&#x27;s market read and its competitors.</span></a></li><li><a class="gb-svc__tile" href="https://pixel.gemboss.ai" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2.5 10h3l2-5 3 10 2-5h5"></path></g></svg></span><span class="gb-svc__name">GemPixel</span><span class="gb-svc__purpose">Events every store sends, and whether they add up.</span></a></li><li><a class="gb-svc__tile" href="https://capture.gemboss.ai/admin" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="3.5" width="15" height="13" rx="2"></rect><path d="M2.5 7.5h15M6 11h8M6 13.5h5"></path></g></svg></span><span class="gb-svc__name">GemCapture</span><span class="gb-svc__purpose">Page captures and visual checks.</span></a></li><li><a class="gb-svc__tile" href="https://search-radar.ops.gemboss.ai" data-tint="amber" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Search Radar</span><span class="gb-svc__purpose">Rankings on the App Store, Google and AI answers.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-content"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-content">Content and community</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://press.gemboss.ai/admin" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="1.5"></rect><path d="M6 7h8M6 10h8M6 13h5"></path></g></svg></span><span class="gb-svc__name">GemPress</span><span class="gb-svc__purpose">Articles and the content store.</span></a></li><li><a class="gb-svc__tile" href="https://content-radar.ops.gemboss.ai" data-tint="teal" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="7"></circle><circle cx="10" cy="10" r="3.5"></circle><path d="M10 10l5-5"></path></g></svg></span><span class="gb-svc__name">Content Radar</span><span class="gb-svc__purpose">From the topics worth writing to articles.</span></a></li><li><a class="gb-svc__tile" href="https://community.gemboss.ai/admin" data-tint="blue" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg></span><span class="gb-svc__name">GemCommunity</span><span class="gb-svc__purpose">The seller community.</span></a></li><li><a class="gb-svc__tile" href="https://news.gemboss.ai/admin" data-tint="rose" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 8v4h3l6 4V4L6 8H3z"></path><path d="M15 7.5a3.5 3.5 0 0 1 0 5"></path></g></svg></span><span class="gb-svc__name">GemCommunity News</span><span class="gb-svc__purpose">News posts and how they are read.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-customers"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-customers">Customers</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://care.gemboss.ai/inbox" data-tint="green" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gb-svc__name">GemCare</span><span class="gb-svc__purpose">The customer care inbox.</span></a></li><li><a class="gb-svc__tile" href="https://feedback.gemboss.ai/admin" data-tint="violet" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 11l2-7h10l2 7v5H3z"></path><path d="M3 11h4l1 2h4l1-2h4"></path></g></svg></span><span class="gb-svc__name">GemFeedback</span><span class="gb-svc__purpose">The feedback backlog.</span></a></li></ul></div><div class="gb-svc__group" role="group" aria-labelledby=":c62-Rkj:svc-team"><h3 class="gb-svc__heading" id=":c62-Rkj:svc-team">Team and partners</h3><ul class="gb-svc__grid" role="list"><li><a class="gb-svc__tile" href="https://partner-radar.ops.gemboss.ai" data-tint="orange" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.6 11.4a3 3 0 0 0 4.2 0l2.6-2.6a3 3 0 0 0-4.2-4.2l-1 1"></path><path d="M11.4 8.6a3 3 0 0 0-4.2 0l-2.6 2.6a3 3 0 0 0 4.2 4.2l1-1"></path></g></svg></span><span class="gb-svc__name">Partner Radar</span><span class="gb-svc__purpose">Partners and agencies, as a CRM.</span></a></li><li><a class="gb-svc__tile" href="https://gemlabs-taskdesk-production.up.railway.app" data-tint="slate" tabindex="-1"><span class="gb-svc__mark" aria-hidden="true"><svg viewBox="0 0 20 20" width="22" height="22" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 5h9M8 10h9M8 15h9"></path><circle cx="4" cy="5" r=".9"></circle><circle cx="4" cy="10" r=".9"></circle><circle cx="4" cy="15" r=".9"></circle></g></svg></span><span class="gb-svc__name">Taskdesk</span><span class="gb-svc__purpose">Every job the fleet is running.</span></a></li></ul></div></div><div class="gb-svc__foot"><a class="gb-svc__all" href="https://gemfactory.ops.gemboss.ai/services">All services and their health<span aria-hidden="true">→</span></a></div></dialog></div><div class="gemboss-topbar-center"><form role="search" method="get" action="#" class="gemboss-topbar-search"><svg viewBox="0 0 20 20" width="18" height="18" class="gemboss-topbar-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gemboss-topbar-search-input" type="search" name="q" placeholder="Search by #ID, name or key" aria-label="Search by #ID, name or key" autoComplete="off" enterKeyHint="search"/><kbd class="gemboss-topbar-search-kbd" aria-hidden="true">⌘K</kbd></form></div><div class="gemboss-topbar-end"><details class="gb-account"><summary class="gemboss-account-chip" aria-label="Account · Minh Anh" title="Minh Anh">MA</summary><div role="menu" class="gemboss-popover-surface gemboss-account-menu"><div class="gb-account-head"><div class="gb-account-name">Minh Anh</div><div class="gb-account-email">ma@gemboss.ai</div><div class="gb-account-role">Designer</div></div><a role="menuitem" class="gemboss-account-menu-item" href="#">Cài đặt</a><form method="post" action="#" class="gb-account-form"><button role="menuitem" type="submit" class="gemboss-account-menu-item danger">Đăng xuất</button></form></div></details></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c62-R0:"><div class="gnav-scroll"><div class="gnav-heading">Kho</div><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3.5" y="3" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="8.25" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="13.5" width="13" height="3.5" rx="1"></rect></g></svg></span><span class="gnav-label">Ghép trang</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3.2 17.3 16H2.7z"></path><path d="M10 8.2v3.6M10 13.9v.1"></path></g></svg></span><span class="gnav-label">Framework thiếu</span><span class="gnav-count" aria-label="3 mục đang mở">3</span></a></div></div><div class="gnav-bottom"><div class="gnav-sep"></div><a class="gnav-item gnav-assistant" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path></g></svg></span><span class="gnav-label">Trợ lý</span></a></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Đóng menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Nội dung màn</h1></div></main></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
5779
5779
|
<header class="gemboss-platform-topbar">
|
|
5780
5780
|
<div class="gemboss-topbar-start">
|
|
5781
5781
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Mở menu" aria-expanded="false" data-label-open="Mở menu" data-label-close="Đóng menu" aria-controls=":c62-R0:">
|
|
@@ -6303,7 +6303,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
6303
6303
|
</div>
|
|
6304
6304
|
</main>
|
|
6305
6305
|
</div></code></pre></details></figure></section>
|
|
6306
|
-
<section id="nav"><h2>Chờ điều hướng</h2><p>Bấm một mục rail là có phản hồi ở khung hình đầu tiên: icon thành spinner trong đúng ô 20px (chữ không xê dịch), mục con có spinner 12px ở phần thụt lề ngay trước chữ, con trỏ chờ. Một trạng thái, ba cách đặt: <code>RailItem pending</code> / <code>RailSubItem pending</code> (React, thành <code>aria-busy="true"</code>); <code>RailItem as={NavLink}</code> của <code>@gemboss/ui/next</code> (đọc <code>useLinkStatus</code> của Next, tải trước khi chuột hoặc focus bàn phím dừng 120 ms, hoặc khi chạm); trang HTML thuần nạp <code>kit-plain.js</code> là tự có, kể cả tải trước (speculation rules ở Chromium, không có thì <code><link rel="prefetch"></code>). Link trong nội dung trang thêm <code>data-gb-pending</code> ("inline" hoặc "corner").</p><figure class="cat-demo cat-screen"><figcaption>RailItem pending + RailSubItem pending</figcaption><iframe title="RailItem pending + RailSubItem pending" style="height:300px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c63-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c63-R0:"><div class="gnav-scroll"><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div><div class="gnav-group"><a class="gnav-item" aria-busy="true" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3.5" y="3" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="8.25" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="13.5" width="13" height="3.5" rx="1"></rect></g></svg></span><span class="gnav-label">Ghép trang (đang mở)</span></a></div><div class="gnav-group active has-active-child"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gnav-label">Báo cáo</span></a><ul class="gnav-sub"><li><a class="gnav-subitem active" aria-current="page" href="#">Tổng quan</a></li><li><a class="gnav-subitem" aria-busy="true" href="#">Theo kênh (đang mở)</a></li></ul></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Tổng quan</h1></div></main></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6306
|
+
<section id="nav"><h2>Chờ điều hướng</h2><p>Bấm một mục rail là có phản hồi ở khung hình đầu tiên: icon thành spinner trong đúng ô 20px (chữ không xê dịch), mục con có spinner 12px ở phần thụt lề ngay trước chữ, con trỏ chờ. Một trạng thái, ba cách đặt: <code>RailItem pending</code> / <code>RailSubItem pending</code> (React, thành <code>aria-busy="true"</code>); <code>RailItem as={NavLink}</code> của <code>@gemboss/ui/next</code> (đọc <code>useLinkStatus</code> của Next, tải trước khi chuột hoặc focus bàn phím dừng 120 ms, hoặc khi chạm); trang HTML thuần nạp <code>kit-plain.js</code> là tự có, kể cả tải trước (speculation rules ở Chromium, không có thì <code><link rel="prefetch"></code>). Link trong nội dung trang thêm <code>data-gb-pending</code> ("inline" hoặc "corner").</p><figure class="cat-demo cat-screen"><figcaption>RailItem pending + RailSubItem pending</figcaption><iframe title="RailItem pending + RailSubItem pending" style="height:300px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c63-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c63-R0:"><div class="gnav-scroll"><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div><div class="gnav-group"><a class="gnav-item" aria-busy="true" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3.5" y="3" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="8.25" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="13.5" width="13" height="3.5" rx="1"></rect></g></svg></span><span class="gnav-label">Ghép trang (đang mở)</span></a></div><div class="gnav-group active has-active-child"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 16.5h14"></path><rect x="4.5" y="9" width="2.8" height="5.5" rx=".7"></rect><rect x="8.6" y="5" width="2.8" height="9.5" rx=".7"></rect><rect x="12.7" y="11" width="2.8" height="3.5" rx=".7"></rect></g></svg></span><span class="gnav-label">Báo cáo</span></a><ul class="gnav-sub"><li><a class="gnav-subitem active" aria-current="page" href="#">Tổng quan</a></li><li><a class="gnav-subitem" aria-busy="true" href="#">Theo kênh (đang mở)</a></li></ul></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div style="padding:24px"><h1 style="margin:0">Tổng quan</h1></div></main></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6307
6307
|
<header class="gemboss-platform-topbar">
|
|
6308
6308
|
<div class="gemboss-topbar-start">
|
|
6309
6309
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c63-R0:">
|
|
@@ -6423,7 +6423,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
6423
6423
|
</span>
|
|
6424
6424
|
</div>
|
|
6425
6425
|
</div></code></pre></details></figure></section>
|
|
6426
|
-
<section id="page"><h2>Bề rộng nội dung</h2><p>Rail bên trái, bên phải là một cột có bề rộng tối đa theo bậc của admin: <code>ui-page</code> 900px (<code>--ui-content-max</code>: danh sách, bảng, lưới card, dashboard), <code>--feed</code> 720, <code>--form</code> 662, <code>--canvas</code> 1440 (chỉ khi nội dung đo được là rộng hơn một cột chữ), <code>--full</code> không giới hạn (board, editor; ghi lý do). React: một <code>PageContainer width="form"</code> ngay trong <code>AppShell</code>. Một cap chỉ có tác dụng khi nó NHỎ HƠN chỗ trống thật: ở 1280 chỗ trống là 992. Hai khung dưới vẽ ở 1440, kéo ngang để xem hết.</p><figure class="cat-demo cat-screen"><figcaption>PageContainer width="default" ở 1440: cột 900</figcaption><div class="cat-wide"><iframe title="PageContainer width="default" ở 1440: cột 900" style="height:300px;width:1440px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c65-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c65-R0:"><div class="gnav-scroll"><div class="gnav-heading">Kho</div><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3.5" y="3" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="8.25" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="13.5" width="13" height="3.5" rx="1"></rect></g></svg></span><span class="gnav-label">Ghép trang</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3.2 17.3 16H2.7z"></path><path d="M10 8.2v3.6M10 13.9v.1"></path></g></svg></span><span class="gnav-label">Framework thiếu</span><span class="gnav-count" aria-label="3 mục đang mở">3</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div class="ui-page"><h1 style="margin:0 0 16px">Board</h1><div class="ui-card"><div class="ui-card__title">#412 Hero split</div><p class="ui-muted">Cột 900px, căn giữa trong chỗ trống bên phải rail.</p></div></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6426
|
+
<section id="page"><h2>Bề rộng nội dung</h2><p>Rail bên trái, bên phải là một cột có bề rộng tối đa theo bậc của admin: <code>ui-page</code> 900px (<code>--ui-content-max</code>: danh sách, bảng, lưới card, dashboard), <code>--feed</code> 720, <code>--form</code> 662, <code>--canvas</code> 1440 (chỉ khi nội dung đo được là rộng hơn một cột chữ), <code>--full</code> không giới hạn (board, editor; ghi lý do). React: một <code>PageContainer width="form"</code> ngay trong <code>AppShell</code>. Một cap chỉ có tác dụng khi nó NHỎ HƠN chỗ trống thật: ở 1280 chỗ trống là 992. Hai khung dưới vẽ ở 1440, kéo ngang để xem hết.</p><figure class="cat-demo cat-screen"><figcaption>PageContainer width="default" ở 1440: cột 900</figcaption><div class="cat-wide"><iframe title="PageContainer width="default" ở 1440: cột 900" style="height:300px;width:1440px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c65-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c65-R0:"><div class="gnav-scroll"><div class="gnav-heading">Kho</div><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3.5" y="3" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="8.25" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="13.5" width="13" height="3.5" rx="1"></rect></g></svg></span><span class="gnav-label">Ghép trang</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3.2 17.3 16H2.7z"></path><path d="M10 8.2v3.6M10 13.9v.1"></path></g></svg></span><span class="gnav-label">Framework thiếu</span><span class="gnav-count" aria-label="3 mục đang mở">3</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div class="ui-page"><h1 style="margin:0 0 16px">Board</h1><div class="ui-card"><div class="ui-card__title">#412 Hero split</div><p class="ui-muted">Cột 900px, căn giữa trong chỗ trống bên phải rail.</p></div></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6427
6427
|
<header class="gemboss-platform-topbar">
|
|
6428
6428
|
<div class="gemboss-topbar-start">
|
|
6429
6429
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c65-R0:">
|
|
@@ -6517,7 +6517,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
6517
6517
|
</div>
|
|
6518
6518
|
</div>
|
|
6519
6519
|
</main>
|
|
6520
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>PageContainer width="form" ở 1440: cột 662</figcaption><div class="cat-wide"><iframe title="PageContainer width="form" ở 1440: cột 662" style="height:300px;width:1440px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c66-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c66-R0:"><div class="gnav-scroll"><div class="gnav-heading">Kho</div><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3.5" y="3" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="8.25" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="13.5" width="13" height="3.5" rx="1"></rect></g></svg></span><span class="gnav-label">Ghép trang</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3.2 17.3 16H2.7z"></path><path d="M10 8.2v3.6M10 13.9v.1"></path></g></svg></span><span class="gnav-label">Framework thiếu</span><span class="gnav-count" aria-label="3 mục đang mở">3</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div class="ui-page ui-page--form"><h1 style="margin:0 0 16px">Settings</h1><div class="ui-card" style="display:grid;gap:6px"><label for="cat-pw-name">Tên hiển thị</label><input id="cat-pw-name" class="gemboss-field" value="Minh Anh"></div></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6520
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>PageContainer width="form" ở 1440: cột 662</figcaption><div class="cat-wide"><iframe title="PageContainer width="form" ở 1440: cột 662" style="height:300px;width:1440px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c66-R0:"><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true"><path d="M3 5.5h14M3 10h14M3 14.5h14" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"></path></svg></button><a class="gb-brand" href="#" aria-label="GemFactory home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFactory</span></a></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"></div></header><nav class="icon-nav" aria-label="Main navigation" id=":c66-R0:"><div class="gnav-scroll"><div class="gnav-heading">Kho</div><div class="gnav-group active"><a class="gnav-item active" aria-current="page" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="4" height="13" rx="1.2"></rect><rect x="8" y="3.5" width="4" height="9" rx="1.2"></rect><rect x="13" y="3.5" width="4" height="6" rx="1.2"></rect></g></svg></span><span class="gnav-label">Board</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3.5" y="3" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="8.25" width="13" height="3.5" rx="1"></rect><rect x="3.5" y="13.5" width="13" height="3.5" rx="1"></rect></g></svg></span><span class="gnav-label">Ghép trang</span></a></div><div class="gnav-group"><a class="gnav-item" href="#"><span class="gnav-ico"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3.2 17.3 16H2.7z"></path><path d="M10 8.2v3.6M10 13.9v.1"></path></g></svg></span><span class="gnav-label">Framework thiếu</span><span class="gnav-count" aria-label="3 mục đang mở">3</span></a></div></div></nav><button type="button" class="gemboss-mobile-nav-backdrop" aria-label="Close menu" tabindex="-1"></button><main class="gemboss-platform-main"><div class="ui-page ui-page--form"><h1 style="margin:0 0 16px">Settings</h1><div class="ui-card" style="display:grid;gap:6px"><label for="cat-pw-name">Tên hiển thị</label><input id="cat-pw-name" class="gemboss-field" value="Minh Anh"></div></div></main></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6521
6521
|
<header class="gemboss-platform-topbar">
|
|
6522
6522
|
<div class="gemboss-topbar-start">
|
|
6523
6523
|
<button type="button" class="gemboss-mobile-menu-btn" aria-label="Open menu" aria-expanded="false" data-label-open="Open menu" data-label-close="Close menu" aria-controls=":c66-R0:">
|
|
@@ -6614,7 +6614,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
6614
6614
|
</div></code></pre></details></figure><figure class="cat-demo"><figcaption>HTML thuần: một lớp bọc là con đầu tiên của main</figcaption><div class="cat-live"><div class="ui-page ui-page--feed"><div class="ui-card">Một mục trong feed, cột 720px.</div></div></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="ui-page ui-page--feed">
|
|
6615
6615
|
<div class="ui-card">Một mục trong feed, cột 720px.</div>
|
|
6616
6616
|
</div></code></pre></details></figure></section>
|
|
6617
|
-
<section id="portal"><h2>Cổng công khai: tab trên topbar, tìm kiếm, sáng / tối, người dẫn đầu</h2><p>Cho bề mặt công khai kiểu bảng Featurebase (GemFeedback) và cộng đồng (GemCommunity). <code>TopbarNav</code> đặt tab mục ngay trên topbar cạnh logo; <code>SearchDialog</code> là popup tìm (⌘K, gõ là ra); <code>ThemeToggle</code> + <code>themeScript</code> bật bảng màu tối (chỉ đổi token, mọi class theo); <code>Avatar</code> ảnh hoặc chữ viết tắt trên một tông lấy theo tên; <code>Leaderboard</code> huy chương 1–3 rồi thứ hạng; <code>Podium</code> ba người đầu.</p><figure class="cat-demo cat-screen"><figcaption>TopbarNav + SearchDialog + ThemeToggle, sáng</figcaption><iframe title="TopbarNav + SearchDialog + ThemeToggle, sáng" style="height:360px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><a class="gb-brand" href="/" aria-label="GemFeedback home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFeedback</span></a><nav class="gb-topnav" aria-label="Sections"><div class="gb-topnav-row"><a href="#portal" class="gb-topnav-link" aria-current="page">Feedback</a><a href="#portal" class="gb-topnav-link">Roadmap</a><a href="#portal" class="gb-topnav-link">Changelog</a></div><details class="gb-topnav-fold"><summary class="gb-topnav-link gb-topnav-fold-btn" aria-current="page">Feedback<svg class="gb-topnav-chevron" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="M3 4.5 6 7.5 9 4.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path></svg></summary><div class="gb-topnav-pop gemboss-popover-surface"><a href="#portal" class="gb-topnav-item" aria-current="page">Feedback</a><a href="#portal" class="gb-topnav-item">Roadmap</a><a href="#portal" class="gb-topnav-item">Changelog</a></div></details></nav></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"><a class="gb-search-trigger" href="#portal" aria-label="Search" aria-haspopup="dialog"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg></a><dialog class="ui-modal gb-search" aria-label="Search"><div class="gb-search-box"><svg viewBox="0 0 20 20" width="18" height="18" class="gb-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gb-search-input" type="search" placeholder="Search…" aria-label="Search" role="combobox" aria-expanded="true" aria-controls=":c69-Rt:" autoComplete="off" value=""/></div><p class="gb-search-empty" aria-live="polite"></p><div class="gb-search-results" id=":c69-Rt:" role="listbox" aria-busy="false"></div><div class="gb-search-foot" aria-hidden="true"><span>↵ open</span><span>↑↓ move</span><span>esc</span></div></dialog><button type="button" class="gb-theme-toggle" aria-label="Switch to dark mode" title="Switch to dark mode"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.6 12.4A6.2 6.2 0 0 1 7.6 4.4a6.2 6.2 0 1 0 8 8Z"></path></g></svg></button><a class="ui-btn ui-btn--primary" href="#portal">Sign in</a></div></header><div><div style="padding:72px 24px 24px;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px"><div class="ui-card"><b>Have something to say?</b><p class="ui-muted">Tell us what to build next.</p></div><section class="gb-leaderboard" aria-labelledby="gb-lb-most-helpful-1wqxo9r"><h2 class="gb-leaderboard-title" id="gb-lb-most-helpful-1wqxo9r">Most helpful</h2><p class="gb-leaderboard-caption">By votes on their comments.</p><ol class="gb-leaderboard-list"><li class="gb-leaderboard-row is-first"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥇</span><span class="gb-sr-only">Rank 1: </span></span><span class="gb-avatar gb-avatar--24" data-tone="2" aria-hidden="true">LN</span><span class="gb-leaderboard-name">Lucas Nguyen</span><span class="gb-leaderboard-value">163<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥈</span><span class="gb-sr-only">Rank 2: </span></span><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">DC</span><span class="gb-leaderboard-name">Dima Chernyshov</span><span class="gb-leaderboard-value">56<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥉</span><span class="gb-sr-only">Rank 3: </span></span><span class="gb-avatar gb-avatar--24" data-tone="5" aria-hidden="true">AR</span><span class="gb-leaderboard-name">Artjom</span><span class="gb-leaderboard-value">55<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank is-number"><span aria-hidden="true">4</span><span class="gb-sr-only">Rank 4: </span></span><span class="gb-avatar gb-avatar--24" data-tone="4" aria-hidden="true">GU</span><span class="gb-leaderboard-name">GutBrush</span><span class="gb-leaderboard-value">34<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank is-number"><span aria-hidden="true">5</span><span class="gb-sr-only">Rank 5: </span></span><span class="gb-avatar gb-avatar--24" data-tone="5" aria-hidden="true">WO</span><span class="gb-leaderboard-name">Wondercraft</span><span class="gb-leaderboard-value">30<span class="gb-sr-only"> votes</span></span></a></li></ol></section></div></div></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6617
|
+
<section id="portal"><h2>Cổng công khai: tab trên topbar, tìm kiếm, sáng / tối, người dẫn đầu</h2><p>Cho bề mặt công khai kiểu bảng Featurebase (GemFeedback) và cộng đồng (GemCommunity). <code>TopbarNav</code> đặt tab mục ngay trên topbar cạnh logo; <code>SearchDialog</code> là popup tìm (⌘K, gõ là ra); <code>ThemeToggle</code> + <code>themeScript</code> bật bảng màu tối (chỉ đổi token, mọi class theo); <code>Avatar</code> ảnh hoặc chữ viết tắt trên một tông lấy theo tên; <code>Leaderboard</code> huy chương 1–3 rồi thứ hạng; <code>Podium</code> ba người đầu.</p><figure class="cat-demo cat-screen"><figcaption>TopbarNav + SearchDialog + ThemeToggle, sáng</figcaption><iframe title="TopbarNav + SearchDialog + ThemeToggle, sáng" style="height:360px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><a class="gb-brand" href="/" aria-label="GemFeedback home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFeedback</span></a><nav class="gb-topnav" aria-label="Sections"><div class="gb-topnav-row"><a href="#portal" class="gb-topnav-link" aria-current="page">Feedback</a><a href="#portal" class="gb-topnav-link">Roadmap</a><a href="#portal" class="gb-topnav-link">Changelog</a></div><details class="gb-topnav-fold"><summary class="gb-topnav-link gb-topnav-fold-btn" aria-current="page"><span class="gb-topnav-fold-label">Feedback</span><svg class="gb-topnav-chevron" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="M3 4.5 6 7.5 9 4.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path></svg></summary><div class="gb-topnav-pop gemboss-popover-surface"><a href="#portal" class="gb-topnav-item" aria-current="page">Feedback</a><a href="#portal" class="gb-topnav-item">Roadmap</a><a href="#portal" class="gb-topnav-item">Changelog</a></div></details></nav></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"><a class="gb-search-trigger" href="#portal" aria-label="Search" aria-haspopup="dialog"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg></a><dialog class="ui-modal gb-search" aria-label="Search"><div class="gb-search-box"><svg viewBox="0 0 20 20" width="18" height="18" class="gb-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gb-search-input" type="search" placeholder="Search…" aria-label="Search" role="combobox" aria-expanded="true" aria-controls=":c69-Rt:" autoComplete="off" value=""/></div><p class="gb-search-empty" aria-live="polite"></p><div class="gb-search-results" id=":c69-Rt:" role="listbox" aria-busy="false"></div><div class="gb-search-foot" aria-hidden="true"><span>↵ open</span><span>↑↓ move</span><span>esc</span></div></dialog><button type="button" class="gb-theme-toggle" aria-label="Switch to dark mode" title="Switch to dark mode"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.6 12.4A6.2 6.2 0 0 1 7.6 4.4a6.2 6.2 0 1 0 8 8Z"></path></g></svg></button><a class="ui-btn ui-btn--primary" href="#portal">Sign in</a></div></header><div><div style="padding:72px 24px 24px;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px"><div class="ui-card"><b>Have something to say?</b><p class="ui-muted">Tell us what to build next.</p></div><section class="gb-leaderboard" aria-labelledby="gb-lb-most-helpful-1wqxo9r"><h2 class="gb-leaderboard-title" id="gb-lb-most-helpful-1wqxo9r">Most helpful</h2><p class="gb-leaderboard-caption">By votes on their comments.</p><ol class="gb-leaderboard-list"><li class="gb-leaderboard-row is-first"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥇</span><span class="gb-sr-only">Rank 1: </span></span><span class="gb-avatar gb-avatar--24" data-tone="2" aria-hidden="true">LN</span><span class="gb-leaderboard-name">Lucas Nguyen</span><span class="gb-leaderboard-value">163<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥈</span><span class="gb-sr-only">Rank 2: </span></span><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">DC</span><span class="gb-leaderboard-name">Dima Chernyshov</span><span class="gb-leaderboard-value">56<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥉</span><span class="gb-sr-only">Rank 3: </span></span><span class="gb-avatar gb-avatar--24" data-tone="5" aria-hidden="true">AR</span><span class="gb-leaderboard-name">Artjom</span><span class="gb-leaderboard-value">55<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank is-number"><span aria-hidden="true">4</span><span class="gb-sr-only">Rank 4: </span></span><span class="gb-avatar gb-avatar--24" data-tone="4" aria-hidden="true">GU</span><span class="gb-leaderboard-name">GutBrush</span><span class="gb-leaderboard-value">34<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank is-number"><span aria-hidden="true">5</span><span class="gb-sr-only">Rank 5: </span></span><span class="gb-avatar gb-avatar--24" data-tone="5" aria-hidden="true">WO</span><span class="gb-leaderboard-name">Wondercraft</span><span class="gb-leaderboard-value">30<span class="gb-sr-only"> votes</span></span></a></li></ol></section></div></div></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6618
6618
|
<header class="gemboss-platform-topbar">
|
|
6619
6619
|
<div class="gemboss-topbar-start">
|
|
6620
6620
|
<a class="gb-brand" href="/" aria-label="GemFeedback home">
|
|
@@ -6637,7 +6637,9 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
6637
6637
|
<a href="#portal" class="gb-topnav-link">Changelog</a>
|
|
6638
6638
|
</div>
|
|
6639
6639
|
<details class="gb-topnav-fold">
|
|
6640
|
-
<summary class="gb-topnav-link gb-topnav-fold-btn" aria-current="page">
|
|
6640
|
+
<summary class="gb-topnav-link gb-topnav-fold-btn" aria-current="page">
|
|
6641
|
+
<span class="gb-topnav-fold-label">Feedback</span>
|
|
6642
|
+
<svg class="gb-topnav-chevron" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false">
|
|
6641
6643
|
<path d="M3 4.5 6 7.5 9 4.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
|
|
6642
6644
|
</path>
|
|
6643
6645
|
</svg>
|
|
@@ -6770,7 +6772,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
6770
6772
|
</section>
|
|
6771
6773
|
</div>
|
|
6772
6774
|
</div>
|
|
6773
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Cùng trang, tối (data-theme="dark")</figcaption><iframe title="Cùng trang, tối (data-theme="dark")" style="height:360px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><a class="gb-brand" href="/" aria-label="GemFeedback home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFeedback</span></a><nav class="gb-topnav" aria-label="Sections"><div class="gb-topnav-row"><a href="#portal" class="gb-topnav-link" aria-current="page">Feedback</a><a href="#portal" class="gb-topnav-link">Roadmap</a><a href="#portal" class="gb-topnav-link">Changelog</a></div><details class="gb-topnav-fold"><summary class="gb-topnav-link gb-topnav-fold-btn" aria-current="page">Feedback<svg class="gb-topnav-chevron" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="M3 4.5 6 7.5 9 4.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path></svg></summary><div class="gb-topnav-pop gemboss-popover-surface"><a href="#portal" class="gb-topnav-item" aria-current="page">Feedback</a><a href="#portal" class="gb-topnav-item">Roadmap</a><a href="#portal" class="gb-topnav-item">Changelog</a></div></details></nav></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"><a class="gb-search-trigger" href="#portal" aria-label="Search" aria-haspopup="dialog"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg></a><dialog class="ui-modal gb-search" aria-label="Search"><div class="gb-search-box"><svg viewBox="0 0 20 20" width="18" height="18" class="gb-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gb-search-input" type="search" placeholder="Search…" aria-label="Search" role="combobox" aria-expanded="true" aria-controls=":c69-Rt:" autoComplete="off" value=""/></div><p class="gb-search-empty" aria-live="polite"></p><div class="gb-search-results" id=":c69-Rt:" role="listbox" aria-busy="false"></div><div class="gb-search-foot" aria-hidden="true"><span>↵ open</span><span>↑↓ move</span><span>esc</span></div></dialog><button type="button" class="gb-theme-toggle" aria-label="Switch to dark mode" title="Switch to dark mode"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.6 12.4A6.2 6.2 0 0 1 7.6 4.4a6.2 6.2 0 1 0 8 8Z"></path></g></svg></button><a class="ui-btn ui-btn--primary" href="#portal">Sign in</a></div></header><div><div style="padding:72px 24px 24px;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px"><div class="ui-card"><b>Have something to say?</b><p class="ui-muted">Tell us what to build next.</p></div><section class="gb-leaderboard" aria-labelledby="gb-lb-most-helpful-1wqxo9r"><h2 class="gb-leaderboard-title" id="gb-lb-most-helpful-1wqxo9r">Most helpful</h2><p class="gb-leaderboard-caption">By votes on their comments.</p><ol class="gb-leaderboard-list"><li class="gb-leaderboard-row is-first"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥇</span><span class="gb-sr-only">Rank 1: </span></span><span class="gb-avatar gb-avatar--24" data-tone="2" aria-hidden="true">LN</span><span class="gb-leaderboard-name">Lucas Nguyen</span><span class="gb-leaderboard-value">163<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥈</span><span class="gb-sr-only">Rank 2: </span></span><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">DC</span><span class="gb-leaderboard-name">Dima Chernyshov</span><span class="gb-leaderboard-value">56<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥉</span><span class="gb-sr-only">Rank 3: </span></span><span class="gb-avatar gb-avatar--24" data-tone="5" aria-hidden="true">AR</span><span class="gb-leaderboard-name">Artjom</span><span class="gb-leaderboard-value">55<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank is-number"><span aria-hidden="true">4</span><span class="gb-sr-only">Rank 4: </span></span><span class="gb-avatar gb-avatar--24" data-tone="4" aria-hidden="true">GU</span><span class="gb-leaderboard-name">GutBrush</span><span class="gb-leaderboard-value">34<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank is-number"><span aria-hidden="true">5</span><span class="gb-sr-only">Rank 5: </span></span><span class="gb-avatar gb-avatar--24" data-tone="5" aria-hidden="true">WO</span><span class="gb-leaderboard-name">Wondercraft</span><span class="gb-leaderboard-value">30<span class="gb-sr-only"> votes</span></span></a></li></ol></section></div></div></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6775
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Cùng trang, tối (data-theme="dark")</figcaption><iframe title="Cùng trang, tối (data-theme="dark")" style="height:360px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><div class="gemboss-platform-shell"><header class="gemboss-platform-topbar"><div class="gemboss-topbar-start"><a class="gb-brand" href="/" aria-label="GemFeedback home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemFeedback</span></a><nav class="gb-topnav" aria-label="Sections"><div class="gb-topnav-row"><a href="#portal" class="gb-topnav-link" aria-current="page">Feedback</a><a href="#portal" class="gb-topnav-link">Roadmap</a><a href="#portal" class="gb-topnav-link">Changelog</a></div><details class="gb-topnav-fold"><summary class="gb-topnav-link gb-topnav-fold-btn" aria-current="page"><span class="gb-topnav-fold-label">Feedback</span><svg class="gb-topnav-chevron" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="M3 4.5 6 7.5 9 4.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path></svg></summary><div class="gb-topnav-pop gemboss-popover-surface"><a href="#portal" class="gb-topnav-item" aria-current="page">Feedback</a><a href="#portal" class="gb-topnav-item">Roadmap</a><a href="#portal" class="gb-topnav-item">Changelog</a></div></details></nav></div><div class="gemboss-topbar-center"></div><div class="gemboss-topbar-end"><a class="gb-search-trigger" href="#portal" aria-label="Search" aria-haspopup="dialog"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg></a><dialog class="ui-modal gb-search" aria-label="Search"><div class="gb-search-box"><svg viewBox="0 0 20 20" width="18" height="18" class="gb-search-icon" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8.8" cy="8.8" r="5.3"></circle><path d="M12.8 12.8 17 17"></path></g></svg><input class="gb-search-input" type="search" placeholder="Search…" aria-label="Search" role="combobox" aria-expanded="true" aria-controls=":c69-Rt:" autoComplete="off" value=""/></div><p class="gb-search-empty" aria-live="polite"></p><div class="gb-search-results" id=":c69-Rt:" role="listbox" aria-busy="false"></div><div class="gb-search-foot" aria-hidden="true"><span>↵ open</span><span>↑↓ move</span><span>esc</span></div></dialog><button type="button" class="gb-theme-toggle" aria-label="Switch to dark mode" title="Switch to dark mode"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.6 12.4A6.2 6.2 0 0 1 7.6 4.4a6.2 6.2 0 1 0 8 8Z"></path></g></svg></button><a class="ui-btn ui-btn--primary" href="#portal">Sign in</a></div></header><div><div style="padding:72px 24px 24px;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px"><div class="ui-card"><b>Have something to say?</b><p class="ui-muted">Tell us what to build next.</p></div><section class="gb-leaderboard" aria-labelledby="gb-lb-most-helpful-1wqxo9r"><h2 class="gb-leaderboard-title" id="gb-lb-most-helpful-1wqxo9r">Most helpful</h2><p class="gb-leaderboard-caption">By votes on their comments.</p><ol class="gb-leaderboard-list"><li class="gb-leaderboard-row is-first"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥇</span><span class="gb-sr-only">Rank 1: </span></span><span class="gb-avatar gb-avatar--24" data-tone="2" aria-hidden="true">LN</span><span class="gb-leaderboard-name">Lucas Nguyen</span><span class="gb-leaderboard-value">163<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥈</span><span class="gb-sr-only">Rank 2: </span></span><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">DC</span><span class="gb-leaderboard-name">Dima Chernyshov</span><span class="gb-leaderboard-value">56<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank"><span aria-hidden="true">🥉</span><span class="gb-sr-only">Rank 3: </span></span><span class="gb-avatar gb-avatar--24" data-tone="5" aria-hidden="true">AR</span><span class="gb-leaderboard-name">Artjom</span><span class="gb-leaderboard-value">55<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank is-number"><span aria-hidden="true">4</span><span class="gb-sr-only">Rank 4: </span></span><span class="gb-avatar gb-avatar--24" data-tone="4" aria-hidden="true">GU</span><span class="gb-leaderboard-name">GutBrush</span><span class="gb-leaderboard-value">34<span class="gb-sr-only"> votes</span></span></a></li><li class="gb-leaderboard-row"><a href="#portal" class="gb-leaderboard-link"><span class="gb-leaderboard-rank is-number"><span aria-hidden="true">5</span><span class="gb-sr-only">Rank 5: </span></span><span class="gb-avatar gb-avatar--24" data-tone="5" aria-hidden="true">WO</span><span class="gb-leaderboard-name">Wondercraft</span><span class="gb-leaderboard-value">30<span class="gb-sr-only"> votes</span></span></a></li></ol></section></div></div></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-platform-shell">
|
|
6774
6776
|
<header class="gemboss-platform-topbar">
|
|
6775
6777
|
<div class="gemboss-topbar-start">
|
|
6776
6778
|
<a class="gb-brand" href="/" aria-label="GemFeedback home">
|
|
@@ -6793,7 +6795,9 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
6793
6795
|
<a href="#portal" class="gb-topnav-link">Changelog</a>
|
|
6794
6796
|
</div>
|
|
6795
6797
|
<details class="gb-topnav-fold">
|
|
6796
|
-
<summary class="gb-topnav-link gb-topnav-fold-btn" aria-current="page">
|
|
6798
|
+
<summary class="gb-topnav-link gb-topnav-fold-btn" aria-current="page">
|
|
6799
|
+
<span class="gb-topnav-fold-label">Feedback</span>
|
|
6800
|
+
<svg class="gb-topnav-chevron" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false">
|
|
6797
6801
|
<path d="M3 4.5 6 7.5 9 4.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
|
|
6798
6802
|
</path>
|
|
6799
6803
|
</svg>
|
|
@@ -7030,7 +7034,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
7030
7034
|
</a>
|
|
7031
7035
|
</li>
|
|
7032
7036
|
</ol></code></pre></details></figure></section>
|
|
7033
|
-
<section id="site"><h2>Trang công khai: thanh trên, logo cỡ site, nút, chân trang</h2><p>Lớp <code>site</code> (0.40.0) cho trang CÔNG KHAI: gemboss.ai, docs, news, trang chủ một sản phẩm. Trang trong app (admin, cổng sau đăng nhập) giữ <code>Topbar</code> + <code>BrandLockup</code>. Hai cỡ logo (Chris 20/10/2026): site 18px, app 13,3px; cùng một viên gem. Trang HTML tĩnh chép markup dưới đây và nạp <code>site.css</code> sau phần lõi.</p><figure class="cat-demo cat-screen"><figcaption>SiteHeader + SiteBrand + link + nút, sáng</figcaption><iframe title="SiteHeader + SiteBrand + link + nút, sáng" style="height:140px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><header class="gb-site-header"><div class="gb-site-header__in"><a class="gb-brand gb-brand--site" href="#site" aria-label="GemBoss home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemBoss</span></a><nav class="gb-site-nav" aria-label="Main"><a class="gb-site-link" href="#site" aria-current="page">Product</a><a class="gb-site-link" href="#site">Pricing</a><a class="gb-site-link" href="#site">Docs</a></nav><div class="gb-site-actions"><a class="gb-site-link" href="#site">Sign in</a><a class="gb-site-btn gb-site-btn--primary" href="#site">Start free</a></div></div></header></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><header class="gb-site-header">
|
|
7037
|
+
<section id="site"><h2>Trang công khai: thanh trên, logo cỡ site, nút, chân trang</h2><p>Lớp <code>site</code> (0.40.0) cho trang CÔNG KHAI: gemboss.ai, docs, news, trang chủ một sản phẩm. Trang trong app (admin, cổng sau đăng nhập) giữ <code>Topbar</code> + <code>BrandLockup</code>. Hai cỡ logo (Chris 20/10/2026): site 18px, app 13,3px; cùng một viên gem. Trang HTML tĩnh chép markup dưới đây và nạp <code>site.css</code> sau phần lõi.</p><figure class="cat-demo cat-screen"><figcaption>SiteHeader + SiteBrand + link + nút, sáng</figcaption><iframe title="SiteHeader + SiteBrand + link + nút, sáng" style="height:140px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><header class="gb-site-header"><div class="gb-site-header__in"><a class="gb-brand gb-brand--site" href="#site" aria-label="GemBoss home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemBoss</span></a><nav class="gb-site-nav" aria-label="Main"><a class="gb-site-link" href="#site" aria-current="page">Product</a><a class="gb-site-link" href="#site">Pricing</a><a class="gb-site-link" href="#site">Docs</a></nav><div class="gb-site-actions"><a class="gb-site-link" href="#site">Sign in</a><a class="gb-site-btn gb-site-btn--primary" href="#site">Start free</a></div></div></header></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><header class="gb-site-header">
|
|
7034
7038
|
<div class="gb-site-header__in">
|
|
7035
7039
|
<a class="gb-brand gb-brand--site" href="#site" aria-label="GemBoss home">
|
|
7036
7040
|
<svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false">
|
|
@@ -7055,7 +7059,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
7055
7059
|
<a class="gb-site-btn gb-site-btn--primary" href="#site">Start free</a>
|
|
7056
7060
|
</div>
|
|
7057
7061
|
</div>
|
|
7058
|
-
</header></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Cùng thanh, tối (data-theme="dark")</figcaption><iframe title="Cùng thanh, tối (data-theme="dark")" style="height:140px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><header class="gb-site-header"><div class="gb-site-header__in"><a class="gb-brand gb-brand--site" href="#site" aria-label="GemBoss home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemBoss</span></a><nav class="gb-site-nav" aria-label="Main"><a class="gb-site-link" href="#site" aria-current="page">Product</a><a class="gb-site-link" href="#site">Pricing</a><a class="gb-site-link" href="#site">Docs</a></nav><div class="gb-site-actions"><a class="gb-site-link" href="#site">Sign in</a><a class="gb-site-btn gb-site-btn--primary" href="#site">Start free</a></div></div></header></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><header class="gb-site-header">
|
|
7062
|
+
</header></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Cùng thanh, tối (data-theme="dark")</figcaption><iframe title="Cùng thanh, tối (data-theme="dark")" style="height:140px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><header class="gb-site-header"><div class="gb-site-header__in"><a class="gb-brand gb-brand--site" href="#site" aria-label="GemBoss home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemBoss</span></a><nav class="gb-site-nav" aria-label="Main"><a class="gb-site-link" href="#site" aria-current="page">Product</a><a class="gb-site-link" href="#site">Pricing</a><a class="gb-site-link" href="#site">Docs</a></nav><div class="gb-site-actions"><a class="gb-site-link" href="#site">Sign in</a><a class="gb-site-btn gb-site-btn--primary" href="#site">Start free</a></div></div></header></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><header class="gb-site-header">
|
|
7059
7063
|
<div class="gb-site-header__in">
|
|
7060
7064
|
<a class="gb-brand gb-brand--site" href="#site" aria-label="GemBoss home">
|
|
7061
7065
|
<svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false">
|
|
@@ -7110,7 +7114,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
7110
7114
|
</div></code></pre></details></figure><figure class="cat-demo"><figcaption>Nút: chính (gb-site-btn--primary) và phụ (gb-site-btn--secondary)</figcaption><div class="cat-live"><div class="cat-row"><a class="gb-site-btn gb-site-btn--primary" href="#site">Start free</a><a class="gb-site-btn gb-site-btn--secondary" href="#site">Book a demo</a></div></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="cat-row">
|
|
7111
7115
|
<a class="gb-site-btn gb-site-btn--primary" href="#site">Start free</a>
|
|
7112
7116
|
<a class="gb-site-btn gb-site-btn--secondary" href="#site">Book a demo</a>
|
|
7113
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Chân trang</figcaption><iframe title="Chân trang" style="height:360px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><footer class="gb-site-footer"><div class="gb-site-wrap"><div class="gb-site-footer__grid"><div><a class="gb-brand gb-brand--site" href="#site" aria-label="GemBoss home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemBoss</span></a><p>Every angle gets its own funnel.</p></div><div class="gb-site-footer__col"><h4>Product</h4><a href="#site">Adaptive funnels</a><a href="#site">Adaptive storefront</a><a href="#site">Pricing</a></div><div class="gb-site-footer__col"><h4>Resources</h4><a href="#site">Docs</a><a href="#site">Blog</a><a href="#site">Changelog</a></div><div class="gb-site-footer__col"><h4>Company</h4><a href="#site">About</a><a href="#site">Careers</a></div></div><div class="gb-site-footer__bottom"><span>© 2026 GemBoss</span><span><a href="#site">Terms</a> · <a href="#site">Privacy</a></span></div></div></footer></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><footer class="gb-site-footer">
|
|
7117
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Chân trang</figcaption><iframe title="Chân trang" style="height:360px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><footer class="gb-site-footer"><div class="gb-site-wrap"><div class="gb-site-footer__grid"><div><a class="gb-brand gb-brand--site" href="#site" aria-label="GemBoss home"><svg class="gb-brand-gem" viewBox="0 0 32 40" width="20.8" height="26" aria-hidden="true" focusable="false"><g transform="translate(0,0.8) scale(0.31)"><polygon points="26,14 74,14 66,50 34,50" fill="#5661F5" fill-opacity="0.92"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="currentColor" stroke-width="8.75" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="currentColor" stroke-width="5.45" stroke-linejoin="round"></path></g></svg><span class="gb-brand-name">GemBoss</span></a><p>Every angle gets its own funnel.</p></div><div class="gb-site-footer__col"><h4>Product</h4><a href="#site">Adaptive funnels</a><a href="#site">Adaptive storefront</a><a href="#site">Pricing</a></div><div class="gb-site-footer__col"><h4>Resources</h4><a href="#site">Docs</a><a href="#site">Blog</a><a href="#site">Changelog</a></div><div class="gb-site-footer__col"><h4>Company</h4><a href="#site">About</a><a href="#site">Careers</a></div></div><div class="gb-site-footer__bottom"><span>© 2026 GemBoss</span><span><a href="#site">Terms</a> · <a href="#site">Privacy</a></span></div></div></footer></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><footer class="gb-site-footer">
|
|
7114
7118
|
<div class="gb-site-wrap">
|
|
7115
7119
|
<div class="gb-site-footer__grid">
|
|
7116
7120
|
<div>
|
|
@@ -7155,7 +7159,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
7155
7159
|
</div>
|
|
7156
7160
|
</div>
|
|
7157
7161
|
</footer></code></pre></details></figure></section>
|
|
7158
|
-
<section id="auth"><h2>Đăng nhập</h2><p><code>backdrop</code> (0.30.0) chọn nền của panel thương hiệu: <code>"facet"</code> (mặc định, đường cắt của viên gem), <code>"grid"</code> (lưới iris mờ dần từ góc trên trái, nền của trang đăng nhập gemform), <code>"none"</code>. Panel chỉ hiện khi khung rộng 900 VÀ cao 520; hai khung dưới vẽ ở 1280.</p><figure class="cat-demo cat-screen"><figcaption>AuthLayout + PasswordField (backdrop mặc định: facet)</figcaption><div class="cat-wide"><iframe title="AuthLayout + PasswordField (backdrop mặc định: facet)" style="height:620px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><main class="gb-auth"><div class="gb-auth-split"><div class="gb-auth-stage"><div class="gb-auth-card"><header class="gb-auth-header"><span class="gb-auth-mark" aria-hidden="true"><svg viewBox="0 0 32 32" width="56" height="56" aria-hidden="true" focusable="false"><rect width="32" height="32" rx="7" style="fill:var(--gb-mark-bg)"></rect><g transform="translate(16,16) scale(0.24) translate(-50,-62)"><polygon points="26,14 74,14 66,50 34,50" fill="#8a93ff"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="#f4f4f2" stroke-width="5" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="#f4f4f2" stroke-opacity="0.72" stroke-width="3" stroke-linejoin="round"></path></g></svg></span><h1>GemFactory</h1><p>Kho section của GemBoss</p></header><form class="gb-auth-form" method="post" action="#"><div class="gb-auth-field"><label for="pw">Mật khẩu</label><div class="gb-auth-pw"><input class="gb-auth-input" id="pw" type="password"/><button type="button" aria-controls="pw" aria-label="Hiện" title="Hiện" data-label-show="Hiện" data-label-hide="Ẩn" class="gb-auth-pw-toggle"><svg width="18" height="18" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M1.5 10S4.6 4.5 10 4.5 18.5 10 18.5 10 15.4 15.5 10 15.5 1.5 10 1.5 10Z"></path><circle cx="10" cy="10" r="2.6"></circle></svg></button></div></div><button type="submit" class="gb-auth-submit">Đăng nhập</button></form></div></div><aside class="gb-auth-panel"><div class="gb-auth-panel-in"><p class="gb-auth-eyebrow">GemBoss</p><h2 class="gb-auth-panel-h">Một ngôn ngữ thiết kế cho mọi công cụ</h2><p class="gb-auth-panel-p">Đăng nhập bằng mật khẩu đội đã gửi riêng.</p></div></aside></div></main></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><main class="gb-auth">
|
|
7162
|
+
<section id="auth"><h2>Đăng nhập</h2><p><code>backdrop</code> (0.30.0) chọn nền của panel thương hiệu: <code>"facet"</code> (mặc định, đường cắt của viên gem), <code>"grid"</code> (lưới iris mờ dần từ góc trên trái, nền của trang đăng nhập gemform), <code>"none"</code>. Panel chỉ hiện khi khung rộng 900 VÀ cao 520; hai khung dưới vẽ ở 1280.</p><figure class="cat-demo cat-screen"><figcaption>AuthLayout + PasswordField (backdrop mặc định: facet)</figcaption><div class="cat-wide"><iframe title="AuthLayout + PasswordField (backdrop mặc định: facet)" style="height:620px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><main class="gb-auth"><div class="gb-auth-split"><div class="gb-auth-stage"><div class="gb-auth-card"><header class="gb-auth-header"><span class="gb-auth-mark" aria-hidden="true"><svg viewBox="0 0 32 32" width="56" height="56" aria-hidden="true" focusable="false"><rect width="32" height="32" rx="7" style="fill:var(--gb-mark-bg)"></rect><g transform="translate(16,16) scale(0.24) translate(-50,-62)"><polygon points="26,14 74,14 66,50 34,50" fill="#8a93ff"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="#f4f4f2" stroke-width="5" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="#f4f4f2" stroke-opacity="0.72" stroke-width="3" stroke-linejoin="round"></path></g></svg></span><h1>GemFactory</h1><p>Kho section của GemBoss</p></header><form class="gb-auth-form" method="post" action="#"><div class="gb-auth-field"><label for="pw">Mật khẩu</label><div class="gb-auth-pw"><input class="gb-auth-input" id="pw" type="password"/><button type="button" aria-controls="pw" aria-label="Hiện" title="Hiện" data-label-show="Hiện" data-label-hide="Ẩn" class="gb-auth-pw-toggle"><svg width="18" height="18" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M1.5 10S4.6 4.5 10 4.5 18.5 10 18.5 10 15.4 15.5 10 15.5 1.5 10 1.5 10Z"></path><circle cx="10" cy="10" r="2.6"></circle></svg></button></div></div><button type="submit" class="gb-auth-submit">Đăng nhập</button></form></div></div><aside class="gb-auth-panel"><div class="gb-auth-panel-in"><p class="gb-auth-eyebrow">GemBoss</p><h2 class="gb-auth-panel-h">Một ngôn ngữ thiết kế cho mọi công cụ</h2><p class="gb-auth-panel-p">Đăng nhập bằng mật khẩu đội đã gửi riêng.</p></div></aside></div></main></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><main class="gb-auth">
|
|
7159
7163
|
<div class="gb-auth-split">
|
|
7160
7164
|
<div class="gb-auth-stage">
|
|
7161
7165
|
<div class="gb-auth-card">
|
|
@@ -7204,7 +7208,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
7204
7208
|
</div>
|
|
7205
7209
|
</aside>
|
|
7206
7210
|
</div>
|
|
7207
|
-
</main></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>backdrop="grid"</figcaption><div class="cat-wide"><iframe title="backdrop="grid"" style="height:620px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><main class="gb-auth"><div class="gb-auth-split"><div class="gb-auth-stage"><div class="gb-auth-card"><header class="gb-auth-header"><span class="gb-auth-mark" aria-hidden="true"><svg viewBox="0 0 32 32" width="56" height="56" aria-hidden="true" focusable="false"><rect width="32" height="32" rx="7" style="fill:var(--gb-mark-bg)"></rect><g transform="translate(16,16) scale(0.24) translate(-50,-62)"><polygon points="26,14 74,14 66,50 34,50" fill="#8a93ff"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="#f4f4f2" stroke-width="5" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="#f4f4f2" stroke-opacity="0.72" stroke-width="3" stroke-linejoin="round"></path></g></svg></span><h1>gemform</h1><p>GemBoss Ops · internal tool</p></header><form class="gb-auth-form" method="post" action="#"><div class="gb-auth-field"><label for="pw2">Password</label><div class="gb-auth-pw"><input class="gb-auth-input" id="pw2" type="password"/><button type="button" aria-controls="pw2" aria-label="Show password" title="Show password" data-label-show="Show password" data-label-hide="Hide password" class="gb-auth-pw-toggle"><svg width="18" height="18" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M1.5 10S4.6 4.5 10 4.5 18.5 10 18.5 10 15.4 15.5 10 15.5 1.5 10 1.5 10Z"></path><circle cx="10" cy="10" r="2.6"></circle></svg></button></div></div><button type="submit" class="gb-auth-submit">Sign in</button></form></div></div><aside class="gb-auth-panel gb-auth-panel--grid"><div class="gb-auth-panel-in"><p class="gb-auth-eyebrow">gemform · GemBoss Ops</p><h2 class="gb-auth-panel-h">Every Gem registration, in one place.</h2><p class="gb-auth-panel-p">Coffee chats, demo requests and workshop sign-ups from every Gem site, with a Telegram ping the moment one lands.</p></div></aside></div></main></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><main class="gb-auth">
|
|
7211
|
+
</main></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>backdrop="grid"</figcaption><div class="cat-wide"><iframe title="backdrop="grid"" style="height:620px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><main class="gb-auth"><div class="gb-auth-split"><div class="gb-auth-stage"><div class="gb-auth-card"><header class="gb-auth-header"><span class="gb-auth-mark" aria-hidden="true"><svg viewBox="0 0 32 32" width="56" height="56" aria-hidden="true" focusable="false"><rect width="32" height="32" rx="7" style="fill:var(--gb-mark-bg)"></rect><g transform="translate(16,16) scale(0.24) translate(-50,-62)"><polygon points="26,14 74,14 66,50 34,50" fill="#8a93ff"></polygon><path d="M26,14 74,14 96,50 50,110 4,50Z" fill="none" stroke="#f4f4f2" stroke-width="5" stroke-linejoin="round"></path><path d="M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110" fill="none" stroke="#f4f4f2" stroke-opacity="0.72" stroke-width="3" stroke-linejoin="round"></path></g></svg></span><h1>gemform</h1><p>GemBoss Ops · internal tool</p></header><form class="gb-auth-form" method="post" action="#"><div class="gb-auth-field"><label for="pw2">Password</label><div class="gb-auth-pw"><input class="gb-auth-input" id="pw2" type="password"/><button type="button" aria-controls="pw2" aria-label="Show password" title="Show password" data-label-show="Show password" data-label-hide="Hide password" class="gb-auth-pw-toggle"><svg width="18" height="18" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M1.5 10S4.6 4.5 10 4.5 18.5 10 18.5 10 15.4 15.5 10 15.5 1.5 10 1.5 10Z"></path><circle cx="10" cy="10" r="2.6"></circle></svg></button></div></div><button type="submit" class="gb-auth-submit">Sign in</button></form></div></div><aside class="gb-auth-panel gb-auth-panel--grid"><div class="gb-auth-panel-in"><p class="gb-auth-eyebrow">gemform · GemBoss Ops</p><h2 class="gb-auth-panel-h">Every Gem registration, in one place.</h2><p class="gb-auth-panel-p">Coffee chats, demo requests and workshop sign-ups from every Gem site, with a Telegram ping the moment one lands.</p></div></aside></div></main></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><main class="gb-auth">
|
|
7208
7212
|
<div class="gb-auth-split">
|
|
7209
7213
|
<div class="gb-auth-stage">
|
|
7210
7214
|
<div class="gb-auth-card">
|
|
@@ -7680,7 +7684,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
7680
7684
|
</div>
|
|
7681
7685
|
</div>
|
|
7682
7686
|
</div></code></pre></details></figure></section>
|
|
7683
|
-
<section id="team-chat"><h2>Chat đội</h2><p>Lớp <code>team-chat</code> (20/10/2026, CSS <code>team-chat.css</code> do component tự nạp): chat kênh của GemCare thành chung cho cả fleet, GemCare (HTML thuần) và GemCommunity (React) vẽ cùng một thứ. Cột kênh có số chưa đọc và <code>@</code> gọi tên, vạch ngày, vạch "New messages", tin liền nhau của một người gộp thành một lượt, trích tin được trả lời, thanh thao tác khi rê chuột (dưới ngón tay: chạm vào tin là hiện), reactions của gói, luồng bên phải, nút về tin mới nhất, và cột người. Màn tự quyết theo bề rộng CỦA NÓ (container query): trên 1100px ngăn phải là một cột, từ 1100px trở xuống là ngăn trượt phủ lên cuộc trò chuyện, từ 760px trở xuống chỉ hiện danh sách kênh HOẶC cuộc trò chuyện. Markup của từng phần là hợp đồng ở README "The team chat layer" (test giữ React và hợp đồng khớp nhau). HTML thuần (GemCare) không viết tay markup đó: <code>team-chat-plain.js</code> (<code>gembossUI.teamChat</code>) dựng tin, vạch ngày, vạch "New messages", nút về tin mới nhất, hàng kênh và hàng người từ dữ liệu, cùng markup với component (test so từng nút trong Chromium); khung cuối chạy thật.</p><figure class="cat-demo cat-screen"><figcaption>Desktop 1366: cột kênh · cuộc trò chuyện · luồng</figcaption><div class="cat-wide"><iframe title="Desktop 1366: cột kênh · cuộc trò chuyện · luồng" style="height:680px;width:1366px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation" data-panel="thread"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section><div class="gb-tc-scrim" aria-hidden="true"></div><aside id="tc-thread" class="gb-tc-thread" aria-labelledby="tc-thread-title" tabindex="-1"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-thread-title">Thread</h2><p class="gb-tc-panel-head__sub">#general</p></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-panel-head__close" aria-label="Close thread"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-labelledby="tc-thread-title" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-thread__count"><span>2 replies</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">17:02</time></div><div class="gb-tc-msg__body">I can take the cart drawer.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction" aria-pressed="false" title="Linh" aria-label="👍, Linh. Add yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Quan Le" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">17:05</time></div><div class="gb-tc-msg__body">Hero copy is mine.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><label class="gb-tc-sr" for="tc-thread-input">Reply to thread</label><textarea id="tc-thread-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Reply…"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div><label class="ui-check gb-tc-composer__also"><input type="checkbox"/><span>Also send to #general</span></label></form></aside></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
7687
|
+
<section id="team-chat"><h2>Chat đội</h2><p>Lớp <code>team-chat</code> (20/10/2026, CSS <code>team-chat.css</code> do component tự nạp): chat kênh của GemCare thành chung cho cả fleet, GemCare (HTML thuần) và GemCommunity (React) vẽ cùng một thứ. Cột kênh có số chưa đọc và <code>@</code> gọi tên, vạch ngày, vạch "New messages", tin liền nhau của một người gộp thành một lượt, trích tin được trả lời, thanh thao tác khi rê chuột (dưới ngón tay: chạm vào tin là hiện), reactions của gói, luồng bên phải, nút về tin mới nhất, và cột người. Màn tự quyết theo bề rộng CỦA NÓ (container query): trên 1100px ngăn phải là một cột, từ 1100px trở xuống là ngăn trượt phủ lên cuộc trò chuyện, từ 760px trở xuống chỉ hiện danh sách kênh HOẶC cuộc trò chuyện. Markup của từng phần là hợp đồng ở README "The team chat layer" (test giữ React và hợp đồng khớp nhau). HTML thuần (GemCare) không viết tay markup đó: <code>team-chat-plain.js</code> (<code>gembossUI.teamChat</code>) dựng tin, vạch ngày, vạch "New messages", nút về tin mới nhất, hàng kênh và hàng người từ dữ liệu, cùng markup với component (test so từng nút trong Chromium); khung cuối chạy thật.</p><figure class="cat-demo cat-screen"><figcaption>Desktop 1366: cột kênh · cuộc trò chuyện · luồng</figcaption><div class="cat-wide"><iframe title="Desktop 1366: cột kênh · cuộc trò chuyện · luồng" style="height:680px;width:1366px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation" data-panel="thread"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section><div class="gb-tc-scrim" aria-hidden="true"></div><aside id="tc-thread" class="gb-tc-thread" aria-labelledby="tc-thread-title" tabindex="-1"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-thread-title">Thread</h2><p class="gb-tc-panel-head__sub">#general</p></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-panel-head__close" aria-label="Close thread"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-labelledby="tc-thread-title" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-thread__count"><span>2 replies</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">17:02</time></div><div class="gb-tc-msg__body">I can take the cart drawer.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction" aria-pressed="false" title="Linh" aria-label="👍, Linh. Add yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Quan Le" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">17:05</time></div><div class="gb-tc-msg__body">Hero copy is mine.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><label class="gb-tc-sr" for="tc-thread-input">Reply to thread</label><textarea id="tc-thread-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Reply…"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div><label class="ui-check gb-tc-composer__also"><input type="checkbox"/><span>Also send to #general</span></label></form></aside></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
7684
7688
|
<div style="position:fixed;inset:0">
|
|
7685
7689
|
<div class="gb-tc" data-view="conversation" data-panel="thread">
|
|
7686
7690
|
<nav class="gb-tc-rail" aria-label="Channels">
|
|
@@ -8443,7 +8447,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
8443
8447
|
</form>
|
|
8444
8448
|
</aside>
|
|
8445
8449
|
</div>
|
|
8446
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Desktop 1366, tối: cột người (Online / Members)</figcaption><div class="cat-wide"><iframe title="Desktop 1366, tối: cột người (Online / Members)" style="height:680px;width:1366px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation" data-panel="people"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="true" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section><div class="gb-tc-scrim" aria-hidden="true"></div><aside id="tc-people" class="gb-tc-people" aria-labelledby="tc-people-title" tabindex="-1"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-people-title">Members</h2></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-people__toggle" aria-expanded="true" aria-controls="tc-people-body" aria-label="Hide members" title="Hide members"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="2"></rect><path d="M12.5 3.5v13"></path></g></svg></button></header><div class="gb-tc-people__body" id="tc-people-body"><div class="gb-tc-people__section" role="group" aria-labelledby="tc-on-h"><h3 class="gb-tc-people__heading" id="tc-on-h">Online — 3</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person" title="Linh Tran"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">LT</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Linh Tran</span><span class="gb-tc-person__sub">Support lead</span></span><span class="gb-tc-person__role">Admin</span></button></li><li><button type="button" class="gb-tc-person" title="Mai Pham"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="7" aria-hidden="true">MP</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Mai Pham</span><span class="gb-tc-person__sub">Writing the hero copy</span></span></button></li><li><button type="button" class="gb-tc-person" title="Quan Le"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="0" aria-hidden="true">QL</span><span class="gb-tc-presence gb-tc-presence--away"><span class="gb-tc-sr">Away</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Quan Le</span><span class="gb-tc-person__sub">In a meeting until 11:00</span></span></button></li></ul></div><div class="gb-tc-people__section" role="group" aria-labelledby="tc-all-h"><h3 class="gb-tc-people__heading" id="tc-all-h">Members — 2</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person gb-tc-person--offline" title="Bo Nguyen"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="1" aria-hidden="true">BN</span><span class="gb-tc-presence gb-tc-presence--offline"><span class="gb-tc-sr">Offline</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Bo Nguyen</span><span class="gb-tc-person__sub">Back Monday</span></span></button></li><li><button type="button" class="gb-tc-person gb-tc-person--offline" title="An Vo"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">AV</span><span class="gb-tc-presence gb-tc-presence--offline"><span class="gb-tc-sr">Offline</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">An Vo</span></span></button></li></ul></div></div></aside></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
8450
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Desktop 1366, tối: cột người (Online / Members)</figcaption><div class="cat-wide"><iframe title="Desktop 1366, tối: cột người (Online / Members)" style="height:680px;width:1366px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation" data-panel="people"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="true" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section><div class="gb-tc-scrim" aria-hidden="true"></div><aside id="tc-people" class="gb-tc-people" aria-labelledby="tc-people-title" tabindex="-1"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-people-title">Members</h2></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-people__toggle" aria-expanded="true" aria-controls="tc-people-body" aria-label="Hide members" title="Hide members"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="2"></rect><path d="M12.5 3.5v13"></path></g></svg></button></header><div class="gb-tc-people__body" id="tc-people-body"><div class="gb-tc-people__section" role="group" aria-labelledby="tc-on-h"><h3 class="gb-tc-people__heading" id="tc-on-h">Online — 3</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person" title="Linh Tran"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">LT</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Linh Tran</span><span class="gb-tc-person__sub">Support lead</span></span><span class="gb-tc-person__role">Admin</span></button></li><li><button type="button" class="gb-tc-person" title="Mai Pham"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="7" aria-hidden="true">MP</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Mai Pham</span><span class="gb-tc-person__sub">Writing the hero copy</span></span></button></li><li><button type="button" class="gb-tc-person" title="Quan Le"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="0" aria-hidden="true">QL</span><span class="gb-tc-presence gb-tc-presence--away"><span class="gb-tc-sr">Away</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Quan Le</span><span class="gb-tc-person__sub">In a meeting until 11:00</span></span></button></li></ul></div><div class="gb-tc-people__section" role="group" aria-labelledby="tc-all-h"><h3 class="gb-tc-people__heading" id="tc-all-h">Members — 2</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person gb-tc-person--offline" title="Bo Nguyen"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="1" aria-hidden="true">BN</span><span class="gb-tc-presence gb-tc-presence--offline"><span class="gb-tc-sr">Offline</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Bo Nguyen</span><span class="gb-tc-person__sub">Back Monday</span></span></button></li><li><button type="button" class="gb-tc-person gb-tc-person--offline" title="An Vo"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">AV</span><span class="gb-tc-presence gb-tc-presence--offline"><span class="gb-tc-sr">Offline</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">An Vo</span></span></button></li></ul></div></div></aside></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
8447
8451
|
<div style="position:fixed;inset:0">
|
|
8448
8452
|
<div class="gb-tc" data-view="conversation" data-panel="people">
|
|
8449
8453
|
<nav class="gb-tc-rail" aria-label="Channels">
|
|
@@ -9087,7 +9091,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
9087
9091
|
</div>
|
|
9088
9092
|
</aside>
|
|
9089
9093
|
</div>
|
|
9090
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1024: luồng là ngăn trượt phủ lên, cuộc trò chuyện giữ nguyên bề rộng</figcaption><div class="cat-wide"><iframe title="1024: luồng là ngăn trượt phủ lên, cuộc trò chuyện giữ nguyên bề rộng" style="height:640px;width:1024px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation" data-panel="thread"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section><div class="gb-tc-scrim" aria-hidden="true"></div><aside id="tc-thread" class="gb-tc-thread" aria-labelledby="tc-thread-title" tabindex="-1"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-thread-title">Thread</h2><p class="gb-tc-panel-head__sub">#general</p></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-panel-head__close" aria-label="Close thread"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-labelledby="tc-thread-title" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-thread__count"><span>2 replies</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">17:02</time></div><div class="gb-tc-msg__body">I can take the cart drawer.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction" aria-pressed="false" title="Linh" aria-label="👍, Linh. Add yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Quan Le" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">17:05</time></div><div class="gb-tc-msg__body">Hero copy is mine.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><label class="gb-tc-sr" for="tc-thread-input">Reply to thread</label><textarea id="tc-thread-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Reply…"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div><label class="ui-check gb-tc-composer__also"><input type="checkbox"/><span>Also send to #general</span></label></form></aside></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
9094
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1024: luồng là ngăn trượt phủ lên, cuộc trò chuyện giữ nguyên bề rộng</figcaption><div class="cat-wide"><iframe title="1024: luồng là ngăn trượt phủ lên, cuộc trò chuyện giữ nguyên bề rộng" style="height:640px;width:1024px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation" data-panel="thread"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section><div class="gb-tc-scrim" aria-hidden="true"></div><aside id="tc-thread" class="gb-tc-thread" aria-labelledby="tc-thread-title" tabindex="-1"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-thread-title">Thread</h2><p class="gb-tc-panel-head__sub">#general</p></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-panel-head__close" aria-label="Close thread"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 5l10 10M15 5 5 15"></path></g></svg></button></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-labelledby="tc-thread-title" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-thread__count"><span>2 replies</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">17:02</time></div><div class="gb-tc-msg__body">I can take the cart drawer.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction" aria-pressed="false" title="Linh" aria-label="👍, Linh. Add yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Quan Le" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">17:05</time></div><div class="gb-tc-msg__body">Hero copy is mine.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><label class="gb-tc-sr" for="tc-thread-input">Reply to thread</label><textarea id="tc-thread-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Reply…"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div><label class="ui-check gb-tc-composer__also"><input type="checkbox"/><span>Also send to #general</span></label></form></aside></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
9091
9095
|
<div style="position:fixed;inset:0">
|
|
9092
9096
|
<div class="gb-tc" data-view="conversation" data-panel="thread">
|
|
9093
9097
|
<nav class="gb-tc-rail" aria-label="Channels">
|
|
@@ -9850,7 +9854,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
9850
9854
|
</form>
|
|
9851
9855
|
</aside>
|
|
9852
9856
|
</div>
|
|
9853
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Điện thoại 390: cuộc trò chuyện (nút quay về danh sách ở đầu)</figcaption><div class="cat-wide"><iframe title="Điện thoại 390: cuộc trò chuyện (nút quay về danh sách ở đầu)" style="height:720px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
9857
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Điện thoại 390: cuộc trò chuyện (nút quay về danh sách ở đầu)</figcaption><div class="cat-wide"><iframe title="Điện thoại 390: cuộc trò chuyện (nút quay về danh sách ở đầu)" style="height:720px;width:390px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
9854
9858
|
<div style="position:fixed;inset:0">
|
|
9855
9859
|
<div class="gb-tc" data-view="conversation">
|
|
9856
9860
|
<nav class="gb-tc-rail" aria-label="Channels">
|
|
@@ -10393,7 +10397,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
10393
10397
|
</form>
|
|
10394
10398
|
</section>
|
|
10395
10399
|
</div>
|
|
10396
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Điện thoại 390, tối: danh sách kênh</figcaption><div class="cat-wide"><iframe title="Điện thoại 390, tối: danh sách kênh" style="height:520px;width:390px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="list"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
10400
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Điện thoại 390, tối: danh sách kênh</figcaption><div class="cat-wide"><iframe title="Điện thoại 390, tối: danh sách kênh" style="height:520px;width:390px" srcdoc="<!doctype html><html data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="list"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2><div class="gb-tc-rail__actions"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon" aria-label="New message"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 4v12M4 10h12"></path></g></svg></button></div></div><div class="gb-tc-rail__scroll"><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-ch-h"><h3 class="gb-tc-rail__heading" id="tc-ch-h">Channels</h3><ul class="gb-tc-rail__list"><li><button type="button" class="gb-tc-channel" aria-current="true" aria-label="general"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">general</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="launch-week, 2 mentioning you, 12 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">launch-week</span><span class="gb-tc-badge gb-tc-badge--mention" aria-hidden="true">@2</span><span class="gb-tc-badge" aria-hidden="true">12</span></button></li><li><button type="button" class="gb-tc-channel gb-tc-channel--unread" aria-label="support-escalations, 3 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-channel__name">support-escalations</span><span class="gb-tc-badge" aria-hidden="true">3</span></button></li><li><button type="button" class="gb-tc-channel" aria-label="payroll, private channel"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="4.5" y="9" width="11" height="8" rx="1.5"></rect><path d="M7 9V6.5a3 3 0 0 1 6 0V9"></path></g></svg></span><span class="gb-tc-channel__name">payroll</span></button></li></ul></div><div class="gb-tc-rail__section" role="group" aria-labelledby="tc-dm-h"><h3 class="gb-tc-rail__heading" id="tc-dm-h">Direct messages</h3><ul class="gb-tc-rail__list"><li><a class="gb-tc-channel gb-tc-channel--unread" href="#team-chat" aria-label="Linh Tran, direct message, 1 unread"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--online"></span></span><span class="gb-tc-channel__name">Linh Tran</span><span class="gb-tc-badge" aria-hidden="true">1</span></a></li><li><a class="gb-tc-channel" href="#team-chat" aria-label="Quan Le, direct message"><span class="gb-tc-channel__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="7" r="3.2"></circle><path d="M3.8 16.5c.8-2.8 3.3-4.5 6.2-4.5s5.4 1.7 6.2 4.5"></path></g></svg><span class="gb-tc-presence gb-tc-presence--offline"></span></span><span class="gb-tc-channel__name">Quan Le</span></a></li></ul></div></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"><li class="gb-tc-day"><span class="gb-tc-day__label">Yesterday</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="4" aria-hidden="true">LT</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Linh Tran</span><time class="gb-tc-msg__time">16:20</time></div><div class="gb-tc-msg__body">The launch checklist is in the doc: hero copy, the cart drawer, the welcome email. Each needs an owner by Thursday, and the cart drawer needs a second pair of eyes on mobile.</div><div class="ui-reactions"><div class="ui-reactions__row"><button type="button" class="ui-reaction is-mine" aria-pressed="true" title="Linh, Quan, An" aria-label="👍, Linh, Quan, An. Remove yours"><span class="ui-reaction__emoji">👍</span><span class="ui-reaction__names">Linh, Quan +1</span></button><button type="button" class="ui-reaction" aria-pressed="false" title="Bo" aria-label="🎉, Bo. Add yours"><span class="ui-reaction__emoji">🎉</span><span class="ui-reaction__names">Bo</span></button><button type="button" class="ui-reaction-add" title="Add reaction" aria-label="Add a reaction to the message from Linh Tran" aria-expanded="false"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button></div></div><button type="button" class="gb-tc-threadprev" aria-label="Open the thread, 3 replies, Last reply 2 hours ago"><span class="gb-tc-threadprev__faces" aria-hidden="true"><span class="gb-avatar gb-avatar--24" data-tone="0" aria-hidden="true">QL</span><span class="gb-avatar gb-avatar--24" data-tone="7" aria-hidden="true">MP</span></span><span class="gb-tc-threadprev__count">3 replies</span><span class="gb-tc-threadprev__last">Last reply 2 hours ago</span></button></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="true" aria-label="Remove 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">16:21</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Linh Tran, 16:21: </span><div class="gb-tc-msg__body">Who takes the hero copy?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Linh Tran"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Linh Tran">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Linh Tran">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Linh Tran" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Linh Tran" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Linh Tran" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-day"><span class="gb-tc-day__label">Today</span></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="7" aria-hidden="true">MP</span><div class="gb-tc-msg__main"><button type="button" class="gb-tc-quote"><span class="gb-tc-quote__who">Linh Tran</span><span class="gb-tc-quote__text">Who takes the hero copy?</span></button><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Mai Pham</span><time class="gb-tc-msg__time">09:02</time></div><div class="gb-tc-msg__body">Mine. Shipping it at noon.<span class="gb-tc-msg__edited">(edited)</span><span class="gb-tc-receipt" role="img" aria-label="Read by Linh, Quan. Not yet: Bo" title="Read by Linh, Quan. Not yet: Bo"><svg viewBox="0 0 14 14" width="14" height="14" aria-hidden="true" focusable="false"><circle cx="7" cy="7" r="6" fill="none" stroke="currentColor" stroke-width="1.4"></circle><path d="M7 7 L7 1 A6 6 0 1 1 1.80 10.00 Z" fill="currentColor"></path></svg></span></div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Mai Pham"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Mai Pham">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Mai Pham">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Mai Pham" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Mai Pham" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Mai Pham" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-new"><span class="gb-tc-new__label" role="separator" aria-label="New messages">New messages</span></li><li class="gb-tc-msg gb-tc-msg--mention" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="0" aria-hidden="true">QL</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">Quan Le</span><time class="gb-tc-msg__time">09:40</time></div><div class="gb-tc-msg__body">Pushed the cart drawer fix, @Mai can you check it on your phone?</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg gb-tc-msg--grouped" tabindex="-1"><time class="gb-tc-msg__hover-time">09:41</time><div class="gb-tc-msg__main"><span class="gb-tc-sr">Quan Le, 09:41: </span><div class="gb-tc-msg__body">Preview is up.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from Quan Le"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from Quan Le">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from Quan Le">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from Quan Le" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from Quan Le" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from Quan Le" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li><li class="gb-tc-msg" tabindex="-1"><span class="gb-avatar gb-avatar--32 gb-tc-msg__av" data-tone="5" aria-hidden="true">AI</span><div class="gb-tc-msg__main"><div class="gb-tc-msg__who"><span class="gb-tc-msg__name">GemCare</span><span class="ui-badge ui-badge--info">AI</span><time class="gb-tc-msg__time">09:42</time></div><div class="gb-tc-msg__body">Three customers asked about the cart drawer this morning; all on iOS Safari.</div></div><div class="gb-tc-acts" role="toolbar" aria-label="Actions for the message from GemCare"><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add 👍 on the message from GemCare">👍</button><button type="button" class="gb-tc-act gb-tc-act--quick" aria-pressed="false" aria-label="Add ✅ on the message from GemCare">✅</button><button type="button" class="gb-tc-act" aria-expanded="false" aria-label="More reactions for the message from GemCare" title="Add reaction"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16.5 10a6.5 6.5 0 1 1-6.5-6.5"></path><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path><path d="M15 2.5v4M13 4.5h4"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply to the message from GemCare" title="Reply"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 13.5 3.5 9 8 4.5M3.5 9h8a5 5 0 0 1 5 5v2"></path></g></svg></button><button type="button" class="gb-tc-act" aria-label="Reply in thread to the message from GemCare" title="Reply in thread"><svg viewBox="0 0 20 20" width="18" height="18" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.5h14v9H8.5L5 16.5v-3H3z"></path><path d="M6.5 8h7M6.5 10.5h4.5"></path></g></svg></button></div></li></ol></div><button type="button" class="gb-tc-jump" aria-label="Jump to the latest message, 3 new"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 5.5l4 4 4-4M6 10.5l4 4 4-4"></path></g></svg><span class="gb-tc-jump__n" aria-hidden="true">3</span></button></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section></div></div></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
10397
10401
|
<div style="position:fixed;inset:0">
|
|
10398
10402
|
<div class="gb-tc" data-view="list">
|
|
10399
10403
|
<nav class="gb-tc-rail" aria-label="Channels">
|
|
@@ -10936,7 +10940,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
|
|
|
10936
10940
|
</form>
|
|
10937
10941
|
</section>
|
|
10938
10942
|
</div>
|
|
10939
|
-
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>HTML thuần (team-chat-plain.js, chạy thật): cột kênh và các tin dựng từ dữ liệu bằng gembossUI.teamChat, cùng markup với component</figcaption><div class="cat-wide"><iframe title="HTML thuần (team-chat-plain.js, chạy thật): cột kênh và các tin dựng từ dữ liệu bằng gembossUI.teamChat, cùng markup với component" style="height:600px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2></div><div class="gb-tc-rail__scroll"></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"></ol></div></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section></div></div><script src="../src/team-chat-plain.js"></script><script>
|
|
10943
|
+
</div></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>HTML thuần (team-chat-plain.js, chạy thật): cột kênh và các tin dựng từ dữ liệu bằng gembossUI.teamChat, cùng markup với component</figcaption><div class="cat-wide"><iframe title="HTML thuần (team-chat-plain.js, chạy thật): cột kênh và các tin dựng từ dữ liệu bằng gembossUI.teamChat, cùng markup với component" style="height:600px;width:1280px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="position:fixed;inset:0"><div class="gb-tc" data-view="conversation"><nav class="gb-tc-rail" aria-label="Channels"><div class="gb-tc-rail__head"><h2 class="gb-tc-rail__title">Acme team</h2></div><div class="gb-tc-rail__scroll"></div></nav><section class="gb-tc-main" aria-label="Conversation"><header class="gb-tc-head"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-head__back" aria-label="Back to channels"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12.5 4.5 7 10l5.5 5.5"></path></g></svg></button><div class="gb-tc-head__text"><h2 class="gb-tc-head__title"><span class="gb-tc-head__glyph" aria-hidden="true"><svg viewBox="0 0 20 20" width="16" height="16" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3.5 6.5 16.5M13.5 3.5 12 16.5M4 7.5h12.5M3.5 12.5H16"></path></g></svg></span><span class="gb-tc-head__name">general</span></h2><p class="gb-tc-head__sub">Everyone on the team is here. Customers never see this.</p></div><div class="gb-tc-head__actions"><button type="button" class="ui-btn ui-btn--ghost gb-tc-head__members" aria-expanded="false" aria-controls="tc-people" aria-label="Members, 8"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7.5" cy="7.3" r="2.8"></circle><path d="M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4"></path><path d="M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8"></path></g></svg><span class="gb-tc-head__count">8</span></button></div></header><div class="gb-tc-body"><div class="gb-tc-log" role="log" aria-live="polite" aria-label="Messages in #general" tabindex="0"><ol class="gb-tc-list"></ol></div></div><form class="gb-tc-composer"><div class="gb-tc-composer__box"><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__attach" aria-label="Attach a file"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 9.5 10 15a3.5 3.5 0 0 1-5-5l6-6a2.3 2.3 0 0 1 3.3 3.3l-6 6a1.2 1.2 0 0 1-1.7-1.7l5.3-5.3"></path></g></svg></button><label class="gb-tc-sr" for="tc-input">Message</label><textarea id="tc-input" class="gb-tc-composer__input" rows="1" maxLength="4000" placeholder="Message #general"></textarea><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-composer__emoji" aria-label="Emoji" aria-expanded="false"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="6.5"></circle><path d="M7.5 11.8s.9 1.2 2.5 1.2 2.5-1.2 2.5-1.2"></path><path d="M7.8 8.2h.01M12.2 8.2h.01"></path></g></svg></button><button type="submit" class="ui-btn ui-btn--primary ui-btn--icon gb-tc-composer__send" aria-label="Send" disabled=""><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10 16.5 3.5 13 16.5 9.5 11z"></path><path d="M9.5 11 16.5 3.5"></path></g></svg></button></div></form></section></div></div><script src="../src/team-chat-plain.js"></script><script>
|
|
10940
10944
|
var tc = gembossUI.teamChat, noop = function () {}, at = function (hm) { return "2026-10-20T" + hm + ":00+07:00"; };
|
|
10941
10945
|
document.querySelector(".gb-tc-rail__scroll").replaceChildren(
|
|
10942
10946
|
tc.channelSection({ id: "p-ch", label: "Channels", items: [{ name: "general", active: true, onOpen: noop }, { name: "launch-week", unread: 12, mentions: 2, onOpen: noop }, { name: "payroll", kind: "private", onOpen: noop }] }),
|
|
@@ -11068,7 +11072,7 @@ document.querySelector(".gb-tc-body").append(tc.jumpToLatest({ count:
|
|
|
11068
11072
|
thread: m.thread ? { count: m.thread, last: "Last reply 2 hours ago", repliers: [{ name: "Linh Tran" }], onOpen: noop } : undefined, onReact: noop, onReply: noop, onOpenThread: noop });
|
|
11069
11073
|
}));
|
|
11070
11074
|
document.querySelector(".gb-tc-body").append(tc.jumpToLatest({ count: 3, onJump: noop }));
|
|
11071
|
-
</script></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>PeoplePanel đứng riêng (cột phải của app shell): mở và thu gọn</figcaption><iframe title="PeoplePanel đứng riêng (cột phải của app shell): mở và thu gọn" style="height:460px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="display:flex;gap:24px;height:420px;padding:16px;box-sizing:border-box"><aside id="tc-people" class="gb-tc-people" aria-labelledby="tc-people-title" tabindex="-1"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-people-title">Members</h2></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-people__toggle" aria-expanded="true" aria-controls="tc-people-body" aria-label="Hide members" title="Hide members"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="2"></rect><path d="M12.5 3.5v13"></path></g></svg></button></header><div class="gb-tc-people__body" id="tc-people-body"><div class="gb-tc-people__section" role="group" aria-labelledby="tc-on-h"><h3 class="gb-tc-people__heading" id="tc-on-h">Online — 3</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person" title="Linh Tran"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">LT</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Linh Tran</span><span class="gb-tc-person__sub">Support lead</span></span><span class="gb-tc-person__role">Admin</span></button></li><li><button type="button" class="gb-tc-person" title="Mai Pham"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="7" aria-hidden="true">MP</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Mai Pham</span><span class="gb-tc-person__sub">Writing the hero copy</span></span></button></li><li><button type="button" class="gb-tc-person" title="Quan Le"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="0" aria-hidden="true">QL</span><span class="gb-tc-presence gb-tc-presence--away"><span class="gb-tc-sr">Away</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Quan Le</span><span class="gb-tc-person__sub">In a meeting until 11:00</span></span></button></li></ul></div><div class="gb-tc-people__section" role="group" aria-labelledby="tc-all-h"><h3 class="gb-tc-people__heading" id="tc-all-h">Members — 2</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person gb-tc-person--offline" title="Bo Nguyen"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="1" aria-hidden="true">BN</span><span class="gb-tc-presence gb-tc-presence--offline"><span class="gb-tc-sr">Offline</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Bo Nguyen</span><span class="gb-tc-person__sub">Back Monday</span></span></button></li><li><button type="button" class="gb-tc-person gb-tc-person--offline" title="An Vo"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">AV</span><span class="gb-tc-presence gb-tc-presence--offline"><span class="gb-tc-sr">Offline</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">An Vo</span></span></button></li></ul></div></div></aside><aside id="tc-people-2" class="gb-tc-people" aria-labelledby="tc-people-2-title" tabindex="-1" data-collapsed="true"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-people-2-title">Members</h2></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-people__toggle" aria-expanded="false" aria-controls="tc-people-2-body" aria-label="Show members" title="Show members"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="2"></rect><path d="M12.5 3.5v13"></path></g></svg></button></header><div class="gb-tc-people__body" id="tc-people-2-body"><div class="gb-tc-people__section" role="group" aria-labelledby="tc-on-2-h"><h3 class="gb-tc-people__heading" id="tc-on-2-h">Online — 2</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person" title="Linh Tran"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">LT</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Linh Tran</span></span></button></li><li><button type="button" class="gb-tc-person" title="Quan Le"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="0" aria-hidden="true">QL</span><span class="gb-tc-presence gb-tc-presence--away"><span class="gb-tc-sr">Away</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Quan Le</span></span></button></li></ul></div></div></aside></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
11075
|
+
</script></code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>PeoplePanel đứng riêng (cột phải của app shell): mở và thu gọn</figcaption><iframe title="PeoplePanel đứng riêng (cột phải của app shell): mở và thu gọn" style="height:460px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/reader-dialog.css"><link rel="stylesheet" href="../src/settings-dialog.css"><link rel="stylesheet" href="../src/service-switcher.css"><link rel="stylesheet" href="../src/site.css"><link rel="stylesheet" href="../src/topnav-fold.css"></head><body><link rel="stylesheet" href="../src/team-chat.css"><div style="display:flex;gap:24px;height:420px;padding:16px;box-sizing:border-box"><aside id="tc-people" class="gb-tc-people" aria-labelledby="tc-people-title" tabindex="-1"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-people-title">Members</h2></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-people__toggle" aria-expanded="true" aria-controls="tc-people-body" aria-label="Hide members" title="Hide members"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="2"></rect><path d="M12.5 3.5v13"></path></g></svg></button></header><div class="gb-tc-people__body" id="tc-people-body"><div class="gb-tc-people__section" role="group" aria-labelledby="tc-on-h"><h3 class="gb-tc-people__heading" id="tc-on-h">Online — 3</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person" title="Linh Tran"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">LT</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Linh Tran</span><span class="gb-tc-person__sub">Support lead</span></span><span class="gb-tc-person__role">Admin</span></button></li><li><button type="button" class="gb-tc-person" title="Mai Pham"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="7" aria-hidden="true">MP</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Mai Pham</span><span class="gb-tc-person__sub">Writing the hero copy</span></span></button></li><li><button type="button" class="gb-tc-person" title="Quan Le"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="0" aria-hidden="true">QL</span><span class="gb-tc-presence gb-tc-presence--away"><span class="gb-tc-sr">Away</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Quan Le</span><span class="gb-tc-person__sub">In a meeting until 11:00</span></span></button></li></ul></div><div class="gb-tc-people__section" role="group" aria-labelledby="tc-all-h"><h3 class="gb-tc-people__heading" id="tc-all-h">Members — 2</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person gb-tc-person--offline" title="Bo Nguyen"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="1" aria-hidden="true">BN</span><span class="gb-tc-presence gb-tc-presence--offline"><span class="gb-tc-sr">Offline</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Bo Nguyen</span><span class="gb-tc-person__sub">Back Monday</span></span></button></li><li><button type="button" class="gb-tc-person gb-tc-person--offline" title="An Vo"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">AV</span><span class="gb-tc-presence gb-tc-presence--offline"><span class="gb-tc-sr">Offline</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">An Vo</span></span></button></li></ul></div></div></aside><aside id="tc-people-2" class="gb-tc-people" aria-labelledby="tc-people-2-title" tabindex="-1" data-collapsed="true"><header class="gb-tc-panel-head"><div class="gb-tc-panel-head__text"><h2 class="gb-tc-panel-head__title" id="tc-people-2-title">Members</h2></div><button type="button" class="ui-btn ui-btn--ghost ui-btn--icon gb-tc-people__toggle" aria-expanded="false" aria-controls="tc-people-2-body" aria-label="Show members" title="Show members"><svg viewBox="0 0 20 20" width="20" height="20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3.5" width="14" height="13" rx="2"></rect><path d="M12.5 3.5v13"></path></g></svg></button></header><div class="gb-tc-people__body" id="tc-people-2-body"><div class="gb-tc-people__section" role="group" aria-labelledby="tc-on-2-h"><h3 class="gb-tc-people__heading" id="tc-on-2-h">Online — 2</h3><ul class="gb-tc-people__list"><li><button type="button" class="gb-tc-person" title="Linh Tran"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="4" aria-hidden="true">LT</span><span class="gb-tc-presence gb-tc-presence--online"><span class="gb-tc-sr">Online</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Linh Tran</span></span></button></li><li><button type="button" class="gb-tc-person" title="Quan Le"><span class="gb-tc-person__av"><span class="gb-avatar gb-avatar--32" data-tone="0" aria-hidden="true">QL</span><span class="gb-tc-presence gb-tc-presence--away"><span class="gb-tc-sr">Away</span></span></span><span class="gb-tc-person__text"><span class="gb-tc-person__name">Quan Le</span></span></button></li></ul></div></div></aside></div></body></html>"></iframe><details class="cat-code"><summary>Markup</summary><pre><code><link rel="stylesheet" href="../src/team-chat.css">
|
|
11072
11076
|
<div style="display:flex;gap:24px;height:420px;padding:16px;box-sizing:border-box">
|
|
11073
11077
|
<aside id="tc-people" class="gb-tc-people" aria-labelledby="tc-people-title" tabindex="-1">
|
|
11074
11078
|
<header class="gb-tc-panel-head">
|