@botiverse/raft-ui 0.22.0 → 0.23.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 +121 -0
- package/dist/components/steps/steps.css +15 -10
- package/dist/components/timeline/timeline.css +2 -2
- package/dist/foundation.css +9 -3
- package/dist/{inbox-item.recipe-3j4DHKZ2.mjs → inbox-item-B-y7PxZ_.mjs} +625 -14
- package/dist/{index-DT1Hg5N-.d.mts → inbox-item-ChGeZBFb.d.mts} +263 -4
- package/dist/index.d.mts +40 -252
- package/dist/index.mjs +356 -640
- package/dist/style.css +7 -7
- package/dist/styles.css +80 -5
- package/dist/tokens.json +15 -2
- package/dist/wip.d.mts +65 -2
- package/dist/wip.mjs +140 -4
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cn } from "./cn.mjs";
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as MessageMultiSelect, $n as PopoverTitle, $r as ListRowTitle, $t as MessageItemAvatarSlot, A as MessageQuotedPreview, Ai as DialogSheetReset, Ar as PanelBody, At as MessageItemReadReceipt, B as MessageQuotedPreviewLoading, Bi as ThemeStateContext, Br as ScrollAreaThumb, Bt as MessageItemMeta, Ci as DialogSurface, Cn as PreviewCardHeader, Cr as DropdownMenuShortcut, Ct as MessageReactionTooltipMeta, D as MessageListHistoryLimited, Di as panelToggleAction, Dn as PreviewCardSeparator, Dr as Kbd, Dt as MessageReactionTooltipSeparator, E as MessageListEndFade, Ei as PanelAction, En as PreviewCardPortal, Er as DropdownMenuTrigger, Et as MessageReactionTooltipNames, F as MessageQuotedPreviewAuthorMeta, Fr as PanelSection, G as MessageEmbed, Gi as headEdgePull, Gr as ListRow, Gt as MessageItemTime, H as MessageQuotedPreviewThread, Hi as stackedActions, Hr as Checkbox, Ht as MessageItemSenderBadges, I as MessageQuotedPreviewAuthorName, Ii as useParentOverlayKind, Ir as ScrollArea, J as MessageEmbedHeader, Jn as PopoverDescription, Jr as ListRowChevron, Jt as MessageItemContent, K as MessageEmbedContent, Ki as headEdges, Kn as PopoverClose, Kr as ListRowBody, Kt as MessageItemAttachments, L as MessageQuotedPreviewChannel, Li as withOverlayLayer, Lr as ScrollAreaContent, M as MessageQuotedPreviewAttachments, Mi as buttonVariants, Mr as PanelHeaderRoot, Mt as MessageItemToolbar, N as MessageQuotedPreviewAuthor, Ni as Spinner, Nr as PanelScrollContent, Nt as MessageItemToolbarButton, O as MessageListNotice, Oi as TextLink, On as PreviewCardTitle, Or as KbdGroup, Ot as MessageItemBadge, Pi as defaultNativeButton, Pr as PanelScrollViewport, Q as MessageTextSelectionToolbarSeparator, Qn as PopoverSeparator, Qr as ListRowMeta, Qt as MessageItemSearchMatch, R as MessageQuotedPreviewContent, Ri as useThemeScopeProps, Rr as ScrollAreaCorner, Rt as MessageItemHeader, Sr as DropdownMenuSeparator, St as MessageReactionTooltipContent, T as MessageListDateDivider, Ti as DialogTrigger, Tn as PreviewCardPopup, Tr as DropdownMenuSubmenuTrigger, Tt as MessageReactionTooltipNameText, U as MessageQuotedPreviewTimestamp, Ui as useStackedActions, Un as PopoverArrow, Ur as CheckboxIndicator, Ut as MessageItemSenderButton, V as MessageQuotedPreviewText, Vi as tv, Vn as Popover, Vr as ScrollAreaViewport, Vt as MessageItemSender, W as MessageQuotedPreviewUnavailable, Wi as controlIconInset, Wn as PopoverBackdrop, Wr as PRESENCE_COLOR, Wt as MessageItemSenderGroup, X as MessageTextSelectionToolbar, Xn as PopoverPopup, Xr as ListRowGroup, Xt as MessageItemEmbedded, Y as messageEmbed, Yn as PopoverHeader, Yr as ListRowDescription, Yt as MessageItemEdited, Z as MessageTextSelectionToolbarButton, Zn as PopoverPortal, Zr as ListRowIcon, Zt as MessageItemFooter, _ as InboxItemTrailing, _n as PreviewCardArrow, _r as DropdownMenuPopup, _t as MessageReactionGlyph, a as InboxItemContext, ai as TooltipProvider, an as AvatarBadge, ar as MobileNavLabel, at as MessageReferenceIndicator, b as Skeleton, bi as DialogOverlay, bn as PreviewCardDescription, br as DropdownMenuRadioItem, bt as MessageReactionQuickButton, c as InboxItemLeading, cn as AvatarGroupCount, cr as DropdownMenuCheckboxItem, d as InboxItemMetadata, di as Dialog, dr as DropdownMenuFooter, dt as MessageReferenceUnavailable, ei as ListRowTop, en as MessageItemContinuationTime, er as PopoverTrigger, et as MessageMultiSelectCheckbox, f as InboxItemSelection, fi as DialogBody, fr as DropdownMenuItem, ft as inlineChip, g as InboxItemTitle, gi as DialogFooter, gt as MessageReactionErrorIndicator, h as InboxItemTimestamp, hi as DialogDescription, hn as PreviewCard, hr as DropdownMenuLabel, ht as MessageReactionCount, i as InboxItemContent, ii as TooltipPortal, in as Avatar, ir as MobileNavItem, j as MessageQuotedPreviewAttachment, ji as Button, jr as PanelFooter, jt as MessageItemSavedIndicator, k as MessageList, ki as textLinkVariants, kn as PreviewCardTrigger, kr as Panel, kt as MessageItemBadgeSeparator, l as InboxItemMarks, ln as AvatarImage, lr as DropdownMenuCheckboxItemIndicator, lt as MessageReferenceSuffix, m as InboxItemSubtitle, mi as DialogContent, mr as DropdownMenuItemLabel, mt as MessageReactionChip, n as InboxItemActions, ni as Tooltip, nn as MessageItem, nr as useHoldThenMoveTouchSensor, nt as MessageMultiSelectToolbarActions, o as InboxItemHeading, oi as TooltipTrigger, on as AvatarFallback, or as MobileNavRoot, ot as MessageReferenceLabel, p as InboxItemSender, pi as DialogClose, pr as DropdownMenuItemCount, pt as MessageReactionAddButton, q as MessageEmbedFooter, qi as decisionWidth, qn as PopoverContent, qr as ListRowBottom, qt as MessageItemBody, r as InboxItemBody, ri as TooltipContent, rn as searchHit, rr as useMouseOnlyPointerSensor, rt as MessageReferenceChip, s as InboxItemHoverTarget, si as Badge, sn as AvatarGroup, sr as DropdownMenu, st as MessageReferencePending, t as InboxItem, ti as ListRowValue, tn as MessageItemGutter, tr as PopoverViewport, tt as MessageMultiSelectToolbar, u as InboxItemMessage, ui as useMobileViewport, un as useOverflowTitle, ur as DropdownMenuContent, ut as MessageReferenceText, v as InboxItemTrigger, vi as DialogHeader, vr as DropdownMenuPortal, vt as MessageReactionPickerContent, wi as DialogTitle, wr as DropdownMenuSubmenu, wt as MessageReactionTooltipName, xi as DialogPortal, xr as DropdownMenuRadioItemIndicator, xt as MessageReactionQuickRow, yi as DialogNav, yn as PreviewCardContent, yr as DropdownMenuRadioGroup, yt as MessageReactionPickerStatic, z as MessageQuotedPreviewHeader, zi as useTheme, zr as ScrollAreaScrollbar, zt as MessageItemInlineStatus } from "./inbox-item-B-y7PxZ_.mjs";
|
|
3
3
|
import { Dialog as Dialog$1 } from "@base-ui/react/dialog";
|
|
4
4
|
import { AlertTriangle, Bell, Check, CheckCircle2, ChevronDown, ChevronLeft, ChevronRight, CircleCheck, Copy, FileText, Image, Info, TriangleAlert, Upload, X, Zap } from "lucide-react";
|
|
5
5
|
import { Children, cloneElement, createContext, createElement, isValidElement, use, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
@@ -587,6 +587,7 @@ function DrawerActions({ className, render, children, ...props }) {
|
|
|
587
587
|
const { actions } = drawer({ axis: swipeAxis });
|
|
588
588
|
const defaultProps = {
|
|
589
589
|
className: actions({ className }),
|
|
590
|
+
"data-stacked": swipeAxis === "x" ? void 0 : "",
|
|
590
591
|
children
|
|
591
592
|
};
|
|
592
593
|
return useRender({
|
|
@@ -982,231 +983,6 @@ function CardFooter({ className, render, ...props }) {
|
|
|
982
983
|
});
|
|
983
984
|
}
|
|
984
985
|
//#endregion
|
|
985
|
-
//#region src/components/list-row/list-row.recipe.ts
|
|
986
|
-
const hairline = [
|
|
987
|
-
"before:pointer-events-none before:absolute before:top-0 before:right-0 before:hidden",
|
|
988
|
-
"before:left-(--list-row-rule-start) before:border-t before:border-line-hairline",
|
|
989
|
-
"[[data-slot=list-row]+&]:before:block [li+li>&]:before:block"
|
|
990
|
-
];
|
|
991
|
-
const listRow = tv({
|
|
992
|
-
slots: {
|
|
993
|
-
group: ["flex min-w-0 flex-col overflow-hidden", "rounded-container border border-line-hairline bg-layer-card text-foreground"],
|
|
994
|
-
root: [
|
|
995
|
-
"group/list-row relative flex w-full min-w-0 items-center gap-3 px-4 py-3 text-left",
|
|
996
|
-
"font-sans no-underline",
|
|
997
|
-
"transition-colors duration-100",
|
|
998
|
-
"outline-none focus-visible:keyboard:inset-ring-2 focus-visible:keyboard:inset-ring-foreground",
|
|
999
|
-
"data-selected:bg-info-soft",
|
|
1000
|
-
"[--list-row-ink:var(--foreground)] [--list-row-ink-2:var(--foreground-muted)] [--list-row-ink-3:var(--foreground-hint)]",
|
|
1001
|
-
"text-(--list-row-ink)",
|
|
1002
|
-
"not-disabled:not-aria-disabled:data-[tone=unread]:[--list-row-ink-2:var(--foreground)]",
|
|
1003
|
-
"not-disabled:not-aria-disabled:data-[tone=muted]:[--list-row-ink:var(--foreground-muted)]",
|
|
1004
|
-
"not-disabled:not-aria-disabled:data-[tone=away]:[--list-row-ink:var(--foreground-hint)]",
|
|
1005
|
-
"not-disabled:not-aria-disabled:data-[tone=away]:[--list-row-ink-2:var(--foreground-hint)]",
|
|
1006
|
-
"disabled:cursor-not-allowed disabled:[--list-row-ink:var(--foreground-disabled)]",
|
|
1007
|
-
"disabled:[--list-row-ink-2:var(--foreground-disabled)] disabled:[--list-row-ink-3:var(--foreground-disabled)]",
|
|
1008
|
-
"aria-disabled:cursor-not-allowed aria-disabled:[--list-row-ink:var(--foreground-disabled)]",
|
|
1009
|
-
"aria-disabled:[--list-row-ink-2:var(--foreground-disabled)] aria-disabled:[--list-row-ink-3:var(--foreground-disabled)]"
|
|
1010
|
-
],
|
|
1011
|
-
icon: ["flex shrink-0 items-center justify-center", "text-(--list-row-ink-3) [&>svg]:size-5 [&>svg]:shrink-0"],
|
|
1012
|
-
body: ["flex min-w-0 flex-1 flex-col gap-0.5"],
|
|
1013
|
-
line: ["flex min-w-0 items-center gap-2"],
|
|
1014
|
-
title: [
|
|
1015
|
-
"min-w-0 flex-1 truncate",
|
|
1016
|
-
"text-body font-semibold",
|
|
1017
|
-
"group-data-[tone=unread]/list-row:font-bold"
|
|
1018
|
-
],
|
|
1019
|
-
description: ["min-w-0 flex-1 truncate", "text-callout text-(--list-row-ink-2)"],
|
|
1020
|
-
meta: ["shrink-0", "font-mono text-mono-meta font-normal tabular-nums text-(--list-row-ink-3)"],
|
|
1021
|
-
value: ["max-w-[45%] shrink-0 truncate", "text-subhead text-(--list-row-ink-3)"],
|
|
1022
|
-
chevron: ["flex shrink-0 items-center justify-center", "text-(--list-row-ink-3) [&>svg]:size-5 [&>svg]:shrink-0"]
|
|
1023
|
-
},
|
|
1024
|
-
variants: {
|
|
1025
|
-
variant: {
|
|
1026
|
-
default: { root: ["min-h-16 [--list-row-rule-start:63px]", hairline] },
|
|
1027
|
-
plain: { root: ["[--list-row-rule-start:16px]", hairline] },
|
|
1028
|
-
entry: { root: "" }
|
|
1029
|
-
},
|
|
1030
|
-
interactive: {
|
|
1031
|
-
true: { root: [
|
|
1032
|
-
"not-disabled:not-aria-disabled:not-data-selected:hover:overlay-subtle",
|
|
1033
|
-
"not-disabled:not-aria-disabled:not-data-selected:active:overlay-medium",
|
|
1034
|
-
"not-data-selected:data-popup-open:overlay-subtle"
|
|
1035
|
-
] },
|
|
1036
|
-
false: {}
|
|
1037
|
-
},
|
|
1038
|
-
wrap: {
|
|
1039
|
-
true: { description: "whitespace-normal text-pretty" },
|
|
1040
|
-
false: {}
|
|
1041
|
-
}
|
|
1042
|
-
},
|
|
1043
|
-
defaultVariants: {
|
|
1044
|
-
variant: "default",
|
|
1045
|
-
interactive: true,
|
|
1046
|
-
wrap: false
|
|
1047
|
-
}
|
|
1048
|
-
});
|
|
1049
|
-
//#endregion
|
|
1050
|
-
//#region src/components/list-row/list-row.tsx
|
|
1051
|
-
/** An inset group: rows wrapped in a card (surface, hairline, radius-lg). */
|
|
1052
|
-
function ListRowGroup({ className, render, ...props }) {
|
|
1053
|
-
const { group } = listRow();
|
|
1054
|
-
const defaultProps = {
|
|
1055
|
-
"data-slot": "list-row-group",
|
|
1056
|
-
className: group({ className })
|
|
1057
|
-
};
|
|
1058
|
-
return useRender({
|
|
1059
|
-
defaultTagName: "div",
|
|
1060
|
-
render,
|
|
1061
|
-
props: mergeProps(defaultProps, props)
|
|
1062
|
-
});
|
|
1063
|
-
}
|
|
1064
|
-
/**
|
|
1065
|
-
* One row of a list. It renders a `button` by default; pass `render={<a />}`
|
|
1066
|
-
* (or a router link) for a row that goes somewhere. Children are the leading
|
|
1067
|
-
* block (an avatar, a channel or icon tile, `ListRowIcon`), `ListRowBody`, and
|
|
1068
|
-
* anything trailing (a value, a badge, a switch, `ListRowChevron`).
|
|
1069
|
-
*/
|
|
1070
|
-
function ListRow({ variant = "default", tone = "default", selected = false, interactive = true, className, render, ...props }) {
|
|
1071
|
-
const { root } = listRow({
|
|
1072
|
-
variant,
|
|
1073
|
-
interactive
|
|
1074
|
-
});
|
|
1075
|
-
const defaultProps = {
|
|
1076
|
-
"data-slot": "list-row",
|
|
1077
|
-
"data-variant": variant,
|
|
1078
|
-
"data-tone": tone === "default" ? void 0 : tone,
|
|
1079
|
-
"data-selected": selected ? "" : void 0,
|
|
1080
|
-
className: root({ className }),
|
|
1081
|
-
...interactive && !render ? { type: "button" } : {}
|
|
1082
|
-
};
|
|
1083
|
-
return useRender({
|
|
1084
|
-
defaultTagName: interactive ? "button" : "div",
|
|
1085
|
-
render,
|
|
1086
|
-
props: mergeProps(defaultProps, props)
|
|
1087
|
-
});
|
|
1088
|
-
}
|
|
1089
|
-
/** A 20px leading icon in ink-3: entry rows and settings. */
|
|
1090
|
-
function ListRowIcon({ className, render, ...props }) {
|
|
1091
|
-
const { icon } = listRow();
|
|
1092
|
-
const defaultProps = {
|
|
1093
|
-
"data-slot": "list-row-icon",
|
|
1094
|
-
"aria-hidden": true,
|
|
1095
|
-
className: icon({ className })
|
|
1096
|
-
};
|
|
1097
|
-
return useRender({
|
|
1098
|
-
defaultTagName: "span",
|
|
1099
|
-
render,
|
|
1100
|
-
props: mergeProps(defaultProps, props)
|
|
1101
|
-
});
|
|
1102
|
-
}
|
|
1103
|
-
/** The text column: the title and the preview, or a `ListRowTop` and a `ListRowBottom`. */
|
|
1104
|
-
function ListRowBody({ className, render, ...props }) {
|
|
1105
|
-
const { body } = listRow();
|
|
1106
|
-
const defaultProps = {
|
|
1107
|
-
"data-slot": "list-row-body",
|
|
1108
|
-
className: body({ className })
|
|
1109
|
-
};
|
|
1110
|
-
return useRender({
|
|
1111
|
-
defaultTagName: "span",
|
|
1112
|
-
render,
|
|
1113
|
-
props: mergeProps(defaultProps, props)
|
|
1114
|
-
});
|
|
1115
|
-
}
|
|
1116
|
-
/** The first line: the title, then the time. */
|
|
1117
|
-
function ListRowTop({ className, render, ...props }) {
|
|
1118
|
-
const { line } = listRow();
|
|
1119
|
-
const defaultProps = {
|
|
1120
|
-
"data-slot": "list-row-top",
|
|
1121
|
-
className: line({ className })
|
|
1122
|
-
};
|
|
1123
|
-
return useRender({
|
|
1124
|
-
defaultTagName: "span",
|
|
1125
|
-
render,
|
|
1126
|
-
props: mergeProps(defaultProps, props)
|
|
1127
|
-
});
|
|
1128
|
-
}
|
|
1129
|
-
/** The second line: the preview, then at most one badge. */
|
|
1130
|
-
function ListRowBottom({ className, render, ...props }) {
|
|
1131
|
-
const { line } = listRow();
|
|
1132
|
-
const defaultProps = {
|
|
1133
|
-
"data-slot": "list-row-bottom",
|
|
1134
|
-
className: line({ className })
|
|
1135
|
-
};
|
|
1136
|
-
return useRender({
|
|
1137
|
-
defaultTagName: "span",
|
|
1138
|
-
render,
|
|
1139
|
-
props: mergeProps(defaultProps, props)
|
|
1140
|
-
});
|
|
1141
|
-
}
|
|
1142
|
-
/** 16/24 600 on one line; the row's tone sets its weight and ink. */
|
|
1143
|
-
function ListRowTitle({ className, render, ...props }) {
|
|
1144
|
-
const { title } = listRow();
|
|
1145
|
-
const defaultProps = {
|
|
1146
|
-
"data-slot": "list-row-title",
|
|
1147
|
-
className: title({ className })
|
|
1148
|
-
};
|
|
1149
|
-
return useRender({
|
|
1150
|
-
defaultTagName: "span",
|
|
1151
|
-
render,
|
|
1152
|
-
props: mergeProps(defaultProps, props)
|
|
1153
|
-
});
|
|
1154
|
-
}
|
|
1155
|
-
/** The preview (who spoke first: "Wug: …") or a setting's consequence, 14/20 ink-2. */
|
|
1156
|
-
function ListRowDescription({ className, render, wrap = false, ...props }) {
|
|
1157
|
-
const { description } = listRow({ wrap });
|
|
1158
|
-
const defaultProps = {
|
|
1159
|
-
"data-slot": "list-row-description",
|
|
1160
|
-
className: description({ className })
|
|
1161
|
-
};
|
|
1162
|
-
return useRender({
|
|
1163
|
-
defaultTagName: "span",
|
|
1164
|
-
render,
|
|
1165
|
-
props: mergeProps(defaultProps, props)
|
|
1166
|
-
});
|
|
1167
|
-
}
|
|
1168
|
-
/** Machine-written facts in Space Mono 12, ink-3: the time, a gray count. */
|
|
1169
|
-
function ListRowMeta({ className, render, ...props }) {
|
|
1170
|
-
const { meta } = listRow();
|
|
1171
|
-
const defaultProps = {
|
|
1172
|
-
"data-slot": "list-row-meta",
|
|
1173
|
-
className: meta({ className })
|
|
1174
|
-
};
|
|
1175
|
-
return useRender({
|
|
1176
|
-
defaultTagName: "span",
|
|
1177
|
-
render,
|
|
1178
|
-
props: mergeProps(defaultProps, props)
|
|
1179
|
-
});
|
|
1180
|
-
}
|
|
1181
|
-
/** A setting's current value on the right, 15/20 ink-3, at most 45% of the row. */
|
|
1182
|
-
function ListRowValue({ className, render, ...props }) {
|
|
1183
|
-
const { value } = listRow();
|
|
1184
|
-
const defaultProps = {
|
|
1185
|
-
"data-slot": "list-row-value",
|
|
1186
|
-
className: value({ className })
|
|
1187
|
-
};
|
|
1188
|
-
return useRender({
|
|
1189
|
-
defaultTagName: "span",
|
|
1190
|
-
render,
|
|
1191
|
-
props: mergeProps(defaultProps, props)
|
|
1192
|
-
});
|
|
1193
|
-
}
|
|
1194
|
-
/** The ink-3 arrow of a row that opens another page. */
|
|
1195
|
-
function ListRowChevron({ className, render, ...props }) {
|
|
1196
|
-
const { chevron } = listRow();
|
|
1197
|
-
const defaultProps = {
|
|
1198
|
-
"data-slot": "list-row-chevron",
|
|
1199
|
-
"aria-hidden": true,
|
|
1200
|
-
className: chevron({ className }),
|
|
1201
|
-
children: /* @__PURE__ */ jsx(ChevronRight, {})
|
|
1202
|
-
};
|
|
1203
|
-
return useRender({
|
|
1204
|
-
defaultTagName: "span",
|
|
1205
|
-
render,
|
|
1206
|
-
props: mergeProps(defaultProps, props)
|
|
1207
|
-
});
|
|
1208
|
-
}
|
|
1209
|
-
//#endregion
|
|
1210
986
|
//#region src/components/status/status.tsx
|
|
1211
987
|
const status = tv({
|
|
1212
988
|
slots: { root: [
|
|
@@ -1228,7 +1004,7 @@ const status = tv({
|
|
|
1228
1004
|
size: {
|
|
1229
1005
|
xs: { root: "size-1.5 rounded-[1px] border" },
|
|
1230
1006
|
sm: { root: "size-2" },
|
|
1231
|
-
md: { root: "size-
|
|
1007
|
+
md: { root: "size-2.5" },
|
|
1232
1008
|
lg: { root: "size-[11px]" }
|
|
1233
1009
|
}
|
|
1234
1010
|
},
|
|
@@ -2308,10 +2084,10 @@ const sidebarSectionRecipe = tv({ slots: {
|
|
|
2308
2084
|
sidebarSectionControls: [
|
|
2309
2085
|
"flex shrink-0 items-center gap-1",
|
|
2310
2086
|
"pointer-events-none absolute top-1/2 right-0 -translate-y-1/2 opacity-0",
|
|
2311
|
-
"
|
|
2312
|
-
"
|
|
2313
|
-
"
|
|
2314
|
-
"
|
|
2087
|
+
"not-pointer-fine:static not-pointer-fine:pointer-events-auto not-pointer-fine:translate-y-0 not-pointer-fine:opacity-100",
|
|
2088
|
+
"pointer-fine:group-hover/section-header:pointer-events-auto pointer-fine:group-hover/section-header:opacity-100",
|
|
2089
|
+
"pointer-fine:focus-within:pointer-events-auto pointer-fine:focus-within:opacity-100",
|
|
2090
|
+
"pointer-fine:has-data-popup-open:pointer-events-auto pointer-fine:has-data-popup-open:opacity-100"
|
|
2315
2091
|
],
|
|
2316
2092
|
sidebarSectionControl: ["flex h-7 w-auto min-w-7 shrink-0 items-center justify-center p-0 -my-1.5", "[&>svg]:shrink-0 [&>svg:not([class*='size-'])]:size-4"]
|
|
2317
2093
|
} });
|
|
@@ -4541,10 +4317,72 @@ function SwitchThumb({ className, ...props }) {
|
|
|
4541
4317
|
});
|
|
4542
4318
|
}
|
|
4543
4319
|
//#endregion
|
|
4320
|
+
//#region src/lib/use-merged-ref.ts
|
|
4321
|
+
/**
|
|
4322
|
+
* Merges refs into one setter. Returns `[setRef, getRef]`: `setRef(el)` stores `el` and passes it to
|
|
4323
|
+
* every ref; `getRef()` reads the stored element. When a ref changes between renders (checked while
|
|
4324
|
+
* rendering), the old one is cleared and the new one gets the stored element at once. The setter
|
|
4325
|
+
* calls ref callbacks itself, so what they return is ignored.
|
|
4326
|
+
*/
|
|
4327
|
+
function useMergedRef(...refs) {
|
|
4328
|
+
const entries = useMemo(() => [], []);
|
|
4329
|
+
const elementRef = useRef(null);
|
|
4330
|
+
const getRef = useCallback(() => elementRef.current, []);
|
|
4331
|
+
const clearEntry = useCallback((entry) => {
|
|
4332
|
+
if (entry != null) {
|
|
4333
|
+
if (entry.type === "RefCallback") entry.ref(null);
|
|
4334
|
+
else entry.ref.current = null;
|
|
4335
|
+
}
|
|
4336
|
+
}, []);
|
|
4337
|
+
const applyStoredElement = useCallback((ref) => {
|
|
4338
|
+
if (typeof ref == "function") ref(getRef());
|
|
4339
|
+
else ref.current = getRef();
|
|
4340
|
+
}, [getRef]);
|
|
4341
|
+
const setRef = useCallback((el) => {
|
|
4342
|
+
elementRef.current = el;
|
|
4343
|
+
for (const entry of entries) if (entry == null) continue;
|
|
4344
|
+
else if (entry.type === "RefObject") entry.ref.current = el;
|
|
4345
|
+
else entry.ref(el);
|
|
4346
|
+
}, [entries]);
|
|
4347
|
+
for (let i = 0; i < refs.length; i++) {
|
|
4348
|
+
const ref = refs[i];
|
|
4349
|
+
const entry = entries[i];
|
|
4350
|
+
if (ref == null) {
|
|
4351
|
+
clearEntry(entry);
|
|
4352
|
+
entries[i] = null;
|
|
4353
|
+
} else {
|
|
4354
|
+
if (entry && entry.ref === ref) continue;
|
|
4355
|
+
if (typeof ref == "function") {
|
|
4356
|
+
if (entry != null) clearEntry(entry);
|
|
4357
|
+
entries[i] = {
|
|
4358
|
+
type: "RefCallback",
|
|
4359
|
+
ref
|
|
4360
|
+
};
|
|
4361
|
+
} else {
|
|
4362
|
+
if (entry != null) clearEntry(entry);
|
|
4363
|
+
entries[i] = {
|
|
4364
|
+
type: "RefObject",
|
|
4365
|
+
ref
|
|
4366
|
+
};
|
|
4367
|
+
}
|
|
4368
|
+
applyStoredElement(ref);
|
|
4369
|
+
}
|
|
4370
|
+
}
|
|
4371
|
+
for (let i = refs.length; i < entries.length; i++) {
|
|
4372
|
+
clearEntry(entries[i]);
|
|
4373
|
+
entries[i] = null;
|
|
4374
|
+
}
|
|
4375
|
+
return [setRef, getRef];
|
|
4376
|
+
}
|
|
4377
|
+
//#endregion
|
|
4544
4378
|
//#region src/components/segmented-control/segmented-control.tsx
|
|
4545
4379
|
const segmentedControl = tv({
|
|
4546
4380
|
slots: {
|
|
4547
|
-
root: [
|
|
4381
|
+
root: [
|
|
4382
|
+
"inline-flex min-w-0 items-center",
|
|
4383
|
+
"w-fit max-w-full flex-nowrap gap-[3px] rounded-[11px] bg-fill-muted p-[3px]",
|
|
4384
|
+
"data-overflowing:overflow-x-auto data-overflowing:overscroll-x-contain data-overflowing:scrollbar-none"
|
|
4385
|
+
],
|
|
4548
4386
|
item: [
|
|
4549
4387
|
"inline-flex min-w-0 shrink-0 items-center gap-1.5",
|
|
4550
4388
|
"outline-none disabled:pointer-events-none",
|
|
@@ -4579,20 +4417,204 @@ const segmentedControl = tv({
|
|
|
4579
4417
|
lg: { root: ["@max-lg:**:data-[slot=segmented-control-item]:relative @max-lg:**:data-[slot=segmented-control-item]:w-8 @max-lg:**:data-[slot=segmented-control-item]:px-0", "@max-lg:**:data-[slot=segmented-control-label]:sr-only @max-lg:**:data-[slot=segmented-control-count]:sr-only"] },
|
|
4580
4418
|
xl: { root: ["@max-xl:**:data-[slot=segmented-control-item]:relative @max-xl:**:data-[slot=segmented-control-item]:w-8 @max-xl:**:data-[slot=segmented-control-item]:px-0", "@max-xl:**:data-[slot=segmented-control-label]:sr-only @max-xl:**:data-[slot=segmented-control-count]:sr-only"] },
|
|
4581
4419
|
"2xl": { root: ["@max-2xl:**:data-[slot=segmented-control-item]:relative @max-2xl:**:data-[slot=segmented-control-item]:w-8 @max-2xl:**:data-[slot=segmented-control-item]:px-0", "@max-2xl:**:data-[slot=segmented-control-label]:sr-only @max-2xl:**:data-[slot=segmented-control-count]:sr-only"] }
|
|
4582
|
-
}
|
|
4420
|
+
},
|
|
4421
|
+
iconsOnlyMeasured: { true: { root: ["data-icons-only:**:data-[slot=segmented-control-item]:relative data-icons-only:**:data-[slot=segmented-control-item]:w-8 data-icons-only:**:data-[slot=segmented-control-item]:px-0", "data-icons-only:**:data-[slot=segmented-control-label]:sr-only data-icons-only:**:data-[slot=segmented-control-count]:sr-only"] } }
|
|
4583
4422
|
}
|
|
4584
4423
|
});
|
|
4424
|
+
const ICONS_ONLY_PRESETS = /* @__PURE__ */ new Set([
|
|
4425
|
+
"xs",
|
|
4426
|
+
"sm",
|
|
4427
|
+
"md",
|
|
4428
|
+
"lg",
|
|
4429
|
+
"xl",
|
|
4430
|
+
"2xl"
|
|
4431
|
+
]);
|
|
4432
|
+
function isIconsOnlyPreset(value) {
|
|
4433
|
+
return value !== void 0 && ICONS_ONLY_PRESETS.has(value);
|
|
4434
|
+
}
|
|
4585
4435
|
const SegmentedControlIconsOnlyContext = createContext(false);
|
|
4586
|
-
|
|
4436
|
+
/**
|
|
4437
|
+
* A length threshold in CSS pixels, or `undefined` for a value that isn't a
|
|
4438
|
+
* `px`, `rem` or `em` length. `em` is the container's font size, as in a
|
|
4439
|
+
* container query.
|
|
4440
|
+
*/
|
|
4441
|
+
function lengthToPx(value, container) {
|
|
4442
|
+
const match = /^(\d*\.?\d+)(px|rem|em)$/.exec(value.trim());
|
|
4443
|
+
if (!match) return void 0;
|
|
4444
|
+
const amount = Number(match[1]);
|
|
4445
|
+
if (match[2] === "px") return amount;
|
|
4446
|
+
const fontOf = match[2] === "rem" ? document.documentElement : container;
|
|
4447
|
+
return amount * parseFloat(getComputedStyle(fontOf).fontSize);
|
|
4448
|
+
}
|
|
4449
|
+
/** The nearest size container above the track, as a container query finds it; else its parent. */
|
|
4450
|
+
function queryContainerOf(track) {
|
|
4451
|
+
for (let el = track.parentElement; el; el = el.parentElement) if (getComputedStyle(el).containerType !== "normal") return el;
|
|
4452
|
+
return track.parentElement;
|
|
4453
|
+
}
|
|
4454
|
+
function contentInlineSize(el) {
|
|
4455
|
+
const style = getComputedStyle(el);
|
|
4456
|
+
return el.clientWidth - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight);
|
|
4457
|
+
}
|
|
4458
|
+
/**
|
|
4459
|
+
* Whether the labelled segments fit the track's box: the segments, first to
|
|
4460
|
+
* last, and the track's padding take no more than its `clientWidth` (half a
|
|
4461
|
+
* pixel of rounding aside; `scrollWidth` would let the last segment eat into
|
|
4462
|
+
* the end padding first, and Base UI's visually hidden radio inputs must not
|
|
4463
|
+
* count), and no label is truncated (a track stretched with `*:flex-1`
|
|
4464
|
+
* shrinks its labels instead). Measured in the labelled layout
|
|
4465
|
+
* whatever the control shows now: the attribute comes off for the read and
|
|
4466
|
+
* goes back before anything paints. The track is `w-fit max-w-full min-w-0`,
|
|
4467
|
+
* so its box is the width it is given, a shrinking flex item's included,
|
|
4468
|
+
* never more than its labels need: the answer depends only on the room
|
|
4469
|
+
* around it, not on what it shows, and so can't flap at the boundary.
|
|
4470
|
+
*/
|
|
4471
|
+
function labelsFit(track) {
|
|
4472
|
+
const iconsOnly = track.hasAttribute("data-icons-only");
|
|
4473
|
+
if (iconsOnly) track.removeAttribute("data-icons-only");
|
|
4474
|
+
const segments = Array.from(track.querySelectorAll(":scope > [data-slot=segmented-control-item]"));
|
|
4475
|
+
let fits = true;
|
|
4476
|
+
if (segments.length > 0) {
|
|
4477
|
+
const style = getComputedStyle(track);
|
|
4478
|
+
fits = segments[segments.length - 1].getBoundingClientRect().right - segments[0].getBoundingClientRect().left + parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) - track.clientWidth <= .5;
|
|
4479
|
+
}
|
|
4480
|
+
if (fits) {
|
|
4481
|
+
for (const label of Array.from(track.querySelectorAll("[data-slot=segmented-control-label]"))) if (label.scrollWidth - label.clientWidth > 1) {
|
|
4482
|
+
fits = false;
|
|
4483
|
+
break;
|
|
4484
|
+
}
|
|
4485
|
+
}
|
|
4486
|
+
if (iconsOnly) track.setAttribute("data-icons-only", "");
|
|
4487
|
+
return fits;
|
|
4488
|
+
}
|
|
4489
|
+
/**
|
|
4490
|
+
* Lays the track out and reports whether its segments run past its box. The
|
|
4491
|
+
* track comes from a callback ref, so a swapped element is measured too.
|
|
4492
|
+
*
|
|
4493
|
+
* With `iconsOnlyBelow="auto"` or a length, it decides here whether the
|
|
4494
|
+
* segments show only their icons, and sets `data-icons-only` on the track
|
|
4495
|
+
* (the presets are container queries in CSS and need nothing here). The
|
|
4496
|
+
* decision is taken synchronously, in the layout effect and in the observers'
|
|
4497
|
+
* callbacks, so the first frame and every resize paint the right layout.
|
|
4498
|
+
* Taken again when the track, a segment, the element it is measured against
|
|
4499
|
+
* (the parent for `auto`, the container for a length) or one of that
|
|
4500
|
+
* element's children resizes or comes and goes, a label, a count or the
|
|
4501
|
+
* selection changes, or a web font arrives.
|
|
4502
|
+
*
|
|
4503
|
+
* The overflow is the track's own `scrollWidth` against its `clientWidth`
|
|
4504
|
+
* after that decision, measured in the next frame.
|
|
4505
|
+
*/
|
|
4506
|
+
function useTrackFit(track, iconsOnlyBelow) {
|
|
4507
|
+
const [overflowing, setOverflowing] = useState(false);
|
|
4508
|
+
const measured = iconsOnlyBelow !== void 0 && !isIconsOnlyPreset(iconsOnlyBelow);
|
|
4509
|
+
useLayoutEffect(() => {
|
|
4510
|
+
if (!track || typeof ResizeObserver === "undefined") return void 0;
|
|
4511
|
+
const reference = !measured ? null : iconsOnlyBelow === "auto" ? track.parentElement : queryContainerOf(track);
|
|
4512
|
+
if (measured && iconsOnlyBelow !== "auto" && reference && lengthToPx(iconsOnlyBelow, reference) === void 0 && process.env.NODE_ENV !== "production") console.warn(`raft-ui: SegmentedControl iconsOnlyBelow="${iconsOnlyBelow}" is not a preset, "auto" or a px, rem or em length; the segments keep their labels.`);
|
|
4513
|
+
const fitIcons = () => {
|
|
4514
|
+
if (!measured) return;
|
|
4515
|
+
let iconsOnly = false;
|
|
4516
|
+
if (iconsOnlyBelow === "auto") iconsOnly = !labelsFit(track);
|
|
4517
|
+
else if (reference) {
|
|
4518
|
+
const threshold = lengthToPx(iconsOnlyBelow, reference);
|
|
4519
|
+
iconsOnly = threshold !== void 0 && contentInlineSize(reference) < threshold;
|
|
4520
|
+
}
|
|
4521
|
+
if (iconsOnly !== track.hasAttribute("data-icons-only")) track.toggleAttribute("data-icons-only", iconsOnly);
|
|
4522
|
+
};
|
|
4523
|
+
let frame = 0;
|
|
4524
|
+
const measure = () => {
|
|
4525
|
+
frame = 0;
|
|
4526
|
+
setOverflowing(track.scrollWidth - track.clientWidth > 1);
|
|
4527
|
+
};
|
|
4528
|
+
const schedule = () => {
|
|
4529
|
+
if (frame === 0) frame = requestAnimationFrame(measure);
|
|
4530
|
+
};
|
|
4531
|
+
const update = () => {
|
|
4532
|
+
fitIcons();
|
|
4533
|
+
schedule();
|
|
4534
|
+
};
|
|
4535
|
+
const resize = new ResizeObserver(update);
|
|
4536
|
+
const observeAll = () => {
|
|
4537
|
+
resize.disconnect();
|
|
4538
|
+
resize.observe(track);
|
|
4539
|
+
for (const child of Array.from(track.children)) resize.observe(child);
|
|
4540
|
+
if (reference) {
|
|
4541
|
+
resize.observe(reference);
|
|
4542
|
+
for (const child of Array.from(reference.children)) resize.observe(child);
|
|
4543
|
+
}
|
|
4544
|
+
};
|
|
4545
|
+
observeAll();
|
|
4546
|
+
const mutation = new MutationObserver(() => {
|
|
4547
|
+
observeAll();
|
|
4548
|
+
update();
|
|
4549
|
+
});
|
|
4550
|
+
mutation.observe(track, {
|
|
4551
|
+
childList: true,
|
|
4552
|
+
subtree: true,
|
|
4553
|
+
characterData: true,
|
|
4554
|
+
attributeFilter: ["data-checked"]
|
|
4555
|
+
});
|
|
4556
|
+
if (reference) mutation.observe(reference, { childList: true });
|
|
4557
|
+
const fonts = typeof document === "undefined" ? void 0 : document.fonts;
|
|
4558
|
+
fonts?.addEventListener("loadingdone", update);
|
|
4559
|
+
fitIcons();
|
|
4560
|
+
measure();
|
|
4561
|
+
return () => {
|
|
4562
|
+
if (frame !== 0) cancelAnimationFrame(frame);
|
|
4563
|
+
resize.disconnect();
|
|
4564
|
+
mutation.disconnect();
|
|
4565
|
+
fonts?.removeEventListener("loadingdone", update);
|
|
4566
|
+
track.removeAttribute("data-icons-only");
|
|
4567
|
+
};
|
|
4568
|
+
}, [
|
|
4569
|
+
track,
|
|
4570
|
+
measured,
|
|
4571
|
+
iconsOnlyBelow
|
|
4572
|
+
]);
|
|
4573
|
+
return overflowing;
|
|
4574
|
+
}
|
|
4575
|
+
/** In development, warns when segments that may show only their icons have none. */
|
|
4576
|
+
function useIconsOnlyWarning(ref, iconsOnlyBelow) {
|
|
4577
|
+
useLayoutEffect(() => {
|
|
4578
|
+
if (process.env.NODE_ENV === "production" || iconsOnlyBelow === void 0) return;
|
|
4579
|
+
const items = ref.current?.querySelectorAll("[data-slot=segmented-control-item]") ?? [];
|
|
4580
|
+
for (const item of Array.from(items)) if (!item.querySelector("svg, img")) {
|
|
4581
|
+
console.warn("raft-ui: a SegmentedControl with iconsOnlyBelow has a segment with no icon; it would be left empty when the segments show only their icons. Give every segment an icon.");
|
|
4582
|
+
return;
|
|
4583
|
+
}
|
|
4584
|
+
}, [ref, iconsOnlyBelow]);
|
|
4585
|
+
}
|
|
4586
|
+
function SegmentedControl({ disabled = false, iconsOnlyBelow, variant = "default", className, ref, ...props }) {
|
|
4587
|
+
const preset = isIconsOnlyPreset(iconsOnlyBelow);
|
|
4587
4588
|
const { root } = segmentedControl({
|
|
4588
|
-
iconsOnlyBelow,
|
|
4589
|
+
iconsOnlyBelow: preset ? iconsOnlyBelow : void 0,
|
|
4590
|
+
iconsOnlyMeasured: iconsOnlyBelow !== void 0 && !preset ? true : void 0,
|
|
4589
4591
|
variant
|
|
4590
4592
|
});
|
|
4593
|
+
const rootRef = useRef(null);
|
|
4594
|
+
const [track, setTrack] = useState(null);
|
|
4595
|
+
const [setRef] = useMergedRef(rootRef, setTrack, ref);
|
|
4596
|
+
const overflowing = useTrackFit(track, iconsOnlyBelow);
|
|
4597
|
+
useIconsOnlyWarning(rootRef, iconsOnlyBelow);
|
|
4598
|
+
const value = props.value;
|
|
4599
|
+
useLayoutEffect(() => {
|
|
4600
|
+
const track = rootRef.current;
|
|
4601
|
+
if (!overflowing || !track) return;
|
|
4602
|
+
const checked = track.querySelector("[data-checked]");
|
|
4603
|
+
if (!checked) return;
|
|
4604
|
+
const trackLeft = track.getBoundingClientRect().left;
|
|
4605
|
+
const box = checked.getBoundingClientRect();
|
|
4606
|
+
const start = box.left - trackLeft + track.scrollLeft;
|
|
4607
|
+
const end = start + box.width;
|
|
4608
|
+
if (start < track.scrollLeft) track.scrollLeft = start;
|
|
4609
|
+
else if (end > track.scrollLeft + track.clientWidth) track.scrollLeft = end - track.clientWidth;
|
|
4610
|
+
}, [overflowing, value]);
|
|
4591
4611
|
return /* @__PURE__ */ jsx(SegmentedControlIconsOnlyContext, {
|
|
4592
4612
|
value: iconsOnlyBelow !== void 0,
|
|
4593
4613
|
children: /* @__PURE__ */ jsx(RadioGroup$1, {
|
|
4614
|
+
ref: setRef,
|
|
4594
4615
|
disabled,
|
|
4595
4616
|
"data-slot": "segmented-control",
|
|
4617
|
+
"data-overflowing": overflowing ? "" : void 0,
|
|
4596
4618
|
className: root({ className }),
|
|
4597
4619
|
...props
|
|
4598
4620
|
})
|
|
@@ -4779,8 +4801,10 @@ const descriptionList = tv({
|
|
|
4779
4801
|
variants: { direction: {
|
|
4780
4802
|
vertical: {},
|
|
4781
4803
|
horizontal: { root: [
|
|
4782
|
-
"grid items-baseline",
|
|
4783
|
-
"
|
|
4804
|
+
"@container/description-list w-full grid items-baseline",
|
|
4805
|
+
"[&>[data-slot=description-item]>*]:@max-sm/description-list:col-span-full",
|
|
4806
|
+
"[&>[data-slot=description-item]>[data-slot=description-details]]:@max-sm/description-list:min-h-0",
|
|
4807
|
+
"[&>[data-slot=description-item]+[data-slot=description-item]>[data-slot=description-term]]:@max-sm/description-list:mt-2",
|
|
4784
4808
|
"*:data-[slot=description-item]:contents",
|
|
4785
4809
|
"[&>[data-slot=description-item]>[data-slot=description-term]]:mb-0",
|
|
4786
4810
|
"[&>[data-slot=description-item]>[data-slot=description-term]]:max-w-40",
|
|
@@ -4999,16 +5023,33 @@ function CodeBlockBody({ children, className, render, ...props }) {
|
|
|
4999
5023
|
* its own. Code that fits adds no Tab stop.
|
|
5000
5024
|
*/
|
|
5001
5025
|
function CodeBlockPre({ render, ref, "aria-label": ariaLabel = "Code", ...props }) {
|
|
5002
|
-
const
|
|
5026
|
+
const [pre, setPre] = useState(null);
|
|
5027
|
+
const preRef = useCallback((element) => setPre(element), []);
|
|
5003
5028
|
const [overflowing, setOverflowing] = useState(false);
|
|
5004
|
-
|
|
5005
|
-
const pre = preRef.current;
|
|
5029
|
+
useLayoutEffect(() => {
|
|
5006
5030
|
if (!pre) return;
|
|
5007
|
-
const
|
|
5008
|
-
|
|
5009
|
-
|
|
5010
|
-
|
|
5011
|
-
|
|
5031
|
+
const measure = () => setOverflowing(pre.scrollWidth > pre.clientWidth);
|
|
5032
|
+
const resize = new ResizeObserver(measure);
|
|
5033
|
+
const observe = () => {
|
|
5034
|
+
resize.disconnect();
|
|
5035
|
+
resize.observe(pre);
|
|
5036
|
+
for (const child of pre.children) resize.observe(child);
|
|
5037
|
+
};
|
|
5038
|
+
observe();
|
|
5039
|
+
const mutation = new MutationObserver(() => {
|
|
5040
|
+
observe();
|
|
5041
|
+
measure();
|
|
5042
|
+
});
|
|
5043
|
+
mutation.observe(pre, {
|
|
5044
|
+
childList: true,
|
|
5045
|
+
subtree: true,
|
|
5046
|
+
characterData: true
|
|
5047
|
+
});
|
|
5048
|
+
return () => {
|
|
5049
|
+
resize.disconnect();
|
|
5050
|
+
mutation.disconnect();
|
|
5051
|
+
};
|
|
5052
|
+
}, [pre]);
|
|
5012
5053
|
return useRender({
|
|
5013
5054
|
defaultTagName: "pre",
|
|
5014
5055
|
render,
|
|
@@ -5630,7 +5671,7 @@ const messageActionCard = tv({
|
|
|
5630
5671
|
status: [
|
|
5631
5672
|
"inline-flex h-auto items-center gap-1.5 rounded-none border-0 bg-transparent p-0 shadow-none",
|
|
5632
5673
|
"text-caption font-semibold text-foreground-muted",
|
|
5633
|
-
"before:size-
|
|
5674
|
+
"before:size-2.5 before:shrink-0 before:rounded-[2px] before:border-[1.5px] before:border-sticker-ink before:content-['']"
|
|
5634
5675
|
],
|
|
5635
5676
|
collapseTrigger: [
|
|
5636
5677
|
"flex shrink-0 cursor-pointer items-center justify-center",
|
|
@@ -5656,7 +5697,7 @@ const messageActionCard = tv({
|
|
|
5656
5697
|
//#endregion
|
|
5657
5698
|
//#region src/components/message-action-card/message-action-card-content.recipe.ts
|
|
5658
5699
|
const messageActionCardContent = tv({ slots: {
|
|
5659
|
-
root: ["p-3", "flex flex-col gap-2 px-3 pt-0 pb-3"],
|
|
5700
|
+
root: ["p-3", "@container/action-card flex flex-col gap-2 px-3 pt-0 pb-3"],
|
|
5660
5701
|
panel: [
|
|
5661
5702
|
"h-(--collapsible-panel-height) overflow-hidden",
|
|
5662
5703
|
"transition-[height] duration-200 ease-out motion-reduce:transition-none",
|
|
@@ -5664,12 +5705,20 @@ const messageActionCardContent = tv({ slots: {
|
|
|
5664
5705
|
],
|
|
5665
5706
|
properties: [
|
|
5666
5707
|
"m-0 grid",
|
|
5667
|
-
"max-sm:grid-cols-1
|
|
5708
|
+
"@max-sm/action-card:grid-cols-1",
|
|
5668
5709
|
"grid-cols-[minmax(88px,max-content)_minmax(0,1fr)] items-baseline gap-x-4 gap-y-0.5"
|
|
5669
5710
|
],
|
|
5670
5711
|
property: ["contents"],
|
|
5671
|
-
propertyLabel: [
|
|
5672
|
-
|
|
5712
|
+
propertyLabel: [
|
|
5713
|
+
"max-w-40 min-w-0 wrap-break-word",
|
|
5714
|
+
"text-footnote font-medium text-foreground-hint",
|
|
5715
|
+
"[[data-slot=message-action-card-property]+[data-slot=message-action-card-property]>&]:@max-sm/action-card:mt-2"
|
|
5716
|
+
],
|
|
5717
|
+
propertyValue: [
|
|
5718
|
+
"m-0 min-w-0 wrap-break-word",
|
|
5719
|
+
"min-h-8 py-1.5 text-callout text-foreground",
|
|
5720
|
+
"@max-sm/action-card:min-h-0 @max-sm/action-card:py-0"
|
|
5721
|
+
],
|
|
5673
5722
|
scopeList: ["mt-0 stack-y-1.5"],
|
|
5674
5723
|
scopeListViewport: ["overflow-y-auto overscroll-contain", "max-h-[164px] stack-y-1.5 pr-1"],
|
|
5675
5724
|
scopeListLabel: ["text-footnote font-medium text-foreground-hint"],
|
|
@@ -6141,7 +6190,7 @@ function MessageAttachmentAction({ className, render, ...props }) {
|
|
|
6141
6190
|
//#region src/components/message-attachment/message-image-gallery.recipe.ts
|
|
6142
6191
|
const messageImageGallery = tv({
|
|
6143
6192
|
slots: {
|
|
6144
|
-
root: ["max-w-[min(360px,
|
|
6193
|
+
root: ["@container/gallery w-full max-w-[min(360px,100%)] stack-y-1"],
|
|
6145
6194
|
row: ["grid", "gap-1"],
|
|
6146
6195
|
item: [
|
|
6147
6196
|
"group/img relative overflow-hidden text-left",
|
|
@@ -6166,28 +6215,24 @@ const messageImageGallery = tv({
|
|
|
6166
6215
|
{
|
|
6167
6216
|
count: 1,
|
|
6168
6217
|
single: false,
|
|
6169
|
-
class: { row: "auto-rows-[8rem]
|
|
6218
|
+
class: { row: "auto-rows-[8rem] @min-[360px]/gallery:auto-rows-[9rem]" }
|
|
6170
6219
|
},
|
|
6171
6220
|
{
|
|
6172
6221
|
count: 2,
|
|
6173
6222
|
single: false,
|
|
6174
|
-
class: { row: "auto-rows-[8rem]
|
|
6223
|
+
class: { row: "auto-rows-[8rem] @min-[360px]/gallery:auto-rows-[9rem]" }
|
|
6175
6224
|
},
|
|
6176
6225
|
{
|
|
6177
6226
|
count: 3,
|
|
6178
6227
|
single: false,
|
|
6179
|
-
class: { row: "auto-rows-[7rem]
|
|
6180
|
-
},
|
|
6181
|
-
{
|
|
6182
|
-
count: 3,
|
|
6183
|
-
class: { row: "md:grid-cols-2" }
|
|
6228
|
+
class: { row: "auto-rows-[7rem] @min-[360px]/gallery:auto-rows-[8rem]" }
|
|
6184
6229
|
}
|
|
6185
6230
|
],
|
|
6186
6231
|
variants: {
|
|
6187
6232
|
count: {
|
|
6188
6233
|
1: { row: "grid-cols-1" },
|
|
6189
6234
|
2: { row: "grid-cols-2" },
|
|
6190
|
-
3: { row: "grid-cols-2
|
|
6235
|
+
3: { row: "grid-cols-2" }
|
|
6191
6236
|
},
|
|
6192
6237
|
/** A single-image gallery keeps the image's proportions instead of a row height. */
|
|
6193
6238
|
single: { true: { item: ["inline-block w-fit max-w-[26rem] justify-self-start", "rounded-container"] } },
|
|
@@ -6361,7 +6406,7 @@ const messageVideoPreview = tv({ slots: {
|
|
|
6361
6406
|
root: [
|
|
6362
6407
|
"group/video relative aspect-video w-full overflow-hidden",
|
|
6363
6408
|
"bg-black text-left",
|
|
6364
|
-
"max-w-[min(360px,
|
|
6409
|
+
"max-w-[min(360px,100%)] rounded-container border border-line-hairline bg-clip-padding"
|
|
6365
6410
|
],
|
|
6366
6411
|
media: "block size-full bg-black object-contain",
|
|
6367
6412
|
fallback: "flex size-full items-center justify-center bg-black text-white",
|
|
@@ -6548,14 +6593,14 @@ action: {
|
|
|
6548
6593
|
*/
|
|
6549
6594
|
const messageForwardedBundleGallery = tv({
|
|
6550
6595
|
slots: {
|
|
6551
|
-
root: ["min-w-0"],
|
|
6596
|
+
root: ["@container/bundle w-full min-w-0"],
|
|
6552
6597
|
row: ["grid gap-2"],
|
|
6553
6598
|
tile: ["[&_img]:block [&_img]:size-full [&_img]:object-cover"]
|
|
6554
6599
|
},
|
|
6555
6600
|
variants: { count: {
|
|
6556
|
-
1: { row: "grid-cols-1 auto-rows-[8rem]
|
|
6557
|
-
2: { row: "grid-cols-2 auto-rows-[8rem]
|
|
6558
|
-
3: { row: "grid-cols-2 auto-rows-[7rem]
|
|
6601
|
+
1: { row: "grid-cols-1 auto-rows-[8rem] @min-[360px]/bundle:auto-rows-[9rem]" },
|
|
6602
|
+
2: { row: "grid-cols-2 auto-rows-[8rem] @min-[360px]/bundle:auto-rows-[9rem]" },
|
|
6603
|
+
3: { row: "grid-cols-2 auto-rows-[7rem] @min-[360px]/bundle:auto-rows-[8rem] @min-[360px]/bundle:grid-cols-3" }
|
|
6559
6604
|
} }
|
|
6560
6605
|
});
|
|
6561
6606
|
//#endregion
|
|
@@ -9384,32 +9429,6 @@ function useComposerSuggestions({ value, onValueChange, detectTrigger, getItems,
|
|
|
9384
9429
|
};
|
|
9385
9430
|
}
|
|
9386
9431
|
//#endregion
|
|
9387
|
-
//#region src/components/skeleton/skeleton.tsx
|
|
9388
|
-
const skeleton = tv({
|
|
9389
|
-
slots: { root: [
|
|
9390
|
-
"animate-pulse motion-reduce:animate-none",
|
|
9391
|
-
"pointer-events-none",
|
|
9392
|
-
"data-[variant=line]:rounded-sticker data-[variant=line]:bg-fill-muted",
|
|
9393
|
-
"data-[variant=block]:rounded-sticker data-[variant=block]:bg-fill-muted"
|
|
9394
|
-
] },
|
|
9395
|
-
variants: { variant: {
|
|
9396
|
-
line: { root: "h-3" },
|
|
9397
|
-
block: { root: "" },
|
|
9398
|
-
circle: { root: ["rounded-sticker bg-fill-muted"] }
|
|
9399
|
-
} },
|
|
9400
|
-
defaultVariants: { variant: "block" }
|
|
9401
|
-
});
|
|
9402
|
-
function Skeleton({ variant = "block", className, ...props }) {
|
|
9403
|
-
const { root } = skeleton({ variant });
|
|
9404
|
-
return /* @__PURE__ */ jsx("div", {
|
|
9405
|
-
"aria-hidden": "true",
|
|
9406
|
-
"data-slot": "skeleton",
|
|
9407
|
-
"data-variant": variant,
|
|
9408
|
-
className: root({ className }),
|
|
9409
|
-
...props
|
|
9410
|
-
});
|
|
9411
|
-
}
|
|
9412
|
-
//#endregion
|
|
9413
9432
|
//#region src/components/banner/banner.tsx
|
|
9414
9433
|
const banner = tv({
|
|
9415
9434
|
slots: {
|
|
@@ -9791,7 +9810,7 @@ const notificationCenter = tv({
|
|
|
9791
9810
|
true: { item: ["opacity-100"] },
|
|
9792
9811
|
false: { item: [
|
|
9793
9812
|
"pr-[37px]",
|
|
9794
|
-
"after:pointer-events-none after:absolute after:top-[
|
|
9813
|
+
"after:pointer-events-none after:absolute after:top-[calc(--spacing(3)+(var(--text-subhead--line-height)-10px)/2)] after:right-4 after:size-2.5",
|
|
9795
9814
|
"after:rounded-[2px] after:border-[1.5px] after:border-sticker-ink after:bg-attention-400"
|
|
9796
9815
|
] }
|
|
9797
9816
|
},
|
|
@@ -11850,8 +11869,9 @@ function LiveAgentActivityBarText({ className, render, ...props }) {
|
|
|
11850
11869
|
}
|
|
11851
11870
|
//#endregion
|
|
11852
11871
|
//#region src/components/tasks/task-status-icon.tsx
|
|
11853
|
-
/** Raft draws every status as its pixel: a
|
|
11854
|
-
* with a 1.5px sticker-ink edge (2px outer radius)
|
|
11872
|
+
/** Raft draws every status as its pixel: a 10px square in the status colour
|
|
11873
|
+
* with a 1.5px sticker-ink edge (2px outer radius), the size of every status
|
|
11874
|
+
* light beside text (status.md#sizes). The square keeps its size
|
|
11855
11875
|
* and sits centred in whatever box the context gives the icon, so an icon
|
|
11856
11876
|
* slot sized for a glyph still shows the same pixel. */
|
|
11857
11877
|
const TASK_STATUS_PIXEL_STYLE = {
|
|
@@ -11881,19 +11901,19 @@ function TaskStatusPixel({ status, className, ...props }) {
|
|
|
11881
11901
|
"aria-hidden": true,
|
|
11882
11902
|
"data-slot": "task-status-icon",
|
|
11883
11903
|
"data-status": status,
|
|
11884
|
-
width: "
|
|
11885
|
-
height: "
|
|
11904
|
+
width: "10",
|
|
11905
|
+
height: "10",
|
|
11886
11906
|
overflow: "visible",
|
|
11887
11907
|
className,
|
|
11888
11908
|
...props,
|
|
11889
11909
|
children: /* @__PURE__ */ jsx("rect", {
|
|
11890
11910
|
x: "50%",
|
|
11891
11911
|
y: "50%",
|
|
11892
|
-
width: "
|
|
11893
|
-
height: "
|
|
11912
|
+
width: "8.5",
|
|
11913
|
+
height: "8.5",
|
|
11894
11914
|
rx: "1.25",
|
|
11895
11915
|
strokeWidth: "1.5",
|
|
11896
|
-
transform: "translate(-
|
|
11916
|
+
transform: "translate(-4.25 -4.25)",
|
|
11897
11917
|
style: TASK_STATUS_PIXEL_STYLE[status]
|
|
11898
11918
|
})
|
|
11899
11919
|
});
|
|
@@ -12167,7 +12187,7 @@ const taskCardStatus = tv({ base: [
|
|
|
12167
12187
|
"font-sans text-[12px] leading-4 font-semibold text-foreground",
|
|
12168
12188
|
"[&:not(:has([data-slot=task-card-status-label]))]:hidden",
|
|
12169
12189
|
"**:data-[slot=task-card-status-label]:inline-flex **:data-[slot=task-card-status-label]:items-center [&_[data-slot=task-card-status-label]]:gap-1.5",
|
|
12170
|
-
"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-3 [&_svg:not([data-slot=task-status-icon])]:-mx-0.5 [&_svg[data-slot=task-status-icon]]:size-
|
|
12190
|
+
"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:size-3 [&_svg:not([data-slot=task-status-icon])]:-mx-0.5 [&_svg[data-slot=task-status-icon]]:size-2.5",
|
|
12171
12191
|
"[button&]:cursor-pointer [button&]:enabled:hover:overlay-medium [button&]:enabled:active:overlay-medium",
|
|
12172
12192
|
"disabled:cursor-default disabled:opacity-100",
|
|
12173
12193
|
"focus-visible:shadow-focus"
|
|
@@ -12991,64 +13011,6 @@ function useMemoWithPrevious(fn, deps) {
|
|
|
12991
13011
|
});
|
|
12992
13012
|
}
|
|
12993
13013
|
//#endregion
|
|
12994
|
-
//#region src/components/virtual-list/hooks/use-merged-ref.ts
|
|
12995
|
-
/**
|
|
12996
|
-
* Merges refs into one setter. Returns `[setRef, getRef]`: `setRef(el)` stores `el` and passes it to
|
|
12997
|
-
* every ref; `getRef()` reads the stored element. When a ref changes between renders (checked while
|
|
12998
|
-
* rendering), the old one is cleared and the new one gets the stored element at once. The setter
|
|
12999
|
-
* calls ref callbacks itself, so what they return is ignored.
|
|
13000
|
-
*/
|
|
13001
|
-
function useMergedRef(...refs) {
|
|
13002
|
-
const entries = useMemo(() => [], []);
|
|
13003
|
-
const elementRef = useRef(null);
|
|
13004
|
-
const getRef = useCallback(() => elementRef.current, []);
|
|
13005
|
-
const clearEntry = useCallback((entry) => {
|
|
13006
|
-
if (entry != null) {
|
|
13007
|
-
if (entry.type === "RefCallback") entry.ref(null);
|
|
13008
|
-
else entry.ref.current = null;
|
|
13009
|
-
}
|
|
13010
|
-
}, []);
|
|
13011
|
-
const applyStoredElement = useCallback((ref) => {
|
|
13012
|
-
if (typeof ref == "function") ref(getRef());
|
|
13013
|
-
else ref.current = getRef();
|
|
13014
|
-
}, [getRef]);
|
|
13015
|
-
const setRef = useCallback((el) => {
|
|
13016
|
-
elementRef.current = el;
|
|
13017
|
-
for (const entry of entries) if (entry == null) continue;
|
|
13018
|
-
else if (entry.type === "RefObject") entry.ref.current = el;
|
|
13019
|
-
else entry.ref(el);
|
|
13020
|
-
}, [entries]);
|
|
13021
|
-
for (let i = 0; i < refs.length; i++) {
|
|
13022
|
-
const ref = refs[i];
|
|
13023
|
-
const entry = entries[i];
|
|
13024
|
-
if (ref == null) {
|
|
13025
|
-
clearEntry(entry);
|
|
13026
|
-
entries[i] = null;
|
|
13027
|
-
} else {
|
|
13028
|
-
if (entry && entry.ref === ref) continue;
|
|
13029
|
-
if (typeof ref == "function") {
|
|
13030
|
-
if (entry != null) clearEntry(entry);
|
|
13031
|
-
entries[i] = {
|
|
13032
|
-
type: "RefCallback",
|
|
13033
|
-
ref
|
|
13034
|
-
};
|
|
13035
|
-
} else {
|
|
13036
|
-
if (entry != null) clearEntry(entry);
|
|
13037
|
-
entries[i] = {
|
|
13038
|
-
type: "RefObject",
|
|
13039
|
-
ref
|
|
13040
|
-
};
|
|
13041
|
-
}
|
|
13042
|
-
applyStoredElement(ref);
|
|
13043
|
-
}
|
|
13044
|
-
}
|
|
13045
|
-
for (let i = refs.length; i < entries.length; i++) {
|
|
13046
|
-
clearEntry(entries[i]);
|
|
13047
|
-
entries[i] = null;
|
|
13048
|
-
}
|
|
13049
|
-
return [setRef, getRef];
|
|
13050
|
-
}
|
|
13051
|
-
//#endregion
|
|
13052
13014
|
//#region src/components/virtual-list/hooks/use-non-passive-wheel.ts
|
|
13053
13015
|
/**
|
|
13054
13016
|
* Adds a non-passive `wheel` listener (so it may call `preventDefault`) to the element `getTarget`
|
|
@@ -15118,19 +15080,19 @@ function VirtualList(props) {
|
|
|
15118
15080
|
//#endregion
|
|
15119
15081
|
//#region src/components/tasks/tasks-panel.recipe.ts
|
|
15120
15082
|
const tasksPanel = tv({ slots: {
|
|
15121
|
-
root: ["flex min-h-0 min-w-0 flex-1 flex-col", "bg-layer-canvas text-foreground"],
|
|
15083
|
+
root: ["@container/tasks flex min-h-0 min-w-0 flex-1 flex-col", "bg-layer-canvas text-foreground"],
|
|
15122
15084
|
toolbar: [
|
|
15123
15085
|
"grid shrink-0 grid-cols-[minmax(0,1fr)_auto] items-center gap-2",
|
|
15124
|
-
"md:flex md:flex-wrap md:items-center md:justify-between",
|
|
15086
|
+
"@min-md/tasks:flex @min-md/tasks:flex-wrap @min-md/tasks:items-center @min-md/tasks:justify-between",
|
|
15125
15087
|
"min-h-14 border-b border-line-seam bg-layer-canvas px-5 py-3",
|
|
15126
|
-
"max-md:px-4"
|
|
15088
|
+
"@max-md/tasks:px-4"
|
|
15127
15089
|
],
|
|
15128
15090
|
toolbarGroup: ["flex flex-wrap items-center gap-2"],
|
|
15129
15091
|
toolbarNewTask: ["col-start-1 row-start-1 justify-self-start", "flex flex-wrap items-center gap-2"],
|
|
15130
15092
|
toolbarFilters: [
|
|
15131
15093
|
"col-span-2 row-start-2 min-w-0",
|
|
15132
15094
|
"only:col-auto only:row-auto",
|
|
15133
|
-
"md:mr-auto",
|
|
15095
|
+
"@min-md/tasks:mr-auto",
|
|
15134
15096
|
"flex flex-wrap items-center gap-2"
|
|
15135
15097
|
],
|
|
15136
15098
|
toolbarView: ["col-start-2 row-start-1 justify-self-end", "flex flex-wrap items-center gap-2"],
|
|
@@ -15145,7 +15107,7 @@ const tasksPanel = tv({ slots: {
|
|
|
15145
15107
|
"min-h-0 flex-1 overflow-auto overscroll-contain p-4",
|
|
15146
15108
|
"pb-[calc(1rem+env(safe-area-inset-bottom,0px))]",
|
|
15147
15109
|
"bg-layer-canvas px-5",
|
|
15148
|
-
"max-md:px-4"
|
|
15110
|
+
"@max-md/tasks:px-4"
|
|
15149
15111
|
],
|
|
15150
15112
|
empty: ["flex h-full flex-col items-center justify-center"]
|
|
15151
15113
|
} });
|
|
@@ -15304,7 +15266,7 @@ const taskChip = tv({
|
|
|
15304
15266
|
"focus-visible:keyboard:outline-2 focus-visible:keyboard:outline-offset-2 focus-visible:keyboard:outline-line-strong",
|
|
15305
15267
|
"border-0",
|
|
15306
15268
|
"font-sans font-semibold text-foreground",
|
|
15307
|
-
"[&>svg:not([data-slot=task-status-icon])]:-mx-0.5 [&>svg[data-slot=task-status-icon]]:size-
|
|
15269
|
+
"[&>svg:not([data-slot=task-status-icon])]:-mx-0.5 [&>svg[data-slot=task-status-icon]]:size-2.5",
|
|
15308
15270
|
"[a,button]:cursor-pointer [a,button]:hover:overlay-medium [a,button]:active:overlay-medium",
|
|
15309
15271
|
"focus-visible:outline-none focus-visible:shadow-focus"
|
|
15310
15272
|
] },
|
|
@@ -15317,7 +15279,7 @@ const taskChip = tv({
|
|
|
15317
15279
|
closed: { root: ["bg-task-status-closed-soft"] }
|
|
15318
15280
|
},
|
|
15319
15281
|
variant: {
|
|
15320
|
-
default: { root: ["h-[22px] gap-1.5 rounded-chip px-[7px] py-
|
|
15282
|
+
default: { root: ["h-[22px] items-baseline gap-1.5 rounded-chip px-[7px] py-[3px] [&>svg]:self-center", "text-[12px] leading-4"] },
|
|
15321
15283
|
inline: {}
|
|
15322
15284
|
},
|
|
15323
15285
|
size: {
|
|
@@ -15338,7 +15300,7 @@ const taskChip = tv({
|
|
|
15338
15300
|
}, {
|
|
15339
15301
|
variant: "default",
|
|
15340
15302
|
size: "sm",
|
|
15341
|
-
class: { root: ["h-5 gap-1 px-[5px]"] }
|
|
15303
|
+
class: { root: ["h-5 gap-1 px-[5px] py-0.5"] }
|
|
15342
15304
|
}],
|
|
15343
15305
|
defaultVariants: {
|
|
15344
15306
|
variant: "default",
|
|
@@ -15721,9 +15683,7 @@ function ActivityInboxSidebar({ className, children, ...props }) {
|
|
|
15721
15683
|
const activityInboxToolbar = tv({ slots: {
|
|
15722
15684
|
controls: ["flex shrink-0 flex-nowrap items-center gap-2", "bg-layer-canvas px-4 py-3"],
|
|
15723
15685
|
selectionToolbar: [
|
|
15724
|
-
"flex min-h-11 shrink-0 items-center gap-2",
|
|
15725
|
-
"max-md:flex-wrap max-md:py-2",
|
|
15726
|
-
"md:h-11 md:flex-nowrap md:py-0",
|
|
15686
|
+
"flex min-h-11 shrink-0 flex-wrap items-center gap-2 pt-1.5 pb-[5px]",
|
|
15727
15687
|
"border-b border-line-hairline bg-layer-canvas px-4",
|
|
15728
15688
|
"**:data-[activity-inbox-action=sort]:text-foreground-muted",
|
|
15729
15689
|
"**:data-[activity-inbox-action=sort]:hover:text-foreground"
|
|
@@ -15757,276 +15717,6 @@ function ActivityInboxSelectionCount({ className, ...props }) {
|
|
|
15757
15717
|
});
|
|
15758
15718
|
}
|
|
15759
15719
|
//#endregion
|
|
15760
|
-
//#region src/components/inbox-item/inbox-item.tsx
|
|
15761
|
-
const InboxItemDisabledContext = createContext(false);
|
|
15762
|
-
const InboxItemDensityContext = createContext(void 0);
|
|
15763
|
-
function InboxItem({ active = false, className, density, disabled = false, render, ...props }) {
|
|
15764
|
-
const { item } = inboxItem({ density });
|
|
15765
|
-
const defaultProps = {
|
|
15766
|
-
"aria-disabled": disabled || void 0,
|
|
15767
|
-
"data-active": active ? "true" : void 0,
|
|
15768
|
-
"data-density": density,
|
|
15769
|
-
"data-disabled": disabled ? "true" : void 0,
|
|
15770
|
-
"data-slot": "inbox-item",
|
|
15771
|
-
className: item({ className: `group/inbox-item ${className ?? ""}`.trim() })
|
|
15772
|
-
};
|
|
15773
|
-
const element = useRender({
|
|
15774
|
-
defaultTagName: "div",
|
|
15775
|
-
render,
|
|
15776
|
-
props: mergeProps(defaultProps, props)
|
|
15777
|
-
});
|
|
15778
|
-
return /* @__PURE__ */ jsx(InboxItemDisabledContext.Provider, {
|
|
15779
|
-
value: disabled,
|
|
15780
|
-
children: /* @__PURE__ */ jsx(InboxItemDensityContext.Provider, {
|
|
15781
|
-
value: density,
|
|
15782
|
-
children: element
|
|
15783
|
-
})
|
|
15784
|
-
});
|
|
15785
|
-
}
|
|
15786
|
-
function InboxItemTrigger({ className, onClick, render, ...props }) {
|
|
15787
|
-
const disabled = useContext(InboxItemDisabledContext);
|
|
15788
|
-
const { itemTrigger } = inboxItem();
|
|
15789
|
-
const defaultProps = {
|
|
15790
|
-
type: render ? void 0 : "button",
|
|
15791
|
-
"aria-disabled": disabled || void 0,
|
|
15792
|
-
"data-disabled": disabled ? "true" : void 0,
|
|
15793
|
-
"data-slot": "inbox-item-open",
|
|
15794
|
-
disabled: render ? void 0 : disabled,
|
|
15795
|
-
tabIndex: disabled && render ? -1 : void 0,
|
|
15796
|
-
className: itemTrigger({ className }),
|
|
15797
|
-
onClick: (event) => {
|
|
15798
|
-
if (disabled) {
|
|
15799
|
-
event.preventDefault();
|
|
15800
|
-
event.stopPropagation();
|
|
15801
|
-
return;
|
|
15802
|
-
}
|
|
15803
|
-
onClick?.(event);
|
|
15804
|
-
}
|
|
15805
|
-
};
|
|
15806
|
-
return useRender({
|
|
15807
|
-
defaultTagName: "button",
|
|
15808
|
-
render,
|
|
15809
|
-
props: mergeProps(defaultProps, props)
|
|
15810
|
-
});
|
|
15811
|
-
}
|
|
15812
|
-
function InboxItemLeading({ className, render, ...props }) {
|
|
15813
|
-
const { itemLeading } = inboxItem();
|
|
15814
|
-
const defaultProps = {
|
|
15815
|
-
"data-slot": "inbox-item-leading",
|
|
15816
|
-
className: itemLeading({ className })
|
|
15817
|
-
};
|
|
15818
|
-
return useRender({
|
|
15819
|
-
defaultTagName: "div",
|
|
15820
|
-
render,
|
|
15821
|
-
props: mergeProps(defaultProps, props)
|
|
15822
|
-
});
|
|
15823
|
-
}
|
|
15824
|
-
function InboxItemSelection({ className, render, ...props }) {
|
|
15825
|
-
const { itemSelection } = inboxItem();
|
|
15826
|
-
const defaultProps = {
|
|
15827
|
-
"data-slot": "inbox-item-selection",
|
|
15828
|
-
className: itemSelection({ className })
|
|
15829
|
-
};
|
|
15830
|
-
return useRender({
|
|
15831
|
-
defaultTagName: "div",
|
|
15832
|
-
render,
|
|
15833
|
-
props: mergeProps(defaultProps, props)
|
|
15834
|
-
});
|
|
15835
|
-
}
|
|
15836
|
-
function InboxItemContent({ className, render, ...props }) {
|
|
15837
|
-
const { itemContent } = inboxItem();
|
|
15838
|
-
const defaultProps = {
|
|
15839
|
-
"data-slot": "inbox-item-content",
|
|
15840
|
-
className: itemContent({ className })
|
|
15841
|
-
};
|
|
15842
|
-
return useRender({
|
|
15843
|
-
defaultTagName: "div",
|
|
15844
|
-
render,
|
|
15845
|
-
props: mergeProps(defaultProps, props)
|
|
15846
|
-
});
|
|
15847
|
-
}
|
|
15848
|
-
function InboxItemContext({ className, render, ...props }) {
|
|
15849
|
-
const { itemContext } = inboxItem();
|
|
15850
|
-
const defaultProps = {
|
|
15851
|
-
"data-slot": "inbox-item-context",
|
|
15852
|
-
className: itemContext({ className })
|
|
15853
|
-
};
|
|
15854
|
-
return useRender({
|
|
15855
|
-
defaultTagName: "div",
|
|
15856
|
-
render,
|
|
15857
|
-
props: mergeProps(defaultProps, props)
|
|
15858
|
-
});
|
|
15859
|
-
}
|
|
15860
|
-
function InboxItemSubtitle({ className, render, ...props }) {
|
|
15861
|
-
const { itemSubtitle } = inboxItem();
|
|
15862
|
-
const defaultProps = {
|
|
15863
|
-
"data-slot": "inbox-item-subtitle",
|
|
15864
|
-
className: itemSubtitle({ className })
|
|
15865
|
-
};
|
|
15866
|
-
return useRender({
|
|
15867
|
-
defaultTagName: "div",
|
|
15868
|
-
render,
|
|
15869
|
-
props: mergeProps(defaultProps, props)
|
|
15870
|
-
});
|
|
15871
|
-
}
|
|
15872
|
-
function InboxItemHeading({ className, render, ...props }) {
|
|
15873
|
-
const { itemHeading } = inboxItem();
|
|
15874
|
-
const defaultProps = {
|
|
15875
|
-
"data-slot": "inbox-item-heading",
|
|
15876
|
-
className: itemHeading({ className })
|
|
15877
|
-
};
|
|
15878
|
-
return useRender({
|
|
15879
|
-
defaultTagName: "div",
|
|
15880
|
-
render,
|
|
15881
|
-
props: mergeProps(defaultProps, props)
|
|
15882
|
-
});
|
|
15883
|
-
}
|
|
15884
|
-
function InboxItemTitle({ className, render, ...props }) {
|
|
15885
|
-
const density = useContext(InboxItemDensityContext);
|
|
15886
|
-
const { itemTitle } = inboxItem({ density });
|
|
15887
|
-
const defaultProps = {
|
|
15888
|
-
"data-slot": "inbox-item-title",
|
|
15889
|
-
className: itemTitle({ className })
|
|
15890
|
-
};
|
|
15891
|
-
return useRender({
|
|
15892
|
-
defaultTagName: "div",
|
|
15893
|
-
render,
|
|
15894
|
-
props: mergeProps(defaultProps, props)
|
|
15895
|
-
});
|
|
15896
|
-
}
|
|
15897
|
-
function InboxItemTrailing({ className, render, ...props }) {
|
|
15898
|
-
const density = useContext(InboxItemDensityContext);
|
|
15899
|
-
const { itemTrailing } = inboxItem({ density });
|
|
15900
|
-
const defaultProps = {
|
|
15901
|
-
"data-slot": "inbox-item-trailing",
|
|
15902
|
-
className: itemTrailing({ className })
|
|
15903
|
-
};
|
|
15904
|
-
return useRender({
|
|
15905
|
-
defaultTagName: "div",
|
|
15906
|
-
render,
|
|
15907
|
-
props: mergeProps(defaultProps, props)
|
|
15908
|
-
});
|
|
15909
|
-
}
|
|
15910
|
-
function InboxItemTimestamp({ className, render, ...props }) {
|
|
15911
|
-
const density = useContext(InboxItemDensityContext);
|
|
15912
|
-
const { itemTimestamp } = inboxItem({ density });
|
|
15913
|
-
const defaultProps = {
|
|
15914
|
-
"data-slot": "inbox-item-timestamp",
|
|
15915
|
-
className: itemTimestamp({ className })
|
|
15916
|
-
};
|
|
15917
|
-
return useRender({
|
|
15918
|
-
defaultTagName: "span",
|
|
15919
|
-
render,
|
|
15920
|
-
props: mergeProps(defaultProps, props)
|
|
15921
|
-
});
|
|
15922
|
-
}
|
|
15923
|
-
function InboxItemMarks({ className, render, ...props }) {
|
|
15924
|
-
const { itemMarks } = inboxItem();
|
|
15925
|
-
const defaultProps = {
|
|
15926
|
-
"data-slot": "inbox-item-marks",
|
|
15927
|
-
className: itemMarks({ className })
|
|
15928
|
-
};
|
|
15929
|
-
return useRender({
|
|
15930
|
-
defaultTagName: "div",
|
|
15931
|
-
render,
|
|
15932
|
-
props: mergeProps(defaultProps, props)
|
|
15933
|
-
});
|
|
15934
|
-
}
|
|
15935
|
-
function InboxItemHoverTarget({ className, onClick, render, ...props }) {
|
|
15936
|
-
const { itemHoverTarget } = inboxItem();
|
|
15937
|
-
const defaultProps = {
|
|
15938
|
-
"data-slot": "inbox-item-hover-target",
|
|
15939
|
-
className: itemHoverTarget({ className }),
|
|
15940
|
-
onClick: (event) => {
|
|
15941
|
-
onClick?.(event);
|
|
15942
|
-
if (event.defaultPrevented) return;
|
|
15943
|
-
const trigger = event.currentTarget.closest("[data-slot=inbox-item]")?.querySelector("[data-slot=inbox-item-open]");
|
|
15944
|
-
if (!trigger) return;
|
|
15945
|
-
trigger.dispatchEvent(new MouseEvent("click", {
|
|
15946
|
-
bubbles: true,
|
|
15947
|
-
cancelable: true,
|
|
15948
|
-
detail: event.detail,
|
|
15949
|
-
altKey: event.altKey,
|
|
15950
|
-
ctrlKey: event.ctrlKey,
|
|
15951
|
-
metaKey: event.metaKey,
|
|
15952
|
-
shiftKey: event.shiftKey
|
|
15953
|
-
}));
|
|
15954
|
-
}
|
|
15955
|
-
};
|
|
15956
|
-
return useRender({
|
|
15957
|
-
defaultTagName: "span",
|
|
15958
|
-
render,
|
|
15959
|
-
props: mergeProps(defaultProps, props)
|
|
15960
|
-
});
|
|
15961
|
-
}
|
|
15962
|
-
function InboxItemBody({ className, render, ...props }) {
|
|
15963
|
-
const density = useContext(InboxItemDensityContext);
|
|
15964
|
-
const { itemBody } = inboxItem({ density });
|
|
15965
|
-
const defaultProps = {
|
|
15966
|
-
"data-slot": "inbox-item-body",
|
|
15967
|
-
className: itemBody({ className })
|
|
15968
|
-
};
|
|
15969
|
-
return useRender({
|
|
15970
|
-
defaultTagName: "p",
|
|
15971
|
-
render,
|
|
15972
|
-
props: mergeProps(defaultProps, props)
|
|
15973
|
-
});
|
|
15974
|
-
}
|
|
15975
|
-
function InboxItemMessage({ className, render, ...props }) {
|
|
15976
|
-
const density = useContext(InboxItemDensityContext);
|
|
15977
|
-
const { itemMessage } = inboxItem({ density });
|
|
15978
|
-
const defaultProps = {
|
|
15979
|
-
"data-slot": "inbox-item-message",
|
|
15980
|
-
className: itemMessage({ className })
|
|
15981
|
-
};
|
|
15982
|
-
return useRender({
|
|
15983
|
-
defaultTagName: "p",
|
|
15984
|
-
render,
|
|
15985
|
-
props: mergeProps(defaultProps, props)
|
|
15986
|
-
});
|
|
15987
|
-
}
|
|
15988
|
-
function InboxItemSender({ className, render, ...props }) {
|
|
15989
|
-
const { itemSender } = inboxItem();
|
|
15990
|
-
const defaultProps = {
|
|
15991
|
-
"data-slot": "inbox-item-sender",
|
|
15992
|
-
className: itemSender({ className })
|
|
15993
|
-
};
|
|
15994
|
-
return useRender({
|
|
15995
|
-
defaultTagName: "span",
|
|
15996
|
-
render,
|
|
15997
|
-
props: mergeProps(defaultProps, props)
|
|
15998
|
-
});
|
|
15999
|
-
}
|
|
16000
|
-
function InboxItemMetadata({ className, render, ...props }) {
|
|
16001
|
-
const { itemMetadata } = inboxItem();
|
|
16002
|
-
const defaultProps = {
|
|
16003
|
-
"data-slot": "inbox-item-metadata",
|
|
16004
|
-
className: itemMetadata({ className })
|
|
16005
|
-
};
|
|
16006
|
-
return useRender({
|
|
16007
|
-
defaultTagName: "div",
|
|
16008
|
-
render,
|
|
16009
|
-
props: mergeProps(defaultProps, props)
|
|
16010
|
-
});
|
|
16011
|
-
}
|
|
16012
|
-
function InboxItemActions({ className, render, reveal, ...props }) {
|
|
16013
|
-
const density = useContext(InboxItemDensityContext);
|
|
16014
|
-
const { itemActions } = inboxItem({
|
|
16015
|
-
density,
|
|
16016
|
-
reveal
|
|
16017
|
-
});
|
|
16018
|
-
const defaultProps = {
|
|
16019
|
-
"data-reveal": reveal,
|
|
16020
|
-
"data-slot": "inbox-item-actions",
|
|
16021
|
-
className: itemActions({ className })
|
|
16022
|
-
};
|
|
16023
|
-
return useRender({
|
|
16024
|
-
defaultTagName: "div",
|
|
16025
|
-
render,
|
|
16026
|
-
props: mergeProps(defaultProps, props)
|
|
16027
|
-
});
|
|
16028
|
-
}
|
|
16029
|
-
//#endregion
|
|
16030
15720
|
//#region src/components/search/search.recipe.ts
|
|
16031
15721
|
const search = tv({ slots: {
|
|
16032
15722
|
frame: ["flex h-full min-h-0 flex-1 flex-col", "bg-layer-canvas text-foreground"],
|
|
@@ -16122,7 +15812,7 @@ const searchEntity = tv({ slots: {
|
|
|
16122
15812
|
entity: [
|
|
16123
15813
|
"flex min-w-0 w-full items-center gap-3 p-3 text-left transition-colors",
|
|
16124
15814
|
"relative rounded-none border-0 bg-transparent px-4 py-3 text-foreground shadow-none",
|
|
16125
|
-
"
|
|
15815
|
+
"pointer-coarse:min-h-16",
|
|
16126
15816
|
"not-first:before:absolute not-first:before:top-0 not-first:before:right-0 not-first:before:left-[55px] not-first:before:border-t not-first:before:border-line-hairline",
|
|
16127
15817
|
"hover:bg-fill-subtle active:bg-fill-medium",
|
|
16128
15818
|
"not-data-[selected=true]:data-popup-open:bg-fill-subtle",
|
|
@@ -16543,6 +16233,32 @@ function SearchTriggerShortcut({ className, ...props }) {
|
|
|
16543
16233
|
});
|
|
16544
16234
|
}
|
|
16545
16235
|
//#endregion
|
|
16236
|
+
//#region src/lib/located.ts
|
|
16237
|
+
/**
|
|
16238
|
+
* How long the located highlight lasts: `info-soft` at once, held 1.2s, faded
|
|
16239
|
+
* out by 2s (design/foundations/states.md#located). styles.css runs the
|
|
16240
|
+
* animation; useLocated drops `data-located` after this long.
|
|
16241
|
+
*/
|
|
16242
|
+
const LOCATED_MS = 2e3;
|
|
16243
|
+
function useLocated(request) {
|
|
16244
|
+
const [on, setOn] = useState(null);
|
|
16245
|
+
useEffect(() => {
|
|
16246
|
+
if (request == null) return;
|
|
16247
|
+
let timer;
|
|
16248
|
+
let frame = requestAnimationFrame(() => {
|
|
16249
|
+
frame = requestAnimationFrame(() => {
|
|
16250
|
+
setOn(() => request);
|
|
16251
|
+
timer = setTimeout(() => setOn(null), LOCATED_MS);
|
|
16252
|
+
});
|
|
16253
|
+
});
|
|
16254
|
+
return () => {
|
|
16255
|
+
cancelAnimationFrame(frame);
|
|
16256
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
16257
|
+
};
|
|
16258
|
+
}, [request]);
|
|
16259
|
+
return request != null && on === request;
|
|
16260
|
+
}
|
|
16261
|
+
//#endregion
|
|
16546
16262
|
//#region src/lib/input-modality.ts
|
|
16547
16263
|
const INPUT_MODALITY_ATTRIBUTE = "data-input-modality";
|
|
16548
16264
|
/** Keys that move focus wherever focus is. */
|
|
@@ -16783,4 +16499,4 @@ function ThemeProvider({ mode, defaultMode = "light", onModeChange, storageKey,
|
|
|
16783
16499
|
});
|
|
16784
16500
|
}
|
|
16785
16501
|
//#endregion
|
|
16786
|
-
export { ActivityInboxControls, ActivityInboxLoadingMore, ActivityInboxPanel, ActivityInboxSelectionCount, ActivityInboxSelectionToolbar, ActivityInboxSidebar, ActivityInboxViewport, AlertDialog, AlertDialogAction, AlertDialogBody, AlertDialogCancel, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AppRailFooter, AppRailHeader, AppRailItem, AppRailItemAttention, AppRailItemBadge, AppRailItemIcon, AppRailItemIndicator, AppRailItemLabel, AppRailNav, AppRailRoot, AppShellMainSlot, AppShellOverlaySlot, AppShellPanelSlot, AppShellRailSlot, AppShellRoot, AppShellSidebarSlot, AppShellSidebarTrigger, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Banner, BannerAction, BannerClose, BannerDescription, BannerTitle, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardLeading, CardTitle, CardTrailing, ChatIcon, Checkbox, CheckboxIndicator, CodeBlock, CodeBlockAction, CodeBlockActions, CodeBlockBody, CodeBlockHeader, CodeBlockPre, CodeBlockTitle, Combobox, ComboboxChip, ComboboxChipRemove, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxContent, ComboboxControl, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxHeader, ComboboxInput, ComboboxInputGroup, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxList, ComboboxPopup, ComboboxPortal, ComboboxRow, ComboboxSeparator, ComboboxTrigger, ComboboxTriggerCount, ComboboxTriggerIndicator, ComboboxValue, Composer, ComposerActions, ComposerAttachment, ComposerAttachmentBody, ComposerAttachmentFailedOverlay, ComposerAttachmentFile, ComposerAttachmentImage, ComposerAttachmentMeta, ComposerAttachmentRemove, ComposerAttachmentTitle, ComposerAttachmentUploadProgressBar, ComposerAttachmentUploadingOverlay, ComposerAttachments, ComposerAttachmentsScrollArea, ComposerDropOverlay, ComposerDropOverlayLabel, ComposerDropOverlayPrompt, ComposerIconButton, ComposerInput, ComposerMeta, ComposerRoot, ComposerSubmit, ComposerSuggestionAside, ComposerSuggestionContent, ComposerSuggestionGroup, ComposerSuggestionGroupLabel, ComposerSuggestionIcon, ComposerSuggestionList, ComposerSuggestionMeta, ComposerSuggestionOption, ComposerSuggestionTitle, ComposerToolbar, ComposerToolbarLabel, ContextMenu, ContextMenuCheckboxItem, ContextMenuCheckboxItemIndicator, ContextMenuContent, ContextMenuFooter, ContextMenuItem, ContextMenuItemLabel, ContextMenuLabel, ContextMenuPopup, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRadioItemIndicator, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSubmenu, ContextMenuSubmenuTrigger, ContextMenuTrigger, ConversationPanelBody, ConversationPanelContent, ConversationPanelEmptyState, ConversationPanelEmptyStateBrand, ConversationPanelEmptyStateBrandMark, ConversationPanelFooter, ConversationPanelRoot, ConversationPanelTabs, CopyableCode, CopyableCodeAction, CopyableCodeRoot, DescriptionDetails, DescriptionItem, DescriptionList, DescriptionTerm, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogNav, DialogOverlay, DialogPortal, DialogSurface, DialogTitle, DialogTrigger, DirectMessageIcon, Drawer, DrawerActions, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuCheckboxItemIndicator, DropdownMenuContent, DropdownMenuFooter, DropdownMenuItem, DropdownMenuItemCount, DropdownMenuItemLabel, DropdownMenuLabel, DropdownMenuPopup, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRadioItemIndicator, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSubmenu, DropdownMenuSubmenuTrigger, DropdownMenuTrigger, EmptyState, EmptyStateActions, EmptyStateContent, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldValidity, FileAction, FileActions, FileContent, FileImage, FileMeta, FileMetaItem, FileName, FilePreview, FilePreviewBadge, FilePreviewCode, FilePreviewDocument, FilePreviewFile, FilePreviewMedia, FileRow, FileRowOpen, FileThumbnail, FilesList, FilesPanel, FilesViewport, FloatButton, FloatButtonGroup, FormSection, IconTile, InboxItem, InboxItemActions, InboxItemBody, InboxItemContent, InboxItemContext, InboxItemHeading, InboxItemHoverTarget, InboxItemLeading, InboxItemMarks, InboxItemMessage, InboxItemMetadata, InboxItemSelection, InboxItemSender, InboxItemSubtitle, InboxItemTimestamp, InboxItemTitle, InboxItemTrailing, InboxItemTrigger, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupInput, Kbd, KbdGroup, Label, LabelAsterisk, LabelOptional, LabelSub, LegacyTaskPanelActions, LegacyTaskPanelBody, LegacyTaskPanelField, LegacyTaskPanelFieldLabel, LegacyTaskPanelFieldText, LegacyTaskPanelFieldTitle, LegacyTaskPanelHeader, LegacyTaskPanelIcon, LegacyTaskPanelMeta, LegacyTaskPanelMetaLabel, LegacyTaskPanelMetaRow, LegacyTaskPanelMetaValue, LegacyTaskPanelRoot, LegacyTaskPanelSection, LegacyTaskPanelStatus, LegacyTaskPanelTitle, LegacyTaskPanelTitleMeta, Lightbox, LightboxActions, LightboxClose, LightboxContent, LightboxHeader, LightboxHeaderLabel, LightboxHeaderMeta, LightboxInfoActions, LightboxInfoBar, LightboxInfoDock, LightboxInfoTitle, LightboxMedia, LightboxNavigationButton, LightboxPortal, LightboxStage, LightboxThumbnail, LightboxThumbnailStrip, LightboxTitle, LightboxToolbar, LightboxTrigger, ListRow, ListRowBody, ListRowBottom, ListRowChevron, ListRowDescription, ListRowGroup, ListRowIcon, ListRowMeta, ListRowTitle, ListRowTop, ListRowValue, LiveAgentActivityBar, LiveAgentActivityBarAvatar, LiveAgentActivityBarContent, LiveAgentActivityBarRow, LiveAgentActivityBarStatus, LiveAgentActivityBarText, MarkdownBlockquote, MarkdownCell, MarkdownCheckbox, MarkdownHeaderCell, MarkdownHeading, MarkdownImage, MarkdownInlineCode, MarkdownLink, MarkdownList, MarkdownListItem, MarkdownMark, MarkdownOrderedList, MarkdownParagraph, MarkdownRule, MarkdownTable, MarkdownTableRow, MarkdownTableScroll, MessageActionCard, MessageActionCardActions, MessageActionCardActionsNote, MessageActionCardCollapseTrigger, MessageActionCardCompletion, MessageActionCardContent, MessageActionCardHeader, MessageActionCardHeaderDescription, MessageActionCardHeaderIcon, MessageActionCardHeaderStatus, MessageActionCardHeaderTitle, MessageActionCardHint, MessageActionCardHintLabel, MessageActionCardNotice, MessageActionCardProperties, MessageActionCardProperty, MessageActionCardPropertyLabel, MessageActionCardPropertyValue, MessageActionCardScope, MessageActionCardScopeDescription, MessageActionCardScopeList, MessageActionCardScopeListLabel, MessageActionCardScopeListViewport, MessageActionCardScopeName, MessageActionCardStatus, MessageAttachmentAction, MessageAttachmentCard, MessageAttachmentCommentSummary, MessageAttachmentDiffAddition, MessageAttachmentDiffDeletion, MessageAttachmentDiffSummary, MessageAttachmentGroup, MessageAttachmentMeta, MessageAttachmentMetaEnd, MessageAttachmentMetaStart, MessageAttachmentSummary, MessageAttachmentTitle, MessageEmbed, MessageEmbedContent, MessageEmbedFooter, MessageEmbedHeader, MessageForwardedBundle, MessageForwardedBundleAttachment, MessageForwardedBundleAttachmentMeta, MessageForwardedBundleAttachmentName, MessageForwardedBundleAttachments, MessageForwardedBundleFooter, MessageForwardedBundleFooterAction, MessageForwardedBundleGallery, MessageForwardedBundleGalleryTile, MessageForwardedBundleHeader, MessageForwardedBundleHeaderContent, MessageForwardedBundleHeaderCount, MessageForwardedBundleHeaderLabel, MessageForwardedBundleItem, MessageForwardedBundleItemAuthor, MessageForwardedBundleItemContent, MessageForwardedBundleItemMeta, MessageForwardedBundleItems, MessageForwardedBundleSource, MessageForwardedBundleSourceLabel, MessageIcon, MessageImageGallery, MessageImageGalleryAction, MessageImageGalleryItem, MessageImageGalleryMedia, MessageImageGalleryOverlay, MessageImageGalleryPreview, MessageImageGalleryRow, MessageItem, MessageItemAttachments, MessageItemAvatarSlot, MessageItemBadge, MessageItemBadgeSeparator, MessageItemBody, MessageItemContent, MessageItemContinuationTime, MessageItemEdited, MessageItemEmbedded, MessageItemFooter, MessageItemGutter, MessageItemHeader, MessageItemInlineStatus, MessageItemMeta, MessageItemReadReceipt, MessageItemSavedIndicator, MessageItemSearchMatch, MessageItemSender, MessageItemSenderBadges, MessageItemSenderButton, MessageItemSenderGroup, MessageItemTime, MessageItemToolbar, MessageItemToolbarButton, MessageItemTranslationAction, MessageItemTranslationFailedStatus, MessageItemTranslationOriginal, MessageItemTranslationOriginalLabel, MessageItemTranslationProgressTrack, MessageItemTranslationRetryAction, MessageItemTranslationStatus, MessageList, MessageListDateDivider, MessageListEndFade, MessageListHistoryLimited, MessageListNotice, MessageMultiSelect, MessageMultiSelectCheckbox, MessageMultiSelectToolbar, MessageMultiSelectToolbarActions, MessageQuotedPreview, MessageQuotedPreviewAttachment, MessageQuotedPreviewAttachments, MessageQuotedPreviewAuthor, MessageQuotedPreviewAuthorMeta, MessageQuotedPreviewAuthorName, MessageQuotedPreviewChannel, MessageQuotedPreviewContent, MessageQuotedPreviewHeader, MessageQuotedPreviewLoading, MessageQuotedPreviewText, MessageQuotedPreviewThread, MessageQuotedPreviewTimestamp, MessageQuotedPreviewUnavailable, MessageReactionAddButton, MessageReactionChip, MessageReactionCount, MessageReactionErrorIndicator, MessageReactionGlyph, MessageReactionPickerContent, MessageReactionPickerStatic, MessageReactionQuickButton, MessageReactionQuickRow, MessageReactionTooltipContent, MessageReactionTooltipMeta, MessageReactionTooltipName, MessageReactionTooltipNameText, MessageReactionTooltipNames, MessageReactionTooltipSeparator, MessageReferenceChip, MessageReferenceIndicator, MessageReferenceLabel, MessageReferencePending, MessageReferenceSuffix, MessageReferenceText, MessageReferenceUnavailable, MessageReplies, MessageRepliesItem, MessageRepliesItemContent, MessageRepliesItemSender, MessageRepliesItemTime, MessageRepliesSummary, MessageRepliesSummaryItem, MessageTextSelectionToolbar, MessageTextSelectionToolbarButton, MessageTextSelectionToolbarSeparator, MessageVideoPreview, MessageVideoPreviewAction, MessageVideoPreviewFailureAction, MessageVideoPreviewFailureContent, MessageVideoPreviewFailureIcon, MessageVideoPreviewFailureTitle, MessageVideoPreviewFallback, MessageVideoPreviewMedia, MobileNavItem, MobileNavLabel, MobileNavRoot, NotificationCenter, NotificationCenterActionButton, NotificationCenterCount, NotificationCenterEmptyState, NotificationCenterHeader, NotificationCenterItem, NotificationCenterItemActions, NotificationCenterItemBody, NotificationCenterItemContent, NotificationCenterItemIcon, NotificationCenterItemRow, NotificationCenterItemTitle, NotificationCenterList, NotificationCenterPopup, NotificationCenterScroller, NotificationCenterTitle, NotificationCenterTrigger, OtterIndicator, Panel, PanelAction, PanelActions, PanelActivity, PanelBody, PanelFooter, PanelHeader, PanelHeaderContent, PanelHeaderIcon, PanelHeaderRoot, PanelHeading, PanelMeta, PanelNotice, PanelNoticeActions, PanelNoticeContent, PanelScrollContent, PanelScrollViewport, PanelSection, PanelSectionHeader, PanelStatus, PanelTitle, PanelToggleAction, PickerTriggerButton, Popover, PopoverArrow, PopoverBackdrop, PopoverClose, PopoverContent, PopoverDescription, PopoverHeader, PopoverPopup, PopoverPortal, PopoverSeparator, PopoverTitle, PopoverTrigger, PopoverViewport, PreviewCard, PreviewCardArrow, PreviewCardContent, PreviewCardDescription, PreviewCardHeader, PreviewCardPopup, PreviewCardPortal, PreviewCardSeparator, PreviewCardTitle, PreviewCardTrigger, ProfilePanel, ProfilePanelBody, ProfilePanelHeader, ProfilePanelHeaderContent, ProfilePanelSection, Progress, ProgressHeader, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RadioGroup, RadioGroupIndicator, RadioGroupItem, RaftLogo, RaftLogoLockup, RaftWordmark, ResizableGroup, ResizableHandle, ResizablePanel, SINGLE_IMAGE_MAX_HEIGHT, SINGLE_IMAGE_MAX_WIDTH, ScrollArea, ScrollAreaContent, ScrollAreaCorner, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, SearchEntityResult, SearchEntityResultActivity, SearchEntityResultContent, SearchEntityResultDescription, SearchEntityResultHeader, SearchEntityResultIcon, SearchEntityResultLeading, SearchEntityResultTitle, SearchMessageResult, SearchMessageResultBody, SearchMessageResultHeader, SearchMessageResultMatch, SearchMessageResultMeta, SearchMessageResultSender, SearchMessageResultThreadMeta, SearchMessageResultTimestamp, SearchResultsList, SearchResultsSection, SearchResultsSectionHeading, SearchResultsSummary, SearchShellFilters, SearchShellRoot, SearchShellViewport, SearchThreadMessageResult, SearchThreadResult, SearchThreadResultHeader, SearchThreadResultMessages, SearchThreadResultMeta, SearchThreadResultTimestamp, SearchThreadResultTitle, SearchTrigger, SearchTriggerLabel, SearchTriggerShortcut, SegmentedControl, SegmentedControlCount, SegmentedControlItem, SegmentedControlLabel, Select, SelectArrow, SelectContent, SelectGroup, SelectGroupLabel, SelectIcon, SelectItem, SelectItemDescription, SelectItemIndicator, SelectItemLeading, SelectItemText, SelectLabel, SelectList, SelectPopup, SelectPortal, SelectScrollDownArrow, SelectScrollUpArrow, SelectSeparator, SelectTrigger, SelectValue, Separator, SidebarBody, SidebarContent, SidebarControl, SidebarGroupLabel, SidebarHeader, SidebarHeaderTitle, SidebarItem, SidebarItemAside, SidebarItemChannelIcon, SidebarItemContent, SidebarItemCount, SidebarItemCountSeparator, SidebarItemIcon, SidebarItemIndicator, SidebarItemMeta, SidebarItemMetaIcon, SidebarItemStatus, SidebarItemSubtitle, SidebarItemThreadCount, SidebarItemTitle, SidebarList, SidebarLiveActivity, SidebarMenu, SidebarMenuAside, SidebarMenuCount, SidebarMenuIcon, SidebarMenuTitle, SidebarRoot, SidebarSection, SidebarSectionAttention, SidebarSectionChevron, SidebarSectionControl, SidebarSectionControls, SidebarSectionCount, SidebarSectionDisclosure, SidebarSectionEmpty, SidebarSectionHeader, SidebarSectionTitle, SidebarSectionTrailing, Skeleton, SortableComposerAttachment, SortableComposerAttachments, SortableComposerAttachmentsScroll, SortableTabsList, SortableTabsTab, Spinner, Status, Step, Steps, Switch, SwitchThumb, SystemMessage, SystemMessageContent, SystemMessageGroup, SystemMessageGroupChevron, SystemMessageGroupDisclosure, SystemMessageGroupHeader, SystemMessageGroupPanel, SystemMessageGroupSummary, SystemMessageTime, TASK_STATUS_IDS, Table, TableBody, TableCaption, TableCell, TableColgroup, TableColumn, TableHead, TableHeader, TableRow, Tabs, TabsLabel, TabsList, TabsPanel, TabsTab, TaskBoardColumn, TaskBoardColumnBadge, TaskBoardColumnChevron, TaskBoardColumnCount, TaskBoardColumnEmpty, TaskBoardColumnEmptyAllowed, TaskBoardColumnEmptyBlocked, TaskBoardColumnEmptyIdle, TaskBoardColumnHeading, TaskBoardColumnItems, TaskBoardColumnPanel, TaskBoardColumnTrigger, TaskBoardRoot, TaskCard, TaskCardBody, TaskCardChannel, TaskCardDescription, TaskCardLegacy, TaskCardMeta, TaskCardNumber, TaskCardRow, TaskCardStatus, TaskCardTitle, TaskChip, TaskClosedIcon, TaskDndProvider, TaskDoneIcon, TaskDragOverlay, TaskDraggable, TaskDropPlaceholder, TaskDropZone, TaskInProgressIcon, TaskInReviewIcon, TaskListRoot, TaskLoadingList, TaskLoadingRow, TaskSection, TaskSectionBadge, TaskSectionChevron, TaskSectionCount, TaskSectionEmpty, TaskSectionHeading, TaskSectionItems, TaskSectionPanel, TaskSectionTrigger, TaskStatusBadge, TaskStatusIcon, TaskTodoIcon, TasksPanelEmpty, TasksPanelRoot, TasksPanelToolbar, TasksPanelToolbarFilters, TasksPanelToolbarGroup, TasksPanelToolbarLabel, TasksPanelToolbarNewTask, TasksPanelToolbarView, TasksPanelViewport, Text, TextHeading, TextLink, TextMono, TextSans, Textarea, TextareaCounter, TextareaGroup, ThemeProvider, ThreadIcon, ThreadPanelActions, ThreadPanelBody, ThreadPanelContent, ThreadPanelFooter, ThreadPanelHeader, ThreadPanelOriginalMessage, ThreadPanelReplyCount, ThreadPanelReplySummary, ThreadPanelRoot, ThreadPanelSearch, ThreadPanelSearchCount, ThreadPanelSearchTrailing, ThreadPanelTitle, ThreadPanelTitleMeta, Timeline, TimelineContent, TimelineItem, TimelineTime, TimelineTitle, ToastAction, ToastActions, ToastArrow, ToastBody, ToastClose, ToastContent, ToastDescription, ToastIcon, ToastPortal, ToastPositioner, ToastProgress, ToastProvider, ToastRoot, ToastTitle, ToastViewport, ToggleGroup, ToggleGroupItem, ToggleGroupLabel, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, VirtualList, WorkspaceButton, WorkspaceButtonName, buildMessageImageGalleryRows, buttonVariants, classifyMessageImageAspect, cn, createMessageTextSelectionAnchor, createToastManager, getTextSelectionFocusRect, installInputModality, taskStatusSoft, taskStatusStrong, textLinkVariants, toast, useComposerSuggestions, useOrderedTabs, useTheme, useToastManager };
|
|
16502
|
+
export { ActivityInboxControls, ActivityInboxLoadingMore, ActivityInboxPanel, ActivityInboxSelectionCount, ActivityInboxSelectionToolbar, ActivityInboxSidebar, ActivityInboxViewport, AlertDialog, AlertDialogAction, AlertDialogBody, AlertDialogCancel, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AppRailFooter, AppRailHeader, AppRailItem, AppRailItemAttention, AppRailItemBadge, AppRailItemIcon, AppRailItemIndicator, AppRailItemLabel, AppRailNav, AppRailRoot, AppShellMainSlot, AppShellOverlaySlot, AppShellPanelSlot, AppShellRailSlot, AppShellRoot, AppShellSidebarSlot, AppShellSidebarTrigger, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Banner, BannerAction, BannerClose, BannerDescription, BannerTitle, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardLeading, CardTitle, CardTrailing, ChatIcon, Checkbox, CheckboxIndicator, CodeBlock, CodeBlockAction, CodeBlockActions, CodeBlockBody, CodeBlockHeader, CodeBlockPre, CodeBlockTitle, Combobox, ComboboxChip, ComboboxChipRemove, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxContent, ComboboxControl, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxHeader, ComboboxInput, ComboboxInputGroup, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxList, ComboboxPopup, ComboboxPortal, ComboboxRow, ComboboxSeparator, ComboboxTrigger, ComboboxTriggerCount, ComboboxTriggerIndicator, ComboboxValue, Composer, ComposerActions, ComposerAttachment, ComposerAttachmentBody, ComposerAttachmentFailedOverlay, ComposerAttachmentFile, ComposerAttachmentImage, ComposerAttachmentMeta, ComposerAttachmentRemove, ComposerAttachmentTitle, ComposerAttachmentUploadProgressBar, ComposerAttachmentUploadingOverlay, ComposerAttachments, ComposerAttachmentsScrollArea, ComposerDropOverlay, ComposerDropOverlayLabel, ComposerDropOverlayPrompt, ComposerIconButton, ComposerInput, ComposerMeta, ComposerRoot, ComposerSubmit, ComposerSuggestionAside, ComposerSuggestionContent, ComposerSuggestionGroup, ComposerSuggestionGroupLabel, ComposerSuggestionIcon, ComposerSuggestionList, ComposerSuggestionMeta, ComposerSuggestionOption, ComposerSuggestionTitle, ComposerToolbar, ComposerToolbarLabel, ContextMenu, ContextMenuCheckboxItem, ContextMenuCheckboxItemIndicator, ContextMenuContent, ContextMenuFooter, ContextMenuItem, ContextMenuItemLabel, ContextMenuLabel, ContextMenuPopup, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRadioItemIndicator, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSubmenu, ContextMenuSubmenuTrigger, ContextMenuTrigger, ConversationPanelBody, ConversationPanelContent, ConversationPanelEmptyState, ConversationPanelEmptyStateBrand, ConversationPanelEmptyStateBrandMark, ConversationPanelFooter, ConversationPanelRoot, ConversationPanelTabs, CopyableCode, CopyableCodeAction, CopyableCodeRoot, DescriptionDetails, DescriptionItem, DescriptionList, DescriptionTerm, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogNav, DialogOverlay, DialogPortal, DialogSurface, DialogTitle, DialogTrigger, DirectMessageIcon, Drawer, DrawerActions, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuCheckboxItemIndicator, DropdownMenuContent, DropdownMenuFooter, DropdownMenuItem, DropdownMenuItemCount, DropdownMenuItemLabel, DropdownMenuLabel, DropdownMenuPopup, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRadioItemIndicator, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSubmenu, DropdownMenuSubmenuTrigger, DropdownMenuTrigger, EmptyState, EmptyStateActions, EmptyStateContent, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldValidity, FileAction, FileActions, FileContent, FileImage, FileMeta, FileMetaItem, FileName, FilePreview, FilePreviewBadge, FilePreviewCode, FilePreviewDocument, FilePreviewFile, FilePreviewMedia, FileRow, FileRowOpen, FileThumbnail, FilesList, FilesPanel, FilesViewport, FloatButton, FloatButtonGroup, FormSection, IconTile, InboxItem, InboxItemActions, InboxItemBody, InboxItemContent, InboxItemContext, InboxItemHeading, InboxItemHoverTarget, InboxItemLeading, InboxItemMarks, InboxItemMessage, InboxItemMetadata, InboxItemSelection, InboxItemSender, InboxItemSubtitle, InboxItemTimestamp, InboxItemTitle, InboxItemTrailing, InboxItemTrigger, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupInput, Kbd, KbdGroup, LOCATED_MS, Label, LabelAsterisk, LabelOptional, LabelSub, LegacyTaskPanelActions, LegacyTaskPanelBody, LegacyTaskPanelField, LegacyTaskPanelFieldLabel, LegacyTaskPanelFieldText, LegacyTaskPanelFieldTitle, LegacyTaskPanelHeader, LegacyTaskPanelIcon, LegacyTaskPanelMeta, LegacyTaskPanelMetaLabel, LegacyTaskPanelMetaRow, LegacyTaskPanelMetaValue, LegacyTaskPanelRoot, LegacyTaskPanelSection, LegacyTaskPanelStatus, LegacyTaskPanelTitle, LegacyTaskPanelTitleMeta, Lightbox, LightboxActions, LightboxClose, LightboxContent, LightboxHeader, LightboxHeaderLabel, LightboxHeaderMeta, LightboxInfoActions, LightboxInfoBar, LightboxInfoDock, LightboxInfoTitle, LightboxMedia, LightboxNavigationButton, LightboxPortal, LightboxStage, LightboxThumbnail, LightboxThumbnailStrip, LightboxTitle, LightboxToolbar, LightboxTrigger, ListRow, ListRowBody, ListRowBottom, ListRowChevron, ListRowDescription, ListRowGroup, ListRowIcon, ListRowMeta, ListRowTitle, ListRowTop, ListRowValue, LiveAgentActivityBar, LiveAgentActivityBarAvatar, LiveAgentActivityBarContent, LiveAgentActivityBarRow, LiveAgentActivityBarStatus, LiveAgentActivityBarText, MarkdownBlockquote, MarkdownCell, MarkdownCheckbox, MarkdownHeaderCell, MarkdownHeading, MarkdownImage, MarkdownInlineCode, MarkdownLink, MarkdownList, MarkdownListItem, MarkdownMark, MarkdownOrderedList, MarkdownParagraph, MarkdownRule, MarkdownTable, MarkdownTableRow, MarkdownTableScroll, MessageActionCard, MessageActionCardActions, MessageActionCardActionsNote, MessageActionCardCollapseTrigger, MessageActionCardCompletion, MessageActionCardContent, MessageActionCardHeader, MessageActionCardHeaderDescription, MessageActionCardHeaderIcon, MessageActionCardHeaderStatus, MessageActionCardHeaderTitle, MessageActionCardHint, MessageActionCardHintLabel, MessageActionCardNotice, MessageActionCardProperties, MessageActionCardProperty, MessageActionCardPropertyLabel, MessageActionCardPropertyValue, MessageActionCardScope, MessageActionCardScopeDescription, MessageActionCardScopeList, MessageActionCardScopeListLabel, MessageActionCardScopeListViewport, MessageActionCardScopeName, MessageActionCardStatus, MessageAttachmentAction, MessageAttachmentCard, MessageAttachmentCommentSummary, MessageAttachmentDiffAddition, MessageAttachmentDiffDeletion, MessageAttachmentDiffSummary, MessageAttachmentGroup, MessageAttachmentMeta, MessageAttachmentMetaEnd, MessageAttachmentMetaStart, MessageAttachmentSummary, MessageAttachmentTitle, MessageEmbed, MessageEmbedContent, MessageEmbedFooter, MessageEmbedHeader, MessageForwardedBundle, MessageForwardedBundleAttachment, MessageForwardedBundleAttachmentMeta, MessageForwardedBundleAttachmentName, MessageForwardedBundleAttachments, MessageForwardedBundleFooter, MessageForwardedBundleFooterAction, MessageForwardedBundleGallery, MessageForwardedBundleGalleryTile, MessageForwardedBundleHeader, MessageForwardedBundleHeaderContent, MessageForwardedBundleHeaderCount, MessageForwardedBundleHeaderLabel, MessageForwardedBundleItem, MessageForwardedBundleItemAuthor, MessageForwardedBundleItemContent, MessageForwardedBundleItemMeta, MessageForwardedBundleItems, MessageForwardedBundleSource, MessageForwardedBundleSourceLabel, MessageIcon, MessageImageGallery, MessageImageGalleryAction, MessageImageGalleryItem, MessageImageGalleryMedia, MessageImageGalleryOverlay, MessageImageGalleryPreview, MessageImageGalleryRow, MessageItem, MessageItemAttachments, MessageItemAvatarSlot, MessageItemBadge, MessageItemBadgeSeparator, MessageItemBody, MessageItemContent, MessageItemContinuationTime, MessageItemEdited, MessageItemEmbedded, MessageItemFooter, MessageItemGutter, MessageItemHeader, MessageItemInlineStatus, MessageItemMeta, MessageItemReadReceipt, MessageItemSavedIndicator, MessageItemSearchMatch, MessageItemSender, MessageItemSenderBadges, MessageItemSenderButton, MessageItemSenderGroup, MessageItemTime, MessageItemToolbar, MessageItemToolbarButton, MessageItemTranslationAction, MessageItemTranslationFailedStatus, MessageItemTranslationOriginal, MessageItemTranslationOriginalLabel, MessageItemTranslationProgressTrack, MessageItemTranslationRetryAction, MessageItemTranslationStatus, MessageList, MessageListDateDivider, MessageListEndFade, MessageListHistoryLimited, MessageListNotice, MessageMultiSelect, MessageMultiSelectCheckbox, MessageMultiSelectToolbar, MessageMultiSelectToolbarActions, MessageQuotedPreview, MessageQuotedPreviewAttachment, MessageQuotedPreviewAttachments, MessageQuotedPreviewAuthor, MessageQuotedPreviewAuthorMeta, MessageQuotedPreviewAuthorName, MessageQuotedPreviewChannel, MessageQuotedPreviewContent, MessageQuotedPreviewHeader, MessageQuotedPreviewLoading, MessageQuotedPreviewText, MessageQuotedPreviewThread, MessageQuotedPreviewTimestamp, MessageQuotedPreviewUnavailable, MessageReactionAddButton, MessageReactionChip, MessageReactionCount, MessageReactionErrorIndicator, MessageReactionGlyph, MessageReactionPickerContent, MessageReactionPickerStatic, MessageReactionQuickButton, MessageReactionQuickRow, MessageReactionTooltipContent, MessageReactionTooltipMeta, MessageReactionTooltipName, MessageReactionTooltipNameText, MessageReactionTooltipNames, MessageReactionTooltipSeparator, MessageReferenceChip, MessageReferenceIndicator, MessageReferenceLabel, MessageReferencePending, MessageReferenceSuffix, MessageReferenceText, MessageReferenceUnavailable, MessageReplies, MessageRepliesItem, MessageRepliesItemContent, MessageRepliesItemSender, MessageRepliesItemTime, MessageRepliesSummary, MessageRepliesSummaryItem, MessageTextSelectionToolbar, MessageTextSelectionToolbarButton, MessageTextSelectionToolbarSeparator, MessageVideoPreview, MessageVideoPreviewAction, MessageVideoPreviewFailureAction, MessageVideoPreviewFailureContent, MessageVideoPreviewFailureIcon, MessageVideoPreviewFailureTitle, MessageVideoPreviewFallback, MessageVideoPreviewMedia, MobileNavItem, MobileNavLabel, MobileNavRoot, NotificationCenter, NotificationCenterActionButton, NotificationCenterCount, NotificationCenterEmptyState, NotificationCenterHeader, NotificationCenterItem, NotificationCenterItemActions, NotificationCenterItemBody, NotificationCenterItemContent, NotificationCenterItemIcon, NotificationCenterItemRow, NotificationCenterItemTitle, NotificationCenterList, NotificationCenterPopup, NotificationCenterScroller, NotificationCenterTitle, NotificationCenterTrigger, OtterIndicator, Panel, PanelAction, PanelActions, PanelActivity, PanelBody, PanelFooter, PanelHeader, PanelHeaderContent, PanelHeaderIcon, PanelHeaderRoot, PanelHeading, PanelMeta, PanelNotice, PanelNoticeActions, PanelNoticeContent, PanelScrollContent, PanelScrollViewport, PanelSection, PanelSectionHeader, PanelStatus, PanelTitle, PanelToggleAction, PickerTriggerButton, Popover, PopoverArrow, PopoverBackdrop, PopoverClose, PopoverContent, PopoverDescription, PopoverHeader, PopoverPopup, PopoverPortal, PopoverSeparator, PopoverTitle, PopoverTrigger, PopoverViewport, PreviewCard, PreviewCardArrow, PreviewCardContent, PreviewCardDescription, PreviewCardHeader, PreviewCardPopup, PreviewCardPortal, PreviewCardSeparator, PreviewCardTitle, PreviewCardTrigger, ProfilePanel, ProfilePanelBody, ProfilePanelHeader, ProfilePanelHeaderContent, ProfilePanelSection, Progress, ProgressHeader, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RadioGroup, RadioGroupIndicator, RadioGroupItem, RaftLogo, RaftLogoLockup, RaftWordmark, ResizableGroup, ResizableHandle, ResizablePanel, SINGLE_IMAGE_MAX_HEIGHT, SINGLE_IMAGE_MAX_WIDTH, ScrollArea, ScrollAreaContent, ScrollAreaCorner, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, SearchEntityResult, SearchEntityResultActivity, SearchEntityResultContent, SearchEntityResultDescription, SearchEntityResultHeader, SearchEntityResultIcon, SearchEntityResultLeading, SearchEntityResultTitle, SearchMessageResult, SearchMessageResultBody, SearchMessageResultHeader, SearchMessageResultMatch, SearchMessageResultMeta, SearchMessageResultSender, SearchMessageResultThreadMeta, SearchMessageResultTimestamp, SearchResultsList, SearchResultsSection, SearchResultsSectionHeading, SearchResultsSummary, SearchShellFilters, SearchShellRoot, SearchShellViewport, SearchThreadMessageResult, SearchThreadResult, SearchThreadResultHeader, SearchThreadResultMessages, SearchThreadResultMeta, SearchThreadResultTimestamp, SearchThreadResultTitle, SearchTrigger, SearchTriggerLabel, SearchTriggerShortcut, SegmentedControl, SegmentedControlCount, SegmentedControlItem, SegmentedControlLabel, Select, SelectArrow, SelectContent, SelectGroup, SelectGroupLabel, SelectIcon, SelectItem, SelectItemDescription, SelectItemIndicator, SelectItemLeading, SelectItemText, SelectLabel, SelectList, SelectPopup, SelectPortal, SelectScrollDownArrow, SelectScrollUpArrow, SelectSeparator, SelectTrigger, SelectValue, Separator, SidebarBody, SidebarContent, SidebarControl, SidebarGroupLabel, SidebarHeader, SidebarHeaderTitle, SidebarItem, SidebarItemAside, SidebarItemChannelIcon, SidebarItemContent, SidebarItemCount, SidebarItemCountSeparator, SidebarItemIcon, SidebarItemIndicator, SidebarItemMeta, SidebarItemMetaIcon, SidebarItemStatus, SidebarItemSubtitle, SidebarItemThreadCount, SidebarItemTitle, SidebarList, SidebarLiveActivity, SidebarMenu, SidebarMenuAside, SidebarMenuCount, SidebarMenuIcon, SidebarMenuTitle, SidebarRoot, SidebarSection, SidebarSectionAttention, SidebarSectionChevron, SidebarSectionControl, SidebarSectionControls, SidebarSectionCount, SidebarSectionDisclosure, SidebarSectionEmpty, SidebarSectionHeader, SidebarSectionTitle, SidebarSectionTrailing, Skeleton, SortableComposerAttachment, SortableComposerAttachments, SortableComposerAttachmentsScroll, SortableTabsList, SortableTabsTab, Spinner, Status, Step, Steps, Switch, SwitchThumb, SystemMessage, SystemMessageContent, SystemMessageGroup, SystemMessageGroupChevron, SystemMessageGroupDisclosure, SystemMessageGroupHeader, SystemMessageGroupPanel, SystemMessageGroupSummary, SystemMessageTime, TASK_STATUS_IDS, Table, TableBody, TableCaption, TableCell, TableColgroup, TableColumn, TableHead, TableHeader, TableRow, Tabs, TabsLabel, TabsList, TabsPanel, TabsTab, TaskBoardColumn, TaskBoardColumnBadge, TaskBoardColumnChevron, TaskBoardColumnCount, TaskBoardColumnEmpty, TaskBoardColumnEmptyAllowed, TaskBoardColumnEmptyBlocked, TaskBoardColumnEmptyIdle, TaskBoardColumnHeading, TaskBoardColumnItems, TaskBoardColumnPanel, TaskBoardColumnTrigger, TaskBoardRoot, TaskCard, TaskCardBody, TaskCardChannel, TaskCardDescription, TaskCardLegacy, TaskCardMeta, TaskCardNumber, TaskCardRow, TaskCardStatus, TaskCardTitle, TaskChip, TaskClosedIcon, TaskDndProvider, TaskDoneIcon, TaskDragOverlay, TaskDraggable, TaskDropPlaceholder, TaskDropZone, TaskInProgressIcon, TaskInReviewIcon, TaskListRoot, TaskLoadingList, TaskLoadingRow, TaskSection, TaskSectionBadge, TaskSectionChevron, TaskSectionCount, TaskSectionEmpty, TaskSectionHeading, TaskSectionItems, TaskSectionPanel, TaskSectionTrigger, TaskStatusBadge, TaskStatusIcon, TaskTodoIcon, TasksPanelEmpty, TasksPanelRoot, TasksPanelToolbar, TasksPanelToolbarFilters, TasksPanelToolbarGroup, TasksPanelToolbarLabel, TasksPanelToolbarNewTask, TasksPanelToolbarView, TasksPanelViewport, Text, TextHeading, TextLink, TextMono, TextSans, Textarea, TextareaCounter, TextareaGroup, ThemeProvider, ThreadIcon, ThreadPanelActions, ThreadPanelBody, ThreadPanelContent, ThreadPanelFooter, ThreadPanelHeader, ThreadPanelOriginalMessage, ThreadPanelReplyCount, ThreadPanelReplySummary, ThreadPanelRoot, ThreadPanelSearch, ThreadPanelSearchCount, ThreadPanelSearchTrailing, ThreadPanelTitle, ThreadPanelTitleMeta, Timeline, TimelineContent, TimelineItem, TimelineTime, TimelineTitle, ToastAction, ToastActions, ToastArrow, ToastBody, ToastClose, ToastContent, ToastDescription, ToastIcon, ToastPortal, ToastPositioner, ToastProgress, ToastProvider, ToastRoot, ToastTitle, ToastViewport, ToggleGroup, ToggleGroupItem, ToggleGroupLabel, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, VirtualList, WorkspaceButton, WorkspaceButtonName, buildMessageImageGalleryRows, buttonVariants, classifyMessageImageAspect, cn, createMessageTextSelectionAnchor, createToastManager, getTextSelectionFocusRect, installInputModality, taskStatusSoft, taskStatusStrong, textLinkVariants, toast, useComposerSuggestions, useLocated, useOrderedTabs, useTheme, useToastManager };
|