@servicetitan/anvil2-ext-atlas 2.1.2 → 2.2.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 +11 -0
- package/dist/{atlas-header-C-Bw_KyV.js → atlas-header-DtYEZIyx.js} +2 -2
- package/dist/{atlas-header-C-Bw_KyV.js.map → atlas-header-DtYEZIyx.js.map} +1 -1
- package/dist/atlas-header.js +1 -1
- package/dist/index.js +6 -6
- package/dist/loader.js +1 -1
- package/dist/{index-DFEn2XpE.js → markdown-text-BcCCdMfH.js} +10 -3
- package/dist/markdown-text-BcCCdMfH.js.map +1 -0
- package/dist/markdown-text.css +103 -26
- package/dist/markdown-text.js +1 -1
- package/dist/messages.js +1 -1
- package/dist/{notification-card-Bhi2-mQR.js → notification-card-DizmzaUo.js} +2 -2
- package/dist/{notification-card-Bhi2-mQR.js.map → notification-card-DizmzaUo.js.map} +1 -1
- package/dist/notification-card.js +1 -1
- package/dist/{pulse-loader-D0pbsphx.js → pulse-loader-DcrQsZeD.js} +3 -3
- package/dist/{pulse-loader-D0pbsphx.js.map → pulse-loader-DcrQsZeD.js.map} +1 -1
- package/dist/recommendations.js +1 -1
- package/dist/{single-recommendation-card-D_FiwLm1.js → single-recommendation-card-BPbfhvu_.js} +2 -2
- package/dist/{single-recommendation-card-D_FiwLm1.js.map → single-recommendation-card-BPbfhvu_.js.map} +1 -1
- package/dist/src/components/markdown-text/markdown-text.d.ts +17 -0
- package/dist/src/components/messages/markdown-message.d.ts +38 -0
- package/dist/{user-message-Cc5g9JGK.js → user-message-D1KrKgfD.js} +5 -6
- package/dist/user-message-D1KrKgfD.js.map +1 -0
- package/dist/user-message.css +9 -134
- package/package.json +3 -3
- package/dist/index-DFEn2XpE.js.map +0 -1
- package/dist/markdown-text-DWHdZVVX.js +0 -12
- package/dist/markdown-text-DWHdZVVX.js.map +0 -1
- package/dist/user-message-Cc5g9JGK.js.map +0 -1
package/dist/markdown-text.css
CHANGED
|
@@ -1,48 +1,125 @@
|
|
|
1
|
-
._markdown-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
font-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
._markdown-content_1mzpy_1 h1 {
|
|
2
|
+
color: var(--a2-foreground-color-default);
|
|
3
|
+
font-family: var(--a2-typography-heading-font-family, "Nunito Sans");
|
|
4
|
+
font-size: var(--a2-typography-heading-size-large, 24px);
|
|
5
|
+
font-style: normal;
|
|
6
|
+
font-weight: 800;
|
|
7
|
+
line-height: var(--a2-typography-heading-line-height-large, 30px);
|
|
8
|
+
letter-spacing: var(--a2-typography-heading-letter-spacing-large, -0.12px);
|
|
9
9
|
margin: 0 0 var(--a2-size-2);
|
|
10
10
|
}
|
|
11
|
-
._markdown-
|
|
12
|
-
|
|
11
|
+
._markdown-content_1mzpy_1 h2 {
|
|
12
|
+
color: var(--a2-foreground-color-default);
|
|
13
|
+
font-family: var(--a2-typography-heading-font-family, "Nunito Sans");
|
|
14
|
+
font-size: var(--a2-typography-heading-size-default, 20px);
|
|
15
|
+
font-style: normal;
|
|
16
|
+
font-weight: 800;
|
|
17
|
+
line-height: var(--a2-typography-heading-line-height-default, 25px);
|
|
18
|
+
letter-spacing: var(--a2-typography-heading-letter-spacing-default, -0.05px);
|
|
19
|
+
margin: 0 0 var(--a2-size-2);
|
|
20
|
+
}
|
|
21
|
+
._markdown-content_1mzpy_1 h3 {
|
|
22
|
+
color: var(--a2-foreground-color-default);
|
|
23
|
+
font-family: var(--a2-typography-heading-font-family, "Nunito Sans");
|
|
24
|
+
font-size: var(--a2-typography-heading-size-small, 16px);
|
|
25
|
+
font-style: normal;
|
|
26
|
+
font-weight: 800;
|
|
27
|
+
line-height: var(--a2-typography-heading-line-height-small, 20px);
|
|
28
|
+
letter-spacing: var(--a2-typography-heading-letter-spacing-small, 0);
|
|
29
|
+
margin: 0 0 var(--a2-size-2);
|
|
30
|
+
}
|
|
31
|
+
._markdown-content_1mzpy_1 p {
|
|
32
|
+
margin: 0 0 var(--a2-size-2) 0;
|
|
33
|
+
color: var(--a2-foreground-color-default);
|
|
34
|
+
font-family: var(--a2-typography-paragraph-font-family, "Nunito Sans");
|
|
35
|
+
font-size: var(--a2-typography-paragraph-size-default, 16px);
|
|
36
|
+
font-style: normal;
|
|
37
|
+
font-weight: var(--a2-font-weight-normal, 400);
|
|
38
|
+
line-height: var(--a2-typography-paragraph-line-height-default, 24px);
|
|
39
|
+
}
|
|
40
|
+
._markdown-content_1mzpy_1 pre {
|
|
41
|
+
background-color: var(--a2-background-color-strong);
|
|
13
42
|
border-radius: var(--a2-border-radius-large);
|
|
14
43
|
padding: var(--a2-size-4);
|
|
15
44
|
overflow: auto;
|
|
16
45
|
}
|
|
17
|
-
._markdown-
|
|
18
|
-
background-color:
|
|
46
|
+
._markdown-content_1mzpy_1 code {
|
|
47
|
+
background-color: rgba(175, 184, 193, 0.2);
|
|
19
48
|
border-radius: var(--a2-border-radius-large);
|
|
20
49
|
padding: 0.2em 0.4em;
|
|
21
50
|
font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
|
|
22
51
|
}
|
|
23
|
-
._markdown-
|
|
52
|
+
._markdown-content_1mzpy_1 pre code {
|
|
24
53
|
background-color: transparent;
|
|
25
54
|
padding: 0;
|
|
26
55
|
}
|
|
27
|
-
._markdown-
|
|
28
|
-
._markdown-
|
|
29
|
-
padding-left:
|
|
56
|
+
._markdown-content_1mzpy_1 ul,
|
|
57
|
+
._markdown-content_1mzpy_1 ol {
|
|
58
|
+
padding-left: var(--a2-size-8);
|
|
30
59
|
margin: 0 0 1em;
|
|
60
|
+
color: var(--a2-foreground-color-default);
|
|
61
|
+
font-family: var(--a2-typography-paragraph-font-family, "Nunito Sans");
|
|
62
|
+
font-size: var(--a2-typography-paragraph-size-default, 16px);
|
|
63
|
+
font-style: normal;
|
|
64
|
+
font-weight: var(--a2-font-weight-normal, 400);
|
|
65
|
+
line-height: var(--a2-typography-paragraph-line-height-default, 24px);
|
|
66
|
+
}
|
|
67
|
+
._markdown-content_1mzpy_1 li {
|
|
68
|
+
color: var(--a2-foreground-color-default);
|
|
69
|
+
font-family: var(--a2-typography-paragraph-font-family, "Nunito Sans");
|
|
70
|
+
font-size: var(--a2-typography-paragraph-size-default, 16px);
|
|
71
|
+
font-style: normal;
|
|
72
|
+
font-weight: var(--a2-font-weight-normal, 400);
|
|
73
|
+
line-height: var(--a2-typography-paragraph-line-height-default, 24px);
|
|
31
74
|
}
|
|
32
|
-
._markdown-
|
|
75
|
+
._markdown-content_1mzpy_1 strong,
|
|
76
|
+
._markdown-content_1mzpy_1 b {
|
|
77
|
+
color: var(--a2-foreground-color-default);
|
|
78
|
+
font-family: var(--a2-typography-paragraph-font-family, "Nunito Sans");
|
|
79
|
+
font-size: var(--a2-typography-paragraph-size-default, 16px);
|
|
80
|
+
font-style: normal;
|
|
81
|
+
font-weight: var(--a2-font-weight-bold, 700);
|
|
82
|
+
line-height: var(--a2-typography-paragraph-line-height-default, 24px);
|
|
83
|
+
}
|
|
84
|
+
._markdown-content_1mzpy_1 em,
|
|
85
|
+
._markdown-content_1mzpy_1 i {
|
|
86
|
+
color: var(--a2-foreground-color-default);
|
|
87
|
+
font-family: var(--a2-typography-paragraph-font-family, "Nunito Sans");
|
|
88
|
+
font-size: var(--a2-typography-paragraph-size-default, 16px);
|
|
89
|
+
font-style: italic;
|
|
90
|
+
font-weight: var(--a2-font-weight-normal, 400);
|
|
91
|
+
line-height: var(--a2-typography-paragraph-line-height-default, 24px);
|
|
92
|
+
}
|
|
93
|
+
._markdown-content_1mzpy_1 a {
|
|
94
|
+
color: var(--a2-foreground-color-primary, #0265dc);
|
|
95
|
+
font-family: var(--a2-typography-paragraph-font-family, "Nunito Sans");
|
|
96
|
+
font-size: var(--a2-typography-paragraph-size-default, 16px);
|
|
97
|
+
font-style: normal;
|
|
98
|
+
font-weight: var(--a2-font-weight-normal, 400);
|
|
99
|
+
line-height: var(--a2-typography-paragraph-line-height-default, 24px);
|
|
100
|
+
}
|
|
101
|
+
._markdown-content_1mzpy_1 table {
|
|
33
102
|
border-collapse: collapse;
|
|
34
|
-
|
|
35
|
-
width: -moz-max-content;
|
|
36
|
-
width: max-content;
|
|
37
|
-
max-width: 100%;
|
|
38
|
-
overflow-x: auto;
|
|
103
|
+
width: 100%;
|
|
39
104
|
margin: 1em 0;
|
|
40
105
|
}
|
|
41
|
-
._markdown-
|
|
42
|
-
._markdown-content_1ogdc_1 td {
|
|
106
|
+
._markdown-content_1mzpy_1 th {
|
|
43
107
|
border: 1px solid var(--a2-border-color-subdued);
|
|
108
|
+
background: var(--a2-background-color-strong);
|
|
44
109
|
padding: 6px 13px;
|
|
110
|
+
color: var(--a2-foreground-color-default);
|
|
111
|
+
font-size: var(--a2-font-size-300, 0.875rem);
|
|
112
|
+
font-style: normal;
|
|
113
|
+
font-weight: var(--a2-font-weight-semibold, 600);
|
|
114
|
+
line-height: 150%;
|
|
45
115
|
}
|
|
46
|
-
._markdown-
|
|
47
|
-
|
|
116
|
+
._markdown-content_1mzpy_1 td {
|
|
117
|
+
border: 1px solid var(--a2-border-color-subdued);
|
|
118
|
+
background: var(--a2-background-color-default);
|
|
119
|
+
padding: 6px 13px;
|
|
120
|
+
color: var(--a2-foreground-color-default);
|
|
121
|
+
font-size: var(--a2-font-size-300, 0.875rem);
|
|
122
|
+
font-style: normal;
|
|
123
|
+
font-weight: var(--a2-font-weight-normal, 400);
|
|
124
|
+
line-height: 150%;
|
|
48
125
|
}
|
package/dist/markdown-text.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { M as MarkdownText } from './markdown-text-
|
|
1
|
+
export { M as MarkdownText } from './markdown-text-BcCCdMfH.js';
|
|
2
2
|
//# sourceMappingURL=markdown-text.js.map
|
package/dist/messages.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as AssistantMessage, E as ErrorMessage, M as MarkdownMessage, S as SmallAction, a as SystemMessage, T as Thinking, U as UserMessage } from './user-message-
|
|
1
|
+
export { A as AssistantMessage, E as ErrorMessage, M as MarkdownMessage, S as SmallAction, a as SystemMessage, T as Thinking, U as UserMessage } from './user-message-D1KrKgfD.js';
|
|
2
2
|
//# sourceMappingURL=messages.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { Card, Flex, Text } from '@servicetitan/anvil2';
|
|
3
|
-
import { M as MarkdownText } from './markdown-text-
|
|
3
|
+
import { M as MarkdownText } from './markdown-text-BcCCdMfH.js';
|
|
4
4
|
|
|
5
5
|
const NotificationCard = ({
|
|
6
6
|
title,
|
|
@@ -71,4 +71,4 @@ const NotificationCard = ({
|
|
|
71
71
|
};
|
|
72
72
|
|
|
73
73
|
export { NotificationCard as N };
|
|
74
|
-
//# sourceMappingURL=notification-card-
|
|
74
|
+
//# sourceMappingURL=notification-card-DizmzaUo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-card-
|
|
1
|
+
{"version":3,"file":"notification-card-DizmzaUo.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: \"var(--a2-foreground-color-primary)\",\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\n size=\"small\"\n style={{ color: \"var(--a2-foreground-color-subdued)\" }}\n >\n {timestamp}\n {unread && (\n <span\n style={{\n display: \"inline-block\",\n width: 12,\n height: 12,\n borderRadius: \"50%\",\n background: \"var(--a2-background-color-danger)\",\n marginLeft: 8,\n }}\n aria-label=\"Unread notification\"\n />\n )}\n </Text>\n </Flex>\n </Flex>\n\n <Text\n size=\"small\"\n style={{ color: \"var(--a2-foreground-color-subdued)\" }}\n >\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,oCAAA;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;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,OAAA;AAAA,cACL,KAAA,EAAO,EAAE,KAAA,EAAO,oCAAA,EAAqC;AAAA,cAEpD,QAAA,EAAA;AAAA,gBAAA,SAAA;AAAA,gBACA,MAAA,oBACC,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,KAAA,EAAO;AAAA,sBACL,OAAA,EAAS,cAAA;AAAA,sBACT,KAAA,EAAO,EAAA;AAAA,sBACP,MAAA,EAAQ,EAAA;AAAA,sBACR,YAAA,EAAc,KAAA;AAAA,sBACd,UAAA,EAAY,mCAAA;AAAA,sBACZ,UAAA,EAAY;AAAA,qBACd;AAAA,oBACA,YAAA,EAAW;AAAA;AAAA;AACb;AAAA;AAAA,WAEJ,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAEA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,OAAA;AAAA,YACL,KAAA,EAAO,EAAE,KAAA,EAAO,oCAAA,EAAqC;AAAA,YAEpD,QAAA,EAAA,MAAA,mBACC,GAAA,CAAC,GAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,OAAA,EAAS,CAAA,EAC/B,CAAA,mBAEA,GAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,OAAA,EAAS;AAAA;AAAA;AAEjC,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { N as NotificationCard } from './notification-card-
|
|
1
|
+
export { N as NotificationCard } from './notification-card-DizmzaUo.js';
|
|
2
2
|
//# sourceMappingURL=notification-card.js.map
|
|
@@ -68,8 +68,8 @@ const PulseLoader = ({
|
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
style: {
|
|
71
|
-
fontSize: "var(--
|
|
72
|
-
lineHeight: "var(--line-height-
|
|
71
|
+
fontSize: "var(--a2-typography-paragraph-size-default, 16px)",
|
|
72
|
+
lineHeight: "var(--a2-typography-paragraph-line-height-default, 24px)",
|
|
73
73
|
backgroundImage: "linear-gradient(110deg, #606162 35%, #141414 50%, #606162 65%)",
|
|
74
74
|
backgroundSize: "200% auto",
|
|
75
75
|
WebkitBackgroundClip: "text",
|
|
@@ -86,4 +86,4 @@ const PulseLoader = ({
|
|
|
86
86
|
};
|
|
87
87
|
|
|
88
88
|
export { PulseLoader as P, SvgAtlasLogo as S };
|
|
89
|
-
//# sourceMappingURL=pulse-loader-
|
|
89
|
+
//# sourceMappingURL=pulse-loader-DcrQsZeD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pulse-loader-D0pbsphx.js","sources":["../../anvil2/dist/assets/icons/st/atlas_logo.svg","../src/components/loader/pulse-loader.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgAtlasLogo = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"none\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#a)\", d: \"m0 0 1 1\", opacity: 1e-3 }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#b)\", d: \"m0 0 1 1\", opacity: 1e-3 }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#c)\", d: \"M1.38 6v12l10.615 6 10.615-6V6L11.995 0z\" }), /* @__PURE__ */ React.createElement(\"g\", { style: {\n mixBlendMode: \"overlay\"\n} }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#d)\", d: \"m1.38 18 4.53-2.561L1.38 12z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#e)\", d: \"m22.61 6-4.53 2.561L22.61 12z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#f)\", d: \"M11.995 23.999v-5.122l-5.308 2.122z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#g)\", d: \"M11.995 0v5.122L17.302 3z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#h)\", d: \"m22.61 18-4.53-2.56-.777 5.56z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#i)\", d: \"m1.38 6 4.53 2.562L6.689 3z\" })), /* @__PURE__ */ React.createElement(\"g\", { style: {\n mixBlendMode: \"overlay\"\n} }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#j)\", d: \"m1.38 6 4.53 2.561L1.38 12z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#k)\", d: \"m22.61 18-4.53-2.561L22.61 12z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#l)\", d: \"m1.38 18 4.53-2.56.779 5.56z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#m)\", d: \"m22.61 6-4.53 2.562L17.303 3z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#n)\", d: \"M11.995 23.999v-5.122l5.307 2.122z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#o)\", d: \"M11.995 0v5.122L6.687 3z\" })), /* @__PURE__ */ React.createElement(\"path\", { fill: \"#fff\", d: \"M16.051 5.123H7.939l-4.057 6.878L7.94 18.88h8.112L20.107 12z\", opacity: 0.66 }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"#fff\", d: \"M5.91 8.563v6.877l6.085 3.44 6.085-3.44V8.563l-6.085-3.44z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#p)\", d: \"m11.996 6.682 1.44 3.908L17.429 12l-3.992 1.41-1.44 3.908-1.44-3.908L6.564 12l3.992-1.41z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#q)\", d: \"M6.564 12h5.432v5.318l-1.44-3.908z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#r)\", d: \"M17.428 12h-5.432V6.682l1.44 3.908z\" }), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"c\", x1: 1.38, x2: 22.61, y1: 12, y2: 12, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2F6CDB\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#55AAE7\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"d\", x1: 14.351, x2: -10.794, y1: -3.018, y2: 37.999, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"e\", x1: 24.767, x2: -0.379, y1: 3.367, y2: 44.384, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"f\", x1: 22.477, x2: -2.669, y1: 1.962, y2: 42.979, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"g\", x1: 16.641, x2: -8.505, y1: -1.615, y2: 39.403, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"h\", x1: 27.726, x2: 2.58, y1: 5.181, y2: 46.199, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"i\", x1: 11.392, x2: -13.753, y1: -4.832, y2: 36.186, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"j\", x1: 4.931, x2: 0.143, y1: 10.832, y2: 8.255, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"k\", x1: 19.742, x2: 23.816, y1: 13.484, y2: 15.73, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"l\", x1: 7.913, x2: 2.603, y1: 17.43, y2: 20.142, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"m\", x1: 16.917, x2: 21.444, y1: 6.192, y2: 3.682, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"n\", x1: 14.648, x2: 14.648, y1: 18.39, y2: 23.916, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"o\", x1: 9.341, x2: 9.341, y1: 5.902, y2: 0.316, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"p\", x1: 11.996, x2: 11.996, y1: 6.803, y2: 17.129, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"q\", x1: 8.857, x2: 11.198, y1: 15.247, y2: 11.847, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"r\", x1: 14.712, x2: 14.712, y1: 11.919, y2: 8.961, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"path\", { id: \"a\", fill: \"#ffffff00\", d: \"M0 0h.01v.01H0z\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"b\", fill: \"#ffffff00\", d: \"M0 0h.01v.01H0z\" })));\nexport default SvgAtlasLogo;\n","import { FC } from \"react\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { Flex, Icon, Svg } from \"@servicetitan/anvil2\";\nimport IconAtlasLogo from \"@servicetitan/anvil2/assets/icons/st/atlas_logo.svg\";\n\n/**\n * Props for the PulseLoader component\n * @property {string} [statusMessage] - Custom status message displayed next to the animated logo. Defaults to \"Thinking...\"\n * @property {Svg} [svgIcon] - Custom icon to display instead of the default Atlas logo\n * @property {string} [className] - Additional CSS class names\n */\nexport interface PulseLoaderProps {\n /** Custom status message displayed next to the animated logo. Defaults to \"Thinking...\" */\n statusMessage?: string;\n /** Custom icon to display instead of the default Atlas logo */\n svgIcon?: Svg;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * PulseLoader component for displaying an animated Atlas logo with status text.\n *\n * Features:\n * - Animated Atlas logo with scale pulse effect\n * - Gradient sweep animation on the status text\n * - Smooth fade transition when status message changes\n * - Accessible with role=\"status\" and aria-live=\"polite\"\n * - Chromatic-stable with data-chromatic=\"ignore\" on animated elements\n *\n * @example\n * <PulseLoader statusMessage=\"Thinking...\" />\n */\nexport const PulseLoader: FC<PulseLoaderProps> = ({\n statusMessage = \"Thinking...\",\n svgIcon,\n className,\n}) => {\n return (\n <Flex\n role=\"status\"\n aria-live=\"polite\"\n aria-label=\"Atlas AI processing\"\n className={className}\n gap={3}\n alignItems=\"flex-start\"\n style={{ minHeight: \"24px\" }}\n >\n <motion.div\n data-chromatic=\"ignore\"\n animate={{ scale: [1, 1.25, 1] }}\n transition={{ duration: 2, ease: \"easeInOut\", repeat: Infinity }}\n style={{\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"3px\",\n }}\n >\n <Icon\n svg={svgIcon ?? IconAtlasLogo}\n size=\"medium\"\n inherit\n aria-hidden\n />\n </motion.div>\n\n <AnimatePresence mode=\"wait\">\n <motion.span\n key={statusMessage}\n data-chromatic=\"ignore\"\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n backgroundPosition: [\"200% center\", \"-200% center\"],\n }}\n exit={{ opacity: 0 }}\n transition={{\n opacity: { duration: 0.2 },\n backgroundPosition: {\n duration: 3,\n ease: \"easeInOut\",\n repeat: Infinity,\n },\n }}\n style={{\n fontSize: \"var(--font-size-body-medium)\",\n lineHeight: \"var(--line-height-body-medium)\",\n backgroundImage:\n \"linear-gradient(110deg, #606162 35%, #141414 50%, #606162 65%)\",\n backgroundSize: \"200% auto\",\n WebkitBackgroundClip: \"text\",\n WebkitTextFillColor: \"transparent\",\n backgroundClip: \"text\",\n }}\n >\n {statusMessage}\n </motion.span>\n </AnimatePresence>\n </Flex>\n );\n};\n"],"names":["IconAtlasLogo"],"mappings":"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AM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAA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"}
|
|
1
|
+
{"version":3,"file":"pulse-loader-DcrQsZeD.js","sources":["../../anvil2/dist/assets/icons/st/atlas_logo.svg","../src/components/loader/pulse-loader.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgAtlasLogo = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, fill: \"none\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#a)\", d: \"m0 0 1 1\", opacity: 1e-3 }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#b)\", d: \"m0 0 1 1\", opacity: 1e-3 }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#c)\", d: \"M1.38 6v12l10.615 6 10.615-6V6L11.995 0z\" }), /* @__PURE__ */ React.createElement(\"g\", { style: {\n mixBlendMode: \"overlay\"\n} }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#d)\", d: \"m1.38 18 4.53-2.561L1.38 12z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#e)\", d: \"m22.61 6-4.53 2.561L22.61 12z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#f)\", d: \"M11.995 23.999v-5.122l-5.308 2.122z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#g)\", d: \"M11.995 0v5.122L17.302 3z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#h)\", d: \"m22.61 18-4.53-2.56-.777 5.56z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#i)\", d: \"m1.38 6 4.53 2.562L6.689 3z\" })), /* @__PURE__ */ React.createElement(\"g\", { style: {\n mixBlendMode: \"overlay\"\n} }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#j)\", d: \"m1.38 6 4.53 2.561L1.38 12z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#k)\", d: \"m22.61 18-4.53-2.561L22.61 12z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#l)\", d: \"m1.38 18 4.53-2.56.779 5.56z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#m)\", d: \"m22.61 6-4.53 2.562L17.303 3z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#n)\", d: \"M11.995 23.999v-5.122l5.307 2.122z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#o)\", d: \"M11.995 0v5.122L6.687 3z\" })), /* @__PURE__ */ React.createElement(\"path\", { fill: \"#fff\", d: \"M16.051 5.123H7.939l-4.057 6.878L7.94 18.88h8.112L20.107 12z\", opacity: 0.66 }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"#fff\", d: \"M5.91 8.563v6.877l6.085 3.44 6.085-3.44V8.563l-6.085-3.44z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#p)\", d: \"m11.996 6.682 1.44 3.908L17.429 12l-3.992 1.41-1.44 3.908-1.44-3.908L6.564 12l3.992-1.41z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#q)\", d: \"M6.564 12h5.432v5.318l-1.44-3.908z\" }), /* @__PURE__ */ React.createElement(\"path\", { fill: \"url(#r)\", d: \"M17.428 12h-5.432V6.682l1.44 3.908z\" }), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"c\", x1: 1.38, x2: 22.61, y1: 12, y2: 12, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2F6CDB\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#55AAE7\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"d\", x1: 14.351, x2: -10.794, y1: -3.018, y2: 37.999, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"e\", x1: 24.767, x2: -0.379, y1: 3.367, y2: 44.384, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"f\", x1: 22.477, x2: -2.669, y1: 1.962, y2: 42.979, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"g\", x1: 16.641, x2: -8.505, y1: -1.615, y2: 39.403, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"h\", x1: 27.726, x2: 2.58, y1: 5.181, y2: 46.199, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"i\", x1: 11.392, x2: -13.753, y1: -4.832, y2: 36.186, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#4357B5\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2E6BD3\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"j\", x1: 4.931, x2: 0.143, y1: 10.832, y2: 8.255, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"k\", x1: 19.742, x2: 23.816, y1: 13.484, y2: 15.73, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"l\", x1: 7.913, x2: 2.603, y1: 17.43, y2: 20.142, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"m\", x1: 16.917, x2: 21.444, y1: 6.192, y2: 3.682, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"n\", x1: 14.648, x2: 14.648, y1: 18.39, y2: 23.916, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"o\", x1: 9.341, x2: 9.341, y1: 5.902, y2: 0.316, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"p\", x1: 11.996, x2: 11.996, y1: 6.803, y2: 17.129, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"q\", x1: 8.857, x2: 11.198, y1: 15.247, y2: 11.847, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"r\", x1: 14.712, x2: 14.712, y1: 11.919, y2: 8.961, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#2E6BD3\" }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#2F044D\" })), /* @__PURE__ */ React.createElement(\"path\", { id: \"a\", fill: \"#ffffff00\", d: \"M0 0h.01v.01H0z\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"b\", fill: \"#ffffff00\", d: \"M0 0h.01v.01H0z\" })));\nexport default SvgAtlasLogo;\n","import { FC } from \"react\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { Flex, Icon, Svg } from \"@servicetitan/anvil2\";\nimport IconAtlasLogo from \"@servicetitan/anvil2/assets/icons/st/atlas_logo.svg\";\n\n/**\n * Props for the PulseLoader component\n * @property {string} [statusMessage] - Custom status message displayed next to the animated logo. Defaults to \"Thinking...\"\n * @property {Svg} [svgIcon] - Custom icon to display instead of the default Atlas logo\n * @property {string} [className] - Additional CSS class names\n */\nexport interface PulseLoaderProps {\n /** Custom status message displayed next to the animated logo. Defaults to \"Thinking...\" */\n statusMessage?: string;\n /** Custom icon to display instead of the default Atlas logo */\n svgIcon?: Svg;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * PulseLoader component for displaying an animated Atlas logo with status text.\n *\n * Features:\n * - Animated Atlas logo with scale pulse effect\n * - Gradient sweep animation on the status text\n * - Smooth fade transition when status message changes\n * - Accessible with role=\"status\" and aria-live=\"polite\"\n * - Chromatic-stable with data-chromatic=\"ignore\" on animated elements\n *\n * @example\n * <PulseLoader statusMessage=\"Thinking...\" />\n */\nexport const PulseLoader: FC<PulseLoaderProps> = ({\n statusMessage = \"Thinking...\",\n svgIcon,\n className,\n}) => {\n return (\n <Flex\n role=\"status\"\n aria-live=\"polite\"\n aria-label=\"Atlas AI processing\"\n className={className}\n gap={3}\n alignItems=\"flex-start\"\n style={{ minHeight: \"24px\" }}\n >\n <motion.div\n data-chromatic=\"ignore\"\n animate={{ scale: [1, 1.25, 1] }}\n transition={{ duration: 2, ease: \"easeInOut\", repeat: Infinity }}\n style={{\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"3px\",\n }}\n >\n <Icon\n svg={svgIcon ?? IconAtlasLogo}\n size=\"medium\"\n inherit\n aria-hidden\n />\n </motion.div>\n\n <AnimatePresence mode=\"wait\">\n <motion.span\n key={statusMessage}\n data-chromatic=\"ignore\"\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n backgroundPosition: [\"200% center\", \"-200% center\"],\n }}\n exit={{ opacity: 0 }}\n transition={{\n opacity: { duration: 0.2 },\n backgroundPosition: {\n duration: 3,\n ease: \"easeInOut\",\n repeat: Infinity,\n },\n }}\n style={{\n fontSize: \"var(--a2-typography-paragraph-size-default, 16px)\",\n lineHeight:\n \"var(--a2-typography-paragraph-line-height-default, 24px)\",\n backgroundImage:\n \"linear-gradient(110deg, #606162 35%, #141414 50%, #606162 65%)\",\n backgroundSize: \"200% auto\",\n WebkitBackgroundClip: \"text\",\n WebkitTextFillColor: \"transparent\",\n backgroundClip: \"text\",\n }}\n >\n {statusMessage}\n </motion.span>\n </AnimatePresence>\n </Flex>\n );\n};\n"],"names":["IconAtlasLogo"],"mappings":"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AM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,GAAG,EAA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"}
|
package/dist/recommendations.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { C as ConfirmationCard, M as MultipleRecommendationCard, S as SingleRecommendationCard } from './single-recommendation-card-
|
|
1
|
+
export { C as ConfirmationCard, M as MultipleRecommendationCard, S as SingleRecommendationCard } from './single-recommendation-card-BPbfhvu_.js';
|
|
2
2
|
//# sourceMappingURL=recommendations.js.map
|
package/dist/{single-recommendation-card-D_FiwLm1.js → single-recommendation-card-BPbfhvu_.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useMemo, useState } from 'react';
|
|
3
3
|
import { Flex, Text, Card, Button, Link, Checkbox, Overflow, Radio } from '@servicetitan/anvil2';
|
|
4
|
-
import { A as AtlasHeader } from './atlas-header-
|
|
4
|
+
import { A as AtlasHeader } from './atlas-header-DtYEZIyx.js';
|
|
5
5
|
|
|
6
6
|
const ConfirmationCard = ({
|
|
7
7
|
recommendationId,
|
|
@@ -198,4 +198,4 @@ const SingleRecommendationCard = ({
|
|
|
198
198
|
};
|
|
199
199
|
|
|
200
200
|
export { ConfirmationCard as C, MultipleRecommendationCard as M, SingleRecommendationCard as S };
|
|
201
|
-
//# sourceMappingURL=single-recommendation-card-
|
|
201
|
+
//# sourceMappingURL=single-recommendation-card-BPbfhvu_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single-recommendation-card-D_FiwLm1.js","sources":["../src/components/recommendations/confirmation-card/confirmation-card.tsx","../src/components/recommendations/multiple-recommendation-card/multiple-recommendation-card.tsx","../src/components/recommendations/single-recommendation-card/single-recommendation-card.tsx"],"sourcesContent":["import { FC, useMemo } from \"react\";\nimport {\n Button,\n ButtonAppearance,\n Card,\n Flex,\n Link,\n Text,\n} from \"@servicetitan/anvil2\";\n\nimport {\n BaseRecommendationProps,\n ConfirmationResponse,\n RecommendationAction,\n} from \"../shared-interfaces\";\nimport { AtlasHeader } from \"../../atlas-header\";\n\nexport interface ConfirmationRecommendationProps extends BaseRecommendationProps {\n recommendationId?: string;\n title?: string;\n message: string;\n description?: string;\n onSubmit: (confirmationResponse: ConfirmationResponse) => void;\n className?: string;\n}\n\nexport const ConfirmationCard: FC<ConfirmationRecommendationProps> = ({\n recommendationId,\n title,\n actions,\n message,\n onSubmit,\n description,\n className,\n submitted,\n}) => {\n const { buttonActions, linkActions } = useMemo(() => {\n const buttons: RecommendationAction[] = [];\n const links: RecommendationAction[] = [];\n\n actions.forEach((action) => {\n if (action.type?.toLowerCase() === \"link\") {\n links.push(action);\n } else {\n buttons.push(action);\n }\n });\n\n return { buttonActions: buttons, linkActions: links };\n }, [actions]);\n\n const handleSubmit = (action: RecommendationAction) => {\n onSubmit({\n sourceMessageId: recommendationId,\n optionIds: [],\n actionId: action.id,\n parameters: {\n url: action.url,\n },\n });\n };\n\n return (\n <Flex direction=\"column\" className={className}>\n <AtlasHeader />\n <Text size=\"medium\">{message}</Text>\n <Card>\n <Flex direction=\"column\" gap={3}>\n {title && (\n <Text>\n <b>{title}</b>\n </Text>\n )}\n {description && <Text size=\"small\">{description}</Text>}\n <Flex alignItems=\"flex-start\" gap={1}>\n {buttonActions.map((action) => (\n <Button\n size=\"medium\"\n key={action.id}\n appearance={\n (action.type?.toLowerCase() as ButtonAppearance) ?? \"primary\"\n }\n onClick={() => handleSubmit(action)}\n disabled={submitted}\n >\n {action.name}\n </Button>\n ))}\n {linkActions.map((action) => (\n <Link\n ghost\n appearance=\"primary\"\n key={action.id}\n onClick={() => handleSubmit(action)}\n >\n {action.name}\n </Link>\n ))}\n </Flex>\n </Flex>\n </Card>\n </Flex>\n );\n};\n","import { FC, useState } from \"react\";\nimport {\n Button,\n ButtonAppearance,\n Card,\n Checkbox,\n Flex,\n Overflow,\n Text,\n} from \"@servicetitan/anvil2\";\n\nimport { BaseRecommendationProps, Options } from \"../shared-interfaces\";\nimport { AtlasHeader } from \"../../atlas-header\";\ninterface MultipleRecommendationProps extends BaseRecommendationProps {\n options: Options[];\n}\n\nexport const MultipleRecommendationCard: FC<MultipleRecommendationProps> = ({\n recommendationId,\n message,\n options,\n actions,\n onSubmit,\n submitted,\n selected,\n}) => {\n const [localSelectedValues, setLocalSelectedValues] = useState<string[]>([]);\n\n const handleCheckboxChange = (value: string, checked: boolean) => {\n if (checked) {\n setLocalSelectedValues((prev) => [...prev, value]);\n } else {\n setLocalSelectedValues((prev) => prev.filter((v) => v !== value));\n }\n };\n\n const handleSubmit = (id: string) => {\n onSubmit({\n sourceMessageId: recommendationId,\n optionIds: localSelectedValues,\n actionId: id,\n });\n };\n\n return (\n <Flex direction=\"column\">\n <AtlasHeader />\n <Text size=\"medium\">{message}</Text>\n <Card>\n <Flex direction=\"column\" gap={2}>\n {options?.map((option) => (\n <Checkbox\n disabled={submitted}\n name=\"action\"\n key={option.id}\n value={option.id}\n checked={\n !submitted\n ? localSelectedValues.includes(option.id ?? \"\")\n : selected?.includes(option.id)\n }\n onChange={(e) =>\n handleCheckboxChange(\n option.id ?? \"\",\n e?.target?.checked ?? false,\n )\n }\n label={option.label}\n description={\n option.description ? (\n <Overflow.Text\n rows={2}\n expandable\n expandText=\"Show more...\"\n collapseText=\"Show less...\"\n >\n {option.description && (\n <Text subdued size=\"small\">\n {option.description}\n </Text>\n )}\n </Overflow.Text>\n ) : undefined\n }\n />\n ))}\n <Flex justifyContent=\"flex-start\" gap={2}>\n {actions?.map((action) => (\n <Button\n size=\"medium\"\n key={action.id}\n appearance={\n (action.type?.toLowerCase() as ButtonAppearance) ?? \"primary\"\n }\n onClick={() => handleSubmit(action.id!)}\n disabled={submitted}\n >\n {action.name}\n </Button>\n ))}\n </Flex>\n </Flex>\n </Card>\n </Flex>\n );\n};\n","import { FC, useState } from \"react\";\nimport {\n Button,\n ButtonAppearance,\n Card,\n Flex,\n Overflow,\n Radio,\n Text,\n} from \"@servicetitan/anvil2\";\n\nimport { BaseRecommendationProps, Options } from \"../shared-interfaces\";\nimport { AtlasHeader } from \"../../atlas-header\";\ninterface SingleRecommendationProps extends BaseRecommendationProps {\n options: Options[];\n}\n\nexport const SingleRecommendationCard: FC<SingleRecommendationProps> = ({\n recommendationId,\n message,\n options,\n actions,\n onSubmit,\n submitted = false,\n selected,\n}) => {\n const [localSelectedValue, setLocalSelectedValue] = useState<string>(\"\");\n\n const handleRadioChange = (value: string) => {\n setLocalSelectedValue(value);\n };\n\n const handleSubmit = (id: string) => {\n onSubmit({\n sourceMessageId: recommendationId,\n optionIds: localSelectedValue ? [localSelectedValue] : [],\n actionId: id,\n });\n };\n\n return (\n <Flex direction=\"column\">\n <AtlasHeader />\n <Text size=\"medium\">{message}</Text>\n <Card>\n <Flex direction=\"column\" gap={2}>\n <Radio.Group legend=\"\">\n {options?.map((option) => (\n <Radio\n disabled={submitted}\n key={option.id}\n name=\"action\"\n value={option.id}\n checked={\n !submitted\n ? localSelectedValue === option.id\n : selected?.includes(option.id ?? \"\")\n }\n onChange={() => handleRadioChange(option.id!)}\n label={option.label}\n description={\n option.description ? (\n <Overflow.Text\n rows={2}\n expandable\n expandText=\"Show more...\"\n collapseText=\"Show less...\"\n >\n {option.description && (\n <Text subdued size=\"small\">\n {option.description}\n </Text>\n )}\n </Overflow.Text>\n ) : undefined\n }\n />\n ))}\n </Radio.Group>\n <Flex justifyContent=\"flex-start\" gap={2}>\n {actions?.map((action) => (\n <Button\n size=\"medium\"\n key={action.id}\n appearance={\n (action.type?.toLowerCase() as ButtonAppearance) ?? \"primary\"\n }\n onClick={() => handleSubmit(action.id!)}\n disabled={submitted || !localSelectedValue}\n >\n {action.name}\n </Button>\n ))}\n </Flex>\n </Flex>\n </Card>\n </Flex>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"single-recommendation-card-BPbfhvu_.js","sources":["../src/components/recommendations/confirmation-card/confirmation-card.tsx","../src/components/recommendations/multiple-recommendation-card/multiple-recommendation-card.tsx","../src/components/recommendations/single-recommendation-card/single-recommendation-card.tsx"],"sourcesContent":["import { FC, useMemo } from \"react\";\nimport {\n Button,\n ButtonAppearance,\n Card,\n Flex,\n Link,\n Text,\n} from \"@servicetitan/anvil2\";\n\nimport {\n BaseRecommendationProps,\n ConfirmationResponse,\n RecommendationAction,\n} from \"../shared-interfaces\";\nimport { AtlasHeader } from \"../../atlas-header\";\n\nexport interface ConfirmationRecommendationProps extends BaseRecommendationProps {\n recommendationId?: string;\n title?: string;\n message: string;\n description?: string;\n onSubmit: (confirmationResponse: ConfirmationResponse) => void;\n className?: string;\n}\n\nexport const ConfirmationCard: FC<ConfirmationRecommendationProps> = ({\n recommendationId,\n title,\n actions,\n message,\n onSubmit,\n description,\n className,\n submitted,\n}) => {\n const { buttonActions, linkActions } = useMemo(() => {\n const buttons: RecommendationAction[] = [];\n const links: RecommendationAction[] = [];\n\n actions.forEach((action) => {\n if (action.type?.toLowerCase() === \"link\") {\n links.push(action);\n } else {\n buttons.push(action);\n }\n });\n\n return { buttonActions: buttons, linkActions: links };\n }, [actions]);\n\n const handleSubmit = (action: RecommendationAction) => {\n onSubmit({\n sourceMessageId: recommendationId,\n optionIds: [],\n actionId: action.id,\n parameters: {\n url: action.url,\n },\n });\n };\n\n return (\n <Flex direction=\"column\" className={className}>\n <AtlasHeader />\n <Text size=\"medium\">{message}</Text>\n <Card>\n <Flex direction=\"column\" gap={3}>\n {title && (\n <Text>\n <b>{title}</b>\n </Text>\n )}\n {description && <Text size=\"small\">{description}</Text>}\n <Flex alignItems=\"flex-start\" gap={1}>\n {buttonActions.map((action) => (\n <Button\n size=\"medium\"\n key={action.id}\n appearance={\n (action.type?.toLowerCase() as ButtonAppearance) ?? \"primary\"\n }\n onClick={() => handleSubmit(action)}\n disabled={submitted}\n >\n {action.name}\n </Button>\n ))}\n {linkActions.map((action) => (\n <Link\n ghost\n appearance=\"primary\"\n key={action.id}\n onClick={() => handleSubmit(action)}\n >\n {action.name}\n </Link>\n ))}\n </Flex>\n </Flex>\n </Card>\n </Flex>\n );\n};\n","import { FC, useState } from \"react\";\nimport {\n Button,\n ButtonAppearance,\n Card,\n Checkbox,\n Flex,\n Overflow,\n Text,\n} from \"@servicetitan/anvil2\";\n\nimport { BaseRecommendationProps, Options } from \"../shared-interfaces\";\nimport { AtlasHeader } from \"../../atlas-header\";\ninterface MultipleRecommendationProps extends BaseRecommendationProps {\n options: Options[];\n}\n\nexport const MultipleRecommendationCard: FC<MultipleRecommendationProps> = ({\n recommendationId,\n message,\n options,\n actions,\n onSubmit,\n submitted,\n selected,\n}) => {\n const [localSelectedValues, setLocalSelectedValues] = useState<string[]>([]);\n\n const handleCheckboxChange = (value: string, checked: boolean) => {\n if (checked) {\n setLocalSelectedValues((prev) => [...prev, value]);\n } else {\n setLocalSelectedValues((prev) => prev.filter((v) => v !== value));\n }\n };\n\n const handleSubmit = (id: string) => {\n onSubmit({\n sourceMessageId: recommendationId,\n optionIds: localSelectedValues,\n actionId: id,\n });\n };\n\n return (\n <Flex direction=\"column\">\n <AtlasHeader />\n <Text size=\"medium\">{message}</Text>\n <Card>\n <Flex direction=\"column\" gap={2}>\n {options?.map((option) => (\n <Checkbox\n disabled={submitted}\n name=\"action\"\n key={option.id}\n value={option.id}\n checked={\n !submitted\n ? localSelectedValues.includes(option.id ?? \"\")\n : selected?.includes(option.id)\n }\n onChange={(e) =>\n handleCheckboxChange(\n option.id ?? \"\",\n e?.target?.checked ?? false,\n )\n }\n label={option.label}\n description={\n option.description ? (\n <Overflow.Text\n rows={2}\n expandable\n expandText=\"Show more...\"\n collapseText=\"Show less...\"\n >\n {option.description && (\n <Text subdued size=\"small\">\n {option.description}\n </Text>\n )}\n </Overflow.Text>\n ) : undefined\n }\n />\n ))}\n <Flex justifyContent=\"flex-start\" gap={2}>\n {actions?.map((action) => (\n <Button\n size=\"medium\"\n key={action.id}\n appearance={\n (action.type?.toLowerCase() as ButtonAppearance) ?? \"primary\"\n }\n onClick={() => handleSubmit(action.id!)}\n disabled={submitted}\n >\n {action.name}\n </Button>\n ))}\n </Flex>\n </Flex>\n </Card>\n </Flex>\n );\n};\n","import { FC, useState } from \"react\";\nimport {\n Button,\n ButtonAppearance,\n Card,\n Flex,\n Overflow,\n Radio,\n Text,\n} from \"@servicetitan/anvil2\";\n\nimport { BaseRecommendationProps, Options } from \"../shared-interfaces\";\nimport { AtlasHeader } from \"../../atlas-header\";\ninterface SingleRecommendationProps extends BaseRecommendationProps {\n options: Options[];\n}\n\nexport const SingleRecommendationCard: FC<SingleRecommendationProps> = ({\n recommendationId,\n message,\n options,\n actions,\n onSubmit,\n submitted = false,\n selected,\n}) => {\n const [localSelectedValue, setLocalSelectedValue] = useState<string>(\"\");\n\n const handleRadioChange = (value: string) => {\n setLocalSelectedValue(value);\n };\n\n const handleSubmit = (id: string) => {\n onSubmit({\n sourceMessageId: recommendationId,\n optionIds: localSelectedValue ? [localSelectedValue] : [],\n actionId: id,\n });\n };\n\n return (\n <Flex direction=\"column\">\n <AtlasHeader />\n <Text size=\"medium\">{message}</Text>\n <Card>\n <Flex direction=\"column\" gap={2}>\n <Radio.Group legend=\"\">\n {options?.map((option) => (\n <Radio\n disabled={submitted}\n key={option.id}\n name=\"action\"\n value={option.id}\n checked={\n !submitted\n ? localSelectedValue === option.id\n : selected?.includes(option.id ?? \"\")\n }\n onChange={() => handleRadioChange(option.id!)}\n label={option.label}\n description={\n option.description ? (\n <Overflow.Text\n rows={2}\n expandable\n expandText=\"Show more...\"\n collapseText=\"Show less...\"\n >\n {option.description && (\n <Text subdued size=\"small\">\n {option.description}\n </Text>\n )}\n </Overflow.Text>\n ) : undefined\n }\n />\n ))}\n </Radio.Group>\n <Flex justifyContent=\"flex-start\" gap={2}>\n {actions?.map((action) => (\n <Button\n size=\"medium\"\n key={action.id}\n appearance={\n (action.type?.toLowerCase() as ButtonAppearance) ?? \"primary\"\n }\n onClick={() => handleSubmit(action.id!)}\n disabled={submitted || !localSelectedValue}\n >\n {action.name}\n </Button>\n ))}\n </Flex>\n </Flex>\n </Card>\n </Flex>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Props for the MarkdownText component
|
|
4
|
+
* @property {string} text - Markdown string to render as HTML
|
|
5
|
+
*/
|
|
2
6
|
export interface MarkdownTextProps {
|
|
3
7
|
text: string;
|
|
4
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* MarkdownText component for rendering markdown content with consistent Atlas typography styles.
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Renders GitHub Flavored Markdown (GFM) via react-markdown and remark-gfm
|
|
14
|
+
* - Applies consistent heading hierarchy (h1–h3) using Anvil2 typography tokens
|
|
15
|
+
* - Styles paragraphs, lists, inline elements (bold, italic, links), and code blocks
|
|
16
|
+
* - Renders tables with themed borders and background colors
|
|
17
|
+
* - Uses Anvil2 design tokens for all colors, spacing, and typography
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <MarkdownText text="## Hello\n\nThis is **markdown** content." />
|
|
21
|
+
*/
|
|
5
22
|
export declare const MarkdownText: FC<MarkdownTextProps>;
|
|
@@ -2,6 +2,17 @@ import { FC } from 'react';
|
|
|
2
2
|
import { Svg } from '@servicetitan/anvil2';
|
|
3
3
|
import { MessageProps } from './message-interface';
|
|
4
4
|
import { ToolboxProps } from '../toolbox';
|
|
5
|
+
/**
|
|
6
|
+
* Props for the MarkdownMessage and Thinking components
|
|
7
|
+
* @property {string} [error] - Error message to display in place of the markdown content
|
|
8
|
+
* @property {Svg} [svgIcon] - SVG icon displayed in the Atlas header
|
|
9
|
+
* @property {string} [assistant] - Name of the assistant displayed in the Atlas header
|
|
10
|
+
* @property {() => void} [onRetry] - Callback invoked when the user retries after an error
|
|
11
|
+
* @property {Omit<ToolboxProps, "text">} [toolboxProps] - Props passed to the Toolbox component
|
|
12
|
+
* @property {boolean} [loading] - When true, hides message content and shows the loading state in the header
|
|
13
|
+
* @property {string} [statusMessage] - Status message shown in the Atlas header during loading
|
|
14
|
+
* @extends MessageProps
|
|
15
|
+
*/
|
|
5
16
|
export interface MarkdownMessageProps extends MessageProps {
|
|
6
17
|
error?: string;
|
|
7
18
|
svgIcon?: Svg;
|
|
@@ -11,5 +22,32 @@ export interface MarkdownMessageProps extends MessageProps {
|
|
|
11
22
|
loading?: boolean;
|
|
12
23
|
statusMessage?: string;
|
|
13
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* MarkdownMessage component for rendering an assistant message with markdown content.
|
|
27
|
+
*
|
|
28
|
+
* Features:
|
|
29
|
+
* - Displays an Atlas header with optional assistant name, icon, and loading state
|
|
30
|
+
* - Renders markdown content via MarkdownText when not loading and no error is present
|
|
31
|
+
* - Shows an error message with optional retry action on failure
|
|
32
|
+
* - Includes a Toolbox for message actions (copy, etc.)
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* <MarkdownMessage
|
|
36
|
+
* message="## Hello\n\nThis is the assistant's response."
|
|
37
|
+
* assistant="Atlas"
|
|
38
|
+
* toolboxProps={{ onCopy: () => console.log("copied") }}
|
|
39
|
+
* />
|
|
40
|
+
*/
|
|
14
41
|
export declare const MarkdownMessage: FC<MarkdownMessageProps>;
|
|
42
|
+
/**
|
|
43
|
+
* Thinking component for displaying an assistant message in a persistent loading state.
|
|
44
|
+
*
|
|
45
|
+
* Features:
|
|
46
|
+
* - Renders an Atlas header locked in loading mode
|
|
47
|
+
* - Displays an optional status message in the header
|
|
48
|
+
* - Shows an error message with optional retry action on failure
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* <Thinking assistant="Atlas" statusMessage="Analyzing your request…" />
|
|
52
|
+
*/
|
|
15
53
|
export declare const Thinking: FC<MarkdownMessageProps>;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Flex, Text, Button, Icon, Card, Radio } from '@servicetitan/anvil2';
|
|
3
|
-
import { A as AtlasHeader } from './atlas-header-
|
|
3
|
+
import { A as AtlasHeader } from './atlas-header-DtYEZIyx.js';
|
|
4
4
|
import { c as classNames } from './index-DDXI3m_u.js';
|
|
5
5
|
import { S as SvgRefresh, T as Toolbox } from './toolbox-2IgmOZuu.js';
|
|
6
|
-
import { M as
|
|
6
|
+
import { M as MarkdownText } from './markdown-text-BcCCdMfH.js';
|
|
7
7
|
|
|
8
8
|
import './user-message.css';const styles = {
|
|
9
|
-
"error-color": "_error-
|
|
10
|
-
"markdown-content": "_markdown-content_1m83v_33"};
|
|
9
|
+
"error-color": "_error-color_15dut_6"};
|
|
11
10
|
|
|
12
11
|
const ErrorMessage = ({
|
|
13
12
|
error,
|
|
@@ -100,7 +99,7 @@ const MarkdownMessage = ({
|
|
|
100
99
|
}
|
|
101
100
|
),
|
|
102
101
|
!loading && /* @__PURE__ */ jsxs(Flex, { direction: "column", children: [
|
|
103
|
-
message && !error && /* @__PURE__ */ jsx(
|
|
102
|
+
message && !error && /* @__PURE__ */ jsx(MarkdownText, { text: message }),
|
|
104
103
|
/* @__PURE__ */ jsx(Toolbox, { text: message, ...toolboxProps }),
|
|
105
104
|
error && /* @__PURE__ */ jsx(ErrorMessage, { error, message, onRetry })
|
|
106
105
|
] })
|
|
@@ -262,4 +261,4 @@ const UserMessage = ({
|
|
|
262
261
|
};
|
|
263
262
|
|
|
264
263
|
export { AssistantMessage as A, ErrorMessage as E, MarkdownMessage as M, SmallAction as S, Thinking as T, UserMessage as U, SystemMessage as a };
|
|
265
|
-
//# sourceMappingURL=user-message-
|
|
264
|
+
//# sourceMappingURL=user-message-D1KrKgfD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-message-D1KrKgfD.js","sources":["../src/components/messages/error-message.tsx","../src/components/messages/assistant-message.tsx","../src/components/messages/markdown-message.tsx","../src/components/messages/small-action.tsx","../src/components/messages/system-message.tsx","../src/components/messages/user-message.tsx"],"sourcesContent":["import { FC } from \"react\";\nimport classNames from \"classnames\";\nimport { Button, Flex, Icon, Text } from \"@servicetitan/anvil2\";\nimport IconRefresh from \"@servicetitan/anvil2/assets/icons/material/round/refresh.svg\";\n\nimport styles from \"./message.module.scss\";\nexport interface ErrorMessageProps {\n error: string | boolean;\n message?: string;\n onRetry?: () => void;\n className?: string;\n}\n\nexport const ErrorMessage: FC<ErrorMessageProps> = ({\n error,\n message,\n onRetry,\n className,\n}) => {\n return (\n <Flex\n className={className}\n style={{ marginInlineStart: \"var(--a2-size-2)\" }}\n justifyContent=\"space-between\"\n gap={2}\n >\n <Text\n size=\"medium\"\n className={classNames({\n [styles[\"error-color\"]]: error,\n })}\n >\n <i>{error || message}</i>\n </Text>\n {onRetry && (\n <Button\n size=\"small\"\n appearance=\"ghost\"\n onClick={onRetry}\n flexShrink={0}\n >\n Retry\n <Icon svg={IconRefresh} size=\"medium\" />\n </Button>\n )}\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Svg, Text } from \"@servicetitan/anvil2\";\n\nimport { AtlasHeader } from \"../atlas-header\";\nimport { ErrorMessage } from \"./error-message\";\nimport { MessageProps } from \"./message-interface\";\n\nexport interface AssistantMessageProps extends MessageProps {\n error?: string | boolean;\n svgIcon?: Svg;\n assistant?: string;\n onRetry?: () => void;\n statusMessage?: string;\n loading?: boolean;\n}\n\nexport const AssistantMessage: FC<AssistantMessageProps> = ({\n error,\n onRetry,\n message,\n className,\n assistant,\n svgIcon,\n statusMessage,\n loading = false,\n}) => {\n return (\n <Flex direction=\"column\" className={className}>\n <AtlasHeader\n svgIcon={svgIcon}\n assistant={assistant}\n loading={loading}\n statusMessage={statusMessage}\n />\n {!loading && (\n <Flex direction=\"column\">\n {message && !error && <Text size=\"medium\">{message}</Text>}\n {error && (\n <ErrorMessage error={error} message={message} onRetry={onRetry} />\n )}\n </Flex>\n )}\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Flex, Svg } from \"@servicetitan/anvil2\";\n\nimport { AtlasHeader } from \"../atlas-header\";\nimport { ErrorMessage } from \"./error-message\";\nimport { MessageProps } from \"./message-interface\";\nimport { Toolbox, ToolboxProps } from \"../toolbox\";\nimport { MarkdownText } from \"../markdown-text\";\n\n/**\n * Props for the MarkdownMessage and Thinking components\n * @property {string} [error] - Error message to display in place of the markdown content\n * @property {Svg} [svgIcon] - SVG icon displayed in the Atlas header\n * @property {string} [assistant] - Name of the assistant displayed in the Atlas header\n * @property {() => void} [onRetry] - Callback invoked when the user retries after an error\n * @property {Omit<ToolboxProps, \"text\">} [toolboxProps] - Props passed to the Toolbox component\n * @property {boolean} [loading] - When true, hides message content and shows the loading state in the header\n * @property {string} [statusMessage] - Status message shown in the Atlas header during loading\n * @extends MessageProps\n */\nexport interface MarkdownMessageProps extends MessageProps {\n error?: string;\n svgIcon?: Svg;\n assistant?: string;\n onRetry?: () => void;\n toolboxProps?: Omit<ToolboxProps, \"text\">;\n loading?: boolean;\n statusMessage?: string;\n}\n\n/**\n * MarkdownMessage component for rendering an assistant message with markdown content.\n *\n * Features:\n * - Displays an Atlas header with optional assistant name, icon, and loading state\n * - Renders markdown content via MarkdownText when not loading and no error is present\n * - Shows an error message with optional retry action on failure\n * - Includes a Toolbox for message actions (copy, etc.)\n *\n * @example\n * <MarkdownMessage\n * message=\"## Hello\\n\\nThis is the assistant's response.\"\n * assistant=\"Atlas\"\n * toolboxProps={{ onCopy: () => console.log(\"copied\") }}\n * />\n */\nexport const MarkdownMessage: FC<MarkdownMessageProps> = ({\n error,\n message,\n className,\n assistant,\n svgIcon,\n onRetry,\n toolboxProps,\n loading = false,\n statusMessage,\n}) => {\n return (\n <Flex gap={2} direction=\"column\" className={className}>\n <AtlasHeader\n svgIcon={svgIcon}\n assistant={assistant}\n loading={loading}\n statusMessage={statusMessage}\n />\n {!loading && (\n <Flex direction=\"column\">\n {message && !error && <MarkdownText text={message} />}\n <Toolbox text={message} {...toolboxProps} />\n {error && (\n <ErrorMessage error={error} message={message} onRetry={onRetry} />\n )}\n </Flex>\n )}\n </Flex>\n );\n};\n\n/**\n * Thinking component for displaying an assistant message in a persistent loading state.\n *\n * Features:\n * - Renders an Atlas header locked in loading mode\n * - Displays an optional status message in the header\n * - Shows an error message with optional retry action on failure\n *\n * @example\n * <Thinking assistant=\"Atlas\" statusMessage=\"Analyzing your request…\" />\n */\nexport const Thinking: FC<MarkdownMessageProps> = ({\n error,\n message,\n className,\n assistant,\n svgIcon,\n onRetry,\n toolboxProps: _toolboxProps,\n statusMessage,\n}) => {\n return (\n <Flex direction=\"column\" className={className}>\n <AtlasHeader\n svgIcon={svgIcon}\n assistant={assistant}\n loading={true}\n statusMessage={statusMessage}\n />\n {error && (\n <ErrorMessage error={error} message={message} onRetry={onRetry} />\n )}\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Button, Flex, Text } from \"@servicetitan/anvil2\";\n\nimport { MessageProps } from \"./message-interface\";\nimport { AtlasHeader } from \"../atlas-header\";\n\nexport interface SmallActionProps extends MessageProps {\n recommendationId: string;\n message: string;\n description?: string;\n buttonText?: string;\n onReject: (recommendationId: string) => void | undefined;\n onAccept: (recommendationId: string) => void | undefined;\n buttonDisabled?: boolean;\n className?: string;\n}\n\nexport const SmallAction: FC<SmallActionProps> = ({\n recommendationId,\n message,\n description,\n onReject,\n onAccept,\n buttonDisabled = false,\n className,\n}) => {\n return (\n <Flex direction=\"column\" className={className}>\n <AtlasHeader />\n <Flex direction=\"column\" gap={2}>\n <Flex direction=\"column\">\n <Text size=\"medium\">{message}</Text>\n {description && <Text size=\"small\">{description}</Text>}\n </Flex>\n <Flex alignItems=\"flex-start\" gap={1}>\n <Button\n appearance=\"ghost\"\n onClick={() => onReject(recommendationId)}\n disabled={buttonDisabled}\n >\n Reject\n </Button>\n <Button\n appearance=\"primary\"\n style={{ width: \"50%\" }}\n onClick={() => onAccept(recommendationId)}\n disabled={buttonDisabled}\n >\n Accept\n </Button>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Button, Card, Flex, Radio, Text } from \"@servicetitan/anvil2\";\n\nimport { MessageProps } from \"./message-interface\";\nimport { AtlasHeader } from \"../atlas-header\";\ninterface SystemMessageRadioOption {\n label: string;\n description?: string;\n value: string;\n}\n\ninterface SystemMessageProps extends MessageProps {\n message: string;\n radioOptions: SystemMessageRadioOption[];\n selectedValue: string;\n onRadioChange: (value: string) => void;\n buttonText: string;\n onSubmit: () => void;\n buttonDisabled?: boolean;\n}\n\nexport const SystemMessage: FC<SystemMessageProps> = ({\n message,\n radioOptions,\n onRadioChange,\n buttonText,\n onSubmit,\n buttonDisabled = false,\n}) => {\n return (\n <Flex direction=\"column\">\n <AtlasHeader />\n <Text size=\"medium\">{message}</Text>\n <Card>\n <Flex direction=\"column\" gap={2}>\n <Radio.Group legend=\"\">\n {radioOptions.map((option) => (\n <Radio\n key={option.value}\n name=\"action\"\n value={option.value}\n label={option.label}\n description={option.description}\n onChange={(e) =>\n onRadioChange((e?.target as HTMLInputElement)?.value)\n }\n />\n ))}\n </Radio.Group>\n <Button\n appearance=\"primary\"\n style={{ width: \"100%\" }}\n onClick={onSubmit}\n disabled={buttonDisabled}\n >\n {buttonText}\n </Button>\n </Flex>\n </Card>\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { Button, Flex, Text } from \"@servicetitan/anvil2\";\nimport IconRefresh from \"@servicetitan/anvil2/assets/icons/material/round/refresh.svg\";\n\nimport styles from \"./message.module.scss\";\n\nexport interface ChatMessage {\n content: string;\n type: \"user\" | \"assistant\" | \"system\";\n}\n\ninterface UserMessageProps {\n message: string;\n className?: string;\n isError?: boolean;\n onRetry?: () => void;\n}\n\nexport const UserMessage: FC<UserMessageProps> = ({\n message,\n className,\n isError,\n onRetry,\n}) => {\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-end\"\n className={className}\n gap={2}\n >\n <Text\n size=\"small\"\n subdued={isError}\n alignItems=\"flex-start\"\n style={{\n padding: \"8px 12px 8px 16px\",\n borderRadius: \"24px 24px 0px 24px\",\n boxSizing: \"border-box\",\n fontFamily:\n \"var(--a2-typography-paragraph-font-family, 'Nunito Sans')\",\n fontSize: \"var(--a2-typography-paragraph-size-default, 16px)\",\n fontWeight: \"400\",\n lineHeight:\n \"var(--a2-typography-paragraph-line-height-default, 24px)\",\n backgroundColor: isError\n ? \"var(--a2-background-color-danger)\"\n : \"var(--a2-background-color-stronger)\",\n color: isError\n ? \"var(--a2-foreground-color-on-danger)\"\n : \"var(--a2-foreground-color-default)\",\n }}\n >\n {message}\n </Text>\n {isError && (\n <Flex justifyContent=\"flex-end\" alignItems=\"center\">\n <Text variant=\"body\" size=\"small\" className={styles[\"error-color\"]}>\n Message not delivered\n </Text>\n {onRetry && (\n <Button\n size=\"small\"\n appearance=\"ghost\"\n style={{ marginInlineStart: \"var(--a2-size-2)\" }}\n onClick={onRetry}\n icon={{ after: IconRefresh }}\n >\n Retry\n </Button>\n )}\n </Flex>\n )}\n </Flex>\n );\n};\n"],"names":["IconRefresh"],"mappings":"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"}
|