@cossistant/next 0.0.14 → 0.0.16

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/bubble.d.ts CHANGED
@@ -3,8 +3,16 @@ import * as React$1 from "react";
3
3
  //#region ../react/src/primitives/bubble.d.ts
4
4
 
5
5
  /**
6
- * Floating action button that toggles the support window. Exposes widget state
7
- * and unread counts to render-prop children for fully custom UI shells.
6
+ * Floating action button that toggles the support window.
7
+ *
8
+ * @example
9
+ * <Bubble>
10
+ * {({ isOpen, unreadCount, toggle }) => (
11
+ * <button onClick={toggle}>
12
+ * {isOpen ? "×" : "💬"} {unreadCount > 0 && `(${unreadCount})`}
13
+ * </button>
14
+ * )}
15
+ * </Bubble>
8
16
  */
9
17
  declare const SupportBubble: React$1.ForwardRefExoticComponent<Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, "children"> & {
10
18
  children?: React$1.ReactNode | ((props: {
package/bubble.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bubble.d.ts","names":[],"sources":["../../react/src/primitives/bubble.tsx"],"sourcesContent":[],"mappings":";;;;;;;;cA0Ba,eAAa,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,qBAAA;aAftB,OAAA,CAAM;;;;;QAMA,OAAA,CAAM"}
1
+ {"version":3,"file":"bubble.d.ts","names":[],"sources":["../../react/src/primitives/bubble.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;cAkCa,eAAa,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,qBAAA;aAvBtB,OAAA,CAAM;;;;;QAMA,OAAA,CAAM"}
package/button2.d.ts ADDED
@@ -0,0 +1 @@
1
+ import "react";
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-timeline.d.ts","names":[],"sources":["../../react/src/primitives/conversation-timeline.tsx"],"sourcesContent":[],"mappings":";;;;;AAQA;AA6CA;;AAAiC,KA7CrB,+BAAA,GA6CqB;EAAA,SAAA,EAAA,MAAA;EAjC7B,SAAM,CAAA,EAAA,OAAA;EACG,OAAA,CAAA,EAAA,OAAA;EAAoC,OAAM,EAAA,OAAA;CAG9C;;;AAkPT;;AAAwC,cArN3B,oBAqN2B,EArNP,OAAA,CAAA,yBAqNO,CArNP,IAqNO,CArNP,OAAA,CAAA,cAqNO,CArNP,cAqNO,CAAA,EAAA,UAAA,CAAA,GAAA;EAAA,QAAA,CAAA,EAtPpC,OAAA,CAAM,SAsP8B,GAAA,CAAA,CAAA,KAAA,EArP3B,+BAqP2B,EAAA,GArPS,OAAA,CAAM,SAqPf,CAAA;EAT5B,OAAM,CAAA,EAAA,OAAA;;UAzOT;EAkP+B,SAAA,CAAA,EAAA,OAAA;EAAA,OAAA,CAAA,EAAA,OAAA;EAwC3B,UAAA,CAAA,EAAA,OAAA;EAAyB,WAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAAA,aAAA,CAAA,EAAA,GAAA,GAAA,IAAA;CAAA,wBAAA,eAAA,CAAA,CAAA;;;;;cA9EzB,+BAA6B,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,eAAA;aAT9B,OAAA,CAAM;;;;;;;;cA+CL,6BAA2B,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,eAAA;aAT5B,OAAA,CAAM;;;;;;;;cAiDL,2BAAyB,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,eAAA;aAT1B,OAAA,CAAM"}
1
+ {"version":3,"file":"conversation-timeline.d.ts","names":[],"sources":["../../react/src/primitives/conversation-timeline.tsx"],"sourcesContent":[],"mappings":";;;;;AASA;AA6CA;;AAAiC,KA7CrB,+BAAA,GA6CqB;EAAA,SAAA,EAAA,MAAA;EAjC7B,SAAM,CAAA,EAAA,OAAA;EACG,OAAA,CAAA,EAAA,OAAA;EAAoC,OAAM,EAAA,OAAA;CAG9C;;;AAsOT;;AAAwC,cAzM3B,oBAyM2B,EAzMP,OAAA,CAAA,yBAyMO,CAzMP,IAyMO,CAzMP,OAAA,CAAA,cAyMO,CAzMP,cAyMO,CAAA,EAAA,UAAA,CAAA,GAAA;EAAA,QAAA,CAAA,EA1OpC,OAAA,CAAM,SA0O8B,GAAA,CAAA,CAAA,KAAA,EAzO3B,+BAyO2B,EAAA,GAzOS,OAAA,CAAM,SAyOf,CAAA;EAT5B,OAAM,CAAA,EAAA,OAAA;;UA7NT;EAsO+B,SAAA,CAAA,EAAA,OAAA;EAAA,OAAA,CAAA,EAAA,OAAA;EAwC3B,UAAA,CAAA,EAAA,OAAA;EAAyB,WAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAAA,aAAA,CAAA,EAAA,GAAA,GAAA,IAAA;CAAA,wBAAA,eAAA,CAAA,CAAA;;;;;cA9EzB,+BAA6B,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,eAAA;aAT9B,OAAA,CAAM;;;;;;;;cA+CL,6BAA2B,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,eAAA;aAT5B,OAAA,CAAM;;;;;;;;cAiDL,2BAAyB,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,eAAA;aAT1B,OAAA,CAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","names":[],"sources":["../../react/src/utils/conversation.ts"],"sourcesContent":[],"mappings":";AAagB,iBAAA,yBAAA,CAAwC,YAAY,EAAZ,YAAY,CAAA,EAAA,OAAA"}
1
+ {"version":3,"file":"conversation.d.ts","names":[],"sources":["../../react/src/utils/conversation.ts"],"sourcesContent":[],"mappings":";AAmBgB,iBAAA,yBAAA,CAAwC,YAAY,EAAZ,YAAY,CAAA,EAAA,OAAA"}
package/hooks/index.d.ts CHANGED
@@ -19,8 +19,9 @@ import { CreateConversationVariables, UseCreateConversationOptions, UseCreateCon
19
19
  import { UseHomePageOptions, UseHomePageReturn, useHomePage } from "../use-home-page.js";
20
20
  import { UseMessageComposerOptions, UseMessageComposerReturn, useMessageComposer } from "../use-message-composer.js";
21
21
  import { UseRealtimeSupportOptions, UseRealtimeSupportResult, useRealtimeSupport } from "../use-realtime-support.js";
22
+ import { UseScrollMaskOptions, UseScrollMaskReturn, useScrollMask } from "../use-scroll-mask.js";
22
23
  import { SendMessageOptions, SendMessageResult, UseSendMessageOptions, UseSendMessageResult, useSendMessage } from "../use-send-message.js";
23
24
  import { UseVisitorReturn, useVisitor } from "../use-visitor.js";
24
25
  import { WindowVisibilityFocusState, useWindowVisibilityFocus } from "../use-window-visibility-focus.js";
25
26
  import "../index2.js";
26
- export { CONVERSATION_AUTO_SEEN_DELAY_MS, ConversationItem, ConversationLifecycleState, ConversationPreviewAssignedAgent, ConversationPreviewLastMessage, ConversationPreviewTypingParticipant, ConversationPreviewTypingState, ConversationTimelineTypingParticipant, ConversationTypingParticipant, CreateConversationVariables, GroupedMessage, SendMessageOptions, SendMessageResult, TimelineEventItem, TimelineToolItem, UseClientResult, UseComposerRefocusOptions, UseComposerRefocusReturn, UseConversationAutoSeenOptions, UseConversationHistoryPageOptions, UseConversationHistoryPageReturn, UseConversationLifecycleOptions, UseConversationLifecycleReturn, UseConversationOptions, UseConversationPageOptions, UseConversationPageReturn, UseConversationPreviewOptions, UseConversationPreviewReturn, UseConversationResult, UseConversationTimelineItemsOptions, UseConversationTimelineItemsResult, UseConversationTimelineOptions, UseConversationTimelineReturn, UseConversationsOptions, UseConversationsResult, UseCreateConversationOptions, UseCreateConversationResult, UseGroupedMessagesOptions, UseGroupedMessagesProps, UseHomePageOptions, UseHomePageReturn, UseMessageComposerOptions, UseMessageComposerReturn, UseMultimodalInputOptions, UseMultimodalInputReturn, UseRealtimeSupportOptions, UseRealtimeSupportResult, UseSendMessageOptions, UseSendMessageResult, UseVisitorReturn, WindowVisibilityFocusState, useClient, useClientQuery, useComposerRefocus, useConversation, useConversationAutoSeen, useConversationHistoryPage, useConversationLifecycle, useConversationPage, useConversationPreview, useConversationSeen, useConversationTimeline, useConversationTimelineItems, useConversationTyping, useConversations, useCreateConversation, useDebouncedConversationSeen, useDefaultMessages, useGroupedMessages, useHomePage, useMessageComposer, useMultimodalInput, useRealtimeSupport, useSendMessage, useVisitor, useWindowVisibilityFocus };
27
+ export { CONVERSATION_AUTO_SEEN_DELAY_MS, ConversationItem, ConversationLifecycleState, ConversationPreviewAssignedAgent, ConversationPreviewLastMessage, ConversationPreviewTypingParticipant, ConversationPreviewTypingState, ConversationTimelineTypingParticipant, ConversationTypingParticipant, CreateConversationVariables, GroupedMessage, SendMessageOptions, SendMessageResult, TimelineEventItem, TimelineToolItem, UseClientResult, UseComposerRefocusOptions, UseComposerRefocusReturn, UseConversationAutoSeenOptions, UseConversationHistoryPageOptions, UseConversationHistoryPageReturn, UseConversationLifecycleOptions, UseConversationLifecycleReturn, UseConversationOptions, UseConversationPageOptions, UseConversationPageReturn, UseConversationPreviewOptions, UseConversationPreviewReturn, UseConversationResult, UseConversationTimelineItemsOptions, UseConversationTimelineItemsResult, UseConversationTimelineOptions, UseConversationTimelineReturn, UseConversationsOptions, UseConversationsResult, UseCreateConversationOptions, UseCreateConversationResult, UseGroupedMessagesOptions, UseGroupedMessagesProps, UseHomePageOptions, UseHomePageReturn, UseMessageComposerOptions, UseMessageComposerReturn, UseMultimodalInputOptions, UseMultimodalInputReturn, UseRealtimeSupportOptions, UseRealtimeSupportResult, UseScrollMaskOptions, UseScrollMaskReturn, UseSendMessageOptions, UseSendMessageResult, UseVisitorReturn, WindowVisibilityFocusState, useClient, useClientQuery, useComposerRefocus, useConversation, useConversationAutoSeen, useConversationHistoryPage, useConversationLifecycle, useConversationPage, useConversationPreview, useConversationSeen, useConversationTimeline, useConversationTimelineItems, useConversationTyping, useConversations, useCreateConversation, useDebouncedConversationSeen, useDefaultMessages, useGroupedMessages, useHomePage, useMessageComposer, useMultimodalInput, useRealtimeSupport, useScrollMask, useSendMessage, useVisitor, useWindowVisibilityFocus };
package/index.d.ts CHANGED
@@ -19,6 +19,7 @@ import { CreateConversationVariables, UseCreateConversationOptions, UseCreateCon
19
19
  import { UseHomePageOptions, UseHomePageReturn, useHomePage } from "./use-home-page.js";
20
20
  import { UseMessageComposerOptions, UseMessageComposerReturn, useMessageComposer } from "./use-message-composer.js";
21
21
  import { UseRealtimeSupportOptions, UseRealtimeSupportResult, useRealtimeSupport } from "./use-realtime-support.js";
22
+ import { UseScrollMaskOptions, UseScrollMaskReturn, useScrollMask } from "./use-scroll-mask.js";
22
23
  import { SendMessageOptions, SendMessageResult, UseSendMessageOptions, UseSendMessageResult, useSendMessage } from "./use-send-message.js";
23
24
  import { UseVisitorReturn, useVisitor } from "./use-visitor.js";
24
25
  import { WindowVisibilityFocusState, useWindowVisibilityFocus } from "./use-window-visibility-focus.js";
@@ -34,6 +35,9 @@ import { SupportBubble } from "./bubble.js";
34
35
  import { Button } from "./button.js";
35
36
  import { ConversationTimeline, ConversationTimelineContainer, ConversationTimelineEmpty, ConversationTimelineLoading } from "./conversation-timeline.js";
36
37
  import { FileInput, MultimodalInput, SupportInput } from "./multimodal-input.js";
38
+ import { Page, PageProps } from "./page.js";
39
+ import { PageRegistryProvider, usePageRegistry, useRegisterPage } from "./page-registry.js";
40
+ import { Router, RouterProps } from "./router.js";
37
41
  import { TimelineItem, TimelineItemContent, TimelineItemTimestamp } from "./timeline-item.js";
38
42
  import { TimelineItemGroup, TimelineItemGroupAvatar, TimelineItemGroupContent, TimelineItemGroupHeader, TimelineItemGroupReadIndicator, TimelineItemGroupSeenIndicator } from "./timeline-item-group.js";
39
43
  import { SupportWindow } from "./window.js";
@@ -55,4 +59,4 @@ import { shouldDisplayConversation } from "./conversation.js";
55
59
  import { PENDING_CONVERSATION_ID, generateShortPrimaryId } from "./id.js";
56
60
  import { useRenderElement } from "./use-render-element.js";
57
61
  import "./utils/index.js";
58
- export { Avatar, AvatarFallback, AvatarImage, SupportBubble as Bubble, Button, CONVERSATION_AUTO_SEEN_DELAY_MS, SupportConfig as Config, ConversationItem, ConversationLifecycleState, ConversationPreviewAssignedAgent, ConversationPreviewLastMessage, ConversationPreviewTypingParticipant, ConversationPreviewTypingState, ConversationTimeline, ConversationTimelineContainer, ConversationTimelineEmpty, ConversationTimelineLoading, ConversationTimelineTypingParticipant, ConversationTypingParticipant, CossistantContextValue, CossistantProviderProps, CreateConversationVariables, FileInput, GroupedMessage, IdentifySupportVisitor, IdentifySupportVisitorProps, SupportInput as Input, MultimodalInput, PENDING_CONVERSATION_ID, RealtimeAuthConfig, RealtimeContextValue, RealtimeEventHandler, RealtimeEventHandlerEntry, RealtimeEventHandlersMap, RealtimeEventMeta, RealtimeProvider, RealtimeProviderProps, SendMessageOptions, SendMessageResult, Support, SupportConfig, SupportConfigProps, SupportContext, SupportProps, SupportProvider, SupportProviderProps, SupportRealtimeProvider, TimelineEventItem, TimelineItem, TimelineItemContent, TimelineItemGroup, TimelineItemGroupAvatar, TimelineItemGroupContent, TimelineItemGroupHeader, TimelineItemGroupReadIndicator, TimelineItemGroupSeenIndicator, TimelineItemTimestamp, TimelineToolItem, TypingIndicator, TypingIndicatorProps, TypingParticipant, TypingParticipantType, UseClientResult, UseComposerRefocusOptions, UseComposerRefocusReturn, UseConversationAutoSeenOptions, UseConversationHistoryPageOptions, UseConversationHistoryPageReturn, UseConversationLifecycleOptions, UseConversationLifecycleReturn, UseConversationOptions, UseConversationPageOptions, UseConversationPageReturn, UseConversationPreviewOptions, UseConversationPreviewReturn, UseConversationResult, UseConversationTimelineItemsOptions, UseConversationTimelineItemsResult, UseConversationTimelineOptions, UseConversationTimelineReturn, UseConversationsOptions, UseConversationsResult, UseCreateConversationOptions, UseCreateConversationResult, UseGroupedMessagesOptions, UseGroupedMessagesProps, UseHomePageOptions, UseHomePageReturn, UseMessageComposerOptions, UseMessageComposerReturn, UseMultimodalInputOptions, UseMultimodalInputReturn, UseRealtimeSupportOptions, UseRealtimeSupportResult, UseSendMessageOptions, UseSendMessageResult, UseSupportValue, UseVisitorReturn, WebSocketContextValue, WebSocketProvider, SupportWindow as Window, WindowVisibilityFocusState, applyConversationSeenEvent, applyConversationTypingEvent, clearTypingFromTimelineItem, clearTypingState, generateShortPrimaryId, hydrateConversationSeen, setTypingState, shouldDisplayConversation, upsertConversationSeen, useClient, useClientQuery, useComposerRefocus, useConversation, useConversationAutoSeen, useConversationHistoryPage, useConversationLifecycle, useConversationPage, useConversationPreview, useConversationSeen, useConversationTimeline, useConversationTimelineItems, useConversationTyping, useConversations, useCreateConversation, useDebouncedConversationSeen, useDefaultMessages, useGroupedMessages, useHomePage, useMessageComposer, useMultimodalInput, useRealtime, useRealtimeConnection, useRealtimeSupport, useRenderElement, useSendMessage, useSupport, useSupportConfig, useSupportStore, useVisitor, useWebSocket, useWindowVisibilityFocus };
62
+ export { Avatar, AvatarFallback, AvatarImage, SupportBubble as Bubble, Button, CONVERSATION_AUTO_SEEN_DELAY_MS, SupportConfig as Config, ConversationItem, ConversationLifecycleState, ConversationPreviewAssignedAgent, ConversationPreviewLastMessage, ConversationPreviewTypingParticipant, ConversationPreviewTypingState, ConversationTimeline, ConversationTimelineContainer, ConversationTimelineEmpty, ConversationTimelineLoading, ConversationTimelineTypingParticipant, ConversationTypingParticipant, CossistantContextValue, CossistantProviderProps, CreateConversationVariables, FileInput, GroupedMessage, IdentifySupportVisitor, IdentifySupportVisitorProps, SupportInput as Input, MultimodalInput, PENDING_CONVERSATION_ID, Page, PageProps, PageRegistryProvider, RealtimeAuthConfig, RealtimeContextValue, RealtimeEventHandler, RealtimeEventHandlerEntry, RealtimeEventHandlersMap, RealtimeEventMeta, RealtimeProvider, RealtimeProviderProps, Router, RouterProps, SendMessageOptions, SendMessageResult, Support, SupportConfig, SupportConfigProps, SupportContext, SupportProps, SupportProvider, SupportProviderProps, SupportRealtimeProvider, TimelineEventItem, TimelineItem, TimelineItemContent, TimelineItemGroup, TimelineItemGroupAvatar, TimelineItemGroupContent, TimelineItemGroupHeader, TimelineItemGroupReadIndicator, TimelineItemGroupSeenIndicator, TimelineItemTimestamp, TimelineToolItem, TypingIndicator, TypingIndicatorProps, TypingParticipant, TypingParticipantType, UseClientResult, UseComposerRefocusOptions, UseComposerRefocusReturn, UseConversationAutoSeenOptions, UseConversationHistoryPageOptions, UseConversationHistoryPageReturn, UseConversationLifecycleOptions, UseConversationLifecycleReturn, UseConversationOptions, UseConversationPageOptions, UseConversationPageReturn, UseConversationPreviewOptions, UseConversationPreviewReturn, UseConversationResult, UseConversationTimelineItemsOptions, UseConversationTimelineItemsResult, UseConversationTimelineOptions, UseConversationTimelineReturn, UseConversationsOptions, UseConversationsResult, UseCreateConversationOptions, UseCreateConversationResult, UseGroupedMessagesOptions, UseGroupedMessagesProps, UseHomePageOptions, UseHomePageReturn, UseMessageComposerOptions, UseMessageComposerReturn, UseMultimodalInputOptions, UseMultimodalInputReturn, UseRealtimeSupportOptions, UseRealtimeSupportResult, UseScrollMaskOptions, UseScrollMaskReturn, UseSendMessageOptions, UseSendMessageResult, UseSupportValue, UseVisitorReturn, WebSocketContextValue, WebSocketProvider, SupportWindow as Window, WindowVisibilityFocusState, applyConversationSeenEvent, applyConversationTypingEvent, clearTypingFromTimelineItem, clearTypingState, generateShortPrimaryId, hydrateConversationSeen, setTypingState, shouldDisplayConversation, upsertConversationSeen, useClient, useClientQuery, useComposerRefocus, useConversation, useConversationAutoSeen, useConversationHistoryPage, useConversationLifecycle, useConversationPage, useConversationPreview, useConversationSeen, useConversationTimeline, useConversationTimelineItems, useConversationTyping, useConversations, useCreateConversation, useDebouncedConversationSeen, useDefaultMessages, useGroupedMessages, useHomePage, useMessageComposer, useMultimodalInput, usePageRegistry, useRealtime, useRealtimeConnection, useRealtimeSupport, useRegisterPage, useRenderElement, useScrollMask, useSendMessage, useSupport, useSupportConfig, useSupportStore, useVisitor, useWebSocket, useWindowVisibilityFocus };
package/index2.d.ts CHANGED
@@ -19,6 +19,7 @@ import { CreateConversationVariables, UseCreateConversationOptions, UseCreateCon
19
19
  import { UseHomePageOptions, UseHomePageReturn, useHomePage } from "./use-home-page.js";
20
20
  import { UseMessageComposerOptions, UseMessageComposerReturn, useMessageComposer } from "./use-message-composer.js";
21
21
  import { UseRealtimeSupportOptions, UseRealtimeSupportResult, useRealtimeSupport } from "./use-realtime-support.js";
22
+ import { UseScrollMaskOptions, UseScrollMaskReturn, useScrollMask } from "./use-scroll-mask.js";
22
23
  import { SendMessageOptions, SendMessageResult, UseSendMessageOptions, UseSendMessageResult, useSendMessage } from "./use-send-message.js";
23
24
  import { UseVisitorReturn, useVisitor } from "./use-visitor.js";
24
25
  import { WindowVisibilityFocusState, useWindowVisibilityFocus } from "./use-window-visibility-focus.js";
package/index2.parts.d.ts CHANGED
@@ -8,6 +8,9 @@ import { SupportBubble } from "./bubble.js";
8
8
  import { Button } from "./button.js";
9
9
  import { ConversationTimeline, ConversationTimelineContainer, ConversationTimelineEmpty, ConversationTimelineLoading } from "./conversation-timeline.js";
10
10
  import { FileInput, MultimodalInput, SupportInput } from "./multimodal-input.js";
11
+ import { Page, PageProps } from "./page.js";
12
+ import { PageRegistryProvider, usePageRegistry, useRegisterPage } from "./page-registry.js";
13
+ import { Router, RouterProps } from "./router.js";
11
14
  import { TimelineItem, TimelineItemContent, TimelineItemTimestamp } from "./timeline-item.js";
12
15
  import { TimelineItemGroup, TimelineItemGroupAvatar, TimelineItemGroupContent, TimelineItemGroupHeader, TimelineItemGroupReadIndicator, TimelineItemGroupSeenIndicator } from "./timeline-item-group.js";
13
16
  import { SupportWindow } from "./window.js";
package/index4.d.ts CHANGED
@@ -7,6 +7,9 @@ import { SupportBubble } from "./bubble.js";
7
7
  import { Button } from "./button.js";
8
8
  import { ConversationTimeline, ConversationTimelineContainer, ConversationTimelineEmpty, ConversationTimelineLoading } from "./conversation-timeline.js";
9
9
  import { FileInput, MultimodalInput, SupportInput } from "./multimodal-input.js";
10
+ import { Page, PageProps } from "./page.js";
11
+ import { PageRegistryProvider, usePageRegistry, useRegisterPage } from "./page-registry.js";
12
+ import { Router, RouterProps } from "./router.js";
10
13
  import { TimelineItem, TimelineItemContent, TimelineItemTimestamp } from "./timeline-item.js";
11
14
  import { TimelineItemGroup, TimelineItemGroupAvatar, TimelineItemGroupContent, TimelineItemGroupHeader, TimelineItemGroupReadIndicator, TimelineItemGroupSeenIndicator } from "./timeline-item-group.js";
12
15
  import { SupportWindow } from "./window.js";
package/index7.d.ts CHANGED
@@ -1,8 +1,12 @@
1
1
  import { SupportLocale, SupportTextContentOverrides } from "./keys.js";
2
+ import { Page, PageProps } from "./page.js";
3
+ import "./index4.js";
2
4
  import "./index6.js";
5
+ import { BubbleSlotProps, ContainerSlotProps, RouterSlotProps } from "./types.js";
6
+ import "./button2.js";
3
7
  import { WebSocketContextValue, WebSocketProvider, useWebSocket } from "./websocket.js";
4
8
  import { useSupportConfig, useSupportStore } from "./support-store.js";
5
- import { ReactElement } from "react";
9
+ import React, { ReactElement } from "react";
6
10
 
7
11
  //#region ../react/src/support/index.d.ts
8
12
  type SupportProps<Locale extends string = SupportLocale> = {
@@ -15,11 +19,31 @@ type SupportProps<Locale extends string = SupportLocale> = {
15
19
  defaultOpen?: boolean;
16
20
  locale?: Locale;
17
21
  content?: SupportTextContentOverrides<Locale>;
22
+ theme?: "light" | "dark";
23
+ slots?: {
24
+ bubble?: React.ComponentType<BubbleSlotProps>;
25
+ container?: React.ComponentType<ContainerSlotProps>;
26
+ router?: React.ComponentType<RouterSlotProps>;
27
+ };
28
+ classNames?: {
29
+ root?: string;
30
+ bubble?: string;
31
+ container?: string;
32
+ };
33
+ children?: React.ReactNode;
18
34
  };
19
35
  /**
20
- * Orchestrates the end-user support experience by nesting realtime and
21
- * content providers. Renders nothing until website data is available to avoid
22
- * flashing incomplete UI.
36
+ * Complete support widget with chat, routing, and real-time features.
37
+ *
38
+ * @example
39
+ * // Zero config
40
+ * <Support />
41
+ *
42
+ * @example
43
+ * // With customization
44
+ * <Support theme="dark" classNames={{ bubble: "bg-purple-600" }}>
45
+ * <Page name="FAQ" component={FAQPage} />
46
+ * </Support>
23
47
  */
24
48
  declare function Support<Locale extends string = SupportLocale>({
25
49
  className,
@@ -30,7 +54,11 @@ declare function Support<Locale extends string = SupportLocale>({
30
54
  defaultMessages,
31
55
  defaultOpen,
32
56
  locale,
33
- content
57
+ content,
58
+ theme,
59
+ slots,
60
+ classNames,
61
+ children
34
62
  }: SupportProps<Locale>): ReactElement | null;
35
63
  //#endregion
36
64
  export { Support, SupportProps };
package/index7.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index7.d.ts","names":[],"sources":["../../react/src/support/index.tsx"],"sourcesContent":[],"mappings":";;;;;;;KAYY,qCAAqC;;;EAArC,KAAA,CAAA,EAAA,OAAY,GAAA,MAAA;EAAyB,WAAA,CAAA,EAAA,OAAA,GAAA,UAAA;EAM9B,YAAA,CAAA,EAAA,MAAA,EAAA;EAET,eAAA,CAAA,EAFS,cAET,EAAA;EAC6B,WAAA,CAAA,EAAA,OAAA;EAA5B,MAAA,CAAA,EADD,MACC;EAA2B,OAAA,CAAA,EAA3B,2BAA2B,CAAC,MAAD,CAAA;AAStC,CAAA;;;;;;AAKC,iBALe,OAKf,CAAA,eAAA,MAAA,GAL+C,aAK/C,CAAA,CAAA;EAAA,SAAA;EAAA,QAAA;EAAA,KAAA;EAAA,WAAA;EAAA,YAAA;EAAA,eAAA;EAAA,WAAA;EAAA,MAAA;EAAA;AAAA,CAAA,EAKE,YALF,CAKe,MALf,CAAA,CAAA,EAKyB,YALzB,GAAA,IAAA"}
1
+ {"version":3,"file":"index7.d.ts","names":[],"sources":["../../react/src/support/index.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;KAmBY,qCAAqC;;;;;;EAArC,eAAY,CAAA,EAOL,cAPK,EAAA;EAAyB,WAAA,CAAA,EAAA,OAAA;EAO9B,MAAA,CAAA,EAET,MAFS;EAET,OAAA,CAAA,EACC,2BADD,CAC6B,MAD7B,CAAA;EAC6B,KAAA,CAAA,EAAA,OAAA,GAAA,MAAA;EAA5B,KAAA,CAAA,EAAA;IAOoB,MAAA,CAAA,EAApB,KAAA,CAAM,aAAc,CAAA,eAAA,CAAA;IAAd,SAAA,CAAA,EACH,KAAA,CAAM,aADH,CACiB,kBADjB,CAAA;IACiB,MAAA,CAAA,EACvB,KAAA,CAAM,aADiB,CACH,eADG,CAAA;EAApB,CAAA;EACiB,UAAA,CAAA,EAAA;IAAd,IAAA,CAAA,EAAA,MAAA;IAWC,MAAA,CAAA,EAAA,MAAA;IAAS,SAAA,CAAA,EAAA,MAAA;EAgBX,CAAA;EAAgC,QAAA,CAAA,EAhBpC,KAAA,CAAM,SAgB8B;CAC/C;;;;;;;;;;;;;;AAaE,iBAda,OAcb,CAAA,eAAA,MAAA,GAd6C,aAc7C,CAAA,CAAA;EAAA,SAAA;EAAA,QAAA;EAAA,KAAA;EAAA,WAAA;EAAA,YAAA;EAAA,eAAA;EAAA,WAAA;EAAA,MAAA;EAAA,OAAA;EAAA,KAAA;EAAA,KAAA;EAAA,UAAA;EAAA;AAAA,CAAA,EAAA,YAAA,CAAa,MAAb,CAAA,CAAA,EAAuB,YAAvB,GAAA,IAAA"}
@@ -7,7 +7,7 @@ import * as React$1 from "react";
7
7
  * clipboard uploads and auto-resizing while remaining composable via
8
8
  * `asChild`.
9
9
  */
10
- declare const MultimodalInput: React$1.ForwardRefExoticComponent<Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "onChange" | "value"> & {
10
+ declare const MultimodalInput: React$1.ForwardRefExoticComponent<Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "value" | "onChange"> & {
11
11
  value: string;
12
12
  onChange: (value: string) => void;
13
13
  onSubmit?: () => void;
@@ -25,7 +25,7 @@ declare const FileInput: React$1.ForwardRefExoticComponent<React$1.InputHTMLAttr
25
25
  onFileSelect?: (files: File[]) => void;
26
26
  asChild?: boolean;
27
27
  } & React$1.RefAttributes<HTMLInputElement>>;
28
- declare const SupportInput: React$1.ForwardRefExoticComponent<Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "onChange" | "value"> & {
28
+ declare const SupportInput: React$1.ForwardRefExoticComponent<Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, "value" | "onChange"> & {
29
29
  value: string;
30
30
  onChange: (value: string) => void;
31
31
  onSubmit?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"multimodal-input.d.ts","names":[],"sources":["../../react/src/primitives/multimodal-input.tsx"],"sourcesContent":[],"mappings":";;;;;;AA2IA;;;AARwB,cA7GX,eA6GW,EA7GI,OAAA,CAAA,yBA6GJ,CA7GI,IA6GJ,CA7GI,OAAA,CAAA,sBA6GJ,CA7GI,mBA6GJ,CAAA,EAAA,UAAA,GAAA,OAAA,CAAA,GAAA;;;EAQF,QAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAAA,YAAA,CAAA,EAAA,CAAA,KAAA,EAjIE,IAiIF,EAAA,EAAA,GAAA,IAAA;EAqCT,OAAA,CAAA,EAAA,OAA8B;EAAlB,SAAA,CAAA,EAAA,MAAA;EAAA,KAAA,CAAA,EAnKhB,KAmKgB,GAAA,IAAA;EAAA,QAAA,CAAA,EAAA,OAAA;CAtKD,wBAAA,oBAAA,CAAA,CAAA;;;;;cAiIX,WAAS,OAAA,CAAA,0BAAA,OAAA,CAAA,oBAAA;yBARE;;;cA6CX,cAAY,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,uBAAA;;;;yBAtKD;;;UAGf"}
1
+ {"version":3,"file":"multimodal-input.d.ts","names":[],"sources":["../../react/src/primitives/multimodal-input.tsx"],"sourcesContent":[],"mappings":";;;;;;AA2IA;;;AARwB,cA7GX,eA6GW,EA7GI,OAAA,CAAA,yBA6GJ,CA7GI,IA6GJ,CA7GI,OAAA,CAAA,sBA6GJ,CA7GI,mBA6GJ,CAAA,EAAA,OAAA,GAAA,UAAA,CAAA,GAAA;;;EAQF,QAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAAA,YAAA,CAAA,EAAA,CAAA,KAAA,EAjIE,IAiIF,EAAA,EAAA,GAAA,IAAA;EAqCT,OAAA,CAAA,EAAA,OAA8B;EAAlB,SAAA,CAAA,EAAA,MAAA;EAAA,KAAA,CAAA,EAnKhB,KAmKgB,GAAA,IAAA;EAAA,QAAA,CAAA,EAAA,OAAA;CAtKD,wBAAA,oBAAA,CAAA,CAAA;;;;;cAiIX,WAAS,OAAA,CAAA,0BAAA,OAAA,CAAA,oBAAA;yBARE;;;cA6CX,cAAY,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,uBAAA;;;;yBAtKD;;;UAGf"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cossistant/next",
3
3
  "type": "module",
4
- "version": "0.0.14",
4
+ "version": "0.0.16",
5
5
  "private": false,
6
6
  "author": "Cossistant team",
7
7
  "description": "Next.js-ready SDK for building AI-powered support/chat widgets. Hooks + primitives, WS-driven, TypeScript-first. Next.js-ready, Tailwind optional.",
@@ -91,7 +91,7 @@
91
91
  "access": "public"
92
92
  },
93
93
  "dependencies": {
94
- "@cossistant/react": "0.0.14",
94
+ "@cossistant/react": "0.0.16",
95
95
  "tailwindcss": "^4.1.13"
96
96
  },
97
97
  "peerDependencies": {
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+
3
+ //#region ../react/src/primitives/page-registry.d.ts
4
+ type PageComponent<P = unknown> = React.ComponentType<{
5
+ params?: P;
6
+ }>;
7
+ type PageRegistry = Map<string, PageComponent>;
8
+ /**
9
+ * Context provider for declarative page registration.
10
+ *
11
+ * @example
12
+ * <PageRegistryProvider>
13
+ * <Page name="HOME" component={HomePage} />
14
+ * <Router page={currentPage} />
15
+ * </PageRegistryProvider>
16
+ */
17
+ declare const PageRegistryProvider: React.FC<{
18
+ children: React.ReactNode;
19
+ }>;
20
+ /**
21
+ * Access the page registry (used internally by Router and Page).
22
+ */
23
+ declare const usePageRegistry: () => PageRegistry;
24
+ /**
25
+ * Register a page in the registry (used internally by Page component).
26
+ */
27
+ declare const useRegisterPage: (name: string, component: PageComponent) => void;
28
+ //#endregion
29
+ export { PageRegistryProvider, usePageRegistry, useRegisterPage };
30
+ //# sourceMappingURL=page-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-registry.d.ts","names":[],"sources":["../../react/src/primitives/page-registry.tsx"],"sourcesContent":[],"mappings":";;;KAEK,6BAA6B,KAAA,CAAM;WAAyB;AAFC,CAAA,CAAA;AAEb,KAEhD,YAAA,GAAe,GAAH,CAAA,MAAA,EAAe,aAAA,CAAA;AAahC;AAeA;AAKA;;;;;;;cApBa,sBAAsB,KAAA,CAAM;YAAe,KAAA,CAAM;;;;;cAejD,uBAAe;;;;cAKf,2CAA4C"}
package/page.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ //#region ../react/src/primitives/page.d.ts
2
+ type PageProps<Params = unknown> = {
3
+ name: string;
4
+ component: React.ComponentType<{
5
+ params?: Params;
6
+ }>;
7
+ };
8
+ /**
9
+ * Declaratively register a page component.
10
+ *
11
+ * @example
12
+ * <Page name="HOME" component={HomePage} />
13
+ * <Page name="SETTINGS" component={SettingsPage} />
14
+ */
15
+ declare function Page<Params = unknown>({
16
+ name,
17
+ component
18
+ }: PageProps<Params>): null;
19
+ //#endregion
20
+ export { Page, PageProps };
21
+ //# sourceMappingURL=page.d.ts.map
package/page.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","names":[],"sources":["../../react/src/primitives/page.tsx"],"sourcesContent":[],"mappings":";KAEY;EAAA,IAAA,EAAA,MAAS;EAYL,SAAI,EAVR,KAAA,CAAM,aAUE,CAAA;IACnB,MAAA,CAAA,EAX0C,MAW1C;EACA,CAAA,CAAA;CACY;;;;;;;;iBAHG;;;GAGb,UAAU"}
@@ -7,8 +7,11 @@ import { SupportBubble } from "../bubble.js";
7
7
  import { Button } from "../button.js";
8
8
  import { ConversationTimeline, ConversationTimelineContainer, ConversationTimelineEmpty, ConversationTimelineLoading } from "../conversation-timeline.js";
9
9
  import { FileInput, MultimodalInput, SupportInput } from "../multimodal-input.js";
10
+ import { Page, PageProps } from "../page.js";
11
+ import { PageRegistryProvider, usePageRegistry, useRegisterPage } from "../page-registry.js";
12
+ import { Router, RouterProps } from "../router.js";
10
13
  import { TimelineItem, TimelineItemContent, TimelineItemTimestamp } from "../timeline-item.js";
11
14
  import { TimelineItemGroup, TimelineItemGroupAvatar, TimelineItemGroupContent, TimelineItemGroupHeader, TimelineItemGroupReadIndicator, TimelineItemGroupSeenIndicator } from "../timeline-item-group.js";
12
15
  import { SupportWindow } from "../window.js";
13
16
  import "../index4.js";
14
- export { Avatar, AvatarFallback, AvatarImage, SupportBubble as Bubble, Button, SupportConfig as Config, ConversationTimeline, ConversationTimelineContainer, ConversationTimelineEmpty, ConversationTimelineLoading, FileInput, SupportInput as Input, MultimodalInput, TimelineItem, TimelineItemContent, TimelineItemGroup, TimelineItemGroupAvatar, TimelineItemGroupContent, TimelineItemGroupHeader, TimelineItemGroupReadIndicator, TimelineItemGroupSeenIndicator, TimelineItemTimestamp, TypingIndicator, TypingIndicatorProps, TypingParticipant, TypingParticipantType, SupportWindow as Window };
17
+ export { Avatar, AvatarFallback, AvatarImage, SupportBubble as Bubble, Button, SupportConfig as Config, ConversationTimeline, ConversationTimelineContainer, ConversationTimelineEmpty, ConversationTimelineLoading, FileInput, SupportInput as Input, MultimodalInput, Page, PageProps, PageRegistryProvider, Router, RouterProps, TimelineItem, TimelineItemContent, TimelineItemGroup, TimelineItemGroupAvatar, TimelineItemGroupContent, TimelineItemGroupHeader, TimelineItemGroupReadIndicator, TimelineItemGroupSeenIndicator, TimelineItemTimestamp, TypingIndicator, TypingIndicatorProps, TypingParticipant, TypingParticipantType, SupportWindow as Window, usePageRegistry, useRegisterPage };
package/router.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ import React from "react";
2
+
3
+ //#region ../react/src/primitives/router.d.ts
4
+ type RouterProps = {
5
+ /**
6
+ * Current page name to render
7
+ */
8
+ page: string;
9
+ /**
10
+ * Params to pass to the page component
11
+ */
12
+ params?: unknown;
13
+ /**
14
+ * Fallback component when page is not found
15
+ */
16
+ fallback?: React.ComponentType<{
17
+ params?: unknown;
18
+ }>;
19
+ /**
20
+ * Children (Page components for registration)
21
+ */
22
+ children?: React.ReactNode;
23
+ };
24
+ /**
25
+ * Router that renders registered pages based on current page name.
26
+ *
27
+ * @example
28
+ * <Router page={currentPage} params={params} fallback={NotFoundPage}>
29
+ * <Page name="HOME" component={HomePage} />
30
+ * </Router>
31
+ */
32
+ declare const Router: React.FC<RouterProps>;
33
+ //#endregion
34
+ export { Router, RouterProps };
35
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","names":[],"sources":["../../react/src/primitives/router.tsx"],"sourcesContent":[],"mappings":";;;KAGY,WAAA;;AAAZ;AA8BA;;;;;;;;;aAhBY,KAAA,CAAM;;;;;;aAKN,KAAA,CAAM;;;;;;;;;;cAWL,QAAQ,KAAA,CAAM,GAAG"}
@@ -1,14 +1,17 @@
1
1
  //#region ../react/src/support/store/support-store.d.ts
2
2
  type UseSupportStoreResult = SupportStoreState & Pick<SupportStore, "navigate" | "replace" | "goBack" | "open" | "close" | "toggle" | "updateConfig" | "reset">;
3
3
  /**
4
- * React hook wrapper around the shared support widget store. Exposes both the
5
- * raw state and imperative actions so UI components can drive navigation or
6
- * change configuration without importing the store singleton directly.
4
+ * Access the support widget store state and actions.
5
+ *
6
+ * @example
7
+ * const { isOpen, navigate, toggle } = useSupportStore();
7
8
  */
8
9
  declare function useSupportStore(): UseSupportStoreResult;
9
10
  /**
10
- * Shortcut hook that returns the persisted widget configuration along with
11
- * open/close/toggle helpers for common UI bindings.
11
+ * Access widget configuration (isOpen, size) and toggle helpers.
12
+ *
13
+ * @example
14
+ * const { isOpen, open, close, toggle } = useSupportConfig();
12
15
  */
13
16
  declare const useSupportConfig: () => {
14
17
  open: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"support-store.d.ts","names":[],"sources":["../../react/src/support/store/support-store.ts"],"sourcesContent":[],"mappings":";AA8CY,KAAA,qBAAA,GAAwB,iBAAH,GAChC,IADgC,CAE/B,YAF+B,EAAA,UAAA,GAAA,SAAA,GAAA,QAAA,GAAA,MAAA,GAAA,OAAA,GAAA,QAAA,GAAA,cAAA,GAAA,OAAA,CAAA;;;;;AAkBjC;AAuBa,iBAvBG,eAAA,CAAA,CAmCf,EAnCkC,qBAmClC;;;;;cAZY"}
1
+ {"version":3,"file":"support-store.d.ts","names":[],"sources":["../../react/src/support/store/support-store.ts"],"sourcesContent":[],"mappings":";AA8CY,KAAA,qBAAA,GAAwB,iBAAH,GAChC,IADgC,CAE/B,YAF+B,EAAA,UAAA,GAAA,SAAA,GAAA,QAAA,GAAA,MAAA,GAAA,OAAA,GAAA,QAAA,GAAA,cAAA,GAAA,OAAA,CAAA;;;;;AAmBjC;AAyBA;iBAzBgB,eAAA,CAAA,GAAmB;;;;;;;cAyBtB"}
package/support.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
2
- @layer base{.cossistant{scroll-behavior:smooth;color-scheme:normal;--co-font-sans:var(--co-theme-font-sans,"Geist","Inter",sans-serif);--co-font-mono:var(--co-theme-font-mono,"Geist Mono","Inter Mono",monospace);--co-radius:var(--co-theme-radius,.625rem);--co-background-base:var(--co-theme-background,oklch(99% 0 0));--co-foreground-base:var(--co-theme-foreground,oklch(14.5% 0 0));--co-popover-base:var(--co-theme-popover,var(--co-background-base));--co-popover-foreground-base:var(--co-theme-popover-foreground,var(--co-foreground-base));--co-primary-base:var(--co-theme-primary,oklch(20.5% 0 0));--co-primary-foreground-base:var(--co-theme-primary-foreground,oklch(98.5% 0 0));--co-secondary-base:var(--co-theme-secondary,oklch(97% 0 0));--co-secondary-foreground-base:var(--co-theme-secondary-foreground,oklch(20.5% 0 0));--co-border-base:var(--co-theme-border,oklch(92.2% 0 0));--co-input-base:var(--co-theme-input,oklch(92.2% 0 0));--co-ring-base:var(--co-theme-ring,var(--co-primary-base));--co-accent-base:var(--co-theme-accent,var(--co-primary-base));--co-accent-foreground-base:var(--co-theme-accent-foreground,var(--co-primary-foreground-base));--co-background-50-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-50-mix:color-mix(in oklch,var(--co-background-base)98%,var(--co-foreground-base))}}.cossistant{--co-background-100-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-100-mix:color-mix(in oklch,var(--co-background-base)97%,var(--co-foreground-base))}}.cossistant{--co-background-200-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-200-mix:color-mix(in oklch,var(--co-background-base)96%,var(--co-foreground-base))}}.cossistant{--co-background-300-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-300-mix:color-mix(in oklch,var(--co-background-base)95%,var(--co-foreground-base))}}.cossistant{--co-background-400-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-400-mix:color-mix(in oklch,var(--co-background-base)94%,var(--co-foreground-base))}}.cossistant{--co-background-500-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-500-mix:color-mix(in oklch,var(--co-background-base)93%,var(--co-foreground-base))}}.cossistant{--co-background-600-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-600-mix:color-mix(in oklch,var(--co-background-base)92%,var(--co-foreground-base))}}.cossistant{--co-muted-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-muted-mix:color-mix(in oklch,var(--co-background-base)85%,var(--co-foreground-base))}}.cossistant{--co-muted-foreground-mix:var(--co-foreground-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-muted-foreground-mix:color-mix(in oklch,var(--co-foreground-base)70%,white)}}.cossistant{--co-background:var(--co-background-base);--co-background-50:var(--co-theme-background-50,var(--co-background-50-mix,oklch(92% 0 0)));--co-background-100:var(--co-theme-background-100,var(--co-background-100-mix,oklch(93% 0 0)));--co-background-200:var(--co-theme-background-200,var(--co-background-200-mix,oklch(94% 0 0)));--co-background-300:var(--co-theme-background-300,var(--co-background-300-mix,oklch(95% 0 0)));--co-background-400:var(--co-theme-background-400,var(--co-background-400-mix,oklch(96% 0 0)));--co-background-500:var(--co-theme-background-500,var(--co-background-500-mix,oklch(97% 0 0)));--co-background-600:var(--co-theme-background-600,var(--co-background-600-mix,oklch(98% 0 0)));--co-foreground:var(--co-foreground-base);--co-popover:var(--co-popover-base);--co-popover-foreground:var(--co-popover-foreground-base);--co-primary:var(--co-primary-base);--co-primary-foreground:var(--co-primary-foreground-base);--co-secondary:var(--co-secondary-base);--co-secondary-foreground:var(--co-secondary-foreground-base);--co-muted:var(--co-theme-muted,var(--co-muted-mix,oklch(97% 0 0)));--co-muted-foreground:var(--co-theme-muted-foreground,var(--co-muted-foreground-mix,oklch(55.6% 0 0)));--co-border:var(--co-border-base);--co-input:var(--co-input-base);--co-ring:var(--co-ring-base);--co-accent:var(--co-accent-base);--co-accent-foreground:var(--co-accent-foreground-base);--co-pink:var(--co-theme-pink,oklch(76.3% .152 354));--co-yellow:var(--co-theme-yellow,oklch(86.4% .144 99));--co-blue:var(--co-theme-blue,oklch(72.5% .132 241));--co-orange:var(--co-theme-orange,oklch(74.5% .166 50));--co-destructive:var(--co-theme-destructive,oklch(57.7% .245 27.325));--co-destructive-foreground:var(--co-theme-destructive-foreground,oklch(57.7% .245 27.325));--co-success:var(--co-theme-success,oklch(71.7% .18 142));--co-success-foreground:var(--co-theme-success-foreground,oklch(26.5% .052 142.7));--co-neutral:var(--co-theme-neutral,oklch(60.8% 0 0));--co-neutral-foreground:var(--co-theme-neutral-foreground,oklch(25.6% 0 0));--co-warning:var(--co-theme-warning,oklch(86.4% .144 99));--co-warning-foreground:var(--co-theme-warning-foreground,oklch(41.4% .071 99))}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-base:var(--co-theme-background,oklch(15.5% 0 0));--co-foreground-base:var(--co-theme-foreground,oklch(98.5% 0 0));--co-popover-base:var(--co-theme-popover,oklch(14.5% 0 0));--co-popover-foreground-base:var(--co-theme-popover-foreground,oklch(98.5% 0 0));--co-primary-base:var(--co-theme-primary,oklch(98.5% 0 0));--co-primary-foreground-base:var(--co-theme-primary-foreground,oklch(20.5% 0 0));--co-secondary-base:var(--co-theme-secondary,oklch(26.9% 0 0));--co-secondary-foreground-base:var(--co-theme-secondary-foreground,oklch(98.5% 0 0));--co-border-base:var(--co-theme-border,oklch(26.9% 0 0));--co-input-base:var(--co-theme-input,oklch(26.9% 0 0));--co-ring-base:var(--co-theme-ring,var(--co-primary-base));--co-accent-base:var(--co-theme-accent,var(--co-primary-base));--co-accent-foreground-base:var(--co-theme-accent-foreground,var(--co-primary-foreground-base));--co-muted-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-muted-mix:color-mix(in oklch,var(--co-background-base)55%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-muted-foreground-mix:var(--co-foreground-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-muted-foreground-mix:color-mix(in oklch,var(--co-foreground-base)65%,white)}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-50-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-50-mix:color-mix(in oklch,var(--co-background-base)98%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-100-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-100-mix:color-mix(in oklch,var(--co-background-base)96%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-200-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-200-mix:color-mix(in oklch,var(--co-background-base)94%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-300-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-300-mix:color-mix(in oklch,var(--co-background-base)92%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-400-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-400-mix:color-mix(in oklch,var(--co-background-base)90%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-500-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-500-mix:color-mix(in oklch,var(--co-background-base)88%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-600-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-600-mix:color-mix(in oklch,var(--co-background-base)86%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-pink:var(--co-theme-pink,oklch(84.2% .109 354));--co-yellow:var(--co-theme-yellow,oklch(90.3% .111 99));--co-blue:var(--co-theme-blue,oklch(79.8% .089 241));--co-orange:var(--co-theme-orange,oklch(68.2% .194 50));--co-destructive:var(--co-theme-destructive,oklch(39.6% .141 25.723));--co-destructive-foreground:var(--co-theme-destructive-foreground,oklch(63.7% .237 25.331));--co-success:var(--co-theme-success,oklch(60% .15 142));--co-success-foreground:var(--co-theme-success-foreground,oklch(85% .12 142));--co-neutral:var(--co-theme-neutral,oklch(50% 0 0));--co-neutral-foreground:var(--co-theme-neutral-foreground,oklch(85% 0 0));--co-warning:var(--co-theme-warning,oklch(90.3% .111 99));--co-warning-foreground:var(--co-theme-warning-foreground,oklch(85% .1 99))}}@layer utilities{.cossistant .animation-delay-0{animation-delay:0s}.cossistant .animation-delay-200{animation-delay:.2s}.cossistant .animation-delay-400{animation-delay:.4s}.cossistant .dot-bounce-1{animation:1.4s infinite bounce-dot}.cossistant .dot-bounce-2{animation:1.4s .16s infinite bounce-dot}.cossistant .dot-bounce-3{animation:1.4s .32s infinite bounce-dot}}
2
+ @layer base{.cossistant{scroll-behavior:smooth;color:var(--co-primary);color-scheme:normal;--co-font-sans:var(--co-theme-font-sans,"Geist","Inter",sans-serif);--co-font-mono:var(--co-theme-font-mono,"Geist Mono","Inter Mono",monospace);--co-radius:var(--co-theme-radius,.625rem);--co-background-base:var(--co-theme-background,oklch(99% 0 0));--co-foreground-base:var(--co-theme-foreground,oklch(20.5% 0 0));--co-popover-base:var(--co-theme-popover,var(--co-background-base));--co-popover-foreground-base:var(--co-theme-popover-foreground,var(--co-foreground-base));--co-primary-base:var(--co-theme-primary,oklch(14.5% 0 0));--co-primary-foreground-base:var(--co-theme-primary-foreground,oklch(98.5% 0 0));--co-secondary-base:var(--co-theme-secondary,oklch(97% 0 0));--co-secondary-foreground-base:var(--co-theme-secondary-foreground,oklch(14.5% 0 0));--co-border-base:var(--co-theme-border,oklch(92.2% 0 0));--co-input-base:var(--co-theme-input,oklch(92.2% 0 0));--co-ring-base:var(--co-theme-ring,var(--co-primary-base));--co-accent-base:var(--co-theme-accent,var(--co-primary-base));--co-accent-foreground-base:var(--co-theme-accent-foreground,var(--co-primary-foreground-base));--co-background-50-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-50-mix:color-mix(in oklch,var(--co-background-base)98%,var(--co-foreground-base))}}.cossistant{--co-background-100-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-100-mix:color-mix(in oklch,var(--co-background-base)97%,var(--co-foreground-base))}}.cossistant{--co-background-200-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-200-mix:color-mix(in oklch,var(--co-background-base)96%,var(--co-foreground-base))}}.cossistant{--co-background-300-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-300-mix:color-mix(in oklch,var(--co-background-base)95%,var(--co-foreground-base))}}.cossistant{--co-background-400-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-400-mix:color-mix(in oklch,var(--co-background-base)94%,var(--co-foreground-base))}}.cossistant{--co-background-500-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-500-mix:color-mix(in oklch,var(--co-background-base)93%,var(--co-foreground-base))}}.cossistant{--co-background-600-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-background-600-mix:color-mix(in oklch,var(--co-background-base)92%,var(--co-foreground-base))}}.cossistant{--co-muted-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-muted-mix:color-mix(in oklch,var(--co-background-base)85%,var(--co-foreground-base))}}.cossistant{--co-muted-foreground-mix:var(--co-foreground-base)}@supports (color:color-mix(in lab, red, red)){.cossistant{--co-muted-foreground-mix:color-mix(in oklch,var(--co-foreground-base)70%,white)}}.cossistant{--co-background:var(--co-background-base);--co-background-50:var(--co-theme-background-50,var(--co-background-50-mix,oklch(92% 0 0)));--co-background-100:var(--co-theme-background-100,var(--co-background-100-mix,oklch(93% 0 0)));--co-background-200:var(--co-theme-background-200,var(--co-background-200-mix,oklch(94% 0 0)));--co-background-300:var(--co-theme-background-300,var(--co-background-300-mix,oklch(95% 0 0)));--co-background-400:var(--co-theme-background-400,var(--co-background-400-mix,oklch(96% 0 0)));--co-background-500:var(--co-theme-background-500,var(--co-background-500-mix,oklch(97% 0 0)));--co-background-600:var(--co-theme-background-600,var(--co-background-600-mix,oklch(98% 0 0)));--co-foreground:var(--co-foreground-base);--co-popover:var(--co-popover-base);--co-popover-foreground:var(--co-popover-foreground-base);--co-primary:var(--co-primary-base);--co-primary-foreground:var(--co-primary-foreground-base);--co-secondary:var(--co-secondary-base);--co-secondary-foreground:var(--co-secondary-foreground-base);--co-muted:var(--co-theme-muted,var(--co-muted-mix,oklch(97% 0 0)));--co-muted-foreground:var(--co-theme-muted-foreground,var(--co-muted-foreground-mix,oklch(55.6% 0 0)));--co-border:var(--co-border-base);--co-input:var(--co-input-base);--co-ring:var(--co-ring-base);--co-accent:var(--co-accent-base);--co-accent-foreground:var(--co-accent-foreground-base);--co-pink:var(--co-theme-pink,oklch(76.3% .152 354));--co-yellow:var(--co-theme-yellow,oklch(86.4% .144 99));--co-blue:var(--co-theme-blue,oklch(72.5% .132 241));--co-orange:var(--co-theme-orange,oklch(74.5% .166 50));--co-destructive:var(--co-theme-destructive,oklch(57.7% .245 27.325));--co-destructive-foreground:var(--co-theme-destructive-foreground,oklch(57.7% .245 27.325));--co-success:var(--co-theme-success,oklch(71.7% .18 142));--co-success-foreground:var(--co-theme-success-foreground,oklch(26.5% .052 142.7));--co-neutral:var(--co-theme-neutral,oklch(60.8% 0 0));--co-neutral-foreground:var(--co-theme-neutral-foreground,oklch(25.6% 0 0));--co-warning:var(--co-theme-warning,oklch(86.4% .144 99));--co-warning-foreground:var(--co-theme-warning-foreground,oklch(41.4% .071 99))}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-base:var(--co-theme-background,oklch(15.5% 0 0));--co-foreground-base:var(--co-theme-foreground,oklch(95% 0 0));--co-popover-base:var(--co-theme-popover,oklch(14.5% 0 0));--co-popover-foreground-base:var(--co-theme-popover-foreground,oklch(95% 0 0));--co-primary-base:var(--co-theme-primary,oklch(98.5% 0 0));--co-primary-foreground-base:var(--co-theme-primary-foreground,oklch(14.5% 0 0));--co-secondary-base:var(--co-theme-secondary,oklch(26.9% 0 0));--co-secondary-foreground-base:var(--co-theme-secondary-foreground,oklch(95% 0 0));--co-border-base:var(--co-theme-border,oklch(26.9% 0 0));--co-input-base:var(--co-theme-input,oklch(26.9% 0 0));--co-ring-base:var(--co-theme-ring,var(--co-primary-base));--co-accent-base:var(--co-theme-accent,var(--co-primary-base));--co-accent-foreground-base:var(--co-theme-accent-foreground,var(--co-primary-foreground-base));--co-muted-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-muted-mix:color-mix(in oklch,var(--co-background-base)55%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-muted-foreground-mix:var(--co-foreground-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-muted-foreground-mix:color-mix(in oklch,var(--co-foreground-base)65%,white)}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-50-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-50-mix:color-mix(in oklch,var(--co-background-base)98%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-100-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-100-mix:color-mix(in oklch,var(--co-background-base)96%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-200-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-200-mix:color-mix(in oklch,var(--co-background-base)94%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-300-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-300-mix:color-mix(in oklch,var(--co-background-base)92%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-400-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-400-mix:color-mix(in oklch,var(--co-background-base)90%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-500-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-500-mix:color-mix(in oklch,var(--co-background-base)88%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-600-mix:var(--co-background-base)}@supports (color:color-mix(in lab, red, red)){.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-background-600-mix:color-mix(in oklch,var(--co-background-base)86%,var(--co-foreground-base))}}.dark .cossistant,.cossistant[data-color-scheme=dark]{--co-pink:var(--co-theme-pink,oklch(84.2% .109 354));--co-yellow:var(--co-theme-yellow,oklch(90.3% .111 99));--co-blue:var(--co-theme-blue,oklch(79.8% .089 241));--co-orange:var(--co-theme-orange,oklch(68.2% .194 50));--co-destructive:var(--co-theme-destructive,oklch(39.6% .141 25.723));--co-destructive-foreground:var(--co-theme-destructive-foreground,oklch(63.7% .237 25.331));--co-success:var(--co-theme-success,oklch(60% .15 142));--co-success-foreground:var(--co-theme-success-foreground,oklch(85% .12 142));--co-neutral:var(--co-theme-neutral,oklch(50% 0 0));--co-neutral-foreground:var(--co-theme-neutral-foreground,oklch(85% 0 0));--co-warning:var(--co-theme-warning,oklch(90.3% .111 99));--co-warning-foreground:var(--co-theme-warning-foreground,oklch(85% .1 99))}*{scrollbar-color:initial;scrollbar-width:initial}}@layer utilities{.cossistant .animation-delay-0{animation-delay:0s}.cossistant .animation-delay-200{animation-delay:.2s}.cossistant .animation-delay-400{animation-delay:.4s}.cossistant .dot-bounce-1{animation:1.4s infinite bounce-dot}.cossistant .dot-bounce-2{animation:1.4s .16s infinite bounce-dot}.cossistant .dot-bounce-3{animation:1.4s .32s infinite bounce-dot}}
package/types.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+
3
+ //#region ../react/src/support/types.d.ts
4
+
5
+ /**
6
+ * Props for custom Bubble slot component
7
+ */
8
+ type BubbleSlotProps = {
9
+ className?: string;
10
+ };
11
+ /**
12
+ * Props for custom Container slot component
13
+ */
14
+ type ContainerSlotProps = {
15
+ className?: string;
16
+ children: React.ReactNode;
17
+ position?: "top" | "bottom";
18
+ align?: "right" | "left";
19
+ };
20
+ /**
21
+ * Props for custom Router slot component
22
+ */
23
+ type RouterSlotProps = {
24
+ children?: React.ReactNode;
25
+ };
26
+ //#endregion
27
+ export { BubbleSlotProps, ContainerSlotProps, RouterSlotProps };
28
+ //# sourceMappingURL=types.d.ts.map
package/types.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../react/src/support/types.ts"],"sourcesContent":[],"mappings":";;;;;;AAKA;AAOY,KAPA,eAAA,GAOkB;EAUlB,SAAA,CAAA,EAAA,MAAe;;;;;KAVf,kBAAA;;YAED,KAAA,CAAM;;;;;;;KAQL,eAAA;aACA,KAAA,CAAM"}
@@ -0,0 +1,24 @@
1
+ import * as React$1 from "react";
2
+
3
+ //#region ../react/src/hooks/use-scroll-mask.d.ts
4
+ type UseScrollMaskOptions = {
5
+ maskHeight?: string;
6
+ scrollbarWidth?: string;
7
+ topThreshold?: number;
8
+ bottomThreshold?: number;
9
+ };
10
+ type UseScrollMaskReturn = {
11
+ ref: React$1.RefObject<HTMLDivElement | null>;
12
+ style: React$1.CSSProperties;
13
+ };
14
+ /**
15
+ * Hook that provides dynamic scroll mask styles based on scroll position and scrollability.
16
+ * Only shows gradients when content is scrollable and when not at the edges.
17
+ *
18
+ * @param options - Configuration for mask appearance and scroll thresholds
19
+ * @returns Object with ref to attach to scrollable element and computed style object
20
+ */
21
+ declare function useScrollMask(options?: UseScrollMaskOptions): UseScrollMaskReturn;
22
+ //#endregion
23
+ export { UseScrollMaskOptions, UseScrollMaskReturn, useScrollMask };
24
+ //# sourceMappingURL=use-scroll-mask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-scroll-mask.d.ts","names":[],"sources":["../../react/src/hooks/use-scroll-mask.ts"],"sourcesContent":[],"mappings":";;;KAEY,oBAAA;;EAAA,cAAA,CAAA,EAAA,MAAoB;EAOpB,YAAA,CAAA,EAAA,MAAA;EACU,eAAA,CAAA,EAAA,MAAA;CAAhB;AACE,KAFI,mBAAA,GAEE;EAAa,GAAA,EADrB,OAAA,CAAM,SACe,CADL,cACK,GAAA,IAAA,CAAA;EAUX,KAAA,EAVR,OAAA,CAAM,aAUe;;;;;;;;;iBAAb,aAAA,WACN,uBACP"}
package/window.d.ts CHANGED
@@ -6,9 +6,14 @@ type WindowRenderProps = {
6
6
  close: () => void;
7
7
  };
8
8
  /**
9
- * Host container for the support experience. Handles escape
10
- * key dismissal and propagates render props so callers can take over the
11
- * layout.
9
+ * Dialog container with open/close state and escape key handling.
10
+ *
11
+ * @example
12
+ * <Window isOpen={isOpen} onOpenChange={setOpen}>
13
+ * {({ isOpen, close }) => (
14
+ * <div>Content here</div>
15
+ * )}
16
+ * </Window>
12
17
  */
13
18
  declare const SupportWindow: React$1.ForwardRefExoticComponent<Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> & {
14
19
  isOpen?: boolean;
package/window.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"window.d.ts","names":[],"sources":["../../react/src/primitives/window.tsx"],"sourcesContent":[],"mappings":";;;KAIY,iBAAA;;EAAA,KAAA,EAAA,GAAA,GAAA,IAAA;AAsBZ,CAAA;;;;;;cAAa,eAAa,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,eAAA;;;aAXd,OAAA,CAAM,qBAAqB,sBAAsB,OAAA,CAAM"}
1
+ {"version":3,"file":"window.d.ts","names":[],"sources":["../../react/src/primitives/window.tsx"],"sourcesContent":[],"mappings":";;;KAIY,iBAAA;;EAAA,KAAA,EAAA,GAAA,GAAA,IAAA;AA2BZ,CAAA;;;;;;;;;;;cAAa,eAAa,OAAA,CAAA,0BAAA,KAAA,OAAA,CAAA,eAAA;;;aAhBd,OAAA,CAAM,qBAAqB,sBAAsB,OAAA,CAAM"}