@botiverse/raft-ui 0.11.0 → 0.12.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 CHANGED
@@ -1,3 +1,23 @@
1
+ ## [0.12.0](https://github.com/botiverse/raft-design/compare/v0.11.0...v0.12.0) (2026-10-21)
2
+
3
+ ### Breaking
4
+
5
+ - `ComboboxSelect` always takes typing on a phone, as on a desktop: tapping the field focuses it and typing filters; `create` and remote search work in the field. The phone-only pick-only mode and bottom sheet from 0.10.5 are gone, with their props `sheetThreshold`, `sheetTitle` and `messages.search` / `done` / `close`. A pick-only field uses `Select`. The list still picks its side once and doesn't flip while the keyboard opens. ([#635](https://github.com/botiverse/raft-design/pull/635))
6
+
7
+ ### Added
8
+
9
+ - `ComboboxSelect` takes `listMaxHeight` (a CSS length or pixels, default `16rem`, the whole list's height); the side the list opens on follows it. ([#635](https://github.com/botiverse/raft-design/pull/635))
10
+ - Jump controls that float over a conversation, from `@botiverse/raft-ui/wip`: `MessageListJumpControls`, `MessageListJumpPill` (a Button `outline md`), `MessageListJumpPillGroup` and `MessageListJumpPillDismiss`. ([#637](https://github.com/botiverse/raft-design/pull/637))
11
+ - A message an assistant sent for its owner, from `@botiverse/raft-ui/wip`: `MessageItemDelegatedBy`, `MessageItemDelegatedByName`, `MessageItemDelegatedByButton`, `MessageItemDelegatedAvatar` (with `deleted`) and `MessageQuotedPreviewAuthorDelegatedBy`. ([#633](https://github.com/botiverse/raft-design/pull/633))
12
+
13
+ ### Fixed
14
+
15
+ - The 32px and 36px buttons' hit area reaches 44px; the overhang now counts the 1.5px border. ([#637](https://github.com/botiverse/raft-design/pull/637))
16
+ - Toast title and description use `text-callout` (desktop line height 20 to 22px). ([#637](https://github.com/botiverse/raft-design/pull/637))
17
+ - In a message header the name, notes (model, role, badge text) and time stand on one baseline. ([#639](https://github.com/botiverse/raft-design/pull/639))
18
+ - `MessageItemSenderGroup`: the gap before a role squeezed to nothing collapses with it. ([#633](https://github.com/botiverse/raft-design/pull/633))
19
+ - `VirtualList`: a jump holds its target row by key, so rows prepended while it settles don't move it; the focused row stays mounted across a window switch. ([#636](https://github.com/botiverse/raft-design/pull/636))
20
+
1
21
  ## [0.11.0](https://github.com/botiverse/raft-design/compare/v0.10.7...v0.11.0) (2026-10-21)
2
22
 
3
23
  ### Added
@@ -140,7 +140,7 @@
140
140
  width: var(--anchor-width, max-content);
141
141
  min-width: 13.75rem;
142
142
  max-width: var(--available-width);
143
- max-height: min(var(--available-height), 24rem);
143
+ max-height: min(var(--available-height), max(24rem, var(--combobox-select-list-max-height, 0px)));
144
144
  overflow: hidden;
145
145
  border: 0;
146
146
  border-radius: 10px;
@@ -152,7 +152,8 @@
152
152
  outline: 0;
153
153
  }
154
154
  .r-combobox-select__list {
155
- max-height: 16rem;
155
+ box-sizing: border-box;
156
+ max-height: var(--combobox-select-list-max-height, 16rem);
156
157
  overflow-y: auto;
157
158
  overscroll-behavior: contain;
158
159
  scroll-padding-block: 6px;
@@ -270,120 +271,14 @@
270
271
  background: var(--fill-muted);
271
272
  color: var(--foreground-disabled);
272
273
  }
273
- /* On a phone the field is a trigger, not a text input: a select-like button
274
- that shows the value. Its hit area covers the whole field; the clear button
275
- sits above it. */
276
- .r-combobox-select__trigger {
277
- box-sizing: border-box;
278
- min-width: 0;
279
- min-height: inherit;
280
- flex: 1;
281
- display: flex;
282
- align-items: center;
283
- padding: 0;
284
- border: 0;
285
- outline: 0;
286
- background: transparent;
287
- color: inherit;
288
- font: inherit;
289
- text-align: start;
290
- cursor: default;
291
- -webkit-tap-highlight-color: transparent;
292
- }
293
- .r-combobox-select__trigger::after {
294
- content: "";
295
- position: absolute;
296
- inset: 0;
297
- border-radius: inherit;
298
- }
299
- .r-combobox-select__trigger:disabled {
300
- color: inherit;
301
- }
302
- .r-combobox-select__value {
303
- min-width: 0;
304
- overflow: hidden;
305
- text-overflow: ellipsis;
306
- white-space: nowrap;
307
- }
308
- .r-combobox-select__placeholder {
309
- min-width: 0;
310
- overflow: hidden;
311
- text-overflow: ellipsis;
312
- white-space: nowrap;
313
- color: var(--foreground-hint);
314
- }
315
- .r-combobox-select__trigger .r-combobox-select__chips {
316
- margin-inline-start: -6px;
317
- }
318
- .r-combobox-select__trigger .r-combobox-select__chip {
319
- padding-inline-end: 8px;
320
- }
321
- .r-combobox-select__clear {
322
- position: relative;
323
- z-index: 1;
324
- }
325
- .r-combobox-select__arrow {
326
- pointer-events: none;
327
- }
328
- .r-combobox-select__control--trigger[data-popup-open] .r-combobox-select__arrow > svg {
329
- transform: rotate(180deg);
330
- }
331
- /* The phone's anchored list fits the room on its side instead of flipping. */
274
+ /* On a phone the list keeps the side it opened on and fits the room there
275
+ instead of flipping (combobox-select.tsx), and the input stays at 16px or
276
+ more at every size: iOS zooms into a smaller one as it takes focus. */
332
277
  .r-combobox-select__popup--anchored .r-combobox-select__list {
333
- box-sizing: border-box;
334
- max-height: min(calc(16rem + 12px), var(--available-height, 100vh));
335
- }
336
- /* The phone's bottom sheet: the field's label as its title, the search input
337
- at its top, then the whole list, scrolling in the rest of the sheet. */
338
- .r-combobox-select__sheet-popup {
339
- height: 82dvh;
340
- }
341
- .r-combobox-select__sheet {
342
- display: flex;
343
- flex: 1;
344
- flex-direction: column;
345
- min-height: 0;
346
- }
347
- .r-combobox-select__sheet-header {
348
- flex-direction: row;
349
- align-items: center;
350
- justify-content: space-between;
351
- gap: 8px;
352
- padding-inline-end: 8px;
353
- }
354
- .r-combobox-select__sheet-title {
355
- min-width: 0;
356
- flex: 1;
357
- }
358
- .r-combobox-select__sheet-search {
359
- flex: 0 0 auto;
360
- padding: 4px 16px 8px;
361
- }
362
- .r-combobox-select__search-icon {
363
- width: 16px;
364
- height: 16px;
365
- flex: 0 0 auto;
366
- color: var(--foreground-hint);
367
- }
368
- .r-combobox-select__sheet-body {
369
- min-height: 0;
370
- overflow-y: auto;
371
- overscroll-behavior: contain;
372
- padding: 0 8px calc(16px + env(safe-area-inset-bottom, 0px));
373
- }
374
- .r-combobox-select__sheet .r-combobox-select__list {
375
- max-height: none;
376
- overflow: visible;
377
- padding: 0;
378
- }
379
- .r-combobox-select__sheet .r-combobox-select__option {
380
- min-height: 52px;
381
- padding: 0 12px;
382
- font-size: var(--text-body);
383
- line-height: var(--text-body--line-height);
278
+ max-height: min(var(--combobox-select-list-max-height, 16rem), var(--available-height, 100vh));
384
279
  }
385
- .r-combobox-select__sheet .r-combobox-select__group-label {
386
- padding: 12px 12px 4px;
280
+ .r-combobox-select__control--phone .r-combobox-select__input {
281
+ font-size: max(1em, 16px);
387
282
  }
388
283
  @keyframes r-combobox-select-spin {
389
284
  to {