@copilotkit/react-core 1.9.2-next.8 → 1.9.2-next.9

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 (99) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/{chunk-CCESTGAM.mjs → chunk-3OQM3NEK.mjs} +2 -2
  3. package/dist/{chunk-T4ZKC4X4.mjs → chunk-3YHYWAHK.mjs} +2 -2
  4. package/dist/{chunk-ISYBUDL4.mjs → chunk-55QZ2SVJ.mjs} +4 -5
  5. package/dist/chunk-55QZ2SVJ.mjs.map +1 -0
  6. package/dist/chunk-57K2ZJ5F.mjs +348 -0
  7. package/dist/chunk-57K2ZJ5F.mjs.map +1 -0
  8. package/dist/{chunk-ZHEEHGLS.mjs → chunk-ADIITPD2.mjs} +8 -5
  9. package/dist/{chunk-ZHEEHGLS.mjs.map → chunk-ADIITPD2.mjs.map} +1 -1
  10. package/dist/{chunk-S4BOATBG.mjs → chunk-EF5BNM34.mjs} +2 -2
  11. package/dist/{chunk-I4JPQECN.mjs → chunk-EXU7GWLC.mjs} +4 -4
  12. package/dist/{chunk-7G6RR4HE.mjs → chunk-FXK6RQIN.mjs} +2 -2
  13. package/dist/{chunk-JXF732XG.mjs → chunk-G7LYGERN.mjs} +80 -13
  14. package/dist/chunk-G7LYGERN.mjs.map +1 -0
  15. package/dist/{chunk-VJCHRQ7Q.mjs → chunk-JDEWNLNP.mjs} +37 -4
  16. package/dist/chunk-JDEWNLNP.mjs.map +1 -0
  17. package/dist/{chunk-JHIZ5HAI.mjs → chunk-NQVCZQ5T.mjs} +3 -3
  18. package/dist/{chunk-VF6UPRKM.mjs → chunk-OF4SZTLL.mjs} +3 -3
  19. package/dist/{chunk-QQZLIEXK.mjs → chunk-SJJNFYGQ.mjs} +3 -3
  20. package/dist/{chunk-RN3ZRHI7.mjs → chunk-WOGURSAL.mjs} +5 -5
  21. package/dist/chunk-YAF2LATQ.mjs +310 -0
  22. package/dist/chunk-YAF2LATQ.mjs.map +1 -0
  23. package/dist/components/copilot-provider/copilot-messages.js +35 -2
  24. package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
  25. package/dist/components/copilot-provider/copilot-messages.mjs +2 -2
  26. package/dist/components/copilot-provider/copilotkit.js +289 -234
  27. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  28. package/dist/components/copilot-provider/copilotkit.mjs +7 -7
  29. package/dist/components/copilot-provider/index.js +289 -234
  30. package/dist/components/copilot-provider/index.js.map +1 -1
  31. package/dist/components/copilot-provider/index.mjs +7 -7
  32. package/dist/components/error-boundary/error-boundary.js +135 -146
  33. package/dist/components/error-boundary/error-boundary.js.map +1 -1
  34. package/dist/components/error-boundary/error-boundary.mjs +4 -4
  35. package/dist/components/error-boundary/error-utils.js.map +1 -1
  36. package/dist/components/error-boundary/error-utils.mjs +2 -2
  37. package/dist/components/index.js +289 -234
  38. package/dist/components/index.js.map +1 -1
  39. package/dist/components/index.mjs +7 -7
  40. package/dist/components/toast/toast-provider.js +118 -85
  41. package/dist/components/toast/toast-provider.js.map +1 -1
  42. package/dist/components/toast/toast-provider.mjs +1 -1
  43. package/dist/components/usage-banner.js +135 -146
  44. package/dist/components/usage-banner.js.map +1 -1
  45. package/dist/components/usage-banner.mjs +1 -1
  46. package/dist/hooks/index.js +75 -10
  47. package/dist/hooks/index.js.map +1 -1
  48. package/dist/hooks/index.mjs +14 -14
  49. package/dist/hooks/use-chat.js +72 -10
  50. package/dist/hooks/use-chat.js.map +1 -1
  51. package/dist/hooks/use-chat.mjs +4 -4
  52. package/dist/hooks/use-coagent-state-render.js.map +1 -1
  53. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  54. package/dist/hooks/use-coagent.js +75 -10
  55. package/dist/hooks/use-coagent.js.map +1 -1
  56. package/dist/hooks/use-coagent.mjs +10 -10
  57. package/dist/hooks/use-copilot-action.js.map +1 -1
  58. package/dist/hooks/use-copilot-action.mjs +3 -3
  59. package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
  60. package/dist/hooks/use-copilot-authenticated-action.mjs +4 -4
  61. package/dist/hooks/use-copilot-chat.js +72 -10
  62. package/dist/hooks/use-copilot-chat.js.map +1 -1
  63. package/dist/hooks/use-copilot-chat.mjs +9 -9
  64. package/dist/hooks/use-copilot-runtime-client.js +1 -1
  65. package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
  66. package/dist/hooks/use-copilot-runtime-client.mjs +2 -2
  67. package/dist/hooks/use-langgraph-interrupt.js +72 -10
  68. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  69. package/dist/hooks/use-langgraph-interrupt.mjs +10 -10
  70. package/dist/index.js +363 -243
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +15 -15
  73. package/dist/lib/copilot-task.mjs +8 -8
  74. package/dist/lib/index.mjs +8 -8
  75. package/dist/utils/extract.mjs +7 -7
  76. package/dist/utils/index.mjs +7 -7
  77. package/package.json +3 -3
  78. package/src/components/copilot-provider/copilot-messages.tsx +42 -3
  79. package/src/components/toast/toast-provider.tsx +49 -24
  80. package/src/components/usage-banner.tsx +144 -147
  81. package/src/hooks/use-chat.ts +106 -6
  82. package/src/hooks/use-coagent.ts +5 -0
  83. package/src/hooks/use-copilot-runtime-client.ts +2 -39
  84. package/dist/chunk-HD2GE3DK.mjs +0 -359
  85. package/dist/chunk-HD2GE3DK.mjs.map +0 -1
  86. package/dist/chunk-ISYBUDL4.mjs.map +0 -1
  87. package/dist/chunk-JXF732XG.mjs.map +0 -1
  88. package/dist/chunk-VJCHRQ7Q.mjs.map +0 -1
  89. package/dist/chunk-VRXANACV.mjs +0 -277
  90. package/dist/chunk-VRXANACV.mjs.map +0 -1
  91. /package/dist/{chunk-CCESTGAM.mjs.map → chunk-3OQM3NEK.mjs.map} +0 -0
  92. /package/dist/{chunk-T4ZKC4X4.mjs.map → chunk-3YHYWAHK.mjs.map} +0 -0
  93. /package/dist/{chunk-S4BOATBG.mjs.map → chunk-EF5BNM34.mjs.map} +0 -0
  94. /package/dist/{chunk-I4JPQECN.mjs.map → chunk-EXU7GWLC.mjs.map} +0 -0
  95. /package/dist/{chunk-7G6RR4HE.mjs.map → chunk-FXK6RQIN.mjs.map} +0 -0
  96. /package/dist/{chunk-JHIZ5HAI.mjs.map → chunk-NQVCZQ5T.mjs.map} +0 -0
  97. /package/dist/{chunk-VF6UPRKM.mjs.map → chunk-OF4SZTLL.mjs.map} +0 -0
  98. /package/dist/{chunk-QQZLIEXK.mjs.map → chunk-SJJNFYGQ.mjs.map} +0 -0
  99. /package/dist/{chunk-RN3ZRHI7.mjs.map → chunk-WOGURSAL.mjs.map} +0 -0
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  CopilotKit,
3
3
  defaultCopilotContextCategories
4
- } from "../../chunk-RN3ZRHI7.mjs";
5
- import "../../chunk-QQZLIEXK.mjs";
6
- import "../../chunk-VJCHRQ7Q.mjs";
4
+ } from "../../chunk-WOGURSAL.mjs";
5
+ import "../../chunk-SJJNFYGQ.mjs";
6
+ import "../../chunk-JDEWNLNP.mjs";
7
7
  import "../../chunk-5FHSUKQL.mjs";
8
8
  import "../../chunk-RKTVJRK7.mjs";
9
9
  import "../../chunk-PMAFHQ7P.mjs";
10
- import "../../chunk-HD2GE3DK.mjs";
10
+ import "../../chunk-57K2ZJ5F.mjs";
11
11
  import "../../chunk-DCTJZ742.mjs";
12
- import "../../chunk-CCESTGAM.mjs";
12
+ import "../../chunk-3OQM3NEK.mjs";
13
13
  import "../../chunk-O7ARI5CV.mjs";
14
- import "../../chunk-ISYBUDL4.mjs";
14
+ import "../../chunk-55QZ2SVJ.mjs";
15
15
  import "../../chunk-GFJW4RIM.mjs";
16
- import "../../chunk-VRXANACV.mjs";
16
+ import "../../chunk-YAF2LATQ.mjs";
17
17
  import "../../chunk-XFOTNHYA.mjs";
18
18
  import "../../chunk-SKC7AJIV.mjs";
19
19
  export {
@@ -119,8 +119,8 @@ var defaultIcons = {
119
119
  "svg",
120
120
  {
121
121
  viewBox: "0 0 24 24",
122
- width: "18",
123
- height: "18",
122
+ width: "16",
123
+ height: "16",
124
124
  stroke: "currentColor",
125
125
  strokeWidth: "2.5",
126
126
  fill: "none",
@@ -137,8 +137,8 @@ var defaultIcons = {
137
137
  "svg",
138
138
  {
139
139
  viewBox: "0 0 24 24",
140
- width: "18",
141
- height: "18",
140
+ width: "16",
141
+ height: "16",
142
142
  stroke: "currentColor",
143
143
  strokeWidth: "2.5",
144
144
  fill: "none",
@@ -155,8 +155,8 @@ var defaultIcons = {
155
155
  "svg",
156
156
  {
157
157
  viewBox: "0 0 24 24",
158
- width: "18",
159
- height: "18",
158
+ width: "16",
159
+ height: "16",
160
160
  stroke: "currentColor",
161
161
  strokeWidth: "2.5",
162
162
  fill: "none",
@@ -181,19 +181,33 @@ function UsageBanner({
181
181
  return null;
182
182
  }
183
183
  const parseMessage = (rawMessage) => {
184
- const linkRegex = /\[([^\]]+)\]\(([^)]+)\)/g;
185
- const matches = Array.from(rawMessage.matchAll(linkRegex));
186
- if (matches.length > 0) {
187
- let cleanMessage2 = rawMessage.replace(/\.\s*See more:\s*\[([^\]]+)\]\(([^)]+)\)/g, ".").replace(/See more:\s*\[([^\]]+)\]\(([^)]+)\)/g, "").trim();
188
- return cleanMessage2;
184
+ if (rawMessage.toLowerCase().includes("authentication") || rawMessage.toLowerCase().includes("api key")) {
185
+ return "Authentication failed. Please check your API key.";
186
+ }
187
+ if (rawMessage.toLowerCase().includes("rate limit")) {
188
+ return "Rate limit exceeded. Please try again later.";
189
+ }
190
+ if (rawMessage.toLowerCase().includes("checkpointer")) {
191
+ return "Agent configuration error. Please check your setup.";
189
192
  }
190
- return rawMessage;
193
+ let cleanMessage2 = rawMessage;
194
+ cleanMessage2 = cleanMessage2.split(" - ")[0];
195
+ cleanMessage2 = cleanMessage2.split(": Error code")[0];
196
+ cleanMessage2 = cleanMessage2.split(": 401")[0];
197
+ cleanMessage2 = cleanMessage2.split(": 403")[0];
198
+ cleanMessage2 = cleanMessage2.split(": 404")[0];
199
+ cleanMessage2 = cleanMessage2.split(": 500")[0];
200
+ cleanMessage2 = cleanMessage2.replace(/See more:.*$/g, "").trim();
201
+ if (cleanMessage2.includes("{") || cleanMessage2.includes("'") || cleanMessage2.length > 60) {
202
+ return "Configuration error. Please check your setup.";
203
+ }
204
+ return cleanMessage2 || "An error occurred. Please check your configuration.";
191
205
  };
192
206
  const cleanMessage = parseMessage(message);
193
207
  const Icon = icon || defaultIcons[severity];
194
208
  const themeConfigs = {
195
209
  [import_shared2.Severity.INFO]: {
196
- bg: "linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%)",
210
+ bg: "rgba(239, 246, 255, 0.95)",
197
211
  border: "#93c5fd",
198
212
  text: "#1e40af",
199
213
  icon: "#3b82f6",
@@ -201,7 +215,7 @@ function UsageBanner({
201
215
  primaryBtnHover: "#2563eb"
202
216
  },
203
217
  [import_shared2.Severity.WARNING]: {
204
- bg: "linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%)",
218
+ bg: "rgba(255, 251, 235, 0.95)",
205
219
  border: "#fbbf24",
206
220
  text: "#92400e",
207
221
  icon: "#f59e0b",
@@ -209,7 +223,7 @@ function UsageBanner({
209
223
  primaryBtnHover: "#d97706"
210
224
  },
211
225
  [import_shared2.Severity.CRITICAL]: {
212
- bg: "linear-gradient(135deg, #fef2f2 0%, #fecaca 100%)",
226
+ bg: "rgba(254, 242, 242, 0.95)",
213
227
  border: "#f87171",
214
228
  text: "#991b1b",
215
229
  icon: "#ef4444",
@@ -223,24 +237,26 @@ function UsageBanner({
223
237
  {
224
238
  style: {
225
239
  position: "fixed",
226
- bottom: "20px",
240
+ bottom: "24px",
227
241
  left: "50%",
228
242
  transform: "translateX(-50%)",
229
- maxWidth: "min(95vw, 680px)",
230
- width: "100%",
243
+ width: "400px",
244
+ maxWidth: "90vw",
231
245
  zIndex: 1e4,
232
- animation: "bannerSlideIn 0.4s cubic-bezier(0.16, 1, 0.3, 1)"
246
+ animation: "bannerSlideIn 0.3s cubic-bezier(0.16, 1, 0.3, 1)"
233
247
  },
234
248
  children: [
235
249
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { children: `
236
250
  @keyframes bannerSlideIn {
237
251
  from {
238
252
  opacity: 0;
239
- transform: translateX(-50%) translateY(10px);
253
+ transform: translateX(-50%) translateY(20px);
254
+ scale: 0.95;
240
255
  }
241
256
  to {
242
257
  opacity: 1;
243
258
  transform: translateX(-50%) translateY(0);
259
+ scale: 1;
244
260
  }
245
261
  }
246
262
  ` }),
@@ -248,17 +264,16 @@ function UsageBanner({
248
264
  "div",
249
265
  {
250
266
  style: {
251
- display: "flex",
252
- alignItems: "flex-start",
253
- gap: "14px",
254
- borderRadius: "16px",
267
+ borderRadius: "12px",
255
268
  border: `1px solid ${themeConfig.border}`,
256
269
  background: themeConfig.bg,
257
- padding: "18px 20px",
258
- boxShadow: "0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)",
270
+ padding: "14px",
271
+ boxShadow: "0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08)",
259
272
  position: "relative",
260
- backdropFilter: "blur(10px)",
261
- WebkitBackdropFilter: "blur(10px)"
273
+ backdropFilter: "blur(12px)",
274
+ WebkitBackdropFilter: "blur(12px)",
275
+ boxSizing: "border-box",
276
+ overflow: "hidden"
262
277
  },
263
278
  children: [
264
279
  onClose && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -267,35 +282,23 @@ function UsageBanner({
267
282
  onClick: onClose,
268
283
  style: {
269
284
  position: "absolute",
270
- top: "12px",
271
- right: "12px",
272
- background: "rgba(255, 255, 255, 0.8)",
285
+ top: "8px",
286
+ right: "8px",
287
+ background: "rgba(255, 255, 255, 0.9)",
273
288
  border: "none",
274
289
  color: themeConfig.text,
275
290
  cursor: "pointer",
276
- fontSize: "18px",
291
+ fontSize: "16px",
277
292
  lineHeight: "1",
278
- padding: "6px",
279
- borderRadius: "8px",
280
- opacity: 0.7,
281
- transition: "all 0.2s ease",
293
+ padding: "4px",
294
+ borderRadius: "4px",
295
+ width: "20px",
296
+ height: "20px",
282
297
  display: "flex",
283
298
  alignItems: "center",
284
- justifyContent: "center",
285
- width: "28px",
286
- height: "28px"
299
+ justifyContent: "center"
287
300
  },
288
301
  title: "Close",
289
- onMouseOver: (e) => {
290
- e.currentTarget.style.opacity = "1";
291
- e.currentTarget.style.background = "rgba(255, 255, 255, 1)";
292
- e.currentTarget.style.transform = "scale(1.05)";
293
- },
294
- onMouseOut: (e) => {
295
- e.currentTarget.style.opacity = "0.7";
296
- e.currentTarget.style.background = "rgba(255, 255, 255, 0.8)";
297
- e.currentTarget.style.transform = "scale(1)";
298
- },
299
302
  children: "\xD7"
300
303
  }
301
304
  ),
@@ -303,106 +306,92 @@ function UsageBanner({
303
306
  "div",
304
307
  {
305
308
  style: {
306
- color: themeConfig.icon,
307
- flexShrink: 0,
308
- marginTop: "1px",
309
- padding: "6px",
310
- borderRadius: "10px",
311
- background: "rgba(255, 255, 255, 0.7)",
312
- display: "flex",
313
- alignItems: "center",
314
- justifyContent: "center"
309
+ fontSize: "14px",
310
+ fontWeight: 500,
311
+ color: themeConfig.text,
312
+ lineHeight: "1.4",
313
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
314
+ paddingRight: onClose ? "30px" : "0",
315
+ marginBottom: actions ? "12px" : "0",
316
+ wordBreak: "break-word",
317
+ overflow: "hidden",
318
+ textOverflow: "ellipsis",
319
+ display: "-webkit-box",
320
+ WebkitLineClamp: 2,
321
+ WebkitBoxOrient: "vertical"
315
322
  },
316
- children: Icon
323
+ children: cleanMessage
317
324
  }
318
325
  ),
319
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { flex: 1, paddingRight: onClose ? "40px" : "0" }, children: [
320
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
321
- "div",
322
- {
323
- style: {
324
- fontSize: "15px",
325
- fontWeight: 600,
326
- color: themeConfig.text,
327
- lineHeight: "1.5",
328
- marginBottom: actions ? "12px" : "0",
329
- fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
330
- },
331
- children: cleanMessage
332
- }
333
- ),
334
- actions && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
335
- "div",
336
- {
337
- style: {
338
- display: "flex",
339
- gap: "10px",
340
- flexWrap: "wrap"
341
- },
342
- children: [
343
- actions.secondary && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
344
- "button",
345
- {
346
- onClick: actions.secondary.onClick,
347
- style: {
348
- borderRadius: "10px",
349
- padding: "8px 16px",
350
- fontSize: "14px",
351
- fontWeight: 500,
352
- color: themeConfig.text,
353
- backgroundColor: "rgba(255, 255, 255, 0.8)",
354
- border: `1.5px solid ${themeConfig.border}`,
355
- cursor: "pointer",
356
- transition: "all 0.2s ease",
357
- fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
358
- },
359
- onMouseOver: (e) => {
360
- e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 1)";
361
- e.currentTarget.style.transform = "translateY(-1px)";
362
- e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.15)";
363
- },
364
- onMouseOut: (e) => {
365
- e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 0.8)";
366
- e.currentTarget.style.transform = "translateY(0)";
367
- e.currentTarget.style.boxShadow = "none";
368
- },
369
- children: actions.secondary.label
370
- }
371
- ),
372
- actions.primary && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
373
- "button",
374
- {
375
- onClick: actions.primary.onClick,
376
- style: {
377
- borderRadius: "10px",
378
- padding: "8px 16px",
379
- fontSize: "14px",
380
- fontWeight: 600,
381
- color: "#fff",
382
- backgroundColor: themeConfig.primaryBtn,
383
- border: "none",
384
- cursor: "pointer",
385
- transition: "all 0.2s ease",
386
- boxShadow: "0 4px 12px rgba(0, 0, 0, 0.15)",
387
- fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
388
- },
389
- onMouseOver: (e) => {
390
- e.currentTarget.style.backgroundColor = themeConfig.primaryBtnHover;
391
- e.currentTarget.style.transform = "translateY(-1px)";
392
- e.currentTarget.style.boxShadow = "0 6px 16px rgba(0, 0, 0, 0.2)";
393
- },
394
- onMouseOut: (e) => {
395
- e.currentTarget.style.backgroundColor = themeConfig.primaryBtn;
396
- e.currentTarget.style.transform = "translateY(0)";
397
- e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.15)";
398
- },
399
- children: actions.primary.label
400
- }
401
- )
402
- ]
403
- }
404
- )
405
- ] })
326
+ actions && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
327
+ "div",
328
+ {
329
+ style: {
330
+ display: "flex",
331
+ gap: "8px",
332
+ flexWrap: "wrap"
333
+ },
334
+ children: [
335
+ actions.secondary && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
336
+ "button",
337
+ {
338
+ onClick: actions.secondary.onClick,
339
+ style: {
340
+ borderRadius: "8px",
341
+ padding: "6px 12px",
342
+ fontSize: "13px",
343
+ fontWeight: 500,
344
+ color: themeConfig.text,
345
+ backgroundColor: "rgba(255, 255, 255, 0.9)",
346
+ border: `1px solid ${themeConfig.border}`,
347
+ cursor: "pointer",
348
+ transition: "all 0.2s ease",
349
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
350
+ },
351
+ onMouseOver: (e) => {
352
+ e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 1)";
353
+ e.currentTarget.style.transform = "translateY(-1px)";
354
+ },
355
+ onMouseOut: (e) => {
356
+ e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 0.9)";
357
+ e.currentTarget.style.transform = "translateY(0)";
358
+ },
359
+ children: actions.secondary.label
360
+ }
361
+ ),
362
+ actions.primary && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
363
+ "button",
364
+ {
365
+ onClick: actions.primary.onClick,
366
+ style: {
367
+ borderRadius: "8px",
368
+ padding: "6px 12px",
369
+ fontSize: "13px",
370
+ fontWeight: 600,
371
+ color: "#fff",
372
+ backgroundColor: themeConfig.primaryBtn,
373
+ border: "none",
374
+ cursor: "pointer",
375
+ transition: "all 0.2s ease",
376
+ boxShadow: "0 2px 8px rgba(0, 0, 0, 0.15)",
377
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
378
+ },
379
+ onMouseOver: (e) => {
380
+ e.currentTarget.style.backgroundColor = themeConfig.primaryBtnHover;
381
+ e.currentTarget.style.transform = "translateY(-1px)";
382
+ e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.2)";
383
+ },
384
+ onMouseOut: (e) => {
385
+ e.currentTarget.style.backgroundColor = themeConfig.primaryBtn;
386
+ e.currentTarget.style.transform = "translateY(0)";
387
+ e.currentTarget.style.boxShadow = "0 2px 8px rgba(0, 0, 0, 0.15)";
388
+ },
389
+ children: actions.primary.label
390
+ }
391
+ )
392
+ ]
393
+ }
394
+ )
406
395
  ]
407
396
  }
408
397
  )