@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 +23 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +23 -2
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
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)(
|