@evelan/jexity-widget 0.2.0 → 0.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.
Files changed (90) hide show
  1. package/README.md +162 -16
  2. package/dist/index.mjs +1046 -731
  3. package/dist/index.mjs.map +1 -1
  4. package/dist/react.mjs +20 -11
  5. package/dist/react.mjs.map +1 -1
  6. package/dist/types/entries/esm.d.ts +4 -0
  7. package/dist/types/entries/esm.d.ts.map +1 -0
  8. package/dist/types/{react.d.ts → entries/react.d.ts} +1 -1
  9. package/dist/types/entries/react.d.ts.map +1 -0
  10. package/dist/types/features/chat/components/BotMessage.d.ts +6 -0
  11. package/dist/types/features/chat/components/BotMessage.d.ts.map +1 -0
  12. package/dist/types/features/chat/components/ChatInput.d.ts +3 -0
  13. package/dist/types/features/chat/components/ChatInput.d.ts.map +1 -0
  14. package/dist/types/features/chat/components/ChatScreen.d.ts +8 -0
  15. package/dist/types/features/chat/components/ChatScreen.d.ts.map +1 -0
  16. package/dist/types/features/chat/components/MessageList.d.ts +3 -0
  17. package/dist/types/features/chat/components/MessageList.d.ts.map +1 -0
  18. package/dist/types/features/chat/components/TypingIndicator.d.ts +2 -0
  19. package/dist/types/features/chat/components/TypingIndicator.d.ts.map +1 -0
  20. package/dist/types/features/chat/components/UserMessage.d.ts +6 -0
  21. package/dist/types/features/chat/components/UserMessage.d.ts.map +1 -0
  22. package/dist/types/features/chat/lib/chat.d.ts +13 -0
  23. package/dist/types/features/chat/lib/chat.d.ts.map +1 -0
  24. package/dist/types/features/home/components/HomeScreen.d.ts +14 -0
  25. package/dist/types/features/home/components/HomeScreen.d.ts.map +1 -0
  26. package/dist/types/features/selection/components/SelectionScreen.d.ts +7 -0
  27. package/dist/types/features/selection/components/SelectionScreen.d.ts.map +1 -0
  28. package/dist/types/features/ticket/components/ConfirmationScreen.d.ts +7 -0
  29. package/dist/types/features/ticket/components/ConfirmationScreen.d.ts.map +1 -0
  30. package/dist/types/features/ticket/components/FormScreen.d.ts +3 -0
  31. package/dist/types/features/ticket/components/FormScreen.d.ts.map +1 -0
  32. package/dist/types/i18n/config.d.ts +10 -0
  33. package/dist/types/i18n/config.d.ts.map +1 -0
  34. package/dist/types/i18n/index.d.ts +6 -1
  35. package/dist/types/i18n/index.d.ts.map +1 -1
  36. package/dist/types/i18n/locales/de.d.ts.map +1 -1
  37. package/dist/types/i18n/locales/en.d.ts +19 -0
  38. package/dist/types/i18n/locales/en.d.ts.map +1 -1
  39. package/dist/types/i18n/resolve-widget-locale.d.ts +10 -7
  40. package/dist/types/i18n/resolve-widget-locale.d.ts.map +1 -1
  41. package/dist/types/module/screens/ScreenRouter.d.ts +8 -0
  42. package/dist/types/module/screens/ScreenRouter.d.ts.map +1 -0
  43. package/dist/types/module/screens/screens.state.d.ts +26 -0
  44. package/dist/types/module/screens/screens.state.d.ts.map +1 -0
  45. package/dist/types/module/shell/AppShell.d.ts +8 -0
  46. package/dist/types/module/shell/AppShell.d.ts.map +1 -0
  47. package/dist/types/module/shell/mount.d.ts +13 -0
  48. package/dist/types/module/shell/mount.d.ts.map +1 -0
  49. package/dist/types/module/shell/shell.state.d.ts +2 -0
  50. package/dist/types/module/shell/shell.state.d.ts.map +1 -0
  51. package/dist/types/module/visitor/visitor.state.d.ts +21 -0
  52. package/dist/types/module/visitor/visitor.state.d.ts.map +1 -0
  53. package/dist/types/shared/icons/BotIcon.d.ts +4 -0
  54. package/dist/types/shared/icons/BotIcon.d.ts.map +1 -0
  55. package/dist/types/shared/icons/CloseIcon.d.ts +4 -0
  56. package/dist/types/shared/icons/CloseIcon.d.ts.map +1 -0
  57. package/dist/types/shared/icons/MessageIcon.d.ts +4 -0
  58. package/dist/types/shared/icons/MessageIcon.d.ts.map +1 -0
  59. package/dist/types/shared/icons/SendIcon.d.ts +4 -0
  60. package/dist/types/shared/icons/SendIcon.d.ts.map +1 -0
  61. package/dist/types/shared/icons/SparklesIcon.d.ts +5 -0
  62. package/dist/types/shared/icons/SparklesIcon.d.ts.map +1 -0
  63. package/dist/types/shared/icons/ZapIcon.d.ts +4 -0
  64. package/dist/types/shared/icons/ZapIcon.d.ts.map +1 -0
  65. package/dist/types/shared/theme/build-theme.d.ts +5 -0
  66. package/dist/types/shared/theme/build-theme.d.ts.map +1 -0
  67. package/dist/types/shared/theme/inject-styles.d.ts +10 -0
  68. package/dist/types/shared/theme/inject-styles.d.ts.map +1 -0
  69. package/dist/types/shared/ui/ErrorScreen.d.ts +9 -0
  70. package/dist/types/shared/ui/ErrorScreen.d.ts.map +1 -0
  71. package/dist/types/shared/ui/FAB.d.ts +9 -0
  72. package/dist/types/shared/ui/FAB.d.ts.map +1 -0
  73. package/dist/types/shared/ui/Footer.d.ts +3 -0
  74. package/dist/types/shared/ui/Footer.d.ts.map +1 -0
  75. package/dist/types/shared/ui/Header.d.ts +7 -0
  76. package/dist/types/shared/ui/Header.d.ts.map +1 -0
  77. package/dist/types/shared/ui/LoadingScreen.d.ts +7 -0
  78. package/dist/types/shared/ui/LoadingScreen.d.ts.map +1 -0
  79. package/dist/types/types.d.ts +11 -1
  80. package/dist/types/types.d.ts.map +1 -1
  81. package/dist/widget.js +1 -2
  82. package/dist/widget.js.map +1 -1
  83. package/package.json +6 -4
  84. package/dist/types/app.d.ts +0 -6
  85. package/dist/types/app.d.ts.map +0 -1
  86. package/dist/types/index.d.ts +0 -4
  87. package/dist/types/index.d.ts.map +0 -1
  88. package/dist/types/react.d.ts.map +0 -1
  89. package/dist/types/widget-state.d.ts +0 -7
  90. package/dist/types/widget-state.d.ts.map +0 -1
package/dist/react.mjs CHANGED
@@ -1,29 +1,38 @@
1
- import { createContext as C, useState as d, useRef as c, useEffect as p, createElement as y, useContext as J } from "react";
1
+ import { createContext as C, useState as p, useRef as c, useEffect as d, createElement as g, useContext as y } from "react";
2
2
  const s = C(null);
3
3
  function m(t) {
4
- const { children: i, ...r } = t, [l, a] = d(!1), e = c(null), n = c(null);
5
- p(() => {
4
+ const { children: i, ...r } = t, [l, a] = p(!1), e = c(null), n = c(null);
5
+ d(() => {
6
6
  let u = !1;
7
7
  return import("./index.mjs").then(
8
8
  (h) => {
9
- if (u) return;
9
+ if (u)
10
+ return;
10
11
  const o = h.JexityChat(r);
11
- e.current = o, n.current = o.subscribe((x) => a(x));
12
+ e.current = o, n.current = o.subscribe((x) => {
13
+ a(x);
14
+ });
12
15
  }
13
16
  ), () => {
14
17
  u = !0, n.current?.(), e.current?.shutdown(), e.current = null, n.current = null;
15
18
  };
16
- }, [r.orgId]);
19
+ }, [r.orgSlug]);
17
20
  const f = {
18
- open: () => e.current?.open(),
19
- close: () => e.current?.close(),
20
- toggle: () => e.current?.toggle(),
21
+ open: () => {
22
+ e.current?.open();
23
+ },
24
+ close: () => {
25
+ e.current?.close();
26
+ },
27
+ toggle: () => {
28
+ e.current?.toggle();
29
+ },
21
30
  isOpen: l
22
31
  };
23
- return y(s.Provider, { value: f }, i);
32
+ return g(s.Provider, { value: f }, i);
24
33
  }
25
34
  function b() {
26
- const t = J(s);
35
+ const t = y(s);
27
36
  if (!t)
28
37
  throw new Error("useJexityChat must be used within a <JexityChatProvider>");
29
38
  return t;
@@ -1 +1 @@
1
- {"version":3,"file":"react.mjs","sources":["../src/react.ts"],"sourcesContent":["import {\n createContext,\n createElement,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport type { ReactNode } from 'react'\nimport type { JexityChatOptions, JexityChatInstance } from './types.ts'\n\ninterface JexityChatContextValue {\n open: () => void\n close: () => void\n toggle: () => void\n isOpen: boolean\n}\n\nconst JexityChatContext = createContext<JexityChatContextValue | null>(null)\n\nexport interface JexityChatProviderProps extends JexityChatOptions {\n children: ReactNode\n}\n\nexport function JexityChatProvider(props: JexityChatProviderProps) {\n const { children, ...options } = props\n const [isOpen, setIsOpen] = useState(false)\n const instanceRef = useRef<JexityChatInstance | null>(null)\n const unsubRef = useRef<(() => void) | null>(null)\n\n useEffect(() => {\n let cancelled = false\n\n // Dynamic import keeps the Preact core out of the React bundle.\n // At runtime ./index.mjs is a sibling file in the package dist/ folder.\n // @ts-expect-error -- resolved at runtime, not in TS source tree\n import('./index.mjs').then(\n (mod: { JexityChat: (opts: JexityChatOptions) => JexityChatInstance }) => {\n if (cancelled) return\n const inst = mod.JexityChat(options)\n instanceRef.current = inst\n unsubRef.current = inst.subscribe((open) => setIsOpen(open))\n },\n )\n\n return () => {\n cancelled = true\n unsubRef.current?.()\n instanceRef.current?.shutdown()\n instanceRef.current = null\n unsubRef.current = null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options.orgId])\n\n const value: JexityChatContextValue = {\n open: () => instanceRef.current?.open(),\n close: () => instanceRef.current?.close(),\n toggle: () => instanceRef.current?.toggle(),\n isOpen,\n }\n\n return createElement(JexityChatContext.Provider, { value }, children)\n}\n\nexport function useJexityChat(): JexityChatContextValue {\n const ctx = useContext(JexityChatContext)\n if (!ctx) {\n throw new Error('useJexityChat must be used within a <JexityChatProvider>')\n }\n return ctx\n}\n"],"names":["JexityChatContext","createContext","JexityChatProvider","props","children","options","isOpen","setIsOpen","useState","instanceRef","useRef","unsubRef","useEffect","cancelled","mod","inst","open","value","createElement","useJexityChat","ctx","useContext"],"mappings":";AAkBA,MAAMA,IAAoBC,EAA6C,IAAI;AAMpE,SAASC,EAAmBC,GAAgC;AACjE,QAAM,EAAE,UAAAC,GAAU,GAAGC,EAAA,IAAYF,GAC3B,CAACG,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpCC,IAAcC,EAAkC,IAAI,GACpDC,IAAWD,EAA4B,IAAI;AAEjD,EAAAE,EAAU,MAAM;AACd,QAAIC,IAAY;AAKhB,kBAAO,aAAa,EAAE;AAAA,MACpB,CAACC,MAAyE;AACxE,YAAID,EAAW;AACf,cAAME,IAAOD,EAAI,WAAWT,CAAO;AACnC,QAAAI,EAAY,UAAUM,GACtBJ,EAAS,UAAUI,EAAK,UAAU,CAACC,MAAST,EAAUS,CAAI,CAAC;AAAA,MAC7D;AAAA,IAAA,GAGK,MAAM;AACX,MAAAH,IAAY,IACZF,EAAS,UAAA,GACTF,EAAY,SAAS,SAAA,GACrBA,EAAY,UAAU,MACtBE,EAAS,UAAU;AAAA,IACrB;AAAA,EAEF,GAAG,CAACN,EAAQ,KAAK,CAAC;AAElB,QAAMY,IAAgC;AAAA,IACpC,MAAM,MAAMR,EAAY,SAAS,KAAA;AAAA,IACjC,OAAO,MAAMA,EAAY,SAAS,MAAA;AAAA,IAClC,QAAQ,MAAMA,EAAY,SAAS,OAAA;AAAA,IACnC,QAAAH;AAAA,EAAA;AAGF,SAAOY,EAAclB,EAAkB,UAAU,EAAE,OAAAiB,EAAA,GAASb,CAAQ;AACtE;AAEO,SAASe,IAAwC;AACtD,QAAMC,IAAMC,EAAWrB,CAAiB;AACxC,MAAI,CAACoB;AACH,UAAM,IAAI,MAAM,0DAA0D;AAE5E,SAAOA;AACT;"}
1
+ {"version":3,"file":"react.mjs","sources":["../src/entries/react.tsx"],"sourcesContent":["import {\n createContext,\n createElement,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react'\nimport type { ReactNode } from 'react'\nimport type { JexityChatOptions, JexityChatInstance } from '../types'\n\ninterface JexityChatContextValue {\n open: () => void\n close: () => void\n toggle: () => void\n isOpen: boolean\n}\n\nconst JexityChatContext = createContext<JexityChatContextValue | null>(null)\n\nexport interface JexityChatProviderProps extends JexityChatOptions {\n children: ReactNode\n}\n\nexport function JexityChatProvider(props: JexityChatProviderProps) {\n const { children, ...options } = props\n const [isOpen, setIsOpen] = useState(false)\n const instanceRef = useRef<JexityChatInstance | null>(null)\n const unsubRef = useRef<(() => void) | null>(null)\n\n useEffect(() => {\n let cancelled = false\n\n // Dynamic import keeps the Preact core out of the React bundle.\n // At runtime ./index.mjs is a sibling file in the package dist/ folder.\n // @ts-expect-error -- resolved at runtime, not in TS source tree\n import('./index.mjs').then(\n (mod: { JexityChat: (opts: JexityChatOptions) => JexityChatInstance }) => {\n if (cancelled) { return }\n const inst = mod.JexityChat(options)\n instanceRef.current = inst\n unsubRef.current = inst.subscribe((open) => { setIsOpen(open) })\n },\n )\n\n return () => {\n cancelled = true\n unsubRef.current?.()\n instanceRef.current?.shutdown()\n instanceRef.current = null\n unsubRef.current = null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [options.orgSlug])\n\n const value: JexityChatContextValue = {\n open: () => { instanceRef.current?.open() },\n close: () => { instanceRef.current?.close() },\n toggle: () => { instanceRef.current?.toggle() },\n isOpen,\n }\n\n return createElement(JexityChatContext.Provider, { value }, children)\n}\n\nexport function useJexityChat(): JexityChatContextValue {\n const ctx = useContext(JexityChatContext)\n if (!ctx) {\n throw new Error('useJexityChat must be used within a <JexityChatProvider>')\n }\n return ctx\n}\n"],"names":["JexityChatContext","createContext","JexityChatProvider","props","children","options","isOpen","setIsOpen","useState","instanceRef","useRef","unsubRef","useEffect","cancelled","mod","inst","open","value","createElement","useJexityChat","ctx","useContext"],"mappings":";AAkBA,MAAMA,IAAoBC,EAA6C,IAAI;AAMpE,SAASC,EAAmBC,GAAgC;AACjE,QAAM,EAAE,UAAAC,GAAU,GAAGC,EAAA,IAAYF,GAC3B,CAACG,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpCC,IAAcC,EAAkC,IAAI,GACpDC,IAAWD,EAA4B,IAAI;AAEjD,EAAAE,EAAU,MAAM;AACd,QAAIC,IAAY;AAKhB,kBAAO,aAAa,EAAE;AAAA,MACpB,CAACC,MAAyE;AACxE,YAAID;AAAa;AACjB,cAAME,IAAOD,EAAI,WAAWT,CAAO;AACnC,QAAAI,EAAY,UAAUM,GACtBJ,EAAS,UAAUI,EAAK,UAAU,CAACC,MAAS;AAAE,UAAAT,EAAUS,CAAI;AAAA,QAAE,CAAC;AAAA,MACjE;AAAA,IAAA,GAGK,MAAM;AACX,MAAAH,IAAY,IACZF,EAAS,UAAA,GACTF,EAAY,SAAS,SAAA,GACrBA,EAAY,UAAU,MACtBE,EAAS,UAAU;AAAA,IACrB;AAAA,EAEF,GAAG,CAACN,EAAQ,OAAO,CAAC;AAEpB,QAAMY,IAAgC;AAAA,IACpC,MAAM,MAAM;AAAE,MAAAR,EAAY,SAAS,KAAA;AAAA,IAAO;AAAA,IAC1C,OAAO,MAAM;AAAE,MAAAA,EAAY,SAAS,MAAA;AAAA,IAAQ;AAAA,IAC5C,QAAQ,MAAM;AAAE,MAAAA,EAAY,SAAS,OAAA;AAAA,IAAS;AAAA,IAC9C,QAAAH;AAAA,EAAA;AAGF,SAAOY,EAAclB,EAAkB,UAAU,EAAE,OAAAiB,EAAA,GAASb,CAAQ;AACtE;AAEO,SAASe,IAAwC;AACtD,QAAMC,IAAMC,EAAWrB,CAAiB;AACxC,MAAI,CAACoB;AACH,UAAM,IAAI,MAAM,0DAA0D;AAE5E,SAAOA;AACT;"}
@@ -0,0 +1,4 @@
1
+ import type { JexityChatOptions, JexityChatInstance } from '../types';
2
+ export type { JexityChatOptions, JexityChatInstance };
3
+ export declare function JexityChat(options: JexityChatOptions): JexityChatInstance;
4
+ //# sourceMappingURL=esm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm.d.ts","sourceRoot":"","sources":["../../../src/entries/esm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAErE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAA;AAIrD,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,kBAAkB,CA0BzE"}
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { JexityChatOptions } from './types.ts';
2
+ import type { JexityChatOptions } from '../types';
3
3
  interface JexityChatContextValue {
4
4
  open: () => void;
5
5
  close: () => void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/entries/react.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,UAAU,CAAA;AAErE,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,MAAM,EAAE,OAAO,CAAA;CAChB;AAID,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,0GAuChE;AAED,wBAAgB,aAAa,IAAI,sBAAsB,CAMtD"}
@@ -0,0 +1,6 @@
1
+ interface BotMessageProps {
2
+ text: string;
3
+ }
4
+ export declare function BotMessage({ text }: BotMessageProps): import("preact").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=BotMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BotMessage.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/components/BotMessage.tsx"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe,gCAEnD"}
@@ -0,0 +1,3 @@
1
+ /** Text input + send button. Demo mode: echoes user messages with a 1s bot delay. */
2
+ export declare function ChatInput(): import("preact").JSX.Element;
3
+ //# sourceMappingURL=ChatInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/components/ChatInput.tsx"],"names":[],"mappings":"AAMA,qFAAqF;AACrF,wBAAgB,SAAS,iCAkDxB"}
@@ -0,0 +1,8 @@
1
+ interface ChatScreenProps {
2
+ /** Initial bot greeting — seeded once when chat is first opened. */
3
+ greeting: string;
4
+ }
5
+ /** Full chat conversation screen — orchestrates message list and input. */
6
+ export declare function ChatScreen({ greeting }: ChatScreenProps): import("preact").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=ChatScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatScreen.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/components/ChatScreen.tsx"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,gCAevD"}
@@ -0,0 +1,3 @@
1
+ /** Scrollable message area — auto-scrolls to the latest message. */
2
+ export declare function MessageList(): import("preact").JSX.Element;
3
+ //# sourceMappingURL=MessageList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/components/MessageList.tsx"],"names":[],"mappings":"AAMA,oEAAoE;AACpE,wBAAgB,WAAW,iCAkB1B"}
@@ -0,0 +1,2 @@
1
+ export declare function TypingIndicator(): import("preact").JSX.Element;
2
+ //# sourceMappingURL=TypingIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypingIndicator.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/components/TypingIndicator.tsx"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,iCAQ9B"}
@@ -0,0 +1,6 @@
1
+ interface UserMessageProps {
2
+ text: string;
3
+ }
4
+ export declare function UserMessage({ text }: UserMessageProps): import("preact").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=UserMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserMessage.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/components/UserMessage.tsx"],"names":[],"mappings":"AAAA,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,gCAErD"}
@@ -0,0 +1,13 @@
1
+ export interface Message {
2
+ id: number;
3
+ text: string;
4
+ sender: 'user' | 'bot';
5
+ }
6
+ /** Demo messages — replaced in Phase 2 with Convex subscription */
7
+ export declare const messages: import("@preact/signals").Signal<Message[]>;
8
+ export declare const isTyping: import("@preact/signals").Signal<boolean>;
9
+ /** Convex session ID — populated in Phase 2 */
10
+ export declare const sessionId: import("@preact/signals").Signal<string | null>;
11
+ /** Reset all chat state for a new conversation. */
12
+ export declare function clearChat(): void;
13
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/lib/chat.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,KAAK,CAAA;CACvB;AAED,mEAAmE;AACnE,eAAO,MAAM,QAAQ,6CAAwB,CAAA;AAC7C,eAAO,MAAM,QAAQ,2CAAgB,CAAA;AACrC,+CAA+C;AAC/C,eAAO,MAAM,SAAS,iDAA8B,CAAA;AAEpD,mDAAmD;AACnD,wBAAgB,SAAS,IAAI,IAAI,CAIhC"}
@@ -0,0 +1,14 @@
1
+ interface HomeScreenProps {
2
+ greeting: string;
3
+ title: string;
4
+ }
5
+ /**
6
+ * Home / greeting screen.
7
+ *
8
+ * Session resume (GDPR):
9
+ * - sessionStorage ref exists (same tab) → show "Resume" link
10
+ * - No ref (new tab / after close) → show "Have a reference number?" manual input
11
+ */
12
+ export declare function HomeScreen({ greeting, title }: HomeScreenProps): import("preact").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=HomeScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HomeScreen.d.ts","sourceRoot":"","sources":["../../../../../src/features/home/components/HomeScreen.tsx"],"names":[],"mappings":"AAMA,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,gCAqE9D"}
@@ -0,0 +1,7 @@
1
+ interface SelectionScreenProps {
2
+ title: string;
3
+ }
4
+ /** Contact method selection — chat vs. submit ticket. */
5
+ export declare function SelectionScreen({ title }: SelectionScreenProps): import("preact").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=SelectionScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionScreen.d.ts","sourceRoot":"","sources":["../../../../../src/features/selection/components/SelectionScreen.tsx"],"names":[],"mappings":"AAGA,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAA;CACd;AAED,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,oBAAoB,gCAyB9D"}
@@ -0,0 +1,7 @@
1
+ interface ConfirmationScreenProps {
2
+ ticketRef: string;
3
+ }
4
+ /** Shown after async ticket submission. Displays ref# and closes widget on Done. */
5
+ export declare function ConfirmationScreen({ ticketRef }: ConfirmationScreenProps): import("preact").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=ConfirmationScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmationScreen.d.ts","sourceRoot":"","sources":["../../../../../src/features/ticket/components/ConfirmationScreen.tsx"],"names":[],"mappings":"AAGA,UAAU,uBAAuB;IAC/B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,EAAE,EAAE,uBAAuB,gCAiBxE"}
@@ -0,0 +1,3 @@
1
+ /** Contact / ticket submission form. On submit: replace with loading, then confirmation/error. */
2
+ export declare function FormScreen(): import("preact").JSX.Element;
3
+ //# sourceMappingURL=FormScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormScreen.d.ts","sourceRoot":"","sources":["../../../../../src/features/ticket/components/FormScreen.tsx"],"names":[],"mappings":"AAIA,kGAAkG;AAClG,wBAAgB,UAAU,iCA+CzB"}
@@ -0,0 +1,10 @@
1
+ export type WidgetLocale = 'en' | 'de';
2
+ export interface LocaleConfig {
3
+ value: WidgetLocale;
4
+ label: string;
5
+ flag: string;
6
+ }
7
+ export declare const SUPPORTED_LOCALES: LocaleConfig[];
8
+ export declare const WIDGET_DEFAULT_LOCALE: WidgetLocale;
9
+ export declare const LOCALE_STORAGE_KEY = "jex-locale";
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/i18n/config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;AAEtC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAG3C,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,YAAmB,CAAA;AACvD,eAAO,MAAM,kBAAkB,eAAe,CAAA"}
@@ -1,6 +1,11 @@
1
1
  import { type WidgetStrings } from './locales/en';
2
2
  export type { WidgetStrings };
3
- export { type WidgetLocale, WIDGET_LOCALES, WIDGET_DEFAULT_LOCALE, LOCALE_STORAGE_KEY, } from './resolve-widget-locale';
3
+ export { type WidgetLocale, SUPPORTED_LOCALES as WIDGET_LOCALES, WIDGET_DEFAULT_LOCALE, LOCALE_STORAGE_KEY, } from './config';
4
+ /**
5
+ * Active locale for the widget UI.
6
+ * Initialised to 'de' (default); overridden in WidgetShell on mount via resolveWidgetLocale.
7
+ */
8
+ export declare const locale: import("@preact/signals").Signal<"en" | "de">;
4
9
  /**
5
10
  * Returns the current locale's string dictionary.
6
11
  * Reactive — components that call this re-render when locale changes.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/i18n/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAGrD,YAAY,EAAE,aAAa,EAAE,CAAA;AAC7B,OAAO,EACL,KAAK,YAAY,EACjB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAIhC;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,aAAa,CAGzC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAOjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/i18n/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAGrD,YAAY,EAAE,aAAa,EAAE,CAAA;AAC7B,OAAO,EACL,KAAK,YAAY,EACjB,iBAAiB,IAAI,cAAc,EACnC,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,UAAU,CAAA;AAEjB;;;GAGG;AACH,eAAO,MAAM,MAAM,+CAA4B,CAAA;AAI/C;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,aAAa,CAGzC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAOjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../../../src/i18n/locales/de.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAEzC,eAAO,MAAM,EAAE,EAAE,aAWhB,CAAA"}
1
+ {"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../../../src/i18n/locales/de.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAEzC,eAAO,MAAM,EAAE,EAAE,aA8BhB,CAAA"}
@@ -9,6 +9,25 @@ export interface WidgetStrings {
9
9
  errorQuota: string;
10
10
  localeLabelDe: string;
11
11
  localeLabelEn: string;
12
+ resumeConversation: string;
13
+ startNewConversation: string;
14
+ chatWith: string;
15
+ haveReferenceNumber: string;
16
+ referencePlaceholder: string;
17
+ resume: string;
18
+ howCanWeHelp: string;
19
+ getInstantHelp: string;
20
+ submitTicket: string;
21
+ replyByEmail: string;
22
+ ticketSubmitted: string;
23
+ yourReferenceNumber: string;
24
+ sentToEmailHint: string;
25
+ done: string;
26
+ submittingTicket: string;
27
+ yourName: string;
28
+ yourEmail: string;
29
+ submit: string;
30
+ back: string;
12
31
  }
13
32
  export declare const en: WidgetStrings;
14
33
  //# sourceMappingURL=en.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../src/i18n/locales/en.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,EAAE,EAAE,aAWhB,CAAA"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../src/i18n/locales/en.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,EAAE,EAAE,aA8BhB,CAAA"}
@@ -1,13 +1,16 @@
1
- export type WidgetLocale = 'en' | 'de';
2
- export declare const WIDGET_LOCALES: WidgetLocale[];
3
- export declare const WIDGET_DEFAULT_LOCALE: WidgetLocale;
4
- export declare const LOCALE_STORAGE_KEY = "jex-locale";
1
+ import { type WidgetLocale } from './config';
5
2
  /**
6
3
  * Resolve the active locale using the priority chain:
7
- * 1. localStorage['jex-locale'] (visitor's explicit override)
8
- * 2. navigator.language (browser auto-detect)
9
- * 3. configLocale (org dashboard setting)
4
+ * 1. configLocale (explicit prop/dashboard override — HIGHEST)
5
+ * 2. localStorage['jex-locale'] (visitor's persistent choice)
6
+ * 3. navigator.language (browser auto-detect)
10
7
  * 4. 'de' (hardcoded default)
8
+ *
9
+ * Priority Note:
10
+ * Explicit configuration (configLocale) now outranks localStorage.
11
+ * This ensures that changing the language in the Dashboard or Playground
12
+ * instantly reflects in the preview, even if the user previously selected
13
+ * a different language inside the widget's persistent session.
11
14
  */
12
15
  export declare function resolveWidgetLocale(configLocale?: string): WidgetLocale;
13
16
  //# sourceMappingURL=resolve-widget-locale.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-widget-locale.d.ts","sourceRoot":"","sources":["../../../src/i18n/resolve-widget-locale.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;AACtC,eAAO,MAAM,cAAc,EAAE,YAAY,EAAiB,CAAA;AAC1D,eAAO,MAAM,qBAAqB,EAAE,YAAmB,CAAA;AACvD,eAAO,MAAM,kBAAkB,eAAe,CAAA;AAS9C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,CAqBvE"}
1
+ {"version":3,"file":"resolve-widget-locale.d.ts","sourceRoot":"","sources":["../../../src/i18n/resolve-widget-locale.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,UAAU,CAAA;AAUjB;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,CAqBvE"}
@@ -0,0 +1,8 @@
1
+ interface ScreenRouterProps {
2
+ greeting: string;
3
+ title: string;
4
+ }
5
+ /** Renders only the active screen. No animation — add transitions later once routing is stable. */
6
+ export declare function ScreenRouter({ greeting, title }: ScreenRouterProps): import("preact").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=ScreenRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenRouter.d.ts","sourceRoot":"","sources":["../../../../src/module/screens/ScreenRouter.tsx"],"names":[],"mappings":"AAWA,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,iBAAiB,gCAqClE"}
@@ -0,0 +1,26 @@
1
+ export type ScreenState = {
2
+ id: 'home';
3
+ } | {
4
+ id: 'selection';
5
+ } | {
6
+ id: 'chat';
7
+ } | {
8
+ id: 'form';
9
+ } | {
10
+ id: 'confirmation';
11
+ ref: string;
12
+ } | {
13
+ id: 'loading';
14
+ message?: string;
15
+ } | {
16
+ id: 'error';
17
+ message: string;
18
+ };
19
+ export declare const screenStack: import("@preact/signals").Signal<ScreenState[]>;
20
+ /** Push a new screen onto the stack. */
21
+ export declare function navigate(screen: ScreenState): void;
22
+ /** Pop the top screen. No-op if already at root. */
23
+ export declare function back(): void;
24
+ /** Swap the top of the stack. Used for loading→result transitions. */
25
+ export declare function replace(screen: ScreenState): void;
26
+ //# sourceMappingURL=screens.state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screens.state.d.ts","sourceRoot":"","sources":["../../../../src/module/screens/screens.state.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,WAAW,CAAA;CAAE,GACnB;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,cAAc,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpC,eAAO,MAAM,WAAW,iDAA0C,CAAA;AAElE,wCAAwC;AACxC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAElD;AAED,oDAAoD;AACpD,wBAAgB,IAAI,IAAI,IAAI,CAI3B;AAED,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAEjD"}
@@ -0,0 +1,8 @@
1
+ import type { JexityChatOptions } from '../../types';
2
+ interface AppShellProps {
3
+ options: JexityChatOptions;
4
+ }
5
+ /** Inner Preact component tree — rendered inside the shadow root container. */
6
+ export declare function AppShell({ options }: AppShellProps): import("preact").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=AppShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../../src/module/shell/AppShell.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,UAAU,aAAa;IACrB,OAAO,EAAE,iBAAiB,CAAA;CAC3B;AAgBD,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,gCAsGlD"}
@@ -0,0 +1,13 @@
1
+ import type { JexityChatOptions, JexityChatInstance } from '../../types';
2
+ /**
3
+ * Mounts the widget into a Shadow DOM on the given host element.
4
+ * Reuses an existing shadow root on re-mount (avoids "already has a shadow root" error
5
+ * when the dev playground re-mounts on options change).
6
+ */
7
+ export declare function mountWidget(hostEl: HTMLElement, options: JexityChatOptions): () => void;
8
+ /**
9
+ * Creates a JexityChatInstance wrapping mountWidget.
10
+ * Used by entry points (iife.ts, esm.ts).
11
+ */
12
+ export declare function createInstance(mountEl: HTMLElement, options: JexityChatOptions, onRemove?: () => void): JexityChatInstance;
13
+ //# sourceMappingURL=mount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../../../src/module/shell/mount.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAExE;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,iBAAiB,GACzB,MAAM,IAAI,CAmBZ;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,kBAAkB,CA0BpB"}
@@ -0,0 +1,2 @@
1
+ export declare const isOpen: import("@preact/signals").Signal<boolean>;
2
+ //# sourceMappingURL=shell.state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.state.d.ts","sourceRoot":"","sources":["../../../../src/module/shell/shell.state.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,2CAAgB,CAAA"}
@@ -0,0 +1,21 @@
1
+ /** Short alphanumeric reference visible to the visitor (e.g. "JEX-A3B7C2"). */
2
+ export declare const sessionRef: import("@preact/signals").Signal<string | null>;
3
+ /** True once the visitor has sent at least one message in any session. */
4
+ export declare const hasActiveSession: import("@preact/signals").Signal<boolean>;
5
+ /**
6
+ * Load session state from sessionStorage on widget boot.
7
+ * sessionStorage is cleared when the browser tab closes — GDPR safe.
8
+ * Call once from WidgetShell on mount.
9
+ */
10
+ export declare function initVisitor(): void;
11
+ /**
12
+ * Create a fresh session ref and persist it.
13
+ * Called when the visitor starts a new conversation.
14
+ */
15
+ export declare function startNewSession(): string;
16
+ /**
17
+ * Mark the current session as active (first message sent).
18
+ * Called from ChatInput on first send.
19
+ */
20
+ export declare function markSessionActive(): void;
21
+ //# sourceMappingURL=visitor.state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.state.d.ts","sourceRoot":"","sources":["../../../../src/module/visitor/visitor.state.ts"],"names":[],"mappings":"AAKA,+EAA+E;AAC/E,eAAO,MAAM,UAAU,iDAA8B,CAAA;AAErD,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,2CAAgB,CAAA;AAM7C;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAUlC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC"}
@@ -0,0 +1,4 @@
1
+ export declare function BotIcon({ size }: {
2
+ size?: number;
3
+ }): import("preact").JSX.Element;
4
+ //# sourceMappingURL=BotIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BotIcon.d.ts","sourceRoot":"","sources":["../../../../src/shared/icons/BotIcon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,gCAWvD"}
@@ -0,0 +1,4 @@
1
+ export declare function CloseIcon({ size }: {
2
+ size?: number;
3
+ }): import("preact").JSX.Element;
4
+ //# sourceMappingURL=CloseIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloseIcon.d.ts","sourceRoot":"","sources":["../../../../src/shared/icons/CloseIcon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,gCAOzD"}
@@ -0,0 +1,4 @@
1
+ export declare function MessageIcon({ size }: {
2
+ size?: number;
3
+ }): import("preact").JSX.Element;
4
+ //# sourceMappingURL=MessageIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageIcon.d.ts","sourceRoot":"","sources":["../../../../src/shared/icons/MessageIcon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,gCAM3D"}
@@ -0,0 +1,4 @@
1
+ export declare function SendIcon({ size }: {
2
+ size?: number;
3
+ }): import("preact").JSX.Element;
4
+ //# sourceMappingURL=SendIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendIcon.d.ts","sourceRoot":"","sources":["../../../../src/shared/icons/SendIcon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,gCAOxD"}
@@ -0,0 +1,5 @@
1
+ import type { JSX } from 'preact';
2
+ export declare function SparklesIcon({ size, ...props }: JSX.SVGAttributes<SVGSVGElement> & {
3
+ size?: number | string;
4
+ }): JSX.Element;
5
+ //# sourceMappingURL=SparklesIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SparklesIcon.d.ts","sourceRoot":"","sources":["../../../../src/shared/icons/SparklesIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAEjC,wBAAgB,YAAY,CAAC,EAAE,IAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,eAgBlH"}
@@ -0,0 +1,4 @@
1
+ export declare function ZapIcon({ size }: {
2
+ size?: number;
3
+ }): import("preact").JSX.Element;
4
+ //# sourceMappingURL=ZapIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZapIcon.d.ts","sourceRoot":"","sources":["../../../../src/shared/icons/ZapIcon.tsx"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,gCAMvD"}
@@ -0,0 +1,5 @@
1
+ import type { JSX } from 'preact';
2
+ import type { JexityChatOptions } from '../../types';
3
+ /** Maps JexityChatOptions theme fields → CSS custom properties on the widget root. */
4
+ export declare function buildThemeStyle(options: JexityChatOptions): JSX.CSSProperties | undefined;
5
+ //# sourceMappingURL=build-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-theme.d.ts","sourceRoot":"","sources":["../../../../src/shared/theme/build-theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,GAAG,CAAC,aAAa,GAAG,SAAS,CA+CzF"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Injects the widget's CSS into the given shadow root.
3
+ *
4
+ * We use a <style> element rather than Constructable StyleSheets because:
5
+ * - Works in all browsers (Safari < 16.4 lacks adoptedStyleSheets support)
6
+ * - Vite's ?inline import gives us the processed CSS as a string
7
+ * - No external requests — fully bundled in the JS output
8
+ */
9
+ export declare function injectStyles(shadowRoot: ShadowRoot): void;
10
+ //# sourceMappingURL=inject-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-styles.d.ts","sourceRoot":"","sources":["../../../../src/shared/theme/inject-styles.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAIzD"}
@@ -0,0 +1,9 @@
1
+ interface ErrorScreenProps {
2
+ message: string;
3
+ onRetry?: () => void;
4
+ onBack?: () => void;
5
+ }
6
+ /** Full-coverage overlay shown when an async operation fails. */
7
+ export declare function ErrorScreen({ message, onRetry, onBack }: ErrorScreenProps): import("preact").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=ErrorScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorScreen.d.ts","sourceRoot":"","sources":["../../../../src/shared/ui/ErrorScreen.tsx"],"names":[],"mappings":"AAAA,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,gBAAgB,gCAkBzE"}
@@ -0,0 +1,9 @@
1
+ interface FABProps {
2
+ radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
3
+ iconOption?: 'chat' | 'bot' | 'sparkles';
4
+ label?: string;
5
+ }
6
+ /** Floating action button — the circular or pill-shaped trigger. */
7
+ export declare function FAB({ radius, iconOption, label }: FABProps): import("preact").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=FAB.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FAB.d.ts","sourceRoot":"","sources":["../../../../src/shared/ui/FAB.tsx"],"names":[],"mappings":"AAOA,UAAU,QAAQ;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAgBD,oEAAoE;AACpE,wBAAgB,GAAG,CAAC,EAAE,MAAe,EAAE,UAAmB,EAAE,KAAwB,EAAE,EAAE,QAAQ,gCAqB/F"}
@@ -0,0 +1,3 @@
1
+ /** "Powered by Jexity" branding bar with locale switcher. */
2
+ export declare function Footer(): import("preact").JSX.Element;
3
+ //# sourceMappingURL=Footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/shared/ui/Footer.tsx"],"names":[],"mappings":"AAEA,6DAA6D;AAC7D,wBAAgB,MAAM,iCAgBrB"}
@@ -0,0 +1,7 @@
1
+ interface HeaderProps {
2
+ title: string;
3
+ }
4
+ /** Chat window header bar — shows bot icon, title, and back button when on a nested screen. */
5
+ export declare function Header({ title }: HeaderProps): import("preact").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/shared/ui/Header.tsx"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,+FAA+F;AAC/F,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,gCAyB5C"}
@@ -0,0 +1,7 @@
1
+ interface LoadingScreenProps {
2
+ message?: string;
3
+ }
4
+ /** Full-coverage overlay shown during async operations. */
5
+ export declare function LoadingScreen({ message }: LoadingScreenProps): import("preact").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=LoadingScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingScreen.d.ts","sourceRoot":"","sources":["../../../../src/shared/ui/LoadingScreen.tsx"],"names":[],"mappings":"AAAA,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,gCAO5D"}