@servicetitan/anvil2-ext-atlas 1.2.3 → 1.3.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-Cxxvgc7g.js +40 -0
- package/dist/atlas-header-Cxxvgc7g.js.map +1 -0
- package/dist/atlas-header.js +1 -1
- package/dist/{chat-window-BU8VGO9z.js → chat-window-4hy-1xfj.js} +2 -2
- package/dist/{chat-window-BU8VGO9z.js.map → chat-window-4hy-1xfj.js.map} +1 -1
- package/dist/chat.js +1 -1
- package/dist/components/atlas-header/atlas-header.d.ts +11 -2
- package/dist/components/loader/index.d.ts +1 -0
- package/dist/components/loader/pulse-loader.d.ts +30 -0
- package/dist/components/messages/assistant-message.d.ts +2 -0
- package/dist/components/messages/markdown-message.d.ts +2 -0
- package/dist/index.js +8 -7
- package/dist/index.js.map +1 -1
- package/dist/{loader-DYmcO1Y_.js → loader-BF1xpasR.js} +2 -2
- package/dist/{loader-DYmcO1Y_.js.map → loader-BF1xpasR.js.map} +1 -1
- package/dist/loader.js +2 -1
- package/dist/loader.js.map +1 -1
- package/dist/{markdown-text-BXCCdmOl.js → markdown-text-CgCSN9q6.js} +2 -2
- package/dist/{markdown-text-BXCCdmOl.js.map → markdown-text-CgCSN9q6.js.map} +1 -1
- package/dist/markdown-text.css +19 -15
- package/dist/markdown-text.js +1 -1
- package/dist/messages.js +1 -1
- package/dist/{notification-card-CdQVC1kO.js → notification-card-DMnEZI0Q.js} +2 -2
- package/dist/{notification-card-CdQVC1kO.js.map → notification-card-DMnEZI0Q.js.map} +1 -1
- package/dist/notification-card.js +1 -1
- package/dist/{proxy-B3m3ViIw.js → proxy-BJr91CAa.js} +2 -2
- package/dist/{proxy-B3m3ViIw.js.map → proxy-BJr91CAa.js.map} +1 -1
- package/dist/pulse-loader-DUrtKYC5.js +390 -0
- package/dist/pulse-loader-DUrtKYC5.js.map +1 -0
- package/dist/recommendations.js +1 -1
- package/dist/{single-recommendation-card-DgAQbMg4.js → single-recommendation-card-CV75jkZb.js} +2 -2
- package/dist/{single-recommendation-card-DgAQbMg4.js.map → single-recommendation-card-CV75jkZb.js.map} +1 -1
- package/dist/{user-message-BFrCI10z.js → user-message-BqWF67vX.js} +44 -21
- package/dist/user-message-BqWF67vX.js.map +1 -0
- package/dist/user-message.css +32 -28
- package/package.json +9 -9
- package/dist/atlas-header-CYHhcWuk.js +0 -23
- package/dist/atlas-header-CYHhcWuk.js.map +0 -1
- package/dist/user-message-BFrCI10z.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @servicetitan/anvil2-ext-atlas
|
|
2
2
|
|
|
3
|
+
## 1.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#2200](https://github.com/servicetitan/hammer/pull/2200) [`df50c67`](https://github.com/servicetitan/hammer/commit/df50c67c10afb863377f638e2c305738b811f4e2) Thanks [@arnold-dad-st](https://github.com/arnold-dad-st)! - [PulseLoader] Add new `PulseLoader` component replacing the 3-dot loader with an animated Atlas logo and status text; update `AssistantMessage`, `MarkdownMessage`, and `Thinking` to use the new loader with an optional `statusMessage` prop
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`0814ff2`](https://github.com/servicetitan/hammer/commit/0814ff20e6fe13264289c13014ed3646ca08e69e), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`5cef90f`](https://github.com/servicetitan/hammer/commit/5cef90f66ffba73a29f485848312bd5f9cc67037), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`f8d56e0`](https://github.com/servicetitan/hammer/commit/f8d56e000d06d8b1725674de99e8e60dcd1e940f), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`1f3828b`](https://github.com/servicetitan/hammer/commit/1f3828bf0708c806ba03b681425eec6deae4a8b8), [`75f1cf1`](https://github.com/servicetitan/hammer/commit/75f1cf1d9a13bd95daf1d1913602898baa0df199), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`c27d4df`](https://github.com/servicetitan/hammer/commit/c27d4dfcc4088189eb3c9f7609d7656b6859936a), [`f8d56e0`](https://github.com/servicetitan/hammer/commit/f8d56e000d06d8b1725674de99e8e60dcd1e940f), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165), [`6042a60`](https://github.com/servicetitan/hammer/commit/6042a60d0b6bc2861ef92946cad8812d276b2165)]:
|
|
12
|
+
- @servicetitan/anvil2@2.8.0
|
|
13
|
+
|
|
3
14
|
## 1.2.3
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { Flex, Icon, Text } from '@servicetitan/anvil2';
|
|
3
|
+
import { P as PulseLoader, S as SvgAtlasLogo } from './pulse-loader-DUrtKYC5.js';
|
|
4
|
+
|
|
5
|
+
const AtlasHeader = ({
|
|
6
|
+
svgIcon,
|
|
7
|
+
assistant = "Atlas",
|
|
8
|
+
className,
|
|
9
|
+
loading = false,
|
|
10
|
+
statusMessage = "Thinking..."
|
|
11
|
+
}) => {
|
|
12
|
+
if (loading) {
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
PulseLoader,
|
|
15
|
+
{
|
|
16
|
+
className,
|
|
17
|
+
statusMessage,
|
|
18
|
+
svgIcon
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
return /* @__PURE__ */ jsxs(Flex, { className, alignItems: "flex-start", gap: 3, children: [
|
|
23
|
+
/* @__PURE__ */ jsx(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
style: {
|
|
27
|
+
flexShrink: 0,
|
|
28
|
+
display: "flex",
|
|
29
|
+
alignItems: "center",
|
|
30
|
+
marginTop: "3px"
|
|
31
|
+
},
|
|
32
|
+
children: /* @__PURE__ */ jsx(Icon, { svg: svgIcon ?? SvgAtlasLogo, size: "medium", inherit: true })
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
/* @__PURE__ */ jsx(Text, { inline: true, children: /* @__PURE__ */ jsx("b", { children: assistant }) })
|
|
36
|
+
] });
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export { AtlasHeader as A };
|
|
40
|
+
//# sourceMappingURL=atlas-header-Cxxvgc7g.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atlas-header-Cxxvgc7g.js","sources":["../src/components/atlas-header/atlas-header.tsx"],"sourcesContent":["import { FC } from \"react\";\nimport { Flex, Icon, Svg, Text } from \"@servicetitan/anvil2\";\nimport IconAtlasLogo from \"@servicetitan/anvil2/assets/icons/st/atlas_logo.svg\";\nimport { PulseLoader } from \"../loader\";\n\nexport interface AtlasHeaderProps {\n /**\n * Custom icon to display instead of the default Atlas logo\n */\n svgIcon?: Svg;\n /**\n * Custom assistant name to display instead of \"Atlas\"\n */\n assistant?: string;\n /**\n * Additional CSS class names\n */\n className?: string;\n /**\n * Whether the loading animation is active\n */\n loading?: boolean;\n /**\n * Status message shown while loading. Defaults to \"Thinking...\"\n */\n statusMessage?: string;\n}\n\n/**\n * Shared component that displays the Atlas logo and name header.\n * When loading is true, the icon pulses and shows the statusMessage with a gradient sweep animation.\n * Used across all message types and recommendation cards.\n */\nexport const AtlasHeader: FC<AtlasHeaderProps> = ({\n svgIcon,\n assistant = \"Atlas\",\n className,\n loading = false,\n statusMessage = \"Thinking...\",\n}) => {\n if (loading) {\n return (\n <PulseLoader\n className={className}\n statusMessage={statusMessage}\n svgIcon={svgIcon}\n />\n );\n }\n\n return (\n <Flex className={className} alignItems=\"flex-start\" gap={3}>\n <div\n style={{\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"3px\",\n }}\n >\n <Icon svg={svgIcon ?? IconAtlasLogo} size=\"medium\" inherit />\n </div>\n <Text inline>\n <b>{assistant}</b>\n </Text>\n </Flex>\n );\n};\n"],"names":["IconAtlasLogo"],"mappings":";;;;AAiCO,MAAM,cAAoC,CAAC;AAAA,EAChD,OAAA;AAAA,EACA,SAAA,GAAY,OAAA;AAAA,EACZ,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,aAAA,GAAgB;AAClB,CAAA,KAAM;AACJ,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,4BACG,IAAA,EAAA,EAAK,SAAA,EAAsB,UAAA,EAAW,YAAA,EAAa,KAAK,CAAA,EACvD,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,UAAA,EAAY,CAAA;AAAA,UACZ,OAAA,EAAS,MAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,SAAA,EAAW;AAAA,SACb;AAAA,QAEA,QAAA,kBAAA,GAAA,CAAC,QAAK,GAAA,EAAK,OAAA,IAAWA,cAAe,IAAA,EAAK,QAAA,EAAS,SAAO,IAAA,EAAC;AAAA;AAAA,KAC7D;AAAA,wBACC,IAAA,EAAA,EAAK,MAAA,EAAM,MACV,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAG,qBAAU,CAAA,EAChB;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
package/dist/atlas-header.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { A as AtlasHeader } from './atlas-header-
|
|
1
|
+
export { A as AtlasHeader } from './atlas-header-Cxxvgc7g.js';
|
|
2
2
|
//# sourceMappingURL=atlas-header.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { c as classNames } from './index-DDXI3m_u.js';
|
|
3
|
-
import { m as motion } from './proxy-
|
|
3
|
+
import { m as motion } from './proxy-BJr91CAa.js';
|
|
4
4
|
|
|
5
5
|
import './chat-window.css';const open = "_open_1qo7q_19";
|
|
6
6
|
const closed = "_closed_1qo7q_23";
|
|
@@ -72,4 +72,4 @@ const ChatWindow = ({
|
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
export { ChatWindow as C };
|
|
75
|
-
//# sourceMappingURL=chat-window-
|
|
75
|
+
//# sourceMappingURL=chat-window-4hy-1xfj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-window-
|
|
1
|
+
{"version":3,"file":"chat-window-4hy-1xfj.js","sources":["../src/components/chat/chat-window.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport classNames from \"classnames\";\nimport { motion } from \"framer-motion\";\n\nimport styles from \"./styles.module.scss\";\n\ninterface ChatWindowProps {\n open: boolean;\n position?: { x: number; y: number };\n isDragging?: boolean;\n fullscreen?: boolean;\n children: ReactNode;\n}\n\nexport const ChatWindow = ({\n open,\n position,\n isDragging,\n fullscreen = false,\n children,\n}: ChatWindowProps) => {\n const isFullscreenOpen = fullscreen && open;\n\n const className = classNames({\n [styles[\"chat-window-expanded\"]]: isFullscreenOpen,\n [styles[\"chat-window\"]]: !isFullscreenOpen,\n [styles[\"open\"]]: !isFullscreenOpen && open,\n [styles[\"closed\"]]: !isFullscreenOpen && !open,\n [styles[\"positioned\"]]: !isFullscreenOpen && position,\n [styles[\"relative\"]]: !isFullscreenOpen && !position,\n });\n\n const getPositionStyles = () => {\n if (isFullscreenOpen) {\n return {};\n }\n\n return position\n ? {\n left: position.x,\n top: position.y,\n }\n : {};\n };\n\n return (\n <motion.div\n layout={!isDragging}\n initial={{\n opacity: isFullscreenOpen ? 0 : 1,\n x: !isFullscreenOpen && !open ? 0 : -25,\n }}\n animate={{\n x: isFullscreenOpen ? 0 : open ? -25 : 0,\n }}\n transition={{\n type: isFullscreenOpen ? \"tween\" : \"spring\",\n ease: isFullscreenOpen ? \"easeInOut\" : undefined,\n stiffness: 300,\n damping: 35,\n duration: 0.3,\n }}\n className={className}\n style={getPositionStyles()}\n >\n <motion.div\n layout={!isDragging ? \"position\" : undefined}\n style={{ width: \"100%\", height: \"100%\" }}\n >\n {children}\n </motion.div>\n </motion.div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAcO,MAAM,aAAa,CAAC;AAAA,EACzB,IAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb;AACF,CAAA,KAAuB;AACrB,EAAA,MAAM,mBAAmB,UAAA,IAAc,IAAA;AAEvC,EAAA,MAAM,YAAY,UAAA,CAAW;AAAA,IAC3B,CAAC,MAAA,CAAO,sBAAsB,CAAC,GAAG,gBAAA;AAAA,IAClC,CAAC,MAAA,CAAO,aAAa,CAAC,GAAG,CAAC,gBAAA;AAAA,IAC1B,CAAC,MAAA,CAAO,MAAM,CAAC,GAAG,CAAC,gBAAA,IAAoB,IAAA;AAAA,IACvC,CAAC,MAAA,CAAO,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAA;AAAA,IAC1C,CAAC,MAAA,CAAO,YAAY,CAAC,GAAG,CAAC,gBAAA,IAAoB,QAAA;AAAA,IAC7C,CAAC,MAAA,CAAO,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAAA,GAC7C,CAAA;AAED,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,OAAO,EAAC;AAAA,IACV;AAEA,IAAA,OAAO,QAAA,GACH;AAAA,MACE,MAAM,QAAA,CAAS,CAAA;AAAA,MACf,KAAK,QAAA,CAAS;AAAA,QAEhB,EAAC;AAAA,EACP,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,QAAQ,CAAC,UAAA;AAAA,MACT,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,mBAAmB,CAAA,GAAI,CAAA;AAAA,QAChC,CAAA,EAAG,CAAC,gBAAA,IAAoB,CAAC,OAAO,CAAA,GAAI;AAAA,OACtC;AAAA,MACA,OAAA,EAAS;AAAA,QACP,CAAA,EAAG,gBAAA,GAAmB,CAAA,GAAI,IAAA,GAAO,GAAA,GAAM;AAAA,OACzC;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,mBAAmB,OAAA,GAAU,QAAA;AAAA,QACnC,IAAA,EAAM,mBAAmB,WAAA,GAAc,MAAA;AAAA,QACvC,SAAA,EAAW,GAAA;AAAA,QACX,OAAA,EAAS,EAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,SAAA;AAAA,MACA,OAAO,iBAAA,EAAkB;AAAA,MAEzB,QAAA,kBAAA,GAAA;AAAA,QAAC,MAAA,CAAO,GAAA;AAAA,QAAP;AAAA,UACC,MAAA,EAAQ,CAAC,UAAA,GAAa,UAAA,GAAa,MAAA;AAAA,UACnC,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,QAAQ,MAAA,EAAO;AAAA,UAEtC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;;;;"}
|
package/dist/chat.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { C as ChatWindow } from './chat-window-
|
|
1
|
+
export { C as ChatWindow } from './chat-window-4hy-1xfj.js';
|
|
2
2
|
//# sourceMappingURL=chat.js.map
|
|
@@ -13,9 +13,18 @@ export interface AtlasHeaderProps {
|
|
|
13
13
|
* Additional CSS class names
|
|
14
14
|
*/
|
|
15
15
|
className?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Whether the loading animation is active
|
|
18
|
+
*/
|
|
19
|
+
loading?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Status message shown while loading. Defaults to "Thinking..."
|
|
22
|
+
*/
|
|
23
|
+
statusMessage?: string;
|
|
16
24
|
}
|
|
17
25
|
/**
|
|
18
|
-
* Shared component that displays the Atlas logo and name header
|
|
19
|
-
*
|
|
26
|
+
* Shared component that displays the Atlas logo and name header.
|
|
27
|
+
* When loading is true, the icon pulses and shows the statusMessage with a gradient sweep animation.
|
|
28
|
+
* Used across all message types and recommendation cards.
|
|
20
29
|
*/
|
|
21
30
|
export declare const AtlasHeader: FC<AtlasHeaderProps>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Svg } from '@servicetitan/anvil2';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the PulseLoader component
|
|
5
|
+
* @property {string} [statusMessage] - Custom status message displayed next to the animated logo. Defaults to "Thinking..."
|
|
6
|
+
* @property {Svg} [svgIcon] - Custom icon to display instead of the default Atlas logo
|
|
7
|
+
* @property {string} [className] - Additional CSS class names
|
|
8
|
+
*/
|
|
9
|
+
export interface PulseLoaderProps {
|
|
10
|
+
/** Custom status message displayed next to the animated logo. Defaults to "Thinking..." */
|
|
11
|
+
statusMessage?: string;
|
|
12
|
+
/** Custom icon to display instead of the default Atlas logo */
|
|
13
|
+
svgIcon?: Svg;
|
|
14
|
+
/** Additional CSS class names */
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* PulseLoader component for displaying an animated Atlas logo with status text.
|
|
19
|
+
*
|
|
20
|
+
* Features:
|
|
21
|
+
* - Animated Atlas logo with scale pulse effect
|
|
22
|
+
* - Gradient sweep animation on the status text
|
|
23
|
+
* - Smooth fade transition when status message changes
|
|
24
|
+
* - Accessible with role="status" and aria-live="polite"
|
|
25
|
+
* - Chromatic-stable with data-chromatic="ignore" on animated elements
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* <PulseLoader statusMessage="Thinking..." />
|
|
29
|
+
*/
|
|
30
|
+
export declare const PulseLoader: FC<PulseLoaderProps>;
|
|
@@ -8,6 +8,8 @@ export interface MarkdownMessageProps extends MessageProps {
|
|
|
8
8
|
assistant?: string;
|
|
9
9
|
onRetry?: () => void;
|
|
10
10
|
toolboxProps?: Omit<ToolboxProps, "text">;
|
|
11
|
+
loading?: boolean;
|
|
12
|
+
statusMessage?: string;
|
|
11
13
|
}
|
|
12
14
|
export declare const MarkdownMessage: FC<MarkdownMessageProps>;
|
|
13
15
|
export declare const Thinking: FC<MarkdownMessageProps>;
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
export { A as AtlasHeader } from './atlas-header-
|
|
2
|
-
export { C as ChatWindow } from './chat-window-
|
|
1
|
+
export { A as AtlasHeader } from './atlas-header-Cxxvgc7g.js';
|
|
2
|
+
export { C as ChatWindow } from './chat-window-4hy-1xfj.js';
|
|
3
3
|
export { C as ChatComposerRich } from './chat-composer-rich-Bj1gmhec.js';
|
|
4
4
|
export { C as Content } from './content-DAPOfSv5.js';
|
|
5
5
|
export { F as Footer } from './footer-Cv4yRBA1.js';
|
|
6
6
|
export { H as Header } from './header-ku2JmzDC.js';
|
|
7
7
|
export { I as InfiniteContent } from './infinite-content-BnStGJfq.js';
|
|
8
|
-
export { L as Loader } from './loader-
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
8
|
+
export { L as Loader } from './loader-BF1xpasR.js';
|
|
9
|
+
export { P as PulseLoader } from './pulse-loader-DUrtKYC5.js';
|
|
10
|
+
export { M as MarkdownText } from './markdown-text-CgCSN9q6.js';
|
|
11
|
+
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-BqWF67vX.js';
|
|
12
|
+
export { N as NotificationCard } from './notification-card-DMnEZI0Q.js';
|
|
13
|
+
export { C as ConfirmationCard, M as MultipleRecommendationCard, S as SingleRecommendationCard } from './single-recommendation-card-CV75jkZb.js';
|
|
13
14
|
export { S as SystemError, W as Welcome } from './welcome-CLNfeZDg.js';
|
|
14
15
|
export { S as Spinner } from './spinner-QnlThoJs.js';
|
|
15
16
|
export { S as Suggestion, a as SuggestionList } from './suggestion-pJLJZyjg.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/hooks/use-draggable.ts"],"sourcesContent":["import { MouseEvent, useCallback, useEffect, useState } from \"react\";\n\nexport interface UseDraggableProps {\n initialX?: number;\n initialY?: number;\n minVisibleHorizontal?: number;\n minVisibleVertical?: number;\n width?: number;\n}\n\nexport interface Position {\n x: number;\n y: number;\n}\n\nexport const useDraggable = ({\n initialX = window.innerWidth - 390,\n initialY = 64,\n minVisibleHorizontal = 390,\n minVisibleVertical = 56,\n width = 390,\n}: UseDraggableProps = {}) => {\n const [position, setPosition] = useState<Position>({\n x: initialX,\n y: initialY,\n });\n const [isDragging, setIsDragging] = useState(false);\n const [dragOffset, setDragOffset] = useState<Position>({ x: 0, y: 0 });\n\n // Function to ensure position is within viewport boundaries\n const ensurePositionInViewport = useCallback(\n (pos: Position): Position => {\n const maxX = window.innerWidth - minVisibleHorizontal;\n const minX = -width + minVisibleHorizontal;\n const maxY = window.innerHeight - minVisibleVertical;\n return {\n x: Math.min(Math.max(pos.x, minX), maxX),\n y: Math.min(Math.max(pos.y, minVisibleVertical), maxY),\n };\n },\n [minVisibleHorizontal, minVisibleVertical, width],\n );\n\n // Function to recalculate initial position based on current viewport\n const recalculateInitialPosition = useCallback((): Position => {\n const newInitialX = window.innerWidth - width;\n return { x: newInitialX, y: initialY };\n }, [width, initialY]);\n\n const resetPosition = useCallback(() => {\n const newInitialPos = recalculateInitialPosition();\n setPosition(newInitialPos);\n }, [recalculateInitialPosition]);\n\n const handleMouseDown = useCallback(\n (e: MouseEvent) => {\n e.preventDefault();\n setIsDragging(true);\n\n setDragOffset({\n x: e.clientX - position.x,\n y: e.clientY - position.y,\n });\n },\n [position],\n );\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (!isDragging) {\n return;\n }\n\n const newX = e.clientX - dragOffset.x;\n const newY = e.clientY - dragOffset.y;\n\n const constrainedPosition = ensurePositionInViewport({\n x: newX,\n y: newY,\n });\n setPosition(constrainedPosition);\n },\n [isDragging, dragOffset, ensurePositionInViewport],\n );\n\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n // Handle viewport resize\n const handleResize = useCallback(() => {\n const constrainedPosition = ensurePositionInViewport(position);\n setPosition(constrainedPosition);\n }, [position, ensurePositionInViewport]);\n\n useEffect(() => {\n if (isDragging) {\n // Prevent text selection while dragging\n document.body.style.userSelect = \"none\";\n document.body.style.webkitUserSelect = \"none\";\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n // Restore text selection\n document.body.style.userSelect = \"\";\n document.body.style.webkitUserSelect = \"\";\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isDragging, handleMouseMove, handleMouseUp]);\n\n // Add resize listener\n useEffect(() => {\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [handleResize]);\n\n return {\n position,\n isDragging,\n handleMouseDown,\n resetPosition,\n };\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/hooks/use-draggable.ts"],"sourcesContent":["import { MouseEvent, useCallback, useEffect, useState } from \"react\";\n\nexport interface UseDraggableProps {\n initialX?: number;\n initialY?: number;\n minVisibleHorizontal?: number;\n minVisibleVertical?: number;\n width?: number;\n}\n\nexport interface Position {\n x: number;\n y: number;\n}\n\nexport const useDraggable = ({\n initialX = window.innerWidth - 390,\n initialY = 64,\n minVisibleHorizontal = 390,\n minVisibleVertical = 56,\n width = 390,\n}: UseDraggableProps = {}) => {\n const [position, setPosition] = useState<Position>({\n x: initialX,\n y: initialY,\n });\n const [isDragging, setIsDragging] = useState(false);\n const [dragOffset, setDragOffset] = useState<Position>({ x: 0, y: 0 });\n\n // Function to ensure position is within viewport boundaries\n const ensurePositionInViewport = useCallback(\n (pos: Position): Position => {\n const maxX = window.innerWidth - minVisibleHorizontal;\n const minX = -width + minVisibleHorizontal;\n const maxY = window.innerHeight - minVisibleVertical;\n return {\n x: Math.min(Math.max(pos.x, minX), maxX),\n y: Math.min(Math.max(pos.y, minVisibleVertical), maxY),\n };\n },\n [minVisibleHorizontal, minVisibleVertical, width],\n );\n\n // Function to recalculate initial position based on current viewport\n const recalculateInitialPosition = useCallback((): Position => {\n const newInitialX = window.innerWidth - width;\n return { x: newInitialX, y: initialY };\n }, [width, initialY]);\n\n const resetPosition = useCallback(() => {\n const newInitialPos = recalculateInitialPosition();\n setPosition(newInitialPos);\n }, [recalculateInitialPosition]);\n\n const handleMouseDown = useCallback(\n (e: MouseEvent) => {\n e.preventDefault();\n setIsDragging(true);\n\n setDragOffset({\n x: e.clientX - position.x,\n y: e.clientY - position.y,\n });\n },\n [position],\n );\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n if (!isDragging) {\n return;\n }\n\n const newX = e.clientX - dragOffset.x;\n const newY = e.clientY - dragOffset.y;\n\n const constrainedPosition = ensurePositionInViewport({\n x: newX,\n y: newY,\n });\n setPosition(constrainedPosition);\n },\n [isDragging, dragOffset, ensurePositionInViewport],\n );\n\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n // Handle viewport resize\n const handleResize = useCallback(() => {\n const constrainedPosition = ensurePositionInViewport(position);\n setPosition(constrainedPosition);\n }, [position, ensurePositionInViewport]);\n\n useEffect(() => {\n if (isDragging) {\n // Prevent text selection while dragging\n document.body.style.userSelect = \"none\";\n document.body.style.webkitUserSelect = \"none\";\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n // Restore text selection\n document.body.style.userSelect = \"\";\n document.body.style.webkitUserSelect = \"\";\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isDragging, handleMouseMove, handleMouseUp]);\n\n // Add resize listener\n useEffect(() => {\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [handleResize]);\n\n return {\n position,\n isDragging,\n handleMouseDown,\n resetPosition,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Flex } from '@servicetitan/anvil2';
|
|
3
|
-
import { m as motion, e as easeInOut } from './proxy-
|
|
3
|
+
import { m as motion, e as easeInOut } from './proxy-BJr91CAa.js';
|
|
4
4
|
|
|
5
5
|
const dotVariants = {
|
|
6
6
|
bounce: (i) => ({
|
|
@@ -45,4 +45,4 @@ const Loader = () => {
|
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
export { Loader as L };
|
|
48
|
-
//# sourceMappingURL=loader-
|
|
48
|
+
//# sourceMappingURL=loader-BF1xpasR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-
|
|
1
|
+
{"version":3,"file":"loader-BF1xpasR.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;;;;"}
|
package/dist/loader.js
CHANGED
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"loader.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -2,11 +2,11 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { M as Markdown, r as remarkGfm } from './index-DFEn2XpE.js';
|
|
3
3
|
|
|
4
4
|
import './markdown-text.css';const styles = {
|
|
5
|
-
"markdown-content": "_markdown-
|
|
5
|
+
"markdown-content": "_markdown-content_p12r8_1"};
|
|
6
6
|
|
|
7
7
|
const MarkdownText = ({ text = "" }) => {
|
|
8
8
|
return /* @__PURE__ */ jsx("div", { className: styles["markdown-content"], children: /* @__PURE__ */ jsx(Markdown, { remarkPlugins: [remarkGfm], children: text }) });
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export { MarkdownText as M };
|
|
12
|
-
//# sourceMappingURL=markdown-text-
|
|
12
|
+
//# sourceMappingURL=markdown-text-CgCSN9q6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-text-
|
|
1
|
+
{"version":3,"file":"markdown-text-CgCSN9q6.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;;;;"}
|
package/dist/markdown-text.css
CHANGED
|
@@ -1,45 +1,49 @@
|
|
|
1
1
|
@layer starter, reset, base, state, application;
|
|
2
|
-
._markdown-
|
|
3
|
-
._markdown-
|
|
4
|
-
._markdown-
|
|
5
|
-
._markdown-
|
|
2
|
+
._markdown-content_p12r8_1 h1,
|
|
3
|
+
._markdown-content_p12r8_1 h2,
|
|
4
|
+
._markdown-content_p12r8_1 h3,
|
|
5
|
+
._markdown-content_p12r8_1 h4 {
|
|
6
6
|
font-size: 1rem;
|
|
7
7
|
margin-top: 0;
|
|
8
8
|
}
|
|
9
|
-
._markdown-
|
|
9
|
+
._markdown-content_p12r8_1 p {
|
|
10
10
|
margin: 0 0 var(--size-2);
|
|
11
11
|
}
|
|
12
|
-
._markdown-
|
|
12
|
+
._markdown-content_p12r8_1 pre {
|
|
13
13
|
background-color: var(--background-color-stronger);
|
|
14
14
|
border-radius: var(--border-radius-large);
|
|
15
15
|
padding: var(--size-4);
|
|
16
16
|
overflow: auto;
|
|
17
17
|
}
|
|
18
|
-
._markdown-
|
|
18
|
+
._markdown-content_p12r8_1 code {
|
|
19
19
|
background-color: var(--background-color-stronger);
|
|
20
20
|
border-radius: var(--border-radius-large);
|
|
21
21
|
padding: 0.2em 0.4em;
|
|
22
22
|
font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
|
|
23
23
|
}
|
|
24
|
-
._markdown-
|
|
24
|
+
._markdown-content_p12r8_1 pre code {
|
|
25
25
|
background-color: transparent;
|
|
26
26
|
padding: 0;
|
|
27
27
|
}
|
|
28
|
-
._markdown-
|
|
29
|
-
._markdown-
|
|
28
|
+
._markdown-content_p12r8_1 ul,
|
|
29
|
+
._markdown-content_p12r8_1 ol {
|
|
30
30
|
padding-left: 2em;
|
|
31
31
|
margin: 0 0 1em;
|
|
32
32
|
}
|
|
33
|
-
._markdown-
|
|
33
|
+
._markdown-content_p12r8_1 table {
|
|
34
34
|
border-collapse: collapse;
|
|
35
|
-
|
|
35
|
+
display: block;
|
|
36
|
+
width: -moz-max-content;
|
|
37
|
+
width: max-content;
|
|
38
|
+
max-width: 100%;
|
|
39
|
+
overflow-x: auto;
|
|
36
40
|
margin: 1em 0;
|
|
37
41
|
}
|
|
38
|
-
._markdown-
|
|
39
|
-
._markdown-
|
|
42
|
+
._markdown-content_p12r8_1 th,
|
|
43
|
+
._markdown-content_p12r8_1 td {
|
|
40
44
|
border: 1px solid var(--border-color-subdued);
|
|
41
45
|
padding: 6px 13px;
|
|
42
46
|
}
|
|
43
|
-
._markdown-
|
|
47
|
+
._markdown-content_p12r8_1 th {
|
|
44
48
|
background-color: var(--background-color-strong);
|
|
45
49
|
}
|
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-CgCSN9q6.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-BqWF67vX.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-CgCSN9q6.js';
|
|
4
4
|
|
|
5
5
|
const NotificationCard = ({
|
|
6
6
|
title,
|
|
@@ -64,4 +64,4 @@ const NotificationCard = ({
|
|
|
64
64
|
};
|
|
65
65
|
|
|
66
66
|
export { NotificationCard as N };
|
|
67
|
-
//# sourceMappingURL=notification-card-
|
|
67
|
+
//# sourceMappingURL=notification-card-DMnEZI0Q.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-card-
|
|
1
|
+
{"version":3,"file":"notification-card-DMnEZI0Q.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(--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(--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(--background-color-danger)\",\n marginLeft: 8,\n }}\n aria-label=\"Unread notification\"\n />\n )}\n </Text>\n </Flex>\n </Flex>\n\n <Text size=\"small\" style={{ color: \"var(--foreground-color-subdued)\" }}>\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,iCAAA;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,iCAAA,EAAkC;AAAA,cAEjD,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,gCAAA;AAAA,sBACZ,UAAA,EAAY;AAAA,qBACd;AAAA,oBACA,YAAA,EAAW;AAAA;AAAA;AACb;AAAA;AAAA,WAEJ,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBAEA,GAAA,CAAC,QAAK,IAAA,EAAK,OAAA,EAAQ,OAAO,EAAE,KAAA,EAAO,iCAAA,EAAkC,EAClE,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;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { N as NotificationCard } from './notification-card-
|
|
1
|
+
export { N as NotificationCard } from './notification-card-DMnEZI0Q.js';
|
|
2
2
|
//# sourceMappingURL=notification-card.js.map
|
|
@@ -9924,5 +9924,5 @@ const featureBundle = {
|
|
|
9924
9924
|
|
|
9925
9925
|
const motion = /*@__PURE__*/ createMotionProxy(featureBundle, createDomVisualElement);
|
|
9926
9926
|
|
|
9927
|
-
export { easeInOut as e, motion as m };
|
|
9928
|
-
//# sourceMappingURL=proxy-
|
|
9927
|
+
export { LayoutGroupContext as L, MotionConfigContext as M, PresenceContext as P, usePresence as a, useIsomorphicLayoutEffect as b, easeInOut as e, isHTMLElement as i, motion as m, useConstant as u };
|
|
9928
|
+
//# sourceMappingURL=proxy-BJr91CAa.js.map
|