@gemboss/ui 0.32.0 → 0.33.4

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 CHANGED
@@ -2,6 +2,88 @@
2
2
 
3
3
  Versions up to 0.9.0 are described in the README, each in the section that introduced it.
4
4
 
5
+ ## 0.33.4 (10/10/2026)
6
+
7
+ Fixed
8
+ - **A layer row's title is shown as given** (`.gemboss-layer-type`, and the page editor's "Editing:" chip): no
9
+ `text-transform: capitalize`. It made a seller's own heading read as a title ("Wellness essentials." → "Wellness
10
+ Essentials.") and a section's name wrong ("Before / after" → "Before / After"). The callers now pass names in words
11
+ (gemboss `natureName()`), so the CSS has nothing to fix up. UX review of the funnel canvas, 10/10/2026.
12
+
13
+ ## 0.33.3 (10/10/2026)
14
+
15
+ **Long values in narrow frames** (GemFactory review #230). collections.css.
16
+
17
+ Fixed
18
+ - A row header (`th.ui-table__rowhead`) breaks a long token (an identifier in `<code>`, a URL) instead of growing to fit it:
19
+ a sticky first column ~200px wide left ~85px for every other column in a 286px frame at 320. Now it stays at its
20
+ 9.0625rem floor (172px with padding, measured).
21
+ - A folded Index table row (container ≤ 768) no longer caps its second line (`.ui-table__title + .ui-sub`) at 40ch: the
22
+ cap's selector is (0,3,0) and won against the fold's (0,2,0) `max-width: none`.
23
+
24
+ ## 0.33.2 (10/10/2026)
25
+
26
+ Fixed
27
+ - **`.ui-seg` is never squeezed in a short column.** With `overflow: hidden` it was a scroll container, and a flex item
28
+ that is one has no content minimum: in a column shorter than its content (a stacked popup's filter pane, ~255px at
29
+ 320 and 390) the control went to 2px and its 44px buttons were cut off, while their own boxes still measured 44.
30
+ Now `overflow: clip` (the same cut, rounded corners included, but not a scroll container) plus `min-width: 0`.
31
+ Measured in Chromium and WebKit: column 2px → 46px; in a narrow row it still shrinks and clips exactly as before.
32
+ `min-height: min-content` works in Chromium only (WebKit keeps 2px). `kit-plain.css` sets `overflow-x: auto` on it
33
+ (#3630), so on kit-plain surfaces it stays a scroll container, unchanged.
34
+
35
+ ## 0.33.1 (10/10/2026)
36
+
37
+ **PanelTabs' row (`.gemboss-ec-tabs`) carries what GemFactory patched in its own CSS** (server/ui.mjs "VÁ GÓI: PanelTabs
38
+ cột", 06/10/2026, with "move it into the kit's editor.css" written on it). editor.css.
39
+
40
+ Changed
41
+ - A tab label never wraps: a tab is never narrower than its text (`min-width: max-content`, `nowrap`), the tabs still
42
+ share the row while they fit, and the ROW scrolls sideways when they do not (thin bar, `overscroll-behavior-x:
43
+ contain`). Four tabs with two-word labels in a 240px column broke onto two lines.
44
+ - Hover on an unselected tab (`--gemboss-primary-soft`, text to `--gemboss-text`); keyboard focus draws the `--ui-focus`
45
+ ring (the browser's own before).
46
+ - 44px tall at 767px and below under a mouse too (it was only under `pointer: coarse`).
47
+
48
+ ## 0.33.0 (10/10/2026)
49
+
50
+ **The bulk bar stays one row.** talent-radar /pool moved to `SelectableResourceList` (collections PR 6) with five bulk
51
+ actions, and the bar wrapped to three rows at 390 (~150px above the first candidate); its own bar had been one
52
+ scrolling row since 03/10. README "Collections".
53
+
54
+ Changed
55
+ - `BulkBar` (IndexTable, SelectableResourceList): actions that do not fit in the row after the box and the count go into
56
+ a ⋯ `Menu` at its end (`.ui-bulkbar__more`), in order; each action is either a button or a menu row, never both. The
57
+ widths come from a hidden copy of the buttons (`.ui-bulkbar__measure`) in the surface's font, re-measured on resize
58
+ and when the count changes, so the fold follows the real labels (two short actions stay buttons at 320; five long
59
+ ones fold at 768), not a breakpoint. Menu rows are off with nothing selected, like the buttons. Before the first
60
+ measure (`data-fit="pending"`, a server render before hydration) the row does not wrap; the overflow is clipped.
61
+ Plain HTML bars (kit-plain.js) are unchanged.
62
+
63
+ - A linked activity label (`CompactList variant="activity"`, `CompactItem.href`) is text-coloured (underline on hover)
64
+ instead of the browser's blue, and its box is 24px (WCAG 2.5.8) with the row's height unchanged: talent-radar
65
+ /activity had 71 links under 24px at 320 and 390.
66
+
67
+ Added
68
+ - `fitActions(avail, widths, gap, menuW)`: the fold rule, exported for tests.
69
+ - `moreActionsLabel` on `IndexTable` and `SelectableResourceList` (default "More actions").
70
+
71
+ ## 0.32.1 (10/10/2026)
72
+
73
+ **Anchors land below the topbar, and at all.** The shell's document scrolls under the fixed 56px `.gemboss-platform-topbar`, so a jump
74
+ to `#section` (or `scrollIntoView()`) parked the section's heading behind the bar. search-radar worked around it with
75
+ `scrollMarginTop: 72` on four sections (`/aeo#changes`, `#gaps`, `#trend`, `/aeo/brand/<x>#evidence`, 08/10/2026).
76
+
77
+ Fixed
78
+ - `:root:has(.gemboss-platform-topbar) { scroll-padding-top: 64px }` in shell.css (56 + 8 of air), only while the bar is on
79
+ the page; a surface without the shell keeps the browser default. A surface's own `scroll-margin-top` on a section can
80
+ go. anchor-scroll.browser.test.ts (real Chromium, 390 and 1280; red without the rule: the heading at 0, under the bar).
81
+ - A hard load of `/page#section` on a streamed page (Next App Router + loading.tsx) now reaches the section. The browser
82
+ looked for the fragment while it sat in React's hidden Suspense block and scrolled nowhere: on search-radar `/aeo#gaps`
83
+ stayed at the top on 5 of 6 loads. `AppShell` keeps the target where a fragment jump puts it while the page is still
84
+ arriving (until 600 ms of a quiet DOM, 5 s at most), and stops the moment the reader scrolls, presses a key, touches or
85
+ clicks. Once per load; client navigations are Next's. Measured on search-radar with this build: 36 of 36 loads land.
86
+
5
87
  ## 0.32.0 (09/10/2026)
6
88
 
7
89
  **The bridge, once** (assistant sync, Chris 08/10/2026: "mọi service có panel này đồng bộ style + code dùng gemboss ui").
package/README.md CHANGED
@@ -1511,6 +1511,9 @@ the admin's first load (`kit-plain-bundles.test.ts` checks the shell import carr
1511
1511
  its own rule sets its button on `gb:selection`, which fires after). collections-gate reports a list with selection
1512
1512
  boxes and no bar (`select-without-bulk`). An open ⋯ menu or dialog takes Escape first; a closed one kept in a row
1513
1513
  does not.
1514
+ - **The bulk bar is one row (0.33.0).** Bulk actions that do not fit after the box and the count go into a ⋯ menu at
1515
+ the bar's end, in order (Polaris BulkActions). React measures the real button widths, so the fold follows the labels,
1516
+ not a breakpoint; pass every action and let the bar decide. Order them by use: the first ones stay buttons.
1514
1517
  - **A sort control is 44 × 44 under a finger (0.18.0)**: the header button grows to 44 tall under `pointer: coarse`
1515
1518
  and to 44 wide under `pointer: coarse` or at 768 and below (a short label like "ID" was 44 × 30 on an iPad); the
1516
1519
  chips below 768 have the same floor. Under a mouse the header keeps its Polaris size.
@@ -8,7 +8,7 @@
8
8
  .cat-code summary{padding:10px 16px;font-size:13px;cursor:pointer;color:var(--gemboss-text-muted);border-top:1px solid var(--gemboss-divider);min-height:24px}
9
9
  .cat-code pre,.cat-api{margin:0;padding:12px 16px;overflow:auto;background:#0f1012;color:#e8e8e6;font-size:12px;line-height:1.5;border-radius:0}
10
10
  .cat-api{border-radius:12px;margin:0 0 16px}</style></head><body><div class="cat">
11
- <h1>@gemboss/ui 0.32.0 · Editor</h1>
11
+ <h1>@gemboss/ui 0.33.4 · Editor</h1>
12
12
  <p>Khung của mọi editor: <code>EditorFrame</code> (cột trái · khe kéo · preview · cột phải dock trên mép phải preview) và <code>EditorTopbar</code> (← · tiêu đề · cụm giữa · cụm phải · dòng trạng thái). Là đúng khung của theme / page / section editor trong admin. Gói chỉ vẽ KHUNG; chat, Configure, canvas, page picker, menu, Publish là của editor, đi vào bằng slot. Trang HTML thuần nạp <code>editor.css</code> + <code>editor-plain.js</code> rồi gọi <code>gembossUI.initEditorFrame()</code>: kéo khe (chuột, chạm, phím mũi tên / Home / End), đổi thiết bị, mở ⋯ và Publish ▾, ẩn cột trái, Chat | Preview trên điện thoại. <a href="index.html">← Catalog</a></p>
13
13
  <h2>React</h2><pre class="cat-api"><code>import &quot;@gemboss/ui/editor.css&quot;;
14
14
  import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs, EditorSaveState, DeviceToggle } from &quot;@gemboss/ui/editor&quot;;