@botiverse/raft-ui 0.47.1 → 0.49.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/dist/styles.css CHANGED
@@ -136,6 +136,24 @@
136
136
  --color-brutal-cream: var(--palette-cream-200);
137
137
  }
138
138
 
139
+ /* A column's content margin (design/foundations/alignment.md#usage): 16px on a
140
+ phone, 20px from 768px (`md`). Heads, notices and footers pad by it
141
+ (lib/head-edges.ts). A column of list cells sets it to 20px at every width
142
+ (`listColumnMargin`), where its rows' content starts (8px shape inset +
143
+ 12px), so its head, toolbar and rows share one line on a phone too. */
144
+ @layer theme {
145
+ :root,
146
+ :host {
147
+ --column-margin: 16px;
148
+ }
149
+ @media (width >= 48rem) {
150
+ :root,
151
+ :host {
152
+ --column-margin: 20px;
153
+ }
154
+ }
155
+ }
156
+
139
157
  /* Desktop type: from 768px (Tailwind's `md`, where the desktop layout begins)
140
158
  with a mouse or trackpad, the same query as the desktop metrics in
141
159
  foundation.css. Feishu's PC scale, 14/22 for reading, 12px for notes (on an
@@ -299,12 +317,16 @@
299
317
  --color-fill-subtle: var(--fill-subtle);
300
318
  --color-fill-medium: var(--fill-medium);
301
319
  --color-fill-frame-medium: var(--fill-frame-medium);
320
+ --color-fill-cell-hover: var(--fill-cell-hover);
321
+ --color-fill-cell-press: var(--fill-cell-press);
322
+ --color-fill-cell-selected: var(--fill-cell-selected);
302
323
  --color-layer-code: var(--layer-code);
303
324
  --color-foreground-link: var(--foreground-link);
304
325
  --color-sticker-ink: var(--sticker-ink);
305
326
  --color-sticker-paper: var(--sticker-paper);
306
327
  --color-sticker-edge: var(--sticker-edge);
307
328
  --color-sticker-medium: var(--sticker-medium);
329
+ --color-sticker-ink-medium: var(--sticker-ink-medium);
308
330
  --color-presence-online: var(--presence-online);
309
331
  --color-presence-busy: var(--presence-busy);
310
332
  --color-presence-busy-soft: var(--presence-busy-soft);
@@ -624,7 +646,7 @@ textarea:-webkit-autofill:disabled {
624
646
  @keyframes raft-located {
625
647
  0%,
626
648
  60% {
627
- --located-fill: var(--info-soft);
649
+ --located-fill: var(--located-tint, var(--info-soft));
628
650
  animation-timing-function: ease-out;
629
651
  }
630
652
  100% {
@@ -635,20 +657,21 @@ textarea:-webkit-autofill:disabled {
635
657
  @keyframes raft-located-still {
636
658
  from,
637
659
  to {
638
- --located-fill: var(--info-soft);
660
+ --located-fill: var(--located-tint, var(--info-soft));
639
661
  }
640
662
  }
641
663
 
642
664
  /* The shorthand replaces any animation of the element's own while it is
643
665
  located; no raft-ui row has one. It runs on every located item, marked or
644
666
  not, so a mark that comes and goes (a popup opened and closed) doesn't
645
- start the highlight over. */
646
- [data-located] {
667
+ start the highlight over. A list cell runs it on its shape instead (below). */
668
+ [data-located]:not(.list-cell) {
647
669
  animation: var(--located-animation, raft-located) 2s linear;
648
670
  }
649
671
 
650
672
  [data-located]:not(
651
673
  [data-message-item],
674
+ .list-cell,
652
675
  :active,
653
676
  [data-selected]:not([data-selected="false"]),
654
677
  [data-active="true"],
@@ -659,6 +682,28 @@ textarea:-webkit-autofill:disabled {
659
682
  background-image: linear-gradient(var(--located-fill), var(--located-fill));
660
683
  }
661
684
 
685
+ /* A list cell (lib/list-cell.ts, marked with the `list-cell` class, which
686
+ survives a row rendered through another part's `render`, where its
687
+ data-slot doesn't) draws its states on its inset ::before shape and leaves
688
+ the row transparent, so its located fill is painted there too, in the
689
+ cell's selected tint (fill-cell-selected, stronger in dark). The animation
690
+ runs on the shape: the registered fill doesn't inherit. */
691
+ .list-cell[data-located]::before {
692
+ --located-tint: var(--fill-cell-selected);
693
+ animation: var(--located-animation, raft-located) 2s linear;
694
+ }
695
+
696
+ .list-cell[data-located]:not(
697
+ :active,
698
+ [data-selected]:not([data-selected="false"]),
699
+ [data-active]:not([data-active="false"]),
700
+ [aria-selected="true"],
701
+ [aria-current]:not([aria-current="false"]),
702
+ [data-popup-open]
703
+ )::before {
704
+ background-image: linear-gradient(var(--located-fill), var(--located-fill));
705
+ }
706
+
662
707
  /* Reduced motion: the same 2s, held still, then off without a fade. */
663
708
  @media (prefers-reduced-motion: reduce) {
664
709
  [data-located] {
@@ -830,6 +875,10 @@ textarea:-webkit-autofill:disabled {
830
875
  background-image: linear-gradient(var(--sticker-medium), var(--sticker-medium));
831
876
  }
832
877
 
878
+ @utility overlay-sticker-ink-medium {
879
+ background-image: linear-gradient(var(--sticker-ink-medium), var(--sticker-ink-medium));
880
+ }
881
+
833
882
  @utility overlay-frame-medium {
834
883
  background-image: linear-gradient(var(--fill-frame-medium), var(--fill-frame-medium));
835
884
  }
@@ -885,6 +934,51 @@ textarea:-webkit-autofill:disabled {
885
934
  background-image: linear-gradient(var(--fill-subtle), var(--fill-subtle));
886
935
  }
887
936
 
937
+ /* The marker of a list cell (lib/list-cell.ts), read by the located rules
938
+ above. */
939
+ @utility list-cell {
940
+ --list-cell: 1;
941
+ }
942
+
943
+ /* The scrollbar of a scroller that holds list cells (design/patterns/
944
+ lists.md): an 8px classic scrollbar with a 4px thumb, so a cell's
945
+ end inset can come out of the scrollbar's own width and its fill sits 8px
946
+ from both edges of the list. Styling ::-webkit-scrollbar makes Chromium
947
+ draw this classic, always-visible 8px bar even where the platform's own
948
+ scrollbar would overlay (a phone, macOS by default), so the bar takes 8px
949
+ of room wherever the list scrolls. Pair it with useScrollbarSize, which
950
+ publishes the width the bar really takes (8px, or 0 where it doesn't
951
+ show), so the shape stays 8px from both edges either way. scrollbar-width and
952
+ scrollbar-color stay auto: either one switches Chromium off the
953
+ ::-webkit-scrollbar styling. Firefox takes its thin scrollbar, 8px. */
954
+ @utility scrollbar-list {
955
+ scrollbar-width: auto;
956
+ scrollbar-color: auto;
957
+ &::-webkit-scrollbar {
958
+ width: 8px;
959
+ height: 8px;
960
+ }
961
+ &::-webkit-scrollbar-track {
962
+ background: transparent;
963
+ }
964
+ &::-webkit-scrollbar-thumb {
965
+ min-height: 32px;
966
+ border: 2px solid transparent;
967
+ border-radius: 4px;
968
+ background: color-mix(in oklch, var(--foreground) 24%, transparent);
969
+ background-clip: padding-box;
970
+ }
971
+ @media (hover: hover) {
972
+ &:hover::-webkit-scrollbar-thumb {
973
+ background-color: color-mix(in oklch, var(--foreground) 36%, transparent);
974
+ }
975
+ }
976
+ @supports not selector(::-webkit-scrollbar) {
977
+ scrollbar-width: thin;
978
+ scrollbar-color: color-mix(in oklch, var(--foreground) 24%, transparent) transparent;
979
+ }
980
+ }
981
+
888
982
  /* Space and rules between siblings: stack-y-* / stack-x-* and rule-y / rule-x
889
983
  / rule-<colour>. Use these, never Tailwind's space-* and divide-*.
890
984
 
package/dist/tokens.json CHANGED
@@ -1567,6 +1567,51 @@
1567
1567
  }
1568
1568
  }
1569
1569
  }
1570
+ },
1571
+ "cell-hover": {
1572
+ "$description": "A list cell's hover and its menu-open fill (lib/list-cell.ts), drawn on the cell's inset shape. fill-subtle in light. In dark it steps up to 7.5% ink, so the rounded shape reads on a dark surface, where fill-subtle's 3% barely shows. Rows only: the global tiers don't change.",
1573
+ "$value": "{fill.subtle}",
1574
+ "$extensions": {
1575
+ "build.botiverse.raft": {
1576
+ "modes": {
1577
+ "dark": {
1578
+ "colorSpace": "oklch",
1579
+ "components": [0.9843, 0.004, 106.47],
1580
+ "alpha": 0.075
1581
+ }
1582
+ }
1583
+ }
1584
+ }
1585
+ },
1586
+ "cell-press": {
1587
+ "$description": "A list cell's press fill, the same with a mouse and on a touch screen. fill-medium in light. In dark 12% ink, a clear step over the cell's dark hover.",
1588
+ "$value": "{fill.medium}",
1589
+ "$extensions": {
1590
+ "build.botiverse.raft": {
1591
+ "modes": {
1592
+ "dark": {
1593
+ "colorSpace": "oklch",
1594
+ "components": [0.9843, 0.004, 106.47],
1595
+ "alpha": 0.12
1596
+ }
1597
+ }
1598
+ }
1599
+ }
1600
+ },
1601
+ "cell-selected": {
1602
+ "$description": "A list cell that is selected or open beside its list (an active InboxItem, a selected ListRow), and the located highlight on a cell. info-soft in light. In dark the cyan at 38% instead of 18%, so a selected cell stands out from a hovered one.",
1603
+ "$value": "{info.soft}",
1604
+ "$extensions": {
1605
+ "build.botiverse.raft": {
1606
+ "modes": {
1607
+ "dark": {
1608
+ "colorSpace": "oklch",
1609
+ "components": [0.452, 0.0862, 225.67],
1610
+ "alpha": 0.38
1611
+ }
1612
+ }
1613
+ }
1614
+ }
1570
1615
  }
1571
1616
  },
1572
1617
  "line": {
@@ -2849,6 +2894,14 @@
2849
2894
  "components": [0.1813, 0.005, 17.62],
2850
2895
  "alpha": 0.1
2851
2896
  }
2897
+ },
2898
+ "ink-medium": {
2899
+ "$description": "Hover tier medium on an ink sticker (the server tile in the rail or the sidebar header): hover, press and open, 6% paper in both modes, since ink laid over ink doesn't show.",
2900
+ "$value": {
2901
+ "colorSpace": "oklch",
2902
+ "components": [1, 0, 0],
2903
+ "alpha": 0.06
2904
+ }
2852
2905
  }
2853
2906
  },
2854
2907
  "presence": {
package/dist/wip.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as MessageListJumpPillProps, Ai as PreviewCardFooter, As as TextLinkProps, B as DragMessages, C as InboxItemProps, Ca as MobileNavServerPopoverRowLabelProps, Ci as PreviewCardBodyProps, Da as PopoverActionsProps, Ea as PopoverActions, Fi as PreviewCardMetaProps, Fs as DialogSheetContentProps, G as dragMessages, H as DragPlace, Hs as DialogContentProps, Is as Dialog, J as MessageListJumpPill, K as MessageListJumpControls, Ks as DialogFooterNote, Ma as PopoverBody, Ms as DialogCommit, Na as PopoverBodyProps, Ns as DialogCommitProps, Oi as PreviewCardEyebrow, Pi as PreviewCardMeta, Ps as DialogSheetContent, Q as MessageListJumpPillGroupProps, R as DEFAULT_DRAG_MESSAGES, Sa as MobileNavServerPopoverRowLabel, Si as PreviewCardBody, To as DropdownMenuLinkItemProps, U as createDragAnnouncements, V as DragNamed, W as dragInstructions, X as MessageListJumpPillDismissProps, Y as MessageListJumpPillDismiss, Z as MessageListJumpPillGroup, _a as MobileNavServerPopoverRow, _t as MessageQuotedPreviewAuthorDelegatedByProps, aa as MobileNavServerPopover, ac as DialogSheetBackProps, ba as MobileNavServerPopoverRowDescription, bc as DataAttributes, ca as MobileNavServerPopoverDestination, ci as AvatarGroupButton, da as MobileNavServerPopoverDestinationsProps, dn as MessageReferenceReadMarkProps, dr as MessageItemDelegatedBy, fa as MobileNavServerPopoverGroup, fr as MessageItemDelegatedByButton, ga as MobileNavServerPopoverProps, gr as MessageItemDelegatedByProps, gt as MessageQuotedPreviewAuthorDelegatedBy, ha as MobileNavServerPopoverListProps, hc as ButtonProps, hr as MessageItemDelegatedByNameProps, ia as MobileNavServerItemProps, ic as DialogSheetBack, ji as PreviewCardFooterProps, ki as PreviewCardEyebrowProps, la as MobileNavServerPopoverDestinationProps, lc as DialogTitleProps, li as AvatarGroupButtonProps, lr as MessageItemDelegatedAvatar, ma as MobileNavServerPopoverList, mr as MessageItemDelegatedByName, nn as MessageReferenceIcon, oa as MobileNavServerPopoverContent, pa as MobileNavServerPopoverGroupProps, pr as MessageItemDelegatedByButtonProps, q as MessageListJumpControlsProps, qs as DialogFooterNoteProps, ra as MobileNavServerItem, rn as MessageReferenceIconProps, sa as MobileNavServerPopoverContentProps, u as InboxItemDensity, ua as MobileNavServerPopoverDestinations, uc as DialogTrigger, un as MessageReferenceReadMark, ur as MessageItemDelegatedAvatarProps, va as MobileNavServerPopoverRowBody, vi as PreviewCardActions, wa as MobileNavServerPopoverRowProps, wo as DropdownMenuLinkItem, xa as MobileNavServerPopoverRowDescriptionProps, xc as StyledProps, ya as MobileNavServerPopoverRowBodyProps, yc as VariantProps, yi as PreviewCardActionsProps, ys as ListRowProps, z as DragAnnouncementSource, zs as DialogClose } from "./inbox-item-VkYFHY84.mjs";
1
+ import { $ as MessageListJumpPillProps, Ai as PreviewCardFooter, As as TextLinkProps, B as DragMessages, C as InboxItemProps, Ca as MobileNavServerPopoverRowLabelProps, Ci as PreviewCardBodyProps, Da as PopoverActionsProps, Ea as PopoverActions, Fi as PreviewCardMetaProps, Fs as DialogSheetContentProps, G as dragMessages, H as DragPlace, Hs as DialogContentProps, Is as Dialog, J as MessageListJumpPill, K as MessageListJumpControls, Ks as DialogFooterNote, Ma as PopoverBody, Ms as DialogCommit, Na as PopoverBodyProps, Ns as DialogCommitProps, Oi as PreviewCardEyebrow, Pi as PreviewCardMeta, Ps as DialogSheetContent, Q as MessageListJumpPillGroupProps, R as DEFAULT_DRAG_MESSAGES, Sa as MobileNavServerPopoverRowLabel, Si as PreviewCardBody, To as DropdownMenuLinkItemProps, U as createDragAnnouncements, V as DragNamed, W as dragInstructions, X as MessageListJumpPillDismissProps, Y as MessageListJumpPillDismiss, Z as MessageListJumpPillGroup, _a as MobileNavServerPopoverRow, _t as MessageQuotedPreviewAuthorDelegatedByProps, aa as MobileNavServerPopover, ac as DialogSheetBackProps, ba as MobileNavServerPopoverRowDescription, bc as DataAttributes, ca as MobileNavServerPopoverDestination, ci as AvatarGroupButton, da as MobileNavServerPopoverDestinationsProps, dn as MessageReferenceReadMarkProps, dr as MessageItemDelegatedBy, fa as MobileNavServerPopoverGroup, fr as MessageItemDelegatedByButton, ga as MobileNavServerPopoverProps, gr as MessageItemDelegatedByProps, gt as MessageQuotedPreviewAuthorDelegatedBy, ha as MobileNavServerPopoverListProps, hc as ButtonProps, hr as MessageItemDelegatedByNameProps, ia as MobileNavServerItemProps, ic as DialogSheetBack, ji as PreviewCardFooterProps, ki as PreviewCardEyebrowProps, la as MobileNavServerPopoverDestinationProps, lc as DialogTitleProps, li as AvatarGroupButtonProps, lr as MessageItemDelegatedAvatar, ma as MobileNavServerPopoverList, mr as MessageItemDelegatedByName, nn as MessageReferenceIcon, oa as MobileNavServerPopoverContent, pa as MobileNavServerPopoverGroupProps, pr as MessageItemDelegatedByButtonProps, q as MessageListJumpControlsProps, qs as DialogFooterNoteProps, ra as MobileNavServerItem, rn as MessageReferenceIconProps, sa as MobileNavServerPopoverContentProps, u as InboxItemDensity, ua as MobileNavServerPopoverDestinations, uc as DialogTrigger, un as MessageReferenceReadMark, ur as MessageItemDelegatedAvatarProps, va as MobileNavServerPopoverRowBody, vi as PreviewCardActions, wa as MobileNavServerPopoverRowProps, wo as DropdownMenuLinkItem, xa as MobileNavServerPopoverRowDescriptionProps, xc as StyledProps, ya as MobileNavServerPopoverRowBodyProps, yc as VariantProps, yi as PreviewCardActionsProps, ys as ListRowProps, z as DragAnnouncementSource, zs as DialogClose } from "./inbox-item-B4nNvpp1.mjs";
2
2
  import { CSSProperties, ComponentProps, ComponentPropsWithRef, ReactNode, RefObject } from "react";
3
3
  import { Button } from "@base-ui/react/button";
4
4
  import { useRender } from "@base-ui/react/use-render";
@@ -822,7 +822,8 @@ type InboxItemSkeletonListProps = useRender.ComponentProps<"div"> & InboxItemSke
822
822
  /**
823
823
  * The list of `InboxItemSkeleton` rows that stands in for a list of
824
824
  * `InboxItem` rows while it loads, with nothing between or around the rows
825
- * that the loaded list doesn't have (no gap, no border, no card). Renders
825
+ * that the loaded list doesn't have (no border, no card): only the list's
826
+ * 2px gap, which the loaded list has too (design/patterns/lists.md). Renders
826
827
  * `count` rows of the given shape, or its children, once `delay` (1 second by
827
828
  * default) has passed. It isn't `aria-busy` itself: it goes away when the
828
829
  * content arrives, so mark the region that stays, such as the list's panel or
package/dist/wip.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { cn } from "./cn.mjs";
2
- import { $ as MessageListJumpPillGroup, $n as PreviewCardActions, A as useDragSensors, Aa as useThemeScopeProps, Ai as Checkbox, B as keepGrabInside, Bi as ListRowMeta, Bn as RadioGroup, Br as MouseOnlyPointerSensor, C as DragRefusalHint, Ca as Button$1, Cr as MobileNavServerPopoverRowLabel, D as MOUSE_DRAG_DISTANCE_PX, Da as OverlayLayerProvider, E as DragRemeasure, Ea as defaultNativeButton, F as DRAG_SIBLING_TRANSITION, Fi as ListRowBottom, G as DEFAULT_DRAG_MESSAGES, Gi as TooltipContent, Gn as InputGroupAddon, Gr as useMouseOnlyPointerSensor, Hi as ListRowTop, Hn as RadioGroupItem, Hr as TOUCH_DRAG_HOLD_MS, I as DROP_GLIDE, J as dragInstructions, Ji as TooltipTrigger, Jn as measureContent, K as SILENT_DRAG_ANNOUNCEMENTS, Kn as InputGroupInput, L as DragLift, Li as ListRowDescription, Ln as AvatarGroupButton, Lt as MessageReferenceReadMark, M as DRAG_KEYBOARD_OFFSET_PX, N as DRAG_LIFT_Z_INDEX, Na as tv, Ni as ListRow, Nt as MessageReferenceIcon, O as listKeyboardCoordinates, Oa as useParentOverlayKind, Or as PopoverBody, P as DRAG_SETTLE, Pi as ListRowBody, Q as MessageListJumpPillDismiss, Qi as DialogSheetContent, R as ORIGIN_OPACITY, S as Skeleton, Sr as MobileNavServerPopoverRowDescription, T as DRAG_KEYBOARD_CODES, Ta as Spinner, Tr as PopoverActions, U as LIFT_CLASS, Un as chipRemoveBase, Ur as TOUCH_DRAG_TOLERANCE_PX, V as useDragSiblingTransition, Vi as ListRowTitle, Vr as TOUCH_DRAG_DISTANCE_PX, Wi as Tooltip, Wn as InputGroup, Wr as useHoldThenMoveTouchSensor, X as MessageListJumpControls, Xn as observeTruncation, Y as dragMessages, Yi as usePopupCollisionPadding, Yn as measureElement, Z as MessageListJumpPill, Zi as DialogCommit, Zn as readNow, _ as InboxItemTrailing, _r as MobileNavServerPopoverDestinations, a as InboxItemContext, ar as PreviewCardFooter, b as useLatestRef, br as MobileNavServerPopoverRow, c as InboxItemLeading, da as DialogSheetBack, dn as MessageItemDelegatedByButton, ea as Dialog, fn as MessageItemDelegatedByName, g as InboxItemTitle, gr as MobileNavServerPopoverDestination, h as InboxItemTimestamp, hr as MobileNavServerPopoverContent, i as InboxItemContent, ii as DropdownMenuLinkItem, ir as PreviewCardEyebrow, j as DRAG_AUTO_SCROLL_ZONE_PX, ja as useTheme, k as useDragAcrossLists, ln as MessageItemDelegatedAvatar, lt as MessageQuotedPreviewAuthorDelegatedBy, ma as DialogTrigger, mr as MobileNavServerPopover, na as DialogClose, o as InboxItemHeading, oa as DialogFooterNote, pa as DialogTitle, pr as MobileNavServerItem, q as createDragAnnouncements, qn as useOverflowTitle, r as InboxItemBody, ra as DialogContent, sr as PreviewCardMeta, t as InboxItem, tr as PreviewCardBody, un as MessageItemDelegatedBy, vr as MobileNavServerPopoverGroup, w as DropPlaceholder, x as hudTextAction, xr as MobileNavServerPopoverRowBody, y as inboxItem, ya as TextLink, yr as MobileNavServerPopoverList, z as cancelDrag, zr as HoldThenMoveTouchSensor } from "./inbox-item-DbZusMRA.mjs";
2
+ import { $ as MessageListJumpPillGroup, $n as PreviewCardActions, A as useDragSensors, Aa as OverlayLayerProvider, Ai as Checkbox, B as keepGrabInside, Bi as ListRowMeta, Bn as RadioGroup, Br as MouseOnlyPointerSensor, C as DragRefusalHint, Cr as MobileNavServerPopoverRowLabel, D as MOUSE_DRAG_DISTANCE_PX, E as DragRemeasure, Ea as Button$1, F as DRAG_SIBLING_TRANSITION, Fi as ListRowBottom, G as DEFAULT_DRAG_MESSAGES, Gn as InputGroupAddon, Gr as useMouseOnlyPointerSensor, Hi as ListRowTop, Hn as RadioGroupItem, Hr as TOUCH_DRAG_HOLD_MS, I as DROP_GLIDE, Ia as tv, J as dragInstructions, Ji as TooltipContent, Jn as measureContent, K as SILENT_DRAG_ANNOUNCEMENTS, Kn as InputGroupInput, L as DragLift, Li as ListRowDescription, Ln as AvatarGroupButton, Lt as MessageReferenceReadMark, M as DRAG_KEYBOARD_OFFSET_PX, N as DRAG_LIFT_Z_INDEX, Na as useThemeScopeProps, Ni as ListRow, Nt as MessageReferenceIcon, O as listKeyboardCoordinates, Oa as Spinner, Or as PopoverBody, P as DRAG_SETTLE, Pa as useTheme, Pi as ListRowBody, Q as MessageListJumpPillDismiss, Qi as usePopupCollisionPadding, R as ORIGIN_OPACITY, S as Skeleton, Sa as TextLink, Sr as MobileNavServerPopoverRowDescription, T as DRAG_KEYBOARD_CODES, Tr as PopoverActions, U as LIFT_CLASS, Un as chipRemoveBase, Ur as TOUCH_DRAG_TOLERANCE_PX, V as useDragSiblingTransition, Vi as ListRowTitle, Vr as TOUCH_DRAG_DISTANCE_PX, Wn as InputGroup, Wr as useHoldThenMoveTouchSensor, X as MessageListJumpControls, Xn as observeTruncation, Y as dragMessages, Yn as measureElement, Z as MessageListJumpPill, Zi as TooltipTrigger, Zn as readNow, _ as InboxItemTrailing, _a as DialogTrigger, _r as MobileNavServerPopoverDestinations, a as InboxItemContext, aa as DialogClose, ar as PreviewCardFooter, b as useLatestRef, br as MobileNavServerPopoverRow, c as InboxItemLeading, dn as MessageItemDelegatedByButton, ea as DialogCommit, fn as MessageItemDelegatedByName, g as InboxItemTitle, ga as DialogTitle, gr as MobileNavServerPopoverDestination, h as InboxItemTimestamp, hr as MobileNavServerPopoverContent, i as InboxItemContent, ii as DropdownMenuLinkItem, ir as PreviewCardEyebrow, j as DRAG_AUTO_SCROLL_ZONE_PX, ja as useParentOverlayKind, k as useDragAcrossLists, ka as defaultNativeButton, la as DialogFooterNote, ln as MessageItemDelegatedAvatar, lt as MessageQuotedPreviewAuthorDelegatedBy, ma as DialogSheetBack, mr as MobileNavServerPopover, o as InboxItemHeading, oa as DialogContent, pr as MobileNavServerItem, q as createDragAnnouncements, qi as Tooltip, qn as useOverflowTitle, r as InboxItemBody, ra as Dialog, sr as PreviewCardMeta, t as InboxItem, ta as DialogSheetContent, tr as PreviewCardBody, un as MessageItemDelegatedBy, vr as MobileNavServerPopoverGroup, w as DropPlaceholder, x as hudTextAction, xr as MobileNavServerPopoverRowBody, y as inboxItem, yr as MobileNavServerPopoverList, z as cancelDrag, zr as HoldThenMoveTouchSensor } from "./inbox-item-DHJOrxB8.mjs";
3
3
  import { Check, ChevronDown, LoaderCircle, Plus, Search, X } from "lucide-react";
4
4
  import { createContext, use, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1867,7 +1867,7 @@ function InboxItemLeadingBadge({ className, render, ...props }) {
1867
1867
  //#endregion
1868
1868
  //#region src/components/inbox-item/inbox-item-skeleton.recipe.ts
1869
1869
  const inboxItemSkeleton = tv({ slots: {
1870
- list: ["flex min-w-0 flex-col"],
1870
+ list: ["flex min-w-0 flex-col gap-0.5"],
1871
1871
  row: [
1872
1872
  "[--inbox-item-skeleton-context:5rem] [--inbox-item-skeleton-title:60%] [--inbox-item-skeleton-body:80%]",
1873
1873
  "nth-[3n+2]:[--inbox-item-skeleton-context:4rem] nth-[3n+2]:[--inbox-item-skeleton-title:45%] nth-[3n+2]:[--inbox-item-skeleton-body:70%]",
@@ -1927,7 +1927,8 @@ function InboxItemSkeleton({ density, leading = false, context = false, ...props
1927
1927
  /**
1928
1928
  * The list of `InboxItemSkeleton` rows that stands in for a list of
1929
1929
  * `InboxItem` rows while it loads, with nothing between or around the rows
1930
- * that the loaded list doesn't have (no gap, no border, no card). Renders
1930
+ * that the loaded list doesn't have (no border, no card): only the list's
1931
+ * 2px gap, which the loaded list has too (design/patterns/lists.md). Renders
1931
1932
  * `count` rows of the given shape, or its children, once `delay` (1 second by
1932
1933
  * default) has passed. It isn't `aria-busy` itself: it goes away when the
1933
1934
  * content arrives, so mark the region that stays, such as the list's panel or
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botiverse/raft-ui",
3
- "version": "0.47.1",
3
+ "version": "0.49.0",
4
4
  "description": "React components and CSS foundations for the Raft Design System.",
5
5
  "keywords": [
6
6
  "agent-skills",