@ttt-productions/chat-core 0.4.22 → 0.5.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 (51) hide show
  1. package/dist/constants.d.ts +6 -1
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/constants.js +6 -3
  4. package/dist/constants.js.map +1 -1
  5. package/dist/index.d.ts +3 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/mentions/MentionAutocomplete.d.ts +22 -0
  10. package/dist/mentions/MentionAutocomplete.d.ts.map +1 -0
  11. package/dist/mentions/MentionAutocomplete.js +21 -0
  12. package/dist/mentions/MentionAutocomplete.js.map +1 -0
  13. package/dist/mentions/MessageText.d.ts +27 -0
  14. package/dist/mentions/MessageText.d.ts.map +1 -0
  15. package/dist/mentions/MessageText.js +20 -0
  16. package/dist/mentions/MessageText.js.map +1 -0
  17. package/dist/mentions/parser.d.ts +33 -0
  18. package/dist/mentions/parser.d.ts.map +1 -0
  19. package/dist/mentions/parser.js +61 -0
  20. package/dist/mentions/parser.js.map +1 -0
  21. package/dist/mentions/types.d.ts +91 -0
  22. package/dist/mentions/types.d.ts.map +1 -0
  23. package/dist/mentions/types.js +14 -0
  24. package/dist/mentions/types.js.map +1 -0
  25. package/dist/mentions/use-mention-autocomplete.d.ts +81 -0
  26. package/dist/mentions/use-mention-autocomplete.d.ts.map +1 -0
  27. package/dist/mentions/use-mention-autocomplete.js +323 -0
  28. package/dist/mentions/use-mention-autocomplete.js.map +1 -0
  29. package/dist/react/index.d.ts +3 -0
  30. package/dist/react/index.d.ts.map +1 -1
  31. package/dist/react/index.js +3 -0
  32. package/dist/react/index.js.map +1 -1
  33. package/dist/schemas/index.d.ts +14 -0
  34. package/dist/schemas/index.d.ts.map +1 -0
  35. package/dist/schemas/index.js +14 -0
  36. package/dist/schemas/index.js.map +1 -0
  37. package/dist/types.d.ts +72 -5
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/types.js.map +1 -1
  40. package/dist/ui/ChatShell.d.ts.map +1 -1
  41. package/dist/ui/ChatShell.js +1 -1
  42. package/dist/ui/ChatShell.js.map +1 -1
  43. package/dist/ui/Composer.d.ts +1 -0
  44. package/dist/ui/Composer.d.ts.map +1 -1
  45. package/dist/ui/Composer.js +30 -14
  46. package/dist/ui/Composer.js.map +1 -1
  47. package/dist/ui/MessageItemDefault.d.ts.map +1 -1
  48. package/dist/ui/MessageItemDefault.js +3 -2
  49. package/dist/ui/MessageItemDefault.js.map +1 -1
  50. package/package.json +8 -4
  51. package/src/styles/chat.css +14 -0
@@ -5,9 +5,10 @@ import { Button, Textarea } from "@ttt-productions/ui-core/react";
5
5
  import { cn } from "@ttt-productions/ui-core";
6
6
  import { ensureFileWithContentType } from "@ttt-productions/file-input";
7
7
  import { MediaInput } from "@ttt-productions/file-input/react";
8
- import { buildTempUploadPath } from "@ttt-productions/ttt-core";
9
- import { uploadFileResumable } from "@ttt-productions/upload-core/browser";
8
+ import { useGuardedUpload } from "@ttt-productions/upload-ui/react";
10
9
  import { Loader2, X, FileText, ImageIcon, VideoIcon, MicIcon } from "lucide-react";
10
+ import { useMentionAutocomplete } from "../mentions/use-mention-autocomplete.js";
11
+ import { MentionAutocomplete } from "../mentions/MentionAutocomplete.js";
11
12
  function genId() {
12
13
  return `${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`;
13
14
  }
@@ -35,6 +36,18 @@ export function Composer(props) {
35
36
  const [isSending, setIsSending] = React.useState(false);
36
37
  const [uploadState, setUploadState] = React.useState(null);
37
38
  const ref = React.useRef(null);
39
+ const guardedUpload = useGuardedUpload();
40
+ const mentionApi = useMentionAutocomplete({
41
+ textareaRef: ref,
42
+ value: text,
43
+ onChange: setText,
44
+ providers: props.mentionConfig?.providers ?? [],
45
+ context: props.mentionConfig?.context,
46
+ recent: props.mentionConfig?.recent,
47
+ trigger: props.mentionConfig?.trigger,
48
+ minQueryLength: props.mentionConfig?.minQueryLength,
49
+ searchDebounceMs: props.mentionConfig?.searchDebounceMs,
50
+ });
38
51
  const attachEnabled = Boolean(attachmentConfig && sendAttachment);
39
52
  // focus stability: never steal focus unless explicitly enabled
40
53
  React.useEffect(() => {
@@ -56,23 +69,23 @@ export function Composer(props) {
56
69
  setIsSending(true);
57
70
  try {
58
71
  if (pendingFile && attachmentConfig && sendAttachment) {
59
- // Attachment path: upload first, then register.
72
+ // Attachment path: upload first via canonical guarded upload, then register.
60
73
  const uuid = genId();
61
- const FILE_ORIGIN = "chat-attachment";
62
- const storagePath = buildTempUploadPath(FILE_ORIGIN, attachmentConfig.userId, uuid);
74
+ const { uploadAdapter, userId, storage } = attachmentConfig;
75
+ const storagePath = uploadAdapter.buildUploadPath({ userId, attachmentId: uuid });
76
+ const extraMetadata = uploadAdapter.buildUploadMetadata?.({ userId, attachmentId: uuid }) ?? {};
63
77
  const fileToUpload = ensureFileWithContentType(pendingFile);
64
78
  const attType = getAttachmentType(fileToUpload);
65
- setUploadState({ phase: 'preparing', percent: null });
66
- await uploadFileResumable({
67
- storage: attachmentConfig.storage,
79
+ await guardedUpload({
80
+ storage,
68
81
  path: storagePath,
69
82
  file: fileToUpload,
70
- metadata: { contentType: fileToUpload.type },
71
- onProgress: ({ percent }) => setUploadState({ phase: 'uploading', percent }),
83
+ metadata: { contentType: fileToUpload.type, ...extraMetadata },
84
+ uploadId: uuid,
85
+ onProgress: (state) => setUploadState(state),
72
86
  });
73
- setUploadState({ phase: 'finalizing', percent: null });
74
87
  await sendAttachment({
75
- text: v,
88
+ text: mentionApi.getValueWithTokens(),
76
89
  attachment: {
77
90
  attachmentId: uuid,
78
91
  storagePath,
@@ -84,10 +97,11 @@ export function Composer(props) {
84
97
  }
85
98
  else {
86
99
  // Text-only path.
87
- await onSend(v);
100
+ await onSend(mentionApi.getValueWithTokens());
88
101
  }
89
102
  setText("");
90
103
  setPendingFile(null);
104
+ mentionApi.close();
91
105
  }
92
106
  catch (err) {
93
107
  console.error("[Composer] Send failed:", err);
@@ -100,7 +114,9 @@ export function Composer(props) {
100
114
  }
101
115
  };
102
116
  const isDisabled = disabled || isSending;
103
- return (_jsxs("div", { className: "chat-composer", children: [pendingFile && !isSending && (_jsxs("div", { className: "chat-composer-file-preview", children: [_jsx(AttachmentTypeIcon, { type: getAttachmentType(pendingFile) }), _jsx("span", { className: "chat-composer-file-name", children: pendingFile.name }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", className: "h-6 w-6 shrink-0", onClick: () => setPendingFile(null), children: _jsx(X, { className: "h-3 w-3" }) })] })), _jsxs("div", { className: "flex items-end gap-2", children: [_jsx(Textarea, { ref: ref, value: text, onChange: (e) => setText(e.target.value), placeholder: placeholder, disabled: isDisabled, rows: 1, className: cn("min-h-[40px] resize-none"), onKeyDown: (e) => {
117
+ return (_jsxs("div", { className: "chat-composer", children: [pendingFile && !isSending && (_jsxs("div", { className: "chat-composer-file-preview", children: [_jsx(AttachmentTypeIcon, { type: getAttachmentType(pendingFile) }), _jsx("span", { className: "chat-composer-file-name", children: pendingFile.name }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", className: "h-6 w-6 shrink-0", onClick: () => setPendingFile(null), children: _jsx(X, { className: "h-3 w-3" }) })] })), props.mentionConfig && mentionApi.state.open && (_jsx("div", { className: "relative", children: _jsx("div", { className: "absolute bottom-full left-0 mb-1 z-10", children: _jsx(MentionAutocomplete, { state: mentionApi.state, onSelect: (ref) => mentionApi.insertMention(ref) }) }) })), _jsxs("div", { className: "flex items-end gap-2", children: [_jsx(Textarea, { ref: ref, value: text, onChange: (e) => setText(e.target.value), placeholder: placeholder, disabled: isDisabled, rows: 1, className: cn("min-h-[40px] resize-none"), onKeyDown: (e) => {
118
+ if (mentionApi.handleKeyDown(e))
119
+ return;
104
120
  if (e.key === "Enter" && !e.shiftKey) {
105
121
  e.preventDefault();
106
122
  send();
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/ui/Composer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/ui/Composer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,SAAS,KAAK;IACZ,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAU;IACnC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,IAAI,EAAoC;IACpE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,OAAO,KAAC,SAAS,IAAC,SAAS,EAAC,kBAAkB,GAAG,CAAC;QAChE,KAAK,OAAO,CAAC,CAAC,OAAO,KAAC,SAAS,IAAC,SAAS,EAAC,kBAAkB,GAAG,CAAC;QAChE,KAAK,OAAO,CAAC,CAAC,OAAO,KAAC,OAAO,IAAC,SAAS,EAAC,kBAAkB,GAAG,CAAC;QAC9D,OAAO,CAAC,CAAC,OAAO,KAAC,QAAQ,IAAC,SAAS,EAAC,kBAAkB,GAAG,CAAC;IAC5D,CAAC;AACH,CAAC;AA0BD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,WAAW,GAAG,mBAAmB,GAClC,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAc,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAsB,IAAI,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,MAAM,UAAU,GAAG,sBAAsB,CAAC;QACxC,WAAW,EAAE,GAA2C;QACxD,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,KAAK,CAAC,aAAa,EAAE,SAAS,IAAI,EAAE;QAC/C,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,OAAO;QACrC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM;QACnC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,OAAO;QACrC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,cAAc;QACnD,gBAAgB,EAAE,KAAK,CAAC,aAAa,EAAE,gBAAgB;KACxD,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,IAAI,cAAc,CAAC,CAAC;IAElE,+DAA+D;IAC/D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,OAAgC,EAAE,EAAE;QAChF,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACnC,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE/B,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnB,IAAI,CAAC;YACH,IAAI,WAAW,IAAI,gBAAgB,IAAI,cAAc,EAAE,CAAC;gBACtD,6EAA6E;gBAC7E,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC;gBACrB,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC;gBAC5D,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClF,MAAM,aAAa,GAAG,aAAa,CAAC,mBAAmB,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBAEhG,MAAM,YAAY,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;gBAC5D,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBAEhD,MAAM,aAAa,CAAC;oBAClB,OAAO;oBACP,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,aAAa,EAAE;oBAC9D,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;iBAC7C,CAAC,CAAC;gBAEH,MAAM,cAAc,CAAC;oBACnB,IAAI,EAAE,UAAU,CAAC,kBAAkB,EAAE;oBACrC,UAAU,EAAE;wBACV,YAAY,EAAE,IAAI;wBAClB,WAAW;wBACX,gBAAgB,EAAE,YAAY,CAAC,IAAI;wBACnC,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,YAAY,CAAC,IAAI;qBACxB;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,kBAAkB;gBAClB,MAAM,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAChD,CAAC;YAED,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YAC9C,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,cAAc,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,QAAQ,IAAI,SAAS,CAAC;IAEzC,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAE3B,WAAW,IAAI,CAAC,SAAS,IAAI,CAC5B,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,kBAAkB,IAAC,IAAI,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAI,EAC5D,eAAM,SAAS,EAAC,yBAAyB,YAAE,WAAW,CAAC,IAAI,GAAQ,EACnE,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,kBAAkB,EAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAEnC,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,GAAG,GAClB,IACL,CACP,EAGA,KAAK,CAAC,aAAa,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAC/C,cAAK,SAAS,EAAC,UAAU,YACvB,cAAK,SAAS,EAAC,uCAAuC,YACpD,KAAC,mBAAmB,IAClB,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAChD,GACE,GACF,CACP,EAGD,eAAK,SAAS,EAAC,sBAAsB,aACnC,KAAC,QAAQ,IACP,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACxC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,EAAE,CAAC,0BAA0B,CAAC,EACzC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;4BACf,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;gCAAE,OAAO;4BACxC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gCACrC,CAAC,CAAC,cAAc,EAAE,CAAC;gCACnB,IAAI,EAAE,CAAC;4BACT,CAAC;wBACH,CAAC,GACD,EACF,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,EACtD,OAAO,EAAE,IAAI,YAEZ,SAAS,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,SAAS,EAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,MAAM,GAC3D,IACL,EAGL,aAAa,IAAI,gBAAgB,IAAI,CACpC,cAAK,SAAS,EAAC,MAAM,YACnB,KAAC,UAAU,IACT,IAAI,EAAE,gBAAgB,CAAC,cAAc,EACrC,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAC,aAAa,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,EACnC,SAAS,EAAC,QAAQ,GAClB,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageItemDefault.d.ts","sourceRoot":"","sources":["../../src/ui/MessageItemDefault.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAkB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAiErF,MAAM,MAAM,uBAAuB,GAAG;IACpC,CAAC,EAAE,aAAa,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAG9B,cAAc,CAAC,EAAE,OAAO,CAAC;IAGzB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CAEjE,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CA6DhE"}
1
+ {"version":3,"file":"MessageItemDefault.d.ts","sourceRoot":"","sources":["../../src/ui/MessageItemDefault.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAkB,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAkErF,MAAM,MAAM,uBAAuB,GAAG;IACpC,CAAC,EAAE,aAAa,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAG9B,cAAc,CAAC,EAAE,OAAO,CAAC;IAGzB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CAEjE,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAiEhE"}
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { MessageText } from "../mentions/MessageText.js";
3
4
  import { cn } from "@ttt-productions/ui-core";
4
5
  import { MediaViewer } from "@ttt-productions/media-viewer/react";
5
6
  import { FileText } from "lucide-react";
@@ -26,7 +27,7 @@ function AttachmentView({ att }) {
26
27
  // ============================================
27
28
  function ReplyQuote({ replyTo }) {
28
29
  const replyName = useResolvedSenderName(replyTo.senderId);
29
- return (_jsxs("div", { className: "chat-reply-quote", children: [_jsx("span", { className: "chat-reply-quote-sender", children: replyName }), _jsx("span", { className: "chat-reply-quote-preview", children: replyTo.messagePreview })] }));
30
+ return (_jsxs("div", { className: "chat-reply-quote", children: [_jsx("span", { className: "chat-reply-quote-sender", children: replyName }), _jsx("span", { className: "chat-reply-quote-preview", children: _jsx(MessageText, { text: replyTo.messagePreview }) })] }));
30
31
  }
31
32
  // ============================================
32
33
  // System message
@@ -45,6 +46,6 @@ export function MessageItemDefault(props) {
45
46
  return (_jsxs("div", { className: cn("flex flex-col w-fit max-w-[85%]", mine ? "ml-auto items-end" : "mr-auto items-start", isContinuation ? "chat-continuation-gap" : "chat-group-gap"), children: [_jsxs("div", { className: cn("chat-bubble", mine ? "chat-bubble--mine" : "chat-bubble--theirs"), children: [!isContinuation && (_jsxs("div", { className: "flex items-center gap-2 text-xs opacity-80 mb-1", children: [_jsx("span", { className: cn("font-medium", onSenderClick && "cursor-pointer hover:underline"), onClick: onSenderClick ? () => onSenderClick(m.senderId, senderName) : undefined, role: onSenderClick ? "button" : undefined, tabIndex: onSenderClick ? 0 : undefined, onKeyDown: onSenderClick ? (e) => {
46
47
  if (e.key === "Enter" || e.key === " ")
47
48
  onSenderClick(m.senderId, senderName);
48
- } : undefined, children: senderName }), _jsx("span", { children: "\u00B7" }), _jsx("span", { children: new Date(m.createdAt).toLocaleTimeString([], { hour: "numeric", minute: "2-digit" }) })] })), m.replyTo && _jsx(ReplyQuote, { replyTo: m.replyTo }), m.text && _jsx("p", { className: "text-sm whitespace-pre-wrap", children: m.text }), m.attachment && (_jsx("div", { className: "mt-2", children: _jsx(AttachmentView, { att: m.attachment }) }))] }), !isContinuation && (_jsx("div", { className: "mt-1", children: _jsx(MessageActions, { messageId: m.messageId, isAdmin: isAdmin, handlers: handlers }) }))] }));
49
+ } : undefined, children: senderName }), _jsx("span", { children: "\u00B7" }), _jsx("span", { children: new Date(m.createdAt).toLocaleTimeString([], { hour: "numeric", minute: "2-digit" }) })] })), m.replyTo && _jsx(ReplyQuote, { replyTo: m.replyTo }), m.text && (_jsx("p", { className: "text-sm whitespace-pre-wrap", children: _jsx(MessageText, { text: m.text }) })), m.attachment && (_jsx("div", { className: "mt-2", children: _jsx(AttachmentView, { att: m.attachment }) }))] }), !isContinuation && (_jsx("div", { className: "mt-1", children: _jsx(MessageActions, { messageId: m.messageId, isAdmin: isAdmin, handlers: handlers }) }))] }));
49
50
  }
50
51
  //# sourceMappingURL=MessageItemDefault.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageItemDefault.js","sourceRoot":"","sources":["../../src/ui/MessageItemDefault.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageItemDefault.js","sourceRoot":"","sources":["../../src/ui/MessageItemDefault.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttt-productions/chat-core",
3
- "version": "0.4.22",
3
+ "version": "0.5.0",
4
4
  "description": "Shared Firestore chat core (realtime newest window + infinite older pagination) for TTT Productions apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,6 +27,10 @@
27
27
  "types": "./dist/react/index.d.ts",
28
28
  "default": "./dist/react/index.js"
29
29
  },
30
+ "./schemas": {
31
+ "types": "./dist/schemas/index.d.ts",
32
+ "default": "./dist/schemas/index.js"
33
+ },
30
34
  "./styles": "./src/styles/chat.css"
31
35
  },
32
36
  "scripts": {
@@ -42,14 +46,14 @@
42
46
  "react-dom": ">=19.0.0"
43
47
  },
44
48
  "dependencies": {
45
- "@ttt-productions/ttt-core": "*",
49
+ "@ttt-productions/chat-schemas": "*",
46
50
  "@ttt-productions/ui-core": "*",
47
51
  "@ttt-productions/firebase-helpers": "*",
48
52
  "@ttt-productions/mobile-core": "*",
49
53
  "@ttt-productions/file-input": "*",
50
- "@ttt-productions/upload-core": "*",
54
+ "@ttt-productions/upload-ui": "*",
51
55
  "@ttt-productions/media-viewer": "*",
52
- "@ttt-productions/media-contracts": "*"
56
+ "@ttt-productions/media-schemas": "*"
53
57
  },
54
58
  "devDependencies": {
55
59
  "@types/react": "^19.0.0",
@@ -136,4 +136,18 @@
136
136
  display: flex;
137
137
  align-items: center;
138
138
  gap: 0.375rem;
139
+ }
140
+
141
+ /* Mention system — default chip styling. Consumers override via custom
142
+ renderMention or by targeting .chat-mention-chip directly. */
143
+ .chat-mention-chip {
144
+ color: hsl(var(--primary));
145
+ font-weight: 500;
146
+ cursor: pointer;
147
+ }
148
+ .chat-mention-chip:hover {
149
+ text-decoration: underline;
150
+ }
151
+ .chat-mention-autocomplete {
152
+ /* container styles applied by ui-core via Tailwind classes in the component */
139
153
  }