@inploi/plugin-chatbot 3.20.2 → 3.21.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/cdn/index.js +5 -5
- package/dist/{chatbot-body-9b42fa19.cjs → chatbot-body-d9d03768.cjs} +27 -13
- package/dist/{chatbot-body-a94ce4fa.js → chatbot-body-f8b01a37.js} +27 -13
- package/dist/chatbot.api.d.ts +0 -708
- package/dist/chatbot.d.ts +12 -9
- package/dist/chatbot.state.d.ts +2 -1
- package/dist/{index-1a26aac3.cjs → index-7fba4662.cjs} +46 -34
- package/dist/{index-065ff0bb.js → index-8c0699fb.js} +46 -34
- package/dist/interpreter.d.ts +7 -4
- package/dist/plugin-chatbot.cjs +1 -1
- package/dist/plugin-chatbot.js +1 -1
- package/package.json +1 -1
package/dist/chatbot.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Logger } from '@inploi/sdk';
|
|
1
2
|
import { Flow } from './chatbot.api';
|
|
2
3
|
import { ChatbotDomManager } from './chatbot.dom';
|
|
3
4
|
type RemoveInternal<T extends object> = {
|
|
@@ -9,12 +10,16 @@ export type Chatbot = ReturnType<ReturnType<ChatbotPlugin>>;
|
|
|
9
10
|
export type OpenChatbotParams = {
|
|
10
11
|
flow: Flow;
|
|
11
12
|
/** Specify the cache keys for restoring this flow from local state.
|
|
12
|
-
* This will be appended to the flow id and version passed to `flow` property.
|
|
13
|
+
* This will be appended *in addition* to the flow id and version passed to `flow` property.
|
|
13
14
|
* @example [job.id] if you want the flows to be unique per job.
|
|
14
15
|
*/
|
|
15
16
|
flowKeys: string[];
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
analytics?: {
|
|
18
|
+
/** Data to be forwarded to analytics events as custom properties. */
|
|
19
|
+
customProperties?: Record<string, unknown>;
|
|
20
|
+
};
|
|
21
|
+
/** Context to be used by nodes internally. */
|
|
22
|
+
context?: Record<string, unknown>;
|
|
18
23
|
/** Title to display in the status bar */
|
|
19
24
|
title: string;
|
|
20
25
|
};
|
|
@@ -30,18 +35,16 @@ export declare const chatbotPlugin: ({ _internal_domManager: dom, theme, }: {
|
|
|
30
35
|
_internal_domManager?: ChatbotDomManager;
|
|
31
36
|
}) => ({ apiClient, logger, analytics }: {
|
|
32
37
|
apiClient: import("@inploi/sdk").ApiClient;
|
|
33
|
-
logger:
|
|
34
|
-
analytics: import("@inploi/sdk").AnalyticsService;
|
|
35
|
-
* @param jobId - The job ID to fetch the flow for. This is the job ID according to the **ATS**, and not the inploi job ID.
|
|
36
|
-
*/
|
|
38
|
+
logger: Logger;
|
|
39
|
+
analytics: import("@inploi/sdk").AnalyticsService;
|
|
37
40
|
}) => {
|
|
38
41
|
/** Optionally eagerly renders the interface ahead of needing the chatbot. */
|
|
39
42
|
prepare: () => Promise<void>;
|
|
40
43
|
/** Fetches a flow by job ID.
|
|
41
44
|
* @param jobId - The job ID to fetch the flow for. This is the job ID according to the **ATS**, and not the inploi job ID.
|
|
42
45
|
*/
|
|
43
|
-
fetchFlowByJobId: (jobId: string) => Promise<OpenChatbotParams>;
|
|
44
|
-
fetchFlowById: (flowId: string) => Promise<OpenChatbotParams>;
|
|
46
|
+
fetchFlowByJobId: (jobId: string, additionalProperties?: Partial<OpenChatbotParams>) => Promise<OpenChatbotParams>;
|
|
47
|
+
fetchFlowById: (flowId: string, additionalProperties?: Partial<OpenChatbotParams>) => Promise<OpenChatbotParams>;
|
|
45
48
|
open: (params: OpenChatbotParams | Promise<OpenChatbotParams>) => Promise<void>;
|
|
46
49
|
/** @deprecated - Please use `open` instead. */
|
|
47
50
|
startApplication: never;
|
package/dist/chatbot.state.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export type StartedFlow = Flow & {
|
|
|
10
10
|
startedAt: Date;
|
|
11
11
|
context: Record<string, unknown>;
|
|
12
12
|
nodeIdToProgress: Record<string, ChatbotFlowProgress>;
|
|
13
|
+
analytics: OpenChatbotParams['analytics'];
|
|
13
14
|
};
|
|
14
15
|
type CurrentFlow = {
|
|
15
16
|
state: 'idle';
|
|
@@ -32,7 +33,7 @@ export declare const store: {
|
|
|
32
33
|
current$: import("@preact/signals").Signal<CurrentFlow>;
|
|
33
34
|
viewState$: import("@preact/signals").Signal<"maximised" | "minimised" | "closed">;
|
|
34
35
|
inputHeight$: import("@preact/signals").Signal<number>;
|
|
35
|
-
startFlow: ({ flow, context, flowKeys, title }: OpenChatbotParams) => Promise<void>;
|
|
36
|
+
startFlow: ({ flow, context, flowKeys, title, analytics }: OpenChatbotParams) => Promise<void>;
|
|
36
37
|
cancelCurrentFlow: () => void;
|
|
37
38
|
markAsFinished: () => void;
|
|
38
39
|
setCurrentNodeId: (currentNodeId: string) => void;
|
|
@@ -4856,7 +4856,7 @@ const initialiseFlowStateData = () => ({
|
|
|
4856
4856
|
sequence: 0,
|
|
4857
4857
|
flowSessionId: genRandomId()
|
|
4858
4858
|
});
|
|
4859
|
-
const db = typeof window === "undefined" ? void 0 : openDB("inploi-chatbot",
|
|
4859
|
+
const db = typeof window === "undefined" ? void 0 : openDB("inploi-chatbot", 3, {
|
|
4860
4860
|
upgrade(db2) {
|
|
4861
4861
|
try {
|
|
4862
4862
|
db2.deleteObjectStore("state");
|
|
@@ -4958,9 +4958,10 @@ const store = {
|
|
|
4958
4958
|
inputHeight$: a(53),
|
|
4959
4959
|
startFlow: async ({
|
|
4960
4960
|
flow,
|
|
4961
|
-
context,
|
|
4961
|
+
context = {},
|
|
4962
4962
|
flowKeys,
|
|
4963
|
-
title
|
|
4963
|
+
title,
|
|
4964
|
+
analytics
|
|
4964
4965
|
}) => {
|
|
4965
4966
|
const data = await idb.getStateData(flow, flowKeys) ?? initialiseFlowStateData();
|
|
4966
4967
|
const startedFlow = {
|
|
@@ -4973,7 +4974,8 @@ const store = {
|
|
|
4973
4974
|
nodes: flow.nodes,
|
|
4974
4975
|
build: flow.build,
|
|
4975
4976
|
context,
|
|
4976
|
-
title
|
|
4977
|
+
title,
|
|
4978
|
+
analytics
|
|
4977
4979
|
};
|
|
4978
4980
|
currentFlow.value = {
|
|
4979
4981
|
state: "loaded",
|
|
@@ -5299,7 +5301,7 @@ const StatusBar = ({
|
|
|
5299
5301
|
})
|
|
5300
5302
|
});
|
|
5301
5303
|
};
|
|
5302
|
-
const ChatbotBody = M(() => Promise.resolve().then(() => require("./chatbot-body-
|
|
5304
|
+
const ChatbotBody = M(() => Promise.resolve().then(() => require("./chatbot-body-d9d03768.cjs")).then((module2) => module2.ChatbotBody));
|
|
5303
5305
|
const chatbotContentClass = cva("selection:bg-accent-4 selection:text-accent-12 fixed bottom-2 left-2 right-2 isolate mx-auto max-h-full max-w-[450px] focus:outline-none", {
|
|
5304
5306
|
variants: {
|
|
5305
5307
|
view: {
|
|
@@ -5326,7 +5328,7 @@ const Chatbot = ({
|
|
|
5326
5328
|
open: isApplying,
|
|
5327
5329
|
modal: isApplying,
|
|
5328
5330
|
children: [o($5d3850c4d0b4e6c7$export$c6fdb837b070b4ff, {
|
|
5329
|
-
class: "bg-overlay animate-fade-in pointer-events-none fixed inset-0"
|
|
5331
|
+
class: "bg-overlay animate-fade-in pointer-events-none fixed inset-0 isolate"
|
|
5330
5332
|
}), o($5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2, {
|
|
5331
5333
|
forceMount: true,
|
|
5332
5334
|
asChild: true,
|
|
@@ -5395,12 +5397,6 @@ const FlowByJobPayloadSchema = object({
|
|
|
5395
5397
|
title: string()
|
|
5396
5398
|
})
|
|
5397
5399
|
});
|
|
5398
|
-
const StartFlowSchema = object({
|
|
5399
|
-
flow: FlowSchema,
|
|
5400
|
-
title: string(),
|
|
5401
|
-
flowKeys: array(string()),
|
|
5402
|
-
context: record(string(), any())
|
|
5403
|
-
});
|
|
5404
5400
|
const tailwind = "#isdk {\n position: relative;\n z-index: 99999;\n font-size: 16px;\n font-family: sans-serif;\n\n /* Lowest colour */\n --i-lowest: 0 0% 100%;\n\n /** Error colours */\n --i-e-1: 340 100% 99%;\n --i-e-2: 353 100% 98%;\n --i-e-3: 351 91% 96%;\n --i-e-4: 351 100% 93%;\n --i-e-5: 350 100% 90%;\n --i-e-6: 351 80% 86%;\n --i-e-7: 349 68% 81%;\n --i-e-8: 348 61% 74%;\n --i-e-9: 348 75% 59%;\n --i-e-10: 347 70% 55%;\n --i-e-11: 345 70% 47%;\n --i-e-12: 344 63% 24%;\n\n --header-height: 44px;\n\n --content-height: calc(100vh - 64px);\n --content-height: calc(100svh - 64px);\n}\n\n @media screen and (min-width: 768px) {#isdk {\n --content-height: min(640px, calc(100vh - 16px));\n --content-height: min(640px, calc(100svh - 16px))\n}\n }\n\n #isdk {\n --tw-content: '';\n font-family:\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Roboto,\n Oxygen,\n Ubuntu,\n Cantarell,\n Open Sans,\n Helvetica Neue,\n sans-serif;\n}\n\n #isdk * {\n font-weight: inherit;\n font-style: inherit;\n box-sizing: border-box;\n font-family: inherit;\n border-style: solid;\n border-width: 0;\n -webkit-tap-highlight-color: transparent;\n }\n\n #isdk ::before,\n #isdk ::after {\n box-sizing: border-box;\n }\n\n #isdk :is(ul, ol) {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n #isdk :is(p) {\n margin: 0;\n padding: 0;\n }\n\n #isdk :is(li) {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n #isdk :is(button) {\n margin: 0;\n padding: 0;\n border: unset;\n background: unset;\n text-align: unset;\n }\n\n #isdk *, #isdk ::before, #isdk ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n #isdk ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n #isdk .container {\n width: 100%;\n}\n\n @media (min-width: 640px) {\n\n #isdk .container {\n max-width: 640px;\n }\n}\n\n @media (min-width: 768px) {\n\n #isdk .container {\n max-width: 768px;\n }\n}\n\n @media (min-width: 1024px) {\n\n #isdk .container {\n max-width: 1024px;\n }\n}\n\n @media (min-width: 1280px) {\n\n #isdk .container {\n max-width: 1280px;\n }\n}\n\n @media (min-width: 1536px) {\n\n #isdk .container {\n max-width: 1536px;\n }\n}\n\n #isdk .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n #isdk .pointer-events-none {\n pointer-events: none;\n}\n\n #isdk .visible {\n visibility: visible;\n}\n\n #isdk .collapse {\n visibility: collapse;\n}\n\n #isdk .static {\n position: static;\n}\n\n #isdk .fixed {\n position: fixed;\n}\n\n #isdk .absolute {\n position: absolute;\n}\n\n #isdk .relative {\n position: relative;\n}\n\n #isdk .sticky {\n position: sticky;\n}\n\n #isdk .inset-0 {\n inset: 0px;\n}\n\n #isdk .bottom-0 {\n bottom: 0px;\n}\n\n #isdk .bottom-2 {\n bottom: 0.5rem;\n}\n\n #isdk .bottom-2\\.5 {\n bottom: 0.625rem;\n}\n\n #isdk .left-0 {\n left: 0px;\n}\n\n #isdk .left-2 {\n left: 0.5rem;\n}\n\n #isdk .right-0 {\n right: 0px;\n}\n\n #isdk .right-2 {\n right: 0.5rem;\n}\n\n #isdk .right-3 {\n right: 0.75rem;\n}\n\n #isdk .top-0 {\n top: 0px;\n}\n\n #isdk .isolate {\n isolation: isolate;\n}\n\n #isdk .z-20 {\n z-index: 20;\n}\n\n #isdk .m-0 {\n margin: 0px;\n}\n\n #isdk .mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n #isdk .mb-1 {\n margin-bottom: 0.25rem;\n}\n\n #isdk .ml-auto {\n margin-left: auto;\n}\n\n #isdk .mt-auto {\n margin-top: auto;\n}\n\n #isdk .block {\n display: block;\n}\n\n #isdk .inline-block {\n display: inline-block;\n}\n\n #isdk .inline {\n display: inline;\n}\n\n #isdk .flex {\n display: flex;\n}\n\n #isdk .inline-flex {\n display: inline-flex;\n}\n\n #isdk .table {\n display: table;\n}\n\n #isdk .table-row {\n display: table-row;\n}\n\n #isdk .flow-root {\n display: flow-root;\n}\n\n #isdk .grid {\n display: grid;\n}\n\n #isdk .inline-grid {\n display: inline-grid;\n}\n\n #isdk .contents {\n display: contents;\n}\n\n #isdk .list-item {\n display: list-item;\n}\n\n #isdk .\\!hidden {\n display: none !important;\n}\n\n #isdk .hidden {\n display: none;\n}\n\n #isdk .h-1 {\n height: 0.25rem;\n}\n\n #isdk .h-1\\.5 {\n height: 0.375rem;\n}\n\n #isdk .h-16 {\n height: 4rem;\n}\n\n #isdk .h-4 {\n height: 1rem;\n}\n\n #isdk .h-48 {\n height: 12rem;\n}\n\n #isdk .h-8 {\n height: 2rem;\n}\n\n #isdk .h-\\[3px\\] {\n height: 3px;\n}\n\n #isdk .h-\\[var\\(--content-height\\)\\] {\n height: var(--content-height);\n}\n\n #isdk .h-\\[var\\(--header-height\\)\\] {\n height: var(--header-height);\n}\n\n #isdk .h-full {\n height: 100%;\n}\n\n #isdk .max-h-full {\n max-height: 100%;\n}\n\n #isdk .min-h-\\[36px\\] {\n min-height: 36px;\n}\n\n #isdk .w-1 {\n width: 0.25rem;\n}\n\n #isdk .w-1\\.5 {\n width: 0.375rem;\n}\n\n #isdk .w-16 {\n width: 4rem;\n}\n\n #isdk .w-24 {\n width: 6rem;\n}\n\n #isdk .w-4 {\n width: 1rem;\n}\n\n #isdk .w-8 {\n width: 2rem;\n}\n\n #isdk .w-full {\n width: 100%;\n}\n\n #isdk .min-w-0 {\n min-width: 0px;\n}\n\n #isdk .min-w-\\[2rem\\] {\n min-width: 2rem;\n}\n\n #isdk .max-w-\\[450px\\] {\n max-width: 450px;\n}\n\n #isdk .max-w-\\[min\\(100\\%\\2c 24rem\\)\\] {\n max-width: min(100%,24rem);\n}\n\n #isdk .max-w-full {\n max-width: 100%;\n}\n\n #isdk .flex-1 {\n flex: 1 1 0%;\n}\n\n #isdk .flex-none {\n flex: none;\n}\n\n #isdk .flex-shrink {\n flex-shrink: 1;\n}\n\n #isdk .flex-shrink-0 {\n flex-shrink: 0;\n}\n\n #isdk .shrink {\n flex-shrink: 1;\n}\n\n #isdk .flex-grow {\n flex-grow: 1;\n}\n\n #isdk .grow {\n flex-grow: 1;\n}\n\n #isdk .border-collapse {\n border-collapse: collapse;\n}\n\n #isdk .translate-y-full {\n --tw-translate-y: 100%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n #isdk .transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n @keyframes bounce {\n\n 0%, 100% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n #isdk .animate-bounce {\n animation: bounce 1s infinite;\n}\n\n @keyframes bubble-in {\n\n from {\n transform: translateY(100%) scale(0.8);\n opacity: 0;\n }\n\n to {\n transform: translateY(0) scale(1);\n opacity: 1;\n }\n}\n\n #isdk .animate-bubble-in {\n animation: bubble-in 300ms cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n @keyframes fade-in {\n\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n #isdk .animate-fade-in {\n animation: fade-in 500ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n @keyframes maximise {\n\n from {\n transform: translateY(50%);\n height: var(--header-height);\n }\n\n to {\n transform: translateY(0);\n height: var(--content-height);\n }\n}\n\n #isdk .animate-maximise {\n animation: maximise 400ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n @keyframes slide-in-bottom {\n\n from {\n transform: translateY(-100%);\n }\n\n to {\n transform: translateY(0);\n }\n}\n\n #isdk .animate-slide-in-bottom {\n animation: slide-in-bottom 300ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n #isdk .cursor-pointer {\n cursor: pointer;\n}\n\n #isdk .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n #isdk .resize {\n resize: both;\n}\n\n #isdk .appearance-none {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n #isdk .flex-col {\n flex-direction: column;\n}\n\n #isdk .flex-wrap {\n flex-wrap: wrap;\n}\n\n #isdk .items-center {\n align-items: center;\n}\n\n #isdk .items-stretch {\n align-items: stretch;\n}\n\n #isdk .justify-end {\n justify-content: flex-end;\n}\n\n #isdk .justify-center {\n justify-content: center;\n}\n\n #isdk .gap-0 {\n gap: 0px;\n}\n\n #isdk .gap-1 {\n gap: 0.25rem;\n}\n\n #isdk .gap-1\\.5 {\n gap: 0.375rem;\n}\n\n #isdk .gap-2 {\n gap: 0.5rem;\n}\n\n #isdk .gap-3 {\n gap: 0.75rem;\n}\n\n #isdk .gap-4 {\n gap: 1rem;\n}\n\n #isdk .gap-px {\n gap: 1px;\n}\n\n #isdk .overflow-hidden {\n overflow: hidden;\n}\n\n #isdk .overflow-y-auto {\n overflow-y: auto;\n}\n\n #isdk .overflow-y-scroll {\n overflow-y: scroll;\n}\n\n #isdk .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n #isdk .break-words {\n overflow-wrap: break-word;\n}\n\n #isdk .rounded {\n border-radius: 0.25rem;\n}\n\n #isdk .rounded-2xl {\n border-radius: 1rem;\n}\n\n #isdk .rounded-3xl {\n border-radius: 1.5rem;\n}\n\n #isdk .rounded-\\[18px\\] {\n border-radius: 18px;\n}\n\n #isdk .rounded-full {\n border-radius: 9999px;\n}\n\n #isdk .rounded-lg {\n border-radius: 0.5rem;\n}\n\n #isdk .rounded-md {\n border-radius: 0.375rem;\n}\n\n #isdk .rounded-xl {\n border-radius: 0.75rem;\n}\n\n #isdk .rounded-b-3xl {\n border-bottom-right-radius: 1.5rem;\n border-bottom-left-radius: 1.5rem;\n}\n\n #isdk .rounded-bl-md {\n border-bottom-left-radius: 0.375rem;\n}\n\n #isdk .rounded-br-md {\n border-bottom-right-radius: 0.375rem;\n}\n\n #isdk .border {\n border-width: 1px;\n}\n\n #isdk .border-b {\n border-bottom-width: 1px;\n}\n\n #isdk .border-t {\n border-top-width: 1px;\n}\n\n #isdk .border-solid {\n border-style: solid;\n}\n\n #isdk .border-dashed {\n border-style: dashed;\n}\n\n #isdk .border-accent-9 {\n border-color: var(--i-color-a-9);\n}\n\n #isdk .border-divider {\n border-color: var(--i-color-divider);\n}\n\n #isdk .border-neutral-5 {\n border-color: var(--i-color-n-5);\n}\n\n #isdk .border-neutral-8 {\n border-color: var(--i-color-n-8);\n}\n\n #isdk .border-transparent {\n border-color: transparent;\n}\n\n #isdk .border-b-neutral-3 {\n border-bottom-color: var(--i-color-n-3);\n}\n\n #isdk .border-b-neutral-5 {\n border-bottom-color: var(--i-color-n-5);\n}\n\n #isdk .border-b-transparent {\n border-bottom-color: transparent;\n}\n\n #isdk .bg-accent-1 {\n background-color: var(--i-color-a-1);\n}\n\n #isdk .bg-accent-3 {\n background-color: var(--i-color-a-3);\n}\n\n #isdk .bg-accent-9 {\n background-color: var(--i-color-a-9);\n}\n\n #isdk .bg-bubble-weak-bg {\n background-color: var(--i-bubble-weak-bg);\n}\n\n #isdk .bg-lowest {\n background-color: var(--i-color-lowest);\n}\n\n #isdk .bg-neutral-1 {\n background-color: var(--i-color-n-1);\n}\n\n #isdk .bg-neutral-2 {\n background-color: var(--i-color-n-2);\n}\n\n #isdk .bg-neutral-3 {\n background-color: var(--i-color-n-3);\n}\n\n #isdk .bg-overlay {\n background-color: var(--i-overlay-bg);\n}\n\n #isdk .bg-statusbar {\n background-color: var(--i-status-bar-bg);\n}\n\n #isdk .bg-transparent {\n background-color: transparent;\n}\n\n #isdk .bg-none {\n background-image: none;\n}\n\n #isdk .p-1 {\n padding: 0.25rem;\n}\n\n #isdk .p-1\\.5 {\n padding: 0.375rem;\n}\n\n #isdk .p-2 {\n padding: 0.5rem;\n}\n\n #isdk .p-2\\.5 {\n padding: 0.625rem;\n}\n\n #isdk .p-4 {\n padding: 1rem;\n}\n\n #isdk .px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n\n #isdk .px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n #isdk .px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n\n #isdk .px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n #isdk .px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n #isdk .px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n\n #isdk .py-0 {\n padding-top: 0px;\n padding-bottom: 0px;\n}\n\n #isdk .py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n\n #isdk .py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n #isdk .py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n\n #isdk .py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n #isdk .py-2\\.5 {\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n}\n\n #isdk .py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n\n #isdk .py-\\[6px\\] {\n padding-top: 6px;\n padding-bottom: 6px;\n}\n\n #isdk .pb-2 {\n padding-bottom: 0.5rem;\n}\n\n #isdk .pb-6 {\n padding-bottom: 1.5rem;\n}\n\n #isdk .pl-1 {\n padding-left: 0.25rem;\n}\n\n #isdk .pl-1\\.5 {\n padding-left: 0.375rem;\n}\n\n #isdk .pl-2 {\n padding-left: 0.5rem;\n}\n\n #isdk .pl-4 {\n padding-left: 1rem;\n}\n\n #isdk .pr-1 {\n padding-right: 0.25rem;\n}\n\n #isdk .pr-2 {\n padding-right: 0.5rem;\n}\n\n #isdk .pr-2\\.5 {\n padding-right: 0.625rem;\n}\n\n #isdk .pr-3 {\n padding-right: 0.75rem;\n}\n\n #isdk .pr-4 {\n padding-right: 1rem;\n}\n\n #isdk .pt-3 {\n padding-top: 0.75rem;\n}\n\n #isdk .pt-5 {\n padding-top: 1.25rem;\n}\n\n #isdk .pt-\\[calc\\(var\\(--header-height\\)\\+1rem\\)\\] {\n padding-top: calc(var(--header-height) + 1rem);\n}\n\n #isdk .text-center {\n text-align: center;\n}\n\n #isdk .text-right {\n text-align: right;\n}\n\n #isdk .text-justify {\n text-align: justify;\n}\n\n #isdk .text-\\[10px\\] {\n font-size: 10px;\n}\n\n #isdk .text-\\[11px\\] {\n font-size: 11px;\n}\n\n #isdk .text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n\n #isdk .text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n\n #isdk .text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n\n #isdk .font-bold {\n font-weight: 700;\n}\n\n #isdk .font-medium {\n font-weight: 500;\n}\n\n #isdk .uppercase {\n text-transform: uppercase;\n}\n\n #isdk .lowercase {\n text-transform: lowercase;\n}\n\n #isdk .capitalize {\n text-transform: capitalize;\n}\n\n #isdk .italic {\n font-style: italic;\n}\n\n #isdk .ordinal {\n --tw-ordinal: ordinal;\n font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);\n}\n\n #isdk .leading-3 {\n line-height: .75rem;\n}\n\n #isdk .leading-snug {\n line-height: 1.375;\n}\n\n #isdk .tracking-\\[-0\\.01em\\] {\n letter-spacing: -0.01em;\n}\n\n #isdk .tracking-tight {\n letter-spacing: -0.025em;\n}\n\n #isdk .tracking-wide {\n letter-spacing: 0.025em;\n}\n\n #isdk .tracking-widest {\n letter-spacing: 0.1em;\n}\n\n #isdk .text-\\[\\#4CAF50\\] {\n --tw-text-opacity: 1;\n color: rgb(76 175 80 / var(--tw-text-opacity));\n}\n\n #isdk .text-\\[\\#FFC107\\] {\n --tw-text-opacity: 1;\n color: rgb(255 193 7 / var(--tw-text-opacity));\n}\n\n #isdk .text-accent-11 {\n color: var(--i-color-a-11);\n}\n\n #isdk .text-accent-12 {\n color: var(--i-color-a-12);\n}\n\n #isdk .text-accent-9 {\n color: var(--i-color-a-9);\n}\n\n #isdk .text-error-11 {\n color: var(--i-color-e-11);\n}\n\n #isdk .text-error-9 {\n color: var(--i-color-e-9);\n}\n\n #isdk .text-interactive-copy {\n color: var(--i-interactive-copy);\n}\n\n #isdk .text-neutral-10 {\n color: var(--i-color-n-10);\n}\n\n #isdk .text-neutral-11 {\n color: var(--i-color-n-11);\n}\n\n #isdk .text-neutral-12 {\n color: var(--i-color-n-12);\n}\n\n #isdk .text-neutral-6 {\n color: var(--i-color-n-6);\n}\n\n #isdk .text-neutral-8 {\n color: var(--i-color-n-8);\n}\n\n #isdk .text-neutral-9 {\n color: var(--i-color-n-9);\n}\n\n #isdk .text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n #isdk .underline {\n text-decoration-line: underline;\n}\n\n #isdk .no-underline {\n text-decoration-line: none;\n}\n\n #isdk .underline-offset-2 {\n text-underline-offset: 2px;\n}\n\n #isdk .caret-accent-9 {\n caret-color: var(--i-color-a-9);\n}\n\n #isdk .shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .shadow-surface-md {\n --tw-shadow: 0px 3px 3px 0px oklch(0% 0 0 / 0.03), 0px 6px 4px 0px oklch(0% 0 0 / 0.02), 0px 6px 4px 0px oklch(0% 0 0 / 0.01);\n --tw-shadow-colored: 0px 3px 3px 0px var(--tw-shadow-color), 0px 6px 4px 0px var(--tw-shadow-color), 0px 6px 4px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .shadow-surface-sm {\n --tw-shadow: 0px 3px 3px 0px oklch(0% 0 0 / 0.03), 0px 4px 4px 0px oklch(0% 0 0 / 0.02);\n --tw-shadow-colored: 0px 3px 3px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .shadow-bubble-strong-shadow {\n --tw-shadow-color: var(--i-bubble-strong-shadow);\n --tw-shadow: var(--tw-shadow-colored);\n}\n\n #isdk .outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n #isdk .outline {\n outline-style: solid;\n}\n\n #isdk .outline-1 {\n outline-width: 1px;\n}\n\n #isdk .outline-2 {\n outline-width: 2px;\n}\n\n #isdk .outline-accent-4 {\n outline-color: var(--i-color-a-4);\n}\n\n #isdk .outline-bubble-weak {\n outline-color: var(--i-bubble-weak-outline);\n}\n\n #isdk .outline-divider {\n outline-color: var(--i-color-divider);\n}\n\n #isdk .outline-neutral-3 {\n outline-color: var(--i-color-n-3);\n}\n\n #isdk .outline-neutral-6 {\n outline-color: var(--i-color-n-6);\n}\n\n #isdk .ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .ring-1 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .ring-2 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .ring-accent-6 {\n --tw-ring-color: var(--i-color-a-6);\n}\n\n #isdk .ring-divider {\n --tw-ring-color: var(--i-color-divider);\n}\n\n #isdk .ring-lowest {\n --tw-ring-color: var(--i-color-lowest);\n}\n\n #isdk .ring-transparent {\n --tw-ring-color: transparent;\n}\n\n #isdk .ring-offset-\\[1\\.5px\\] {\n --tw-ring-offset-width: 1.5px;\n}\n\n #isdk .ring-offset-neutral-1 {\n --tw-ring-offset-color: var(--i-color-n-1);\n}\n\n #isdk .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .drop-shadow-\\[0_1\\.5px_var\\(--i-color-n-1\\)\\] {\n --tw-drop-shadow: drop-shadow(0 1.5px var(--i-color-n-1));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .invert {\n --tw-invert: invert(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .sepia {\n --tw-sepia: sepia(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .backdrop-blur-md {\n --tw-backdrop-blur: blur(12px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #isdk .backdrop-blur-xl {\n --tw-backdrop-blur: blur(24px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #isdk .backdrop-saturate-150 {\n --tw-backdrop-saturate: saturate(1.5);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #isdk .backdrop-filter {\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #isdk .transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #isdk .transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #isdk .transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #isdk .duration-100 {\n transition-duration: 100ms;\n}\n\n #isdk .duration-1000 {\n transition-duration: 1000ms;\n}\n\n #isdk .duration-300 {\n transition-duration: 300ms;\n}\n\n #isdk .duration-700 {\n transition-duration: 700ms;\n}\n\n #isdk .ease-expo-out {\n transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n #isdk .ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n #isdk .will-change-\\[height\\] {\n will-change: height;\n}\n\n #isdk .text-wrap-balance {\n text-wrap: balance;\n}\n\n #isdk .fr {\n outline: none;\n}\n\n #isdk .fr:focus {\n outline: none;\n}\n\n #isdk .fr:focus-visible {\n outline: none;\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-color: var(--i-color-lowest);\n --tw-ring-opacity: 1;\n --tw-ring-color: var(--i-color-a-9);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .gutter-stable {\n scrollbar-gutter: stable;\n}\n\n #isdk .hide-scrollbars::-webkit-scrollbar {\n display: none;\n}\n\n #isdk .hide-scrollbars {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n #isdk .touch-hitbox::before {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n height: 100%;\n min-height: 44px;\n min-width: 44px;\n z-index: 9999;\n}\n\n #isdk .\\[-webkit-outer-spin-button\\:none\\] {\n -webkit-outer-spin-button: none;\n}\n\n #isdk .\\[a-zA-Z0-9-_\\:\\.\\$\\@\\?\\] {\n a-z-a--z0-9-_: .$@?;\n}\n\n #isdk .\\[grid-template-columns\\:min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n}\n\n #isdk .\\[text-wrap\\:pretty\\] {\n text-wrap: pretty;\n}\n\n #isdk .selection\\:bg-accent-4 *::-moz-selection {\n background-color: var(--i-color-a-4);\n}\n\n #isdk .selection\\:bg-accent-4 *::selection {\n background-color: var(--i-color-a-4);\n}\n\n #isdk .selection\\:bg-transparent *::-moz-selection {\n background-color: transparent;\n}\n\n #isdk .selection\\:bg-transparent *::selection {\n background-color: transparent;\n}\n\n #isdk .selection\\:text-accent-12 *::-moz-selection {\n color: var(--i-color-a-12);\n}\n\n #isdk .selection\\:text-accent-12 *::selection {\n color: var(--i-color-a-12);\n}\n\n #isdk .selection\\:bg-accent-4::-moz-selection {\n background-color: var(--i-color-a-4);\n}\n\n #isdk .selection\\:bg-accent-4::selection {\n background-color: var(--i-color-a-4);\n}\n\n #isdk .selection\\:bg-transparent::-moz-selection {\n background-color: transparent;\n}\n\n #isdk .selection\\:bg-transparent::selection {\n background-color: transparent;\n}\n\n #isdk .selection\\:text-accent-12::-moz-selection {\n color: var(--i-color-a-12);\n}\n\n #isdk .selection\\:text-accent-12::selection {\n color: var(--i-color-a-12);\n}\n\n #isdk .placeholder\\:text-neutral-10::-moz-placeholder {\n color: var(--i-color-n-10);\n}\n\n #isdk .placeholder\\:text-neutral-10::placeholder {\n color: var(--i-color-n-10);\n}\n\n #isdk .placeholder\\:text-neutral-8::-moz-placeholder {\n color: var(--i-color-n-8);\n}\n\n #isdk .placeholder\\:text-neutral-8::placeholder {\n color: var(--i-color-n-8);\n}\n\n #isdk .autofill\\:shadow-\\[inset_0_0_0_1000px_hsl\\(210_16\\.7\\%_97\\.6\\%\\)\\]:-webkit-autofill {\n --tw-shadow: inset 0 0 0 1000px hsl(210 16.7% 97.6%);\n --tw-shadow-colored: inset 0 0 0 1000px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .autofill\\:shadow-\\[inset_0_0_0_1000px_hsl\\(210_16\\.7\\%_97\\.6\\%\\)\\]:autofill {\n --tw-shadow: inset 0 0 0 1000px hsl(210 16.7% 97.6%);\n --tw-shadow-colored: inset 0 0 0 1000px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .hover\\:border-accent-10:hover {\n border-color: var(--i-color-a-10);\n}\n\n #isdk .hover\\:border-neutral-5:hover {\n border-color: var(--i-color-n-5);\n}\n\n #isdk .hover\\:bg-accent-10:hover {\n background-color: var(--i-color-a-10);\n}\n\n #isdk .hover\\:bg-interactive-bg-hover:hover {\n background-color: var(--i-interactive-bg-hover);\n}\n\n #isdk .hover\\:bg-neutral-2:hover {\n background-color: var(--i-color-n-2);\n}\n\n #isdk .hover\\:bg-neutral-3:hover {\n background-color: var(--i-color-n-3);\n}\n\n #isdk .hover\\:bg-neutral-4:hover {\n background-color: var(--i-color-n-4);\n}\n\n #isdk .hover\\:text-interactive-copy-hover:hover {\n color: var(--i-interactive-copy-hover);\n}\n\n #isdk .hover\\:text-neutral-12:hover {\n color: var(--i-color-n-12);\n}\n\n #isdk .hover\\:ring-accent-8:hover {\n --tw-ring-color: var(--i-color-a-8);\n}\n\n #isdk .focus\\:bg-neutral-5:focus {\n background-color: var(--i-color-n-5);\n}\n\n #isdk .focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n #isdk .focus-visible\\:bg-neutral-3:focus-visible {\n background-color: var(--i-color-n-3);\n}\n\n #isdk .focus-visible\\:outline-2:focus-visible {\n outline-width: 2px;\n}\n\n #isdk .focus-visible\\:outline-accent-7:focus-visible {\n outline-color: var(--i-color-a-7);\n}\n\n #isdk .focus-visible\\:outline-accent-8:focus-visible {\n outline-color: var(--i-color-a-8);\n}\n\n #isdk .focus-visible\\:ring-4:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n\n #isdk .active\\:border-submit-bg-active:active {\n border-color: var(--i-submit-button-bg-active);\n}\n\n #isdk .active\\:bg-accent-10:active {\n background-color: var(--i-color-a-10);\n}\n\n #isdk .active\\:bg-accent-2:active {\n background-color: var(--i-color-a-2);\n}\n\n #isdk .active\\:bg-interactive-bg-active:active {\n background-color: var(--i-interactive-bg-active);\n}\n\n #isdk .active\\:bg-submit-bg-active:active {\n background-color: var(--i-submit-button-bg-active);\n}\n\n #isdk .active\\:text-accent-10:active {\n color: var(--i-color-a-10);\n}\n\n #isdk .active\\:text-accent-11:active {\n color: var(--i-color-a-11);\n}\n\n #isdk .active\\:text-interactive-copy-active:active {\n color: var(--i-interactive-copy-active);\n}\n\n #isdk .active\\:outline-neutral-8:active {\n outline-color: var(--i-color-n-8);\n}\n\n #isdk .active\\:ring-2:active {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .active\\:ring-accent-7:active {\n --tw-ring-color: var(--i-color-a-7);\n}\n\n #isdk .active\\:ring-offset-2:active {\n --tw-ring-offset-width: 2px;\n}\n\n #isdk .disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n #isdk .disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n\n #isdk .peer:checked ~ .peer-checked\\:bg-accent-2 {\n background-color: var(--i-color-a-2);\n}\n\n #isdk .peer:checked ~ .peer-checked\\:text-accent-9 {\n color: var(--i-color-a-9);\n}\n\n #isdk .peer:checked ~ .peer-checked\\:outline-accent-7 {\n outline-color: var(--i-color-a-7);\n}\n\n #isdk .peer:focus-visible ~ .peer-focus-visible\\:ring-4 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .peer:focus-visible ~ .peer-focus-visible\\:ring-accent-9 {\n --tw-ring-color: var(--i-color-a-9);\n}\n\n #isdk .peer:focus-visible ~ .peer-focus-visible\\:ring-offset-accent-7 {\n --tw-ring-offset-color: var(--i-color-a-7);\n}\n\n @media (pointer: coarse) {\n\n #isdk .pointer-coarse\\:touch-hitbox\\:\\:before::before {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n height: 100%;\n min-height: 44px;\n min-width: 44px;\n z-index: 9999;\n }\n}\n\n #isdk .\\[\\&\\:has\\(\\+\\*\\>input\\:focus\\)\\]\\:text-neutral-11:has(+*>input:focus) {\n color: var(--i-color-n-11);\n}\n";
|
|
5405
5401
|
const CHATBOT_ELEMENT_ID = "isdk";
|
|
5406
5402
|
const ERROR_MESSAGES = {
|
|
@@ -5413,8 +5409,10 @@ const createChatbotDomManager = () => {
|
|
|
5413
5409
|
return {
|
|
5414
5410
|
getOrCreateChatbotElement: () => {
|
|
5415
5411
|
const chatbotElement = document.getElementById(CHATBOT_ELEMENT_ID);
|
|
5416
|
-
if (chatbotElement)
|
|
5412
|
+
if (chatbotElement) {
|
|
5413
|
+
document.body.appendChild(chatbotElement);
|
|
5417
5414
|
return chatbotElement;
|
|
5415
|
+
}
|
|
5418
5416
|
const newElement = document.createElement("div");
|
|
5419
5417
|
document.body.appendChild(newElement);
|
|
5420
5418
|
newElement.id = CHATBOT_ELEMENT_ID;
|
|
@@ -5653,7 +5651,8 @@ ${tokenCss.concat(tokenCss).join("\n")}
|
|
|
5653
5651
|
};
|
|
5654
5652
|
const validateContext = ({
|
|
5655
5653
|
context,
|
|
5656
|
-
schema
|
|
5654
|
+
schema,
|
|
5655
|
+
logger
|
|
5657
5656
|
}) => {
|
|
5658
5657
|
if (!schema)
|
|
5659
5658
|
return;
|
|
@@ -5663,7 +5662,9 @@ const validateContext = ({
|
|
|
5663
5662
|
continue;
|
|
5664
5663
|
const value = get$1(context, key, null);
|
|
5665
5664
|
if (config.required && value === null) {
|
|
5666
|
-
|
|
5665
|
+
const error = `Configuration error in context: ${key} is required`;
|
|
5666
|
+
logger.error(error);
|
|
5667
|
+
throw new Error(error);
|
|
5667
5668
|
}
|
|
5668
5669
|
switch (config.type) {
|
|
5669
5670
|
case "number":
|
|
@@ -5721,29 +5722,39 @@ const chatbotPlugin = ({
|
|
|
5721
5722
|
/** Fetches a flow by job ID.
|
|
5722
5723
|
* @param jobId - The job ID to fetch the flow for. This is the job ID according to the **ATS**, and not the inploi job ID.
|
|
5723
5724
|
*/
|
|
5724
|
-
fetchFlowByJobId: async (jobId) => apiClient.fetch(`/flow/job/${jobId}`).then((res) => {
|
|
5725
|
+
fetchFlowByJobId: async (jobId, additionalProperties) => apiClient.fetch(`/flow/job/${jobId}`).then((res) => {
|
|
5726
|
+
var _a;
|
|
5725
5727
|
const data = parse$1(FlowByJobPayloadSchema, res);
|
|
5726
5728
|
return {
|
|
5727
|
-
context: {
|
|
5728
|
-
job_id: data.job.id,
|
|
5729
|
-
flow_id: data.flow.id,
|
|
5730
|
-
flow_version: data.flow.version
|
|
5731
|
-
},
|
|
5732
5729
|
flow: data.flow,
|
|
5733
5730
|
title: `Applying for “${data.job.title}”`,
|
|
5734
|
-
flowKeys: [data.job.id]
|
|
5731
|
+
flowKeys: [data.job.id],
|
|
5732
|
+
...additionalProperties,
|
|
5733
|
+
analytics: {
|
|
5734
|
+
customProperties: {
|
|
5735
|
+
job_id: data.job.id,
|
|
5736
|
+
flow_id: data.flow.id,
|
|
5737
|
+
flow_version: data.flow.version,
|
|
5738
|
+
...(_a = additionalProperties == null ? void 0 : additionalProperties.analytics) == null ? void 0 : _a.customProperties
|
|
5739
|
+
}
|
|
5740
|
+
}
|
|
5735
5741
|
};
|
|
5736
5742
|
}),
|
|
5737
|
-
fetchFlowById: async (flowId) => apiClient.fetch(`/flow/id/${flowId}`).then((res) => {
|
|
5743
|
+
fetchFlowById: async (flowId, additionalProperties) => apiClient.fetch(`/flow/id/${flowId}`).then((res) => {
|
|
5744
|
+
var _a;
|
|
5738
5745
|
const data = parse$1(FlowByIdPayloadSchema, res);
|
|
5739
5746
|
return {
|
|
5740
5747
|
flow: data.flow,
|
|
5741
|
-
context: {
|
|
5742
|
-
flow_id: data.flow.id,
|
|
5743
|
-
flow_version: data.flow.version
|
|
5744
|
-
},
|
|
5745
5748
|
title: "Chatbot",
|
|
5746
|
-
flowKeys: []
|
|
5749
|
+
flowKeys: [],
|
|
5750
|
+
...additionalProperties,
|
|
5751
|
+
analytics: {
|
|
5752
|
+
customProperties: {
|
|
5753
|
+
...(_a = additionalProperties == null ? void 0 : additionalProperties.analytics) == null ? void 0 : _a.customProperties,
|
|
5754
|
+
flow_id: data.flow.id,
|
|
5755
|
+
flow_version: data.flow.version
|
|
5756
|
+
}
|
|
5757
|
+
}
|
|
5747
5758
|
};
|
|
5748
5759
|
}),
|
|
5749
5760
|
open: async (params) => {
|
|
@@ -5759,12 +5770,12 @@ const chatbotPlugin = ({
|
|
|
5759
5770
|
state: "loading"
|
|
5760
5771
|
};
|
|
5761
5772
|
params.then(async (params2) => {
|
|
5762
|
-
const parsedParams = parse$1(StartFlowSchema, params2);
|
|
5763
5773
|
validateContext({
|
|
5764
|
-
context:
|
|
5765
|
-
schema:
|
|
5774
|
+
context: params2.context || {},
|
|
5775
|
+
schema: params2.flow.context_schema,
|
|
5776
|
+
logger
|
|
5766
5777
|
});
|
|
5767
|
-
store.startFlow(
|
|
5778
|
+
store.startFlow(params2);
|
|
5768
5779
|
}).catch((error) => {
|
|
5769
5780
|
const message = error instanceof Error ? error.message : "An error occurred";
|
|
5770
5781
|
store.current$.value = {
|
|
@@ -5774,8 +5785,9 @@ const chatbotPlugin = ({
|
|
|
5774
5785
|
});
|
|
5775
5786
|
} else {
|
|
5776
5787
|
validateContext({
|
|
5777
|
-
context: params.context,
|
|
5778
|
-
schema: params.flow.context_schema
|
|
5788
|
+
context: params.context || {},
|
|
5789
|
+
schema: params.flow.context_schema,
|
|
5790
|
+
logger
|
|
5779
5791
|
});
|
|
5780
5792
|
store.startFlow(params);
|
|
5781
5793
|
}
|
|
@@ -4855,7 +4855,7 @@ const initialiseFlowStateData = () => ({
|
|
|
4855
4855
|
sequence: 0,
|
|
4856
4856
|
flowSessionId: genRandomId()
|
|
4857
4857
|
});
|
|
4858
|
-
const db = typeof window === "undefined" ? void 0 : openDB("inploi-chatbot",
|
|
4858
|
+
const db = typeof window === "undefined" ? void 0 : openDB("inploi-chatbot", 3, {
|
|
4859
4859
|
upgrade(db2) {
|
|
4860
4860
|
try {
|
|
4861
4861
|
db2.deleteObjectStore("state");
|
|
@@ -4957,9 +4957,10 @@ const store = {
|
|
|
4957
4957
|
inputHeight$: a(53),
|
|
4958
4958
|
startFlow: async ({
|
|
4959
4959
|
flow,
|
|
4960
|
-
context,
|
|
4960
|
+
context = {},
|
|
4961
4961
|
flowKeys,
|
|
4962
|
-
title
|
|
4962
|
+
title,
|
|
4963
|
+
analytics
|
|
4963
4964
|
}) => {
|
|
4964
4965
|
const data = await idb.getStateData(flow, flowKeys) ?? initialiseFlowStateData();
|
|
4965
4966
|
const startedFlow = {
|
|
@@ -4972,7 +4973,8 @@ const store = {
|
|
|
4972
4973
|
nodes: flow.nodes,
|
|
4973
4974
|
build: flow.build,
|
|
4974
4975
|
context,
|
|
4975
|
-
title
|
|
4976
|
+
title,
|
|
4977
|
+
analytics
|
|
4976
4978
|
};
|
|
4977
4979
|
currentFlow.value = {
|
|
4978
4980
|
state: "loaded",
|
|
@@ -5298,7 +5300,7 @@ const StatusBar = ({
|
|
|
5298
5300
|
})
|
|
5299
5301
|
});
|
|
5300
5302
|
};
|
|
5301
|
-
const ChatbotBody = M(() => import("./chatbot-body-
|
|
5303
|
+
const ChatbotBody = M(() => import("./chatbot-body-f8b01a37.js").then((module) => module.ChatbotBody));
|
|
5302
5304
|
const chatbotContentClass = cva("selection:bg-accent-4 selection:text-accent-12 fixed bottom-2 left-2 right-2 isolate mx-auto max-h-full max-w-[450px] focus:outline-none", {
|
|
5303
5305
|
variants: {
|
|
5304
5306
|
view: {
|
|
@@ -5325,7 +5327,7 @@ const Chatbot = ({
|
|
|
5325
5327
|
open: isApplying,
|
|
5326
5328
|
modal: isApplying,
|
|
5327
5329
|
children: [o($5d3850c4d0b4e6c7$export$c6fdb837b070b4ff, {
|
|
5328
|
-
class: "bg-overlay animate-fade-in pointer-events-none fixed inset-0"
|
|
5330
|
+
class: "bg-overlay animate-fade-in pointer-events-none fixed inset-0 isolate"
|
|
5329
5331
|
}), o($5d3850c4d0b4e6c7$export$7c6e2c02157bb7d2, {
|
|
5330
5332
|
forceMount: true,
|
|
5331
5333
|
asChild: true,
|
|
@@ -5394,12 +5396,6 @@ const FlowByJobPayloadSchema = object({
|
|
|
5394
5396
|
title: string()
|
|
5395
5397
|
})
|
|
5396
5398
|
});
|
|
5397
|
-
const StartFlowSchema = object({
|
|
5398
|
-
flow: FlowSchema,
|
|
5399
|
-
title: string(),
|
|
5400
|
-
flowKeys: array(string()),
|
|
5401
|
-
context: record(string(), any())
|
|
5402
|
-
});
|
|
5403
5399
|
const tailwind = "#isdk {\n position: relative;\n z-index: 99999;\n font-size: 16px;\n font-family: sans-serif;\n\n /* Lowest colour */\n --i-lowest: 0 0% 100%;\n\n /** Error colours */\n --i-e-1: 340 100% 99%;\n --i-e-2: 353 100% 98%;\n --i-e-3: 351 91% 96%;\n --i-e-4: 351 100% 93%;\n --i-e-5: 350 100% 90%;\n --i-e-6: 351 80% 86%;\n --i-e-7: 349 68% 81%;\n --i-e-8: 348 61% 74%;\n --i-e-9: 348 75% 59%;\n --i-e-10: 347 70% 55%;\n --i-e-11: 345 70% 47%;\n --i-e-12: 344 63% 24%;\n\n --header-height: 44px;\n\n --content-height: calc(100vh - 64px);\n --content-height: calc(100svh - 64px);\n}\n\n @media screen and (min-width: 768px) {#isdk {\n --content-height: min(640px, calc(100vh - 16px));\n --content-height: min(640px, calc(100svh - 16px))\n}\n }\n\n #isdk {\n --tw-content: '';\n font-family:\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Roboto,\n Oxygen,\n Ubuntu,\n Cantarell,\n Open Sans,\n Helvetica Neue,\n sans-serif;\n}\n\n #isdk * {\n font-weight: inherit;\n font-style: inherit;\n box-sizing: border-box;\n font-family: inherit;\n border-style: solid;\n border-width: 0;\n -webkit-tap-highlight-color: transparent;\n }\n\n #isdk ::before,\n #isdk ::after {\n box-sizing: border-box;\n }\n\n #isdk :is(ul, ol) {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n #isdk :is(p) {\n margin: 0;\n padding: 0;\n }\n\n #isdk :is(li) {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n #isdk :is(button) {\n margin: 0;\n padding: 0;\n border: unset;\n background: unset;\n text-align: unset;\n }\n\n #isdk *, #isdk ::before, #isdk ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n #isdk ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n #isdk .container {\n width: 100%;\n}\n\n @media (min-width: 640px) {\n\n #isdk .container {\n max-width: 640px;\n }\n}\n\n @media (min-width: 768px) {\n\n #isdk .container {\n max-width: 768px;\n }\n}\n\n @media (min-width: 1024px) {\n\n #isdk .container {\n max-width: 1024px;\n }\n}\n\n @media (min-width: 1280px) {\n\n #isdk .container {\n max-width: 1280px;\n }\n}\n\n @media (min-width: 1536px) {\n\n #isdk .container {\n max-width: 1536px;\n }\n}\n\n #isdk .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n #isdk .pointer-events-none {\n pointer-events: none;\n}\n\n #isdk .visible {\n visibility: visible;\n}\n\n #isdk .collapse {\n visibility: collapse;\n}\n\n #isdk .static {\n position: static;\n}\n\n #isdk .fixed {\n position: fixed;\n}\n\n #isdk .absolute {\n position: absolute;\n}\n\n #isdk .relative {\n position: relative;\n}\n\n #isdk .sticky {\n position: sticky;\n}\n\n #isdk .inset-0 {\n inset: 0px;\n}\n\n #isdk .bottom-0 {\n bottom: 0px;\n}\n\n #isdk .bottom-2 {\n bottom: 0.5rem;\n}\n\n #isdk .bottom-2\\.5 {\n bottom: 0.625rem;\n}\n\n #isdk .left-0 {\n left: 0px;\n}\n\n #isdk .left-2 {\n left: 0.5rem;\n}\n\n #isdk .right-0 {\n right: 0px;\n}\n\n #isdk .right-2 {\n right: 0.5rem;\n}\n\n #isdk .right-3 {\n right: 0.75rem;\n}\n\n #isdk .top-0 {\n top: 0px;\n}\n\n #isdk .isolate {\n isolation: isolate;\n}\n\n #isdk .z-20 {\n z-index: 20;\n}\n\n #isdk .m-0 {\n margin: 0px;\n}\n\n #isdk .mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n #isdk .mb-1 {\n margin-bottom: 0.25rem;\n}\n\n #isdk .ml-auto {\n margin-left: auto;\n}\n\n #isdk .mt-auto {\n margin-top: auto;\n}\n\n #isdk .block {\n display: block;\n}\n\n #isdk .inline-block {\n display: inline-block;\n}\n\n #isdk .inline {\n display: inline;\n}\n\n #isdk .flex {\n display: flex;\n}\n\n #isdk .inline-flex {\n display: inline-flex;\n}\n\n #isdk .table {\n display: table;\n}\n\n #isdk .table-row {\n display: table-row;\n}\n\n #isdk .flow-root {\n display: flow-root;\n}\n\n #isdk .grid {\n display: grid;\n}\n\n #isdk .inline-grid {\n display: inline-grid;\n}\n\n #isdk .contents {\n display: contents;\n}\n\n #isdk .list-item {\n display: list-item;\n}\n\n #isdk .\\!hidden {\n display: none !important;\n}\n\n #isdk .hidden {\n display: none;\n}\n\n #isdk .h-1 {\n height: 0.25rem;\n}\n\n #isdk .h-1\\.5 {\n height: 0.375rem;\n}\n\n #isdk .h-16 {\n height: 4rem;\n}\n\n #isdk .h-4 {\n height: 1rem;\n}\n\n #isdk .h-48 {\n height: 12rem;\n}\n\n #isdk .h-8 {\n height: 2rem;\n}\n\n #isdk .h-\\[3px\\] {\n height: 3px;\n}\n\n #isdk .h-\\[var\\(--content-height\\)\\] {\n height: var(--content-height);\n}\n\n #isdk .h-\\[var\\(--header-height\\)\\] {\n height: var(--header-height);\n}\n\n #isdk .h-full {\n height: 100%;\n}\n\n #isdk .max-h-full {\n max-height: 100%;\n}\n\n #isdk .min-h-\\[36px\\] {\n min-height: 36px;\n}\n\n #isdk .w-1 {\n width: 0.25rem;\n}\n\n #isdk .w-1\\.5 {\n width: 0.375rem;\n}\n\n #isdk .w-16 {\n width: 4rem;\n}\n\n #isdk .w-24 {\n width: 6rem;\n}\n\n #isdk .w-4 {\n width: 1rem;\n}\n\n #isdk .w-8 {\n width: 2rem;\n}\n\n #isdk .w-full {\n width: 100%;\n}\n\n #isdk .min-w-0 {\n min-width: 0px;\n}\n\n #isdk .min-w-\\[2rem\\] {\n min-width: 2rem;\n}\n\n #isdk .max-w-\\[450px\\] {\n max-width: 450px;\n}\n\n #isdk .max-w-\\[min\\(100\\%\\2c 24rem\\)\\] {\n max-width: min(100%,24rem);\n}\n\n #isdk .max-w-full {\n max-width: 100%;\n}\n\n #isdk .flex-1 {\n flex: 1 1 0%;\n}\n\n #isdk .flex-none {\n flex: none;\n}\n\n #isdk .flex-shrink {\n flex-shrink: 1;\n}\n\n #isdk .flex-shrink-0 {\n flex-shrink: 0;\n}\n\n #isdk .shrink {\n flex-shrink: 1;\n}\n\n #isdk .flex-grow {\n flex-grow: 1;\n}\n\n #isdk .grow {\n flex-grow: 1;\n}\n\n #isdk .border-collapse {\n border-collapse: collapse;\n}\n\n #isdk .translate-y-full {\n --tw-translate-y: 100%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n #isdk .transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n @keyframes bounce {\n\n 0%, 100% {\n transform: translateY(-25%);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n transform: none;\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n #isdk .animate-bounce {\n animation: bounce 1s infinite;\n}\n\n @keyframes bubble-in {\n\n from {\n transform: translateY(100%) scale(0.8);\n opacity: 0;\n }\n\n to {\n transform: translateY(0) scale(1);\n opacity: 1;\n }\n}\n\n #isdk .animate-bubble-in {\n animation: bubble-in 300ms cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n @keyframes fade-in {\n\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n #isdk .animate-fade-in {\n animation: fade-in 500ms cubic-bezier(0.16, 1, 0.3, 1) both;\n}\n\n @keyframes maximise {\n\n from {\n transform: translateY(50%);\n height: var(--header-height);\n }\n\n to {\n transform: translateY(0);\n height: var(--content-height);\n }\n}\n\n #isdk .animate-maximise {\n animation: maximise 400ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n @keyframes slide-in-bottom {\n\n from {\n transform: translateY(-100%);\n }\n\n to {\n transform: translateY(0);\n }\n}\n\n #isdk .animate-slide-in-bottom {\n animation: slide-in-bottom 300ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n #isdk .cursor-pointer {\n cursor: pointer;\n}\n\n #isdk .select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n #isdk .resize {\n resize: both;\n}\n\n #isdk .appearance-none {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n #isdk .flex-col {\n flex-direction: column;\n}\n\n #isdk .flex-wrap {\n flex-wrap: wrap;\n}\n\n #isdk .items-center {\n align-items: center;\n}\n\n #isdk .items-stretch {\n align-items: stretch;\n}\n\n #isdk .justify-end {\n justify-content: flex-end;\n}\n\n #isdk .justify-center {\n justify-content: center;\n}\n\n #isdk .gap-0 {\n gap: 0px;\n}\n\n #isdk .gap-1 {\n gap: 0.25rem;\n}\n\n #isdk .gap-1\\.5 {\n gap: 0.375rem;\n}\n\n #isdk .gap-2 {\n gap: 0.5rem;\n}\n\n #isdk .gap-3 {\n gap: 0.75rem;\n}\n\n #isdk .gap-4 {\n gap: 1rem;\n}\n\n #isdk .gap-px {\n gap: 1px;\n}\n\n #isdk .overflow-hidden {\n overflow: hidden;\n}\n\n #isdk .overflow-y-auto {\n overflow-y: auto;\n}\n\n #isdk .overflow-y-scroll {\n overflow-y: scroll;\n}\n\n #isdk .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n #isdk .break-words {\n overflow-wrap: break-word;\n}\n\n #isdk .rounded {\n border-radius: 0.25rem;\n}\n\n #isdk .rounded-2xl {\n border-radius: 1rem;\n}\n\n #isdk .rounded-3xl {\n border-radius: 1.5rem;\n}\n\n #isdk .rounded-\\[18px\\] {\n border-radius: 18px;\n}\n\n #isdk .rounded-full {\n border-radius: 9999px;\n}\n\n #isdk .rounded-lg {\n border-radius: 0.5rem;\n}\n\n #isdk .rounded-md {\n border-radius: 0.375rem;\n}\n\n #isdk .rounded-xl {\n border-radius: 0.75rem;\n}\n\n #isdk .rounded-b-3xl {\n border-bottom-right-radius: 1.5rem;\n border-bottom-left-radius: 1.5rem;\n}\n\n #isdk .rounded-bl-md {\n border-bottom-left-radius: 0.375rem;\n}\n\n #isdk .rounded-br-md {\n border-bottom-right-radius: 0.375rem;\n}\n\n #isdk .border {\n border-width: 1px;\n}\n\n #isdk .border-b {\n border-bottom-width: 1px;\n}\n\n #isdk .border-t {\n border-top-width: 1px;\n}\n\n #isdk .border-solid {\n border-style: solid;\n}\n\n #isdk .border-dashed {\n border-style: dashed;\n}\n\n #isdk .border-accent-9 {\n border-color: var(--i-color-a-9);\n}\n\n #isdk .border-divider {\n border-color: var(--i-color-divider);\n}\n\n #isdk .border-neutral-5 {\n border-color: var(--i-color-n-5);\n}\n\n #isdk .border-neutral-8 {\n border-color: var(--i-color-n-8);\n}\n\n #isdk .border-transparent {\n border-color: transparent;\n}\n\n #isdk .border-b-neutral-3 {\n border-bottom-color: var(--i-color-n-3);\n}\n\n #isdk .border-b-neutral-5 {\n border-bottom-color: var(--i-color-n-5);\n}\n\n #isdk .border-b-transparent {\n border-bottom-color: transparent;\n}\n\n #isdk .bg-accent-1 {\n background-color: var(--i-color-a-1);\n}\n\n #isdk .bg-accent-3 {\n background-color: var(--i-color-a-3);\n}\n\n #isdk .bg-accent-9 {\n background-color: var(--i-color-a-9);\n}\n\n #isdk .bg-bubble-weak-bg {\n background-color: var(--i-bubble-weak-bg);\n}\n\n #isdk .bg-lowest {\n background-color: var(--i-color-lowest);\n}\n\n #isdk .bg-neutral-1 {\n background-color: var(--i-color-n-1);\n}\n\n #isdk .bg-neutral-2 {\n background-color: var(--i-color-n-2);\n}\n\n #isdk .bg-neutral-3 {\n background-color: var(--i-color-n-3);\n}\n\n #isdk .bg-overlay {\n background-color: var(--i-overlay-bg);\n}\n\n #isdk .bg-statusbar {\n background-color: var(--i-status-bar-bg);\n}\n\n #isdk .bg-transparent {\n background-color: transparent;\n}\n\n #isdk .bg-none {\n background-image: none;\n}\n\n #isdk .p-1 {\n padding: 0.25rem;\n}\n\n #isdk .p-1\\.5 {\n padding: 0.375rem;\n}\n\n #isdk .p-2 {\n padding: 0.5rem;\n}\n\n #isdk .p-2\\.5 {\n padding: 0.625rem;\n}\n\n #isdk .p-4 {\n padding: 1rem;\n}\n\n #isdk .px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n\n #isdk .px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n\n #isdk .px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n\n #isdk .px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n\n #isdk .px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n #isdk .px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n\n #isdk .py-0 {\n padding-top: 0px;\n padding-bottom: 0px;\n}\n\n #isdk .py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n\n #isdk .py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n\n #isdk .py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n\n #isdk .py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n #isdk .py-2\\.5 {\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n}\n\n #isdk .py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n\n #isdk .py-\\[6px\\] {\n padding-top: 6px;\n padding-bottom: 6px;\n}\n\n #isdk .pb-2 {\n padding-bottom: 0.5rem;\n}\n\n #isdk .pb-6 {\n padding-bottom: 1.5rem;\n}\n\n #isdk .pl-1 {\n padding-left: 0.25rem;\n}\n\n #isdk .pl-1\\.5 {\n padding-left: 0.375rem;\n}\n\n #isdk .pl-2 {\n padding-left: 0.5rem;\n}\n\n #isdk .pl-4 {\n padding-left: 1rem;\n}\n\n #isdk .pr-1 {\n padding-right: 0.25rem;\n}\n\n #isdk .pr-2 {\n padding-right: 0.5rem;\n}\n\n #isdk .pr-2\\.5 {\n padding-right: 0.625rem;\n}\n\n #isdk .pr-3 {\n padding-right: 0.75rem;\n}\n\n #isdk .pr-4 {\n padding-right: 1rem;\n}\n\n #isdk .pt-3 {\n padding-top: 0.75rem;\n}\n\n #isdk .pt-5 {\n padding-top: 1.25rem;\n}\n\n #isdk .pt-\\[calc\\(var\\(--header-height\\)\\+1rem\\)\\] {\n padding-top: calc(var(--header-height) + 1rem);\n}\n\n #isdk .text-center {\n text-align: center;\n}\n\n #isdk .text-right {\n text-align: right;\n}\n\n #isdk .text-justify {\n text-align: justify;\n}\n\n #isdk .text-\\[10px\\] {\n font-size: 10px;\n}\n\n #isdk .text-\\[11px\\] {\n font-size: 11px;\n}\n\n #isdk .text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n\n #isdk .text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n\n #isdk .text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n\n #isdk .font-bold {\n font-weight: 700;\n}\n\n #isdk .font-medium {\n font-weight: 500;\n}\n\n #isdk .uppercase {\n text-transform: uppercase;\n}\n\n #isdk .lowercase {\n text-transform: lowercase;\n}\n\n #isdk .capitalize {\n text-transform: capitalize;\n}\n\n #isdk .italic {\n font-style: italic;\n}\n\n #isdk .ordinal {\n --tw-ordinal: ordinal;\n font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);\n}\n\n #isdk .leading-3 {\n line-height: .75rem;\n}\n\n #isdk .leading-snug {\n line-height: 1.375;\n}\n\n #isdk .tracking-\\[-0\\.01em\\] {\n letter-spacing: -0.01em;\n}\n\n #isdk .tracking-tight {\n letter-spacing: -0.025em;\n}\n\n #isdk .tracking-wide {\n letter-spacing: 0.025em;\n}\n\n #isdk .tracking-widest {\n letter-spacing: 0.1em;\n}\n\n #isdk .text-\\[\\#4CAF50\\] {\n --tw-text-opacity: 1;\n color: rgb(76 175 80 / var(--tw-text-opacity));\n}\n\n #isdk .text-\\[\\#FFC107\\] {\n --tw-text-opacity: 1;\n color: rgb(255 193 7 / var(--tw-text-opacity));\n}\n\n #isdk .text-accent-11 {\n color: var(--i-color-a-11);\n}\n\n #isdk .text-accent-12 {\n color: var(--i-color-a-12);\n}\n\n #isdk .text-accent-9 {\n color: var(--i-color-a-9);\n}\n\n #isdk .text-error-11 {\n color: var(--i-color-e-11);\n}\n\n #isdk .text-error-9 {\n color: var(--i-color-e-9);\n}\n\n #isdk .text-interactive-copy {\n color: var(--i-interactive-copy);\n}\n\n #isdk .text-neutral-10 {\n color: var(--i-color-n-10);\n}\n\n #isdk .text-neutral-11 {\n color: var(--i-color-n-11);\n}\n\n #isdk .text-neutral-12 {\n color: var(--i-color-n-12);\n}\n\n #isdk .text-neutral-6 {\n color: var(--i-color-n-6);\n}\n\n #isdk .text-neutral-8 {\n color: var(--i-color-n-8);\n}\n\n #isdk .text-neutral-9 {\n color: var(--i-color-n-9);\n}\n\n #isdk .text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n #isdk .underline {\n text-decoration-line: underline;\n}\n\n #isdk .no-underline {\n text-decoration-line: none;\n}\n\n #isdk .underline-offset-2 {\n text-underline-offset: 2px;\n}\n\n #isdk .caret-accent-9 {\n caret-color: var(--i-color-a-9);\n}\n\n #isdk .shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .shadow-surface-md {\n --tw-shadow: 0px 3px 3px 0px oklch(0% 0 0 / 0.03), 0px 6px 4px 0px oklch(0% 0 0 / 0.02), 0px 6px 4px 0px oklch(0% 0 0 / 0.01);\n --tw-shadow-colored: 0px 3px 3px 0px var(--tw-shadow-color), 0px 6px 4px 0px var(--tw-shadow-color), 0px 6px 4px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .shadow-surface-sm {\n --tw-shadow: 0px 3px 3px 0px oklch(0% 0 0 / 0.03), 0px 4px 4px 0px oklch(0% 0 0 / 0.02);\n --tw-shadow-colored: 0px 3px 3px 0px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .shadow-bubble-strong-shadow {\n --tw-shadow-color: var(--i-bubble-strong-shadow);\n --tw-shadow: var(--tw-shadow-colored);\n}\n\n #isdk .outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n #isdk .outline {\n outline-style: solid;\n}\n\n #isdk .outline-1 {\n outline-width: 1px;\n}\n\n #isdk .outline-2 {\n outline-width: 2px;\n}\n\n #isdk .outline-accent-4 {\n outline-color: var(--i-color-a-4);\n}\n\n #isdk .outline-bubble-weak {\n outline-color: var(--i-bubble-weak-outline);\n}\n\n #isdk .outline-divider {\n outline-color: var(--i-color-divider);\n}\n\n #isdk .outline-neutral-3 {\n outline-color: var(--i-color-n-3);\n}\n\n #isdk .outline-neutral-6 {\n outline-color: var(--i-color-n-6);\n}\n\n #isdk .ring-0 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .ring-1 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .ring-2 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .ring-accent-6 {\n --tw-ring-color: var(--i-color-a-6);\n}\n\n #isdk .ring-divider {\n --tw-ring-color: var(--i-color-divider);\n}\n\n #isdk .ring-lowest {\n --tw-ring-color: var(--i-color-lowest);\n}\n\n #isdk .ring-transparent {\n --tw-ring-color: transparent;\n}\n\n #isdk .ring-offset-\\[1\\.5px\\] {\n --tw-ring-offset-width: 1.5px;\n}\n\n #isdk .ring-offset-neutral-1 {\n --tw-ring-offset-color: var(--i-color-n-1);\n}\n\n #isdk .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .drop-shadow-\\[0_1\\.5px_var\\(--i-color-n-1\\)\\] {\n --tw-drop-shadow: drop-shadow(0 1.5px var(--i-color-n-1));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .invert {\n --tw-invert: invert(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .sepia {\n --tw-sepia: sepia(100%);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n #isdk .backdrop-blur-md {\n --tw-backdrop-blur: blur(12px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #isdk .backdrop-blur-xl {\n --tw-backdrop-blur: blur(24px);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #isdk .backdrop-saturate-150 {\n --tw-backdrop-saturate: saturate(1.5);\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #isdk .backdrop-filter {\n -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n #isdk .transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #isdk .transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #isdk .transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n #isdk .duration-100 {\n transition-duration: 100ms;\n}\n\n #isdk .duration-1000 {\n transition-duration: 1000ms;\n}\n\n #isdk .duration-300 {\n transition-duration: 300ms;\n}\n\n #isdk .duration-700 {\n transition-duration: 700ms;\n}\n\n #isdk .ease-expo-out {\n transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n #isdk .ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n #isdk .will-change-\\[height\\] {\n will-change: height;\n}\n\n #isdk .text-wrap-balance {\n text-wrap: balance;\n}\n\n #isdk .fr {\n outline: none;\n}\n\n #isdk .fr:focus {\n outline: none;\n}\n\n #isdk .fr:focus-visible {\n outline: none;\n --tw-ring-offset-width: 1px;\n --tw-ring-offset-color: var(--i-color-lowest);\n --tw-ring-opacity: 1;\n --tw-ring-color: var(--i-color-a-9);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .gutter-stable {\n scrollbar-gutter: stable;\n}\n\n #isdk .hide-scrollbars::-webkit-scrollbar {\n display: none;\n}\n\n #isdk .hide-scrollbars {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n\n #isdk .touch-hitbox::before {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n height: 100%;\n min-height: 44px;\n min-width: 44px;\n z-index: 9999;\n}\n\n #isdk .\\[-webkit-outer-spin-button\\:none\\] {\n -webkit-outer-spin-button: none;\n}\n\n #isdk .\\[a-zA-Z0-9-_\\:\\.\\$\\@\\?\\] {\n a-z-a--z0-9-_: .$@?;\n}\n\n #isdk .\\[grid-template-columns\\:min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n}\n\n #isdk .\\[text-wrap\\:pretty\\] {\n text-wrap: pretty;\n}\n\n #isdk .selection\\:bg-accent-4 *::-moz-selection {\n background-color: var(--i-color-a-4);\n}\n\n #isdk .selection\\:bg-accent-4 *::selection {\n background-color: var(--i-color-a-4);\n}\n\n #isdk .selection\\:bg-transparent *::-moz-selection {\n background-color: transparent;\n}\n\n #isdk .selection\\:bg-transparent *::selection {\n background-color: transparent;\n}\n\n #isdk .selection\\:text-accent-12 *::-moz-selection {\n color: var(--i-color-a-12);\n}\n\n #isdk .selection\\:text-accent-12 *::selection {\n color: var(--i-color-a-12);\n}\n\n #isdk .selection\\:bg-accent-4::-moz-selection {\n background-color: var(--i-color-a-4);\n}\n\n #isdk .selection\\:bg-accent-4::selection {\n background-color: var(--i-color-a-4);\n}\n\n #isdk .selection\\:bg-transparent::-moz-selection {\n background-color: transparent;\n}\n\n #isdk .selection\\:bg-transparent::selection {\n background-color: transparent;\n}\n\n #isdk .selection\\:text-accent-12::-moz-selection {\n color: var(--i-color-a-12);\n}\n\n #isdk .selection\\:text-accent-12::selection {\n color: var(--i-color-a-12);\n}\n\n #isdk .placeholder\\:text-neutral-10::-moz-placeholder {\n color: var(--i-color-n-10);\n}\n\n #isdk .placeholder\\:text-neutral-10::placeholder {\n color: var(--i-color-n-10);\n}\n\n #isdk .placeholder\\:text-neutral-8::-moz-placeholder {\n color: var(--i-color-n-8);\n}\n\n #isdk .placeholder\\:text-neutral-8::placeholder {\n color: var(--i-color-n-8);\n}\n\n #isdk .autofill\\:shadow-\\[inset_0_0_0_1000px_hsl\\(210_16\\.7\\%_97\\.6\\%\\)\\]:-webkit-autofill {\n --tw-shadow: inset 0 0 0 1000px hsl(210 16.7% 97.6%);\n --tw-shadow-colored: inset 0 0 0 1000px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .autofill\\:shadow-\\[inset_0_0_0_1000px_hsl\\(210_16\\.7\\%_97\\.6\\%\\)\\]:autofill {\n --tw-shadow: inset 0 0 0 1000px hsl(210 16.7% 97.6%);\n --tw-shadow-colored: inset 0 0 0 1000px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n #isdk .hover\\:border-accent-10:hover {\n border-color: var(--i-color-a-10);\n}\n\n #isdk .hover\\:border-neutral-5:hover {\n border-color: var(--i-color-n-5);\n}\n\n #isdk .hover\\:bg-accent-10:hover {\n background-color: var(--i-color-a-10);\n}\n\n #isdk .hover\\:bg-interactive-bg-hover:hover {\n background-color: var(--i-interactive-bg-hover);\n}\n\n #isdk .hover\\:bg-neutral-2:hover {\n background-color: var(--i-color-n-2);\n}\n\n #isdk .hover\\:bg-neutral-3:hover {\n background-color: var(--i-color-n-3);\n}\n\n #isdk .hover\\:bg-neutral-4:hover {\n background-color: var(--i-color-n-4);\n}\n\n #isdk .hover\\:text-interactive-copy-hover:hover {\n color: var(--i-interactive-copy-hover);\n}\n\n #isdk .hover\\:text-neutral-12:hover {\n color: var(--i-color-n-12);\n}\n\n #isdk .hover\\:ring-accent-8:hover {\n --tw-ring-color: var(--i-color-a-8);\n}\n\n #isdk .focus\\:bg-neutral-5:focus {\n background-color: var(--i-color-n-5);\n}\n\n #isdk .focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n #isdk .focus-visible\\:bg-neutral-3:focus-visible {\n background-color: var(--i-color-n-3);\n}\n\n #isdk .focus-visible\\:outline-2:focus-visible {\n outline-width: 2px;\n}\n\n #isdk .focus-visible\\:outline-accent-7:focus-visible {\n outline-color: var(--i-color-a-7);\n}\n\n #isdk .focus-visible\\:outline-accent-8:focus-visible {\n outline-color: var(--i-color-a-8);\n}\n\n #isdk .focus-visible\\:ring-4:focus-visible {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .focus-visible\\:ring-offset-2:focus-visible {\n --tw-ring-offset-width: 2px;\n}\n\n #isdk .active\\:border-submit-bg-active:active {\n border-color: var(--i-submit-button-bg-active);\n}\n\n #isdk .active\\:bg-accent-10:active {\n background-color: var(--i-color-a-10);\n}\n\n #isdk .active\\:bg-accent-2:active {\n background-color: var(--i-color-a-2);\n}\n\n #isdk .active\\:bg-interactive-bg-active:active {\n background-color: var(--i-interactive-bg-active);\n}\n\n #isdk .active\\:bg-submit-bg-active:active {\n background-color: var(--i-submit-button-bg-active);\n}\n\n #isdk .active\\:text-accent-10:active {\n color: var(--i-color-a-10);\n}\n\n #isdk .active\\:text-accent-11:active {\n color: var(--i-color-a-11);\n}\n\n #isdk .active\\:text-interactive-copy-active:active {\n color: var(--i-interactive-copy-active);\n}\n\n #isdk .active\\:outline-neutral-8:active {\n outline-color: var(--i-color-n-8);\n}\n\n #isdk .active\\:ring-2:active {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .active\\:ring-accent-7:active {\n --tw-ring-color: var(--i-color-a-7);\n}\n\n #isdk .active\\:ring-offset-2:active {\n --tw-ring-offset-width: 2px;\n}\n\n #isdk .disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n #isdk .disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n\n #isdk .peer:checked ~ .peer-checked\\:bg-accent-2 {\n background-color: var(--i-color-a-2);\n}\n\n #isdk .peer:checked ~ .peer-checked\\:text-accent-9 {\n color: var(--i-color-a-9);\n}\n\n #isdk .peer:checked ~ .peer-checked\\:outline-accent-7 {\n outline-color: var(--i-color-a-7);\n}\n\n #isdk .peer:focus-visible ~ .peer-focus-visible\\:ring-4 {\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n #isdk .peer:focus-visible ~ .peer-focus-visible\\:ring-accent-9 {\n --tw-ring-color: var(--i-color-a-9);\n}\n\n #isdk .peer:focus-visible ~ .peer-focus-visible\\:ring-offset-accent-7 {\n --tw-ring-offset-color: var(--i-color-a-7);\n}\n\n @media (pointer: coarse) {\n\n #isdk .pointer-coarse\\:touch-hitbox\\:\\:before::before {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n height: 100%;\n min-height: 44px;\n min-width: 44px;\n z-index: 9999;\n }\n}\n\n #isdk .\\[\\&\\:has\\(\\+\\*\\>input\\:focus\\)\\]\\:text-neutral-11:has(+*>input:focus) {\n color: var(--i-color-n-11);\n}\n";
|
|
5404
5400
|
const CHATBOT_ELEMENT_ID = "isdk";
|
|
5405
5401
|
const ERROR_MESSAGES = {
|
|
@@ -5412,8 +5408,10 @@ const createChatbotDomManager = () => {
|
|
|
5412
5408
|
return {
|
|
5413
5409
|
getOrCreateChatbotElement: () => {
|
|
5414
5410
|
const chatbotElement = document.getElementById(CHATBOT_ELEMENT_ID);
|
|
5415
|
-
if (chatbotElement)
|
|
5411
|
+
if (chatbotElement) {
|
|
5412
|
+
document.body.appendChild(chatbotElement);
|
|
5416
5413
|
return chatbotElement;
|
|
5414
|
+
}
|
|
5417
5415
|
const newElement = document.createElement("div");
|
|
5418
5416
|
document.body.appendChild(newElement);
|
|
5419
5417
|
newElement.id = CHATBOT_ELEMENT_ID;
|
|
@@ -5652,7 +5650,8 @@ ${tokenCss.concat(tokenCss).join("\n")}
|
|
|
5652
5650
|
};
|
|
5653
5651
|
const validateContext = ({
|
|
5654
5652
|
context,
|
|
5655
|
-
schema
|
|
5653
|
+
schema,
|
|
5654
|
+
logger
|
|
5656
5655
|
}) => {
|
|
5657
5656
|
if (!schema)
|
|
5658
5657
|
return;
|
|
@@ -5662,7 +5661,9 @@ const validateContext = ({
|
|
|
5662
5661
|
continue;
|
|
5663
5662
|
const value = get$1(context, key, null);
|
|
5664
5663
|
if (config.required && value === null) {
|
|
5665
|
-
|
|
5664
|
+
const error = `Configuration error in context: ${key} is required`;
|
|
5665
|
+
logger.error(error);
|
|
5666
|
+
throw new Error(error);
|
|
5666
5667
|
}
|
|
5667
5668
|
switch (config.type) {
|
|
5668
5669
|
case "number":
|
|
@@ -5720,29 +5721,39 @@ const chatbotPlugin = ({
|
|
|
5720
5721
|
/** Fetches a flow by job ID.
|
|
5721
5722
|
* @param jobId - The job ID to fetch the flow for. This is the job ID according to the **ATS**, and not the inploi job ID.
|
|
5722
5723
|
*/
|
|
5723
|
-
fetchFlowByJobId: async (jobId) => apiClient.fetch(`/flow/job/${jobId}`).then((res) => {
|
|
5724
|
+
fetchFlowByJobId: async (jobId, additionalProperties) => apiClient.fetch(`/flow/job/${jobId}`).then((res) => {
|
|
5725
|
+
var _a;
|
|
5724
5726
|
const data = parse$1(FlowByJobPayloadSchema, res);
|
|
5725
5727
|
return {
|
|
5726
|
-
context: {
|
|
5727
|
-
job_id: data.job.id,
|
|
5728
|
-
flow_id: data.flow.id,
|
|
5729
|
-
flow_version: data.flow.version
|
|
5730
|
-
},
|
|
5731
5728
|
flow: data.flow,
|
|
5732
5729
|
title: `Applying for “${data.job.title}”`,
|
|
5733
|
-
flowKeys: [data.job.id]
|
|
5730
|
+
flowKeys: [data.job.id],
|
|
5731
|
+
...additionalProperties,
|
|
5732
|
+
analytics: {
|
|
5733
|
+
customProperties: {
|
|
5734
|
+
job_id: data.job.id,
|
|
5735
|
+
flow_id: data.flow.id,
|
|
5736
|
+
flow_version: data.flow.version,
|
|
5737
|
+
...(_a = additionalProperties == null ? void 0 : additionalProperties.analytics) == null ? void 0 : _a.customProperties
|
|
5738
|
+
}
|
|
5739
|
+
}
|
|
5734
5740
|
};
|
|
5735
5741
|
}),
|
|
5736
|
-
fetchFlowById: async (flowId) => apiClient.fetch(`/flow/id/${flowId}`).then((res) => {
|
|
5742
|
+
fetchFlowById: async (flowId, additionalProperties) => apiClient.fetch(`/flow/id/${flowId}`).then((res) => {
|
|
5743
|
+
var _a;
|
|
5737
5744
|
const data = parse$1(FlowByIdPayloadSchema, res);
|
|
5738
5745
|
return {
|
|
5739
5746
|
flow: data.flow,
|
|
5740
|
-
context: {
|
|
5741
|
-
flow_id: data.flow.id,
|
|
5742
|
-
flow_version: data.flow.version
|
|
5743
|
-
},
|
|
5744
5747
|
title: "Chatbot",
|
|
5745
|
-
flowKeys: []
|
|
5748
|
+
flowKeys: [],
|
|
5749
|
+
...additionalProperties,
|
|
5750
|
+
analytics: {
|
|
5751
|
+
customProperties: {
|
|
5752
|
+
...(_a = additionalProperties == null ? void 0 : additionalProperties.analytics) == null ? void 0 : _a.customProperties,
|
|
5753
|
+
flow_id: data.flow.id,
|
|
5754
|
+
flow_version: data.flow.version
|
|
5755
|
+
}
|
|
5756
|
+
}
|
|
5746
5757
|
};
|
|
5747
5758
|
}),
|
|
5748
5759
|
open: async (params) => {
|
|
@@ -5758,12 +5769,12 @@ const chatbotPlugin = ({
|
|
|
5758
5769
|
state: "loading"
|
|
5759
5770
|
};
|
|
5760
5771
|
params.then(async (params2) => {
|
|
5761
|
-
const parsedParams = parse$1(StartFlowSchema, params2);
|
|
5762
5772
|
validateContext({
|
|
5763
|
-
context:
|
|
5764
|
-
schema:
|
|
5773
|
+
context: params2.context || {},
|
|
5774
|
+
schema: params2.flow.context_schema,
|
|
5775
|
+
logger
|
|
5765
5776
|
});
|
|
5766
|
-
store.startFlow(
|
|
5777
|
+
store.startFlow(params2);
|
|
5767
5778
|
}).catch((error) => {
|
|
5768
5779
|
const message = error instanceof Error ? error.message : "An error occurred";
|
|
5769
5780
|
store.current$.value = {
|
|
@@ -5773,8 +5784,9 @@ const chatbotPlugin = ({
|
|
|
5773
5784
|
});
|
|
5774
5785
|
} else {
|
|
5775
5786
|
validateContext({
|
|
5776
|
-
context: params.context,
|
|
5777
|
-
schema: params.flow.context_schema
|
|
5787
|
+
context: params.context || {},
|
|
5788
|
+
schema: params.flow.context_schema,
|
|
5789
|
+
logger
|
|
5778
5790
|
});
|
|
5779
5791
|
store.startFlow(params);
|
|
5780
5792
|
}
|
package/dist/interpreter.d.ts
CHANGED
|
@@ -24,11 +24,14 @@ export type ChatService = {
|
|
|
24
24
|
})['submission']>;
|
|
25
25
|
addToSubmissions: (key: string, value: FlowSubmission) => void;
|
|
26
26
|
};
|
|
27
|
-
type ChatbotInterpreterParams
|
|
27
|
+
type ChatbotInterpreterParams = {
|
|
28
28
|
apiClient: ApiClient;
|
|
29
|
-
analytics:
|
|
29
|
+
analytics: {
|
|
30
|
+
service: AnalyticsService;
|
|
31
|
+
customProperties?: Record<string, unknown>;
|
|
32
|
+
};
|
|
30
33
|
logger: Logger;
|
|
31
|
-
context:
|
|
34
|
+
context: Record<string, unknown>;
|
|
32
35
|
flow: StartedFlow;
|
|
33
36
|
getSubmissions: () => KeyToSubmissionMap | undefined;
|
|
34
37
|
chatService: ChatService;
|
|
@@ -39,7 +42,7 @@ type ChatbotInterpreterParams<TContext extends Record<string, unknown>> = {
|
|
|
39
42
|
/** When node is interpreted */
|
|
40
43
|
onInterpret?: (node: FlowNode, prevNode?: FlowNode) => void;
|
|
41
44
|
};
|
|
42
|
-
export declare const createFlowInterpreter:
|
|
45
|
+
export declare const createFlowInterpreter: ({ flow, analytics, logger, context, apiClient, getSubmissions, chatService, onFlowEnd, onInterpret, }: ChatbotInterpreterParams) => {
|
|
43
46
|
interpret: (startFromNodeId?: string) => Promise<void>;
|
|
44
47
|
undo: (nodeHistory: string[]) => {
|
|
45
48
|
removed: number;
|
package/dist/plugin-chatbot.cjs
CHANGED
package/dist/plugin-chatbot.js
CHANGED