@xbrain-swe/nova-chat-widget 0.1.2 → 0.1.4

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/dist/index.cjs CHANGED
@@ -57,7 +57,8 @@ var import_react = require("react");
57
57
  var import_jsx_runtime = require("react/jsx-runtime");
58
58
  var DEFAULT_THEME = {
59
59
  accentFrom: "#4f46e5",
60
- accentTo: "#7c3aed"
60
+ accentTo: "#7c3aed",
61
+ colorScheme: "system"
61
62
  };
62
63
  var InternalContext = (0, import_react.createContext)(null);
63
64
  function useXbNovaInternal() {
@@ -968,10 +969,25 @@ function loadCss() {
968
969
  }
969
970
  return cssPromise;
970
971
  }
972
+ function useResolvedScheme(scheme) {
973
+ const [systemDark, setSystemDark] = (0, import_react7.useState)(false);
974
+ (0, import_react7.useEffect)(() => {
975
+ if (scheme !== "system") return;
976
+ const mq = window.matchMedia("(prefers-color-scheme: dark)");
977
+ setSystemDark(mq.matches);
978
+ const onChange = (e) => setSystemDark(e.matches);
979
+ mq.addEventListener("change", onChange);
980
+ return () => mq.removeEventListener("change", onChange);
981
+ }, [scheme]);
982
+ if (scheme === "system") return systemDark ? "dark" : "light";
983
+ return scheme;
984
+ }
971
985
  function XbNovaShadowRoot({
972
986
  children,
973
987
  style
974
988
  }) {
989
+ const { theme } = useXbNovaInternal();
990
+ const scheme = useResolvedScheme(theme.colorScheme);
975
991
  const hostRef = (0, import_react7.useRef)(null);
976
992
  const [mountNode, setMountNode] = (0, import_react7.useState)(null);
977
993
  const [portalTarget, setPortalTarget] = (0, import_react7.useState)(null);
@@ -993,6 +1009,11 @@ function XbNovaShadowRoot({
993
1009
  shadow.appendChild(mount);
994
1010
  setMountNode(mount);
995
1011
  }, [portalTarget]);
1012
+ (0, import_react7.useEffect)(() => {
1013
+ if (!mountNode) return;
1014
+ mountNode.dataset.xbnovaScheme = scheme;
1015
+ mountNode.style.colorScheme = scheme;
1016
+ }, [mountNode, scheme]);
996
1017
  if (!portalTarget) return null;
997
1018
  return (0, import_react_dom.createPortal)(
998
1019
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { ref: hostRef, style, children: mountNode ? (0, import_react_dom.createPortal)(children, mountNode) : null }),
@@ -1762,7 +1783,7 @@ function XbNovaChat({
1762
1783
  onChange: (e) => setInput(e.target.value),
1763
1784
  placeholder: "\uC774 \uCC28\uC5D0 \uB300\uD574 \uBB34\uC5C7\uC774\uB4E0 \uBB3C\uC5B4\uBCF4\uC138\uC694",
1764
1785
  disabled: busy,
1765
- className: "xbnova-input-accent flex-1 rounded-full border border-neutral-300 px-3.5 py-2 text-sm outline-none disabled:opacity-50 dark:border-neutral-600 dark:bg-neutral-800"
1786
+ className: "xbnova-input-accent flex-1 rounded-full border border-neutral-300 bg-white px-3.5 py-2 text-sm text-neutral-900 placeholder:text-neutral-400 outline-none disabled:opacity-50 dark:border-neutral-600 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder:text-neutral-500"
1766
1787
  }
1767
1788
  ),
1768
1789
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(