@assistant-ui/react 0.12.23 → 0.12.25

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 (127) hide show
  1. package/dist/client/ExternalThread.d.ts.map +1 -1
  2. package/dist/client/ExternalThread.js +1 -0
  3. package/dist/client/ExternalThread.js.map +1 -1
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/internal.d.ts +1 -0
  9. package/dist/internal.d.ts.map +1 -1
  10. package/dist/internal.js +2 -0
  11. package/dist/internal.js.map +1 -1
  12. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  13. package/dist/primitives/composer/ComposerInput.js +27 -12
  14. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  15. package/dist/primitives/composer/ComposerInputPluginContext.d.ts +31 -0
  16. package/dist/primitives/composer/ComposerInputPluginContext.d.ts.map +1 -0
  17. package/dist/primitives/composer/ComposerInputPluginContext.js +32 -0
  18. package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -0
  19. package/dist/primitives/composer/mention/ComposerMentionContext.d.ts +4 -2
  20. package/dist/primitives/composer/mention/ComposerMentionContext.d.ts.map +1 -1
  21. package/dist/primitives/composer/mention/ComposerMentionContext.js +21 -13
  22. package/dist/primitives/composer/mention/ComposerMentionContext.js.map +1 -1
  23. package/dist/primitives/composer/mention/index.d.ts +4 -4
  24. package/dist/primitives/composer/mention/index.d.ts.map +1 -1
  25. package/dist/primitives/composer/mention/index.js +6 -4
  26. package/dist/primitives/composer/mention/index.js.map +1 -1
  27. package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.d.ts +36 -0
  28. package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.d.ts.map +1 -0
  29. package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.js +36 -0
  30. package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.js.map +1 -0
  31. package/dist/primitives/composer/slash-command/index.d.ts +2 -0
  32. package/dist/primitives/composer/slash-command/index.d.ts.map +1 -0
  33. package/dist/primitives/composer/slash-command/index.js +2 -0
  34. package/dist/primitives/composer/slash-command/index.js.map +1 -0
  35. package/dist/primitives/composer/{mention/ComposerMentionBack.d.ts → trigger/TriggerPopoverBack.d.ts} +3 -10
  36. package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts.map +1 -0
  37. package/dist/primitives/composer/trigger/TriggerPopoverBack.js +19 -0
  38. package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -0
  39. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts +38 -0
  40. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -0
  41. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +35 -0
  42. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -0
  43. package/dist/primitives/composer/trigger/TriggerPopoverContext.d.ts +37 -0
  44. package/dist/primitives/composer/trigger/TriggerPopoverContext.d.ts.map +1 -0
  45. package/dist/primitives/composer/trigger/TriggerPopoverContext.js +70 -0
  46. package/dist/primitives/composer/trigger/TriggerPopoverContext.js.map +1 -0
  47. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts +40 -0
  48. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -0
  49. package/dist/primitives/composer/trigger/TriggerPopoverItems.js +35 -0
  50. package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -0
  51. package/dist/primitives/composer/trigger/TriggerPopoverPopover.d.ts +26 -0
  52. package/dist/primitives/composer/trigger/TriggerPopoverPopover.d.ts.map +1 -0
  53. package/dist/primitives/composer/trigger/TriggerPopoverPopover.js +28 -0
  54. package/dist/primitives/composer/trigger/TriggerPopoverPopover.js.map +1 -0
  55. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +53 -0
  56. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -0
  57. package/dist/primitives/composer/{mention/MentionResource.js → trigger/TriggerPopoverResource.js} +50 -25
  58. package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -0
  59. package/dist/primitives/composer/trigger/detectTrigger.d.ts +2 -0
  60. package/dist/primitives/composer/trigger/detectTrigger.d.ts.map +1 -0
  61. package/dist/primitives/composer/{mention/detectMentionTrigger.js → trigger/detectTrigger.js} +4 -4
  62. package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -0
  63. package/dist/primitives/composer/trigger/index.d.ts +7 -0
  64. package/dist/primitives/composer/trigger/index.d.ts.map +1 -0
  65. package/dist/primitives/composer/trigger/index.js +6 -0
  66. package/dist/primitives/composer/trigger/index.js.map +1 -0
  67. package/dist/primitives/composer.d.ts +10 -0
  68. package/dist/primitives/composer.d.ts.map +1 -1
  69. package/dist/primitives/composer.js +14 -0
  70. package/dist/primitives/composer.js.map +1 -1
  71. package/dist/primitives/message/MessageRoot.d.ts +25 -3
  72. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  73. package/dist/primitives/message/MessageRoot.js +2 -2
  74. package/dist/primitives/message/MessageRoot.js.map +1 -1
  75. package/dist/primitives/thread/ThreadViewportSlack.d.ts +2 -2
  76. package/dist/primitives/thread/ThreadViewportSlack.d.ts.map +1 -1
  77. package/dist/unstable/useSlashCommandAdapter.d.ts +34 -0
  78. package/dist/unstable/useSlashCommandAdapter.d.ts.map +1 -0
  79. package/dist/unstable/useSlashCommandAdapter.js +50 -0
  80. package/dist/unstable/useSlashCommandAdapter.js.map +1 -0
  81. package/package.json +12 -12
  82. package/src/client/ExternalThread.ts +1 -0
  83. package/src/index.ts +14 -0
  84. package/src/internal.ts +3 -0
  85. package/src/primitives/composer/ComposerInput.tsx +25 -18
  86. package/src/primitives/composer/ComposerInputPluginContext.tsx +100 -0
  87. package/src/primitives/composer/mention/ComposerMentionContext.tsx +56 -22
  88. package/src/primitives/composer/mention/index.ts +11 -8
  89. package/src/primitives/composer/slash-command/ComposerSlashCommandRoot.tsx +76 -0
  90. package/src/primitives/composer/slash-command/index.ts +1 -0
  91. package/src/primitives/composer/trigger/TriggerPopoverBack.tsx +40 -0
  92. package/src/primitives/composer/{mention/ComposerMentionCategories.tsx → trigger/TriggerPopoverCategories.tsx} +33 -28
  93. package/src/primitives/composer/trigger/TriggerPopoverContext.tsx +129 -0
  94. package/src/primitives/composer/{mention/ComposerMentionItems.tsx → trigger/TriggerPopoverItems.tsx} +34 -29
  95. package/src/primitives/composer/trigger/TriggerPopoverPopover.tsx +51 -0
  96. package/src/primitives/composer/{mention/MentionResource.ts → trigger/TriggerPopoverResource.ts} +146 -98
  97. package/src/primitives/composer/{mention/detectMentionTrigger.test.ts → trigger/detectTrigger.test.ts} +15 -15
  98. package/src/primitives/composer/{mention/detectMentionTrigger.ts → trigger/detectTrigger.ts} +3 -3
  99. package/src/primitives/composer/trigger/index.ts +16 -0
  100. package/src/primitives/composer.ts +16 -0
  101. package/src/primitives/message/MessageRoot.tsx +18 -4
  102. package/src/primitives/thread/ThreadViewportSlack.tsx +2 -2
  103. package/src/tests/BaseComposerRuntimeCore.test.ts +33 -1
  104. package/src/unstable/useSlashCommandAdapter.ts +83 -0
  105. package/dist/primitives/composer/mention/ComposerMentionBack.d.ts.map +0 -1
  106. package/dist/primitives/composer/mention/ComposerMentionBack.js +0 -28
  107. package/dist/primitives/composer/mention/ComposerMentionBack.js.map +0 -1
  108. package/dist/primitives/composer/mention/ComposerMentionCategories.d.ts +0 -46
  109. package/dist/primitives/composer/mention/ComposerMentionCategories.d.ts.map +0 -1
  110. package/dist/primitives/composer/mention/ComposerMentionCategories.js +0 -32
  111. package/dist/primitives/composer/mention/ComposerMentionCategories.js.map +0 -1
  112. package/dist/primitives/composer/mention/ComposerMentionItems.d.ts +0 -50
  113. package/dist/primitives/composer/mention/ComposerMentionItems.d.ts.map +0 -1
  114. package/dist/primitives/composer/mention/ComposerMentionItems.js +0 -30
  115. package/dist/primitives/composer/mention/ComposerMentionItems.js.map +0 -1
  116. package/dist/primitives/composer/mention/ComposerMentionPopover.d.ts +0 -26
  117. package/dist/primitives/composer/mention/ComposerMentionPopover.d.ts.map +0 -1
  118. package/dist/primitives/composer/mention/ComposerMentionPopover.js +0 -28
  119. package/dist/primitives/composer/mention/ComposerMentionPopover.js.map +0 -1
  120. package/dist/primitives/composer/mention/MentionResource.d.ts +0 -39
  121. package/dist/primitives/composer/mention/MentionResource.d.ts.map +0 -1
  122. package/dist/primitives/composer/mention/MentionResource.js.map +0 -1
  123. package/dist/primitives/composer/mention/detectMentionTrigger.d.ts +0 -2
  124. package/dist/primitives/composer/mention/detectMentionTrigger.d.ts.map +0 -1
  125. package/dist/primitives/composer/mention/detectMentionTrigger.js.map +0 -1
  126. package/src/primitives/composer/mention/ComposerMentionBack.tsx +0 -55
  127. package/src/primitives/composer/mention/ComposerMentionPopover.tsx +0 -52
@@ -1,16 +1,24 @@
1
1
  import { resource, tapState, tapMemo, tapEffectEvent, tapEffect, tapRef, } from "@assistant-ui/tap";
2
- import { detectMentionTrigger } from "./detectMentionTrigger.js";
2
+ import { detectTrigger } from "./detectTrigger.js";
3
+ function isTriggerItem(x) {
4
+ return "type" in x;
5
+ }
6
+ function matchesQuery(item, lower) {
7
+ return (item.id.toLowerCase().includes(lower) ||
8
+ item.label.toLowerCase().includes(lower) ||
9
+ (item.description?.toLowerCase().includes(lower) ?? false));
10
+ }
3
11
  // =============================================================================
4
12
  // Resource
5
13
  // =============================================================================
6
- export const MentionResource = resource(({ adapter, text, triggerChar, formatter, aui, }) => {
14
+ export const TriggerPopoverResource = resource(({ adapter, text, triggerChar, onSelect, aui, popoverId, }) => {
7
15
  // -------------------------------------------------------------------------
8
16
  // Cursor tracking + trigger detection
9
17
  // -------------------------------------------------------------------------
10
18
  const [cursorPosition, setCursorPosition] = tapState(text.length);
11
19
  const trigger = tapMemo(() => {
12
20
  const pos = Math.min(cursorPosition, text.length);
13
- return detectMentionTrigger(text, triggerChar, pos);
21
+ return detectTrigger(text, triggerChar, pos);
14
22
  }, [cursorPosition, text, triggerChar]);
15
23
  const open = trigger !== null && adapter !== undefined;
16
24
  const query = trigger?.query ?? "";
@@ -38,24 +46,25 @@ export const MentionResource = resource(({ adapter, text, triggerChar, formatter
38
46
  return adapter.categoryItems(effectiveActiveCategoryId);
39
47
  }, [effectiveActiveCategoryId, adapter]);
40
48
  const searchResults = tapMemo(() => {
41
- if (!open || !adapter || !query || effectiveActiveCategoryId)
49
+ if (!open || !adapter || effectiveActiveCategoryId)
50
+ return null;
51
+ // If categories exist and query is empty, show categories first (not search)
52
+ if (!query && categories.length > 0)
42
53
  return null;
43
54
  if (adapter.search)
44
55
  return adapter.search(query);
45
- const cats = adapter.categories();
56
+ // Fallback: search all categories manually (reuse already-computed list)
46
57
  const all = [];
47
58
  const lower = query.toLowerCase();
48
- for (const cat of cats) {
59
+ for (const cat of categories) {
49
60
  for (const item of adapter.categoryItems(cat.id)) {
50
- if (item.id.toLowerCase().includes(lower) ||
51
- item.label.toLowerCase().includes(lower) ||
52
- item.description?.toLowerCase().includes(lower)) {
61
+ if (matchesQuery(item, lower)) {
53
62
  all.push(item);
54
63
  }
55
64
  }
56
65
  }
57
66
  return all;
58
- }, [open, adapter, query, effectiveActiveCategoryId]);
67
+ }, [open, adapter, query, effectiveActiveCategoryId, categories]);
59
68
  const isSearchMode = searchResults !== null;
60
69
  // -------------------------------------------------------------------------
61
70
  // Filtering
@@ -74,9 +83,7 @@ export const MentionResource = resource(({ adapter, text, triggerChar, formatter
74
83
  if (!query)
75
84
  return allItems;
76
85
  const lower = query.toLowerCase();
77
- return allItems.filter((item) => item.id.toLowerCase().includes(lower) ||
78
- item.label.toLowerCase().includes(lower) ||
79
- item.description?.toLowerCase().includes(lower));
86
+ return allItems.filter((item) => matchesQuery(item, lower));
80
87
  }, [allItems, query, isSearchMode, searchResults]);
81
88
  // -------------------------------------------------------------------------
82
89
  // Keyboard navigation
@@ -101,7 +108,7 @@ export const MentionResource = resource(({ adapter, text, triggerChar, formatter
101
108
  setHighlightedIndex(0);
102
109
  }, [navigableList]);
103
110
  // -------------------------------------------------------------------------
104
- // Lexical select-item override
111
+ // Select-item override (for Lexical integration)
105
112
  // -------------------------------------------------------------------------
106
113
  const selectItemOverrideRef = tapRef(null);
107
114
  const registerSelectItemOverride = tapEffectEvent((fn) => {
@@ -126,19 +133,31 @@ export const MentionResource = resource(({ adapter, text, triggerChar, formatter
126
133
  const selectItem = tapEffectEvent((item) => {
127
134
  if (!trigger)
128
135
  return;
129
- // Try the Lexical override first
136
+ // Try the override first (e.g. Lexical MentionPlugin)
130
137
  if (selectItemOverrideRef.current?.(item)) {
131
138
  setActiveCategoryId(null);
132
139
  setHighlightedIndex(0);
133
140
  return;
134
141
  }
135
- // Default: text-based replacement (textarea path)
136
- const currentText = aui.composer().getState().text;
137
- const before = currentText.slice(0, trigger.offset);
138
- const after = currentText.slice(trigger.offset + triggerChar.length + trigger.query.length);
139
- const directive = formatter.serialize(item);
140
- const newText = before + directive + (after.startsWith(" ") ? after : ` ${after}`);
141
- aui.composer().setText(newText);
142
+ // Behavior depends on the onSelect configuration
143
+ if (onSelect.type === "insertDirective") {
144
+ // Insert directive text (mention path)
145
+ const currentText = aui.composer().getState().text;
146
+ const before = currentText.slice(0, trigger.offset);
147
+ const after = currentText.slice(trigger.offset + triggerChar.length + trigger.query.length);
148
+ const directive = onSelect.formatter.serialize(item);
149
+ const newText = before + directive + (after.startsWith(" ") ? after : ` ${after}`);
150
+ aui.composer().setText(newText);
151
+ }
152
+ else if (onSelect.type === "action") {
153
+ // Execute action + clear trigger text (slash command path)
154
+ const currentText = aui.composer().getState().text;
155
+ const before = currentText.slice(0, trigger.offset);
156
+ const after = currentText.slice(trigger.offset + triggerChar.length + trigger.query.length);
157
+ const newText = before + after.trimStart();
158
+ aui.composer().setText(newText);
159
+ onSelect.handler(item);
160
+ }
142
161
  setActiveCategoryId(null);
143
162
  setHighlightedIndex(0);
144
163
  });
@@ -181,7 +200,7 @@ export const MentionResource = resource(({ adapter, text, triggerChar, formatter
181
200
  const item = navigableList[highlightedIndex];
182
201
  if (!item)
183
202
  return true;
184
- if (isSearchMode || effectiveActiveCategoryId) {
203
+ if (isTriggerItem(item)) {
185
204
  selectItem(item);
186
205
  }
187
206
  else {
@@ -209,6 +228,11 @@ export const MentionResource = resource(({ adapter, text, triggerChar, formatter
209
228
  // -------------------------------------------------------------------------
210
229
  // Output
211
230
  // -------------------------------------------------------------------------
231
+ // Compute highlighted item ID for aria-activedescendant
232
+ const highlightedEntry = navigableList[highlightedIndex];
233
+ const highlightedItemId = open && highlightedEntry
234
+ ? `${popoverId}-option-${highlightedEntry.id}`
235
+ : undefined;
212
236
  return {
213
237
  open,
214
238
  query,
@@ -217,7 +241,8 @@ export const MentionResource = resource(({ adapter, text, triggerChar, formatter
217
241
  items: filteredItems,
218
242
  highlightedIndex,
219
243
  isSearchMode,
220
- formatter,
244
+ popoverId,
245
+ highlightedItemId,
221
246
  selectCategory,
222
247
  goBack,
223
248
  selectItem,
@@ -227,4 +252,4 @@ export const MentionResource = resource(({ adapter, text, triggerChar, formatter
227
252
  registerSelectItemOverride,
228
253
  };
229
254
  });
230
- //# sourceMappingURL=MentionResource.js.map
255
+ //# sourceMappingURL=TriggerPopoverResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TriggerPopoverResource.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverResource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,cAAc,EACd,SAAS,EACT,MAAM,GACP,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EAAE,aAAa,EAAE,2BAAwB;AAEhD,SAAS,aAAa,CACpB,CAAkD;IAElD,OAAO,MAAM,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,IAA0B,EAAE,KAAa;IAC7D,OAAO,CACL,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACxC,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAC3D,CAAC;AACJ,CAAC;AAkDD,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAC5C,CAAC,EACC,OAAO,EACP,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,GAAG,EACH,SAAS,GASV,EAAgC,EAAE;IACjC,4EAA4E;IAC5E,sCAAsC;IACtC,4EAA4E;IAE5E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAExC,MAAM,IAAI,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC;IACvD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;IAEnC,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAE5E,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CACtD,IAAI,CACL,CAAC;IAEF,4BAA4B;IAC5B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI;YAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,UAAU,GAAG,OAAO,CAAsC,GAAG,EAAE;QACnE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpB,MAAM,yBAAyB,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjE,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,MAAM,QAAQ,GAAG,OAAO,CAAkC,GAAG,EAAE;QAC7D,IAAI,CAAC,yBAAyB,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;IAC1D,CAAC,EAAE,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzC,MAAM,aAAa,GAAG,OAAO,CAE3B,GAAG,EAAE;QACL,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,yBAAyB;YAAE,OAAO,IAAI,CAAC;QAChE,6EAA6E;QAC7E,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACjD,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEjD,yEAAyE;QACzE,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjD,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,UAAU,CAAC,CAAC,CAAC;IAElE,MAAM,YAAY,GAAG,aAAa,KAAK,IAAI,CAAC;IAE5C,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAE5E,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE;QACtC,IAAI,YAAY;YAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,UAAU,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAC/B,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CACxC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAEtC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,YAAY;YAAE,OAAO,aAAa,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO,QAAQ,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAEnD,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAE5E,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,YAAY;YAAE,OAAO,aAAa,IAAI,EAAE,CAAC;QAC7C,IAAI,yBAAyB;YAAE,OAAO,aAAa,CAAC;QACpD,OAAO,kBAAkB,CAAC;IAC5B,CAAC,EAAE;QACD,YAAY;QACZ,aAAa;QACb,yBAAyB;QACzB,aAAa;QACb,kBAAkB;KACnB,CAAC,CAAC;IAEH,oCAAoC;IACpC,4FAA4F;IAC5F,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,4EAA4E;IAC5E,iDAAiD;IACjD,4EAA4E;IAE5E,MAAM,qBAAqB,GAAG,MAAM,CAA4B,IAAI,CAAC,CAAC;IAEtE,MAAM,0BAA0B,GAAG,cAAc,CAC/C,CAAC,EAAsB,EAAE,EAAE;QACzB,qBAAqB,CAAC,OAAO,GAAG,EAAE,CAAC;QACnC,OAAO,GAAG,EAAE;YACV,IAAI,qBAAqB,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;gBACzC,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,4EAA4E;IAC5E,sCAAsC;IACtC,4EAA4E;IAE5E,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,UAAkB,EAAE,EAAE;QAC3D,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE;QACjC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,IAA0B,EAAE,EAAE;QAC/D,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,sDAAsD;QACtD,IAAI,qBAAqB,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC1B,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,iDAAiD;QACjD,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACxC,uCAAuC;YACvC,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;YACnD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAC7B,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAC3D,CAAC;YACF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,OAAO,GACX,MAAM,GAAG,SAAS,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;YAErE,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,2DAA2D;YAC3D,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;YACnD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAC7B,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAC3D,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAC3C,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEhC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE;QAChC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACvB,kEAAkE;QAClE,IAAI,OAAO,EAAE,CAAC;YACZ,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,cAAc,CAClC,CAAC,CAAyB,EAAW,EAAE;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QAExB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC3B,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;oBACjC,IAAI,GAAG,KAAK,CAAC;wBAAE,OAAO,CAAC,CAAC;oBACxB,OAAO,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC3B,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;oBACjC,IAAI,GAAG,KAAK,CAAC;wBAAE,OAAO,CAAC,CAAC;oBACxB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,CAAC,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBAC7C,IAAI,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC;gBAEvB,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,UAAU,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1B,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,KAAK,EAAE,CAAC;gBACR,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,IAAI,yBAAyB,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,MAAM,EAAE,CAAC;oBACT,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,4EAA4E;IAC5E,SAAS;IACT,4EAA4E;IAE5E,wDAAwD;IACxD,MAAM,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,iBAAiB,GACrB,IAAI,IAAI,gBAAgB;QACtB,CAAC,CAAC,GAAG,SAAS,WAAW,gBAAgB,CAAC,EAAE,EAAE;QAC9C,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO;QACL,IAAI;QACJ,KAAK;QACL,gBAAgB,EAAE,yBAAyB;QAC3C,UAAU,EAAE,kBAAkB;QAC9B,KAAK,EAAE,aAAa;QACpB,gBAAgB;QAChB,YAAY;QACZ,SAAS;QACT,iBAAiB;QACjB,cAAc;QACd,MAAM;QACN,UAAU;QACV,KAAK;QACL,aAAa;QACb,iBAAiB;QACjB,0BAA0B;KAC3B,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=detectTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectTrigger.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/detectTrigger.ts"],"names":[],"mappings":""}
@@ -1,10 +1,10 @@
1
1
  const WHITESPACE_RE = /\s/;
2
2
  /**
3
- * Detect a mention trigger in text relative to the cursor position.
3
+ * Detect a trigger character in text relative to the cursor position.
4
4
  *
5
- * @internal Exported for testing and for the MentionResource.
5
+ * @internal Exported for testing and for trigger resources.
6
6
  */
7
- export function detectMentionTrigger(text, triggerChar, cursorPosition) {
7
+ export function detectTrigger(text, triggerChar, cursorPosition) {
8
8
  // Only consider text up to the cursor
9
9
  const textUpToCursor = text.slice(0, cursorPosition);
10
10
  // Search backwards from cursor for the trigger character.
@@ -23,4 +23,4 @@ export function detectMentionTrigger(text, triggerChar, cursorPosition) {
23
23
  }
24
24
  return null;
25
25
  }
26
- //# sourceMappingURL=detectMentionTrigger.js.map
26
+ //# sourceMappingURL=detectTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectTrigger.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/detectTrigger.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,WAAmB,EACnB,cAAsB;IAKtB,sCAAsC;IACtC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAErD,0DAA0D;IAC1D,+EAA+E;IAC/E,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAE,CAAC;QAEhC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAE1C,IAAI,cAAc,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9C,gEAAgE;YAChE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;gBAAE,SAAS;YAEnE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { ComposerPrimitiveTriggerPopoverRoot, useTriggerPopoverContext, useTriggerPopoverContextOptional, } from "./TriggerPopoverContext.js";
2
+ export { ComposerPrimitiveTriggerPopoverPopover } from "./TriggerPopoverPopover.js";
3
+ export { ComposerPrimitiveTriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem, } from "./TriggerPopoverCategories.js";
4
+ export { ComposerPrimitiveTriggerPopoverItems, ComposerPrimitiveTriggerPopoverItem, } from "./TriggerPopoverItems.js";
5
+ export { ComposerPrimitiveTriggerPopoverBack } from "./TriggerPopoverBack.js";
6
+ export type { OnSelectBehavior } from "./TriggerPopoverResource.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,wBAAwB,EACxB,gCAAgC,GACjC,mCAAgC;AACjC,OAAO,EAAE,sCAAsC,EAAE,mCAAgC;AACjF,OAAO,EACL,yCAAyC,EACzC,2CAA2C,GAC5C,sCAAmC;AACpC,OAAO,EACL,oCAAoC,EACpC,mCAAmC,GACpC,iCAA8B;AAC/B,OAAO,EAAE,mCAAmC,EAAE,gCAA6B;AAC3E,YAAY,EAAE,gBAAgB,EAAE,oCAAiC"}
@@ -0,0 +1,6 @@
1
+ export { ComposerPrimitiveTriggerPopoverRoot, useTriggerPopoverContext, useTriggerPopoverContextOptional, } from "./TriggerPopoverContext.js";
2
+ export { ComposerPrimitiveTriggerPopoverPopover } from "./TriggerPopoverPopover.js";
3
+ export { ComposerPrimitiveTriggerPopoverCategories, ComposerPrimitiveTriggerPopoverCategoryItem, } from "./TriggerPopoverCategories.js";
4
+ export { ComposerPrimitiveTriggerPopoverItems, ComposerPrimitiveTriggerPopoverItem, } from "./TriggerPopoverItems.js";
5
+ export { ComposerPrimitiveTriggerPopoverBack } from "./TriggerPopoverBack.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,wBAAwB,EACxB,gCAAgC,GACjC,mCAAgC;AACjC,OAAO,EAAE,sCAAsC,EAAE,mCAAgC;AACjF,OAAO,EACL,yCAAyC,EACzC,2CAA2C,GAC5C,sCAAmC;AACpC,OAAO,EACL,oCAAoC,EACpC,mCAAmC,GACpC,iCAA8B;AAC/B,OAAO,EAAE,mCAAmC,EAAE,gCAA6B"}
@@ -23,4 +23,14 @@ export { ComposerPrimitiveMentionItem as Unstable_MentionItem } from "./composer
23
23
  export { ComposerPrimitiveMentionBack as Unstable_MentionBack } from "./composer/mention/index.js";
24
24
  export { useMentionContext as unstable_useMentionContext } from "./composer/mention/index.js";
25
25
  export { useMentionContextOptional as unstable_useMentionContextOptional } from "./composer/mention/index.js";
26
+ export { ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot } from "./composer/trigger/index.js";
27
+ export { ComposerPrimitiveTriggerPopoverPopover as Unstable_TriggerPopoverPopover } from "./composer/trigger/index.js";
28
+ export { ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories } from "./composer/trigger/index.js";
29
+ export { ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem } from "./composer/trigger/index.js";
30
+ export { ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems } from "./composer/trigger/index.js";
31
+ export { ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem } from "./composer/trigger/index.js";
32
+ export { ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack } from "./composer/trigger/index.js";
33
+ export { useTriggerPopoverContext as unstable_useTriggerPopoverContext } from "./composer/trigger/index.js";
34
+ export { useTriggerPopoverContextOptional as unstable_useTriggerPopoverContextOptional } from "./composer/trigger/index.js";
35
+ export { ComposerPrimitiveSlashCommandRoot as Unstable_SlashCommandRoot } from "./composer/slash-command/index.js";
26
36
  //# sourceMappingURL=composer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,uBAAuB,IAAI,MAAM,EAAE,qCAAkC;AAC9E,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,4BAA4B,IAAI,WAAW,EAAE,0CAAuC;AAC7F,OAAO,EAAE,kCAAkC,IAAI,iBAAiB,EAAE,0CAAuC;AACzG,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,iDAA8C;AAClH,OAAO,EAAE,wBAAwB,IAAI,OAAO,EAAE,sCAAmC;AACjF,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,oCAAoC,IAAI,mBAAmB,EAAE,kDAA+C;AACrH,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,iCAA8B;AAClE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,0BAA0B,IAAI,SAAS,EAAE,oCAAiC;AACnF,OAAO,EAAE,6BAA6B,IAAI,YAAY,EAAE,oCAAiC;AACzF,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,+BAA+B,IAAI,uBAAuB,EAAE,oCAA2B;AAChG,OAAO,EAAE,kCAAkC,IAAI,0BAA0B,EAAE,oCAA2B;AACtG,OAAO,EAAE,oCAAoC,IAAI,4BAA4B,EAAE,oCAA2B;AAC1G,OAAO,EAAE,6BAA6B,IAAI,qBAAqB,EAAE,oCAA2B;AAC5F,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,oCAA2B;AACrF,OAAO,EAAE,yBAAyB,IAAI,kCAAkC,EAAE,oCAA2B"}
1
+ {"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,uBAAuB,IAAI,MAAM,EAAE,qCAAkC;AAC9E,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,4BAA4B,IAAI,WAAW,EAAE,0CAAuC;AAC7F,OAAO,EAAE,kCAAkC,IAAI,iBAAiB,EAAE,0CAAuC;AACzG,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,iDAA8C;AAClH,OAAO,EAAE,wBAAwB,IAAI,OAAO,EAAE,sCAAmC;AACjF,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,oCAAoC,IAAI,mBAAmB,EAAE,kDAA+C;AACrH,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,iCAA8B;AAClE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,0BAA0B,IAAI,SAAS,EAAE,oCAAiC;AACnF,OAAO,EAAE,6BAA6B,IAAI,YAAY,EAAE,oCAAiC;AACzF,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,+BAA+B,IAAI,uBAAuB,EAAE,oCAA2B;AAChG,OAAO,EAAE,kCAAkC,IAAI,0BAA0B,EAAE,oCAA2B;AACtG,OAAO,EAAE,oCAAoC,IAAI,4BAA4B,EAAE,oCAA2B;AAC1G,OAAO,EAAE,6BAA6B,IAAI,qBAAqB,EAAE,oCAA2B;AAC5F,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,oCAA2B;AACrF,OAAO,EAAE,yBAAyB,IAAI,kCAAkC,EAAE,oCAA2B;AAGrG,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,sCAAsC,IAAI,8BAA8B,EAAE,oCAA2B;AAC9G,OAAO,EAAE,yCAAyC,IAAI,iCAAiC,EAAE,oCAA2B;AACpH,OAAO,EAAE,2CAA2C,IAAI,mCAAmC,EAAE,oCAA2B;AACxH,OAAO,EAAE,oCAAoC,IAAI,4BAA4B,EAAE,oCAA2B;AAC1G,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,wBAAwB,IAAI,iCAAiC,EAAE,oCAA2B;AACnG,OAAO,EAAE,gCAAgC,IAAI,yCAAyC,EAAE,oCAA2B;AAKnH,OAAO,EAAE,iCAAiC,IAAI,yBAAyB,EAAE,0CAAiC"}
@@ -23,4 +23,18 @@ export { ComposerPrimitiveMentionItem as Unstable_MentionItem } from "./composer
23
23
  export { ComposerPrimitiveMentionBack as Unstable_MentionBack } from "./composer/mention/index.js";
24
24
  export { useMentionContext as unstable_useMentionContext } from "./composer/mention/index.js";
25
25
  export { useMentionContextOptional as unstable_useMentionContextOptional } from "./composer/mention/index.js";
26
+ // --- Generic Trigger Popover primitives (unstable) ---
27
+ export { ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot } from "./composer/trigger/index.js";
28
+ export { ComposerPrimitiveTriggerPopoverPopover as Unstable_TriggerPopoverPopover } from "./composer/trigger/index.js";
29
+ export { ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories } from "./composer/trigger/index.js";
30
+ export { ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem } from "./composer/trigger/index.js";
31
+ export { ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems } from "./composer/trigger/index.js";
32
+ export { ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem } from "./composer/trigger/index.js";
33
+ export { ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack } from "./composer/trigger/index.js";
34
+ export { useTriggerPopoverContext as unstable_useTriggerPopoverContext } from "./composer/trigger/index.js";
35
+ export { useTriggerPopoverContextOptional as unstable_useTriggerPopoverContextOptional } from "./composer/trigger/index.js";
36
+ // --- Slash Command primitives (unstable) ---
37
+ // SlashCommandRoot is the only slash-specific primitive; UI primitives
38
+ // (Popover, Items, Categories, Back) are the shared TriggerPopover* set above.
39
+ export { ComposerPrimitiveSlashCommandRoot as Unstable_SlashCommandRoot } from "./composer/slash-command/index.js";
26
40
  //# sourceMappingURL=composer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"composer.js","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,uBAAuB,IAAI,MAAM,EAAE,qCAAkC;AAC9E,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,4BAA4B,IAAI,WAAW,EAAE,0CAAuC;AAC7F,OAAO,EAAE,kCAAkC,IAAI,iBAAiB,EAAE,0CAAuC;AACzG,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,iDAA8C;AAClH,OAAO,EAAE,wBAAwB,IAAI,OAAO,EAAE,sCAAmC;AACjF,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,oCAAoC,IAAI,mBAAmB,EAAE,kDAA+C;AACrH,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,iCAA8B;AAClE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,0BAA0B,IAAI,SAAS,EAAE,oCAAiC;AACnF,OAAO,EAAE,6BAA6B,IAAI,YAAY,EAAE,oCAAiC;AACzF,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,+BAA+B,IAAI,uBAAuB,EAAE,oCAA2B;AAChG,OAAO,EAAE,kCAAkC,IAAI,0BAA0B,EAAE,oCAA2B;AACtG,OAAO,EAAE,oCAAoC,IAAI,4BAA4B,EAAE,oCAA2B;AAC1G,OAAO,EAAE,6BAA6B,IAAI,qBAAqB,EAAE,oCAA2B;AAC5F,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,oCAA2B;AACrF,OAAO,EAAE,yBAAyB,IAAI,kCAAkC,EAAE,oCAA2B"}
1
+ {"version":3,"file":"composer.js","sourceRoot":"","sources":["../../src/primitives/composer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,qBAAqB,IAAI,IAAI,EAAE,mCAAgC;AACxE,OAAO,EAAE,uBAAuB,IAAI,MAAM,EAAE,qCAAkC;AAC9E,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,4BAA4B,IAAI,WAAW,EAAE,0CAAuC;AAC7F,OAAO,EAAE,kCAAkC,IAAI,iBAAiB,EAAE,0CAAuC;AACzG,OAAO,EAAE,mCAAmC,IAAI,kBAAkB,EAAE,iDAA8C;AAClH,OAAO,EAAE,wBAAwB,IAAI,OAAO,EAAE,sCAAmC;AACjF,OAAO,EAAE,8BAA8B,IAAI,aAAa,EAAE,4CAAyC;AACnG,OAAO,EAAE,oCAAoC,IAAI,mBAAmB,EAAE,kDAA+C;AACrH,OAAO,EAAE,mBAAmB,IAAI,EAAE,EAAE,iCAA8B;AAClE,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,0BAA0B,IAAI,SAAS,EAAE,oCAAiC;AACnF,OAAO,EAAE,6BAA6B,IAAI,YAAY,EAAE,oCAAiC;AACzF,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE,oCAAiC;AAC3E,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,+BAA+B,IAAI,uBAAuB,EAAE,oCAA2B;AAChG,OAAO,EAAE,kCAAkC,IAAI,0BAA0B,EAAE,oCAA2B;AACtG,OAAO,EAAE,oCAAoC,IAAI,4BAA4B,EAAE,oCAA2B;AAC1G,OAAO,EAAE,6BAA6B,IAAI,qBAAqB,EAAE,oCAA2B;AAC5F,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,4BAA4B,IAAI,oBAAoB,EAAE,oCAA2B;AAC1F,OAAO,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,oCAA2B;AACrF,OAAO,EAAE,yBAAyB,IAAI,kCAAkC,EAAE,oCAA2B;AAErG,wDAAwD;AACxD,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,sCAAsC,IAAI,8BAA8B,EAAE,oCAA2B;AAC9G,OAAO,EAAE,yCAAyC,IAAI,iCAAiC,EAAE,oCAA2B;AACpH,OAAO,EAAE,2CAA2C,IAAI,mCAAmC,EAAE,oCAA2B;AACxH,OAAO,EAAE,oCAAoC,IAAI,4BAA4B,EAAE,oCAA2B;AAC1G,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,mCAAmC,IAAI,2BAA2B,EAAE,oCAA2B;AACxG,OAAO,EAAE,wBAAwB,IAAI,iCAAiC,EAAE,oCAA2B;AACnG,OAAO,EAAE,gCAAgC,IAAI,yCAAyC,EAAE,oCAA2B;AAEnH,8CAA8C;AAC9C,uEAAuE;AACvE,+EAA+E;AAC/E,OAAO,EAAE,iCAAiC,IAAI,yBAAyB,EAAE,0CAAiC"}
@@ -4,9 +4,20 @@ export declare namespace MessagePrimitiveRoot {
4
4
  type Element = ComponentRef<typeof Primitive.div>;
5
5
  /**
6
6
  * Props for the MessagePrimitive.Root component.
7
- * Accepts all standard div element props.
7
+ * Accepts all standard div element props plus optional viewport slack tuning.
8
8
  */
9
- type Props = ComponentPropsWithoutRef<typeof Primitive.div>;
9
+ type Props = ComponentPropsWithoutRef<typeof Primitive.div> & {
10
+ /**
11
+ * Threshold at which the user message height clamps to the offset.
12
+ * @default "10em"
13
+ */
14
+ fillClampThreshold?: string | undefined;
15
+ /**
16
+ * Offset used when clamping large user messages.
17
+ * @default "6em"
18
+ */
19
+ fillClampOffset?: string | undefined;
20
+ };
10
21
  }
11
22
  /**
12
23
  * The root container component for a message.
@@ -33,5 +44,16 @@ export declare const MessagePrimitiveRoot: import("react").ForwardRefExoticCompo
33
44
  asChild?: boolean;
34
45
  }, "ref"> & {
35
46
  render?: import("react").ReactElement | undefined;
36
- } & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
47
+ } & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
48
+ /**
49
+ * Threshold at which the user message height clamps to the offset.
50
+ * @default "10em"
51
+ */
52
+ fillClampThreshold?: string | undefined;
53
+ /**
54
+ * Offset used when clamping large user messages.
55
+ * @default "6em"
56
+ */
57
+ fillClampOffset?: string | undefined;
58
+ } & import("react").RefAttributes<HTMLDivElement>>;
37
59
  //# sourceMappingURL=MessageRoot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageRoot.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iCAA8B;AAClD,OAAO,EACL,KAAK,YAAY,EAEjB,wBAAwB,EAEzB,MAAM,OAAO,CAAC;AAqEf,yBAAiB,oBAAoB,CAAC;IACpC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD;;;OAGG;IACH,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;CACpE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB;;;;0GAkB/B,CAAC"}
1
+ {"version":3,"file":"MessageRoot.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iCAA8B;AAClD,OAAO,EACL,KAAK,YAAY,EAEjB,wBAAwB,EAEzB,MAAM,OAAO,CAAC;AAqEf,yBAAiB,oBAAoB,CAAC;IACpC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD;;;OAGG;IACH,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG;QACnE;;;WAGG;QACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC;;;WAGG;QACH,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACtC,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,oBAAoB;;;;;IAlC7B;;;OAGG;yBACkB,MAAM,GAAG,SAAS;IACvC;;;OAGG;sBACe,MAAM,GAAG,SAAS;kDA8CtC,CAAC"}
@@ -69,12 +69,12 @@ const useMessageViewportRef = () => {
69
69
  * </MessagePrimitive.Root>
70
70
  * ```
71
71
  */
72
- export const MessagePrimitiveRoot = forwardRef((props, forwardRef) => {
72
+ export const MessagePrimitiveRoot = forwardRef(({ fillClampThreshold, fillClampOffset, ...props }, forwardRef) => {
73
73
  const isHoveringRef = useIsHoveringRef();
74
74
  const anchorUserMessageRef = useMessageViewportRef();
75
75
  const ref = useComposedRefs(forwardRef, isHoveringRef, anchorUserMessageRef);
76
76
  const messageId = useAuiState((s) => s.message.id);
77
- return (_jsx(ThreadPrimitiveViewportSlack, { children: _jsx(Primitive.div, { ...props, ref: ref, "data-message-id": messageId }) }));
77
+ return (_jsx(ThreadPrimitiveViewportSlack, { fillClampThreshold: fillClampThreshold, fillClampOffset: fillClampOffset, children: _jsx(Primitive.div, { ...props, ref: ref, "data-message-id": messageId }) }));
78
78
  });
79
79
  MessagePrimitiveRoot.displayName = "MessagePrimitive.Root";
80
80
  //# sourceMappingURL=MessageRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageRoot.js","sourceRoot":"","sources":["../../../src/primitives/message/MessageRoot.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageRoot.js","sourceRoot":"","sources":["../../../src/primitives/message/MessageRoot.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { type FC, type ReactNode } from "react";
2
2
  export type ThreadViewportSlackProps = {
3
3
  /** Threshold at which the user message height clamps to the offset */
4
- fillClampThreshold?: string;
4
+ fillClampThreshold?: string | undefined;
5
5
  /** Offset used when clamping large user messages */
6
- fillClampOffset?: string;
6
+ fillClampOffset?: string | undefined;
7
7
  children: ReactNode;
8
8
  };
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadViewportSlack.d.ts","sourceRoot":"","sources":["../../../src/primitives/thread/ThreadViewportSlack.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,EAAE,EACP,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AA2Bf,MAAM,MAAM,wBAAwB,GAAG;IACrC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,EAAE,EAAE,CAAC,wBAAwB,CA2DrE,CAAC"}
1
+ {"version":3,"file":"ThreadViewportSlack.d.ts","sourceRoot":"","sources":["../../../src/primitives/thread/ThreadViewportSlack.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,EAAE,EACP,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AA2Bf,MAAM,MAAM,wBAAwB,GAAG;IACrC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,oDAAoD;IACpD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,EAAE,EAAE,CAAC,wBAAwB,CA2DrE,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { Unstable_SlashCommandAdapter } from "@assistant-ui/core";
2
+ export type Unstable_SlashCommandDefinition = {
3
+ /** Unique command name (e.g. "summarize"). */
4
+ readonly name: string;
5
+ /** Display label (e.g. "/summarize"). */
6
+ readonly label?: string | undefined;
7
+ /** Short description shown in the popover. */
8
+ readonly description?: string | undefined;
9
+ /** Icon identifier. */
10
+ readonly icon?: string | undefined;
11
+ /** Action to execute when the command is selected. */
12
+ readonly execute?: (() => void) | undefined;
13
+ };
14
+ export type Unstable_UseSlashCommandAdapterOptions = {
15
+ /** List of available slash commands. */
16
+ commands: readonly Unstable_SlashCommandDefinition[];
17
+ };
18
+ /**
19
+ * @deprecated This API is still under active development and might change without notice.
20
+ *
21
+ * Creates a SlashCommandAdapter from a list of command definitions.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * const slashAdapter = unstable_useSlashCommandAdapter({
26
+ * commands: [
27
+ * { name: "summarize", description: "Summarize the conversation", execute: () => {} },
28
+ * { name: "translate", description: "Translate text", execute: () => {} },
29
+ * ],
30
+ * });
31
+ * ```
32
+ */
33
+ export declare function unstable_useSlashCommandAdapter(options: Unstable_UseSlashCommandAdapterOptions): Unstable_SlashCommandAdapter;
34
+ //# sourceMappingURL=useSlashCommandAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSlashCommandAdapter.d.ts","sourceRoot":"","sources":["../../src/unstable/useSlashCommandAdapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,4BAA4B,EAG7B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,+BAA+B,GAAG;IAC5C,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,sDAAsD;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IACnD,wCAAwC;IACxC,QAAQ,EAAE,SAAS,+BAA+B,EAAE,CAAC;CACtD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,sCAAsC,GAC9C,4BAA4B,CAsC9B"}
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import { useMemo } from "react";
3
+ /**
4
+ * @deprecated This API is still under active development and might change without notice.
5
+ *
6
+ * Creates a SlashCommandAdapter from a list of command definitions.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const slashAdapter = unstable_useSlashCommandAdapter({
11
+ * commands: [
12
+ * { name: "summarize", description: "Summarize the conversation", execute: () => {} },
13
+ * { name: "translate", description: "Translate text", execute: () => {} },
14
+ * ],
15
+ * });
16
+ * ```
17
+ */
18
+ export function unstable_useSlashCommandAdapter(options) {
19
+ const { commands } = options;
20
+ return useMemo(() => {
21
+ // Build items lazily at call time so execute callbacks are always fresh
22
+ const getItems = () => commands.map((cmd) => ({
23
+ id: cmd.name,
24
+ type: "command",
25
+ label: cmd.label ?? `/${cmd.name}`,
26
+ description: cmd.description,
27
+ icon: cmd.icon,
28
+ execute: cmd.execute,
29
+ }));
30
+ return {
31
+ // No categories — slash commands show items directly via search mode
32
+ categories() {
33
+ return [];
34
+ },
35
+ categoryItems() {
36
+ return [];
37
+ },
38
+ search(query) {
39
+ const items = getItems();
40
+ if (!query)
41
+ return items;
42
+ const lower = query.toLowerCase();
43
+ return items.filter((item) => item.id.toLowerCase().includes(lower) ||
44
+ item.label.toLowerCase().includes(lower) ||
45
+ item.description?.toLowerCase().includes(lower));
46
+ },
47
+ };
48
+ }, [commands]);
49
+ }
50
+ //# sourceMappingURL=useSlashCommandAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSlashCommandAdapter.js","sourceRoot":"","sources":["../../src/unstable/useSlashCommandAdapter.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAyBhC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAA+C;IAE/C,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7B,OAAO,OAAO,CAA+B,GAAG,EAAE;QAChD,wEAAwE;QACxE,MAAM,QAAQ,GAAG,GAAgC,EAAE,CACjD,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACrB,EAAE,EAAE,GAAG,CAAC,IAAI;YACZ,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;YAClC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,qEAAqE;YACrE,UAAU;gBACR,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,aAAa;gBACX,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,CAAC,KAAa;gBAClB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK;oBAAE,OAAO,KAAK,CAAC;gBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBAClC,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACrC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACxC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClD,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/react",
3
- "version": "0.12.23",
3
+ "version": "0.12.25",
4
4
  "description": "TypeScript/React library for AI Chat",
5
5
  "keywords": [
6
6
  "radix-ui",
@@ -48,17 +48,17 @@
48
48
  ],
49
49
  "sideEffects": false,
50
50
  "dependencies": {
51
- "@assistant-ui/core": "^0.1.11",
52
- "@assistant-ui/store": "^0.2.6",
53
- "@assistant-ui/tap": "^0.5.6",
51
+ "@assistant-ui/core": "^0.1.14",
52
+ "@assistant-ui/store": "^0.2.7",
53
+ "@assistant-ui/tap": "^0.5.8",
54
54
  "@radix-ui/primitive": "^1.1.3",
55
55
  "@radix-ui/react-compose-refs": "^1.1.2",
56
56
  "@radix-ui/react-context": "^1.1.3",
57
57
  "@radix-ui/react-primitive": "^2.1.4",
58
58
  "@radix-ui/react-use-callback-ref": "^1.1.1",
59
59
  "@radix-ui/react-use-escape-keydown": "^1.1.1",
60
- "assistant-cloud": "^0.1.24",
61
- "assistant-stream": "^0.3.10",
60
+ "assistant-cloud": "^0.1.26",
61
+ "assistant-stream": "^0.3.11",
62
62
  "nanoid": "^5.1.7",
63
63
  "radix-ui": "^1.4.3",
64
64
  "react-textarea-autosize": "^8.5.9",
@@ -82,14 +82,14 @@
82
82
  "devDependencies": {
83
83
  "@testing-library/react": "^16.3.2",
84
84
  "@types/json-schema": "^7.0.15",
85
- "@types/node": "^25.5.0",
85
+ "@types/node": "^25.6.0",
86
86
  "@types/react": "^19.2.14",
87
87
  "@types/react-dom": "^19.2.3",
88
- "jsdom": "^29.0.1",
89
- "react": "^19.2.4",
90
- "react-dom": "^19.2.4",
91
- "vitest": "^4.1.2",
92
- "@assistant-ui/x-buildutils": "0.0.3"
88
+ "jsdom": "^29.0.2",
89
+ "react": "^19.2.5",
90
+ "react-dom": "^19.2.5",
91
+ "vitest": "^4.1.4",
92
+ "@assistant-ui/x-buildutils": "0.0.5"
93
93
  },
94
94
  "publishConfig": {
95
95
  "access": "public",
@@ -426,6 +426,7 @@ const ComposerClientResource = resource(
426
426
  parentId: null,
427
427
  sourceId: null,
428
428
  runConfig,
429
+ startRun: opts?.startRun,
429
430
  metadata: {
430
431
  custom: { ...(currentQuote ? { quote: currentQuote } : {}) },
431
432
  },
package/src/index.ts CHANGED
@@ -401,6 +401,20 @@ export {
401
401
  } from "./primitives/composer/mention";
402
402
  export type { ToolExecutionStatus } from "./internal";
403
403
 
404
+ // Unstable - trigger popover (generic)
405
+ export {
406
+ useTriggerPopoverContext as unstable_useTriggerPopoverContext,
407
+ useTriggerPopoverContextOptional as unstable_useTriggerPopoverContextOptional,
408
+ } from "./primitives/composer/trigger";
409
+ export type { OnSelectBehavior as Unstable_OnSelectBehavior } from "./primitives/composer/trigger";
410
+
411
+ // Unstable - slash commands
412
+ export {
413
+ unstable_useSlashCommandAdapter,
414
+ type Unstable_SlashCommandDefinition,
415
+ type Unstable_UseSlashCommandAdapterOptions,
416
+ } from "./unstable/useSlashCommandAdapter";
417
+
404
418
  export type { Assistant } from "./augmentations";
405
419
 
406
420
  // ============================================================================
package/src/internal.ts CHANGED
@@ -33,3 +33,6 @@ export {
33
33
  useSmoothStatus,
34
34
  withSmoothContextProvider,
35
35
  } from "./utils/smooth/SmoothContext";
36
+
37
+ // ComposerInput plugin registry (used by react-lexical)
38
+ export { useComposerInputPluginRegistryOptional } from "./primitives/composer/ComposerInputPluginContext";