@servicetitan/anvil2-ext-atlas 0.0.13 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/_commonjsHelpers-B85MJLTf.js +6 -0
- package/dist/_commonjsHelpers-B85MJLTf.js.map +1 -0
- package/dist/atlas-header-jdAIcEpa.js +23 -0
- package/dist/atlas-header-jdAIcEpa.js.map +1 -0
- package/dist/atlas-header.d.ts +2 -0
- package/dist/atlas-header.js +2 -0
- package/dist/atlas-header.js.map +1 -0
- package/dist/chat-composer-rich-BM5hoC1f.js +162 -0
- package/dist/chat-composer-rich-BM5hoC1f.js.map +1 -0
- package/dist/chat-composer-rich.css +119 -0
- package/dist/chat-composer-rich.d.ts +2 -0
- package/dist/chat-composer-rich.js +2 -0
- package/dist/chat-composer-rich.js.map +1 -0
- package/dist/chat-window-BEkLTYNg.js +76 -0
- package/dist/chat-window-BEkLTYNg.js.map +1 -0
- package/dist/chat-window.css +49 -0
- package/dist/chat.d.ts +2 -0
- package/dist/chat.js +2 -0
- package/dist/chat.js.map +1 -0
- package/dist/components/atlas-header/atlas-header.d.ts +21 -0
- package/dist/components/atlas-header/index.d.ts +2 -0
- package/dist/components/chat/chat-window.d.ts +13 -0
- package/dist/components/chat/index.d.ts +1 -0
- package/dist/components/chat-composer-rich/chat-composer-rich.d.ts +23 -0
- package/dist/components/chat-composer-rich/index.d.ts +2 -0
- package/dist/components/content/content.d.ts +7 -0
- package/dist/components/content/index.d.ts +1 -0
- package/dist/components/footer/footer.d.ts +16 -0
- package/dist/components/footer/index.d.ts +2 -0
- package/dist/components/header/header.d.ts +23 -0
- package/dist/components/header/index.d.ts +2 -0
- package/dist/components/index.d.ts +16 -1
- package/dist/components/infinite-content/hooks/use-infinite-scroll.d.ts +11 -0
- package/dist/components/infinite-content/hooks/use-scroll-callback.d.ts +11 -0
- package/dist/components/infinite-content/index.d.ts +2 -0
- package/dist/components/infinite-content/infinite-content.d.ts +17 -0
- package/dist/components/loader/index.d.ts +1 -0
- package/dist/components/loader/loader.d.ts +2 -0
- package/dist/components/markdown-text/index.d.ts +2 -0
- package/dist/components/markdown-text/markdown-text.d.ts +5 -0
- package/dist/components/messages/assistant-message.d.ts +10 -0
- package/dist/components/messages/error-message.d.ts +8 -0
- package/dist/components/messages/index.d.ts +6 -0
- package/dist/components/messages/markdown-message.d.ts +13 -0
- package/dist/components/messages/message-interface.d.ts +4 -0
- package/dist/components/messages/small-action.d.ts +13 -0
- package/dist/components/messages/system-message.d.ts +18 -0
- package/dist/components/messages/user-message.d.ts +13 -0
- package/dist/components/notification-card/index.d.ts +1 -0
- package/dist/components/notification-card/notification-card.d.ts +10 -0
- package/dist/components/recommendations/confirmation-card/confirmation-card.d.ts +10 -0
- package/dist/components/recommendations/confirmation-card/index.d.ts +1 -0
- package/dist/components/recommendations/index.d.ts +4 -0
- package/dist/components/recommendations/multiple-recommendation-card/index.d.ts +1 -0
- package/dist/components/recommendations/multiple-recommendation-card/multiple-recommendation-card.d.ts +7 -0
- package/dist/components/recommendations/shared-interfaces.d.ts +26 -0
- package/dist/components/recommendations/single-recommendation-card/index.d.ts +1 -0
- package/dist/components/recommendations/single-recommendation-card/single-recommendation-card.d.ts +7 -0
- package/dist/components/screens/index.d.ts +1 -0
- package/dist/components/screens/system-error.d.ts +10 -0
- package/dist/components/screens/welcome.d.ts +8 -0
- package/dist/components/spinner/index.d.ts +1 -0
- package/dist/components/spinner/spinner.d.ts +1 -0
- package/dist/components/suggestion/index.d.ts +1 -0
- package/dist/components/suggestion/suggestion.d.ts +11 -0
- package/dist/components/toolbox/index.d.ts +2 -0
- package/dist/components/toolbox/toolbox.d.ts +12 -0
- package/dist/components/toolbox/toolbox.enums.d.ts +5 -0
- package/dist/content-acT_RzNQ.js +55 -0
- package/dist/content-acT_RzNQ.js.map +1 -0
- package/dist/content.css +10 -0
- package/dist/content.d.ts +2 -0
- package/dist/content.js +2 -0
- package/dist/content.js.map +1 -0
- package/dist/footer-DezXey1O.js +86 -0
- package/dist/footer-DezXey1O.js.map +1 -0
- package/dist/footer.css +12 -0
- package/dist/footer.d.ts +2 -0
- package/dist/footer.js +2 -0
- package/dist/footer.js.map +1 -0
- package/dist/header-DgkrbsFN.js +171 -0
- package/dist/header-DgkrbsFN.js.map +1 -0
- package/dist/header.css +23 -0
- package/dist/header.d.ts +2 -0
- package/dist/header.js +2 -0
- package/dist/header.js.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/use-draggable.d.ts +18 -0
- package/dist/index-DDXI3m_u.js +73 -0
- package/dist/index-DDXI3m_u.js.map +1 -0
- package/dist/index-DFEn2XpE.js +24643 -0
- package/dist/index-DFEn2XpE.js.map +1 -0
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/infinite-content-B4ojfnZH.js +144 -0
- package/dist/infinite-content-B4ojfnZH.js.map +1 -0
- package/dist/infinite-content.css +25 -0
- package/dist/infinite-content.d.ts +2 -0
- package/dist/infinite-content.js +2 -0
- package/dist/infinite-content.js.map +1 -0
- package/dist/loader-DYmcO1Y_.js +48 -0
- package/dist/loader-DYmcO1Y_.js.map +1 -0
- package/dist/loader.d.ts +2 -0
- package/dist/loader.js +2 -0
- package/dist/loader.js.map +1 -0
- package/dist/markdown-text-CKN0oo8R.js +13 -0
- package/dist/markdown-text-CKN0oo8R.js.map +1 -0
- package/dist/markdown-text.css +45 -0
- package/dist/markdown-text.d.ts +2 -0
- package/dist/markdown-text.js +2 -0
- package/dist/markdown-text.js.map +1 -0
- package/dist/messages.d.ts +2 -0
- package/dist/messages.js +2 -0
- package/dist/messages.js.map +1 -0
- package/dist/notification-card-B38ZC7k4.js +59 -0
- package/dist/notification-card-B38ZC7k4.js.map +1 -0
- package/dist/notification-card.d.ts +2 -0
- package/dist/notification-card.js +2 -0
- package/dist/notification-card.js.map +1 -0
- package/dist/proxy-B3m3ViIw.js +9928 -0
- package/dist/proxy-B3m3ViIw.js.map +1 -0
- package/dist/recommendations.d.ts +2 -0
- package/dist/recommendations.js +2 -0
- package/dist/recommendations.js.map +1 -0
- package/dist/screens.d.ts +2 -0
- package/dist/screens.js +2 -0
- package/dist/screens.js.map +1 -0
- package/dist/single-recommendation-card-G78KiWnb.js +199 -0
- package/dist/single-recommendation-card-G78KiWnb.js.map +1 -0
- package/dist/spinner-QnlThoJs.js +23 -0
- package/dist/spinner-QnlThoJs.js.map +1 -0
- package/dist/spinner.css +21 -0
- package/dist/spinner.d.ts +2 -0
- package/dist/spinner.js +2 -0
- package/dist/spinner.js.map +1 -0
- package/dist/suggestion-pJLJZyjg.js +33 -0
- package/dist/suggestion-pJLJZyjg.js.map +1 -0
- package/dist/suggestion.d.ts +2 -0
- package/dist/suggestion.js +2 -0
- package/dist/suggestion.js.map +1 -0
- package/dist/toolbox-B-mWIaVL.js +272 -0
- package/dist/toolbox-B-mWIaVL.js.map +1 -0
- package/dist/toolbox.d.ts +2 -0
- package/dist/toolbox.js +2 -0
- package/dist/toolbox.js.map +1 -0
- package/dist/user-message-DCOP95qA.js +247 -0
- package/dist/user-message-DCOP95qA.js.map +1 -0
- package/dist/user-message.css +170 -0
- package/dist/welcome-BY6k2z0K.js +57 -0
- package/dist/welcome-BY6k2z0K.js.map +1 -0
- package/dist/welcome.css +23 -0
- package/package.json +25 -13
- package/dist/DummyComponent-ac_BQfhC.js +0 -8
- package/dist/DummyComponent-ac_BQfhC.js.map +0 -1
- package/dist/DummyComponent.d.ts +0 -2
- package/dist/DummyComponent.js +0 -2
- package/dist/DummyComponent.js.map +0 -1
- package/dist/components/DummyComponent/DummyComponent.d.ts +0 -1
- package/dist/components/DummyComponent/index.d.ts +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './chat-window';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface ChatComposerRichProps {
|
|
2
|
+
message?: string;
|
|
3
|
+
/** Callback when user submits a message */
|
|
4
|
+
onSend?: (text: string) => void;
|
|
5
|
+
/** Placeholder text for the input */
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
/** Whether the composer is disabled */
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
/** Additional CSS class name */
|
|
10
|
+
className?: string;
|
|
11
|
+
onChange: (text: string) => void;
|
|
12
|
+
/** Callback when upload file is selected from menu */
|
|
13
|
+
onUploadFile?: () => void;
|
|
14
|
+
/** Callback when dictate message is selected from menu */
|
|
15
|
+
onDictateMessage?: () => void;
|
|
16
|
+
/** ID for the menu button */
|
|
17
|
+
menuButtonId?: string;
|
|
18
|
+
/** ID for the send icon button */
|
|
19
|
+
sendIconId?: string;
|
|
20
|
+
/** ID for the message input area */
|
|
21
|
+
messageInputId?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const ChatComposerRich: ({ message, onSend, onChange, placeholder, disabled, className, onUploadFile, onDictateMessage, messageInputId, sendIconId, }: ChatComposerRichProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './content';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface FooterProps {
|
|
2
|
+
isLoading?: boolean;
|
|
3
|
+
message: string;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
onMessageChange: (value: string) => void;
|
|
6
|
+
onSubmit: () => void;
|
|
7
|
+
className?: string;
|
|
8
|
+
messageInputId?: string;
|
|
9
|
+
sendIconId?: string;
|
|
10
|
+
learnMoreLinkId?: string;
|
|
11
|
+
/** Callback when upload file is selected from menu */
|
|
12
|
+
onUploadFile?: () => void;
|
|
13
|
+
/** Callback when dictate message is selected from menu */
|
|
14
|
+
onDictateMessage?: () => void;
|
|
15
|
+
}
|
|
16
|
+
export declare const Footer: ({ isLoading, placeholder, message, onMessageChange, onSubmit, className, messageInputId, sendIconId, learnMoreLinkId, onUploadFile, onDictateMessage, }: FooterProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { MouseEvent } from 'react';
|
|
2
|
+
export interface HeaderProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
onMouseDown?: (e: MouseEvent) => void;
|
|
5
|
+
isDragging?: boolean;
|
|
6
|
+
isDraggable?: boolean;
|
|
7
|
+
isExpanded?: boolean;
|
|
8
|
+
disabledChatsIcon?: boolean;
|
|
9
|
+
historyCount?: number;
|
|
10
|
+
titleBadge?: string | number;
|
|
11
|
+
className?: string;
|
|
12
|
+
onBack?: () => void;
|
|
13
|
+
onClose?: () => void;
|
|
14
|
+
onViewHistory?: () => void;
|
|
15
|
+
onFullscreen?: () => void;
|
|
16
|
+
onCreateNewChat?: () => void;
|
|
17
|
+
backButtonId?: string;
|
|
18
|
+
viewHistoryButtonId?: string;
|
|
19
|
+
fullscreenButtonId?: string;
|
|
20
|
+
newChatButtonId?: string;
|
|
21
|
+
closeButtonId?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const Header: ({ title, onMouseDown, isDraggable, isDragging, onFullscreen, onViewHistory, isExpanded, historyCount, titleBadge, disabledChatsIcon, onClose, onBack, className, onCreateNewChat, backButtonId, viewHistoryButtonId, fullscreenButtonId, newChatButtonId, closeButtonId, }: HeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,16 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './atlas-header';
|
|
2
|
+
export * from './chat';
|
|
3
|
+
export * from './chat-composer-rich';
|
|
4
|
+
export * from './content';
|
|
5
|
+
export * from './footer';
|
|
6
|
+
export * from './header';
|
|
7
|
+
export * from './infinite-content';
|
|
8
|
+
export * from './loader';
|
|
9
|
+
export * from './markdown-text';
|
|
10
|
+
export * from './messages';
|
|
11
|
+
export * from './notification-card';
|
|
12
|
+
export * from './recommendations';
|
|
13
|
+
export * from './screens';
|
|
14
|
+
export * from './spinner';
|
|
15
|
+
export * from './suggestion';
|
|
16
|
+
export * from './toolbox';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface UseInfiniteScrollOptions {
|
|
2
|
+
hasMore: boolean;
|
|
3
|
+
isLoading: boolean;
|
|
4
|
+
onLoadMore: () => void;
|
|
5
|
+
rootMargin?: string;
|
|
6
|
+
threshold?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare const useInfiniteScroll: ({ hasMore, isLoading, onLoadMore, rootMargin, threshold, }: UseInfiniteScrollOptions) => {
|
|
9
|
+
sentinelRef: import('react').RefObject<HTMLDivElement>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface UseScrollCallbackOptions {
|
|
2
|
+
onScrollDown?: () => void;
|
|
3
|
+
onScrollTop?: () => void;
|
|
4
|
+
threshold?: number;
|
|
5
|
+
element?: HTMLElement | null;
|
|
6
|
+
}
|
|
7
|
+
export declare const useScrollCallback: ({ onScrollDown, onScrollTop, threshold, element, }?: UseScrollCallbackOptions) => {
|
|
8
|
+
lastScrollTop: number;
|
|
9
|
+
hasTriggeredScrollDown: boolean;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FC, PropsWithChildren, ReactNode, RefObject } from 'react';
|
|
2
|
+
export interface InfiniteContentProps {
|
|
3
|
+
loading?: boolean;
|
|
4
|
+
className?: string;
|
|
5
|
+
hasMore?: boolean;
|
|
6
|
+
onLoadMore?: () => void;
|
|
7
|
+
loadingMore?: boolean;
|
|
8
|
+
rootMargin?: string;
|
|
9
|
+
threshold?: number;
|
|
10
|
+
renderLoadingMore?: () => ReactNode;
|
|
11
|
+
renderEndMessage?: () => ReactNode;
|
|
12
|
+
onScrollDown?: () => void;
|
|
13
|
+
onScrollTop?: () => void;
|
|
14
|
+
scrollThreshold?: number;
|
|
15
|
+
scrollContainerRef?: RefObject<HTMLElement>;
|
|
16
|
+
}
|
|
17
|
+
export declare const InfiniteContent: FC<PropsWithChildren<InfiniteContentProps>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './loader';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Svg } from '@servicetitan/anvil2';
|
|
3
|
+
import { MessageProps } from './message-interface';
|
|
4
|
+
export interface AssistantMessageProps extends MessageProps {
|
|
5
|
+
error?: string | boolean;
|
|
6
|
+
svgIcon?: Svg;
|
|
7
|
+
assistant?: string;
|
|
8
|
+
onRetry?: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const AssistantMessage: FC<AssistantMessageProps>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Svg } from '@servicetitan/anvil2';
|
|
3
|
+
import { MessageProps } from './message-interface';
|
|
4
|
+
import { ToolboxProps } from '../toolbox';
|
|
5
|
+
export interface MarkdownMessageProps extends MessageProps {
|
|
6
|
+
error?: string;
|
|
7
|
+
svgIcon?: Svg;
|
|
8
|
+
assistant?: string;
|
|
9
|
+
onRetry?: () => void;
|
|
10
|
+
toolboxProps?: Omit<ToolboxProps, "text">;
|
|
11
|
+
}
|
|
12
|
+
export declare const MarkdownMessage: FC<MarkdownMessageProps>;
|
|
13
|
+
export declare const Thinking: FC<MarkdownMessageProps>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MessageProps } from './message-interface';
|
|
3
|
+
export interface SmallActionProps extends MessageProps {
|
|
4
|
+
recommendationId: string;
|
|
5
|
+
message: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
buttonText?: string;
|
|
8
|
+
onReject: (recommendationId: string) => void | undefined;
|
|
9
|
+
onAccept: (recommendationId: string) => void | undefined;
|
|
10
|
+
buttonDisabled?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const SmallAction: FC<SmallActionProps>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { MessageProps } from './message-interface';
|
|
3
|
+
interface SystemMessageRadioOption {
|
|
4
|
+
label: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}
|
|
8
|
+
interface SystemMessageProps extends MessageProps {
|
|
9
|
+
message: string;
|
|
10
|
+
radioOptions: SystemMessageRadioOption[];
|
|
11
|
+
selectedValue: string;
|
|
12
|
+
onRadioChange: (value: string) => void;
|
|
13
|
+
buttonText: string;
|
|
14
|
+
onSubmit: () => void;
|
|
15
|
+
buttonDisabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare const SystemMessage: FC<SystemMessageProps>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
export interface ChatMessage {
|
|
3
|
+
content: string;
|
|
4
|
+
type: "user" | "assistant" | "system";
|
|
5
|
+
}
|
|
6
|
+
interface UserMessageProps {
|
|
7
|
+
message: string;
|
|
8
|
+
className?: string;
|
|
9
|
+
isError?: boolean;
|
|
10
|
+
onRetry?: () => void;
|
|
11
|
+
}
|
|
12
|
+
export declare const UserMessage: FC<UserMessageProps>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './notification-card';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { BaseRecommendationProps, ConfirmationResponse } from '../shared-interfaces';
|
|
3
|
+
export interface ConfirmationRecommendationProps extends BaseRecommendationProps {
|
|
4
|
+
recommendationId?: string;
|
|
5
|
+
message: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
onSubmit: (confirmationResponse: ConfirmationResponse) => void;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const ConfirmationCard: FC<ConfirmationRecommendationProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './confirmation-card';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './multiple-recommendation-card';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { BaseRecommendationProps, Options } from '../shared-interfaces';
|
|
3
|
+
interface MultipleRecommendationProps extends BaseRecommendationProps {
|
|
4
|
+
options: Options[];
|
|
5
|
+
}
|
|
6
|
+
export declare const MultipleRecommendationCard: FC<MultipleRecommendationProps>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface Options {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ConfirmationResponse {
|
|
8
|
+
actionId: string;
|
|
9
|
+
optionIds?: string[];
|
|
10
|
+
sourceMessageId?: string;
|
|
11
|
+
parameters?: Record<string, string | number | undefined>;
|
|
12
|
+
}
|
|
13
|
+
export interface RecommendationAction {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
type?: string;
|
|
17
|
+
url?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface BaseRecommendationProps {
|
|
20
|
+
recommendationId?: string;
|
|
21
|
+
message: string;
|
|
22
|
+
actions: RecommendationAction[];
|
|
23
|
+
onSubmit: (confirmationResponse: ConfirmationResponse) => void;
|
|
24
|
+
submitted?: boolean;
|
|
25
|
+
selected?: string[];
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './single-recommendation-card';
|
package/dist/components/recommendations/single-recommendation-card/single-recommendation-card.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { BaseRecommendationProps, Options } from '../shared-interfaces';
|
|
3
|
+
interface SingleRecommendationProps extends BaseRecommendationProps {
|
|
4
|
+
options: Options[];
|
|
5
|
+
}
|
|
6
|
+
export declare const SingleRecommendationCard: FC<SingleRecommendationProps>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './welcome';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Svg } from '@servicetitan/anvil2';
|
|
3
|
+
export interface SystemErrorProps {
|
|
4
|
+
text?: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
icon?: Svg;
|
|
8
|
+
iconColor?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const SystemError: FC<SystemErrorProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './spinner';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Spinner: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './suggestion';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
interface SuggestionProps {
|
|
3
|
+
text: string;
|
|
4
|
+
onClick: (suggestion: string) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare const Suggestion: FC<SuggestionProps>;
|
|
7
|
+
export declare const SuggestionList: FC<{
|
|
8
|
+
suggestions: string[];
|
|
9
|
+
onSelect: (text: string) => void;
|
|
10
|
+
}>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { UserFeedback } from './toolbox.enums';
|
|
3
|
+
export interface ToolboxProps {
|
|
4
|
+
text?: string;
|
|
5
|
+
onRetry?: () => Promise<void>;
|
|
6
|
+
onLike?: () => Promise<void>;
|
|
7
|
+
onDislike?: () => Promise<void>;
|
|
8
|
+
onFlag?: () => Promise<void>;
|
|
9
|
+
onPlay?: () => Promise<void>;
|
|
10
|
+
currentFeedback?: UserFeedback;
|
|
11
|
+
}
|
|
12
|
+
export declare const Toolbox: FC<ToolboxProps>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef, useState, useEffect } from 'react';
|
|
3
|
+
import { c as classNames } from './index-DDXI3m_u.js';
|
|
4
|
+
import { Grid } from '@servicetitan/anvil2';
|
|
5
|
+
import { S as Spinner } from './spinner-QnlThoJs.js';
|
|
6
|
+
|
|
7
|
+
import './content.css';const styles = {
|
|
8
|
+
"chat-content": "_chat-content_xnleg_1"
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const Content = ({
|
|
12
|
+
children,
|
|
13
|
+
itemsLength,
|
|
14
|
+
loading = false,
|
|
15
|
+
className
|
|
16
|
+
}) => {
|
|
17
|
+
const chatEndRef = useRef(null);
|
|
18
|
+
const containerRef = useRef(null);
|
|
19
|
+
const [isInitialLoad, setIsInitialLoad] = useState(true);
|
|
20
|
+
const [previousMessageCount, setPreviousMessageCount] = useState(0);
|
|
21
|
+
const scrollToBottom = (smooth = true) => {
|
|
22
|
+
if (smooth) {
|
|
23
|
+
chatEndRef.current?.scrollIntoView({ behavior: "smooth", block: "end" });
|
|
24
|
+
} else {
|
|
25
|
+
chatEndRef.current?.scrollIntoView({ behavior: "auto", block: "end" });
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (isInitialLoad && itemsLength > 0) {
|
|
30
|
+
scrollToBottom(false);
|
|
31
|
+
setIsInitialLoad(false);
|
|
32
|
+
setPreviousMessageCount(itemsLength);
|
|
33
|
+
} else if (!isInitialLoad && itemsLength > previousMessageCount) {
|
|
34
|
+
scrollToBottom(true);
|
|
35
|
+
setPreviousMessageCount(itemsLength);
|
|
36
|
+
} else if (!isInitialLoad && itemsLength !== previousMessageCount) {
|
|
37
|
+
setPreviousMessageCount(itemsLength);
|
|
38
|
+
}
|
|
39
|
+
}, [itemsLength, isInitialLoad, previousMessageCount]);
|
|
40
|
+
return /* @__PURE__ */ jsxs(
|
|
41
|
+
Grid,
|
|
42
|
+
{
|
|
43
|
+
className: classNames(styles["chat-content"], className),
|
|
44
|
+
ref: containerRef,
|
|
45
|
+
gridColumn: "1 / 13",
|
|
46
|
+
children: [
|
|
47
|
+
loading ? /* @__PURE__ */ jsx(Spinner, {}) : children,
|
|
48
|
+
/* @__PURE__ */ jsx("div", { ref: chatEndRef })
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export { Content as C };
|
|
55
|
+
//# sourceMappingURL=content-acT_RzNQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-acT_RzNQ.js","sources":["../src/components/content/content.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useEffect, useRef, useState } from \"react\";\nimport classNames from \"classnames\";\nimport { Grid } from \"@servicetitan/anvil2\";\n\nimport { Spinner } from \"../spinner\";\n\nimport styles from \"./content.module.scss\";\n\nexport interface ContentProps {\n itemsLength: number;\n loading?: boolean;\n className?: string;\n}\n\nexport const Content: FC<PropsWithChildren<ContentProps>> = ({\n children,\n itemsLength,\n loading = false,\n className,\n}) => {\n const chatEndRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const [isInitialLoad, setIsInitialLoad] = useState(true);\n const [previousMessageCount, setPreviousMessageCount] = useState(0);\n\n const scrollToBottom = (smooth = true) => {\n if (smooth) {\n chatEndRef.current?.scrollIntoView({ behavior: \"smooth\", block: \"end\" });\n } else {\n chatEndRef.current?.scrollIntoView({ behavior: \"auto\", block: \"end\" });\n }\n };\n\n useEffect(() => {\n if (isInitialLoad && itemsLength > 0) {\n // Initial load: scroll to bottom without smooth animation\n scrollToBottom(false);\n setIsInitialLoad(false);\n setPreviousMessageCount(itemsLength);\n } else if (!isInitialLoad && itemsLength > previousMessageCount) {\n // New messages added: scroll to bottom with smooth animation\n scrollToBottom(true);\n setPreviousMessageCount(itemsLength);\n } else if (!isInitialLoad && itemsLength !== previousMessageCount) {\n // Message count changed but not increased (e.g., conversation switched)\n // Just update the count without scrolling\n setPreviousMessageCount(itemsLength);\n }\n }, [itemsLength, isInitialLoad, previousMessageCount]);\n\n return (\n <Grid\n className={classNames(styles[\"chat-content\"], className)}\n ref={containerRef}\n gridColumn=\"1 / 13\"\n >\n {loading ? <Spinner /> : children}\n <div ref={chatEndRef} />\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AAcO,MAAM,UAA+C,CAAC;AAAA,EAC3D,QAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,IAAI,CAAA;AACvD,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAI,SAAS,CAAC,CAAA;AAElE,EAAA,MAAM,cAAA,GAAiB,CAAC,MAAA,GAAS,IAAA,KAAS;AACxC,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,UAAA,CAAW,SAAS,cAAA,CAAe,EAAE,UAAU,QAAA,EAAU,KAAA,EAAO,OAAO,CAAA;AAAA,IACzE,CAAA,MAAO;AACL,MAAA,UAAA,CAAW,SAAS,cAAA,CAAe,EAAE,UAAU,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAA;AAAA,IACvE;AAAA,EACF,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,aAAA,IAAiB,cAAc,CAAA,EAAG;AAEpC,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,MAAA,uBAAA,CAAwB,WAAW,CAAA;AAAA,IACrC,CAAA,MAAA,IAAW,CAAC,aAAA,IAAiB,WAAA,GAAc,oBAAA,EAAsB;AAE/D,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,uBAAA,CAAwB,WAAW,CAAA;AAAA,IACrC,CAAA,MAAA,IAAW,CAAC,aAAA,IAAiB,WAAA,KAAgB,oBAAA,EAAsB;AAGjE,MAAA,uBAAA,CAAwB,WAAW,CAAA;AAAA,IACrC;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,aAAA,EAAe,oBAAoB,CAAC,CAAA;AAErD,EAAA,uBACE,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,UAAA,CAAW,MAAA,CAAO,cAAc,GAAG,SAAS,CAAA;AAAA,MACvD,GAAA,EAAK,YAAA;AAAA,MACL,UAAA,EAAW,QAAA;AAAA,MAEV,QAAA,EAAA;AAAA,QAAA,OAAA,mBAAU,GAAA,CAAC,WAAQ,CAAA,GAAK,QAAA;AAAA,wBACzB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAA,EAAY;AAAA;AAAA;AAAA,GACxB;AAEJ;;;;"}
|
package/dist/content.css
ADDED
package/dist/content.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { c as classNames } from './index-DDXI3m_u.js';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
import { Text, Link } from '@servicetitan/anvil2';
|
|
5
|
+
import { C as ChatComposerRich } from './chat-composer-rich-BM5hoC1f.js';
|
|
6
|
+
|
|
7
|
+
import './footer.css';const styles = {
|
|
8
|
+
"chat-footer": "_chat-footer_1kkwo_1"};
|
|
9
|
+
|
|
10
|
+
const Footer = observer(
|
|
11
|
+
({
|
|
12
|
+
isLoading = false,
|
|
13
|
+
placeholder = "Ask Atlas",
|
|
14
|
+
message,
|
|
15
|
+
onMessageChange,
|
|
16
|
+
onSubmit,
|
|
17
|
+
className,
|
|
18
|
+
messageInputId,
|
|
19
|
+
sendIconId,
|
|
20
|
+
learnMoreLinkId,
|
|
21
|
+
onUploadFile,
|
|
22
|
+
onDictateMessage
|
|
23
|
+
}) => {
|
|
24
|
+
const handleSubmit = () => {
|
|
25
|
+
if (!isLoading) {
|
|
26
|
+
onSubmit();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
return /* @__PURE__ */ jsxs("div", { className: classNames(styles["chat-footer"], className), children: [
|
|
30
|
+
/* @__PURE__ */ jsx(
|
|
31
|
+
ChatComposerRich,
|
|
32
|
+
{
|
|
33
|
+
messageInputId,
|
|
34
|
+
sendIconId,
|
|
35
|
+
placeholder,
|
|
36
|
+
onSend: handleSubmit,
|
|
37
|
+
onChange: onMessageChange,
|
|
38
|
+
message,
|
|
39
|
+
disabled: isLoading,
|
|
40
|
+
onUploadFile,
|
|
41
|
+
onDictateMessage
|
|
42
|
+
}
|
|
43
|
+
),
|
|
44
|
+
/* @__PURE__ */ jsxs(
|
|
45
|
+
Text,
|
|
46
|
+
{
|
|
47
|
+
subdued: true,
|
|
48
|
+
variant: "body",
|
|
49
|
+
size: "small",
|
|
50
|
+
style: {
|
|
51
|
+
fontSize: "var(--typography-label-size-small)",
|
|
52
|
+
marginBlockStart: "var(--size-1)"
|
|
53
|
+
},
|
|
54
|
+
children: [
|
|
55
|
+
"Atlas is TI-powered, subject to our privacy policy.",
|
|
56
|
+
" ",
|
|
57
|
+
/* @__PURE__ */ jsx(
|
|
58
|
+
Link,
|
|
59
|
+
{
|
|
60
|
+
id: learnMoreLinkId,
|
|
61
|
+
target: "_blank",
|
|
62
|
+
href: "#",
|
|
63
|
+
appearance: "secondary",
|
|
64
|
+
children: /* @__PURE__ */ jsx(
|
|
65
|
+
Text,
|
|
66
|
+
{
|
|
67
|
+
inline: true,
|
|
68
|
+
size: "small",
|
|
69
|
+
subdued: true,
|
|
70
|
+
style: {
|
|
71
|
+
fontSize: "var(--typography-label-size-small)"
|
|
72
|
+
},
|
|
73
|
+
children: "Learn more"
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
] });
|
|
82
|
+
}
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
export { Footer as F };
|
|
86
|
+
//# sourceMappingURL=footer-DezXey1O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer-DezXey1O.js","sources":["../src/components/footer/footer.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { observer } from \"mobx-react\";\nimport { Link, Text } from \"@servicetitan/anvil2\";\n\nimport { ChatComposerRich } from \"../chat-composer-rich\";\n\nimport styles from \"./footer.module.scss\";\n\nexport interface FooterProps {\n isLoading?: boolean;\n message: string;\n placeholder?: string;\n onMessageChange: (value: string) => void;\n onSubmit: () => void;\n className?: string;\n messageInputId?: string;\n sendIconId?: string;\n learnMoreLinkId?: string;\n /** Callback when upload file is selected from menu */\n onUploadFile?: () => void;\n /** Callback when dictate message is selected from menu */\n onDictateMessage?: () => void;\n}\n\nexport const Footer = observer(\n ({\n isLoading = false,\n placeholder = \"Ask Atlas\",\n message,\n onMessageChange,\n onSubmit,\n className,\n messageInputId,\n sendIconId,\n learnMoreLinkId,\n onUploadFile,\n onDictateMessage,\n }: FooterProps) => {\n const handleSubmit = () => {\n if (!isLoading) {\n onSubmit();\n }\n };\n\n return (\n <div className={classNames(styles[\"chat-footer\"], className)}>\n <ChatComposerRich\n messageInputId={messageInputId}\n sendIconId={sendIconId}\n placeholder={placeholder}\n onSend={handleSubmit}\n onChange={onMessageChange}\n message={message}\n disabled={isLoading}\n onUploadFile={onUploadFile}\n onDictateMessage={onDictateMessage}\n />\n <Text\n subdued\n variant=\"body\"\n size=\"small\"\n style={{\n fontSize: \"var(--typography-label-size-small)\",\n marginBlockStart: \"var(--size-1)\",\n }}\n >\n Atlas is TI-powered, subject to our privacy policy.{\" \"}\n <Link\n id={learnMoreLinkId}\n target=\"_blank\"\n href=\"#\"\n appearance=\"secondary\"\n >\n <Text\n inline\n size=\"small\"\n subdued\n style={{\n fontSize: \"var(--typography-label-size-small)\",\n }}\n >\n Learn more\n </Text>\n </Link>\n </Text>\n </div>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;;AAwBO,MAAM,MAAA,GAAS,QAAA;AAAA,EACpB,CAAC;AAAA,IACC,SAAA,GAAY,KAAA;AAAA,IACZ,WAAA,GAAc,WAAA;AAAA,IACd,OAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF,KAAmB;AACjB,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,QAAA,EAAS;AAAA,MACX;AAAA,IACF,CAAA;AAEA,IAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,UAAA,CAAW,OAAO,aAAa,CAAA,EAAG,SAAS,CAAA,EACzD,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,cAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA;AAAA,UACA,MAAA,EAAQ,YAAA;AAAA,UACR,QAAA,EAAU,eAAA;AAAA,UACV,OAAA;AAAA,UACA,QAAA,EAAU,SAAA;AAAA,UACV,YAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,sBACA,IAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAO,IAAA;AAAA,UACP,OAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAK,OAAA;AAAA,UACL,KAAA,EAAO;AAAA,YACL,QAAA,EAAU,oCAAA;AAAA,YACV,gBAAA,EAAkB;AAAA,WACpB;AAAA,UACD,QAAA,EAAA;AAAA,YAAA,qDAAA;AAAA,YACqD,GAAA;AAAA,4BACpD,GAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBACC,EAAA,EAAI,eAAA;AAAA,gBACJ,MAAA,EAAO,QAAA;AAAA,gBACP,IAAA,EAAK,GAAA;AAAA,gBACL,UAAA,EAAW,WAAA;AAAA,gBAEX,QAAA,kBAAA,GAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBACC,MAAA,EAAM,IAAA;AAAA,oBACN,IAAA,EAAK,OAAA;AAAA,oBACL,OAAA,EAAO,IAAA;AAAA,oBACP,KAAA,EAAO;AAAA,sBACL,QAAA,EAAU;AAAA,qBACZ;AAAA,oBACD,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AACF;AAAA;AAAA;AACF,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;;;;"}
|
package/dist/footer.css
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@layer starter, reset, base, state, application;
|
|
2
|
+
|
|
3
|
+
._chat-footer_1kkwo_1 {
|
|
4
|
+
padding: var(--size-4);
|
|
5
|
+
background-color: var(--color-background);
|
|
6
|
+
border-top: 1px solid var(--color-border);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
._chat-footer-description_1kkwo_7 {
|
|
10
|
+
margin-top: var(--size-1);
|
|
11
|
+
font-size: 0.8rem;
|
|
12
|
+
}
|