@copilotkit/react-ui 1.4.7 → 1.4.8-no-pino-redact.1

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 (65) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/{chunk-4T3TMQNJ.mjs → chunk-BH6PCAAL.mjs} +38 -2
  3. package/dist/chunk-BH6PCAAL.mjs.map +1 -0
  4. package/dist/{chunk-63ZKP62F.mjs → chunk-E5SSVET3.mjs} +3 -3
  5. package/dist/{chunk-4LUMV4YO.mjs → chunk-EMQEEXUB.mjs} +8 -3
  6. package/dist/chunk-EMQEEXUB.mjs.map +1 -0
  7. package/dist/{chunk-VYKDFXGS.mjs → chunk-FUDBUYBG.mjs} +2 -2
  8. package/dist/chunk-ICGZEGHQ.mjs +155 -0
  9. package/dist/chunk-ICGZEGHQ.mjs.map +1 -0
  10. package/dist/{chunk-DHGDU64D.mjs → chunk-T35X2SFE.mjs} +3 -3
  11. package/dist/{chunk-2B57NCBA.mjs → chunk-TTYR7XPN.mjs} +2 -2
  12. package/dist/{chunk-TKFQ7VQR.mjs → chunk-ZQFKJLQ6.mjs} +2 -2
  13. package/dist/components/chat/Chat.js +123 -4
  14. package/dist/components/chat/Chat.js.map +1 -1
  15. package/dist/components/chat/Chat.mjs +5 -5
  16. package/dist/components/chat/Input.js +7 -2
  17. package/dist/components/chat/Input.js.map +1 -1
  18. package/dist/components/chat/Input.mjs +1 -1
  19. package/dist/components/chat/Modal.js +123 -4
  20. package/dist/components/chat/Modal.js.map +1 -1
  21. package/dist/components/chat/Modal.mjs +6 -6
  22. package/dist/components/chat/Popup.js +123 -4
  23. package/dist/components/chat/Popup.js.map +1 -1
  24. package/dist/components/chat/Popup.mjs +7 -7
  25. package/dist/components/chat/Sidebar.js +123 -4
  26. package/dist/components/chat/Sidebar.js.map +1 -1
  27. package/dist/components/chat/Sidebar.mjs +7 -7
  28. package/dist/components/chat/index.js +123 -4
  29. package/dist/components/chat/index.js.map +1 -1
  30. package/dist/components/chat/index.mjs +8 -8
  31. package/dist/components/dev-console/console.js +116 -2
  32. package/dist/components/dev-console/console.js.map +1 -1
  33. package/dist/components/dev-console/console.mjs +3 -3
  34. package/dist/components/dev-console/index.js +116 -2
  35. package/dist/components/dev-console/index.js.map +1 -1
  36. package/dist/components/dev-console/index.mjs +3 -3
  37. package/dist/components/help-modal/icons.d.ts +4 -1
  38. package/dist/components/help-modal/icons.js +39 -2
  39. package/dist/components/help-modal/icons.js.map +1 -1
  40. package/dist/components/help-modal/icons.mjs +5 -3
  41. package/dist/components/help-modal/index.js +136 -2
  42. package/dist/components/help-modal/index.js.map +1 -1
  43. package/dist/components/help-modal/index.mjs +2 -2
  44. package/dist/components/help-modal/modal.js +136 -2
  45. package/dist/components/help-modal/modal.js.map +1 -1
  46. package/dist/components/help-modal/modal.mjs +2 -2
  47. package/dist/components/index.js +123 -4
  48. package/dist/components/index.js.map +1 -1
  49. package/dist/components/index.mjs +8 -8
  50. package/dist/index.js +123 -4
  51. package/dist/index.js.map +1 -1
  52. package/dist/index.mjs +8 -8
  53. package/package.json +4 -4
  54. package/src/components/chat/Input.tsx +9 -2
  55. package/src/components/help-modal/icons.tsx +28 -0
  56. package/src/components/help-modal/modal.tsx +90 -27
  57. package/dist/chunk-4LUMV4YO.mjs.map +0 -1
  58. package/dist/chunk-4T3TMQNJ.mjs.map +0 -1
  59. package/dist/chunk-WOUWNTAV.mjs +0 -72
  60. package/dist/chunk-WOUWNTAV.mjs.map +0 -1
  61. /package/dist/{chunk-63ZKP62F.mjs.map → chunk-E5SSVET3.mjs.map} +0 -0
  62. /package/dist/{chunk-VYKDFXGS.mjs.map → chunk-FUDBUYBG.mjs.map} +0 -0
  63. /package/dist/{chunk-DHGDU64D.mjs.map → chunk-T35X2SFE.mjs.map} +0 -0
  64. /package/dist/{chunk-2B57NCBA.mjs.map → chunk-TTYR7XPN.mjs.map} +0 -0
  65. /package/dist/{chunk-TKFQ7VQR.mjs.map → chunk-ZQFKJLQ6.mjs.map} +0 -0
@@ -882,7 +882,10 @@ var Input = ({ inProgress, onSend, isVisible = false }) => {
882
882
  });
883
883
  const sendIcon = inProgress || pushToTalkState === "transcribing" ? context.icons.activityIcon : context.icons.sendIcon;
884
884
  const showPushToTalk = pushToTalkConfigured && (pushToTalkState === "idle" || pushToTalkState === "recording") && !inProgress;
885
- const sendDisabled = inProgress || text.length === 0 || pushToTalkState !== "idle";
885
+ const canSend = () => {
886
+ return !inProgress && text.trim().length > 0 && pushToTalkState === "idle";
887
+ };
888
+ const sendDisabled = !canSend();
886
889
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "copilotKitInput", onClick: handleDivClick, children: [
887
890
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
888
891
  Textarea_default,
@@ -896,7 +899,9 @@ var Input = ({ inProgress, onSend, isVisible = false }) => {
896
899
  onKeyDown: (event) => {
897
900
  if (event.key === "Enter" && !event.shiftKey) {
898
901
  event.preventDefault();
899
- send();
902
+ if (canSend()) {
903
+ send();
904
+ }
900
905
  }
901
906
  }
902
907
  }
@@ -1939,15 +1944,79 @@ var CloseIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1939
1944
  children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" })
1940
1945
  }
1941
1946
  );
1947
+ var LoadingSpinnerIcon = ({ color = "rgb(107 114 128)" }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1948
+ "svg",
1949
+ {
1950
+ style: {
1951
+ animation: "copilotKitSpinAnimation 1s linear infinite",
1952
+ color
1953
+ },
1954
+ width: "24",
1955
+ height: "24",
1956
+ xmlns: "http://www.w3.org/2000/svg",
1957
+ fill: "none",
1958
+ viewBox: "0 0 24 24",
1959
+ children: [
1960
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1961
+ "circle",
1962
+ {
1963
+ style: { opacity: 0.25 },
1964
+ cx: "12",
1965
+ cy: "12",
1966
+ r: "10",
1967
+ stroke: "currentColor",
1968
+ strokeWidth: "4"
1969
+ }
1970
+ ),
1971
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1972
+ "path",
1973
+ {
1974
+ style: { opacity: 0.75 },
1975
+ fill: "currentColor",
1976
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
1977
+ }
1978
+ )
1979
+ ]
1980
+ }
1981
+ );
1942
1982
 
1943
1983
  // src/components/help-modal/modal.tsx
1944
1984
  var import_jsx_runtime19 = require("react/jsx-runtime");
1945
1985
  function CopilotKitHelpModal() {
1946
1986
  const [showHelpModal, setShowHelpModal] = (0, import_react9.useState)(false);
1947
1987
  const [issueDescription, setIssueDescription] = (0, import_react9.useState)("");
1948
- const handleSubmit = () => {
1949
- setShowHelpModal(false);
1988
+ const [email, setEmail] = (0, import_react9.useState)("");
1989
+ const [emailError, setEmailError] = (0, import_react9.useState)("");
1990
+ const [submitting, setSubmitting] = (0, import_react9.useState)(false);
1991
+ const validateEmail = (email2) => {
1992
+ const re = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
1993
+ return re.test(email2);
1950
1994
  };
1995
+ const handleSubmit = (e) => __async(this, null, function* () {
1996
+ e.preventDefault();
1997
+ if ((email == null ? void 0 : email.length) > 0 && !validateEmail(email)) {
1998
+ setEmailError("Please enter a valid email address");
1999
+ return;
2000
+ }
2001
+ setSubmitting(true);
2002
+ yield fetch("https://api.segment.io/v1/track", {
2003
+ method: "POST",
2004
+ headers: {
2005
+ "Content-Type": "application/json"
2006
+ },
2007
+ body: JSON.stringify({
2008
+ event: "oss.dev-console.help",
2009
+ anonymousId: window.crypto.randomUUID(),
2010
+ properties: { email, text: issueDescription },
2011
+ writeKey: "q0gQqvGYyw9pNyhIocNzefSYKGO1aiwW"
2012
+ })
2013
+ });
2014
+ setEmailError("");
2015
+ setEmail("");
2016
+ setIssueDescription("");
2017
+ setSubmitting(false);
2018
+ setShowHelpModal(false);
2019
+ });
1951
2020
  const HelpButton = () => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1952
2021
  "button",
1953
2022
  {
@@ -1957,6 +2026,10 @@ function CopilotKitHelpModal() {
1957
2026
  children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(LifeBuoyIcon, {})
1958
2027
  }
1959
2028
  );
2029
+ const submitButtonDisabled = (0, import_react9.useMemo)(
2030
+ () => submitting || !!emailError || issueDescription == null || (issueDescription == null ? void 0 : issueDescription.length) == 0,
2031
+ [submitting, emailError, issueDescription]
2032
+ );
1960
2033
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
1961
2034
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(HelpButton, {}),
1962
2035
  showHelpModal && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
@@ -1995,6 +2068,52 @@ function CopilotKitHelpModal() {
1995
2068
  children: "Apply for Priority Direct Slack Support"
1996
2069
  }
1997
2070
  ) })
2071
+ ] }),
2072
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("form", { onSubmit: handleSubmit, className: "flex flex-col space-y-2", children: [
2073
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { children: [
2074
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("label", { htmlFor: "feedback", className: "block text-sm font-medium text-gray-700 mb-1", children: "Let us know what your issue is:" }),
2075
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2076
+ "textarea",
2077
+ {
2078
+ id: "feedback",
2079
+ rows: 4,
2080
+ className: "w-full px-3 py-2 text-gray-700 border rounded-lg focus:outline-none focus:border-blue-500",
2081
+ placeholder: "A Loom link / screen recording is always great!",
2082
+ onChange: (e) => setIssueDescription(e.target.value),
2083
+ value: issueDescription,
2084
+ required: true
2085
+ }
2086
+ )
2087
+ ] }),
2088
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { children: [
2089
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("label", { htmlFor: "email", className: "block text-sm font-medium text-gray-700 mb-1", children: "Email (optional):" }),
2090
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2091
+ "input",
2092
+ {
2093
+ type: "email",
2094
+ id: "email",
2095
+ className: `w-full px-3 py-2 text-gray-700 border rounded-lg focus:outline-none focus:border-blue-500 ${emailError ? "border-red-500" : ""}`,
2096
+ placeholder: "Enter your email for follow-up",
2097
+ onChange: (e) => {
2098
+ setEmail(e.target.value);
2099
+ setEmailError("");
2100
+ },
2101
+ value: email
2102
+ }
2103
+ ),
2104
+ emailError && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-red-500 text-sm mt-1", children: emailError })
2105
+ ] }),
2106
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "bg-gray-50 px-4 py-4 sm:px-6 sm:flex sm:flex-row-reverse rounded-b-lg", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2107
+ "button",
2108
+ {
2109
+ type: "submit",
2110
+ onClick: handleSubmit,
2111
+ disabled: submitButtonDisabled,
2112
+ style: submitButtonDisabled ? { backgroundColor: "rgb(216, 216, 216)", color: "rgb(129, 129, 129)" } : void 0,
2113
+ className: "w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-500 text-base font-medium text-white hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm disabled:shadow-none",
2114
+ children: submitting ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(LoadingSpinnerIcon, { color: "white" }) : "Submit"
2115
+ }
2116
+ ) })
1998
2117
  ] })
1999
2118
  ] })
2000
2119
  }