@red-hat-developer-hub/backstage-plugin-intelligent-assistant 5.0.1 → 5.0.2

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 (93) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/alpha.d.ts +1 -2
  3. package/dist/components/Attachment.esm.js +10 -12
  4. package/dist/components/Attachment.esm.js.map +1 -1
  5. package/dist/components/CollapsedHistoryStrip.esm.js +46 -51
  6. package/dist/components/CollapsedHistoryStrip.esm.js.map +1 -1
  7. package/dist/components/FilePreview.esm.js +3 -2
  8. package/dist/components/FilePreview.esm.js.map +1 -1
  9. package/dist/components/LightSpeedChat.esm.js +580 -745
  10. package/dist/components/LightSpeedChat.esm.js.map +1 -1
  11. package/dist/components/LightspeedChatBox.esm.js +2 -3
  12. package/dist/components/LightspeedChatBox.esm.js.map +1 -1
  13. package/dist/components/LightspeedChatBoxHeader.esm.js +38 -34
  14. package/dist/components/LightspeedChatBoxHeader.esm.js.map +1 -1
  15. package/dist/components/LightspeedChatContainer.esm.js +6 -8
  16. package/dist/components/LightspeedChatContainer.esm.js.map +1 -1
  17. package/dist/components/LightspeedChatModelsState.esm.js +67 -73
  18. package/dist/components/LightspeedChatModelsState.esm.js.map +1 -1
  19. package/dist/components/LightspeedDrawerContext.esm.js.map +1 -1
  20. package/dist/components/LightspeedDrawerProvider.esm.js +13 -16
  21. package/dist/components/LightspeedDrawerProvider.esm.js.map +1 -1
  22. package/dist/components/LightspeedFABContent.esm.js +40 -9
  23. package/dist/components/LightspeedFABContent.esm.js.map +1 -1
  24. package/dist/components/LightspeedPage.esm.js +1 -10
  25. package/dist/components/LightspeedPage.esm.js.map +1 -1
  26. package/dist/components/McpConfigureServerModal.esm.js +79 -86
  27. package/dist/components/McpConfigureServerModal.esm.js.map +1 -1
  28. package/dist/components/McpServersSettings.esm.js +246 -212
  29. package/dist/components/McpServersSettings.esm.js.map +1 -1
  30. package/dist/components/MessageBarModelSelector.esm.js +29 -33
  31. package/dist/components/MessageBarModelSelector.esm.js.map +1 -1
  32. package/dist/components/PermissionRequiredState.esm.js +63 -63
  33. package/dist/components/PermissionRequiredState.esm.js.map +1 -1
  34. package/dist/components/RenameConversationModal.esm.js +38 -31
  35. package/dist/components/RenameConversationModal.esm.js.map +1 -1
  36. package/dist/components/Router.esm.js +4 -13
  37. package/dist/components/Router.esm.js.map +1 -1
  38. package/dist/components/ToastAlertGroup.esm.js +24 -40
  39. package/dist/components/ToastAlertGroup.esm.js.map +1 -1
  40. package/dist/components/ToolCallContent.esm.js +8 -11
  41. package/dist/components/ToolCallContent.esm.js.map +1 -1
  42. package/dist/components/notebooks/AddDocumentModal.esm.js +232 -252
  43. package/dist/components/notebooks/AddDocumentModal.esm.js.map +1 -1
  44. package/dist/components/notebooks/DeleteDocumentModal.esm.js +35 -77
  45. package/dist/components/notebooks/DeleteDocumentModal.esm.js.map +1 -1
  46. package/dist/components/notebooks/DeleteNotebookModal.esm.js +46 -81
  47. package/dist/components/notebooks/DeleteNotebookModal.esm.js.map +1 -1
  48. package/dist/components/notebooks/DocumentSidebar.esm.js +172 -196
  49. package/dist/components/notebooks/DocumentSidebar.esm.js.map +1 -1
  50. package/dist/components/notebooks/FileListItem.esm.js +69 -57
  51. package/dist/components/notebooks/FileListItem.esm.js.map +1 -1
  52. package/dist/components/notebooks/FileTypeIcon.esm.js +17 -27
  53. package/dist/components/notebooks/FileTypeIcon.esm.js.map +1 -1
  54. package/dist/components/notebooks/NotebookCard.esm.js +86 -25
  55. package/dist/components/notebooks/NotebookCard.esm.js.map +1 -1
  56. package/dist/components/notebooks/NotebookView.esm.js +367 -380
  57. package/dist/components/notebooks/NotebookView.esm.js.map +1 -1
  58. package/dist/components/notebooks/NotebooksTab.esm.js +93 -30
  59. package/dist/components/notebooks/NotebooksTab.esm.js.map +1 -1
  60. package/dist/components/notebooks/OverwriteConfirmModal.esm.js +142 -184
  61. package/dist/components/notebooks/OverwriteConfirmModal.esm.js.map +1 -1
  62. package/dist/components/notebooks/UploadResourceScreen.esm.js +58 -50
  63. package/dist/components/notebooks/UploadResourceScreen.esm.js.map +1 -1
  64. package/dist/components/notebooks/notebookDialogStyles.esm.js +33 -37
  65. package/dist/components/notebooks/notebookDialogStyles.esm.js.map +1 -1
  66. package/dist/const.esm.js +15 -2
  67. package/dist/const.esm.js.map +1 -1
  68. package/dist/hooks/useAutoScroll.esm.js +11 -11
  69. package/dist/hooks/useAutoScroll.esm.js.map +1 -1
  70. package/dist/hooks/useBufferedMessages.esm.js +5 -5
  71. package/dist/hooks/useBufferedMessages.esm.js.map +1 -1
  72. package/dist/hooks/useIsMobile.esm.js +3 -3
  73. package/dist/hooks/useIsMobile.esm.js.map +1 -1
  74. package/dist/translations/de.esm.js +1 -2
  75. package/dist/translations/de.esm.js.map +1 -1
  76. package/dist/translations/es.esm.js +1 -2
  77. package/dist/translations/es.esm.js.map +1 -1
  78. package/dist/translations/fr.esm.js +1 -2
  79. package/dist/translations/fr.esm.js.map +1 -1
  80. package/dist/translations/it.esm.js +1 -2
  81. package/dist/translations/it.esm.js.map +1 -1
  82. package/dist/translations/ja.esm.js +1 -2
  83. package/dist/translations/ja.esm.js.map +1 -1
  84. package/dist/translations/ref.esm.js +1 -2
  85. package/dist/translations/ref.esm.js.map +1 -1
  86. package/dist/types.esm.js.map +1 -1
  87. package/dist/utils/fab-anchor-utils.esm.js +41 -0
  88. package/dist/utils/fab-anchor-utils.esm.js.map +1 -0
  89. package/dist/utils/scoped-dialog-utils.esm.js +6 -3
  90. package/dist/utils/scoped-dialog-utils.esm.js.map +1 -1
  91. package/package.json +4 -8
  92. package/dist/utils/generateClassName.esm.js +0 -12
  93. package/dist/utils/generateClassName.esm.js.map +0 -1
@@ -1,67 +1,67 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { makeStyles } from '@material-ui/core';
2
+ import { styled } from '@mui/material/styles';
3
3
  import Typography from '@mui/material/Typography';
4
- import { Switch, Modal, ModalHeader, Button, ModalBody, Stack, StackItem, Alert, Flex, FlexItem, Tooltip, Form, FormGroup, Radio, TextInputGroup, TextInputGroupMain, TextInputGroupUtilities, FormHelperText, HelperText, HelperTextItem, ModalFooter, Spinner, List, ListItem } from '@patternfly/react-core';
5
- import { TimesIcon, InfoCircleIcon, KeyIcon, CheckCircleIcon, ExclamationCircleIcon } from '@patternfly/react-icons';
4
+ import { Modal, Alert, Button, Switch, ModalHeader, ModalBody, Stack, StackItem, Flex, FlexItem, Tooltip, Form, FormGroup, Radio, TextInputGroup, TextInputGroupMain, TextInputGroupUtilities, FormHelperText, HelperText, HelperTextItem, ModalFooter, Spinner, List, ListItem } from '@patternfly/react-core';
5
+ import { CheckCircleIcon, ExclamationCircleIcon, InfoCircleIcon, KeyIcon, TimesIcon } from '@patternfly/react-icons';
6
6
  import { useTranslation } from '../hooks/useTranslation.esm.js';
7
7
 
8
- const useStyles = makeStyles({
9
- configureModal: {
10
- "& .pf-v6-c-modal-box__close, & .pf-v5-c-modal-box__close": {
11
- display: "none"
12
- },
13
- "& .pf-v6-c-modal-box__body, & .pf-v5-c-modal-box__body": {
14
- paddingTop: 0
15
- }
8
+ const StyledModal = styled(Modal)({
9
+ "& .pf-v6-c-modal-box__close, & .pf-v5-c-modal-box__close": {
10
+ display: "none"
11
+ },
12
+ "& .pf-v6-c-modal-box__body, & .pf-v5-c-modal-box__body": {
13
+ paddingTop: 0
16
14
  },
17
- modalCloseButton: {
15
+ "& .ia-mcp-modal-close": {
18
16
  position: "absolute",
19
- top: "var(--pf-v6-c-modal-box__close--InsetBlockStart, 1.5rem)",
20
- right: "var(--pf-v6-c-modal-box__close--InsetInlineEnd, 1.5rem)",
17
+ insetBlockStart: "var(--pf-v6-c-modal-box__close--InsetBlockStart, 1.5rem)",
18
+ insetInlineEnd: "var(--pf-v6-c-modal-box__close--InsetInlineEnd, 1.5rem)",
21
19
  zIndex: 1
22
- },
23
- modalInfoAlert: {
24
- "--pf-v6-c-alert--m-custom--BorderColor": "var(--pf-t--global--color--status--info--default)",
25
- "--pf-v6-c-alert--m-custom__icon--Color": "var(--pf-t--global--color--status--info--default)",
26
- "& .pf-v6-c-alert__icon": {
27
- alignSelf: "start",
28
- display: "flex",
29
- alignItems: "flex-start",
30
- justifyContent: "center",
31
- boxSizing: "border-box",
32
- marginBlockStart: 0,
33
- paddingBlockStart: "18.620px",
34
- paddingInline: "var(--pf-t--global--spacer--md)",
35
- paddingBlockEnd: "var(--pf-t--global--spacer--md)"
36
- }
37
- },
38
- sectionTitle: {
39
- fontSize: "0.875rem",
40
- fontWeight: 600
41
- },
42
- sectionDescription: {
43
- color: "var(--pf-t--global--text--color--subtle)",
44
- fontSize: "0.875rem"
45
- },
46
- credentialRadioDescription: {
47
- color: "var(--pf-t--global--text--color--subtle)",
48
- fontSize: "0.875rem"
49
- },
50
- statusOk: {
51
- color: "var(--pf-t--global--icon--color--status--custom--default)"
52
- },
53
- statusWarn: {
54
- color: "var(--pf-t--global--icon--color--status--danger--default)"
55
- },
56
- statusDisabled: {
57
- color: "var(--pf-t--global--icon--color--subtle)"
58
- },
59
- // Shape only; danger colors come from secondary + isDanger.
60
- removePersonalTokenButton: {
61
- borderRadius: "1.25rem",
62
- boxShadow: "none"
63
20
  }
64
21
  });
22
+ const ModalInfoAlert = styled(Alert)({
23
+ "--pf-v6-c-alert--m-custom--BorderColor": "var(--pf-t--global--color--status--info--default)",
24
+ "--pf-v6-c-alert--m-custom__icon--Color": "var(--pf-t--global--color--status--info--default)",
25
+ "& .pf-v6-c-alert__icon": {
26
+ alignSelf: "start",
27
+ display: "flex",
28
+ alignItems: "flex-start",
29
+ justifyContent: "center",
30
+ boxSizing: "border-box",
31
+ marginBlockStart: 0,
32
+ paddingBlockStart: "18.620px",
33
+ paddingInline: "var(--pf-t--global--spacer--md)",
34
+ paddingBlockEnd: "var(--pf-t--global--spacer--md)"
35
+ }
36
+ });
37
+ const sectionTitleSx = {
38
+ fontSize: "0.875rem",
39
+ fontWeight: 600
40
+ };
41
+ const sectionDescriptionSx = {
42
+ color: "var(--pf-t--global--text--color--subtle)",
43
+ fontSize: "0.875rem"
44
+ };
45
+ const credentialRadioDescriptionSx = {
46
+ color: "var(--pf-t--global--text--color--subtle)",
47
+ fontSize: "0.875rem"
48
+ };
49
+ const StatusOkIcon = styled(CheckCircleIcon)({
50
+ color: "var(--pf-t--global--icon--color--status--custom--default)"
51
+ });
52
+ const StatusWarnIcon = styled(ExclamationCircleIcon)({
53
+ color: "var(--pf-t--global--icon--color--status--danger--default)"
54
+ });
55
+ const StatusDisabledIcon = styled(InfoCircleIcon)({
56
+ color: "var(--pf-t--global--icon--color--subtle)"
57
+ });
58
+ const StatusWarnKeyIcon = styled(KeyIcon)({
59
+ color: "var(--pf-t--global--icon--color--status--danger--default)"
60
+ });
61
+ const RemovePersonalTokenButton = styled(Button)({
62
+ borderRadius: "1.25rem",
63
+ boxShadow: "none"
64
+ });
65
65
  const McpConfigureServerModal = ({
66
66
  isOpen,
67
67
  editingServer,
@@ -102,7 +102,6 @@ const McpConfigureServerModal = ({
102
102
  hasSavedTokenInModal,
103
103
  hasRemovedPersonalToken
104
104
  }) => {
105
- const classes = useStyles();
106
105
  const { t } = useTranslation();
107
106
  const renderStatusIcon = () => {
108
107
  if (isUpdatingModalStatus || isLoadingModalTools) {
@@ -115,18 +114,18 @@ const McpConfigureServerModal = ({
115
114
  );
116
115
  }
117
116
  if (modalDisplayStatus === "disabled") {
118
- return /* @__PURE__ */ jsx(InfoCircleIcon, { className: classes.statusDisabled });
117
+ return /* @__PURE__ */ jsx(StatusDisabledIcon, {});
119
118
  }
120
119
  if (modalDisplayStatus === "tokenRequired") {
121
- return /* @__PURE__ */ jsx(KeyIcon, { className: classes.statusWarn });
120
+ return /* @__PURE__ */ jsx(StatusWarnKeyIcon, {});
122
121
  }
123
122
  if (modalDisplayStatus === "ok" && modalTools.length > 0) {
124
- return /* @__PURE__ */ jsx(CheckCircleIcon, { className: classes.statusOk });
123
+ return /* @__PURE__ */ jsx(StatusOkIcon, {});
125
124
  }
126
125
  if (modalToolsError || modalDisplayStatus === "failed") {
127
- return /* @__PURE__ */ jsx(ExclamationCircleIcon, { className: classes.statusWarn });
126
+ return /* @__PURE__ */ jsx(StatusWarnIcon, {});
128
127
  }
129
- return /* @__PURE__ */ jsx(InfoCircleIcon, { className: classes.statusDisabled });
128
+ return /* @__PURE__ */ jsx(StatusDisabledIcon, {});
130
129
  };
131
130
  const renderToolsContent = () => {
132
131
  if (isLoadingModalTools) {
@@ -140,14 +139,7 @@ const McpConfigureServerModal = ({
140
139
  "aria-label": t("mcp.settings.modal.toolsHeading", {
141
140
  count: String(modalToolCount)
142
141
  }),
143
- children: modalTools.map((toolName) => /* @__PURE__ */ jsx(
144
- ListItem,
145
- {
146
- icon: /* @__PURE__ */ jsx(CheckCircleIcon, { className: classes.statusOk }),
147
- children: toolName
148
- },
149
- toolName
150
- ))
142
+ children: modalTools.map((toolName) => /* @__PURE__ */ jsx(ListItem, { icon: /* @__PURE__ */ jsx(StatusOkIcon, {}), children: toolName }, toolName))
151
143
  }
152
144
  );
153
145
  }
@@ -155,7 +147,8 @@ const McpConfigureServerModal = ({
155
147
  Typography,
156
148
  {
157
149
  component: "div",
158
- className: `${classes.sectionDescription} pf-v6-u-mt-xs`,
150
+ className: "pf-v6-u-mt-xs",
151
+ sx: sectionDescriptionSx,
159
152
  children: modalToolsEmptyText
160
153
  }
161
154
  );
@@ -173,13 +166,12 @@ const McpConfigureServerModal = ({
173
166
  }
174
167
  );
175
168
  return /* @__PURE__ */ jsxs(
176
- Modal,
169
+ StyledModal,
177
170
  {
178
171
  variant: "small",
179
172
  width: 608,
180
173
  isOpen,
181
174
  onClose: close,
182
- className: classes.configureModal,
183
175
  "aria-labelledby": "mcp-configure-modal",
184
176
  "aria-describedby": "mcp-configure-modal-body",
185
177
  children: [
@@ -194,41 +186,38 @@ const McpConfigureServerModal = ({
194
186
  /* @__PURE__ */ jsx(
195
187
  Button,
196
188
  {
189
+ className: "ia-mcp-modal-close",
197
190
  variant: "plain",
198
191
  icon: /* @__PURE__ */ jsx(TimesIcon, {}),
199
192
  "aria-label": t("mcp.settings.closeConfigureModalAriaLabel"),
200
- className: classes.modalCloseButton,
201
193
  onClick: close
202
194
  }
203
195
  ),
204
196
  /* @__PURE__ */ jsx(ModalBody, { id: "mcp-configure-modal-body", children: /* @__PURE__ */ jsxs(Stack, { hasGutter: true, children: [
205
197
  /* @__PURE__ */ jsx(StackItem, { children: /* @__PURE__ */ jsx(
206
- Alert,
198
+ ModalInfoAlert,
207
199
  {
208
200
  variant: "custom",
209
201
  customIcon: /* @__PURE__ */ jsx(InfoCircleIcon, {}),
210
202
  title: t("mcp.settings.modalDescription"),
211
- className: classes.modalInfoAlert,
212
203
  isInline: true
213
204
  }
214
205
  ) }),
215
206
  editingServer?.auth === "dcr" && /* @__PURE__ */ jsx(StackItem, { children: /* @__PURE__ */ jsx(
216
- Alert,
207
+ ModalInfoAlert,
217
208
  {
218
209
  variant: "custom",
219
210
  customIcon: /* @__PURE__ */ jsx(InfoCircleIcon, {}),
220
211
  title: t("mcp.settings.modalDescriptionDcr"),
221
- className: classes.modalInfoAlert,
222
212
  isInline: true
223
213
  }
224
214
  ) }),
225
215
  hasRemovedPersonalToken && !editingServer?.hasOrgToken && /* @__PURE__ */ jsx(StackItem, { children: /* @__PURE__ */ jsx(
226
- Alert,
216
+ ModalInfoAlert,
227
217
  {
228
218
  variant: "custom",
229
219
  customIcon: /* @__PURE__ */ jsx(InfoCircleIcon, {}),
230
220
  title: t("mcp.settings.modal.tokenRemovedWarning"),
231
- className: classes.modalInfoAlert,
232
221
  isInline: true
233
222
  }
234
223
  ) }),
@@ -237,7 +226,8 @@ const McpConfigureServerModal = ({
237
226
  Typography,
238
227
  {
239
228
  component: "div",
240
- className: `${classes.sectionTitle} pf-v6-u-mb-sm`,
229
+ sx: sectionTitleSx,
230
+ className: "pf-v6-u-mb-sm",
241
231
  children: t("mcp.settings.status")
242
232
  }
243
233
  ),
@@ -258,7 +248,8 @@ const McpConfigureServerModal = ({
258
248
  Typography,
259
249
  {
260
250
  component: "div",
261
- className: `${classes.sectionTitle} pf-v6-u-mb-sm`,
251
+ className: "pf-v6-u-mb-sm",
252
+ sx: sectionTitleSx,
262
253
  children: t("mcp.settings.modal.toolsHeading", {
263
254
  count: String(modalToolCount)
264
255
  })
@@ -278,7 +269,8 @@ const McpConfigureServerModal = ({
278
269
  Typography,
279
270
  {
280
271
  component: "div",
281
- className: `${classes.sectionTitle} pf-v6-u-mb-sm`,
272
+ className: "pf-v6-u-mb-sm",
273
+ sx: sectionTitleSx,
282
274
  children: t("mcp.settings.enabled")
283
275
  }
284
276
  ),
@@ -286,7 +278,8 @@ const McpConfigureServerModal = ({
286
278
  Typography,
287
279
  {
288
280
  component: "div",
289
- className: `${classes.sectionDescription} pf-v6-u-mt-xs`,
281
+ className: "pf-v6-u-mt-xs",
282
+ sx: sectionDescriptionSx,
290
283
  children: modalEnabledDescription
291
284
  }
292
285
  )
@@ -321,7 +314,8 @@ const McpConfigureServerModal = ({
321
314
  Typography,
322
315
  {
323
316
  component: "div",
324
- className: `${classes.credentialRadioDescription} pf-v6-u-ml-xl pf-v6-u-mt-xs`,
317
+ className: "pf-v6-u-ml-xl pf-v6-u-mt-xs",
318
+ sx: credentialRadioDescriptionSx,
325
319
  children: t(
326
320
  "mcp.settings.modal.credentialMode.organizationDescription"
327
321
  )
@@ -386,13 +380,12 @@ const McpConfigureServerModal = ({
386
380
  }
387
381
  ),
388
382
  canRemovePersonalToken && /* @__PURE__ */ jsx(
389
- Button,
383
+ RemovePersonalTokenButton,
390
384
  {
391
385
  variant: "secondary",
392
386
  isDanger: true,
393
387
  onClick: () => void removePersonalToken(),
394
388
  isDisabled: !canManageMcp || isConfigureModalSaving || tokenValidationState === "validating" || isUpdatingModalStatus || hasRemovedPersonalToken || !hasSavedTokenInModal,
395
- className: classes.removePersonalTokenButton,
396
389
  children: t("mcp.settings.removePersonalToken")
397
390
  }
398
391
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"McpConfigureServerModal.esm.js","sources":["../../src/components/McpConfigureServerModal.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { makeStyles } from '@material-ui/core';\nimport Typography from '@mui/material/Typography';\nimport {\n Alert,\n Button,\n Flex,\n FlexItem,\n Form,\n FormGroup,\n FormHelperText,\n HelperText,\n HelperTextItem,\n List,\n ListItem,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n Radio,\n Spinner,\n Stack,\n StackItem,\n Switch,\n TextInputGroup,\n TextInputGroupMain,\n TextInputGroupUtilities,\n Tooltip,\n} from '@patternfly/react-core';\nimport {\n CheckCircleIcon,\n ExclamationCircleIcon,\n InfoCircleIcon,\n KeyIcon,\n TimesIcon,\n} from '@patternfly/react-icons';\n\nimport { type UseMcpConfigureModalResult } from '../hooks/useMcpConfigureModal';\nimport { useTranslation } from '../hooks/useTranslation';\n\nconst useStyles = makeStyles({\n configureModal: {\n '& .pf-v6-c-modal-box__close, & .pf-v5-c-modal-box__close': {\n display: 'none',\n },\n '& .pf-v6-c-modal-box__body, & .pf-v5-c-modal-box__body': {\n paddingTop: 0,\n },\n },\n modalCloseButton: {\n position: 'absolute',\n top: 'var(--pf-v6-c-modal-box__close--InsetBlockStart, 1.5rem)',\n right: 'var(--pf-v6-c-modal-box__close--InsetInlineEnd, 1.5rem)',\n zIndex: 1,\n },\n modalInfoAlert: {\n '--pf-v6-c-alert--m-custom--BorderColor':\n 'var(--pf-t--global--color--status--info--default)',\n '--pf-v6-c-alert--m-custom__icon--Color':\n 'var(--pf-t--global--color--status--info--default)',\n '& .pf-v6-c-alert__icon': {\n alignSelf: 'start',\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'center',\n boxSizing: 'border-box',\n marginBlockStart: 0,\n paddingBlockStart: '18.620px',\n paddingInline: 'var(--pf-t--global--spacer--md)',\n paddingBlockEnd: 'var(--pf-t--global--spacer--md)',\n },\n },\n sectionTitle: {\n fontSize: '0.875rem',\n fontWeight: 600,\n },\n sectionDescription: {\n color: 'var(--pf-t--global--text--color--subtle)',\n fontSize: '0.875rem',\n },\n credentialRadioDescription: {\n color: 'var(--pf-t--global--text--color--subtle)',\n fontSize: '0.875rem',\n },\n statusOk: {\n color: 'var(--pf-t--global--icon--color--status--custom--default)',\n },\n statusWarn: {\n color: 'var(--pf-t--global--icon--color--status--danger--default)',\n },\n statusDisabled: {\n color: 'var(--pf-t--global--icon--color--subtle)',\n },\n // Shape only; danger colors come from secondary + isDanger.\n removePersonalTokenButton: {\n borderRadius: '1.25rem',\n boxShadow: 'none',\n },\n});\n\ntype McpConfigureServerModalProps = UseMcpConfigureModalResult;\n\nexport const McpConfigureServerModal = ({\n isOpen,\n editingServer,\n close,\n save,\n removePersonalToken,\n canManageMcp,\n configureModalTitle,\n isConfigureModalSaving,\n isSaveTokenButtonDisabled,\n isUpdatingModalStatus,\n tokenInputValue,\n onTokenInputChange,\n clearTokenInput,\n tokenInputValidated,\n tokenValidationState,\n tokenHelperVariant,\n showTokenHelperText,\n tokenHelperText,\n modalCredentialMode,\n onCredentialModeChange,\n showCredentialRadios,\n showPersonalTokenField,\n onModalEnabledChange,\n isModalEnabledChecked,\n isModalEnabledToggleDisabled,\n modalDisplayStatus,\n modalStatusDetail,\n modalStatusText,\n modalTools,\n modalToolCount,\n isLoadingModalTools,\n modalToolsError,\n modalToolsEmptyText,\n modalVerifiedHasToken,\n modalEnabledDescription,\n canRemovePersonalToken,\n hasSavedTokenInModal,\n hasRemovedPersonalToken,\n}: McpConfigureServerModalProps) => {\n const classes = useStyles();\n const { t } = useTranslation();\n\n const renderStatusIcon = () => {\n if (isUpdatingModalStatus || isLoadingModalTools) {\n return (\n <Spinner\n size=\"md\"\n aria-label={\n isUpdatingModalStatus\n ? t('mcp.settings.modal.loadingStatus')\n : t('mcp.settings.modal.fetchingStatus')\n }\n />\n );\n }\n if (modalDisplayStatus === 'disabled') {\n return <InfoCircleIcon className={classes.statusDisabled} />;\n }\n if (modalDisplayStatus === 'tokenRequired') {\n return <KeyIcon className={classes.statusWarn} />;\n }\n if (modalDisplayStatus === 'ok' && modalTools.length > 0) {\n return <CheckCircleIcon className={classes.statusOk} />;\n }\n if (modalToolsError || modalDisplayStatus === 'failed') {\n return <ExclamationCircleIcon className={classes.statusWarn} />;\n }\n return <InfoCircleIcon className={classes.statusDisabled} />;\n };\n\n const renderToolsContent = () => {\n if (isLoadingModalTools) {\n return (\n <Spinner size=\"md\" aria-label={t('mcp.settings.modal.loadingTools')} />\n );\n }\n if (modalTools.length > 0) {\n return (\n <List\n isPlain\n aria-label={t('mcp.settings.modal.toolsHeading' as any, {\n count: String(modalToolCount),\n })}\n >\n {modalTools.map(toolName => (\n <ListItem\n key={toolName}\n icon={<CheckCircleIcon className={classes.statusOk} />}\n >\n {toolName}\n </ListItem>\n ))}\n </List>\n );\n }\n return (\n <Typography\n component=\"div\"\n className={`${classes.sectionDescription} pf-v6-u-mt-xs`}\n >\n {modalToolsEmptyText}\n </Typography>\n );\n };\n\n const enabledSwitch = (\n <Switch\n id=\"mcp-configure-enabled-switch\"\n aria-label={t('mcp.settings.toggleServerAriaLabel' as any, {\n serverName: editingServer?.name ?? '',\n })}\n isChecked={isModalEnabledChecked}\n isDisabled={isModalEnabledToggleDisabled}\n onChange={onModalEnabledChange}\n />\n );\n\n return (\n <Modal\n variant=\"small\"\n width={608}\n isOpen={isOpen}\n onClose={close}\n className={classes.configureModal}\n aria-labelledby=\"mcp-configure-modal\"\n aria-describedby=\"mcp-configure-modal-body\"\n >\n <ModalHeader\n title={configureModalTitle}\n labelId=\"mcp-configure-modal\"\n descriptorId=\"mcp-configure-modal-body\"\n />\n <Button\n variant=\"plain\"\n icon={<TimesIcon />}\n aria-label={t('mcp.settings.closeConfigureModalAriaLabel')}\n className={classes.modalCloseButton}\n onClick={close}\n />\n <ModalBody id=\"mcp-configure-modal-body\">\n <Stack hasGutter>\n <StackItem>\n <Alert\n variant=\"custom\"\n customIcon={<InfoCircleIcon />}\n title={t('mcp.settings.modalDescription')}\n className={classes.modalInfoAlert}\n isInline\n />\n </StackItem>\n {editingServer?.auth === 'dcr' && (\n <StackItem>\n <Alert\n variant=\"custom\"\n customIcon={<InfoCircleIcon />}\n title={t('mcp.settings.modalDescriptionDcr')}\n className={classes.modalInfoAlert}\n isInline\n />\n </StackItem>\n )}\n {hasRemovedPersonalToken && !editingServer?.hasOrgToken && (\n <StackItem>\n <Alert\n variant=\"custom\"\n customIcon={<InfoCircleIcon />}\n title={t('mcp.settings.modal.tokenRemovedWarning')}\n className={classes.modalInfoAlert}\n isInline\n />\n </StackItem>\n )}\n <StackItem>\n <Typography\n component=\"div\"\n className={`${classes.sectionTitle} pf-v6-u-mb-sm`}\n >\n {t('mcp.settings.status')}\n </Typography>\n <Flex\n alignItems={{ default: 'alignItemsCenter' }}\n spaceItems={{ default: 'spaceItemsSm' }}\n >\n <FlexItem>{renderStatusIcon()}</FlexItem>\n <FlexItem>\n <Typography component=\"span\">{modalStatusText}</Typography>\n </FlexItem>\n </Flex>\n </StackItem>\n {modalVerifiedHasToken && modalDisplayStatus === 'ok' && (\n <StackItem>\n <Typography\n component=\"div\"\n className={`${classes.sectionTitle} pf-v6-u-mb-sm`}\n >\n {t('mcp.settings.modal.toolsHeading' as any, {\n count: String(modalToolCount),\n })}\n </Typography>\n {renderToolsContent()}\n </StackItem>\n )}\n <StackItem>\n <Flex\n justifyContent={{ default: 'justifyContentSpaceBetween' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n spaceItems={{ default: 'spaceItemsMd' }}\n >\n <FlexItem flex={{ default: 'flex_1' }}>\n <Typography\n component=\"div\"\n className={`${classes.sectionTitle} pf-v6-u-mb-sm`}\n >\n {t('mcp.settings.enabled')}\n </Typography>\n <Typography\n component=\"div\"\n className={`${classes.sectionDescription} pf-v6-u-mt-xs`}\n >\n {modalEnabledDescription}\n </Typography>\n </FlexItem>\n <FlexItem>\n {isModalEnabledToggleDisabled ? (\n <Tooltip content={modalStatusDetail}>\n <Typography component=\"span\">{enabledSwitch}</Typography>\n </Tooltip>\n ) : (\n enabledSwitch\n )}\n </FlexItem>\n </Flex>\n </StackItem>\n {(showCredentialRadios || showPersonalTokenField) && (\n <StackItem>\n <Form>\n {showCredentialRadios && (\n <FormGroup\n role=\"radiogroup\"\n id=\"mcp-credential-mode\"\n fieldId=\"mcp-credential-mode\"\n label={t('mcp.settings.modal.authenticationHeading')}\n >\n <Stack hasGutter>\n <StackItem>\n <Radio\n id=\"mcp-credential-organization\"\n name=\"mcp-credential-mode\"\n label={t(\n 'mcp.settings.modal.credentialMode.organization',\n )}\n isChecked={modalCredentialMode === 'organization'}\n onChange={() =>\n onCredentialModeChange('organization')\n }\n />\n <Typography\n component=\"div\"\n className={`${classes.credentialRadioDescription} pf-v6-u-ml-xl pf-v6-u-mt-xs`}\n >\n {t(\n 'mcp.settings.modal.credentialMode.organizationDescription',\n )}\n </Typography>\n </StackItem>\n <StackItem>\n <Radio\n id=\"mcp-credential-personal\"\n name=\"mcp-credential-mode\"\n label={t(\n 'mcp.settings.modal.credentialMode.personal',\n )}\n isChecked={modalCredentialMode === 'personal'}\n onChange={() => onCredentialModeChange('personal')}\n />\n </StackItem>\n </Stack>\n </FormGroup>\n )}\n {showPersonalTokenField && (\n <FormGroup\n label={t('mcp.settings.authenticationToken')}\n fieldId=\"mcp-pat-input\"\n >\n <TextInputGroup validated={tokenInputValidated}>\n <TextInputGroupMain\n inputId=\"mcp-pat-input\"\n type=\"password\"\n value={tokenInputValue}\n onChange={(_event, value) => onTokenInputChange(value)}\n />\n {(tokenValidationState === 'idle' ||\n tokenValidationState === 'validating') && (\n <TextInputGroupUtilities>\n <Button\n variant=\"plain\"\n onClick={clearTokenInput}\n aria-label={t('mcp.settings.token.clearAriaLabel')}\n icon={<TimesIcon />}\n />\n </TextInputGroupUtilities>\n )}\n </TextInputGroup>\n {showTokenHelperText && (\n <FormHelperText>\n <HelperText>\n <HelperTextItem variant={tokenHelperVariant}>\n {tokenHelperText}\n </HelperTextItem>\n </HelperText>\n </FormHelperText>\n )}\n </FormGroup>\n )}\n </Form>\n </StackItem>\n )}\n </Stack>\n </ModalBody>\n <ModalFooter>\n <Button\n variant=\"primary\"\n onClick={() => void save()}\n isDisabled={\n !canManageMcp ||\n isConfigureModalSaving ||\n tokenValidationState === 'validating' ||\n isSaveTokenButtonDisabled ||\n isUpdatingModalStatus\n }\n >\n {t('modal.save')}\n </Button>\n {canRemovePersonalToken && (\n <Button\n variant=\"secondary\"\n isDanger\n onClick={() => void removePersonalToken()}\n isDisabled={\n !canManageMcp ||\n isConfigureModalSaving ||\n tokenValidationState === 'validating' ||\n isUpdatingModalStatus ||\n hasRemovedPersonalToken ||\n !hasSavedTokenInModal\n }\n className={classes.removePersonalTokenButton}\n >\n {t('mcp.settings.removePersonalToken')}\n </Button>\n )}\n <Button variant=\"link\" onClick={close}>\n {t('common.cancel')}\n </Button>\n </ModalFooter>\n </Modal>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"McpConfigureServerModal.esm.js","sources":["../../src/components/McpConfigureServerModal.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\nimport {\n Alert,\n Button,\n Flex,\n FlexItem,\n Form,\n FormGroup,\n FormHelperText,\n HelperText,\n HelperTextItem,\n List,\n ListItem,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n Radio,\n Spinner,\n Stack,\n StackItem,\n Switch,\n TextInputGroup,\n TextInputGroupMain,\n TextInputGroupUtilities,\n Tooltip,\n} from '@patternfly/react-core';\nimport {\n CheckCircleIcon,\n ExclamationCircleIcon,\n InfoCircleIcon,\n KeyIcon,\n TimesIcon,\n} from '@patternfly/react-icons';\n\nimport { type UseMcpConfigureModalResult } from '../hooks/useMcpConfigureModal';\nimport { useTranslation } from '../hooks/useTranslation';\n\nconst StyledModal = styled(Modal)({\n '& .pf-v6-c-modal-box__close, & .pf-v5-c-modal-box__close': {\n display: 'none',\n },\n '& .pf-v6-c-modal-box__body, & .pf-v5-c-modal-box__body': {\n paddingTop: 0,\n },\n '& .ia-mcp-modal-close': {\n position: 'absolute',\n insetBlockStart: 'var(--pf-v6-c-modal-box__close--InsetBlockStart, 1.5rem)',\n insetInlineEnd: 'var(--pf-v6-c-modal-box__close--InsetInlineEnd, 1.5rem)',\n zIndex: 1,\n },\n});\n\nconst ModalInfoAlert = styled(Alert)({\n '--pf-v6-c-alert--m-custom--BorderColor':\n 'var(--pf-t--global--color--status--info--default)',\n '--pf-v6-c-alert--m-custom__icon--Color':\n 'var(--pf-t--global--color--status--info--default)',\n '& .pf-v6-c-alert__icon': {\n alignSelf: 'start',\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'center',\n boxSizing: 'border-box',\n marginBlockStart: 0,\n paddingBlockStart: '18.620px',\n paddingInline: 'var(--pf-t--global--spacer--md)',\n paddingBlockEnd: 'var(--pf-t--global--spacer--md)',\n },\n});\n\nconst sectionTitleSx = {\n fontSize: '0.875rem',\n fontWeight: 600,\n} as const;\n\nconst sectionDescriptionSx = {\n color: 'var(--pf-t--global--text--color--subtle)',\n fontSize: '0.875rem',\n} as const;\n\nconst credentialRadioDescriptionSx = {\n color: 'var(--pf-t--global--text--color--subtle)',\n fontSize: '0.875rem',\n} as const;\n\nconst StatusOkIcon = styled(CheckCircleIcon)({\n color: 'var(--pf-t--global--icon--color--status--custom--default)',\n});\n\nconst StatusWarnIcon = styled(ExclamationCircleIcon)({\n color: 'var(--pf-t--global--icon--color--status--danger--default)',\n});\n\nconst StatusDisabledIcon = styled(InfoCircleIcon)({\n color: 'var(--pf-t--global--icon--color--subtle)',\n});\n\nconst StatusWarnKeyIcon = styled(KeyIcon)({\n color: 'var(--pf-t--global--icon--color--status--danger--default)',\n});\n\nconst RemovePersonalTokenButton = styled(Button)({\n borderRadius: '1.25rem',\n boxShadow: 'none',\n});\n\ntype McpConfigureServerModalProps = UseMcpConfigureModalResult;\n\nexport const McpConfigureServerModal = ({\n isOpen,\n editingServer,\n close,\n save,\n removePersonalToken,\n canManageMcp,\n configureModalTitle,\n isConfigureModalSaving,\n isSaveTokenButtonDisabled,\n isUpdatingModalStatus,\n tokenInputValue,\n onTokenInputChange,\n clearTokenInput,\n tokenInputValidated,\n tokenValidationState,\n tokenHelperVariant,\n showTokenHelperText,\n tokenHelperText,\n modalCredentialMode,\n onCredentialModeChange,\n showCredentialRadios,\n showPersonalTokenField,\n onModalEnabledChange,\n isModalEnabledChecked,\n isModalEnabledToggleDisabled,\n modalDisplayStatus,\n modalStatusDetail,\n modalStatusText,\n modalTools,\n modalToolCount,\n isLoadingModalTools,\n modalToolsError,\n modalToolsEmptyText,\n modalVerifiedHasToken,\n modalEnabledDescription,\n canRemovePersonalToken,\n hasSavedTokenInModal,\n hasRemovedPersonalToken,\n}: McpConfigureServerModalProps) => {\n const { t } = useTranslation();\n\n const renderStatusIcon = () => {\n if (isUpdatingModalStatus || isLoadingModalTools) {\n return (\n <Spinner\n size=\"md\"\n aria-label={\n isUpdatingModalStatus\n ? t('mcp.settings.modal.loadingStatus')\n : t('mcp.settings.modal.fetchingStatus')\n }\n />\n );\n }\n if (modalDisplayStatus === 'disabled') {\n return <StatusDisabledIcon />;\n }\n if (modalDisplayStatus === 'tokenRequired') {\n return <StatusWarnKeyIcon />;\n }\n if (modalDisplayStatus === 'ok' && modalTools.length > 0) {\n return <StatusOkIcon />;\n }\n if (modalToolsError || modalDisplayStatus === 'failed') {\n return <StatusWarnIcon />;\n }\n return <StatusDisabledIcon />;\n };\n\n const renderToolsContent = () => {\n if (isLoadingModalTools) {\n return (\n <Spinner size=\"md\" aria-label={t('mcp.settings.modal.loadingTools')} />\n );\n }\n if (modalTools.length > 0) {\n return (\n <List\n isPlain\n aria-label={t('mcp.settings.modal.toolsHeading' as any, {\n count: String(modalToolCount),\n })}\n >\n {modalTools.map(toolName => (\n <ListItem key={toolName} icon={<StatusOkIcon />}>\n {toolName}\n </ListItem>\n ))}\n </List>\n );\n }\n return (\n <Typography\n component=\"div\"\n className=\"pf-v6-u-mt-xs\"\n sx={sectionDescriptionSx}\n >\n {modalToolsEmptyText}\n </Typography>\n );\n };\n\n const enabledSwitch = (\n <Switch\n id=\"mcp-configure-enabled-switch\"\n aria-label={t('mcp.settings.toggleServerAriaLabel' as any, {\n serverName: editingServer?.name ?? '',\n })}\n isChecked={isModalEnabledChecked}\n isDisabled={isModalEnabledToggleDisabled}\n onChange={onModalEnabledChange}\n />\n );\n\n return (\n <StyledModal\n variant=\"small\"\n width={608}\n isOpen={isOpen}\n onClose={close}\n aria-labelledby=\"mcp-configure-modal\"\n aria-describedby=\"mcp-configure-modal-body\"\n >\n <ModalHeader\n title={configureModalTitle}\n labelId=\"mcp-configure-modal\"\n descriptorId=\"mcp-configure-modal-body\"\n />\n <Button\n className=\"ia-mcp-modal-close\"\n variant=\"plain\"\n icon={<TimesIcon />}\n aria-label={t('mcp.settings.closeConfigureModalAriaLabel')}\n onClick={close}\n />\n <ModalBody id=\"mcp-configure-modal-body\">\n <Stack hasGutter>\n <StackItem>\n <ModalInfoAlert\n variant=\"custom\"\n customIcon={<InfoCircleIcon />}\n title={t('mcp.settings.modalDescription')}\n isInline\n />\n </StackItem>\n {editingServer?.auth === 'dcr' && (\n <StackItem>\n <ModalInfoAlert\n variant=\"custom\"\n customIcon={<InfoCircleIcon />}\n title={t('mcp.settings.modalDescriptionDcr')}\n isInline\n />\n </StackItem>\n )}\n {hasRemovedPersonalToken && !editingServer?.hasOrgToken && (\n <StackItem>\n <ModalInfoAlert\n variant=\"custom\"\n customIcon={<InfoCircleIcon />}\n title={t('mcp.settings.modal.tokenRemovedWarning')}\n isInline\n />\n </StackItem>\n )}\n <StackItem>\n <Typography\n component=\"div\"\n sx={sectionTitleSx}\n className=\"pf-v6-u-mb-sm\"\n >\n {t('mcp.settings.status')}\n </Typography>\n <Flex\n alignItems={{ default: 'alignItemsCenter' }}\n spaceItems={{ default: 'spaceItemsSm' }}\n >\n <FlexItem>{renderStatusIcon()}</FlexItem>\n <FlexItem>\n <Typography component=\"span\">{modalStatusText}</Typography>\n </FlexItem>\n </Flex>\n </StackItem>\n {modalVerifiedHasToken && modalDisplayStatus === 'ok' && (\n <StackItem>\n <Typography\n component=\"div\"\n className=\"pf-v6-u-mb-sm\"\n sx={sectionTitleSx}\n >\n {t('mcp.settings.modal.toolsHeading' as any, {\n count: String(modalToolCount),\n })}\n </Typography>\n {renderToolsContent()}\n </StackItem>\n )}\n <StackItem>\n <Flex\n justifyContent={{ default: 'justifyContentSpaceBetween' }}\n alignItems={{ default: 'alignItemsFlexStart' }}\n spaceItems={{ default: 'spaceItemsMd' }}\n >\n <FlexItem flex={{ default: 'flex_1' }}>\n <Typography\n component=\"div\"\n className=\"pf-v6-u-mb-sm\"\n sx={sectionTitleSx}\n >\n {t('mcp.settings.enabled')}\n </Typography>\n <Typography\n component=\"div\"\n className=\"pf-v6-u-mt-xs\"\n sx={sectionDescriptionSx}\n >\n {modalEnabledDescription}\n </Typography>\n </FlexItem>\n <FlexItem>\n {isModalEnabledToggleDisabled ? (\n <Tooltip content={modalStatusDetail}>\n <Typography component=\"span\">{enabledSwitch}</Typography>\n </Tooltip>\n ) : (\n enabledSwitch\n )}\n </FlexItem>\n </Flex>\n </StackItem>\n {(showCredentialRadios || showPersonalTokenField) && (\n <StackItem>\n <Form>\n {showCredentialRadios && (\n <FormGroup\n role=\"radiogroup\"\n id=\"mcp-credential-mode\"\n fieldId=\"mcp-credential-mode\"\n label={t('mcp.settings.modal.authenticationHeading')}\n >\n <Stack hasGutter>\n <StackItem>\n <Radio\n id=\"mcp-credential-organization\"\n name=\"mcp-credential-mode\"\n label={t(\n 'mcp.settings.modal.credentialMode.organization',\n )}\n isChecked={modalCredentialMode === 'organization'}\n onChange={() =>\n onCredentialModeChange('organization')\n }\n />\n <Typography\n component=\"div\"\n className=\"pf-v6-u-ml-xl pf-v6-u-mt-xs\"\n sx={credentialRadioDescriptionSx}\n >\n {t(\n 'mcp.settings.modal.credentialMode.organizationDescription',\n )}\n </Typography>\n </StackItem>\n <StackItem>\n <Radio\n id=\"mcp-credential-personal\"\n name=\"mcp-credential-mode\"\n label={t(\n 'mcp.settings.modal.credentialMode.personal',\n )}\n isChecked={modalCredentialMode === 'personal'}\n onChange={() => onCredentialModeChange('personal')}\n />\n </StackItem>\n </Stack>\n </FormGroup>\n )}\n {showPersonalTokenField && (\n <FormGroup\n label={t('mcp.settings.authenticationToken')}\n fieldId=\"mcp-pat-input\"\n >\n <TextInputGroup validated={tokenInputValidated}>\n <TextInputGroupMain\n inputId=\"mcp-pat-input\"\n type=\"password\"\n value={tokenInputValue}\n onChange={(_event, value) => onTokenInputChange(value)}\n />\n {(tokenValidationState === 'idle' ||\n tokenValidationState === 'validating') && (\n <TextInputGroupUtilities>\n <Button\n variant=\"plain\"\n onClick={clearTokenInput}\n aria-label={t('mcp.settings.token.clearAriaLabel')}\n icon={<TimesIcon />}\n />\n </TextInputGroupUtilities>\n )}\n </TextInputGroup>\n {showTokenHelperText && (\n <FormHelperText>\n <HelperText>\n <HelperTextItem variant={tokenHelperVariant}>\n {tokenHelperText}\n </HelperTextItem>\n </HelperText>\n </FormHelperText>\n )}\n </FormGroup>\n )}\n </Form>\n </StackItem>\n )}\n </Stack>\n </ModalBody>\n <ModalFooter>\n <Button\n variant=\"primary\"\n onClick={() => void save()}\n isDisabled={\n !canManageMcp ||\n isConfigureModalSaving ||\n tokenValidationState === 'validating' ||\n isSaveTokenButtonDisabled ||\n isUpdatingModalStatus\n }\n >\n {t('modal.save')}\n </Button>\n {canRemovePersonalToken && (\n <RemovePersonalTokenButton\n variant=\"secondary\"\n isDanger\n onClick={() => void removePersonalToken()}\n isDisabled={\n !canManageMcp ||\n isConfigureModalSaving ||\n tokenValidationState === 'validating' ||\n isUpdatingModalStatus ||\n hasRemovedPersonalToken ||\n !hasSavedTokenInModal\n }\n >\n {t('mcp.settings.removePersonalToken')}\n </RemovePersonalTokenButton>\n )}\n <Button variant=\"link\" onClick={close}>\n {t('common.cancel')}\n </Button>\n </ModalFooter>\n </StyledModal>\n );\n};\n"],"names":[],"mappings":"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"}