@servicetitan/anvil2-ext-atlas 0.0.14 → 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.
Files changed (160) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/_commonjsHelpers-B85MJLTf.js +6 -0
  3. package/dist/_commonjsHelpers-B85MJLTf.js.map +1 -0
  4. package/dist/atlas-header-jdAIcEpa.js +23 -0
  5. package/dist/atlas-header-jdAIcEpa.js.map +1 -0
  6. package/dist/atlas-header.d.ts +2 -0
  7. package/dist/atlas-header.js +2 -0
  8. package/dist/atlas-header.js.map +1 -0
  9. package/dist/chat-composer-rich-BM5hoC1f.js +162 -0
  10. package/dist/chat-composer-rich-BM5hoC1f.js.map +1 -0
  11. package/dist/chat-composer-rich.css +119 -0
  12. package/dist/chat-composer-rich.d.ts +2 -0
  13. package/dist/chat-composer-rich.js +2 -0
  14. package/dist/chat-composer-rich.js.map +1 -0
  15. package/dist/chat-window-BEkLTYNg.js +76 -0
  16. package/dist/chat-window-BEkLTYNg.js.map +1 -0
  17. package/dist/chat-window.css +49 -0
  18. package/dist/chat.d.ts +2 -0
  19. package/dist/chat.js +2 -0
  20. package/dist/chat.js.map +1 -0
  21. package/dist/components/atlas-header/atlas-header.d.ts +21 -0
  22. package/dist/components/atlas-header/index.d.ts +2 -0
  23. package/dist/components/chat/chat-window.d.ts +13 -0
  24. package/dist/components/chat/index.d.ts +1 -0
  25. package/dist/components/chat-composer-rich/chat-composer-rich.d.ts +23 -0
  26. package/dist/components/chat-composer-rich/index.d.ts +2 -0
  27. package/dist/components/content/content.d.ts +7 -0
  28. package/dist/components/content/index.d.ts +1 -0
  29. package/dist/components/footer/footer.d.ts +16 -0
  30. package/dist/components/footer/index.d.ts +2 -0
  31. package/dist/components/header/header.d.ts +23 -0
  32. package/dist/components/header/index.d.ts +2 -0
  33. package/dist/components/index.d.ts +16 -1
  34. package/dist/components/infinite-content/hooks/use-infinite-scroll.d.ts +11 -0
  35. package/dist/components/infinite-content/hooks/use-scroll-callback.d.ts +11 -0
  36. package/dist/components/infinite-content/index.d.ts +2 -0
  37. package/dist/components/infinite-content/infinite-content.d.ts +17 -0
  38. package/dist/components/loader/index.d.ts +1 -0
  39. package/dist/components/loader/loader.d.ts +2 -0
  40. package/dist/components/markdown-text/index.d.ts +2 -0
  41. package/dist/components/markdown-text/markdown-text.d.ts +5 -0
  42. package/dist/components/messages/assistant-message.d.ts +10 -0
  43. package/dist/components/messages/error-message.d.ts +8 -0
  44. package/dist/components/messages/index.d.ts +6 -0
  45. package/dist/components/messages/markdown-message.d.ts +13 -0
  46. package/dist/components/messages/message-interface.d.ts +4 -0
  47. package/dist/components/messages/small-action.d.ts +13 -0
  48. package/dist/components/messages/system-message.d.ts +18 -0
  49. package/dist/components/messages/user-message.d.ts +13 -0
  50. package/dist/components/notification-card/index.d.ts +1 -0
  51. package/dist/components/notification-card/notification-card.d.ts +10 -0
  52. package/dist/components/recommendations/confirmation-card/confirmation-card.d.ts +10 -0
  53. package/dist/components/recommendations/confirmation-card/index.d.ts +1 -0
  54. package/dist/components/recommendations/index.d.ts +4 -0
  55. package/dist/components/recommendations/multiple-recommendation-card/index.d.ts +1 -0
  56. package/dist/components/recommendations/multiple-recommendation-card/multiple-recommendation-card.d.ts +7 -0
  57. package/dist/components/recommendations/shared-interfaces.d.ts +26 -0
  58. package/dist/components/recommendations/single-recommendation-card/index.d.ts +1 -0
  59. package/dist/components/recommendations/single-recommendation-card/single-recommendation-card.d.ts +7 -0
  60. package/dist/components/screens/index.d.ts +1 -0
  61. package/dist/components/screens/system-error.d.ts +10 -0
  62. package/dist/components/screens/welcome.d.ts +8 -0
  63. package/dist/components/spinner/index.d.ts +1 -0
  64. package/dist/components/spinner/spinner.d.ts +1 -0
  65. package/dist/components/suggestion/index.d.ts +1 -0
  66. package/dist/components/suggestion/suggestion.d.ts +11 -0
  67. package/dist/components/toolbox/index.d.ts +2 -0
  68. package/dist/components/toolbox/toolbox.d.ts +12 -0
  69. package/dist/components/toolbox/toolbox.enums.d.ts +5 -0
  70. package/dist/content-acT_RzNQ.js +55 -0
  71. package/dist/content-acT_RzNQ.js.map +1 -0
  72. package/dist/content.css +10 -0
  73. package/dist/content.d.ts +2 -0
  74. package/dist/content.js +2 -0
  75. package/dist/content.js.map +1 -0
  76. package/dist/footer-DezXey1O.js +86 -0
  77. package/dist/footer-DezXey1O.js.map +1 -0
  78. package/dist/footer.css +12 -0
  79. package/dist/footer.d.ts +2 -0
  80. package/dist/footer.js +2 -0
  81. package/dist/footer.js.map +1 -0
  82. package/dist/header-DgkrbsFN.js +171 -0
  83. package/dist/header-DgkrbsFN.js.map +1 -0
  84. package/dist/header.css +23 -0
  85. package/dist/header.d.ts +2 -0
  86. package/dist/header.js +2 -0
  87. package/dist/header.js.map +1 -0
  88. package/dist/hooks/index.d.ts +1 -0
  89. package/dist/hooks/use-draggable.d.ts +18 -0
  90. package/dist/index-DDXI3m_u.js +73 -0
  91. package/dist/index-DDXI3m_u.js.map +1 -0
  92. package/dist/index-DFEn2XpE.js +24643 -0
  93. package/dist/index-DFEn2XpE.js.map +1 -0
  94. package/dist/index.js +16 -1
  95. package/dist/index.js.map +1 -1
  96. package/dist/infinite-content-B4ojfnZH.js +144 -0
  97. package/dist/infinite-content-B4ojfnZH.js.map +1 -0
  98. package/dist/infinite-content.css +25 -0
  99. package/dist/infinite-content.d.ts +2 -0
  100. package/dist/infinite-content.js +2 -0
  101. package/dist/infinite-content.js.map +1 -0
  102. package/dist/loader-DYmcO1Y_.js +48 -0
  103. package/dist/loader-DYmcO1Y_.js.map +1 -0
  104. package/dist/loader.d.ts +2 -0
  105. package/dist/loader.js +2 -0
  106. package/dist/loader.js.map +1 -0
  107. package/dist/markdown-text-CKN0oo8R.js +13 -0
  108. package/dist/markdown-text-CKN0oo8R.js.map +1 -0
  109. package/dist/markdown-text.css +45 -0
  110. package/dist/markdown-text.d.ts +2 -0
  111. package/dist/markdown-text.js +2 -0
  112. package/dist/markdown-text.js.map +1 -0
  113. package/dist/messages.d.ts +2 -0
  114. package/dist/messages.js +2 -0
  115. package/dist/messages.js.map +1 -0
  116. package/dist/notification-card-B38ZC7k4.js +59 -0
  117. package/dist/notification-card-B38ZC7k4.js.map +1 -0
  118. package/dist/notification-card.d.ts +2 -0
  119. package/dist/notification-card.js +2 -0
  120. package/dist/notification-card.js.map +1 -0
  121. package/dist/proxy-B3m3ViIw.js +9928 -0
  122. package/dist/proxy-B3m3ViIw.js.map +1 -0
  123. package/dist/recommendations.d.ts +2 -0
  124. package/dist/recommendations.js +2 -0
  125. package/dist/recommendations.js.map +1 -0
  126. package/dist/screens.d.ts +2 -0
  127. package/dist/screens.js +2 -0
  128. package/dist/screens.js.map +1 -0
  129. package/dist/single-recommendation-card-G78KiWnb.js +199 -0
  130. package/dist/single-recommendation-card-G78KiWnb.js.map +1 -0
  131. package/dist/spinner-QnlThoJs.js +23 -0
  132. package/dist/spinner-QnlThoJs.js.map +1 -0
  133. package/dist/spinner.css +21 -0
  134. package/dist/spinner.d.ts +2 -0
  135. package/dist/spinner.js +2 -0
  136. package/dist/spinner.js.map +1 -0
  137. package/dist/suggestion-pJLJZyjg.js +33 -0
  138. package/dist/suggestion-pJLJZyjg.js.map +1 -0
  139. package/dist/suggestion.d.ts +2 -0
  140. package/dist/suggestion.js +2 -0
  141. package/dist/suggestion.js.map +1 -0
  142. package/dist/toolbox-B-mWIaVL.js +272 -0
  143. package/dist/toolbox-B-mWIaVL.js.map +1 -0
  144. package/dist/toolbox.d.ts +2 -0
  145. package/dist/toolbox.js +2 -0
  146. package/dist/toolbox.js.map +1 -0
  147. package/dist/user-message-DCOP95qA.js +247 -0
  148. package/dist/user-message-DCOP95qA.js.map +1 -0
  149. package/dist/user-message.css +170 -0
  150. package/dist/welcome-BY6k2z0K.js +57 -0
  151. package/dist/welcome-BY6k2z0K.js.map +1 -0
  152. package/dist/welcome.css +23 -0
  153. package/package.json +19 -7
  154. package/dist/DummyComponent-ac_BQfhC.js +0 -8
  155. package/dist/DummyComponent-ac_BQfhC.js.map +0 -1
  156. package/dist/DummyComponent.d.ts +0 -2
  157. package/dist/DummyComponent.js +0 -2
  158. package/dist/DummyComponent.js.map +0 -1
  159. package/dist/components/DummyComponent/DummyComponent.d.ts +0 -1
  160. package/dist/components/DummyComponent/index.d.ts +0 -1
package/dist/index.js CHANGED
@@ -1,2 +1,17 @@
1
- export { D as DummyComponent } from './DummyComponent-ac_BQfhC.js';
1
+ export { A as AtlasHeader } from './atlas-header-jdAIcEpa.js';
2
+ export { C as ChatWindow } from './chat-window-BEkLTYNg.js';
3
+ export { C as ChatComposerRich } from './chat-composer-rich-BM5hoC1f.js';
4
+ export { C as Content } from './content-acT_RzNQ.js';
5
+ export { F as Footer } from './footer-DezXey1O.js';
6
+ export { H as Header } from './header-DgkrbsFN.js';
7
+ export { I as InfiniteContent } from './infinite-content-B4ojfnZH.js';
8
+ export { L as Loader } from './loader-DYmcO1Y_.js';
9
+ export { M as MarkdownText } from './markdown-text-CKN0oo8R.js';
10
+ export { A as AssistantMessage, M as MarkdownMessage, S as SmallAction, a as SystemMessage, T as Thinking, U as UserMessage } from './user-message-DCOP95qA.js';
11
+ export { N as NotificationCard } from './notification-card-B38ZC7k4.js';
12
+ export { C as ConfirmationCard, M as MultipleRecommendationCard, S as SingleRecommendationCard } from './single-recommendation-card-G78KiWnb.js';
13
+ export { W as Welcome } from './welcome-BY6k2z0K.js';
14
+ export { S as Spinner } from './spinner-QnlThoJs.js';
15
+ export { S as Suggestion, a as SuggestionList } from './suggestion-pJLJZyjg.js';
16
+ export { T as Toolbox, U as UserFeedback } from './toolbox-B-mWIaVL.js';
2
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -0,0 +1,144 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useRef, useCallback, useEffect, Fragment } from 'react';
3
+ import { c as classNames } from './index-DDXI3m_u.js';
4
+ import { Flex } from '@servicetitan/anvil2';
5
+ import { S as Spinner } from './spinner-QnlThoJs.js';
6
+
7
+ import './infinite-content.css';const useInfiniteScroll = ({
8
+ hasMore,
9
+ isLoading,
10
+ onLoadMore,
11
+ rootMargin = "100px",
12
+ threshold = 0.1
13
+ }) => {
14
+ const sentinelRef = useRef(null);
15
+ const handleIntersection = useCallback(
16
+ (entries) => {
17
+ const [entry] = entries;
18
+ if (entry.isIntersecting && hasMore && !isLoading) {
19
+ onLoadMore();
20
+ }
21
+ },
22
+ [hasMore, isLoading, onLoadMore]
23
+ );
24
+ useEffect(() => {
25
+ const sentinel = sentinelRef.current;
26
+ if (!sentinel) {
27
+ return;
28
+ }
29
+ const observer = new IntersectionObserver(handleIntersection, {
30
+ rootMargin,
31
+ threshold
32
+ });
33
+ observer.observe(sentinel);
34
+ return () => {
35
+ observer.unobserve(sentinel);
36
+ observer.disconnect();
37
+ };
38
+ }, [handleIntersection, rootMargin, threshold]);
39
+ return {
40
+ sentinelRef
41
+ };
42
+ };
43
+
44
+ const useScrollCallback = ({
45
+ onScrollDown,
46
+ onScrollTop,
47
+ threshold = 50,
48
+ element
49
+ } = {}) => {
50
+ const lastScrollTop = useRef(0);
51
+ const hasTriggeredScrollDown = useRef(false);
52
+ const handleScroll = useCallback(() => {
53
+ const scrollTop = element ? element.scrollTop : window.scrollY || document.documentElement.scrollTop;
54
+ if (scrollTop >= threshold && !hasTriggeredScrollDown.current) {
55
+ hasTriggeredScrollDown.current = true;
56
+ onScrollDown?.();
57
+ }
58
+ if (scrollTop === 0 && hasTriggeredScrollDown.current) {
59
+ hasTriggeredScrollDown.current = false;
60
+ onScrollTop?.();
61
+ }
62
+ lastScrollTop.current = scrollTop;
63
+ }, [onScrollDown, onScrollTop, threshold, element]);
64
+ useEffect(() => {
65
+ if (!element) {
66
+ return;
67
+ }
68
+ const targetElement = element;
69
+ targetElement.addEventListener("scroll", handleScroll, { passive: true });
70
+ return () => {
71
+ targetElement.removeEventListener("scroll", handleScroll);
72
+ };
73
+ }, [handleScroll, element]);
74
+ return {
75
+ lastScrollTop: lastScrollTop.current,
76
+ hasTriggeredScrollDown: hasTriggeredScrollDown.current
77
+ };
78
+ };
79
+
80
+ const sentinel = "_sentinel_10sf8_19";
81
+ const styles = {
82
+ "infinite-content": "_infinite-content_10sf8_1",
83
+ "loading-more": "_loading-more_10sf8_11",
84
+ sentinel: sentinel
85
+ };
86
+
87
+ const InfiniteContent = ({
88
+ children,
89
+ loading = false,
90
+ className,
91
+ hasMore = false,
92
+ onLoadMore = () => {
93
+ },
94
+ loadingMore = false,
95
+ rootMargin = "200px",
96
+ threshold = 0.1,
97
+ renderLoadingMore,
98
+ renderEndMessage,
99
+ onScrollDown,
100
+ onScrollTop,
101
+ scrollThreshold = 50,
102
+ scrollContainerRef
103
+ }) => {
104
+ const containerRef = useRef(null);
105
+ const { sentinelRef } = useInfiniteScroll({
106
+ hasMore,
107
+ isLoading: loadingMore,
108
+ onLoadMore: () => {
109
+ onLoadMore();
110
+ },
111
+ rootMargin,
112
+ threshold
113
+ });
114
+ useScrollCallback({
115
+ onScrollDown,
116
+ onScrollTop,
117
+ threshold: scrollThreshold,
118
+ element: scrollContainerRef?.current ?? containerRef.current
119
+ });
120
+ const showInitialLoading = loading && (!children || Array.isArray(children) && children.length === 0);
121
+ return /* @__PURE__ */ jsx(
122
+ Flex,
123
+ {
124
+ ref: containerRef,
125
+ className: classNames(styles["infinite-content"], className),
126
+ children: showInitialLoading ? /* @__PURE__ */ jsx(Spinner, {}) : /* @__PURE__ */ jsxs(Fragment, { children: [
127
+ children,
128
+ loadingMore && hasMore && /* @__PURE__ */ jsx("div", { className: styles["loading-more"], children: renderLoadingMore ? renderLoadingMore() : /* @__PURE__ */ jsx(Spinner, {}) }),
129
+ hasMore && /* @__PURE__ */ jsx(
130
+ "div",
131
+ {
132
+ ref: sentinelRef,
133
+ className: styles["sentinel"],
134
+ "aria-hidden": "true"
135
+ }
136
+ ),
137
+ !hasMore && children && /* @__PURE__ */ jsx("div", { children: renderEndMessage ? renderEndMessage() : null })
138
+ ] })
139
+ }
140
+ );
141
+ };
142
+
143
+ export { InfiniteContent as I };
144
+ //# sourceMappingURL=infinite-content-B4ojfnZH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infinite-content-B4ojfnZH.js","sources":["../src/components/infinite-content/hooks/use-infinite-scroll.ts","../src/components/infinite-content/hooks/use-scroll-callback.ts","../src/components/infinite-content/infinite-content.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\n\ninterface UseInfiniteScrollOptions {\n hasMore: boolean;\n isLoading: boolean;\n onLoadMore: () => void;\n rootMargin?: string;\n threshold?: number;\n}\n\nexport const useInfiniteScroll = ({\n hasMore,\n isLoading,\n onLoadMore,\n rootMargin = \"100px\",\n threshold = 0.1,\n}: UseInfiniteScrollOptions) => {\n const sentinelRef = useRef<HTMLDivElement>(null);\n\n const handleIntersection = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n const [entry] = entries;\n\n if (entry.isIntersecting && hasMore && !isLoading) {\n onLoadMore();\n }\n },\n [hasMore, isLoading, onLoadMore],\n );\n\n useEffect(() => {\n const sentinel = sentinelRef.current;\n if (!sentinel) {\n return;\n }\n\n const observer = new IntersectionObserver(handleIntersection, {\n rootMargin,\n threshold,\n });\n\n observer.observe(sentinel);\n\n return () => {\n observer.unobserve(sentinel);\n observer.disconnect();\n };\n }, [handleIntersection, rootMargin, threshold]);\n\n return {\n sentinelRef,\n };\n};\n","import { useCallback, useEffect, useRef } from \"react\";\n\ninterface UseScrollCallbackOptions {\n onScrollDown?: () => void;\n onScrollTop?: () => void;\n threshold?: number;\n element?: HTMLElement | null;\n}\n\nexport const useScrollCallback = ({\n onScrollDown,\n onScrollTop,\n threshold = 50,\n element,\n}: UseScrollCallbackOptions = {}) => {\n const lastScrollTop = useRef(0);\n const hasTriggeredScrollDown = useRef(false);\n\n const handleScroll = useCallback(() => {\n const scrollTop = element\n ? element.scrollTop\n : window.scrollY || document.documentElement.scrollTop;\n\n // Check if scrolled down past threshold\n if (scrollTop >= threshold && !hasTriggeredScrollDown.current) {\n hasTriggeredScrollDown.current = true;\n onScrollDown?.();\n }\n\n // Check if scrolled back to top\n if (scrollTop === 0 && hasTriggeredScrollDown.current) {\n hasTriggeredScrollDown.current = false;\n onScrollTop?.();\n }\n\n lastScrollTop.current = scrollTop;\n }, [onScrollDown, onScrollTop, threshold, element]);\n\n useEffect(() => {\n if (!element) {\n return;\n }\n\n const targetElement = element;\n\n targetElement.addEventListener(\"scroll\", handleScroll, { passive: true });\n\n return () => {\n targetElement.removeEventListener(\"scroll\", handleScroll);\n };\n }, [handleScroll, element]);\n\n return {\n lastScrollTop: lastScrollTop.current,\n hasTriggeredScrollDown: hasTriggeredScrollDown.current,\n };\n};\n","import {\n FC,\n Fragment,\n PropsWithChildren,\n ReactNode,\n RefObject,\n useRef,\n} from \"react\";\nimport classNames from \"classnames\";\nimport { Flex } from \"@servicetitan/anvil2\";\n\nimport { Spinner } from \"../spinner\";\n\nimport { useInfiniteScroll } from \"./hooks/use-infinite-scroll\";\nimport { useScrollCallback } from \"./hooks/use-scroll-callback\";\n\nimport styles from \"./infinite-content.module.scss\";\n\nexport interface InfiniteContentProps {\n loading?: boolean;\n className?: string;\n hasMore?: boolean;\n onLoadMore?: () => void;\n loadingMore?: boolean;\n rootMargin?: string;\n threshold?: number;\n renderLoadingMore?: () => ReactNode;\n renderEndMessage?: () => ReactNode;\n onScrollDown?: () => void;\n onScrollTop?: () => void;\n scrollThreshold?: number;\n scrollContainerRef?: RefObject<HTMLElement>;\n}\n\nexport const InfiniteContent: FC<PropsWithChildren<InfiniteContentProps>> = ({\n children,\n loading = false,\n className,\n hasMore = false,\n onLoadMore = () => {},\n loadingMore = false,\n rootMargin = \"200px\",\n threshold = 0.1,\n renderLoadingMore,\n renderEndMessage,\n onScrollDown,\n onScrollTop,\n scrollThreshold = 50,\n scrollContainerRef,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const { sentinelRef } = useInfiniteScroll({\n hasMore,\n isLoading: loadingMore,\n onLoadMore: () => {\n onLoadMore();\n },\n rootMargin,\n threshold,\n });\n\n useScrollCallback({\n onScrollDown,\n onScrollTop,\n threshold: scrollThreshold,\n element: scrollContainerRef?.current ?? containerRef.current,\n });\n\n // Show initial loading state only when there are no messages yet\n const showInitialLoading =\n loading &&\n (!children || (Array.isArray(children) && children.length === 0));\n\n return (\n <Flex\n ref={containerRef}\n className={classNames(styles[\"infinite-content\"], className)}\n >\n {showInitialLoading ? (\n <Spinner />\n ) : (\n <Fragment>\n {children}\n\n {/* Loading more indicator */}\n {loadingMore && hasMore && (\n <div className={styles[\"loading-more\"]}>\n {renderLoadingMore ? renderLoadingMore() : <Spinner />}\n </div>\n )}\n\n {/* Infinite scroll sentinel - invisible trigger element */}\n {hasMore && (\n <div\n ref={sentinelRef}\n className={styles[\"sentinel\"]}\n aria-hidden=\"true\"\n />\n )}\n\n {/* End of list indicator */}\n {!hasMore && children && (\n <div>{renderEndMessage ? renderEndMessage() : null}</div>\n )}\n </Fragment>\n )}\n </Flex>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ @layer starter, reset, base, state, application;
2
+
3
+ ._infinite-content_10sf8_1 {
4
+ flex-grow: 1;
5
+ padding: var(--size-2);
6
+ box-sizing: border-box;
7
+ overflow-y: auto;
8
+ display: flex;
9
+ flex-direction: column;
10
+ gap: 8px;
11
+ }
12
+
13
+ ._loading-more_10sf8_11 {
14
+ display: flex;
15
+ justify-content: center;
16
+ align-items: center;
17
+ padding: var(--size-2);
18
+ min-height: 60px;
19
+ }
20
+
21
+ ._sentinel_10sf8_19 {
22
+ height: 1px;
23
+ margin: 10px 0;
24
+ visibility: hidden;
25
+ }
@@ -0,0 +1,2 @@
1
+ export * from './components/infinite-content/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ export { I as InfiniteContent } from './infinite-content-B4ojfnZH.js';
2
+ //# sourceMappingURL=infinite-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infinite-content.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { Flex } from '@servicetitan/anvil2';
3
+ import { m as motion, e as easeInOut } from './proxy-B3m3ViIw.js';
4
+
5
+ const dotVariants = {
6
+ bounce: (i) => ({
7
+ y: [0, -15, 0],
8
+ transition: {
9
+ duration: 1.2,
10
+ ease: easeInOut,
11
+ repeat: Infinity,
12
+ delay: i * 0.15
13
+ }
14
+ })
15
+ };
16
+ const Loader = () => {
17
+ return /* @__PURE__ */ jsx(
18
+ Flex,
19
+ {
20
+ role: "status",
21
+ "aria-label": "Loading message",
22
+ style: {
23
+ paddingBlockStart: "var(--size-2)",
24
+ marginBlockStart: "var(--size-3)"
25
+ },
26
+ "data-chromatic": "ignore",
27
+ children: [0, 1, 2].map((i) => /* @__PURE__ */ jsx(
28
+ motion.div,
29
+ {
30
+ custom: i,
31
+ variants: dotVariants,
32
+ animate: "bounce",
33
+ "data-chromatic": "ignore",
34
+ style: {
35
+ width: "8px",
36
+ height: "8px",
37
+ borderRadius: "50%",
38
+ background: "var(--foreground-color-primary)"
39
+ }
40
+ },
41
+ i
42
+ ))
43
+ }
44
+ );
45
+ };
46
+
47
+ export { Loader as L };
48
+ //# sourceMappingURL=loader-DYmcO1Y_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader-DYmcO1Y_.js","sources":["../src/components/loader/loader.tsx"],"sourcesContent":["import { FC } from \"react\";\nimport { easeInOut, motion } from \"framer-motion\";\nimport { Flex } from \"@servicetitan/anvil2\";\n\nconst dotVariants = {\n bounce: (i: number) => ({\n y: [0, -15, 0],\n transition: {\n duration: 1.2,\n ease: easeInOut,\n repeat: Infinity,\n delay: i * 0.15,\n },\n }),\n};\n\nexport const Loader: FC = () => {\n return (\n <Flex\n role=\"status\"\n aria-label=\"Loading message\"\n style={{\n paddingBlockStart: \"var(--size-2)\",\n marginBlockStart: \"var(--size-3)\",\n }}\n data-chromatic=\"ignore\"\n >\n {[0, 1, 2].map((i) => (\n <motion.div\n key={i}\n custom={i}\n variants={dotVariants}\n animate=\"bounce\"\n data-chromatic=\"ignore\"\n style={{\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"var(--foreground-color-primary)\",\n }}\n />\n ))}\n </Flex>\n );\n};\n"],"names":[],"mappings":";;;;AAIA,MAAM,WAAA,GAAc;AAAA,EAClB,MAAA,EAAQ,CAAC,CAAA,MAAe;AAAA,IACtB,CAAA,EAAG,CAAC,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA;AAAA,IACb,UAAA,EAAY;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,IAAA,EAAM,SAAA;AAAA,MACN,MAAA,EAAQ,QAAA;AAAA,MACR,OAAO,CAAA,GAAI;AAAA;AACb,GACF;AACF,CAAA;AAEO,MAAM,SAAa,MAAM;AAC9B,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,iBAAA;AAAA,MACX,KAAA,EAAO;AAAA,QACL,iBAAA,EAAmB,eAAA;AAAA,QACnB,gBAAA,EAAkB;AAAA,OACpB;AAAA,MACA,gBAAA,EAAe,QAAA;AAAA,MAEd,WAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,qBACd,GAAA;AAAA,QAAC,MAAA,CAAO,GAAA;AAAA,QAAP;AAAA,UAEC,MAAA,EAAQ,CAAA;AAAA,UACR,QAAA,EAAU,WAAA;AAAA,UACV,OAAA,EAAQ,QAAA;AAAA,UACR,gBAAA,EAAe,QAAA;AAAA,UACf,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,KAAA;AAAA,YACP,MAAA,EAAQ,KAAA;AAAA,YACR,YAAA,EAAc,KAAA;AAAA,YACd,UAAA,EAAY;AAAA;AACd,SAAA;AAAA,QAVK;AAAA,OAYR;AAAA;AAAA,GACH;AAEJ;;;;"}
@@ -0,0 +1,2 @@
1
+ export * from './components/loader/index'
2
+ export {}
package/dist/loader.js ADDED
@@ -0,0 +1,2 @@
1
+ export { L as Loader } from './loader-DYmcO1Y_.js';
2
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { M as Markdown, r as remarkGfm } from './index-DFEn2XpE.js';
3
+
4
+ import './markdown-text.css';const styles = {
5
+ "markdown-content": "_markdown-content_14gyi_1"
6
+ };
7
+
8
+ const MarkdownText = ({ text = "" }) => {
9
+ return /* @__PURE__ */ jsx("div", { className: styles["markdown-content"], children: /* @__PURE__ */ jsx(Markdown, { remarkPlugins: [remarkGfm], children: text }) });
10
+ };
11
+
12
+ export { MarkdownText as M };
13
+ //# sourceMappingURL=markdown-text-CKN0oo8R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-text-CKN0oo8R.js","sources":["../src/components/markdown-text/markdown-text.tsx"],"sourcesContent":["import { FC } from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\nimport styles from \"./markdown-text.module.scss\";\n\nexport interface MarkdownTextProps {\n text: string;\n}\n\nexport const MarkdownText: FC<MarkdownTextProps> = ({ text = \"\" }) => {\n return (\n <div className={styles[\"markdown-content\"]}>\n <ReactMarkdown remarkPlugins={[remarkGfm]}>{text}</ReactMarkdown>\n </div>\n );\n};\n"],"names":["ReactMarkdown"],"mappings":";;;;;;;AAUO,MAAM,YAAA,GAAsC,CAAC,EAAE,IAAA,GAAO,IAAG,KAAM;AACpE,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,kBAAkB,CAAA,EACvC,QAAA,kBAAA,GAAA,CAACA,QAAA,EAAA,EAAc,aAAA,EAAe,CAAC,SAAS,CAAA,EAAI,gBAAK,CAAA,EACnD,CAAA;AAEJ;;;;"}
@@ -0,0 +1,45 @@
1
+ @layer starter, reset, base, state, application;
2
+ ._markdown-content_14gyi_1 h1,
3
+ ._markdown-content_14gyi_1 h2,
4
+ ._markdown-content_14gyi_1 h3,
5
+ ._markdown-content_14gyi_1 h4 {
6
+ font-size: 1rem;
7
+ margin-top: 0;
8
+ }
9
+ ._markdown-content_14gyi_1 p {
10
+ margin: 0 0 var(--size-2);
11
+ }
12
+ ._markdown-content_14gyi_1 pre {
13
+ background-color: #f6f8fa;
14
+ border-radius: var(--border-radius-large);
15
+ padding: var(--size-4);
16
+ overflow: auto;
17
+ }
18
+ ._markdown-content_14gyi_1 code {
19
+ background-color: rgba(175, 184, 193, 0.2);
20
+ border-radius: var(--border-radius-large);
21
+ padding: 0.2em 0.4em;
22
+ font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
23
+ }
24
+ ._markdown-content_14gyi_1 pre code {
25
+ background-color: transparent;
26
+ padding: 0;
27
+ }
28
+ ._markdown-content_14gyi_1 ul,
29
+ ._markdown-content_14gyi_1 ol {
30
+ padding-left: 2em;
31
+ margin: 0 0 1em;
32
+ }
33
+ ._markdown-content_14gyi_1 table {
34
+ border-collapse: collapse;
35
+ width: 100%;
36
+ margin: 1em 0;
37
+ }
38
+ ._markdown-content_14gyi_1 th,
39
+ ._markdown-content_14gyi_1 td {
40
+ border: 1px solid #d0d7de;
41
+ padding: 6px 13px;
42
+ }
43
+ ._markdown-content_14gyi_1 th {
44
+ background-color: #f6f8fa;
45
+ }
@@ -0,0 +1,2 @@
1
+ export * from './components/markdown-text/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ export { M as MarkdownText } from './markdown-text-CKN0oo8R.js';
2
+ //# sourceMappingURL=markdown-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-text.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './components/messages/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ export { A as AssistantMessage, M as MarkdownMessage, S as SmallAction, a as SystemMessage, T as Thinking, U as UserMessage } from './user-message-DCOP95qA.js';
2
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Card, Flex, Text } from '@servicetitan/anvil2';
3
+ import { M as MarkdownText } from './markdown-text-CKN0oo8R.js';
4
+
5
+ const NotificationCard = ({
6
+ title,
7
+ message,
8
+ timestamp,
9
+ onClick,
10
+ unread = false
11
+ }) => {
12
+ return /* @__PURE__ */ jsx(
13
+ Card,
14
+ {
15
+ onClick,
16
+ style: {
17
+ cursor: "pointer"
18
+ },
19
+ children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 2, style: { width: "100%" }, children: [
20
+ /* @__PURE__ */ jsxs(Flex, { alignItems: "center", justifyContent: "space-between", children: [
21
+ /* @__PURE__ */ jsx(
22
+ Text,
23
+ {
24
+ size: "medium",
25
+ style: {
26
+ color: "#0067E4",
27
+ whiteSpace: "nowrap",
28
+ overflow: "hidden",
29
+ textOverflow: "ellipsis",
30
+ width: "75%"
31
+ },
32
+ children: unread ? /* @__PURE__ */ jsx("b", { children: title }) : title
33
+ }
34
+ ),
35
+ /* @__PURE__ */ jsx(Flex, { alignItems: "center", gap: 1, children: /* @__PURE__ */ jsxs(Text, { size: "small", style: { color: "#6B6B6B" }, children: [
36
+ timestamp,
37
+ unread && /* @__PURE__ */ jsx(
38
+ "span",
39
+ {
40
+ style: {
41
+ display: "inline-block",
42
+ width: 12,
43
+ height: 12,
44
+ borderRadius: "50%",
45
+ background: "#E23D18",
46
+ marginLeft: 8
47
+ }
48
+ }
49
+ )
50
+ ] }) })
51
+ ] }),
52
+ /* @__PURE__ */ jsx(Text, { size: "small", style: { color: "#6B6B6B" }, children: unread ? /* @__PURE__ */ jsx("b", { children: /* @__PURE__ */ jsx(MarkdownText, { text: message }) }) : /* @__PURE__ */ jsx(MarkdownText, { text: message }) })
53
+ ] })
54
+ }
55
+ );
56
+ };
57
+
58
+ export { NotificationCard as N };
59
+ //# sourceMappingURL=notification-card-B38ZC7k4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-card-B38ZC7k4.js","sources":["../src/components/notification-card/notification-card.tsx"],"sourcesContent":["import { FC } from \"react\";\nimport { Card, Flex, Text } from \"@servicetitan/anvil2\";\n\nimport { MarkdownText } from \"../markdown-text\";\n\ninterface NotificationCardProps {\n title: string;\n message: string;\n timestamp: string;\n unread?: boolean;\n onClick?: () => void;\n}\n\nexport const NotificationCard: FC<NotificationCardProps> = ({\n title,\n message,\n timestamp,\n onClick,\n unread = false,\n}) => {\n return (\n <Card\n onClick={onClick}\n style={{\n cursor: \"pointer\",\n }}\n >\n <Flex direction=\"column\" gap={2} style={{ width: \"100%\" }}>\n <Flex alignItems=\"center\" justifyContent=\"space-between\">\n <Text\n size=\"medium\"\n style={{\n color: \"#0067E4\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n width: \"75%\",\n }}\n >\n {unread ? <b>{title}</b> : title}\n </Text>\n <Flex alignItems=\"center\" gap={1}>\n <Text size=\"small\" style={{ color: \"#6B6B6B\" }}>\n {timestamp}\n {unread && (\n <span\n style={{\n display: \"inline-block\",\n width: 12,\n height: 12,\n borderRadius: \"50%\",\n background: \"#E23D18\",\n marginLeft: 8,\n }}\n />\n )}\n </Text>\n </Flex>\n </Flex>\n\n <Text size=\"small\" style={{ color: \"#6B6B6B\" }}>\n {unread ? (\n <b>\n <MarkdownText text={message} />\n </b>\n ) : (\n <MarkdownText text={message} />\n )}\n </Text>\n </Flex>\n </Card>\n );\n};\n"],"names":[],"mappings":";;;;AAaO,MAAM,mBAA8C,CAAC;AAAA,EAC1D,KAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA,GAAS;AACX,CAAA,KAAM;AACJ,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ;AAAA,OACV;AAAA,MAEA,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,GAAA,EAAK,GAAG,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO,EACtD,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,UAAA,EAAW,QAAA,EAAS,cAAA,EAAe,eAAA,EACvC,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,KAAA,EAAO;AAAA,gBACL,KAAA,EAAO,SAAA;AAAA,gBACP,UAAA,EAAY,QAAA;AAAA,gBACZ,QAAA,EAAU,QAAA;AAAA,gBACV,YAAA,EAAc,UAAA;AAAA,gBACd,KAAA,EAAO;AAAA,eACT;AAAA,cAEC,QAAA,EAAA,MAAA,mBAAS,GAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,EAAM,CAAA,GAAO;AAAA;AAAA,WAC7B;AAAA,0BACA,GAAA,CAAC,IAAA,EAAA,EAAK,UAAA,EAAW,QAAA,EAAS,KAAK,CAAA,EAC7B,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAO,EAAE,KAAA,EAAO,WAAU,EAC1C,QAAA,EAAA;AAAA,YAAA,SAAA;AAAA,YACA,MAAA,oBACC,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO;AAAA,kBACL,OAAA,EAAS,cAAA;AAAA,kBACT,KAAA,EAAO,EAAA;AAAA,kBACP,MAAA,EAAQ,EAAA;AAAA,kBACR,YAAA,EAAc,KAAA;AAAA,kBACd,UAAA,EAAY,SAAA;AAAA,kBACZ,UAAA,EAAY;AAAA;AACd;AAAA;AACF,WAAA,EAEJ,CAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAEA,GAAA,CAAC,QAAK,IAAA,EAAK,OAAA,EAAQ,OAAO,EAAE,KAAA,EAAO,SAAA,EAAU,EAC1C,QAAA,EAAA,MAAA,mBACC,GAAA,CAAC,OACC,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,MAAM,OAAA,EAAS,CAAA,EAC/B,oBAEA,GAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,OAAA,EAAS,CAAA,EAEjC;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -0,0 +1,2 @@
1
+ export * from './components/notification-card/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ export { N as NotificationCard } from './notification-card-B38ZC7k4.js';
2
+ //# sourceMappingURL=notification-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-card.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}