@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/CHANGELOG.md +27 -0
- package/dist/foundation.css +24 -0
- package/dist/{inbox-item-VkYFHY84.d.mts → inbox-item-B4nNvpp1.d.mts} +37 -13
- package/dist/{inbox-item-DbZusMRA.mjs → inbox-item-DHJOrxB8.mjs} +89 -36
- package/dist/index.d.mts +23 -3
- package/dist/index.mjs +124 -66
- package/dist/styles.css +98 -4
- package/dist/tokens.json +53 -0
- package/dist/wip.d.mts +3 -2
- package/dist/wip.mjs +4 -3
- package/package.json +1 -1
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-
|
|
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
|
|
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
|
|
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
|
|
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
|