@liveblocks/react-ui 2.14.0 → 2.15.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.
Files changed (272) hide show
  1. package/dist/_private/index.d.mts +24 -22
  2. package/dist/_private/index.d.ts +24 -22
  3. package/dist/_private/index.js +1 -0
  4. package/dist/_private/index.js.map +1 -1
  5. package/dist/_private/index.mjs +1 -0
  6. package/dist/_private/index.mjs.map +1 -1
  7. package/dist/components/Comment.js +358 -256
  8. package/dist/components/Comment.js.map +1 -1
  9. package/dist/components/Comment.mjs +334 -232
  10. package/dist/components/Comment.mjs.map +1 -1
  11. package/dist/components/Composer.js +308 -225
  12. package/dist/components/Composer.js.map +1 -1
  13. package/dist/components/Composer.mjs +288 -206
  14. package/dist/components/Composer.mjs.map +1 -1
  15. package/dist/components/HistoryVersionSummary.js +28 -32
  16. package/dist/components/HistoryVersionSummary.js.map +1 -1
  17. package/dist/components/HistoryVersionSummary.mjs +27 -31
  18. package/dist/components/HistoryVersionSummary.mjs.map +1 -1
  19. package/dist/components/HistoryVersionSummaryList.js +11 -9
  20. package/dist/components/HistoryVersionSummaryList.js.map +1 -1
  21. package/dist/components/HistoryVersionSummaryList.mjs +10 -8
  22. package/dist/components/HistoryVersionSummaryList.mjs.map +1 -1
  23. package/dist/components/InboxNotification.js +202 -143
  24. package/dist/components/InboxNotification.js.map +1 -1
  25. package/dist/components/InboxNotification.mjs +180 -121
  26. package/dist/components/InboxNotification.mjs.map +1 -1
  27. package/dist/components/InboxNotificationList.js +19 -14
  28. package/dist/components/InboxNotificationList.js.map +1 -1
  29. package/dist/components/InboxNotificationList.mjs +17 -12
  30. package/dist/components/InboxNotificationList.mjs.map +1 -1
  31. package/dist/components/Thread.js +104 -86
  32. package/dist/components/Thread.js.map +1 -1
  33. package/dist/components/Thread.mjs +93 -75
  34. package/dist/components/Thread.mjs.map +1 -1
  35. package/dist/components/internal/Attachment.js +161 -113
  36. package/dist/components/internal/Attachment.js.map +1 -1
  37. package/dist/components/internal/Attachment.mjs +150 -102
  38. package/dist/components/internal/Attachment.mjs.map +1 -1
  39. package/dist/components/internal/Attribution.js +15 -13
  40. package/dist/components/internal/Attribution.js.map +1 -1
  41. package/dist/components/internal/Attribution.mjs +15 -13
  42. package/dist/components/internal/Attribution.mjs.map +1 -1
  43. package/dist/components/internal/Avatar.js +27 -20
  44. package/dist/components/internal/Avatar.js.map +1 -1
  45. package/dist/components/internal/Avatar.mjs +23 -16
  46. package/dist/components/internal/Avatar.mjs.map +1 -1
  47. package/dist/components/internal/Button.js +5 -4
  48. package/dist/components/internal/Button.js.map +1 -1
  49. package/dist/components/internal/Button.mjs +4 -3
  50. package/dist/components/internal/Button.mjs.map +1 -1
  51. package/dist/components/internal/Dropdown.js +27 -19
  52. package/dist/components/internal/Dropdown.js.map +1 -1
  53. package/dist/components/internal/Dropdown.mjs +26 -18
  54. package/dist/components/internal/Dropdown.mjs.map +1 -1
  55. package/dist/components/internal/Emoji.js +4 -3
  56. package/dist/components/internal/Emoji.js.map +1 -1
  57. package/dist/components/internal/Emoji.mjs +3 -2
  58. package/dist/components/internal/Emoji.mjs.map +1 -1
  59. package/dist/components/internal/EmojiPicker.js +96 -72
  60. package/dist/components/internal/EmojiPicker.js.map +1 -1
  61. package/dist/components/internal/EmojiPicker.mjs +90 -66
  62. package/dist/components/internal/EmojiPicker.mjs.map +1 -1
  63. package/dist/components/internal/Icon.js +5 -4
  64. package/dist/components/internal/Icon.js.map +1 -1
  65. package/dist/components/internal/Icon.mjs +5 -4
  66. package/dist/components/internal/Icon.mjs.map +1 -1
  67. package/dist/components/internal/InboxNotificationThread.js +53 -38
  68. package/dist/components/internal/InboxNotificationThread.js.map +1 -1
  69. package/dist/components/internal/InboxNotificationThread.mjs +53 -38
  70. package/dist/components/internal/InboxNotificationThread.mjs.map +1 -1
  71. package/dist/components/internal/List.js +8 -6
  72. package/dist/components/internal/List.js.map +1 -1
  73. package/dist/components/internal/List.mjs +6 -4
  74. package/dist/components/internal/List.mjs.map +1 -1
  75. package/dist/components/internal/Room.js +8 -6
  76. package/dist/components/internal/Room.js.map +1 -1
  77. package/dist/components/internal/Room.mjs +7 -5
  78. package/dist/components/internal/Room.mjs.map +1 -1
  79. package/dist/components/internal/Tooltip.js +49 -33
  80. package/dist/components/internal/Tooltip.js.map +1 -1
  81. package/dist/components/internal/Tooltip.mjs +46 -30
  82. package/dist/components/internal/Tooltip.mjs.map +1 -1
  83. package/dist/components/internal/User.js +8 -6
  84. package/dist/components/internal/User.js.map +1 -1
  85. package/dist/components/internal/User.mjs +7 -5
  86. package/dist/components/internal/User.mjs.map +1 -1
  87. package/dist/components.js +12 -29
  88. package/dist/components.js.map +1 -1
  89. package/dist/components.mjs +6 -5
  90. package/dist/components.mjs.map +1 -1
  91. package/dist/config.js +16 -12
  92. package/dist/config.js.map +1 -1
  93. package/dist/config.mjs +13 -9
  94. package/dist/config.mjs.map +1 -1
  95. package/dist/icons/ArrowDown.js +7 -6
  96. package/dist/icons/ArrowDown.js.map +1 -1
  97. package/dist/icons/ArrowDown.mjs +7 -6
  98. package/dist/icons/ArrowDown.mjs.map +1 -1
  99. package/dist/icons/ArrowUp.js +7 -6
  100. package/dist/icons/ArrowUp.js.map +1 -1
  101. package/dist/icons/ArrowUp.mjs +7 -6
  102. package/dist/icons/ArrowUp.mjs.map +1 -1
  103. package/dist/icons/Attachment.js +7 -6
  104. package/dist/icons/Attachment.js.map +1 -1
  105. package/dist/icons/Attachment.mjs +7 -6
  106. package/dist/icons/Attachment.mjs.map +1 -1
  107. package/dist/icons/Bold.js +7 -6
  108. package/dist/icons/Bold.js.map +1 -1
  109. package/dist/icons/Bold.mjs +7 -6
  110. package/dist/icons/Bold.mjs.map +1 -1
  111. package/dist/icons/Check.js +7 -6
  112. package/dist/icons/Check.js.map +1 -1
  113. package/dist/icons/Check.mjs +7 -6
  114. package/dist/icons/Check.mjs.map +1 -1
  115. package/dist/icons/Code.js +7 -6
  116. package/dist/icons/Code.js.map +1 -1
  117. package/dist/icons/Code.mjs +7 -6
  118. package/dist/icons/Code.mjs.map +1 -1
  119. package/dist/icons/Cross.js +12 -8
  120. package/dist/icons/Cross.js.map +1 -1
  121. package/dist/icons/Cross.mjs +12 -8
  122. package/dist/icons/Cross.mjs.map +1 -1
  123. package/dist/icons/Delete.js +7 -6
  124. package/dist/icons/Delete.js.map +1 -1
  125. package/dist/icons/Delete.mjs +7 -6
  126. package/dist/icons/Delete.mjs.map +1 -1
  127. package/dist/icons/Edit.js +7 -6
  128. package/dist/icons/Edit.js.map +1 -1
  129. package/dist/icons/Edit.mjs +7 -6
  130. package/dist/icons/Edit.mjs.map +1 -1
  131. package/dist/icons/Ellipsis.js +21 -16
  132. package/dist/icons/Ellipsis.js.map +1 -1
  133. package/dist/icons/Ellipsis.mjs +21 -16
  134. package/dist/icons/Ellipsis.mjs.map +1 -1
  135. package/dist/icons/Emoji.js +25 -18
  136. package/dist/icons/Emoji.js.map +1 -1
  137. package/dist/icons/Emoji.mjs +25 -18
  138. package/dist/icons/Emoji.mjs.map +1 -1
  139. package/dist/icons/EmojiAdd.js +28 -20
  140. package/dist/icons/EmojiAdd.js.map +1 -1
  141. package/dist/icons/EmojiAdd.mjs +28 -20
  142. package/dist/icons/EmojiAdd.mjs.map +1 -1
  143. package/dist/icons/Italic.js +7 -6
  144. package/dist/icons/Italic.js.map +1 -1
  145. package/dist/icons/Italic.mjs +7 -6
  146. package/dist/icons/Italic.mjs.map +1 -1
  147. package/dist/icons/Mention.js +12 -8
  148. package/dist/icons/Mention.js.map +1 -1
  149. package/dist/icons/Mention.mjs +12 -8
  150. package/dist/icons/Mention.mjs.map +1 -1
  151. package/dist/icons/Resolve.js +14 -10
  152. package/dist/icons/Resolve.js.map +1 -1
  153. package/dist/icons/Resolve.mjs +14 -10
  154. package/dist/icons/Resolve.mjs.map +1 -1
  155. package/dist/icons/Resolved.js +16 -12
  156. package/dist/icons/Resolved.js.map +1 -1
  157. package/dist/icons/Resolved.mjs +16 -12
  158. package/dist/icons/Resolved.mjs.map +1 -1
  159. package/dist/icons/Restore.js +12 -8
  160. package/dist/icons/Restore.js.map +1 -1
  161. package/dist/icons/Restore.mjs +12 -8
  162. package/dist/icons/Restore.mjs.map +1 -1
  163. package/dist/icons/Search.js +7 -6
  164. package/dist/icons/Search.js.map +1 -1
  165. package/dist/icons/Search.mjs +7 -6
  166. package/dist/icons/Search.mjs.map +1 -1
  167. package/dist/icons/Send.js +7 -6
  168. package/dist/icons/Send.js.map +1 -1
  169. package/dist/icons/Send.mjs +7 -6
  170. package/dist/icons/Send.mjs.map +1 -1
  171. package/dist/icons/Spinner.js +8 -7
  172. package/dist/icons/Spinner.js.map +1 -1
  173. package/dist/icons/Spinner.mjs +8 -7
  174. package/dist/icons/Spinner.mjs.map +1 -1
  175. package/dist/icons/Strikethrough.js +7 -6
  176. package/dist/icons/Strikethrough.js.map +1 -1
  177. package/dist/icons/Strikethrough.mjs +7 -6
  178. package/dist/icons/Strikethrough.mjs.map +1 -1
  179. package/dist/icons/Warning.js +14 -10
  180. package/dist/icons/Warning.js.map +1 -1
  181. package/dist/icons/Warning.mjs +14 -10
  182. package/dist/icons/Warning.mjs.map +1 -1
  183. package/dist/icons/index.js +42 -0
  184. package/dist/icons/index.js.map +1 -0
  185. package/dist/icons/index.mjs +19 -0
  186. package/dist/icons/index.mjs.map +1 -0
  187. package/dist/index.d.mts +14 -12
  188. package/dist/index.d.ts +14 -12
  189. package/dist/overrides.js +65 -36
  190. package/dist/overrides.js.map +1 -1
  191. package/dist/overrides.mjs +59 -12
  192. package/dist/overrides.mjs.map +1 -1
  193. package/dist/primitives/Comment/index.js +75 -66
  194. package/dist/primitives/Comment/index.js.map +1 -1
  195. package/dist/primitives/Comment/index.mjs +71 -62
  196. package/dist/primitives/Comment/index.mjs.map +1 -1
  197. package/dist/primitives/Composer/contexts.js +11 -11
  198. package/dist/primitives/Composer/index.js +343 -284
  199. package/dist/primitives/Composer/index.js.map +1 -1
  200. package/dist/primitives/Composer/index.mjs +262 -203
  201. package/dist/primitives/Composer/index.mjs.map +1 -1
  202. package/dist/primitives/Composer/utils.js +20 -21
  203. package/dist/primitives/Composer/utils.js.map +1 -1
  204. package/dist/primitives/Composer/utils.mjs +4 -5
  205. package/dist/primitives/Composer/utils.mjs.map +1 -1
  206. package/dist/primitives/EmojiPicker/contexts.js +3 -3
  207. package/dist/primitives/EmojiPicker/index.js +160 -142
  208. package/dist/primitives/EmojiPicker/index.js.map +1 -1
  209. package/dist/primitives/EmojiPicker/index.mjs +122 -104
  210. package/dist/primitives/EmojiPicker/index.mjs.map +1 -1
  211. package/dist/primitives/FileSize.js +9 -7
  212. package/dist/primitives/FileSize.js.map +1 -1
  213. package/dist/primitives/FileSize.mjs +7 -5
  214. package/dist/primitives/FileSize.mjs.map +1 -1
  215. package/dist/primitives/Timestamp.js +12 -10
  216. package/dist/primitives/Timestamp.js.map +1 -1
  217. package/dist/primitives/Timestamp.mjs +7 -5
  218. package/dist/primitives/Timestamp.mjs.map +1 -1
  219. package/dist/primitives/index.d.mts +24 -23
  220. package/dist/primitives/index.d.ts +24 -23
  221. package/dist/primitives/internal/Emoji.js +7 -5
  222. package/dist/primitives/internal/Emoji.js.map +1 -1
  223. package/dist/primitives/internal/Emoji.mjs +6 -4
  224. package/dist/primitives/internal/Emoji.mjs.map +1 -1
  225. package/dist/shared.js +2 -7
  226. package/dist/shared.js.map +1 -1
  227. package/dist/shared.mjs +2 -7
  228. package/dist/shared.mjs.map +1 -1
  229. package/dist/slate/plugins/auto-links.mjs +1 -1
  230. package/dist/slate/plugins/custom-links.mjs +1 -1
  231. package/dist/slate/plugins/mentions.mjs +1 -1
  232. package/dist/utils/Persist.js +19 -18
  233. package/dist/utils/Persist.js.map +1 -1
  234. package/dist/utils/Persist.mjs +7 -6
  235. package/dist/utils/Persist.mjs.map +1 -1
  236. package/dist/utils/Portal.js +5 -4
  237. package/dist/utils/Portal.js.map +1 -1
  238. package/dist/utils/Portal.mjs +4 -3
  239. package/dist/utils/Portal.mjs.map +1 -1
  240. package/dist/utils/use-controllable-state.js +5 -5
  241. package/dist/utils/use-index.js +7 -7
  242. package/dist/utils/use-initial.js +2 -2
  243. package/dist/utils/use-interval.js +4 -4
  244. package/dist/utils/use-latest.js +3 -3
  245. package/dist/utils/use-observable.js +2 -2
  246. package/dist/utils/use-refs.js +2 -2
  247. package/dist/utils/use-rerender.js +2 -2
  248. package/dist/utils/use-visible.js +24 -2
  249. package/dist/utils/use-visible.js.map +1 -1
  250. package/dist/utils/use-visible.mjs +23 -2
  251. package/dist/utils/use-visible.mjs.map +1 -1
  252. package/dist/utils/use-window-focus.js +2 -2
  253. package/dist/utils/use-window-focus.js.map +1 -1
  254. package/dist/utils/use-window-focus.mjs +1 -1
  255. package/dist/utils/use-window-focus.mjs.map +1 -1
  256. package/dist/version.js +2 -2
  257. package/dist/version.js.map +1 -1
  258. package/dist/version.mjs +2 -2
  259. package/dist/version.mjs.map +1 -1
  260. package/package.json +10 -25
  261. package/dist/utils/use-id.js +0 -29
  262. package/dist/utils/use-id.js.map +0 -1
  263. package/dist/utils/use-id.mjs +0 -27
  264. package/dist/utils/use-id.mjs.map +0 -1
  265. package/dist/utils/use-layout-effect.js +0 -8
  266. package/dist/utils/use-layout-effect.js.map +0 -1
  267. package/dist/utils/use-layout-effect.mjs +0 -6
  268. package/dist/utils/use-layout-effect.mjs.map +0 -1
  269. package/dist/utils/use-transition.js +0 -16
  270. package/dist/utils/use-transition.js.map +0 -1
  271. package/dist/utils/use-transition.mjs +0 -14
  272. package/dist/utils/use-transition.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"InboxNotification.js","sources":["../../src/components/InboxNotification.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n InboxNotificationCustomData,\n InboxNotificationData,\n InboxNotificationTextMentionData,\n InboxNotificationThreadData,\n KDAD,\n} from \"@liveblocks/core\";\nimport { assertNever, console } from \"@liveblocks/core\";\nimport {\n useDeleteInboxNotification,\n useInboxNotificationThread,\n useMarkInboxNotificationAsRead,\n useRoomInfo,\n} from \"@liveblocks/react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { TooltipProvider } from \"@radix-ui/react-tooltip\";\nimport type {\n ComponentProps,\n ComponentPropsWithoutRef,\n ComponentType,\n MouseEvent as ReactMouseEvent,\n ReactNode,\n SyntheticEvent,\n} from \"react\";\nimport React, { forwardRef, useCallback, useMemo, useState } from \"react\";\n\nimport type { GlobalComponents } from \"../components\";\nimport { useComponents } from \"../components\";\nimport { CheckIcon } from \"../icons/Check\";\nimport { DeleteIcon } from \"../icons/Delete\";\nimport { EllipsisIcon } from \"../icons/Ellipsis\";\nimport { WarningIcon } from \"../icons/Warning\";\nimport type {\n CommentOverrides,\n GlobalOverrides,\n InboxNotificationOverrides,\n} from \"../overrides\";\nimport { useOverrides } from \"../overrides\";\nimport { Timestamp } from \"../primitives/Timestamp\";\nimport { useCurrentUserId } from \"../shared\";\nimport type { SlotProp } from \"../types\";\nimport { classNames } from \"../utils/class-names\";\nimport { generateURL } from \"../utils/url\";\nimport { Avatar, type AvatarProps } from \"./internal/Avatar\";\nimport { Button } from \"./internal/Button\";\nimport { Dropdown, DropdownItem, DropdownTrigger } from \"./internal/Dropdown\";\nimport {\n generateInboxNotificationThreadContents,\n INBOX_NOTIFICATION_THREAD_MAX_COMMENTS,\n InboxNotificationComment,\n} from \"./internal/InboxNotificationThread\";\nimport { List } from \"./internal/List\";\nimport { Room } from \"./internal/Room\";\nimport { Tooltip } from \"./internal/Tooltip\";\nimport { User } from \"./internal/User\";\n\ntype ComponentTypeWithRef<\n T extends keyof JSX.IntrinsicElements,\n P,\n> = ComponentType<P & Pick<ComponentProps<T>, \"ref\">>;\n\ntype InboxNotificationKinds<KS extends KDAD = KDAD> = {\n // For some reason, we cannot directly use KDAD in the mapped type line\n // below, because it will result in '{}' rather than picking up the\n // definition from the user-provided 'ActivitiesData'. Might be an internal\n // TS optimization, so we're making it a param to defer the resolution.\n [K in KS]: ComponentTypeWithRef<\"a\", InboxNotificationCustomKindProps<K>>;\n} & {\n thread: ComponentTypeWithRef<\"a\", InboxNotificationThreadKindProps>;\n textMention: ComponentTypeWithRef<\"a\", InboxNotificationTextMentionKindProps>;\n};\n\ninterface InboxNotificationSharedProps {\n /**\n * How to show or hide the actions.\n */\n showActions?: boolean | \"hover\";\n}\n\nexport interface InboxNotificationProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"title\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationData;\n\n /**\n * Override specific kinds of inbox notifications.\n */\n kinds?: Partial<InboxNotificationKinds>;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<\n GlobalOverrides & InboxNotificationOverrides & CommentOverrides\n >;\n\n /**\n * Override the component's components.\n */\n components?: Partial<GlobalComponents>;\n}\n\nexport interface InboxNotificationThreadProps\n extends Omit<InboxNotificationProps, \"kinds\" | \"children\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationThreadData;\n\n /**\n * Whether to show the room name in the title.\n */\n showRoomName?: boolean;\n\n /**\n * Whether to show reactions.\n */\n showReactions?: boolean;\n\n /**\n * Whether to show attachments.\n */\n showAttachments?: boolean;\n}\n\nexport interface InboxNotificationTextMentionProps\n extends Omit<InboxNotificationProps, \"kinds\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationTextMentionData;\n\n /**\n * Whether to show the room name in the title.\n */\n showRoomName?: boolean;\n}\n\nexport interface InboxNotificationCustomProps\n extends Omit<InboxNotificationProps, \"kinds\">,\n InboxNotificationSharedProps,\n SlotProp {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationCustomData;\n\n /**\n * The inbox notification's content.\n */\n children: ReactNode;\n\n /**\n * The inbox notification's title.\n */\n title: ReactNode;\n\n /**\n * The inbox notification's aside content.\n * Can be combined with `InboxNotification.Icon` or `InboxNotification.Avatar` to easily follow default styles.\n */\n aside?: ReactNode;\n\n /**\n * Whether to mark the inbox notification as read when clicked.\n */\n markAsReadOnClick?: boolean;\n}\n\nexport type InboxNotificationThreadKindProps = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationThreadData;\n};\n\nexport type InboxNotificationTextMentionKindProps = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationTextMentionData;\n};\n\nexport type InboxNotificationCustomKindProps<K extends KDAD = KDAD> = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationCustomData<K>;\n};\n\ninterface InboxNotificationLayoutProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"title\">,\n InboxNotificationSharedProps,\n SlotProp {\n inboxNotification: InboxNotificationData;\n aside: ReactNode;\n title: ReactNode;\n date: Date | string | number;\n unread?: boolean;\n overrides?: Partial<GlobalOverrides & InboxNotificationOverrides>;\n components?: Partial<GlobalComponents>;\n markAsReadOnClick?: boolean;\n}\n\nexport type InboxNotificationIconProps = ComponentProps<\"div\">;\n\nexport type InboxNotificationAvatarProps = AvatarProps;\n\nconst InboxNotificationLayout = forwardRef<\n HTMLAnchorElement,\n InboxNotificationLayoutProps\n>(\n (\n {\n inboxNotification,\n children,\n aside,\n title,\n date,\n unread,\n markAsReadOnClick,\n onClick,\n href,\n showActions,\n overrides,\n components,\n className,\n asChild,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const { Anchor } = useComponents(components);\n const Component = asChild ? Slot : Anchor;\n const [isMoreActionOpen, setMoreActionOpen] = useState(false);\n const markInboxNotificationAsRead = useMarkInboxNotificationAsRead();\n const deleteInboxNotification = useDeleteInboxNotification();\n\n const handleClick = useCallback(\n (event: ReactMouseEvent<HTMLAnchorElement, MouseEvent>) => {\n onClick?.(event);\n\n const shouldMarkAsReadOnClick = markAsReadOnClick ?? Boolean(href);\n\n if (unread && shouldMarkAsReadOnClick) {\n markInboxNotificationAsRead(inboxNotification.id);\n }\n },\n [\n href,\n inboxNotification.id,\n markAsReadOnClick,\n markInboxNotificationAsRead,\n onClick,\n unread,\n ]\n );\n\n const stopPropagation = useCallback((event: SyntheticEvent) => {\n event.stopPropagation();\n }, []);\n\n const preventDefaultAndStopPropagation = useCallback(\n (event: SyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n },\n []\n );\n\n const handleMoreClick = useCallback((event: ReactMouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n setMoreActionOpen((open) => !open);\n }, []);\n\n const handleMarkAsRead = useCallback(() => {\n markInboxNotificationAsRead(inboxNotification.id);\n }, [inboxNotification.id, markInboxNotificationAsRead]);\n\n const handleDelete = useCallback(() => {\n deleteInboxNotification(inboxNotification.id);\n }, [inboxNotification.id, deleteInboxNotification]);\n\n return (\n <TooltipProvider>\n <Component\n className={classNames(\n \"lb-root lb-inbox-notification\",\n showActions === \"hover\" &&\n \"lb-inbox-notification:show-actions-hover\",\n isMoreActionOpen && \"lb-inbox-notification:action-open\",\n className\n )}\n dir={$.dir}\n data-unread={unread ? \"\" : undefined}\n data-kind={inboxNotification.kind}\n onClick={handleClick}\n href={href}\n {...props}\n ref={forwardedRef}\n >\n {aside && <div className=\"lb-inbox-notification-aside\">{aside}</div>}\n <div className=\"lb-inbox-notification-content\">\n <div className=\"lb-inbox-notification-header\">\n <span className=\"lb-inbox-notification-title\">{title}</span>\n <div className=\"lb-inbox-notification-details\">\n <span className=\"lb-inbox-notification-details-labels\">\n <Timestamp\n locale={$.locale}\n date={date}\n className=\"lb-date lb-inbox-notification-date\"\n />\n {unread && (\n <span\n className=\"lb-inbox-notification-unread-indicator\"\n role=\"presentation\"\n />\n )}\n </span>\n </div>\n {showActions && (\n <div className=\"lb-inbox-notification-actions\">\n <Dropdown\n open={isMoreActionOpen}\n onOpenChange={setMoreActionOpen}\n align=\"end\"\n content={\n <>\n {unread ? (\n <DropdownItem\n onSelect={handleMarkAsRead}\n onClick={stopPropagation}\n >\n <CheckIcon className=\"lb-dropdown-item-icon\" />\n {$.INBOX_NOTIFICATION_MARK_AS_READ}\n </DropdownItem>\n ) : null}\n <DropdownItem\n onSelect={handleDelete}\n onClick={stopPropagation}\n >\n <DeleteIcon className=\"lb-dropdown-item-icon\" />\n {$.INBOX_NOTIFICATION_DELETE}\n </DropdownItem>\n </>\n }\n >\n <Tooltip content={$.INBOX_NOTIFICATION_MORE}>\n <DropdownTrigger asChild>\n <Button\n className=\"lb-inbox-notification-action\"\n onClick={handleMoreClick}\n onPointerDown={preventDefaultAndStopPropagation}\n onPointerUp={preventDefaultAndStopPropagation}\n aria-label={$.INBOX_NOTIFICATION_MORE}\n >\n <EllipsisIcon className=\"lb-button-icon\" />\n </Button>\n </DropdownTrigger>\n </Tooltip>\n </Dropdown>\n </div>\n )}\n </div>\n <div className=\"lb-inbox-notification-body\">{children}</div>\n </div>\n </Component>\n </TooltipProvider>\n );\n }\n);\n\nfunction InboxNotificationIcon({\n className,\n ...props\n}: InboxNotificationIconProps) {\n return (\n <div\n className={classNames(\"lb-inbox-notification-icon\", className)}\n {...props}\n />\n );\n}\n\nfunction InboxNotificationAvatar({\n className,\n ...props\n}: InboxNotificationAvatarProps) {\n return (\n <Avatar\n className={classNames(\"lb-inbox-notification-avatar\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Displays a thread inbox notification.\n */\nconst InboxNotificationThread = forwardRef<\n HTMLAnchorElement,\n InboxNotificationThreadProps\n>(\n (\n {\n inboxNotification,\n href,\n showRoomName = true,\n showReactions = true,\n showAttachments = true,\n showActions = \"hover\",\n overrides,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const thread = useInboxNotificationThread(inboxNotification.id);\n const currentUserId = useCurrentUserId();\n // TODO: If you provide `href` (or plan to), we shouldn't run this hook. We should find a way to conditionally run it.\n // Because of batching and the fact that the same hook will be called within <Room /> in the notification's title,\n // it's not a big deal, the only scenario where it would be superfluous would be if the user provides their own\n // `href` AND disables room names in the title via `showRoomName={false}`.\n const { info } = useRoomInfo(inboxNotification.roomId);\n const contents = useMemo(() => {\n const contents = generateInboxNotificationThreadContents(\n inboxNotification,\n thread,\n currentUserId ?? \"\"\n );\n\n if (contents.comments.length === 0 || contents.userIds.length === 0) {\n return null;\n }\n\n switch (contents.type) {\n case \"comments\": {\n const reversedUserIds = [...contents.userIds].reverse();\n const firstUserId = reversedUserIds[0]!;\n\n const aside = <InboxNotificationAvatar userId={firstUserId} />;\n const title = $.INBOX_NOTIFICATION_THREAD_COMMENTS_LIST(\n <List\n values={reversedUserIds.map((userId) => (\n <User key={userId} userId={userId} replaceSelf />\n ))}\n formatRemaining={$.LIST_REMAINING_USERS}\n truncate={INBOX_NOTIFICATION_THREAD_MAX_COMMENTS - 1}\n locale={$.locale}\n />,\n showRoomName ? <Room roomId={thread.roomId} /> : undefined,\n reversedUserIds.length\n );\n const content = (\n <div className=\"lb-inbox-notification-comments\">\n {contents.comments.map((comment) => (\n <InboxNotificationComment\n key={comment.id}\n comment={comment}\n showHeader={contents.comments.length > 1}\n showAttachments={showAttachments}\n showReactions={showReactions}\n overrides={overrides}\n />\n ))}\n </div>\n );\n\n return {\n unread: contents.unread,\n date: contents.date,\n aside,\n title,\n content,\n threadId: thread.id,\n commentId: contents.comments[contents.comments.length - 1]!.id,\n };\n }\n\n case \"mention\": {\n const mentionUserId = contents.userIds[0]!;\n const mentionComment = contents.comments[0]!;\n\n const aside = <InboxNotificationAvatar userId={mentionUserId} />;\n const title = $.INBOX_NOTIFICATION_THREAD_MENTION(\n <User key={mentionUserId} userId={mentionUserId} />,\n showRoomName ? <Room roomId={thread.roomId} /> : undefined\n );\n const content = (\n <div className=\"lb-inbox-notification-comments\">\n <InboxNotificationComment\n key={mentionComment.id}\n comment={mentionComment}\n showHeader={false}\n showAttachments={showAttachments}\n showReactions={showReactions}\n overrides={overrides}\n />\n </div>\n );\n\n return {\n unread: contents.unread,\n date: contents.date,\n aside,\n title,\n content,\n threadId: thread.id,\n commentId: mentionComment.id,\n };\n }\n\n default:\n return assertNever(\n contents,\n \"Unexpected thread inbox notification type\"\n );\n }\n }, [\n $,\n currentUserId,\n inboxNotification,\n overrides,\n showRoomName,\n showAttachments,\n showReactions,\n thread,\n ]);\n // Add the thread ID and comment ID to the `href`.\n // And use URL from `resolveRoomsInfo` if `href` isn't set.\n const resolvedHref = useMemo(() => {\n const resolvedHref = href ?? info?.url;\n\n return resolvedHref\n ? generateURL(resolvedHref, undefined, contents?.commentId)\n : undefined;\n }, [contents?.commentId, href, info?.url]);\n\n if (!contents) {\n return null;\n }\n\n const { aside, title, content, date, unread } = contents;\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={aside}\n title={title}\n date={date}\n unread={unread}\n overrides={overrides}\n href={resolvedHref}\n showActions={showActions}\n markAsReadOnClick={false}\n {...props}\n ref={forwardedRef}\n >\n {content}\n </InboxNotificationLayout>\n );\n }\n);\n\n/**\n * Displays a text mention notification kind.\n */\nconst InboxNotificationTextMention = forwardRef<\n HTMLAnchorElement,\n InboxNotificationTextMentionProps\n>(\n (\n {\n inboxNotification,\n showActions = \"hover\",\n showRoomName = true,\n overrides,\n ...props\n },\n ref\n ) => {\n const $ = useOverrides(overrides);\n\n const unread = useMemo(() => {\n return (\n !inboxNotification.readAt ||\n inboxNotification.notifiedAt > inboxNotification.readAt\n );\n }, [inboxNotification.notifiedAt, inboxNotification.readAt]);\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={<InboxNotificationAvatar userId={inboxNotification.createdBy} />}\n title={$.INBOX_NOTIFICATION_TEXT_MENTION(\n <User\n key={inboxNotification.createdBy}\n userId={inboxNotification.createdBy}\n />,\n showRoomName ? <Room roomId={inboxNotification.roomId} /> : undefined\n )}\n date={inboxNotification.notifiedAt}\n unread={unread}\n overrides={overrides}\n showActions={showActions}\n {...props}\n ref={ref}\n />\n );\n }\n);\n\n/**\n * Displays a custom notification kind.\n */\nconst InboxNotificationCustom = forwardRef<\n HTMLAnchorElement,\n InboxNotificationCustomProps\n>(\n (\n {\n inboxNotification,\n showActions = \"hover\",\n title,\n aside,\n children,\n overrides,\n ...props\n },\n forwardedRef\n ) => {\n const unread = useMemo(() => {\n return (\n !inboxNotification.readAt ||\n inboxNotification.notifiedAt > inboxNotification.readAt\n );\n }, [inboxNotification.notifiedAt, inboxNotification.readAt]);\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={aside}\n title={title}\n date={inboxNotification.notifiedAt}\n unread={unread}\n overrides={overrides}\n showActions={showActions}\n {...props}\n ref={forwardedRef}\n >\n {children}\n </InboxNotificationLayout>\n );\n }\n);\n\nconst InboxNotificationCustomMissing = forwardRef<\n HTMLAnchorElement,\n Omit<InboxNotificationCustomProps, \"children\" | \"title\" | \"aside\">\n>(({ inboxNotification, ...props }, forwardedRef) => {\n return (\n <InboxNotificationCustom\n inboxNotification={inboxNotification}\n {...props}\n title={\n <>\n Custom notification kind <code>{inboxNotification.kind}</code> is not\n handled\n </>\n }\n aside={\n <InboxNotificationIcon>\n <WarningIcon />\n </InboxNotificationIcon>\n }\n ref={forwardedRef}\n data-missing=\"\"\n >\n {/* TODO: Add link to the docs */}\n Notifications of this kind won’t be displayed in production. Use the{\" \"}\n <code>kinds</code> prop to define how they should be rendered.\n </InboxNotificationCustom>\n );\n});\n\n// Keeps track of which inbox notification kinds it has warned about already.\nconst inboxNotificationKindsWarnings: Set<string> = new Set();\n\n/**\n * Displays a single inbox notification.\n *\n * @example\n * <>\n * {inboxNotifications.map((inboxNotification) => (\n * <InboxNotification\n * key={inboxNotification.id}\n * inboxNotification={inboxNotification}\n * href={`/rooms/${inboxNotification.roomId}`\n * />\n * ))}\n * </>\n */\nexport const InboxNotification = Object.assign(\n forwardRef<HTMLAnchorElement, InboxNotificationProps>(\n ({ inboxNotification, kinds, ...props }, forwardedRef) => {\n switch (inboxNotification.kind) {\n case \"thread\": {\n const ResolvedInboxNotificationThread =\n kinds?.thread ?? InboxNotificationThread;\n\n return (\n <ResolvedInboxNotificationThread\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n\n case \"textMention\": {\n const ResolvedInboxNotificationTextMention =\n kinds?.textMention ?? InboxNotificationTextMention;\n\n return (\n <ResolvedInboxNotificationTextMention\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n\n default: {\n const ResolvedInboxNotificationCustom =\n kinds?.[inboxNotification.kind];\n\n if (!ResolvedInboxNotificationCustom) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!inboxNotificationKindsWarnings.has(inboxNotification.kind)) {\n inboxNotificationKindsWarnings.add(inboxNotification.kind);\n // TODO: Add link to the docs\n console.warn(\n `Custom notification kind \"${inboxNotification.kind}\" is not handled so notifications of this kind will not be displayed in production. Use the kinds prop to define how they should be rendered.`\n );\n }\n\n return (\n <InboxNotificationCustomMissing\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n } else {\n // Don't render anything in production if this inbox notification kind is not defined.\n return null;\n }\n }\n\n return (\n <ResolvedInboxNotificationCustom\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n }\n }\n ),\n {\n Thread: InboxNotificationThread,\n TextMention: InboxNotificationTextMention,\n Custom: InboxNotificationCustom,\n Icon: InboxNotificationIcon,\n Avatar: InboxNotificationAvatar,\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuNA;AAAgC;AAK5B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG;AAIL;AACA;AACA;AACA;AACA;AACA;AAEA;AAAoB;AAEhB;AAEA;AAEA;AACE;AAAgD;AAClD;AACF;AACA;AACE;AACkB;AAClB;AACA;AACA;AACA;AACF;AAGF;AACE;AAAsB;AAGxB;AAAyC;AAErC;AACA;AAAsB;AACxB;AACC;AAGH;AACE;AACA;AACA;AAAiC;AAGnC;AACE;AAAgD;AAGlD;AACE;AAA4C;AAG9C;AAEK;AACY;AACT;AAEE;AACkB;AACpB;AACF;AACO;AACoB;AACE;AACpB;AACT;AACI;AACC;AAEM;AAAc;AACxB;AAAc;AACZ;AAAc;AACZ;AAAe;AACf;AAAc;AACZ;AAAe;AACb;AACW;AACV;AACU;AAGT;AACW;AACL;AAMV;AAAc;AACZ;AACO;AACQ;AACR;AAIC;AACW;AACD;AAER;AAAoB;AAIxB;AACW;AACD;AAER;AAAqB;AAG1B;AAGD;AAAmB;AACjB;AAAuB;AACrB;AACW;AACD;AACM;AACF;AACC;AAEb;AAAuB;AAQrC;AAAc;AAGrB;AAGN;AAEA;AAA+B;AAC7B;AAEF;AACE;AACG;AAC8D;AACzD;AAGV;AAEA;AAAiC;AAC/B;AAEF;AACE;AACG;AACgE;AAC3D;AAGV;AAKA;AAAgC;AAK5B;AACE;AACA;AACe;AACC;AACE;AACJ;AACd;AACG;AAIL;AACA;AACA;AAKA;AACA;AACE;AAAiB;AACf;AACA;AACiB;AAGnB;AACE;AAAO;AAGT;AAAuB;AAEnB;AACA;AAEA;AAAe;AAAgC;AAC/C;AAAgB;AACb;AAEI;AAAU;AAAQ;AAA2B;AAC/C;AACkB;AACgC;AACzC;AACZ;AACgB;AAAoB;AAAa;AACjC;AAElB;AACG;AAAc;AAEV;AACc;AACb;AACuC;AACvC;AACA;AACA;AAMR;AAAO;AACY;AACF;AACf;AACA;AACA;AACiB;AAC2C;AAC9D;AACF;AAGE;AACA;AAEA;AAAe;AAAgC;AAC/C;AAAgB;AACb;AAAU;AAAuB;AAAe;AACjC;AAAoB;AAAa;AAEnD;AACG;AAAc;AACZ;AACqB;AACX;AACG;AACZ;AACA;AACA;AAKN;AAAO;AACY;AACF;AACf;AACA;AACA;AACiB;AACS;AAC5B;AACF;AAGE;AAAO;AACL;AACA;AACF;AACJ;AACC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIF;AACE;AAEA;AAEI;AAGN;AACE;AAAO;AAGT;AAEA;AACG;AACC;AACA;AACA;AACA;AACA;AACA;AACM;AACN;AACmB;AACf;AACC;AAGP;AAGN;AAKA;AAAqC;AAKjC;AACE;AACc;AACC;AACf;AACG;AAIL;AAEA;AACE;AAEmD;AAIrD;AACG;AACC;AACQ;AAAkD;AAAW;AAC5D;AACN;AACwB;AACG;AAC5B;AACgB;AAA+B;AAAa;AAC9D;AACwB;AACxB;AACA;AACA;AACI;AACJ;AACF;AAGN;AAKA;AAAgC;AAK5B;AACE;AACc;AACd;AACA;AACA;AACA;AACG;AAIL;AACE;AAEmD;AAIrD;AACG;AACC;AACA;AACA;AACwB;AACxB;AACA;AACA;AACI;AACC;AAGP;AAGN;AAEA;AAIE;AACG;AACC;AACI;AAKF;AAKA;AAEG;AACQ;AAOnB;AAGA;AAgBO;AAAiC;AACtC;AAEI;AAAgC;AAE5B;AAGA;AACG;AACC;AACI;AACC;AACP;AAEJ;AAGE;AAGA;AACG;AACC;AACI;AACC;AACP;AAEJ;AAGE;AAGA;AACE;AACE;AACE;AAEA;AAAQ;AACyC;AACjD;AAGF;AACG;AACC;AACI;AACC;AACP;AAIF;AAAO;AACT;AAGF;AACG;AACC;AACI;AACC;AACP;AAEJ;AACF;AACF;AACF;AACA;AACU;AACK;AACL;AACF;AACE;AAEZ;;"}
1
+ {"version":3,"file":"InboxNotification.js","sources":["../../src/components/InboxNotification.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n InboxNotificationCustomData,\n InboxNotificationData,\n InboxNotificationTextMentionData,\n InboxNotificationThreadData,\n KDAD,\n} from \"@liveblocks/core\";\nimport { assertNever, console } from \"@liveblocks/core\";\nimport {\n useDeleteInboxNotification,\n useInboxNotificationThread,\n useMarkInboxNotificationAsRead,\n useRoomInfo,\n} from \"@liveblocks/react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { TooltipProvider } from \"@radix-ui/react-tooltip\";\nimport type {\n ComponentProps,\n ComponentPropsWithoutRef,\n ComponentType,\n MouseEvent as ReactMouseEvent,\n ReactNode,\n SyntheticEvent,\n} from \"react\";\nimport { forwardRef, useCallback, useMemo, useState } from \"react\";\n\nimport type { GlobalComponents } from \"../components\";\nimport { useComponents } from \"../components\";\nimport { CheckIcon } from \"../icons/Check\";\nimport { DeleteIcon } from \"../icons/Delete\";\nimport { EllipsisIcon } from \"../icons/Ellipsis\";\nimport { WarningIcon } from \"../icons/Warning\";\nimport type {\n CommentOverrides,\n GlobalOverrides,\n InboxNotificationOverrides,\n} from \"../overrides\";\nimport { useOverrides } from \"../overrides\";\nimport { Timestamp } from \"../primitives/Timestamp\";\nimport { useCurrentUserId } from \"../shared\";\nimport type { SlotProp } from \"../types\";\nimport { classNames } from \"../utils/class-names\";\nimport { generateURL } from \"../utils/url\";\nimport { Avatar, type AvatarProps } from \"./internal/Avatar\";\nimport { Button } from \"./internal/Button\";\nimport { Dropdown, DropdownItem, DropdownTrigger } from \"./internal/Dropdown\";\nimport {\n generateInboxNotificationThreadContents,\n INBOX_NOTIFICATION_THREAD_MAX_COMMENTS,\n InboxNotificationComment,\n} from \"./internal/InboxNotificationThread\";\nimport { List } from \"./internal/List\";\nimport { Room } from \"./internal/Room\";\nimport { Tooltip } from \"./internal/Tooltip\";\nimport { User } from \"./internal/User\";\n\ntype ComponentTypeWithRef<\n T extends keyof JSX.IntrinsicElements,\n P,\n> = ComponentType<P & Pick<ComponentProps<T>, \"ref\">>;\n\ntype InboxNotificationKinds<KS extends KDAD = KDAD> = {\n // For some reason, we cannot directly use KDAD in the mapped type line\n // below, because it will result in '{}' rather than picking up the\n // definition from the user-provided 'ActivitiesData'. Might be an internal\n // TS optimization, so we're making it a param to defer the resolution.\n [K in KS]: ComponentTypeWithRef<\"a\", InboxNotificationCustomKindProps<K>>;\n} & {\n thread: ComponentTypeWithRef<\"a\", InboxNotificationThreadKindProps>;\n textMention: ComponentTypeWithRef<\"a\", InboxNotificationTextMentionKindProps>;\n};\n\ninterface InboxNotificationSharedProps {\n /**\n * How to show or hide the actions.\n */\n showActions?: boolean | \"hover\";\n}\n\nexport interface InboxNotificationProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"title\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationData;\n\n /**\n * Override specific kinds of inbox notifications.\n */\n kinds?: Partial<InboxNotificationKinds>;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<\n GlobalOverrides & InboxNotificationOverrides & CommentOverrides\n >;\n\n /**\n * Override the component's components.\n */\n components?: Partial<GlobalComponents>;\n}\n\nexport interface InboxNotificationThreadProps\n extends Omit<InboxNotificationProps, \"kinds\" | \"children\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationThreadData;\n\n /**\n * Whether to show the room name in the title.\n */\n showRoomName?: boolean;\n\n /**\n * Whether to show reactions.\n */\n showReactions?: boolean;\n\n /**\n * Whether to show attachments.\n */\n showAttachments?: boolean;\n}\n\nexport interface InboxNotificationTextMentionProps\n extends Omit<InboxNotificationProps, \"kinds\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationTextMentionData;\n\n /**\n * Whether to show the room name in the title.\n */\n showRoomName?: boolean;\n}\n\nexport interface InboxNotificationCustomProps\n extends Omit<InboxNotificationProps, \"kinds\">,\n InboxNotificationSharedProps,\n SlotProp {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationCustomData;\n\n /**\n * The inbox notification's content.\n */\n children: ReactNode;\n\n /**\n * The inbox notification's title.\n */\n title: ReactNode;\n\n /**\n * The inbox notification's aside content.\n * Can be combined with `InboxNotification.Icon` or `InboxNotification.Avatar` to easily follow default styles.\n */\n aside?: ReactNode;\n\n /**\n * Whether to mark the inbox notification as read when clicked.\n */\n markAsReadOnClick?: boolean;\n}\n\nexport type InboxNotificationThreadKindProps = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationThreadData;\n};\n\nexport type InboxNotificationTextMentionKindProps = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationTextMentionData;\n};\n\nexport type InboxNotificationCustomKindProps<K extends KDAD = KDAD> = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationCustomData<K>;\n};\n\ninterface InboxNotificationLayoutProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"title\">,\n InboxNotificationSharedProps,\n SlotProp {\n inboxNotification: InboxNotificationData;\n aside: ReactNode;\n title: ReactNode;\n date: Date | string | number;\n unread?: boolean;\n overrides?: Partial<GlobalOverrides & InboxNotificationOverrides>;\n components?: Partial<GlobalComponents>;\n markAsReadOnClick?: boolean;\n}\n\nexport type InboxNotificationIconProps = ComponentProps<\"div\">;\n\nexport type InboxNotificationAvatarProps = AvatarProps;\n\nconst InboxNotificationLayout = forwardRef<\n HTMLAnchorElement,\n InboxNotificationLayoutProps\n>(\n (\n {\n inboxNotification,\n children,\n aside,\n title,\n date,\n unread,\n markAsReadOnClick,\n onClick,\n href,\n showActions,\n overrides,\n components,\n className,\n asChild,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const { Anchor } = useComponents(components);\n const Component = asChild ? Slot : Anchor;\n const [isMoreActionOpen, setMoreActionOpen] = useState(false);\n const markInboxNotificationAsRead = useMarkInboxNotificationAsRead();\n const deleteInboxNotification = useDeleteInboxNotification();\n\n const handleClick = useCallback(\n (event: ReactMouseEvent<HTMLAnchorElement, MouseEvent>) => {\n onClick?.(event);\n\n const shouldMarkAsReadOnClick = markAsReadOnClick ?? Boolean(href);\n\n if (unread && shouldMarkAsReadOnClick) {\n markInboxNotificationAsRead(inboxNotification.id);\n }\n },\n [\n href,\n inboxNotification.id,\n markAsReadOnClick,\n markInboxNotificationAsRead,\n onClick,\n unread,\n ]\n );\n\n const stopPropagation = useCallback((event: SyntheticEvent) => {\n event.stopPropagation();\n }, []);\n\n const preventDefaultAndStopPropagation = useCallback(\n (event: SyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n },\n []\n );\n\n const handleMoreClick = useCallback((event: ReactMouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n setMoreActionOpen((open) => !open);\n }, []);\n\n const handleMarkAsRead = useCallback(() => {\n markInboxNotificationAsRead(inboxNotification.id);\n }, [inboxNotification.id, markInboxNotificationAsRead]);\n\n const handleDelete = useCallback(() => {\n deleteInboxNotification(inboxNotification.id);\n }, [inboxNotification.id, deleteInboxNotification]);\n\n return (\n <TooltipProvider>\n <Component\n className={classNames(\n \"lb-root lb-inbox-notification\",\n showActions === \"hover\" &&\n \"lb-inbox-notification:show-actions-hover\",\n isMoreActionOpen && \"lb-inbox-notification:action-open\",\n className\n )}\n dir={$.dir}\n data-unread={unread ? \"\" : undefined}\n data-kind={inboxNotification.kind}\n onClick={handleClick}\n href={href}\n {...props}\n ref={forwardedRef}\n >\n {aside && <div className=\"lb-inbox-notification-aside\">{aside}</div>}\n <div className=\"lb-inbox-notification-content\">\n <div className=\"lb-inbox-notification-header\">\n <span className=\"lb-inbox-notification-title\">{title}</span>\n <div className=\"lb-inbox-notification-details\">\n <span className=\"lb-inbox-notification-details-labels\">\n <Timestamp\n locale={$.locale}\n date={date}\n className=\"lb-date lb-inbox-notification-date\"\n />\n {unread && (\n <span\n className=\"lb-inbox-notification-unread-indicator\"\n role=\"presentation\"\n />\n )}\n </span>\n </div>\n {showActions && (\n <div className=\"lb-inbox-notification-actions\">\n <Dropdown\n open={isMoreActionOpen}\n onOpenChange={setMoreActionOpen}\n align=\"end\"\n content={\n <>\n {unread ? (\n <DropdownItem\n onSelect={handleMarkAsRead}\n onClick={stopPropagation}\n >\n <CheckIcon className=\"lb-dropdown-item-icon\" />\n {$.INBOX_NOTIFICATION_MARK_AS_READ}\n </DropdownItem>\n ) : null}\n <DropdownItem\n onSelect={handleDelete}\n onClick={stopPropagation}\n >\n <DeleteIcon className=\"lb-dropdown-item-icon\" />\n {$.INBOX_NOTIFICATION_DELETE}\n </DropdownItem>\n </>\n }\n >\n <Tooltip content={$.INBOX_NOTIFICATION_MORE}>\n <DropdownTrigger asChild>\n <Button\n className=\"lb-inbox-notification-action\"\n onClick={handleMoreClick}\n onPointerDown={preventDefaultAndStopPropagation}\n onPointerUp={preventDefaultAndStopPropagation}\n aria-label={$.INBOX_NOTIFICATION_MORE}\n >\n <EllipsisIcon className=\"lb-button-icon\" />\n </Button>\n </DropdownTrigger>\n </Tooltip>\n </Dropdown>\n </div>\n )}\n </div>\n <div className=\"lb-inbox-notification-body\">{children}</div>\n </div>\n </Component>\n </TooltipProvider>\n );\n }\n);\n\nfunction InboxNotificationIcon({\n className,\n ...props\n}: InboxNotificationIconProps) {\n return (\n <div\n className={classNames(\"lb-inbox-notification-icon\", className)}\n {...props}\n />\n );\n}\n\nfunction InboxNotificationAvatar({\n className,\n ...props\n}: InboxNotificationAvatarProps) {\n return (\n <Avatar\n className={classNames(\"lb-inbox-notification-avatar\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Displays a thread inbox notification.\n */\nconst InboxNotificationThread = forwardRef<\n HTMLAnchorElement,\n InboxNotificationThreadProps\n>(\n (\n {\n inboxNotification,\n href,\n showRoomName = true,\n showReactions = true,\n showAttachments = true,\n showActions = \"hover\",\n overrides,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const thread = useInboxNotificationThread(inboxNotification.id);\n const currentUserId = useCurrentUserId();\n // TODO: If you provide `href` (or plan to), we shouldn't run this hook. We should find a way to conditionally run it.\n // Because of batching and the fact that the same hook will be called within <Room /> in the notification's title,\n // it's not a big deal, the only scenario where it would be superfluous would be if the user provides their own\n // `href` AND disables room names in the title via `showRoomName={false}`.\n const { info } = useRoomInfo(inboxNotification.roomId);\n const contents = useMemo(() => {\n const contents = generateInboxNotificationThreadContents(\n inboxNotification,\n thread,\n currentUserId ?? \"\"\n );\n\n if (contents.comments.length === 0 || contents.userIds.length === 0) {\n return null;\n }\n\n switch (contents.type) {\n case \"comments\": {\n const reversedUserIds = [...contents.userIds].reverse();\n const firstUserId = reversedUserIds[0]!;\n\n const aside = <InboxNotificationAvatar userId={firstUserId} />;\n const title = $.INBOX_NOTIFICATION_THREAD_COMMENTS_LIST(\n <List\n values={reversedUserIds.map((userId) => (\n <User key={userId} userId={userId} replaceSelf />\n ))}\n formatRemaining={$.LIST_REMAINING_USERS}\n truncate={INBOX_NOTIFICATION_THREAD_MAX_COMMENTS - 1}\n locale={$.locale}\n />,\n showRoomName ? <Room roomId={thread.roomId} /> : undefined,\n reversedUserIds.length\n );\n const content = (\n <div className=\"lb-inbox-notification-comments\">\n {contents.comments.map((comment) => (\n <InboxNotificationComment\n key={comment.id}\n comment={comment}\n showHeader={contents.comments.length > 1}\n showAttachments={showAttachments}\n showReactions={showReactions}\n overrides={overrides}\n />\n ))}\n </div>\n );\n\n return {\n unread: contents.unread,\n date: contents.date,\n aside,\n title,\n content,\n threadId: thread.id,\n commentId: contents.comments[contents.comments.length - 1]!.id,\n };\n }\n\n case \"mention\": {\n const mentionUserId = contents.userIds[0]!;\n const mentionComment = contents.comments[0]!;\n\n const aside = <InboxNotificationAvatar userId={mentionUserId} />;\n const title = $.INBOX_NOTIFICATION_THREAD_MENTION(\n <User key={mentionUserId} userId={mentionUserId} />,\n showRoomName ? <Room roomId={thread.roomId} /> : undefined\n );\n const content = (\n <div className=\"lb-inbox-notification-comments\">\n <InboxNotificationComment\n key={mentionComment.id}\n comment={mentionComment}\n showHeader={false}\n showAttachments={showAttachments}\n showReactions={showReactions}\n overrides={overrides}\n />\n </div>\n );\n\n return {\n unread: contents.unread,\n date: contents.date,\n aside,\n title,\n content,\n threadId: thread.id,\n commentId: mentionComment.id,\n };\n }\n\n default:\n return assertNever(\n contents,\n \"Unexpected thread inbox notification type\"\n );\n }\n }, [\n $,\n currentUserId,\n inboxNotification,\n overrides,\n showRoomName,\n showAttachments,\n showReactions,\n thread,\n ]);\n // Add the thread ID and comment ID to the `href`.\n // And use URL from `resolveRoomsInfo` if `href` isn't set.\n const resolvedHref = useMemo(() => {\n const resolvedHref = href ?? info?.url;\n\n return resolvedHref\n ? generateURL(resolvedHref, undefined, contents?.commentId)\n : undefined;\n }, [contents?.commentId, href, info?.url]);\n\n if (!contents) {\n return null;\n }\n\n const { aside, title, content, date, unread } = contents;\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={aside}\n title={title}\n date={date}\n unread={unread}\n overrides={overrides}\n href={resolvedHref}\n showActions={showActions}\n markAsReadOnClick={false}\n {...props}\n ref={forwardedRef}\n >\n {content}\n </InboxNotificationLayout>\n );\n }\n);\n\n/**\n * Displays a text mention notification kind.\n */\nconst InboxNotificationTextMention = forwardRef<\n HTMLAnchorElement,\n InboxNotificationTextMentionProps\n>(\n (\n {\n inboxNotification,\n showActions = \"hover\",\n showRoomName = true,\n overrides,\n ...props\n },\n ref\n ) => {\n const $ = useOverrides(overrides);\n\n const unread = useMemo(() => {\n return (\n !inboxNotification.readAt ||\n inboxNotification.notifiedAt > inboxNotification.readAt\n );\n }, [inboxNotification.notifiedAt, inboxNotification.readAt]);\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={<InboxNotificationAvatar userId={inboxNotification.createdBy} />}\n title={$.INBOX_NOTIFICATION_TEXT_MENTION(\n <User\n key={inboxNotification.createdBy}\n userId={inboxNotification.createdBy}\n />,\n showRoomName ? <Room roomId={inboxNotification.roomId} /> : undefined\n )}\n date={inboxNotification.notifiedAt}\n unread={unread}\n overrides={overrides}\n showActions={showActions}\n {...props}\n ref={ref}\n />\n );\n }\n);\n\n/**\n * Displays a custom notification kind.\n */\nconst InboxNotificationCustom = forwardRef<\n HTMLAnchorElement,\n InboxNotificationCustomProps\n>(\n (\n {\n inboxNotification,\n showActions = \"hover\",\n title,\n aside,\n children,\n overrides,\n ...props\n },\n forwardedRef\n ) => {\n const unread = useMemo(() => {\n return (\n !inboxNotification.readAt ||\n inboxNotification.notifiedAt > inboxNotification.readAt\n );\n }, [inboxNotification.notifiedAt, inboxNotification.readAt]);\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={aside}\n title={title}\n date={inboxNotification.notifiedAt}\n unread={unread}\n overrides={overrides}\n showActions={showActions}\n {...props}\n ref={forwardedRef}\n >\n {children}\n </InboxNotificationLayout>\n );\n }\n);\n\nconst InboxNotificationCustomMissing = forwardRef<\n HTMLAnchorElement,\n Omit<InboxNotificationCustomProps, \"children\" | \"title\" | \"aside\">\n>(({ inboxNotification, ...props }, forwardedRef) => {\n return (\n <InboxNotificationCustom\n inboxNotification={inboxNotification}\n {...props}\n title={\n <>\n Custom notification kind <code>{inboxNotification.kind}</code> is not\n handled\n </>\n }\n aside={\n <InboxNotificationIcon>\n <WarningIcon />\n </InboxNotificationIcon>\n }\n ref={forwardedRef}\n data-missing=\"\"\n >\n {/* TODO: Add link to the docs */}\n Notifications of this kind won’t be displayed in production. Use the{\" \"}\n <code>kinds</code> prop to define how they should be rendered.\n </InboxNotificationCustom>\n );\n});\n\n// Keeps track of which inbox notification kinds it has warned about already.\nconst inboxNotificationKindsWarnings: Set<string> = new Set();\n\n/**\n * Displays a single inbox notification.\n *\n * @example\n * <>\n * {inboxNotifications.map((inboxNotification) => (\n * <InboxNotification\n * key={inboxNotification.id}\n * inboxNotification={inboxNotification}\n * href={`/rooms/${inboxNotification.roomId}`\n * />\n * ))}\n * </>\n */\nexport const InboxNotification = Object.assign(\n forwardRef<HTMLAnchorElement, InboxNotificationProps>(\n ({ inboxNotification, kinds, ...props }, forwardedRef) => {\n switch (inboxNotification.kind) {\n case \"thread\": {\n const ResolvedInboxNotificationThread =\n kinds?.thread ?? InboxNotificationThread;\n\n return (\n <ResolvedInboxNotificationThread\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n\n case \"textMention\": {\n const ResolvedInboxNotificationTextMention =\n kinds?.textMention ?? InboxNotificationTextMention;\n\n return (\n <ResolvedInboxNotificationTextMention\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n\n default: {\n const ResolvedInboxNotificationCustom =\n kinds?.[inboxNotification.kind];\n\n if (!ResolvedInboxNotificationCustom) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!inboxNotificationKindsWarnings.has(inboxNotification.kind)) {\n inboxNotificationKindsWarnings.add(inboxNotification.kind);\n // TODO: Add link to the docs\n console.warn(\n `Custom notification kind \"${inboxNotification.kind}\" is not handled so notifications of this kind will not be displayed in production. Use the kinds prop to define how they should be rendered.`\n );\n }\n\n return (\n <InboxNotificationCustomMissing\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n } else {\n // Don't render anything in production if this inbox notification kind is not defined.\n return null;\n }\n }\n\n return (\n <ResolvedInboxNotificationCustom\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n }\n }\n ),\n {\n Thread: InboxNotificationThread,\n TextMention: InboxNotificationTextMention,\n Custom: InboxNotificationCustom,\n Icon: InboxNotificationIcon,\n Avatar: InboxNotificationAvatar,\n }\n);\n"],"names":["forwardRef","overrides","components","useOverrides","useComponents","Slot","useState","useMarkInboxNotificationAsRead","useDeleteInboxNotification","useCallback","jsx","TooltipProvider","jsxs","classNames","Timestamp","Dropdown","Fragment","DropdownItem","CheckIcon","DeleteIcon","Tooltip","DropdownTrigger","Button","EllipsisIcon","Avatar","useInboxNotificationThread","useCurrentUserId","useRoomInfo","useMemo","contents","generateInboxNotificationThreadContents","aside","title","List","User","INBOX_NOTIFICATION_THREAD_MAX_COMMENTS","Room","content","InboxNotificationComment","assertNever","resolvedHref","generateURL","WarningIcon","console"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,YAAA,CAAA;AAuNA,MAAM,uBAA0B,GAAAA,gBAAA;AAAA,EAI9B,CACE;AAAA,IACE,iBAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,eACAC,WAAA;AAAA,gBACAC,YAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACG,GAAA,KAAA;AAAA,KAEL,YACG,KAAA;AACH,IAAM,MAAA,CAAA,GAAIC,uBAAaF,WAAS,CAAA,CAAA;AAChC,IAAA,MAAM,EAAE,MAAA,EAAW,GAAAG,wBAAA,CAAcF,YAAU,CAAA,CAAA;AAC3C,IAAM,MAAA,SAAA,GAAY,UAAUG,cAAO,GAAA,MAAA,CAAA;AACnC,IAAA,MAAM,CAAC,gBAAA,EAAkB,iBAAiB,CAAA,GAAIC,eAAS,KAAK,CAAA,CAAA;AAC5D,IAAA,MAAM,8BAA8BC,sCAA+B,EAAA,CAAA;AACnE,IAAA,MAAM,0BAA0BC,kCAA2B,EAAA,CAAA;AAE3D,IAAA,MAAM,WAAc,GAAAC,iBAAA;AAAA,MAClB,CAAC,KAA0D,KAAA;AACzD,QAAA,OAAA,GAAU,KAAK,CAAA,CAAA;AAEf,QAAM,MAAA,uBAAA,GAA0B,iBAAqB,IAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAEjE,QAAA,IAAI,UAAU,uBAAyB,EAAA;AACrC,UAAA,2BAAA,CAA4B,kBAAkB,EAAE,CAAA,CAAA;AAAA,SAClD;AAAA,OACF;AAAA,MACA;AAAA,QACE,IAAA;AAAA,QACA,iBAAkB,CAAA,EAAA;AAAA,QAClB,iBAAA;AAAA,QACA,2BAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,eAAA,GAAkBA,iBAAY,CAAA,CAAC,KAA0B,KAAA;AAC7D,MAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAAA,KACxB,EAAG,EAAE,CAAA,CAAA;AAEL,IAAA,MAAM,gCAAmC,GAAAA,iBAAA;AAAA,MACvC,CAAC,KAA0B,KAAA;AACzB,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,QAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAAA,OACxB;AAAA,MACA,EAAC;AAAA,KACH,CAAA;AAEA,IAAM,MAAA,eAAA,GAAkBA,iBAAY,CAAA,CAAC,KAA2B,KAAA;AAC9D,MAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,MAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AACtB,MAAkB,iBAAA,CAAA,CAAC,IAAS,KAAA,CAAC,IAAI,CAAA,CAAA;AAAA,KACnC,EAAG,EAAE,CAAA,CAAA;AAEL,IAAM,MAAA,gBAAA,GAAmBA,kBAAY,MAAM;AACzC,MAAA,2BAAA,CAA4B,kBAAkB,EAAE,CAAA,CAAA;AAAA,KAC/C,EAAA,CAAC,iBAAkB,CAAA,EAAA,EAAI,2BAA2B,CAAC,CAAA,CAAA;AAEtD,IAAM,MAAA,YAAA,GAAeA,kBAAY,MAAM;AACrC,MAAA,uBAAA,CAAwB,kBAAkB,EAAE,CAAA,CAAA;AAAA,KAC3C,EAAA,CAAC,iBAAkB,CAAA,EAAA,EAAI,uBAAuB,CAAC,CAAA,CAAA;AAElD,IAAA,uBACGC,cAAA,CAAAC,gCAAA,EAAA;AAAA,MACC,QAAC,kBAAAC,eAAA,CAAA,SAAA,EAAA;AAAA,QACC,SAAW,EAAAC,qBAAA;AAAA,UACT,+BAAA;AAAA,UACA,gBAAgB,OACd,IAAA,0CAAA;AAAA,UACF,gBAAoB,IAAA,mCAAA;AAAA,UACpB,SAAA;AAAA,SACF;AAAA,QACA,KAAK,CAAE,CAAA,GAAA;AAAA,QACP,aAAA,EAAa,SAAS,EAAK,GAAA,KAAA,CAAA;AAAA,QAC3B,aAAW,iBAAkB,CAAA,IAAA;AAAA,QAC7B,OAAS,EAAA,WAAA;AAAA,QACT,IAAA;AAAA,QACC,GAAG,KAAA;AAAA,QACJ,GAAK,EAAA,YAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,UAAA,KAAA,oBAAUH,cAAA,CAAA,KAAA,EAAA;AAAA,YAAI,SAAU,EAAA,6BAAA;AAAA,YAA+B,QAAA,EAAA,KAAA;AAAA,WAAM,CAAA;AAAA,0BAC7DE,eAAA,CAAA,KAAA,EAAA;AAAA,YAAI,SAAU,EAAA,+BAAA;AAAA,YACb,QAAA,EAAA;AAAA,8BAACA,eAAA,CAAA,KAAA,EAAA;AAAA,gBAAI,SAAU,EAAA,8BAAA;AAAA,gBACb,QAAA,EAAA;AAAA,kCAACF,cAAA,CAAA,MAAA,EAAA;AAAA,oBAAK,SAAU,EAAA,6BAAA;AAAA,oBAA+B,QAAA,EAAA,KAAA;AAAA,mBAAM,CAAA;AAAA,kCACpDA,cAAA,CAAA,KAAA,EAAA;AAAA,oBAAI,SAAU,EAAA,+BAAA;AAAA,oBACb,QAAC,kBAAAE,eAAA,CAAA,MAAA,EAAA;AAAA,sBAAK,SAAU,EAAA,sCAAA;AAAA,sBACd,QAAA,EAAA;AAAA,wCAACF,cAAA,CAAAI,mBAAA,EAAA;AAAA,0BACC,QAAQ,CAAE,CAAA,MAAA;AAAA,0BACV,IAAA;AAAA,0BACA,SAAU,EAAA,oCAAA;AAAA,yBACZ,CAAA;AAAA,wBACC,0BACEJ,cAAA,CAAA,MAAA,EAAA;AAAA,0BACC,SAAU,EAAA,wCAAA;AAAA,0BACV,IAAK,EAAA,cAAA;AAAA,yBACP,CAAA;AAAA,uBAAA;AAAA,qBAEJ,CAAA;AAAA,mBACF,CAAA;AAAA,kBACC,+BACEA,cAAA,CAAA,KAAA,EAAA;AAAA,oBAAI,SAAU,EAAA,+BAAA;AAAA,oBACb,QAAC,kBAAAA,cAAA,CAAAK,iBAAA,EAAA;AAAA,sBACC,IAAM,EAAA,gBAAA;AAAA,sBACN,YAAc,EAAA,iBAAA;AAAA,sBACd,KAAM,EAAA,KAAA;AAAA,sBACN,OACE,kBAAAH,eAAA,CAAAI,mBAAA,EAAA;AAAA,wBACG,QAAA,EAAA;AAAA,0BAAA,MAAA,mBACEJ,eAAA,CAAAK,qBAAA,EAAA;AAAA,4BACC,QAAU,EAAA,gBAAA;AAAA,4BACV,OAAS,EAAA,eAAA;AAAA,4BAET,QAAA,EAAA;AAAA,8CAACP,cAAA,CAAAQ,eAAA,EAAA;AAAA,gCAAU,SAAU,EAAA,uBAAA;AAAA,+BAAwB,CAAA;AAAA,8BAC5C,CAAE,CAAA,+BAAA;AAAA,6BAAA;AAAA,2BACL,CACE,GAAA,IAAA;AAAA,0CACHN,eAAA,CAAAK,qBAAA,EAAA;AAAA,4BACC,QAAU,EAAA,YAAA;AAAA,4BACV,OAAS,EAAA,eAAA;AAAA,4BAET,QAAA,EAAA;AAAA,8CAACP,cAAA,CAAAS,iBAAA,EAAA;AAAA,gCAAW,SAAU,EAAA,uBAAA;AAAA,+BAAwB,CAAA;AAAA,8BAC7C,CAAE,CAAA,yBAAA;AAAA,6BAAA;AAAA,2BACL,CAAA;AAAA,yBAAA;AAAA,uBACF,CAAA;AAAA,sBAGF,QAAC,kBAAAT,cAAA,CAAAU,eAAA,EAAA;AAAA,wBAAQ,SAAS,CAAE,CAAA,uBAAA;AAAA,wBAClB,QAAC,kBAAAV,cAAA,CAAAW,yCAAA,EAAA;AAAA,0BAAgB,OAAO,EAAA,IAAA;AAAA,0BACtB,QAAC,kBAAAX,cAAA,CAAAY,aAAA,EAAA;AAAA,4BACC,SAAU,EAAA,8BAAA;AAAA,4BACV,OAAS,EAAA,eAAA;AAAA,4BACT,aAAe,EAAA,gCAAA;AAAA,4BACf,WAAa,EAAA,gCAAA;AAAA,4BACb,cAAY,CAAE,CAAA,uBAAA;AAAA,4BAEd,QAAC,kBAAAZ,cAAA,CAAAa,qBAAA,EAAA;AAAA,8BAAa,SAAU,EAAA,gBAAA;AAAA,6BAAiB,CAAA;AAAA,2BAC3C,CAAA;AAAA,yBACF,CAAA;AAAA,uBACF,CAAA;AAAA,qBACF,CAAA;AAAA,mBACF,CAAA;AAAA,iBAAA;AAAA,eAEJ,CAAA;AAAA,8BACCb,cAAA,CAAA,KAAA,EAAA;AAAA,gBAAI,SAAU,EAAA,4BAAA;AAAA,gBAA8B,QAAA;AAAA,eAAS,CAAA;AAAA,aAAA;AAAA,WACxD,CAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEA,SAAS,qBAAsB,CAAA;AAAA,EAC7B,SAAA;AAAA,EACG,GAAA,KAAA;AACL,CAA+B,EAAA;AAC7B,EAAA,uBACGA,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAWG,qBAAW,CAAA,4BAAA,EAA8B,SAAS,CAAA;AAAA,IAC5D,GAAG,KAAA;AAAA,GACN,CAAA,CAAA;AAEJ,CAAA;AAEA,SAAS,uBAAwB,CAAA;AAAA,EAC/B,SAAA;AAAA,EACG,GAAA,KAAA;AACL,CAAiC,EAAA;AAC/B,EAAA,uBACGH,cAAA,CAAAc,aAAA,EAAA;AAAA,IACC,SAAA,EAAWX,qBAAW,CAAA,8BAAA,EAAgC,SAAS,CAAA;AAAA,IAC9D,GAAG,KAAA;AAAA,GACN,CAAA,CAAA;AAEJ,CAAA;AAKA,MAAM,uBAA0B,GAAAb,gBAAA;AAAA,EAI9B,CACE;AAAA,IACE,iBAAA;AAAA,IACA,IAAA;AAAA,IACA,YAAe,GAAA,IAAA;AAAA,IACf,aAAgB,GAAA,IAAA;AAAA,IAChB,eAAkB,GAAA,IAAA;AAAA,IAClB,WAAc,GAAA,OAAA;AAAA,eACdC,WAAA;AAAA,IACG,GAAA,KAAA;AAAA,KAEL,YACG,KAAA;AACH,IAAM,MAAA,CAAA,GAAIE,uBAAaF,WAAS,CAAA,CAAA;AAChC,IAAM,MAAA,MAAA,GAASwB,kCAA2B,CAAA,iBAAA,CAAkB,EAAE,CAAA,CAAA;AAC9D,IAAA,MAAM,gBAAgBC,uBAAiB,EAAA,CAAA;AAKvC,IAAA,MAAM,EAAE,IAAA,EAAS,GAAAC,mBAAA,CAAY,kBAAkB,MAAM,CAAA,CAAA;AACrD,IAAM,MAAA,QAAA,GAAWC,cAAQ,MAAM;AAC7B,MAAA,MAAMC,SAAW,GAAAC,iEAAA;AAAA,QACf,iBAAA;AAAA,QACA,MAAA;AAAA,QACA,aAAiB,IAAA,EAAA;AAAA,OACnB,CAAA;AAEA,MAAA,IAAID,UAAS,QAAS,CAAA,MAAA,KAAW,KAAKA,SAAS,CAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACnE,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAEA,MAAA,QAAQA,UAAS,IAAM;AAAA,QACrB,KAAK,UAAY,EAAA;AACf,UAAA,MAAM,kBAAkB,CAAC,GAAGA,SAAS,CAAA,OAAO,EAAE,OAAQ,EAAA,CAAA;AACtD,UAAA,MAAM,cAAc,eAAgB,CAAA,CAAA,CAAA,CAAA;AAEpC,UAAA,MAAME,yBAASrB,cAAA,CAAA,uBAAA,EAAA;AAAA,YAAwB,MAAQ,EAAA,WAAA;AAAA,WAAa,CAAA,CAAA;AAC5D,UAAA,MAAMsB,SAAQ,CAAE,CAAA,uCAAA;AAAA,4BACbtB,cAAA,CAAAuB,SAAA,EAAA;AAAA,cACC,MAAQ,EAAA,eAAA,CAAgB,GAAI,CAAA,CAAC,2BAC1BvB,cAAA,CAAAwB,SAAA,EAAA;AAAA,gBAAkB,MAAA;AAAA,gBAAgB,WAAW,EAAA,IAAA;AAAA,eAAA,EAAnC,MAAoC,CAChD,CAAA;AAAA,cACD,iBAAiB,CAAE,CAAA,oBAAA;AAAA,cACnB,UAAUC,gEAAyC,GAAA,CAAA;AAAA,cACnD,QAAQ,CAAE,CAAA,MAAA;AAAA,aACZ,CAAA;AAAA,YACA,+BAAgBzB,cAAA,CAAA0B,SAAA,EAAA;AAAA,cAAK,QAAQ,MAAO,CAAA,MAAA;AAAA,aAAQ,CAAK,GAAA,KAAA,CAAA;AAAA,YACjD,eAAgB,CAAA,MAAA;AAAA,WAClB,CAAA;AACA,UAAA,MAAMC,2BACH3B,cAAA,CAAA,KAAA,EAAA;AAAA,YAAI,SAAU,EAAA,gCAAA;AAAA,YACZ,UAAAmB,SAAS,CAAA,QAAA,CAAS,GAAI,CAAA,CAAC,4BACrBnB,cAAA,CAAA4B,kDAAA,EAAA;AAAA,cAEC,OAAA;AAAA,cACA,UAAA,EAAYT,SAAS,CAAA,QAAA,CAAS,MAAS,GAAA,CAAA;AAAA,cACvC,eAAA;AAAA,cACA,aAAA;AAAA,yBACA5B,WAAA;AAAA,aALK,EAAA,OAAA,CAAQ,EAMf,CACD,CAAA;AAAA,WACH,CAAA,CAAA;AAGF,UAAO,OAAA;AAAA,YACL,QAAQ4B,SAAS,CAAA,MAAA;AAAA,YACjB,MAAMA,SAAS,CAAA,IAAA;AAAA,YACf,KAAAE,EAAAA,MAAAA;AAAA,YACA,KAAAC,EAAAA,MAAAA;AAAA,YACA,OAAAK,EAAAA,QAAAA;AAAA,YACA,UAAU,MAAO,CAAA,EAAA;AAAA,YACjB,WAAWR,SAAS,CAAA,QAAA,CAASA,SAAS,CAAA,QAAA,CAAS,SAAS,CAAI,CAAA,CAAA,EAAA;AAAA,WAC9D,CAAA;AAAA,SACF;AAAA,QAEA,KAAK,SAAW,EAAA;AACd,UAAM,MAAA,aAAA,GAAgBA,UAAS,OAAQ,CAAA,CAAA,CAAA,CAAA;AACvC,UAAM,MAAA,cAAA,GAAiBA,UAAS,QAAS,CAAA,CAAA,CAAA,CAAA;AAEzC,UAAA,MAAME,yBAASrB,cAAA,CAAA,uBAAA,EAAA;AAAA,YAAwB,MAAQ,EAAA,aAAA;AAAA,WAAe,CAAA,CAAA;AAC9D,UAAA,MAAMsB,SAAQ,CAAE,CAAA,iCAAA;AAAA,4BACbtB,cAAA,CAAAwB,SAAA,EAAA;AAAA,cAAyB,MAAQ,EAAA,aAAA;AAAA,aAAA,EAAvB,aAAsC,CAAA;AAAA,YACjD,+BAAgBxB,cAAA,CAAA0B,SAAA,EAAA;AAAA,cAAK,QAAQ,MAAO,CAAA,MAAA;AAAA,aAAQ,CAAK,GAAA,KAAA,CAAA;AAAA,WACnD,CAAA;AACA,UAAA,MAAMC,2BACH3B,cAAA,CAAA,KAAA,EAAA;AAAA,YAAI,SAAU,EAAA,gCAAA;AAAA,YACb,QAAC,kBAAAA,cAAA,CAAA4B,kDAAA,EAAA;AAAA,cAEC,OAAS,EAAA,cAAA;AAAA,cACT,UAAY,EAAA,KAAA;AAAA,cACZ,eAAA;AAAA,cACA,aAAA;AAAA,yBACArC,WAAA;AAAA,aAAA,EALK,eAAe,EAMtB,CAAA;AAAA,WACF,CAAA,CAAA;AAGF,UAAO,OAAA;AAAA,YACL,QAAQ4B,SAAS,CAAA,MAAA;AAAA,YACjB,MAAMA,SAAS,CAAA,IAAA;AAAA,YACf,KAAAE,EAAAA,MAAAA;AAAA,YACA,KAAAC,EAAAA,MAAAA;AAAA,YACA,OAAAK,EAAAA,QAAAA;AAAA,YACA,UAAU,MAAO,CAAA,EAAA;AAAA,YACjB,WAAW,cAAe,CAAA,EAAA;AAAA,WAC5B,CAAA;AAAA,SACF;AAAA,QAEA;AACE,UAAO,OAAAE,gBAAA;AAAA,YACLV,SAAAA;AAAA,YACA,2CAAA;AAAA,WACF,CAAA;AAAA,OACJ;AAAA,KACC,EAAA;AAAA,MACD,CAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA5B,WAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA;AAAA,KACD,CAAA,CAAA;AAGD,IAAM,MAAA,YAAA,GAAe2B,cAAQ,MAAM;AACjC,MAAMY,MAAAA,aAAAA,GAAe,QAAQ,IAAM,EAAA,GAAA,CAAA;AAEnC,MAAA,OAAOA,gBACHC,eAAYD,CAAAA,aAAAA,EAAc,KAAW,CAAA,EAAA,QAAA,EAAU,SAAS,CACxD,GAAA,KAAA,CAAA,CAAA;AAAA,OACH,CAAC,QAAA,EAAU,WAAW,IAAM,EAAA,IAAA,EAAM,GAAG,CAAC,CAAA,CAAA;AAEzC,IAAA,IAAI,CAAC,QAAU,EAAA;AACb,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAA,MAAM,EAAE,KAAO,EAAA,KAAA,EAAO,OAAS,EAAA,IAAA,EAAM,QAAW,GAAA,QAAA,CAAA;AAEhD,IAAA,uBACG9B,cAAA,CAAA,uBAAA,EAAA;AAAA,MACC,iBAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,iBACAT,WAAA;AAAA,MACA,IAAM,EAAA,YAAA;AAAA,MACN,WAAA;AAAA,MACA,iBAAmB,EAAA,KAAA;AAAA,MAClB,GAAG,KAAA;AAAA,MACJ,GAAK,EAAA,YAAA;AAAA,MAEJ,QAAA,EAAA,OAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAKA,MAAM,4BAA+B,GAAAD,gBAAA;AAAA,EAInC,CACE;AAAA,IACE,iBAAA;AAAA,IACA,WAAc,GAAA,OAAA;AAAA,IACd,YAAe,GAAA,IAAA;AAAA,eACfC,WAAA;AAAA,IACG,GAAA,KAAA;AAAA,KAEL,GACG,KAAA;AACH,IAAM,MAAA,CAAA,GAAIE,uBAAaF,WAAS,CAAA,CAAA;AAEhC,IAAM,MAAA,MAAA,GAAS2B,cAAQ,MAAM;AAC3B,MAAA,OACE,CAAC,iBAAA,CAAkB,MACnB,IAAA,iBAAA,CAAkB,aAAa,iBAAkB,CAAA,MAAA,CAAA;AAAA,OAElD,CAAC,iBAAA,CAAkB,UAAY,EAAA,iBAAA,CAAkB,MAAM,CAAC,CAAA,CAAA;AAE3D,IAAA,uBACGlB,cAAA,CAAA,uBAAA,EAAA;AAAA,MACC,iBAAA;AAAA,MACA,uBAAQA,cAAA,CAAA,uBAAA,EAAA;AAAA,QAAwB,QAAQ,iBAAkB,CAAA,SAAA;AAAA,OAAW,CAAA;AAAA,MACrE,OAAO,CAAE,CAAA,+BAAA;AAAA,wBACNA,cAAA,CAAAwB,SAAA,EAAA;AAAA,UAEC,QAAQ,iBAAkB,CAAA,SAAA;AAAA,SAAA,EADrB,kBAAkB,SAEzB,CAAA;AAAA,QACA,+BAAgBxB,cAAA,CAAA0B,SAAA,EAAA;AAAA,UAAK,QAAQ,iBAAkB,CAAA,MAAA;AAAA,SAAQ,CAAK,GAAA,KAAA,CAAA;AAAA,OAC9D;AAAA,MACA,MAAM,iBAAkB,CAAA,UAAA;AAAA,MACxB,MAAA;AAAA,iBACAnC,WAAA;AAAA,MACA,WAAA;AAAA,MACC,GAAG,KAAA;AAAA,MACJ,GAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAKA,MAAM,uBAA0B,GAAAD,gBAAA;AAAA,EAI9B,CACE;AAAA,IACE,iBAAA;AAAA,IACA,WAAc,GAAA,OAAA;AAAA,IACd,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACG,GAAA,KAAA;AAAA,KAEL,YACG,KAAA;AACH,IAAM,MAAA,MAAA,GAAS4B,cAAQ,MAAM;AAC3B,MAAA,OACE,CAAC,iBAAA,CAAkB,MACnB,IAAA,iBAAA,CAAkB,aAAa,iBAAkB,CAAA,MAAA,CAAA;AAAA,OAElD,CAAC,iBAAA,CAAkB,UAAY,EAAA,iBAAA,CAAkB,MAAM,CAAC,CAAA,CAAA;AAE3D,IAAA,uBACGlB,cAAA,CAAA,uBAAA,EAAA;AAAA,MACC,iBAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAM,iBAAkB,CAAA,UAAA;AAAA,MACxB,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACC,GAAG,KAAA;AAAA,MACJ,GAAK,EAAA,YAAA;AAAA,MAEJ,QAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEA,MAAM,iCAAiCV,gBAGrC,CAAA,CAAC,EAAE,iBAAsB,EAAA,GAAA,KAAA,IAAS,YAAiB,KAAA;AACnD,EAAA,uBACGY,eAAA,CAAA,uBAAA,EAAA;AAAA,IACC,iBAAA;AAAA,IACC,GAAG,KAAA;AAAA,IACJ,KACE,kBAAAA,eAAA,CAAAI,mBAAA,EAAA;AAAA,MAAE,QAAA,EAAA;AAAA,QAAA,2BAAA;AAAA,wBAC0BN,cAAA,CAAA,MAAA,EAAA;AAAA,UAAM,QAAkB,EAAA,iBAAA,CAAA,IAAA;AAAA,SAAK,CAAA;AAAA,QAAO,iBAAA;AAAA,OAAA;AAAA,KAEhE,CAAA;AAAA,IAEF,uBACGA,cAAA,CAAA,qBAAA,EAAA;AAAA,MACC,yCAACgC,mBAAY,EAAA,EAAA,CAAA;AAAA,KACf,CAAA;AAAA,IAEF,GAAK,EAAA,YAAA;AAAA,IACL,cAAa,EAAA,EAAA;AAAA,IAEqB,QAAA,EAAA;AAAA,MAAA,2EAAA;AAAA,MACmC,GAAA;AAAA,sBACpEhC,cAAA,CAAA,MAAA,EAAA;AAAA,QAAK,QAAA,EAAA,OAAA;AAAA,OAAK,CAAA;AAAA,MAAO,8CAAA;AAAA,KAAA;AAAA,GACpB,CAAA,CAAA;AAEJ,CAAC,CAAA,CAAA;AAGD,MAAM,8BAAA,uBAAkD,GAAI,EAAA,CAAA;AAgBrD,MAAM,oBAAoB,MAAO,CAAA,MAAA;AAAA,EACtCV,gBAAA;AAAA,IACE,CAAC,EAAE,iBAAA,EAAmB,KAAU,EAAA,GAAA,KAAA,IAAS,YAAiB,KAAA;AACxD,MAAA,QAAQ,kBAAkB,IAAM;AAAA,QAC9B,KAAK,QAAU,EAAA;AACb,UAAM,MAAA,+BAAA,GACJ,OAAO,MAAU,IAAA,uBAAA,CAAA;AAEnB,UAAA,uBACGU,cAAA,CAAA,+BAAA,EAAA;AAAA,YACC,iBAAA;AAAA,YACC,GAAG,KAAA;AAAA,YACJ,GAAK,EAAA,YAAA;AAAA,WACP,CAAA,CAAA;AAAA,SAEJ;AAAA,QAEA,KAAK,aAAe,EAAA;AAClB,UAAM,MAAA,oCAAA,GACJ,OAAO,WAAe,IAAA,4BAAA,CAAA;AAExB,UAAA,uBACGA,cAAA,CAAA,oCAAA,EAAA;AAAA,YACC,iBAAA;AAAA,YACC,GAAG,KAAA;AAAA,YACJ,GAAK,EAAA,YAAA;AAAA,WACP,CAAA,CAAA;AAAA,SAEJ;AAAA,QAEA,SAAS;AACP,UAAM,MAAA,+BAAA,GACJ,QAAQ,iBAAkB,CAAA,IAAA,CAAA,CAAA;AAE5B,UAAA,IAAI,CAAC,+BAAiC,EAAA;AACpC,YAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,cAAA,IAAI,CAAC,8BAAA,CAA+B,GAAI,CAAA,iBAAA,CAAkB,IAAI,CAAG,EAAA;AAC/D,gBAA+B,8BAAA,CAAA,GAAA,CAAI,kBAAkB,IAAI,CAAA,CAAA;AAEzD,gBAAQiC,YAAA,CAAA,IAAA;AAAA,kBACN,6BAA6B,iBAAkB,CAAA,IAAA,CAAA,6IAAA,CAAA;AAAA,iBACjD,CAAA;AAAA,eACF;AAEA,cAAA,uBACGjC,cAAA,CAAA,8BAAA,EAAA;AAAA,gBACC,iBAAA;AAAA,gBACC,GAAG,KAAA;AAAA,gBACJ,GAAK,EAAA,YAAA;AAAA,eACP,CAAA,CAAA;AAAA,aAEG,MAAA;AAEL,cAAO,OAAA,IAAA,CAAA;AAAA,aACT;AAAA,WACF;AAEA,UAAA,uBACGA,cAAA,CAAA,+BAAA,EAAA;AAAA,YACC,iBAAA;AAAA,YACC,GAAG,KAAA;AAAA,YACJ,GAAK,EAAA,YAAA;AAAA,WACP,CAAA,CAAA;AAAA,SAEJ;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EACA;AAAA,IACE,MAAQ,EAAA,uBAAA;AAAA,IACR,WAAa,EAAA,4BAAA;AAAA,IACb,MAAQ,EAAA,uBAAA;AAAA,IACR,IAAM,EAAA,qBAAA;AAAA,IACN,MAAQ,EAAA,uBAAA;AAAA,GACV;AACF;;;;"}
@@ -1,9 +1,9 @@
1
- 'use client';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { assertNever, console } from '@liveblocks/core';
3
3
  import { useMarkInboxNotificationAsRead, useDeleteInboxNotification, useInboxNotificationThread, useRoomInfo } from '@liveblocks/react';
4
4
  import { Slot } from '@radix-ui/react-slot';
5
5
  import { TooltipProvider } from '@radix-ui/react-tooltip';
6
- import React__default, { forwardRef, useState, useCallback, useMemo } from 'react';
6
+ import { forwardRef, useState, useCallback, useMemo } from 'react';
7
7
  import { useComponents } from '../components.mjs';
8
8
  import { CheckIcon } from '../icons/Check.mjs';
9
9
  import { DeleteIcon } from '../icons/Delete.mjs';
@@ -24,6 +24,7 @@ import { Tooltip } from './internal/Tooltip.mjs';
24
24
  import { User } from './internal/User.mjs';
25
25
  import { DropdownMenuTrigger } from '@radix-ui/react-dropdown-menu';
26
26
 
27
+ "use client";
27
28
  const InboxNotificationLayout = forwardRef(
28
29
  ({
29
30
  inboxNotification,
@@ -86,78 +87,119 @@ const InboxNotificationLayout = forwardRef(
86
87
  const handleDelete = useCallback(() => {
87
88
  deleteInboxNotification(inboxNotification.id);
88
89
  }, [inboxNotification.id, deleteInboxNotification]);
89
- return /* @__PURE__ */ React__default.createElement(TooltipProvider, null, /* @__PURE__ */ React__default.createElement(Component, {
90
- className: classNames(
91
- "lb-root lb-inbox-notification",
92
- showActions === "hover" && "lb-inbox-notification:show-actions-hover",
93
- isMoreActionOpen && "lb-inbox-notification:action-open",
94
- className
95
- ),
96
- dir: $.dir,
97
- "data-unread": unread ? "" : void 0,
98
- "data-kind": inboxNotification.kind,
99
- onClick: handleClick,
100
- href,
101
- ...props,
102
- ref: forwardedRef
103
- }, aside && /* @__PURE__ */ React__default.createElement("div", {
104
- className: "lb-inbox-notification-aside"
105
- }, aside), /* @__PURE__ */ React__default.createElement("div", {
106
- className: "lb-inbox-notification-content"
107
- }, /* @__PURE__ */ React__default.createElement("div", {
108
- className: "lb-inbox-notification-header"
109
- }, /* @__PURE__ */ React__default.createElement("span", {
110
- className: "lb-inbox-notification-title"
111
- }, title), /* @__PURE__ */ React__default.createElement("div", {
112
- className: "lb-inbox-notification-details"
113
- }, /* @__PURE__ */ React__default.createElement("span", {
114
- className: "lb-inbox-notification-details-labels"
115
- }, /* @__PURE__ */ React__default.createElement(Timestamp, {
116
- locale: $.locale,
117
- date,
118
- className: "lb-date lb-inbox-notification-date"
119
- }), unread && /* @__PURE__ */ React__default.createElement("span", {
120
- className: "lb-inbox-notification-unread-indicator",
121
- role: "presentation"
122
- }))), showActions && /* @__PURE__ */ React__default.createElement("div", {
123
- className: "lb-inbox-notification-actions"
124
- }, /* @__PURE__ */ React__default.createElement(Dropdown, {
125
- open: isMoreActionOpen,
126
- onOpenChange: setMoreActionOpen,
127
- align: "end",
128
- content: /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, unread ? /* @__PURE__ */ React__default.createElement(DropdownItem, {
129
- onSelect: handleMarkAsRead,
130
- onClick: stopPropagation
131
- }, /* @__PURE__ */ React__default.createElement(CheckIcon, {
132
- className: "lb-dropdown-item-icon"
133
- }), $.INBOX_NOTIFICATION_MARK_AS_READ) : null, /* @__PURE__ */ React__default.createElement(DropdownItem, {
134
- onSelect: handleDelete,
135
- onClick: stopPropagation
136
- }, /* @__PURE__ */ React__default.createElement(DeleteIcon, {
137
- className: "lb-dropdown-item-icon"
138
- }), $.INBOX_NOTIFICATION_DELETE))
139
- }, /* @__PURE__ */ React__default.createElement(Tooltip, {
140
- content: $.INBOX_NOTIFICATION_MORE
141
- }, /* @__PURE__ */ React__default.createElement(DropdownMenuTrigger, {
142
- asChild: true
143
- }, /* @__PURE__ */ React__default.createElement(Button, {
144
- className: "lb-inbox-notification-action",
145
- onClick: handleMoreClick,
146
- onPointerDown: preventDefaultAndStopPropagation,
147
- onPointerUp: preventDefaultAndStopPropagation,
148
- "aria-label": $.INBOX_NOTIFICATION_MORE
149
- }, /* @__PURE__ */ React__default.createElement(EllipsisIcon, {
150
- className: "lb-button-icon"
151
- }))))))), /* @__PURE__ */ React__default.createElement("div", {
152
- className: "lb-inbox-notification-body"
153
- }, children))));
90
+ return /* @__PURE__ */ jsx(TooltipProvider, {
91
+ children: /* @__PURE__ */ jsxs(Component, {
92
+ className: classNames(
93
+ "lb-root lb-inbox-notification",
94
+ showActions === "hover" && "lb-inbox-notification:show-actions-hover",
95
+ isMoreActionOpen && "lb-inbox-notification:action-open",
96
+ className
97
+ ),
98
+ dir: $.dir,
99
+ "data-unread": unread ? "" : void 0,
100
+ "data-kind": inboxNotification.kind,
101
+ onClick: handleClick,
102
+ href,
103
+ ...props,
104
+ ref: forwardedRef,
105
+ children: [
106
+ aside && /* @__PURE__ */ jsx("div", {
107
+ className: "lb-inbox-notification-aside",
108
+ children: aside
109
+ }),
110
+ /* @__PURE__ */ jsxs("div", {
111
+ className: "lb-inbox-notification-content",
112
+ children: [
113
+ /* @__PURE__ */ jsxs("div", {
114
+ className: "lb-inbox-notification-header",
115
+ children: [
116
+ /* @__PURE__ */ jsx("span", {
117
+ className: "lb-inbox-notification-title",
118
+ children: title
119
+ }),
120
+ /* @__PURE__ */ jsx("div", {
121
+ className: "lb-inbox-notification-details",
122
+ children: /* @__PURE__ */ jsxs("span", {
123
+ className: "lb-inbox-notification-details-labels",
124
+ children: [
125
+ /* @__PURE__ */ jsx(Timestamp, {
126
+ locale: $.locale,
127
+ date,
128
+ className: "lb-date lb-inbox-notification-date"
129
+ }),
130
+ unread && /* @__PURE__ */ jsx("span", {
131
+ className: "lb-inbox-notification-unread-indicator",
132
+ role: "presentation"
133
+ })
134
+ ]
135
+ })
136
+ }),
137
+ showActions && /* @__PURE__ */ jsx("div", {
138
+ className: "lb-inbox-notification-actions",
139
+ children: /* @__PURE__ */ jsx(Dropdown, {
140
+ open: isMoreActionOpen,
141
+ onOpenChange: setMoreActionOpen,
142
+ align: "end",
143
+ content: /* @__PURE__ */ jsxs(Fragment, {
144
+ children: [
145
+ unread ? /* @__PURE__ */ jsxs(DropdownItem, {
146
+ onSelect: handleMarkAsRead,
147
+ onClick: stopPropagation,
148
+ children: [
149
+ /* @__PURE__ */ jsx(CheckIcon, {
150
+ className: "lb-dropdown-item-icon"
151
+ }),
152
+ $.INBOX_NOTIFICATION_MARK_AS_READ
153
+ ]
154
+ }) : null,
155
+ /* @__PURE__ */ jsxs(DropdownItem, {
156
+ onSelect: handleDelete,
157
+ onClick: stopPropagation,
158
+ children: [
159
+ /* @__PURE__ */ jsx(DeleteIcon, {
160
+ className: "lb-dropdown-item-icon"
161
+ }),
162
+ $.INBOX_NOTIFICATION_DELETE
163
+ ]
164
+ })
165
+ ]
166
+ }),
167
+ children: /* @__PURE__ */ jsx(Tooltip, {
168
+ content: $.INBOX_NOTIFICATION_MORE,
169
+ children: /* @__PURE__ */ jsx(DropdownMenuTrigger, {
170
+ asChild: true,
171
+ children: /* @__PURE__ */ jsx(Button, {
172
+ className: "lb-inbox-notification-action",
173
+ onClick: handleMoreClick,
174
+ onPointerDown: preventDefaultAndStopPropagation,
175
+ onPointerUp: preventDefaultAndStopPropagation,
176
+ "aria-label": $.INBOX_NOTIFICATION_MORE,
177
+ children: /* @__PURE__ */ jsx(EllipsisIcon, {
178
+ className: "lb-button-icon"
179
+ })
180
+ })
181
+ })
182
+ })
183
+ })
184
+ })
185
+ ]
186
+ }),
187
+ /* @__PURE__ */ jsx("div", {
188
+ className: "lb-inbox-notification-body",
189
+ children
190
+ })
191
+ ]
192
+ })
193
+ ]
194
+ })
195
+ });
154
196
  }
155
197
  );
156
198
  function InboxNotificationIcon({
157
199
  className,
158
200
  ...props
159
201
  }) {
160
- return /* @__PURE__ */ React__default.createElement("div", {
202
+ return /* @__PURE__ */ jsx("div", {
161
203
  className: classNames("lb-inbox-notification-icon", className),
162
204
  ...props
163
205
  });
@@ -166,7 +208,7 @@ function InboxNotificationAvatar({
166
208
  className,
167
209
  ...props
168
210
  }) {
169
- return /* @__PURE__ */ React__default.createElement(Avatar, {
211
+ return /* @__PURE__ */ jsx(Avatar, {
170
212
  className: classNames("lb-inbox-notification-avatar", className),
171
213
  ...props
172
214
  });
@@ -199,35 +241,34 @@ const InboxNotificationThread = forwardRef(
199
241
  case "comments": {
200
242
  const reversedUserIds = [...contents2.userIds].reverse();
201
243
  const firstUserId = reversedUserIds[0];
202
- const aside2 = /* @__PURE__ */ React__default.createElement(InboxNotificationAvatar, {
244
+ const aside2 = /* @__PURE__ */ jsx(InboxNotificationAvatar, {
203
245
  userId: firstUserId
204
246
  });
205
247
  const title2 = $.INBOX_NOTIFICATION_THREAD_COMMENTS_LIST(
206
- /* @__PURE__ */ React__default.createElement(List, {
207
- values: reversedUserIds.map((userId) => /* @__PURE__ */ React__default.createElement(User, {
208
- key: userId,
248
+ /* @__PURE__ */ jsx(List, {
249
+ values: reversedUserIds.map((userId) => /* @__PURE__ */ jsx(User, {
209
250
  userId,
210
251
  replaceSelf: true
211
- })),
252
+ }, userId)),
212
253
  formatRemaining: $.LIST_REMAINING_USERS,
213
254
  truncate: INBOX_NOTIFICATION_THREAD_MAX_COMMENTS - 1,
214
255
  locale: $.locale
215
256
  }),
216
- showRoomName ? /* @__PURE__ */ React__default.createElement(Room, {
257
+ showRoomName ? /* @__PURE__ */ jsx(Room, {
217
258
  roomId: thread.roomId
218
259
  }) : void 0,
219
260
  reversedUserIds.length
220
261
  );
221
- const content2 = /* @__PURE__ */ React__default.createElement("div", {
222
- className: "lb-inbox-notification-comments"
223
- }, contents2.comments.map((comment) => /* @__PURE__ */ React__default.createElement(InboxNotificationComment, {
224
- key: comment.id,
225
- comment,
226
- showHeader: contents2.comments.length > 1,
227
- showAttachments,
228
- showReactions,
229
- overrides
230
- })));
262
+ const content2 = /* @__PURE__ */ jsx("div", {
263
+ className: "lb-inbox-notification-comments",
264
+ children: contents2.comments.map((comment) => /* @__PURE__ */ jsx(InboxNotificationComment, {
265
+ comment,
266
+ showHeader: contents2.comments.length > 1,
267
+ showAttachments,
268
+ showReactions,
269
+ overrides
270
+ }, comment.id))
271
+ });
231
272
  return {
232
273
  unread: contents2.unread,
233
274
  date: contents2.date,
@@ -241,28 +282,27 @@ const InboxNotificationThread = forwardRef(
241
282
  case "mention": {
242
283
  const mentionUserId = contents2.userIds[0];
243
284
  const mentionComment = contents2.comments[0];
244
- const aside2 = /* @__PURE__ */ React__default.createElement(InboxNotificationAvatar, {
285
+ const aside2 = /* @__PURE__ */ jsx(InboxNotificationAvatar, {
245
286
  userId: mentionUserId
246
287
  });
247
288
  const title2 = $.INBOX_NOTIFICATION_THREAD_MENTION(
248
- /* @__PURE__ */ React__default.createElement(User, {
249
- key: mentionUserId,
289
+ /* @__PURE__ */ jsx(User, {
250
290
  userId: mentionUserId
251
- }),
252
- showRoomName ? /* @__PURE__ */ React__default.createElement(Room, {
291
+ }, mentionUserId),
292
+ showRoomName ? /* @__PURE__ */ jsx(Room, {
253
293
  roomId: thread.roomId
254
294
  }) : void 0
255
295
  );
256
- const content2 = /* @__PURE__ */ React__default.createElement("div", {
257
- className: "lb-inbox-notification-comments"
258
- }, /* @__PURE__ */ React__default.createElement(InboxNotificationComment, {
259
- key: mentionComment.id,
260
- comment: mentionComment,
261
- showHeader: false,
262
- showAttachments,
263
- showReactions,
264
- overrides
265
- }));
296
+ const content2 = /* @__PURE__ */ jsx("div", {
297
+ className: "lb-inbox-notification-comments",
298
+ children: /* @__PURE__ */ jsx(InboxNotificationComment, {
299
+ comment: mentionComment,
300
+ showHeader: false,
301
+ showAttachments,
302
+ showReactions,
303
+ overrides
304
+ }, mentionComment.id)
305
+ });
266
306
  return {
267
307
  unread: contents2.unread,
268
308
  date: contents2.date,
@@ -297,7 +337,7 @@ const InboxNotificationThread = forwardRef(
297
337
  return null;
298
338
  }
299
339
  const { aside, title, content, date, unread } = contents;
300
- return /* @__PURE__ */ React__default.createElement(InboxNotificationLayout, {
340
+ return /* @__PURE__ */ jsx(InboxNotificationLayout, {
301
341
  inboxNotification,
302
342
  aside,
303
343
  title,
@@ -308,8 +348,9 @@ const InboxNotificationThread = forwardRef(
308
348
  showActions,
309
349
  markAsReadOnClick: false,
310
350
  ...props,
311
- ref: forwardedRef
312
- }, content);
351
+ ref: forwardedRef,
352
+ children: content
353
+ });
313
354
  }
314
355
  );
315
356
  const InboxNotificationTextMention = forwardRef(
@@ -324,17 +365,16 @@ const InboxNotificationTextMention = forwardRef(
324
365
  const unread = useMemo(() => {
325
366
  return !inboxNotification.readAt || inboxNotification.notifiedAt > inboxNotification.readAt;
326
367
  }, [inboxNotification.notifiedAt, inboxNotification.readAt]);
327
- return /* @__PURE__ */ React__default.createElement(InboxNotificationLayout, {
368
+ return /* @__PURE__ */ jsx(InboxNotificationLayout, {
328
369
  inboxNotification,
329
- aside: /* @__PURE__ */ React__default.createElement(InboxNotificationAvatar, {
370
+ aside: /* @__PURE__ */ jsx(InboxNotificationAvatar, {
330
371
  userId: inboxNotification.createdBy
331
372
  }),
332
373
  title: $.INBOX_NOTIFICATION_TEXT_MENTION(
333
- /* @__PURE__ */ React__default.createElement(User, {
334
- key: inboxNotification.createdBy,
374
+ /* @__PURE__ */ jsx(User, {
335
375
  userId: inboxNotification.createdBy
336
- }),
337
- showRoomName ? /* @__PURE__ */ React__default.createElement(Room, {
376
+ }, inboxNotification.createdBy),
377
+ showRoomName ? /* @__PURE__ */ jsx(Room, {
338
378
  roomId: inboxNotification.roomId
339
379
  }) : void 0
340
380
  ),
@@ -360,7 +400,7 @@ const InboxNotificationCustom = forwardRef(
360
400
  const unread = useMemo(() => {
361
401
  return !inboxNotification.readAt || inboxNotification.notifiedAt > inboxNotification.readAt;
362
402
  }, [inboxNotification.notifiedAt, inboxNotification.readAt]);
363
- return /* @__PURE__ */ React__default.createElement(InboxNotificationLayout, {
403
+ return /* @__PURE__ */ jsx(InboxNotificationLayout, {
364
404
  inboxNotification,
365
405
  aside,
366
406
  title,
@@ -369,19 +409,38 @@ const InboxNotificationCustom = forwardRef(
369
409
  overrides,
370
410
  showActions,
371
411
  ...props,
372
- ref: forwardedRef
373
- }, children);
412
+ ref: forwardedRef,
413
+ children
414
+ });
374
415
  }
375
416
  );
376
417
  const InboxNotificationCustomMissing = forwardRef(({ inboxNotification, ...props }, forwardedRef) => {
377
- return /* @__PURE__ */ React__default.createElement(InboxNotificationCustom, {
418
+ return /* @__PURE__ */ jsxs(InboxNotificationCustom, {
378
419
  inboxNotification,
379
420
  ...props,
380
- title: /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, "Custom notification kind ", /* @__PURE__ */ React__default.createElement("code", null, inboxNotification.kind), " is not handled"),
381
- aside: /* @__PURE__ */ React__default.createElement(InboxNotificationIcon, null, /* @__PURE__ */ React__default.createElement(WarningIcon, null)),
421
+ title: /* @__PURE__ */ jsxs(Fragment, {
422
+ children: [
423
+ "Custom notification kind ",
424
+ /* @__PURE__ */ jsx("code", {
425
+ children: inboxNotification.kind
426
+ }),
427
+ " is not handled"
428
+ ]
429
+ }),
430
+ aside: /* @__PURE__ */ jsx(InboxNotificationIcon, {
431
+ children: /* @__PURE__ */ jsx(WarningIcon, {})
432
+ }),
382
433
  ref: forwardedRef,
383
- "data-missing": ""
384
- }, "Notifications of this kind won\u2019t be displayed in production. Use the", " ", /* @__PURE__ */ React__default.createElement("code", null, "kinds"), " prop to define how they should be rendered.");
434
+ "data-missing": "",
435
+ children: [
436
+ "Notifications of this kind won\u2019t be displayed in production. Use the",
437
+ " ",
438
+ /* @__PURE__ */ jsx("code", {
439
+ children: "kinds"
440
+ }),
441
+ " prop to define how they should be rendered."
442
+ ]
443
+ });
385
444
  });
386
445
  const inboxNotificationKindsWarnings = /* @__PURE__ */ new Set();
387
446
  const InboxNotification = Object.assign(
@@ -390,7 +449,7 @@ const InboxNotification = Object.assign(
390
449
  switch (inboxNotification.kind) {
391
450
  case "thread": {
392
451
  const ResolvedInboxNotificationThread = kinds?.thread ?? InboxNotificationThread;
393
- return /* @__PURE__ */ React__default.createElement(ResolvedInboxNotificationThread, {
452
+ return /* @__PURE__ */ jsx(ResolvedInboxNotificationThread, {
394
453
  inboxNotification,
395
454
  ...props,
396
455
  ref: forwardedRef
@@ -398,7 +457,7 @@ const InboxNotification = Object.assign(
398
457
  }
399
458
  case "textMention": {
400
459
  const ResolvedInboxNotificationTextMention = kinds?.textMention ?? InboxNotificationTextMention;
401
- return /* @__PURE__ */ React__default.createElement(ResolvedInboxNotificationTextMention, {
460
+ return /* @__PURE__ */ jsx(ResolvedInboxNotificationTextMention, {
402
461
  inboxNotification,
403
462
  ...props,
404
463
  ref: forwardedRef
@@ -414,7 +473,7 @@ const InboxNotification = Object.assign(
414
473
  `Custom notification kind "${inboxNotification.kind}" is not handled so notifications of this kind will not be displayed in production. Use the kinds prop to define how they should be rendered.`
415
474
  );
416
475
  }
417
- return /* @__PURE__ */ React__default.createElement(InboxNotificationCustomMissing, {
476
+ return /* @__PURE__ */ jsx(InboxNotificationCustomMissing, {
418
477
  inboxNotification,
419
478
  ...props,
420
479
  ref: forwardedRef
@@ -423,7 +482,7 @@ const InboxNotification = Object.assign(
423
482
  return null;
424
483
  }
425
484
  }
426
- return /* @__PURE__ */ React__default.createElement(ResolvedInboxNotificationCustom, {
485
+ return /* @__PURE__ */ jsx(ResolvedInboxNotificationCustom, {
427
486
  inboxNotification,
428
487
  ...props,
429
488
  ref: forwardedRef