raft-ui 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/wip.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { cn } from "./cn.mjs";
2
2
  import { a as tv, n as useThemeFamily } from "./use-theme-Y_h1DKll.mjs";
3
- import { MessageSquare } from "lucide-react";
3
+ import { Check, MessageSquare } from "lucide-react";
4
4
  import { Button } from "@base-ui/react/button";
5
5
  import { mergeProps } from "@base-ui/react/merge-props";
6
6
  import { useRender } from "@base-ui/react/use-render";
@@ -999,4 +999,765 @@ function DescriptionAction({ className, render, ...props }) {
999
999
  });
1000
1000
  }
1001
1001
  //#endregion
1002
- export { ConversationPreviewCard, ConversationPreviewCardAction, ConversationPreviewCardAuthor, ConversationPreviewCardAuthorName, ConversationPreviewCardAuthorSubtitle, ConversationPreviewCardChannel, ConversationPreviewCardContent, ConversationPreviewCardFooter, ConversationPreviewCardMeta, ConversationPreviewCardPreview, ConversationPreviewCardPreviewAuthor, ConversationPreviewCardPreviewLeading, ConversationPreviewCardSecondaryPreview, ConversationPreviewCardTimestamp, DescriptionAction, DescriptionDetails, DescriptionItem, DescriptionList, DescriptionTerm, ListItem, ListItemActionGroup, ListItemBody, ListItemDescription, ListItemIcon, ListItemMeta, ListItemRow, ListItemTitle, MediaListItem, MediaListItemActionGroup, MediaListItemAside, MediaListItemBody, MediaListItemSubtitle, MediaListItemText, MediaListItemTitle, MediaListItemVisual, PanelHeader, PanelHeaderActions, PanelHeaderContent, PanelHeaderIcon, PanelHeaderSubtitle, PanelHeaderSuffix, PanelHeaderTitle, PanelHeaderTitleRow, PanelHeaderVisual, PreviewShell, QuotedMessageCard, QuotedMessageCardAttachments, QuotedMessageCardAuthor, QuotedMessageCardAuthorName, QuotedMessageCardAuthorSubtitle, QuotedMessageCardBody, QuotedMessageCardChannel, QuotedMessageCardContent, QuotedMessageCardContentWrap, QuotedMessageCardHeader, QuotedMessageCardMeta, QuotedMessageCardSeparator, QuotedMessageCardTag, QuotedMessageCardThread, QuotedMessageCardTimestamp, QuotedMessageCardUnavailable, SectionHeader, SectionHeaderActions, SectionHeaderContent, SectionHeaderCount, SectionHeaderIcon, SectionHeaderTitle, SectionLabel, ToggleGroup, ToggleGroupCount, ToggleGroupItem, ToggleGroupLabel };
1002
+ //#region src/components/message-item/recipe.ts
1003
+ const messageItem = tv({
1004
+ slots: {
1005
+ root: [
1006
+ "group/message relative mb-1 mt-1.5 flex h-fit min-h-[3rem] min-w-0 gap-3 px-2 py-1",
1007
+ "border-2 border-transparent text-left",
1008
+ "transition-colors duration-100",
1009
+ "hover:border-line-strong hover:bg-layer-panel active:border-line-strong active:bg-layer-panel"
1010
+ ],
1011
+ gutter: ["relative w-9 shrink-0 self-stretch"],
1012
+ avatarSlot: ["relative mt-0.5 shrink-0 self-start hover:brightness-90 transition-colors"],
1013
+ selectMark: [
1014
+ "mt-1.5 inline-flex size-5 shrink-0 items-center justify-center self-start rounded-full",
1015
+ "border-2 border-line-strong bg-layer-panel text-transparent",
1016
+ "data-[checked=true]:bg-brutal-yellow data-[checked=true]:text-black",
1017
+ "[&_svg]:size-3 [&_svg]:stroke-[3]"
1018
+ ],
1019
+ continuationTime: ["absolute right-1 top-1 select-none font-mono text-[10px] leading-none tabular-nums", "text-foreground/0 group-hover/message:text-foreground/40"],
1020
+ content: ["min-w-0 flex-1"],
1021
+ header: ["flex min-w-0 items-center gap-2 overflow-hidden pr-24"],
1022
+ sender: ["min-w-0 shrink-0 truncate text-sm font-bold text-foreground-strong"],
1023
+ senderState: ["inline-flex shrink-0 items-center border border-line-strong bg-gray-300 px-1.5 py-0.5", "text-[10px] font-bold uppercase leading-none text-foreground/60"],
1024
+ meta: ["min-w-0 truncate font-mono text-xs text-foreground/40"],
1025
+ time: ["shrink-0 whitespace-nowrap font-mono text-xs text-foreground/40"],
1026
+ inlineStatus: ["shrink-0 text-[10px] font-bold text-foreground/40"],
1027
+ body: ["break-words text-sm leading-5 text-foreground-strong select-text", "[&_*]:select-text"],
1028
+ embedded: ["mt-1.5 min-w-0"],
1029
+ notice: ["mt-1 inline-flex max-w-full border border-line-strong bg-soft-signal/40 px-2 py-1", "text-xs font-bold text-foreground/70"],
1030
+ attachments: ["mt-1 space-y-2"],
1031
+ footer: ["mt-1.5 flex flex-wrap items-center gap-1.5"],
1032
+ toolbar: [
1033
+ "absolute -top-3.5 right-2 z-20 hidden items-center overflow-hidden",
1034
+ "border-2 border-line-strong bg-white shadow-brutal-sm",
1035
+ "group-hover/message:flex"
1036
+ ],
1037
+ toolbarButton: [
1038
+ "inline-flex size-6 shrink-0 items-center justify-center",
1039
+ "text-black/50 transition-colors duration-100 hover:bg-soft-signal/30 hover:text-black",
1040
+ "data-[active=true]:text-foreground-strong",
1041
+ "data-[saved=true]:text-brutal-orange",
1042
+ "[&_svg]:size-[13px] [&_svg]:shrink-0"
1043
+ ],
1044
+ savedIndicator: [
1045
+ "absolute right-1 top-1 flex size-6 items-center justify-center",
1046
+ "text-brutal-orange group-hover/message:hidden",
1047
+ "[&_svg]:size-[13px]"
1048
+ ],
1049
+ systemRoot: ["mb-1 flex min-w-0 items-center justify-center gap-2 px-2 py-1.5"],
1050
+ systemTime: ["shrink-0 whitespace-nowrap font-mono text-xs text-foreground/40"],
1051
+ systemContent: ["min-w-0 truncate text-xs text-foreground/50"],
1052
+ imageGallery: ["max-w-[min(22rem,calc(100vw-7rem))] space-y-2 md:max-w-[28rem]"],
1053
+ imageGalleryRow: ["grid gap-2"],
1054
+ imageGalleryItem: [
1055
+ "group/img relative overflow-hidden border-2 border-line-strong text-left",
1056
+ "bg-brutal-cream/60 hover:brightness-95",
1057
+ "data-[optimistic=true]:opacity-70 data-[single=true]:inline-block data-[single=true]:w-fit data-[single=true]:max-w-[26rem] data-[single=true]:justify-self-start"
1058
+ ],
1059
+ imageGalleryMedia: ["block h-full w-full", "data-[fit=contain]:object-contain data-[fit=cover]:object-cover"],
1060
+ imageGalleryOverlay: ["absolute inset-0 flex items-center justify-center"],
1061
+ imageGalleryAction: [
1062
+ "absolute right-1 bottom-1 z-10 hidden size-6 items-center justify-center",
1063
+ "border border-line-strong bg-white/80 text-black/50",
1064
+ "hover:text-black focus:flex focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-line-strong",
1065
+ "group-hover/img:flex",
1066
+ "[&_svg]:size-3"
1067
+ ],
1068
+ videoPreview: [
1069
+ "group/video relative w-full max-w-[min(28rem,calc(100vw-7rem))] overflow-hidden",
1070
+ "border-2 border-line-strong bg-black text-left",
1071
+ "data-[optimistic=true]:opacity-70"
1072
+ ],
1073
+ videoPreviewFrame: ["relative aspect-video w-full bg-black"],
1074
+ videoPreviewMedia: ["block h-full w-full bg-black object-contain"],
1075
+ videoPreviewFallback: ["flex h-full w-full items-center justify-center bg-black text-white", "data-[interactive=true]:hover:bg-black/90 data-[interactive=true]:cursor-pointer data-[interactive=false]:cursor-default"],
1076
+ videoPreviewAction: [
1077
+ "absolute right-1.5 top-1.5 flex size-6 items-center justify-center",
1078
+ "border border-line-strong bg-white/80 text-black/60",
1079
+ "hover:bg-white hover:text-black",
1080
+ "[&_svg]:size-3"
1081
+ ],
1082
+ attachmentCard: [
1083
+ "group/img relative inline-flex h-20 w-44 min-w-44 max-w-44 shrink-0 flex-col justify-between overflow-hidden",
1084
+ "border border-black/15 bg-white px-2.5 py-2 text-left",
1085
+ "text-black transition-colors duration-100 hover:border-black/30 hover:bg-black/5",
1086
+ "data-[loading=true]:!bg-soft-signal/30 data-[loading=true]:cursor-wait data-[optimistic=true]:opacity-70",
1087
+ "[&_svg]:size-4 [&_svg]:shrink-0"
1088
+ ],
1089
+ attachmentIcon: ["absolute bottom-1.5 right-1.5 flex items-center justify-center", "text-black/60 group-hover/img:text-black"],
1090
+ attachmentBody: ["w-full min-w-0 max-w-full overflow-hidden"],
1091
+ attachmentTitle: ["block w-full max-w-full truncate text-xs font-bold text-black"],
1092
+ attachmentMeta: ["mt-0.5 block truncate text-[10px] leading-4 text-black/45"],
1093
+ attachmentAction: [
1094
+ "absolute bottom-1.5 right-1.5 flex items-center justify-center",
1095
+ "text-black/60 group-hover/img:text-black",
1096
+ "[&_svg]:size-3"
1097
+ ],
1098
+ badge: [
1099
+ "inline-flex h-5 min-w-0 max-w-full items-center gap-1 overflow-hidden whitespace-nowrap",
1100
+ "border border-line-strong px-1.5 text-[10px] font-bold leading-none",
1101
+ "text-foreground-strong transition-colors duration-100",
1102
+ "[&_svg]:size-3 [&_svg]:shrink-0"
1103
+ ],
1104
+ reactionChip: [
1105
+ "inline-flex h-5 min-w-0 max-w-full items-center gap-1 overflow-hidden rounded px-1.5",
1106
+ "whitespace-nowrap bg-[#EEEDE6] text-[12px] font-bold leading-none text-foreground-strong",
1107
+ "transition-colors duration-100 hover:bg-[#E0DED4]",
1108
+ "data-[reacted=true]:bg-brutal-pink/20 data-[reacted=true]:hover:bg-brutal-pink/30",
1109
+ "data-[failed=true]:bg-brutal-orange/30"
1110
+ ],
1111
+ reactionGlyph: [
1112
+ "inline-flex items-center justify-center leading-none",
1113
+ "data-[emoji=true]:shrink-0",
1114
+ "[&>svg]:size-[13px] [&>svg]:shrink-0"
1115
+ ],
1116
+ reactionCount: ["inline-flex min-w-[1ch] items-center justify-center font-mono leading-none tabular-nums"],
1117
+ reactionQuickRow: ["flex h-9 items-center gap-1 bg-white px-2"],
1118
+ reactionQuickButton: ["flex size-7 items-center justify-center rounded bg-transparent transition-colors", "hover:bg-brutal-pink/20 active:bg-brutal-pink/20"],
1119
+ reactionPicker: ["inline-flex items-center gap-0.5 border-2 border-line-strong bg-white px-1.5 py-1"],
1120
+ reactionPopover: ["inline-block max-w-[280px] border-2 border-line-strong bg-white px-2 py-1.5", "text-xs font-bold text-black"],
1121
+ reactionPopoverNames: ["flex max-w-60 flex-wrap items-center gap-y-0.5"],
1122
+ reactionPopoverName: ["inline-flex min-w-0 items-baseline leading-5"],
1123
+ reactionPopoverNameText: ["max-w-28 truncate"],
1124
+ reactionPopoverSeparator: ["shrink-0 text-black/45"]
1125
+ },
1126
+ variants: {
1127
+ rowState: {
1128
+ active: { root: "border-line-strong bg-layer-panel" },
1129
+ "search-match": { root: "border-line-strong bg-brutal-cyan/25 shadow-brutal" }
1130
+ },
1131
+ badgeTone: {
1132
+ default: { badge: "bg-white" },
1133
+ cyan: { badge: "bg-brutal-cyan/20 hover:bg-brutal-cyan/40" }
1134
+ },
1135
+ compact: { true: { root: "mt-0 min-h-0" } },
1136
+ toolbarVisible: { true: { toolbar: "flex" } }
1137
+ }
1138
+ });
1139
+ //#endregion
1140
+ //#region src/components/message-item/root-parts.tsx
1141
+ function MessageItem({ className, compact, render, rowState, ...props }) {
1142
+ const { root } = messageItem({
1143
+ compact,
1144
+ rowState
1145
+ });
1146
+ return useRender({
1147
+ defaultTagName: "div",
1148
+ render,
1149
+ props: mergeProps({
1150
+ "data-row-state": rowState,
1151
+ className: root({ className })
1152
+ }, props),
1153
+ state: { slot: "message-item" }
1154
+ });
1155
+ }
1156
+ function MessageItemGutter({ className, render, ...props }) {
1157
+ const { gutter } = messageItem();
1158
+ return useRender({
1159
+ defaultTagName: "div",
1160
+ render,
1161
+ props: mergeProps({ className: gutter({ className }) }, props),
1162
+ state: { slot: "message-item-gutter" }
1163
+ });
1164
+ }
1165
+ function MessageItemAvatarSlot({ className, render, ...props }) {
1166
+ const { avatarSlot } = messageItem();
1167
+ return useRender({
1168
+ defaultTagName: "div",
1169
+ render,
1170
+ props: mergeProps({ className: avatarSlot({ className }) }, props),
1171
+ state: { slot: "message-item-avatar-slot" }
1172
+ });
1173
+ }
1174
+ function MessageItemSelectMark({ checked = false, className, render, ...props }) {
1175
+ const { selectMark } = messageItem();
1176
+ return useRender({
1177
+ defaultTagName: "span",
1178
+ render,
1179
+ props: mergeProps({
1180
+ "aria-hidden": true,
1181
+ "data-checked": checked ? "true" : "false",
1182
+ className: selectMark({ className }),
1183
+ children: checked ? /* @__PURE__ */ jsx(Check, { "aria-hidden": true }) : null
1184
+ }, props),
1185
+ state: { slot: "message-item-select-mark" }
1186
+ });
1187
+ }
1188
+ function MessageItemContinuationTime({ className, render, ...props }) {
1189
+ const { continuationTime } = messageItem();
1190
+ return useRender({
1191
+ defaultTagName: "span",
1192
+ render,
1193
+ props: mergeProps({ className: continuationTime({ className }) }, props),
1194
+ state: { slot: "message-item-continuation-time" }
1195
+ });
1196
+ }
1197
+ function MessageItemContent({ className, render, ...props }) {
1198
+ const { content } = messageItem();
1199
+ return useRender({
1200
+ defaultTagName: "div",
1201
+ render,
1202
+ props: mergeProps({ className: content({ className }) }, props),
1203
+ state: { slot: "message-item-content" }
1204
+ });
1205
+ }
1206
+ function MessageItemHeader({ className, render, ...props }) {
1207
+ const { header } = messageItem();
1208
+ return useRender({
1209
+ defaultTagName: "div",
1210
+ render,
1211
+ props: mergeProps({ className: header({ className }) }, props),
1212
+ state: { slot: "message-item-header" }
1213
+ });
1214
+ }
1215
+ function MessageItemSender({ className, render, ...props }) {
1216
+ const { sender } = messageItem();
1217
+ return useRender({
1218
+ defaultTagName: "span",
1219
+ render,
1220
+ props: mergeProps({ className: sender({ className }) }, props),
1221
+ state: { slot: "message-item-sender" }
1222
+ });
1223
+ }
1224
+ function MessageItemSenderState({ className, render, ...props }) {
1225
+ const { senderState } = messageItem();
1226
+ return useRender({
1227
+ defaultTagName: "span",
1228
+ render,
1229
+ props: mergeProps({ className: senderState({ className }) }, props),
1230
+ state: { slot: "message-item-sender-state" }
1231
+ });
1232
+ }
1233
+ function MessageItemMeta({ className, render, ...props }) {
1234
+ const { meta } = messageItem();
1235
+ return useRender({
1236
+ defaultTagName: "span",
1237
+ render,
1238
+ props: mergeProps({ className: meta({ className }) }, props),
1239
+ state: { slot: "message-item-meta" }
1240
+ });
1241
+ }
1242
+ function MessageItemTime({ className, render, ...props }) {
1243
+ const { time } = messageItem();
1244
+ return useRender({
1245
+ defaultTagName: "span",
1246
+ render,
1247
+ props: mergeProps({ className: time({ className }) }, props),
1248
+ state: { slot: "message-item-time" }
1249
+ });
1250
+ }
1251
+ function MessageItemInlineStatus({ className, render, ...props }) {
1252
+ const { inlineStatus } = messageItem();
1253
+ return useRender({
1254
+ defaultTagName: "span",
1255
+ render,
1256
+ props: mergeProps({ className: inlineStatus({ className }) }, props),
1257
+ state: { slot: "message-item-inline-status" }
1258
+ });
1259
+ }
1260
+ function MessageItemBody({ className, render, ...props }) {
1261
+ const { body } = messageItem();
1262
+ return useRender({
1263
+ defaultTagName: "div",
1264
+ render,
1265
+ props: mergeProps({ className: body({ className }) }, props),
1266
+ state: { slot: "message-item-body" }
1267
+ });
1268
+ }
1269
+ function MessageItemEmbedded({ className, render, ...props }) {
1270
+ const { embedded } = messageItem();
1271
+ return useRender({
1272
+ defaultTagName: "div",
1273
+ render,
1274
+ props: mergeProps({ className: embedded({ className }) }, props),
1275
+ state: { slot: "message-item-embedded" }
1276
+ });
1277
+ }
1278
+ function MessageItemNotice({ className, render, ...props }) {
1279
+ const { notice } = messageItem();
1280
+ return useRender({
1281
+ defaultTagName: "div",
1282
+ render,
1283
+ props: mergeProps({ className: notice({ className }) }, props),
1284
+ state: { slot: "message-item-notice" }
1285
+ });
1286
+ }
1287
+ function MessageItemAttachments({ className, render, ...props }) {
1288
+ const { attachments } = messageItem();
1289
+ return useRender({
1290
+ defaultTagName: "div",
1291
+ render,
1292
+ props: mergeProps({ className: attachments({ className }) }, props),
1293
+ state: { slot: "message-item-attachments" }
1294
+ });
1295
+ }
1296
+ function MessageItemFooter({ className, render, ...props }) {
1297
+ const { footer } = messageItem();
1298
+ return useRender({
1299
+ defaultTagName: "div",
1300
+ render,
1301
+ props: mergeProps({ className: footer({ className }) }, props),
1302
+ state: { slot: "message-item-footer" }
1303
+ });
1304
+ }
1305
+ function MessageItemBadge({ className, render, tone = "default", ...props }) {
1306
+ const { badge } = messageItem({ badgeTone: tone });
1307
+ return useRender({
1308
+ defaultTagName: "span",
1309
+ render,
1310
+ props: mergeProps({ className: badge({ className }) }, props),
1311
+ state: { slot: "message-item-badge" }
1312
+ });
1313
+ }
1314
+ function MessageItemToolbar({ className, render, visible, ...props }) {
1315
+ const { toolbar } = messageItem({ toolbarVisible: visible });
1316
+ return useRender({
1317
+ defaultTagName: "div",
1318
+ render,
1319
+ props: mergeProps({ className: toolbar({ className }) }, props),
1320
+ state: { slot: "message-item-toolbar" }
1321
+ });
1322
+ }
1323
+ function MessageItemToolbarButton({ active, saved, className, render, ...props }) {
1324
+ const { toolbarButton } = messageItem();
1325
+ return useRender({
1326
+ defaultTagName: "button",
1327
+ render,
1328
+ props: mergeProps({
1329
+ type: "button",
1330
+ "data-active": active ? "true" : void 0,
1331
+ "data-saved": saved ? "true" : void 0,
1332
+ className: toolbarButton({ className })
1333
+ }, props),
1334
+ state: { slot: "message-item-toolbar-button" }
1335
+ });
1336
+ }
1337
+ function MessageItemSavedIndicator({ className, render, ...props }) {
1338
+ const { savedIndicator } = messageItem();
1339
+ return useRender({
1340
+ defaultTagName: "span",
1341
+ render,
1342
+ props: mergeProps({
1343
+ "aria-hidden": true,
1344
+ className: savedIndicator({ className })
1345
+ }, props),
1346
+ state: { slot: "message-item-saved-indicator" }
1347
+ });
1348
+ }
1349
+ function SystemMessageItem({ className, render, ...props }) {
1350
+ const { systemRoot } = messageItem();
1351
+ return useRender({
1352
+ defaultTagName: "div",
1353
+ render,
1354
+ props: mergeProps({ className: systemRoot({ className }) }, props),
1355
+ state: { slot: "system-message-item" }
1356
+ });
1357
+ }
1358
+ function SystemMessageItemTime({ className, render, ...props }) {
1359
+ const { systemTime } = messageItem();
1360
+ return useRender({
1361
+ defaultTagName: "span",
1362
+ render,
1363
+ props: mergeProps({ className: systemTime({ className }) }, props),
1364
+ state: { slot: "system-message-item-time" }
1365
+ });
1366
+ }
1367
+ function SystemMessageItemContent({ className, render, ...props }) {
1368
+ const { systemContent } = messageItem();
1369
+ return useRender({
1370
+ defaultTagName: "span",
1371
+ render,
1372
+ props: mergeProps({ className: systemContent({ className }) }, props),
1373
+ state: { slot: "system-message-item-content" }
1374
+ });
1375
+ }
1376
+ //#endregion
1377
+ //#region src/components/message-item/media-parts.tsx
1378
+ function MessageImageGallery({ className, render, ...props }) {
1379
+ const { imageGallery } = messageItem();
1380
+ return useRender({
1381
+ defaultTagName: "div",
1382
+ render,
1383
+ props: mergeProps({ className: imageGallery({ className }) }, props),
1384
+ state: { slot: "message-image-gallery" }
1385
+ });
1386
+ }
1387
+ function MessageImageGalleryRow({ className, render, ...props }) {
1388
+ const { imageGalleryRow } = messageItem();
1389
+ return useRender({
1390
+ defaultTagName: "div",
1391
+ render,
1392
+ props: mergeProps({ className: imageGalleryRow({ className }) }, props),
1393
+ state: { slot: "message-image-gallery-row" }
1394
+ });
1395
+ }
1396
+ function MessageImageGalleryItem({ optimistic, single, className, render, ...props }) {
1397
+ const { imageGalleryItem } = messageItem();
1398
+ return useRender({
1399
+ defaultTagName: "div",
1400
+ render,
1401
+ props: mergeProps({
1402
+ "data-optimistic": optimistic ? "true" : void 0,
1403
+ "data-single": single ? "true" : void 0,
1404
+ className: imageGalleryItem({ className })
1405
+ }, props),
1406
+ state: { slot: "message-image-gallery-item" }
1407
+ });
1408
+ }
1409
+ function MessageImageGalleryMedia({ fit = "cover", className, render, ...props }) {
1410
+ const { imageGalleryMedia } = messageItem();
1411
+ return useRender({
1412
+ defaultTagName: "img",
1413
+ render,
1414
+ props: mergeProps({
1415
+ "data-fit": fit,
1416
+ className: imageGalleryMedia({ className })
1417
+ }, props),
1418
+ state: { slot: "message-image-gallery-media" }
1419
+ });
1420
+ }
1421
+ function MessageImageGalleryOverlay({ className, render, ...props }) {
1422
+ const { imageGalleryOverlay } = messageItem();
1423
+ return useRender({
1424
+ defaultTagName: "div",
1425
+ render,
1426
+ props: mergeProps({ className: imageGalleryOverlay({ className }) }, props),
1427
+ state: { slot: "message-image-gallery-overlay" }
1428
+ });
1429
+ }
1430
+ function MessageImageGalleryAction({ className, render, ...props }) {
1431
+ const { imageGalleryAction } = messageItem();
1432
+ return useRender({
1433
+ defaultTagName: "button",
1434
+ render,
1435
+ props: mergeProps({
1436
+ type: "button",
1437
+ className: imageGalleryAction({ className })
1438
+ }, props),
1439
+ state: { slot: "message-image-gallery-action" }
1440
+ });
1441
+ }
1442
+ function MessageVideoPreview({ optimistic, className, render, ...props }) {
1443
+ const { videoPreview } = messageItem();
1444
+ return useRender({
1445
+ defaultTagName: "div",
1446
+ render,
1447
+ props: mergeProps({
1448
+ "data-optimistic": optimistic ? "true" : void 0,
1449
+ className: videoPreview({ className })
1450
+ }, props),
1451
+ state: { slot: "message-video-preview" }
1452
+ });
1453
+ }
1454
+ function MessageVideoPreviewFrame({ className, render, ...props }) {
1455
+ const { videoPreviewFrame } = messageItem();
1456
+ return useRender({
1457
+ defaultTagName: "div",
1458
+ render,
1459
+ props: mergeProps({ className: videoPreviewFrame({ className }) }, props),
1460
+ state: { slot: "message-video-preview-frame" }
1461
+ });
1462
+ }
1463
+ function MessageVideoPreviewMedia({ className, render, ...props }) {
1464
+ const { videoPreviewMedia } = messageItem();
1465
+ return useRender({
1466
+ defaultTagName: "video",
1467
+ render,
1468
+ props: mergeProps({ className: videoPreviewMedia({ className }) }, props),
1469
+ state: { slot: "message-video-preview-media" }
1470
+ });
1471
+ }
1472
+ function MessageVideoPreviewFallback({ interactive = false, className, render, ...props }) {
1473
+ const { videoPreviewFallback } = messageItem();
1474
+ return useRender({
1475
+ defaultTagName: "div",
1476
+ render,
1477
+ props: mergeProps({
1478
+ "data-interactive": interactive ? "true" : "false",
1479
+ className: videoPreviewFallback({ className })
1480
+ }, props),
1481
+ state: { slot: "message-video-preview-fallback" }
1482
+ });
1483
+ }
1484
+ function MessageVideoPreviewAction({ className, render, ...props }) {
1485
+ const { videoPreviewAction } = messageItem();
1486
+ return useRender({
1487
+ defaultTagName: "button",
1488
+ render,
1489
+ props: mergeProps({
1490
+ type: "button",
1491
+ className: videoPreviewAction({ className })
1492
+ }, props),
1493
+ state: { slot: "message-video-preview-action" }
1494
+ });
1495
+ }
1496
+ //#endregion
1497
+ //#region src/components/message-item/attachment-parts.tsx
1498
+ function MessageAttachmentCard({ optimistic, loading, className, render, ...props }) {
1499
+ const { attachmentCard } = messageItem();
1500
+ return useRender({
1501
+ defaultTagName: "button",
1502
+ render,
1503
+ props: mergeProps({
1504
+ type: "button",
1505
+ "aria-busy": loading ? "true" : void 0,
1506
+ "data-loading": loading ? "true" : void 0,
1507
+ "data-optimistic": optimistic ? "true" : void 0,
1508
+ className: attachmentCard({ className })
1509
+ }, props),
1510
+ state: { slot: "message-attachment-card" }
1511
+ });
1512
+ }
1513
+ function MessageAttachmentIcon({ className, render, ...props }) {
1514
+ const { attachmentIcon } = messageItem();
1515
+ return useRender({
1516
+ defaultTagName: "span",
1517
+ render,
1518
+ props: mergeProps({ className: attachmentIcon({ className }) }, props),
1519
+ state: { slot: "message-attachment-icon" }
1520
+ });
1521
+ }
1522
+ function MessageAttachmentBody({ className, render, ...props }) {
1523
+ const { attachmentBody } = messageItem();
1524
+ return useRender({
1525
+ defaultTagName: "span",
1526
+ render,
1527
+ props: mergeProps({ className: attachmentBody({ className }) }, props),
1528
+ state: { slot: "message-attachment-body" }
1529
+ });
1530
+ }
1531
+ function MessageAttachmentTitle({ className, render, ...props }) {
1532
+ const { attachmentTitle } = messageItem();
1533
+ return useRender({
1534
+ defaultTagName: "span",
1535
+ render,
1536
+ props: mergeProps({ className: attachmentTitle({ className }) }, props),
1537
+ state: { slot: "message-attachment-title" }
1538
+ });
1539
+ }
1540
+ function MessageAttachmentMeta({ className, render, ...props }) {
1541
+ const { attachmentMeta } = messageItem();
1542
+ return useRender({
1543
+ defaultTagName: "span",
1544
+ render,
1545
+ props: mergeProps({ className: attachmentMeta({ className }) }, props),
1546
+ state: { slot: "message-attachment-meta" }
1547
+ });
1548
+ }
1549
+ function MessageAttachmentAction({ className, render, ...props }) {
1550
+ const { attachmentAction } = messageItem();
1551
+ return useRender({
1552
+ defaultTagName: "span",
1553
+ render,
1554
+ props: mergeProps({ className: attachmentAction({ className }) }, props),
1555
+ state: { slot: "message-attachment-action" }
1556
+ });
1557
+ }
1558
+ //#endregion
1559
+ //#region src/components/message-item/reaction-sprite.ts
1560
+ const REACTION_SPRITE_DATA_URI = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNjgiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAxNjggMjQiPgogIDxnIGlkPSJ0aHVtYnNfdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMCkiPjxwYXRoIGZpbGw9IiNGRkQ0NDAiIGQ9Ik04IDEwaDNsMS4zLTUuMmMuMi0uOCAxLTEuMyAxLjgtMS4xIDEgLjIgMS42IDEuMiAxLjMgMi4yTDE0LjUgMTBIMTljMS4xIDAgMiAuOSAyIDJ2MS4yYzAgLjQtLjEuOC0uMyAxLjFMMTguOCAyMGMtLjMuNi0xIDEtMS43IDFIOFYxMFoiIC8+IDxwYXRoIGZpbGw9IiNGRkY4RTciIGQ9Ik0xMy4yIDUuM2MuMi0uNy45LTEuMSAxLjYtLjguMS4xLjIuMS4zLjItLjYgMC0xIC40LTEuMiAxTDEzIDloLTEuMmwxLjQtMy43WiIgLz4gPHBhdGggZmlsbD0iIzhGQzREOSIgZD0iTTMgMTBoNXYxMUgzeiIgLz4gPHBhdGggc3Ryb2tlPSIjMTQxMTExIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik04IDEwaDNsMS4zLTUuMmMuMi0uOCAxLTEuMyAxLjgtMS4xIDEgLjIgMS42IDEuMiAxLjMgMi4yTDE0LjUgMTBIMTljMS4xIDAgMiAuOSAyIDJ2MS4yYzAgLjQtLjEuOC0uMyAxLjFMMTguOCAyMGMtLjMuNi0xIDEtMS43IDFIOFYxMFoiIC8+IDxwYXRoIHN0cm9rZT0iIzE0MTExMSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMyAxMGg1djExSDN6IiAvPjwvZz4KICA8ZyBpZD0iaGVhcnQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI0IDApIj48cGF0aCBmaWxsPSIjRjk3MjY0IiBkPSJNMTIgMjEgNC40IDEzLjRDMi4zIDExLjMgMi4yIDggNC4xIDYuMSA1LjggNC40IDguNCA0LjUgMTAgNi4xbDIgMiAyLTJjMS42LTEuNiA0LjItMS43IDUuOSAwIDEuOSAxLjkgMS44IDUuMi0uMyA3LjNMMTIgMjFaIiAvPiA8cGF0aCBmaWxsPSIjRkZGOEU3IiBkPSJNNi4xIDcuMmMuOC0uOCAyLS44IDIuOS0uMUw2IDEwLjFjLS41LS45LS40LTIuMi4xLTIuOVoiIC8+IDxwYXRoIHN0cm9rZT0iIzE0MTExMSIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTIgMjEgNC40IDEzLjRDMi4zIDExLjMgMi4yIDggNC4xIDYuMSA1LjggNC40IDguNCA0LjUgMTAgNi4xbDIgMiAyLTJjMS42LTEuNiA0LjItMS43IDUuOSAwIDEuOSAxLjkgMS44IDUuMi0uMyA3LjNMMTIgMjFaIiAvPjwvZz4KICA8ZyBpZD0icGFydHlfcG9wcGVyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0OCAwKSI+PHBhdGggZmlsbD0iI0JCQUZFNiIgZD0iTTQgMjAgOC41IDguNSAxNiAxNiA0IDIwWiIgLz4gPHBhdGggZmlsbD0iI0ZGRDQ0MCIgZD0iTTYuOCAxMi4yIDExLjggMTcuMiA4LjMgMTguMyA1LjcgMTUuNHoiIC8+IDxwYXRoIHN0cm9rZT0iIzE0MTExMSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNNCAyMCA4LjUgOC41IDE2IDE2IDQgMjBaIiAvPiA8cGF0aCBzdHJva2U9IiMxNDExMTEiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTE0IDVoM00xOCA5bDIuMy0yLjNNMTkgMTNoMi41IiAvPiA8cGF0aCBmaWxsPSIjRjk3MjY0IiBkPSJNMTggM2gyLjV2Mi41SDE4eiIgLz4gPHBhdGggZmlsbD0iIzI3Q0NGMyIgZD0iTTEzIDZoMi41djIuNUgxM3oiIC8+PC9nPgogIDxnIGlkPSJleWVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3MiAwKSI+PHBhdGggZmlsbD0iIzI3Q0NGMyIgZD0iTTMgMTFjMC0zLjEgMi4yLTUgNC44LTVzNC44IDEuOSA0LjggNS0yLjIgNS00LjggNVMzIDE0LjEgMyAxMVoiIC8+IDxwYXRoIGZpbGw9IiMyN0NDRjMiIGQ9Ik0xMS40IDExYzAtMy4xIDIuMi01IDQuOC01UzIxIDcuOSAyMSAxMXMtMi4yIDUtNC44IDUtNC44LTEuOS00LjgtNVoiIC8+IDxwYXRoIGZpbGw9IiNGRkY4RTciIGQ9Ik01LjIgOS4yaDJ2MmgtMnpNMTMuNiA5LjJoMnYyaC0yeiIgLz4gPHBhdGggZmlsbD0iIzE0MTExMSIgZD0iTTcuOCA4LjhoMi44djQuNkg3Ljh6TTE2LjIgOC44SDE5djQuNmgtMi44eiIgLz4gPHBhdGggc3Ryb2tlPSIjMTQxMTExIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik0zIDExYzAtMy4xIDIuMi01IDQuOC01czQuOCAxLjkgNC44IDUtMi4yIDUtNC44IDVTMyAxNC4xIDMgMTFaIiAvPiA8cGF0aCBzdHJva2U9IiMxNDExMTEiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMiIgZD0iTTExLjQgMTFjMC0zLjEgMi4yLTUgNC44LTVTMjEgNy45IDIxIDExcy0yLjIgNS00LjggNS00LjgtMS45LTQuOC01WiIgLz48L2c+CiAgPGcgaWQ9ImZpcmUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDk2IDApIj48cGF0aCBmaWxsPSIjRjhBMTZGIiBkPSJNMTIgMjJjLTQuNCAwLTcuNi0zLTcuNi03LjEgMC0zLjEgMS45LTUuNCA0LjEtNy4xLjMgMiAxLjIgMy4yIDIuMyAzLjktLjMtMy4zIDEtNi4zIDQuMS04LjcuNSAzIDIuMSA0LjcgMy40IDYuMyAxLjEgMS40IDEuMyAyLjkgMS4zIDUuMSAwIDQuNC0zLjEgNy42LTcuNiA3LjZaIiAvPiA8cGF0aCBmaWxsPSIjRkZENDQwIiBkPSJNMTIuMSAxOS44Yy0yLjIgMC0zLjgtMS40LTMuOC0zLjUgMC0xLjUuOS0yLjcgMi4xLTMuNi4yIDEgLjYgMS43IDEuMyAyIC4xLTEuOC44LTMuMiAyLjMtNC40LjMgMS41IDEgMi40IDEuNyAzLjIuNi43LjggMS40LjggMi41IDAgMi4zLTEuNyAzLjgtNC40IDMuOFoiIC8+IDxwYXRoIHN0cm9rZT0iIzE0MTExMSIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTIgMjJjLTQuNCAwLTcuNi0zLTcuNi03LjEgMC0zLjEgMS45LTUuNCA0LjEtNy4xLjMgMiAxLjIgMy4yIDIuMyAzLjktLjMtMy4zIDEtNi4zIDQuMS04LjcuNSAzIDIuMSA0LjcgMy40IDYuMyAxLjEgMS40IDEuMyAyLjkgMS4zIDUuMSAwIDQuNC0zLjEgNy42LTcuNiA3LjZaIiAvPiA8cGF0aCBzdHJva2U9IiMxNDExMTEiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41IiBkPSJNMTIuMSAxOS44Yy0yLjIgMC0zLjgtMS40LTMuOC0zLjUgMC0xLjUuOS0yLjcgMi4xLTMuNi4yIDEgLjYgMS43IDEuMyAyIC4xLTEuOC44LTMuMiAyLjMtNC40LjMgMS41IDEgMi40IDEuNyAzLjIuNi43LjggMS40LjggMi41IDAgMi4zLTEuNyAzLjgtNC40IDMuOFoiIC8+PC9nPgogIDxnIGlkPSJqb3kiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyMCAwKSI+PHBhdGggZmlsbD0iI0ZGRDQ0MCIgZD0iTTQgNWgxNnYxNEg0eiIgLz4gPHBhdGggZmlsbD0iIzE0MTExMSIgZD0iTTcgOWgzLjJ2Mi40SDd6TTEzLjggOUgxN3YyLjRoLTMuMnpNOCAxNGg4djJIOHoiIC8+IDxwYXRoIGZpbGw9IiMyN0NDRjMiIGQ9Ik01IDEyaDIuNHY0LjVINXpNMTYuNiAxMkgxOXY0LjVoLTIuNHoiIC8+IDxwYXRoIHN0cm9rZT0iIzE0MTExMSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNNCA1aDE2djE0SDR6IiAvPiA8cGF0aCBzdHJva2U9IiMxNDExMTEiIHN0cm9rZS13aWR0aD0iMS41IiBkPSJNOCAxNmMxIDEuMiAyLjIgMS44IDQgMS44czMtLjYgNC0xLjgiIC8+PC9nPgogIDxnIGlkPSJjaGVja19tYXJrIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDQgMCkiPjxwYXRoIGZpbGw9IiM5RENBQUEiIGQ9Ik00IDRoMTZ2MTZINHoiIC8+IDxwYXRoIGZpbGw9IiNGRkY4RTciIGQ9Ik03IDExaDN2M0g3ek0xMCAxNGgzdjNoLTN6TTEzIDExaDN2M2gtM3pNMTYgOGgzdjNoLTN6TTE4IDZoMnYzaC0yeiIgLz4gPHBhdGggc3Ryb2tlPSIjMTQxMTExIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik00IDRoMTZ2MTZINHoiIC8+PC9nPgo8L3N2Zz4K";
1561
+ //#endregion
1562
+ //#region src/components/message-item/reaction-parts.tsx
1563
+ const MESSAGE_QUICK_REACTIONS = [
1564
+ "👍",
1565
+ "❤️",
1566
+ "🎉",
1567
+ "👀",
1568
+ "🔥",
1569
+ "😂",
1570
+ "✅"
1571
+ ];
1572
+ const REACTION_SPRITE_PATH = REACTION_SPRITE_DATA_URI;
1573
+ const REACTION_SPRITE_WIDTH = 168;
1574
+ const REACTION_SPRITE_HEIGHT = 24;
1575
+ const REACTION_SPRITE_ITEMS = {
1576
+ "👍": {
1577
+ id: "thumbs_up",
1578
+ x: 0,
1579
+ y: 0,
1580
+ width: 24,
1581
+ height: 24
1582
+ },
1583
+ "❤️": {
1584
+ id: "heart",
1585
+ x: 24,
1586
+ y: 0,
1587
+ width: 24,
1588
+ height: 24
1589
+ },
1590
+ "❤": {
1591
+ id: "heart",
1592
+ x: 24,
1593
+ y: 0,
1594
+ width: 24,
1595
+ height: 24
1596
+ },
1597
+ "🎉": {
1598
+ id: "party_popper",
1599
+ x: 48,
1600
+ y: 0,
1601
+ width: 24,
1602
+ height: 24
1603
+ },
1604
+ "👀": {
1605
+ id: "eyes",
1606
+ x: 72,
1607
+ y: 0,
1608
+ width: 24,
1609
+ height: 24
1610
+ },
1611
+ "🔥": {
1612
+ id: "fire",
1613
+ x: 96,
1614
+ y: 0,
1615
+ width: 24,
1616
+ height: 24
1617
+ },
1618
+ "😂": {
1619
+ id: "joy",
1620
+ x: 120,
1621
+ y: 0,
1622
+ width: 24,
1623
+ height: 24
1624
+ },
1625
+ "✅": {
1626
+ id: "check_mark",
1627
+ x: 144,
1628
+ y: 0,
1629
+ width: 24,
1630
+ height: 24
1631
+ }
1632
+ };
1633
+ function MessageReactionChip({ reacted, failed, className, render, ...props }) {
1634
+ const { reactionChip } = messageItem();
1635
+ return useRender({
1636
+ defaultTagName: "button",
1637
+ render,
1638
+ props: mergeProps({
1639
+ type: "button",
1640
+ "data-reacted": reacted ? "true" : void 0,
1641
+ "data-failed": failed ? "true" : void 0,
1642
+ className: reactionChip({ className })
1643
+ }, props),
1644
+ state: { slot: "message-reaction-chip" }
1645
+ });
1646
+ }
1647
+ function MessageReactionGlyph({ children, className, emoji, render, size = 15, spritePath = REACTION_SPRITE_PATH, style, ...props }) {
1648
+ const { reactionGlyph } = messageItem();
1649
+ const glyph = emoji ?? (typeof children === "string" ? children : void 0);
1650
+ const spriteItem = glyph ? REACTION_SPRITE_ITEMS[glyph] : void 0;
1651
+ const spriteScale = spriteItem ? size / spriteItem.width : 1;
1652
+ return useRender({
1653
+ defaultTagName: "span",
1654
+ render,
1655
+ props: mergeProps({
1656
+ "aria-label": spriteItem ? glyph : void 0,
1657
+ "data-emoji": glyph ? "true" : void 0,
1658
+ "data-reaction-glyph": spriteItem?.id,
1659
+ "data-reaction-sprite-path": spriteItem ? spritePath : void 0,
1660
+ children: spriteItem ? void 0 : glyph ?? children,
1661
+ className: reactionGlyph({ className }),
1662
+ role: spriteItem ? "img" : void 0,
1663
+ style: glyph ? {
1664
+ backgroundImage: spriteItem ? `url(${spritePath})` : void 0,
1665
+ backgroundPosition: spriteItem ? `${-spriteItem.x * spriteScale}px ${-spriteItem.y * spriteScale}px` : void 0,
1666
+ backgroundRepeat: spriteItem ? "no-repeat" : void 0,
1667
+ backgroundSize: spriteItem ? `${REACTION_SPRITE_WIDTH * spriteScale}px ${REACTION_SPRITE_HEIGHT * spriteScale}px` : void 0,
1668
+ fontSize: size,
1669
+ height: size,
1670
+ lineHeight: 1,
1671
+ width: size,
1672
+ ...style
1673
+ } : style
1674
+ }, props),
1675
+ state: { slot: "message-reaction-glyph" }
1676
+ });
1677
+ }
1678
+ function MessageReactionCount({ className, render, ...props }) {
1679
+ const { reactionCount } = messageItem();
1680
+ return useRender({
1681
+ defaultTagName: "span",
1682
+ render,
1683
+ props: mergeProps({ className: reactionCount({ className }) }, props),
1684
+ state: { slot: "message-reaction-count" }
1685
+ });
1686
+ }
1687
+ function MessageReactionQuickRow({ className, render, ...props }) {
1688
+ const { reactionQuickRow } = messageItem();
1689
+ return useRender({
1690
+ defaultTagName: "div",
1691
+ render,
1692
+ props: mergeProps({ className: reactionQuickRow({ className }) }, props),
1693
+ state: { slot: "message-reaction-quick-row" }
1694
+ });
1695
+ }
1696
+ function MessageReactionQuickButton({ className, render, ...props }) {
1697
+ const { reactionQuickButton } = messageItem();
1698
+ return useRender({
1699
+ defaultTagName: "button",
1700
+ render,
1701
+ props: mergeProps({
1702
+ type: "button",
1703
+ className: reactionQuickButton({ className })
1704
+ }, props),
1705
+ state: { slot: "message-reaction-quick-button" }
1706
+ });
1707
+ }
1708
+ function MessageReactionPicker({ className, render, ...props }) {
1709
+ const { reactionPicker } = messageItem();
1710
+ return useRender({
1711
+ defaultTagName: "div",
1712
+ render,
1713
+ props: mergeProps({ className: reactionPicker({ className }) }, props),
1714
+ state: { slot: "message-reaction-picker" }
1715
+ });
1716
+ }
1717
+ function MessageReactionPopover({ className, render, ...props }) {
1718
+ const { reactionPopover } = messageItem();
1719
+ return useRender({
1720
+ defaultTagName: "div",
1721
+ render,
1722
+ props: mergeProps({ className: reactionPopover({ className }) }, props),
1723
+ state: { slot: "message-reaction-popover" }
1724
+ });
1725
+ }
1726
+ function MessageReactionPopoverNames({ className, render, ...props }) {
1727
+ const { reactionPopoverNames } = messageItem();
1728
+ return useRender({
1729
+ defaultTagName: "div",
1730
+ render,
1731
+ props: mergeProps({ className: reactionPopoverNames({ className }) }, props),
1732
+ state: { slot: "message-reaction-popover-names" }
1733
+ });
1734
+ }
1735
+ function MessageReactionPopoverName({ className, render, ...props }) {
1736
+ const { reactionPopoverName } = messageItem();
1737
+ return useRender({
1738
+ defaultTagName: "span",
1739
+ render,
1740
+ props: mergeProps({ className: reactionPopoverName({ className }) }, props),
1741
+ state: { slot: "message-reaction-popover-name" }
1742
+ });
1743
+ }
1744
+ function MessageReactionPopoverNameText({ className, render, ...props }) {
1745
+ const { reactionPopoverNameText } = messageItem();
1746
+ return useRender({
1747
+ defaultTagName: "span",
1748
+ render,
1749
+ props: mergeProps({ className: reactionPopoverNameText({ className }) }, props),
1750
+ state: { slot: "message-reaction-popover-name-text" }
1751
+ });
1752
+ }
1753
+ function MessageReactionPopoverSeparator({ className, render, ...props }) {
1754
+ const { reactionPopoverSeparator } = messageItem();
1755
+ return useRender({
1756
+ defaultTagName: "span",
1757
+ render,
1758
+ props: mergeProps({ className: reactionPopoverSeparator({ className }) }, props),
1759
+ state: { slot: "message-reaction-popover-separator" }
1760
+ });
1761
+ }
1762
+ //#endregion
1763
+ export { ConversationPreviewCard, ConversationPreviewCardAction, ConversationPreviewCardAuthor, ConversationPreviewCardAuthorName, ConversationPreviewCardAuthorSubtitle, ConversationPreviewCardChannel, ConversationPreviewCardContent, ConversationPreviewCardFooter, ConversationPreviewCardMeta, ConversationPreviewCardPreview, ConversationPreviewCardPreviewAuthor, ConversationPreviewCardPreviewLeading, ConversationPreviewCardSecondaryPreview, ConversationPreviewCardTimestamp, DescriptionAction, DescriptionDetails, DescriptionItem, DescriptionList, DescriptionTerm, ListItem, ListItemActionGroup, ListItemBody, ListItemDescription, ListItemIcon, ListItemMeta, ListItemRow, ListItemTitle, MESSAGE_QUICK_REACTIONS, MediaListItem, MediaListItemActionGroup, MediaListItemAside, MediaListItemBody, MediaListItemSubtitle, MediaListItemText, MediaListItemTitle, MediaListItemVisual, MessageAttachmentAction, MessageAttachmentBody, MessageAttachmentCard, MessageAttachmentIcon, MessageAttachmentMeta, MessageAttachmentTitle, MessageImageGallery, MessageImageGalleryAction, MessageImageGalleryItem, MessageImageGalleryMedia, MessageImageGalleryOverlay, MessageImageGalleryRow, MessageItem, MessageItemAttachments, MessageItemAvatarSlot, MessageItemBadge, MessageItemBody, MessageItemContent, MessageItemContinuationTime, MessageItemEmbedded, MessageItemFooter, MessageItemGutter, MessageItemHeader, MessageItemInlineStatus, MessageItemMeta, MessageItemNotice, MessageItemSavedIndicator, MessageItemSelectMark, MessageItemSender, MessageItemSenderState, MessageItemTime, MessageItemToolbar, MessageItemToolbarButton, MessageReactionChip, MessageReactionCount, MessageReactionGlyph, MessageReactionPicker, MessageReactionPopover, MessageReactionPopoverName, MessageReactionPopoverNameText, MessageReactionPopoverNames, MessageReactionPopoverSeparator, MessageReactionQuickButton, MessageReactionQuickRow, MessageVideoPreview, MessageVideoPreviewAction, MessageVideoPreviewFallback, MessageVideoPreviewFrame, MessageVideoPreviewMedia, PanelHeader, PanelHeaderActions, PanelHeaderContent, PanelHeaderIcon, PanelHeaderSubtitle, PanelHeaderSuffix, PanelHeaderTitle, PanelHeaderTitleRow, PanelHeaderVisual, PreviewShell, QuotedMessageCard, QuotedMessageCardAttachments, QuotedMessageCardAuthor, QuotedMessageCardAuthorName, QuotedMessageCardAuthorSubtitle, QuotedMessageCardBody, QuotedMessageCardChannel, QuotedMessageCardContent, QuotedMessageCardContentWrap, QuotedMessageCardHeader, QuotedMessageCardMeta, QuotedMessageCardSeparator, QuotedMessageCardTag, QuotedMessageCardThread, QuotedMessageCardTimestamp, QuotedMessageCardUnavailable, SectionHeader, SectionHeaderActions, SectionHeaderContent, SectionHeaderCount, SectionHeaderIcon, SectionHeaderTitle, SectionLabel, SystemMessageItem, SystemMessageItemContent, SystemMessageItemTime, ToggleGroup, ToggleGroupCount, ToggleGroupItem, ToggleGroupLabel };