@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.
- package/dist/client/ExternalThread.d.ts.map +1 -1
- package/dist/client/ExternalThread.js +1 -0
- package/dist/client/ExternalThread.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +1 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +27 -12
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerInputPluginContext.d.ts +31 -0
- package/dist/primitives/composer/ComposerInputPluginContext.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerInputPluginContext.js +32 -0
- package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionContext.d.ts +4 -2
- package/dist/primitives/composer/mention/ComposerMentionContext.d.ts.map +1 -1
- package/dist/primitives/composer/mention/ComposerMentionContext.js +21 -13
- package/dist/primitives/composer/mention/ComposerMentionContext.js.map +1 -1
- package/dist/primitives/composer/mention/index.d.ts +4 -4
- package/dist/primitives/composer/mention/index.d.ts.map +1 -1
- package/dist/primitives/composer/mention/index.js +6 -4
- package/dist/primitives/composer/mention/index.js.map +1 -1
- package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.d.ts +36 -0
- package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.d.ts.map +1 -0
- package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.js +36 -0
- package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.js.map +1 -0
- package/dist/primitives/composer/slash-command/index.d.ts +2 -0
- package/dist/primitives/composer/slash-command/index.d.ts.map +1 -0
- package/dist/primitives/composer/slash-command/index.js +2 -0
- package/dist/primitives/composer/slash-command/index.js.map +1 -0
- package/dist/primitives/composer/{mention/ComposerMentionBack.d.ts → trigger/TriggerPopoverBack.d.ts} +3 -10
- package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js +19 -0
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts +38 -0
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +35 -0
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverContext.d.ts +37 -0
- package/dist/primitives/composer/trigger/TriggerPopoverContext.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverContext.js +70 -0
- package/dist/primitives/composer/trigger/TriggerPopoverContext.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts +40 -0
- package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js +35 -0
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverPopover.d.ts +26 -0
- package/dist/primitives/composer/trigger/TriggerPopoverPopover.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverPopover.js +28 -0
- package/dist/primitives/composer/trigger/TriggerPopoverPopover.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +53 -0
- package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -0
- package/dist/primitives/composer/{mention/MentionResource.js → trigger/TriggerPopoverResource.js} +50 -25
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -0
- package/dist/primitives/composer/trigger/detectTrigger.d.ts +2 -0
- package/dist/primitives/composer/trigger/detectTrigger.d.ts.map +1 -0
- package/dist/primitives/composer/{mention/detectMentionTrigger.js → trigger/detectTrigger.js} +4 -4
- package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -0
- package/dist/primitives/composer/trigger/index.d.ts +7 -0
- package/dist/primitives/composer/trigger/index.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/index.js +6 -0
- package/dist/primitives/composer/trigger/index.js.map +1 -0
- package/dist/primitives/composer.d.ts +10 -0
- package/dist/primitives/composer.d.ts.map +1 -1
- package/dist/primitives/composer.js +14 -0
- package/dist/primitives/composer.js.map +1 -1
- package/dist/primitives/message/MessageRoot.d.ts +25 -3
- package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
- package/dist/primitives/message/MessageRoot.js +2 -2
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadViewportSlack.d.ts +2 -2
- package/dist/primitives/thread/ThreadViewportSlack.d.ts.map +1 -1
- package/dist/unstable/useSlashCommandAdapter.d.ts +34 -0
- package/dist/unstable/useSlashCommandAdapter.d.ts.map +1 -0
- package/dist/unstable/useSlashCommandAdapter.js +50 -0
- package/dist/unstable/useSlashCommandAdapter.js.map +1 -0
- package/package.json +12 -12
- package/src/client/ExternalThread.ts +1 -0
- package/src/index.ts +14 -0
- package/src/internal.ts +3 -0
- package/src/primitives/composer/ComposerInput.tsx +25 -18
- package/src/primitives/composer/ComposerInputPluginContext.tsx +100 -0
- package/src/primitives/composer/mention/ComposerMentionContext.tsx +56 -22
- package/src/primitives/composer/mention/index.ts +11 -8
- package/src/primitives/composer/slash-command/ComposerSlashCommandRoot.tsx +76 -0
- package/src/primitives/composer/slash-command/index.ts +1 -0
- package/src/primitives/composer/trigger/TriggerPopoverBack.tsx +40 -0
- package/src/primitives/composer/{mention/ComposerMentionCategories.tsx → trigger/TriggerPopoverCategories.tsx} +33 -28
- package/src/primitives/composer/trigger/TriggerPopoverContext.tsx +129 -0
- package/src/primitives/composer/{mention/ComposerMentionItems.tsx → trigger/TriggerPopoverItems.tsx} +34 -29
- package/src/primitives/composer/trigger/TriggerPopoverPopover.tsx +51 -0
- package/src/primitives/composer/{mention/MentionResource.ts → trigger/TriggerPopoverResource.ts} +146 -98
- package/src/primitives/composer/{mention/detectMentionTrigger.test.ts → trigger/detectTrigger.test.ts} +15 -15
- package/src/primitives/composer/{mention/detectMentionTrigger.ts → trigger/detectTrigger.ts} +3 -3
- package/src/primitives/composer/trigger/index.ts +16 -0
- package/src/primitives/composer.ts +16 -0
- package/src/primitives/message/MessageRoot.tsx +18 -4
- package/src/primitives/thread/ThreadViewportSlack.tsx +2 -2
- package/src/tests/BaseComposerRuntimeCore.test.ts +33 -1
- package/src/unstable/useSlashCommandAdapter.ts +83 -0
- package/dist/primitives/composer/mention/ComposerMentionBack.d.ts.map +0 -1
- package/dist/primitives/composer/mention/ComposerMentionBack.js +0 -28
- package/dist/primitives/composer/mention/ComposerMentionBack.js.map +0 -1
- package/dist/primitives/composer/mention/ComposerMentionCategories.d.ts +0 -46
- package/dist/primitives/composer/mention/ComposerMentionCategories.d.ts.map +0 -1
- package/dist/primitives/composer/mention/ComposerMentionCategories.js +0 -32
- package/dist/primitives/composer/mention/ComposerMentionCategories.js.map +0 -1
- package/dist/primitives/composer/mention/ComposerMentionItems.d.ts +0 -50
- package/dist/primitives/composer/mention/ComposerMentionItems.d.ts.map +0 -1
- package/dist/primitives/composer/mention/ComposerMentionItems.js +0 -30
- package/dist/primitives/composer/mention/ComposerMentionItems.js.map +0 -1
- package/dist/primitives/composer/mention/ComposerMentionPopover.d.ts +0 -26
- package/dist/primitives/composer/mention/ComposerMentionPopover.d.ts.map +0 -1
- package/dist/primitives/composer/mention/ComposerMentionPopover.js +0 -28
- package/dist/primitives/composer/mention/ComposerMentionPopover.js.map +0 -1
- package/dist/primitives/composer/mention/MentionResource.d.ts +0 -39
- package/dist/primitives/composer/mention/MentionResource.d.ts.map +0 -1
- package/dist/primitives/composer/mention/MentionResource.js.map +0 -1
- package/dist/primitives/composer/mention/detectMentionTrigger.d.ts +0 -2
- package/dist/primitives/composer/mention/detectMentionTrigger.d.ts.map +0 -1
- package/dist/primitives/composer/mention/detectMentionTrigger.js.map +0 -1
- package/src/primitives/composer/mention/ComposerMentionBack.tsx +0 -55
- package/src/primitives/composer/mention/ComposerMentionPopover.tsx +0 -52
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useMemo } from "react";
|
|
4
|
+
import { ComposerPrimitiveTriggerPopoverRoot } from "../trigger/TriggerPopoverContext.js";
|
|
5
|
+
/**
|
|
6
|
+
* Convenience wrapper around `TriggerPopoverRoot` pre-configured for `/` slash commands.
|
|
7
|
+
* When a user selects a command, the `/command` text is removed from the composer
|
|
8
|
+
* and the item's `execute` callback (if any) and `onSelect` prop are called.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <ComposerPrimitive.Unstable_SlashCommandRoot adapter={slashAdapter}>
|
|
13
|
+
* <ComposerPrimitive.Input />
|
|
14
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
15
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverItems>
|
|
16
|
+
* {(items) => items.map(item => (
|
|
17
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverItem key={item.id} item={item}>
|
|
18
|
+
* {item.label}
|
|
19
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverItem>
|
|
20
|
+
* ))}
|
|
21
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverItems>
|
|
22
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
23
|
+
* </ComposerPrimitive.Unstable_SlashCommandRoot>
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export const ComposerPrimitiveSlashCommandRoot = ({ children, adapter, trigger = "/", onSelect: onSelectProp }) => {
|
|
27
|
+
const handler = useCallback((item) => {
|
|
28
|
+
item.execute?.();
|
|
29
|
+
onSelectProp?.(item);
|
|
30
|
+
}, [onSelectProp]);
|
|
31
|
+
const onSelect = useMemo(() => ({ type: "action", handler }), [handler]);
|
|
32
|
+
return (_jsx(ComposerPrimitiveTriggerPopoverRoot, { adapter: adapter, trigger: trigger, onSelect: onSelect, children: children }));
|
|
33
|
+
};
|
|
34
|
+
ComposerPrimitiveSlashCommandRoot.displayName =
|
|
35
|
+
"ComposerPrimitive.SlashCommandRoot";
|
|
36
|
+
//# sourceMappingURL=ComposerSlashCommandRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposerSlashCommandRoot.js","sourceRoot":"","sources":["../../../../src/primitives/composer/slash-command/ComposerSlashCommandRoot.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAA2B,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKtE,OAAO,EAAE,mCAAmC,EAAE,4CAAyC;AAmBvF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAE1C,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,GAAG,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE;IACnE,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,IAA+B,EAAE,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EACnC,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,CACL,KAAC,mCAAmC,IAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,YAEjB,QAAQ,GAC2B,CACvC,CAAC;AACJ,CAAC,CAAC;AAEF,iCAAiC,CAAC,WAAW;IAC3C,oCAAoC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/slash-command/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,sCAAmC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/primitives/composer/slash-command/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,sCAAmC"}
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
import { Primitive } from "../../../utils/Primitive.js";
|
|
2
2
|
import { type ComponentRef, type ComponentPropsWithoutRef } from "react";
|
|
3
|
-
export declare namespace
|
|
3
|
+
export declare namespace ComposerPrimitiveTriggerPopoverBack {
|
|
4
4
|
type Element = ComponentRef<typeof Primitive.button>;
|
|
5
5
|
type Props = ComponentPropsWithoutRef<typeof Primitive.button>;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* A button that navigates back from category items to the category list.
|
|
9
9
|
* Only renders when a category is active (drill-down view).
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```tsx
|
|
13
|
-
* <ComposerPrimitive.MentionBack>
|
|
14
|
-
* ← Back
|
|
15
|
-
* </ComposerPrimitive.MentionBack>
|
|
16
|
-
* ```
|
|
17
10
|
*/
|
|
18
|
-
export declare const
|
|
11
|
+
export declare const ComposerPrimitiveTriggerPopoverBack: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
19
12
|
asChild?: boolean;
|
|
20
13
|
}, "ref"> & {
|
|
21
14
|
render?: import("react").ReactElement | undefined;
|
|
22
15
|
} & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
23
|
-
//# sourceMappingURL=
|
|
16
|
+
//# sourceMappingURL=TriggerPopoverBack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverBack.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverBack.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAE9B,MAAM,OAAO,CAAC;AAIf,yBAAiB,mCAAmC,CAAC;IACnD,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;CACvE;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;gHAgB9C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Primitive } from "../../../utils/Primitive.js";
|
|
4
|
+
import { forwardRef, } from "react";
|
|
5
|
+
import { composeEventHandlers } from "@radix-ui/primitive";
|
|
6
|
+
import { useTriggerPopoverContext } from "./TriggerPopoverContext.js";
|
|
7
|
+
/**
|
|
8
|
+
* A button that navigates back from category items to the category list.
|
|
9
|
+
* Only renders when a category is active (drill-down view).
|
|
10
|
+
*/
|
|
11
|
+
export const ComposerPrimitiveTriggerPopoverBack = forwardRef(({ onClick, ...props }, forwardedRef) => {
|
|
12
|
+
const { activeCategoryId, isSearchMode, goBack } = useTriggerPopoverContext();
|
|
13
|
+
if (!activeCategoryId || isSearchMode)
|
|
14
|
+
return null;
|
|
15
|
+
return (_jsx(Primitive.button, { type: "button", ...props, ref: forwardedRef, onClick: composeEventHandlers(onClick, goBack) }));
|
|
16
|
+
});
|
|
17
|
+
ComposerPrimitiveTriggerPopoverBack.displayName =
|
|
18
|
+
"ComposerPrimitive.TriggerPopoverBack";
|
|
19
|
+
//# sourceMappingURL=TriggerPopoverBack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverBack.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverBack.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EAGL,UAAU,GACX,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,mCAAgC;AAOnE;;;GAGG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,UAAU,CAG3D,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IACxC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAE9E,IAAI,CAAC,gBAAgB,IAAI,YAAY;QAAE,OAAO,IAAI,CAAC;IAEnD,OAAO,CACL,KAAC,SAAS,CAAC,MAAM,IACf,IAAI,EAAC,QAAQ,KACT,KAAK,EACT,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,GAC9C,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,mCAAmC,CAAC,WAAW;IAC7C,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Primitive } from "../../../utils/Primitive.js";
|
|
2
|
+
import { type ComponentRef, type ComponentPropsWithoutRef, type ReactNode } from "react";
|
|
3
|
+
import type { Unstable_TriggerCategory } from "@assistant-ui/core";
|
|
4
|
+
export declare namespace ComposerPrimitiveTriggerPopoverCategories {
|
|
5
|
+
type Element = ComponentRef<typeof Primitive.div>;
|
|
6
|
+
type Props = Omit<ComponentPropsWithoutRef<typeof Primitive.div>, "children"> & {
|
|
7
|
+
children: (categories: readonly Unstable_TriggerCategory[]) => ReactNode;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Renders the top-level category list via a render function.
|
|
12
|
+
* Only renders when no category is active and search mode is off.
|
|
13
|
+
*/
|
|
14
|
+
export declare const ComposerPrimitiveTriggerPopoverCategories: import("react").ForwardRefExoticComponent<Omit<Omit<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
|
|
15
|
+
asChild?: boolean;
|
|
16
|
+
}, "ref"> & {
|
|
17
|
+
render?: import("react").ReactElement | undefined;
|
|
18
|
+
} & import("react").RefAttributes<HTMLDivElement>, "ref">, "children"> & {
|
|
19
|
+
children: (categories: readonly Unstable_TriggerCategory[]) => ReactNode;
|
|
20
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
21
|
+
export declare namespace ComposerPrimitiveTriggerPopoverCategoryItem {
|
|
22
|
+
type Element = ComponentRef<typeof Primitive.button>;
|
|
23
|
+
type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {
|
|
24
|
+
categoryId: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A button that selects a category and triggers drill-down navigation.
|
|
29
|
+
* Automatically receives `data-highlighted` when keyboard-navigated.
|
|
30
|
+
*/
|
|
31
|
+
export declare const ComposerPrimitiveTriggerPopoverCategoryItem: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
32
|
+
asChild?: boolean;
|
|
33
|
+
}, "ref"> & {
|
|
34
|
+
render?: import("react").ReactElement | undefined;
|
|
35
|
+
} & import("react").RefAttributes<HTMLButtonElement>, "ref"> & {
|
|
36
|
+
categoryId: string;
|
|
37
|
+
} & import("react").RefAttributes<HTMLButtonElement>>;
|
|
38
|
+
//# sourceMappingURL=TriggerPopoverCategories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverCategories.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAMnE,yBAAiB,yCAAyC,CAAC;IACzD,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,IAAI,CACtB,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,EAC9C,UAAU,CACX,GAAG;QACF,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,KAAK,SAAS,CAAC;KAC1E,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,yCAAyC;;;;;cARxC,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,KAAK,SAAS;kDA2B1E,CAAC;AASH,yBAAiB,2CAA2C,CAAC;IAC3D,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG;QACtE,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,2CAA2C;;;;;gBARxC,MAAM;qDA0CpB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Primitive } from "../../../utils/Primitive.js";
|
|
4
|
+
import { forwardRef, useCallback, } from "react";
|
|
5
|
+
import { composeEventHandlers } from "@radix-ui/primitive";
|
|
6
|
+
import { useTriggerPopoverContext } from "./TriggerPopoverContext.js";
|
|
7
|
+
/**
|
|
8
|
+
* Renders the top-level category list via a render function.
|
|
9
|
+
* Only renders when no category is active and search mode is off.
|
|
10
|
+
*/
|
|
11
|
+
export const ComposerPrimitiveTriggerPopoverCategories = forwardRef(({ children, "aria-label": ariaLabel, ...props }, forwardedRef) => {
|
|
12
|
+
const { categories, activeCategoryId, isSearchMode } = useTriggerPopoverContext();
|
|
13
|
+
if (activeCategoryId || isSearchMode)
|
|
14
|
+
return null;
|
|
15
|
+
return (_jsx(Primitive.div, { role: "group", "aria-label": ariaLabel ?? "Categories", ...props, ref: forwardedRef, children: children(categories) }));
|
|
16
|
+
});
|
|
17
|
+
ComposerPrimitiveTriggerPopoverCategories.displayName =
|
|
18
|
+
"ComposerPrimitive.TriggerPopoverCategories";
|
|
19
|
+
/**
|
|
20
|
+
* A button that selects a category and triggers drill-down navigation.
|
|
21
|
+
* Automatically receives `data-highlighted` when keyboard-navigated.
|
|
22
|
+
*/
|
|
23
|
+
export const ComposerPrimitiveTriggerPopoverCategoryItem = forwardRef(({ categoryId, onClick, ...props }, forwardedRef) => {
|
|
24
|
+
const { selectCategory, categories, highlightedIndex, activeCategoryId, isSearchMode, popoverId, } = useTriggerPopoverContext();
|
|
25
|
+
const handleClick = useCallback(() => {
|
|
26
|
+
selectCategory(categoryId);
|
|
27
|
+
}, [selectCategory, categoryId]);
|
|
28
|
+
const isHighlighted = !activeCategoryId &&
|
|
29
|
+
!isSearchMode &&
|
|
30
|
+
categories.findIndex((c) => c.id === categoryId) === highlightedIndex;
|
|
31
|
+
return (_jsx(Primitive.button, { type: "button", role: "option", id: `${popoverId}-option-${categoryId}`, "aria-selected": isHighlighted, "data-highlighted": isHighlighted ? "" : undefined, ...props, ref: forwardedRef, onClick: composeEventHandlers(onClick, handleClick) }));
|
|
32
|
+
});
|
|
33
|
+
ComposerPrimitiveTriggerPopoverCategoryItem.displayName =
|
|
34
|
+
"ComposerPrimitive.TriggerPopoverCategoryItem";
|
|
35
|
+
//# sourceMappingURL=TriggerPopoverCategories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverCategories.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverCategories.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EAIL,UAAU,EACV,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,mCAAgC;AAiBnE;;;GAGG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,UAAU,CAGjE,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IAClE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAClD,wBAAwB,EAAE,CAAC;IAE7B,IAAI,gBAAgB,IAAI,YAAY;QAAE,OAAO,IAAI,CAAC;IAElD,OAAO,CACL,KAAC,SAAS,CAAC,GAAG,IACZ,IAAI,EAAC,OAAO,gBACA,SAAS,IAAI,YAAY,KACjC,KAAK,EACT,GAAG,EAAE,YAAY,YAEhB,QAAQ,CAAC,UAAU,CAAC,GACP,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,yCAAyC,CAAC,WAAW;IACnD,4CAA4C,CAAC;AAa/C;;;GAGG;AACH,MAAM,CAAC,MAAM,2CAA2C,GAAG,UAAU,CAGnE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IACpD,MAAM,EACJ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,SAAS,GACV,GAAG,wBAAwB,EAAE,CAAC;IAE/B,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IAEjC,MAAM,aAAa,GACjB,CAAC,gBAAgB;QACjB,CAAC,YAAY;QACb,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,KAAK,gBAAgB,CAAC;IAExE,OAAO,CACL,KAAC,SAAS,CAAC,MAAM,IACf,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,GAAG,SAAS,WAAW,UAAU,EAAE,mBACxB,aAAa,sBACV,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAC5C,KAAK,EACT,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,GACnD,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,2CAA2C,CAAC,WAAW;IACrD,8CAA8C,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type ReactNode, type FC } from "react";
|
|
2
|
+
import type { Unstable_TriggerAdapter } from "@assistant-ui/core";
|
|
3
|
+
import { type TriggerPopoverResourceOutput, type OnSelectBehavior } from "./TriggerPopoverResource.js";
|
|
4
|
+
export declare const useTriggerPopoverContext: () => TriggerPopoverResourceOutput;
|
|
5
|
+
export declare const useTriggerPopoverContextOptional: () => TriggerPopoverResourceOutput | null;
|
|
6
|
+
export declare namespace ComposerPrimitiveTriggerPopoverRoot {
|
|
7
|
+
type Props = {
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
/** The adapter providing categories and items. */
|
|
10
|
+
adapter: Unstable_TriggerAdapter;
|
|
11
|
+
/** Character(s) that trigger the popover. @default "@" */
|
|
12
|
+
trigger?: string | undefined;
|
|
13
|
+
/** What happens when an item is selected. */
|
|
14
|
+
onSelect: OnSelectBehavior;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Provider that wraps the composer with trigger detection, keyboard navigation,
|
|
19
|
+
* and popover state. Supports any trigger character (`@`, `/`, `:`, etc.).
|
|
20
|
+
* Multiple trigger roots can coexist around the same input.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverRoot
|
|
25
|
+
* trigger="/"
|
|
26
|
+
* adapter={slashAdapter}
|
|
27
|
+
* onSelect={{ type: "action", handler: (item) => console.log(item) }}
|
|
28
|
+
* >
|
|
29
|
+
* <ComposerPrimitive.Input />
|
|
30
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
31
|
+
* ...
|
|
32
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
33
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverRoot>
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare const ComposerPrimitiveTriggerPopoverRoot: FC<ComposerPrimitiveTriggerPopoverRoot.Props>;
|
|
37
|
+
//# sourceMappingURL=TriggerPopoverContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverContext.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAEL,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACtB,oCAAiC;AAalC,eAAO,MAAM,wBAAwB,oCAOpC,CAAC;AAEF,eAAO,MAAM,gCAAgC,2CAE5C,CAAC;AAMF,yBAAiB,mCAAmC,CAAC;IACnD,KAAY,KAAK,GAAG;QAClB,QAAQ,EAAE,SAAS,CAAC;QACpB,kDAAkD;QAClD,OAAO,EAAE,uBAAuB,CAAC;QACjC,0DAA0D;QAC1D,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,6CAA6C;QAC7C,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC;CACH;AAmCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mCAAmC,EAAE,EAAE,CAClD,mCAAmC,CAAC,KAAK,CAa1C,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext, useEffect, useId, } from "react";
|
|
4
|
+
import { useResource } from "@assistant-ui/tap/react";
|
|
5
|
+
import { useAui, useAuiState } from "@assistant-ui/store";
|
|
6
|
+
import { TriggerPopoverResource, } from "./TriggerPopoverResource.js";
|
|
7
|
+
import { useComposerInputPluginRegistryOptional, ComposerInputPluginProvider, } from "../ComposerInputPluginContext.js";
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Context
|
|
10
|
+
// =============================================================================
|
|
11
|
+
const TriggerPopoverContext = createContext(null);
|
|
12
|
+
export const useTriggerPopoverContext = () => {
|
|
13
|
+
const ctx = useContext(TriggerPopoverContext);
|
|
14
|
+
if (!ctx)
|
|
15
|
+
throw new Error("useTriggerPopoverContext must be used within ComposerPrimitive.TriggerPopoverRoot");
|
|
16
|
+
return ctx;
|
|
17
|
+
};
|
|
18
|
+
export const useTriggerPopoverContextOptional = () => {
|
|
19
|
+
return useContext(TriggerPopoverContext);
|
|
20
|
+
};
|
|
21
|
+
const TriggerPopoverRootInner = ({ children, adapter, trigger: triggerChar = "@", onSelect }) => {
|
|
22
|
+
const aui = useAui();
|
|
23
|
+
const text = useAuiState((s) => s.composer.text);
|
|
24
|
+
const popoverId = useId();
|
|
25
|
+
const triggerPopover = useResource(TriggerPopoverResource({
|
|
26
|
+
adapter,
|
|
27
|
+
text,
|
|
28
|
+
triggerChar,
|
|
29
|
+
onSelect,
|
|
30
|
+
aui,
|
|
31
|
+
popoverId,
|
|
32
|
+
}));
|
|
33
|
+
// Register as ComposerInput plugin
|
|
34
|
+
const pluginRegistry = useComposerInputPluginRegistryOptional();
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!pluginRegistry)
|
|
37
|
+
return undefined;
|
|
38
|
+
return pluginRegistry.register(triggerPopover);
|
|
39
|
+
}, [pluginRegistry, triggerPopover]);
|
|
40
|
+
return (_jsx(TriggerPopoverContext.Provider, { value: triggerPopover, children: children }));
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Provider that wraps the composer with trigger detection, keyboard navigation,
|
|
44
|
+
* and popover state. Supports any trigger character (`@`, `/`, `:`, etc.).
|
|
45
|
+
* Multiple trigger roots can coexist around the same input.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```tsx
|
|
49
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverRoot
|
|
50
|
+
* trigger="/"
|
|
51
|
+
* adapter={slashAdapter}
|
|
52
|
+
* onSelect={{ type: "action", handler: (item) => console.log(item) }}
|
|
53
|
+
* >
|
|
54
|
+
* <ComposerPrimitive.Input />
|
|
55
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
56
|
+
* ...
|
|
57
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
58
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverRoot>
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export const ComposerPrimitiveTriggerPopoverRoot = (props) => {
|
|
62
|
+
const existingRegistry = useComposerInputPluginRegistryOptional();
|
|
63
|
+
if (existingRegistry) {
|
|
64
|
+
return _jsx(TriggerPopoverRootInner, { ...props });
|
|
65
|
+
}
|
|
66
|
+
return (_jsx(ComposerInputPluginProvider, { children: _jsx(TriggerPopoverRootInner, { ...props }) }));
|
|
67
|
+
};
|
|
68
|
+
ComposerPrimitiveTriggerPopoverRoot.displayName =
|
|
69
|
+
"ComposerPrimitive.TriggerPopoverRoot";
|
|
70
|
+
//# sourceMappingURL=TriggerPopoverContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverContext.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,aAAa,EACb,UAAU,EACV,SAAS,EACT,KAAK,GAGN,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EACL,sBAAsB,GAGvB,oCAAiC;AAClC,OAAO,EACL,sCAAsC,EACtC,2BAA2B,GAC5B,yCAAsC;AAEvC,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,qBAAqB,GACzB,aAAa,CAAsC,IAAI,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG;QACN,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;IACJ,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,EAAE;IACnD,OAAO,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC3C,CAAC,CAAC;AAkBF,MAAM,uBAAuB,GAEzB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;IAClE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC;IAE1B,MAAM,cAAc,GAAG,WAAW,CAChC,sBAAsB,CAAC;QACrB,OAAO;QACP,IAAI;QACJ,WAAW;QACX,QAAQ;QACR,GAAG;QACH,SAAS;KACV,CAAC,CACH,CAAC;IAEF,mCAAmC;IACnC,MAAM,cAAc,GAAG,sCAAsC,EAAE,CAAC;IAEhE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC;QACtC,OAAO,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;IAErC,OAAO,CACL,KAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,cAAc,YAClD,QAAQ,GACsB,CAClC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAE5C,CAAC,KAAK,EAAE,EAAE;IACZ,MAAM,gBAAgB,GAAG,sCAAsC,EAAE,CAAC;IAElE,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,KAAC,uBAAuB,OAAK,KAAK,GAAI,CAAC;IAChD,CAAC;IAED,OAAO,CACL,KAAC,2BAA2B,cAC1B,KAAC,uBAAuB,OAAK,KAAK,GAAI,GACV,CAC/B,CAAC;AACJ,CAAC,CAAC;AAEF,mCAAmC,CAAC,WAAW;IAC7C,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Primitive } from "../../../utils/Primitive.js";
|
|
2
|
+
import { type ComponentRef, type ComponentPropsWithoutRef, type ReactNode } from "react";
|
|
3
|
+
import type { Unstable_TriggerItem } from "@assistant-ui/core";
|
|
4
|
+
export declare namespace ComposerPrimitiveTriggerPopoverItems {
|
|
5
|
+
type Element = ComponentRef<typeof Primitive.div>;
|
|
6
|
+
type Props = Omit<ComponentPropsWithoutRef<typeof Primitive.div>, "children"> & {
|
|
7
|
+
children: (items: readonly Unstable_TriggerItem[]) => ReactNode;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Renders the list of items within a category or search results via a render function.
|
|
12
|
+
* Only renders when a category is active or search mode is on.
|
|
13
|
+
*/
|
|
14
|
+
export declare const ComposerPrimitiveTriggerPopoverItems: import("react").ForwardRefExoticComponent<Omit<Omit<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
|
|
15
|
+
asChild?: boolean;
|
|
16
|
+
}, "ref"> & {
|
|
17
|
+
render?: import("react").ReactElement | undefined;
|
|
18
|
+
} & import("react").RefAttributes<HTMLDivElement>, "ref">, "children"> & {
|
|
19
|
+
children: (items: readonly Unstable_TriggerItem[]) => ReactNode;
|
|
20
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
21
|
+
export declare namespace ComposerPrimitiveTriggerPopoverItem {
|
|
22
|
+
type Element = ComponentRef<typeof Primitive.button>;
|
|
23
|
+
type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {
|
|
24
|
+
item: Unstable_TriggerItem;
|
|
25
|
+
index?: number | undefined;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A button that selects a trigger item.
|
|
30
|
+
* Automatically receives `data-highlighted` when keyboard-navigated.
|
|
31
|
+
*/
|
|
32
|
+
export declare const ComposerPrimitiveTriggerPopoverItem: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
33
|
+
asChild?: boolean;
|
|
34
|
+
}, "ref"> & {
|
|
35
|
+
render?: import("react").ReactElement | undefined;
|
|
36
|
+
} & import("react").RefAttributes<HTMLButtonElement>, "ref"> & {
|
|
37
|
+
item: Unstable_TriggerItem;
|
|
38
|
+
index?: number | undefined;
|
|
39
|
+
} & import("react").RefAttributes<HTMLButtonElement>>;
|
|
40
|
+
//# sourceMappingURL=TriggerPopoverItems.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverItems.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAM/D,yBAAiB,oCAAoC,CAAC;IACpD,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,IAAI,CACtB,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,EAC9C,UAAU,CACX,GAAG;QACF,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,KAAK,SAAS,CAAC;KACjE,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC;;;;;cARnC,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,KAAK,SAAS;kDA0BjE,CAAC;AASH,yBAAiB,mCAAmC,CAAC;IACnD,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG;QACtE,IAAI,EAAE,oBAAoB,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,mCAAmC;;;;;UATtC,oBAAoB;YAClB,MAAM,GAAG,SAAS;qDA0C5B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Primitive } from "../../../utils/Primitive.js";
|
|
4
|
+
import { forwardRef, useCallback, } from "react";
|
|
5
|
+
import { composeEventHandlers } from "@radix-ui/primitive";
|
|
6
|
+
import { useTriggerPopoverContext } from "./TriggerPopoverContext.js";
|
|
7
|
+
/**
|
|
8
|
+
* Renders the list of items within a category or search results via a render function.
|
|
9
|
+
* Only renders when a category is active or search mode is on.
|
|
10
|
+
*/
|
|
11
|
+
export const ComposerPrimitiveTriggerPopoverItems = forwardRef(({ children, "aria-label": ariaLabel, ...props }, forwardedRef) => {
|
|
12
|
+
const { items, activeCategoryId, isSearchMode } = useTriggerPopoverContext();
|
|
13
|
+
if (!activeCategoryId && !isSearchMode)
|
|
14
|
+
return null;
|
|
15
|
+
return (_jsx(Primitive.div, { role: "group", "aria-label": ariaLabel ?? "Items", ...props, ref: forwardedRef, children: children(items) }));
|
|
16
|
+
});
|
|
17
|
+
ComposerPrimitiveTriggerPopoverItems.displayName =
|
|
18
|
+
"ComposerPrimitive.TriggerPopoverItems";
|
|
19
|
+
/**
|
|
20
|
+
* A button that selects a trigger item.
|
|
21
|
+
* Automatically receives `data-highlighted` when keyboard-navigated.
|
|
22
|
+
*/
|
|
23
|
+
export const ComposerPrimitiveTriggerPopoverItem = forwardRef(({ item, index: indexProp, onClick, ...props }, forwardedRef) => {
|
|
24
|
+
const { selectItem, items, highlightedIndex, activeCategoryId, isSearchMode, popoverId, } = useTriggerPopoverContext();
|
|
25
|
+
const handleClick = useCallback(() => {
|
|
26
|
+
selectItem(item);
|
|
27
|
+
}, [selectItem, item]);
|
|
28
|
+
const itemIndex = indexProp ?? items.findIndex((i) => i.id === item.id);
|
|
29
|
+
const isHighlighted = (isSearchMode || activeCategoryId !== null) &&
|
|
30
|
+
itemIndex === highlightedIndex;
|
|
31
|
+
return (_jsx(Primitive.button, { type: "button", role: "option", id: `${popoverId}-option-${item.id}`, "aria-selected": isHighlighted, "data-highlighted": isHighlighted ? "" : undefined, ...props, ref: forwardedRef, onClick: composeEventHandlers(onClick, handleClick) }));
|
|
32
|
+
});
|
|
33
|
+
ComposerPrimitiveTriggerPopoverItem.displayName =
|
|
34
|
+
"ComposerPrimitive.TriggerPopoverItem";
|
|
35
|
+
//# sourceMappingURL=TriggerPopoverItems.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverItems.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverItems.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EAIL,UAAU,EACV,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,mCAAgC;AAiBnE;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,UAAU,CAG5D,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IAClE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAE7E,IAAI,CAAC,gBAAgB,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAEpD,OAAO,CACL,KAAC,SAAS,CAAC,GAAG,IACZ,IAAI,EAAC,OAAO,gBACA,SAAS,IAAI,OAAO,KAC5B,KAAK,EACT,GAAG,EAAE,YAAY,YAEhB,QAAQ,CAAC,KAAK,CAAC,GACF,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,oCAAoC,CAAC,WAAW;IAC9C,uCAAuC,CAAC;AAc1C;;;GAGG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,UAAU,CAG3D,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IAChE,MAAM,EACJ,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,SAAS,GACV,GAAG,wBAAwB,EAAE,CAAC;IAE/B,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAEvB,MAAM,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,MAAM,aAAa,GACjB,CAAC,YAAY,IAAI,gBAAgB,KAAK,IAAI,CAAC;QAC3C,SAAS,KAAK,gBAAgB,CAAC;IAEjC,OAAO,CACL,KAAC,SAAS,CAAC,MAAM,IACf,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,GAAG,SAAS,WAAW,IAAI,CAAC,EAAE,EAAE,mBACrB,aAAa,sBACV,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAC5C,KAAK,EACT,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,GACnD,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,mCAAmC,CAAC,WAAW;IAC7C,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Primitive } from "../../../utils/Primitive.js";
|
|
2
|
+
import { type ComponentRef, type ComponentPropsWithoutRef } from "react";
|
|
3
|
+
export declare namespace ComposerPrimitiveTriggerPopoverPopover {
|
|
4
|
+
type Element = ComponentRef<typeof Primitive.div>;
|
|
5
|
+
type Props = ComponentPropsWithoutRef<typeof Primitive.div>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Renders a container for the trigger popover.
|
|
9
|
+
* Only renders when a trigger character is detected in the composer text.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverRoot trigger="/" adapter={adapter} onSelect={onSelect}>
|
|
14
|
+
* <ComposerPrimitive.Input />
|
|
15
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
16
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverCategories />
|
|
17
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
18
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverRoot>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare const ComposerPrimitiveTriggerPopoverPopover: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
|
|
22
|
+
asChild?: boolean;
|
|
23
|
+
}, "ref"> & {
|
|
24
|
+
render?: import("react").ReactElement | undefined;
|
|
25
|
+
} & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
26
|
+
//# sourceMappingURL=TriggerPopoverPopover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverPopover.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverPopover.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAE9B,MAAM,OAAO,CAAC;AAGf,yBAAiB,sCAAsC,CAAC;IACtD,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;CACpE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sCAAsC;;;;0GAkBjD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Primitive } from "../../../utils/Primitive.js";
|
|
4
|
+
import { forwardRef, } from "react";
|
|
5
|
+
import { useTriggerPopoverContext } from "./TriggerPopoverContext.js";
|
|
6
|
+
/**
|
|
7
|
+
* Renders a container for the trigger popover.
|
|
8
|
+
* Only renders when a trigger character is detected in the composer text.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverRoot trigger="/" adapter={adapter} onSelect={onSelect}>
|
|
13
|
+
* <ComposerPrimitive.Input />
|
|
14
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
15
|
+
* <ComposerPrimitive.Unstable_TriggerPopoverCategories />
|
|
16
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverPopover>
|
|
17
|
+
* </ComposerPrimitive.Unstable_TriggerPopoverRoot>
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export const ComposerPrimitiveTriggerPopoverPopover = forwardRef(({ "aria-label": ariaLabel, ...props }, forwardedRef) => {
|
|
21
|
+
const { open, popoverId, highlightedItemId } = useTriggerPopoverContext();
|
|
22
|
+
if (!open)
|
|
23
|
+
return null;
|
|
24
|
+
return (_jsx(Primitive.div, { role: "listbox", id: popoverId, "aria-label": ariaLabel ?? "Suggestions", "aria-activedescendant": highlightedItemId, "data-state": "open", ...props, ref: forwardedRef }));
|
|
25
|
+
});
|
|
26
|
+
ComposerPrimitiveTriggerPopoverPopover.displayName =
|
|
27
|
+
"ComposerPrimitive.TriggerPopoverPopover";
|
|
28
|
+
//# sourceMappingURL=TriggerPopoverPopover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverPopover.js","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverPopover.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,oCAAiC;AACrD,OAAO,EAGL,UAAU,GACX,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,wBAAwB,EAAE,mCAAgC;AAOnE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,UAAU,CAG9D,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IACxD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,wBAAwB,EAAE,CAAC;IAC1E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,CACL,KAAC,SAAS,CAAC,GAAG,IACZ,IAAI,EAAC,SAAS,EACd,EAAE,EAAE,SAAS,gBACD,SAAS,IAAI,aAAa,2BACf,iBAAiB,gBAC7B,MAAM,KACb,KAAK,EACT,GAAG,EAAE,YAAY,GACjB,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,sCAAsC,CAAC,WAAW;IAChD,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Unstable_TriggerAdapter, Unstable_TriggerCategory, Unstable_TriggerItem, Unstable_DirectiveFormatter } from "@assistant-ui/core";
|
|
2
|
+
import type { AssistantClient } from "@assistant-ui/store";
|
|
3
|
+
export type TriggerPopoverKeyEvent = {
|
|
4
|
+
readonly key: string;
|
|
5
|
+
readonly shiftKey: boolean;
|
|
6
|
+
preventDefault(): void;
|
|
7
|
+
};
|
|
8
|
+
export type SelectItemOverride = (item: Unstable_TriggerItem) => boolean;
|
|
9
|
+
export type OnSelectBehavior = {
|
|
10
|
+
type: "insertDirective";
|
|
11
|
+
formatter: Unstable_DirectiveFormatter;
|
|
12
|
+
} | {
|
|
13
|
+
type: "action";
|
|
14
|
+
handler: (item: Unstable_TriggerItem) => void;
|
|
15
|
+
};
|
|
16
|
+
export type TriggerPopoverResourceOutput = {
|
|
17
|
+
readonly open: boolean;
|
|
18
|
+
readonly query: string;
|
|
19
|
+
readonly activeCategoryId: string | null;
|
|
20
|
+
readonly categories: readonly Unstable_TriggerCategory[];
|
|
21
|
+
readonly items: readonly Unstable_TriggerItem[];
|
|
22
|
+
readonly highlightedIndex: number;
|
|
23
|
+
readonly isSearchMode: boolean;
|
|
24
|
+
/** Stable ID prefix for generating accessible element IDs. */
|
|
25
|
+
readonly popoverId: string;
|
|
26
|
+
/** ID of the currently highlighted item (for aria-activedescendant). */
|
|
27
|
+
readonly highlightedItemId: string | undefined;
|
|
28
|
+
selectCategory(categoryId: string): void;
|
|
29
|
+
goBack(): void;
|
|
30
|
+
selectItem(item: Unstable_TriggerItem): void;
|
|
31
|
+
close(): void;
|
|
32
|
+
handleKeyDown(e: TriggerPopoverKeyEvent): boolean;
|
|
33
|
+
setCursorPosition(pos: number): void;
|
|
34
|
+
registerSelectItemOverride(fn: SelectItemOverride): () => void;
|
|
35
|
+
};
|
|
36
|
+
export declare const TriggerPopoverResource: (props: {
|
|
37
|
+
adapter: Unstable_TriggerAdapter | undefined;
|
|
38
|
+
text: string;
|
|
39
|
+
triggerChar: string;
|
|
40
|
+
onSelect: OnSelectBehavior;
|
|
41
|
+
aui: AssistantClient;
|
|
42
|
+
/** Stable ID for accessible element IDs (pass React's useId() from component layer). */
|
|
43
|
+
popoverId: string;
|
|
44
|
+
}) => import("@assistant-ui/tap").ResourceElement<TriggerPopoverResourceOutput, {
|
|
45
|
+
adapter: Unstable_TriggerAdapter | undefined;
|
|
46
|
+
text: string;
|
|
47
|
+
triggerChar: string;
|
|
48
|
+
onSelect: OnSelectBehavior;
|
|
49
|
+
aui: AssistantClient;
|
|
50
|
+
/** Stable ID for accessible element IDs (pass React's useId() from component layer). */
|
|
51
|
+
popoverId: string;
|
|
52
|
+
}>;
|
|
53
|
+
//# sourceMappingURL=TriggerPopoverResource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TriggerPopoverResource.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/trigger/TriggerPopoverResource.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAqB3D,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,cAAc,IAAI,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC;AAEzE,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,2BAA2B,CAAC;CACxC,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEN,MAAM,MAAM,4BAA4B,GAAG;IAEzC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACzD,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IAG/C,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,IAAI,IAAI,CAAC;IACf,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,KAAK,IAAI,IAAI,CAAC;IACd,aAAa,CAAC,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC;IAGlD,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,0BAA0B,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAC;CAChE,CAAC;AAMF,eAAO,MAAM,sBAAsB;aAStB,uBAAuB,GAAG,SAAS;UACtC,MAAM;iBACC,MAAM;cACT,gBAAgB;SACrB,eAAe;IACpB,wFAAwF;eAC7E,MAAM;;aANR,uBAAuB,GAAG,SAAS;UACtC,MAAM;iBACC,MAAM;cACT,gBAAgB;SACrB,eAAe;IACpB,wFAAwF;eAC7E,MAAM;EAqRpB,CAAC"}
|