@red-hat-developer-hub/backstage-plugin-lightspeed 0.5.7 → 0.6.0

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 (59) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/Attachment.esm.js +71 -61
  3. package/dist/components/Attachment.esm.js.map +1 -1
  4. package/dist/components/AttachmentContext.esm.js +32 -23
  5. package/dist/components/AttachmentContext.esm.js.map +1 -1
  6. package/dist/components/DeleteModal.esm.js +24 -15
  7. package/dist/components/DeleteModal.esm.js.map +1 -1
  8. package/dist/components/FilePreview.esm.js +16 -13
  9. package/dist/components/FilePreview.esm.js.map +1 -1
  10. package/dist/components/LightSpeedChat.esm.js +172 -129
  11. package/dist/components/LightSpeedChat.esm.js.map +1 -1
  12. package/dist/components/LightspeedChatBox.esm.js +43 -34
  13. package/dist/components/LightspeedChatBox.esm.js.map +1 -1
  14. package/dist/components/LightspeedChatBoxHeader.esm.js +15 -12
  15. package/dist/components/LightspeedChatBoxHeader.esm.js.map +1 -1
  16. package/dist/components/LightspeedIcon.esm.js +11 -2
  17. package/dist/components/LightspeedIcon.esm.js.map +1 -1
  18. package/dist/components/LightspeedPage.esm.js +32 -26
  19. package/dist/components/LightspeedPage.esm.js.map +1 -1
  20. package/dist/components/PermissionRequiredIcon.esm.js +10 -2
  21. package/dist/components/PermissionRequiredIcon.esm.js.map +1 -1
  22. package/dist/components/PermissionRequiredState.esm.js +25 -11
  23. package/dist/components/PermissionRequiredState.esm.js.map +1 -1
  24. package/dist/components/Trans.esm.js +33 -0
  25. package/dist/components/Trans.esm.js.map +1 -0
  26. package/dist/const.esm.js +20 -43
  27. package/dist/const.esm.js.map +1 -1
  28. package/dist/hooks/useAutoScroll.esm.js +11 -11
  29. package/dist/hooks/useAutoScroll.esm.js.map +1 -1
  30. package/dist/hooks/useBufferedMessages.esm.js +5 -5
  31. package/dist/hooks/useBufferedMessages.esm.js.map +1 -1
  32. package/dist/hooks/useConversationMessages.esm.js +8 -8
  33. package/dist/hooks/useConversationMessages.esm.js.map +1 -1
  34. package/dist/hooks/useFeedbackActions.esm.js +47 -18
  35. package/dist/hooks/useFeedbackActions.esm.js.map +1 -1
  36. package/dist/hooks/useIsMobile.esm.js +3 -3
  37. package/dist/hooks/useIsMobile.esm.js.map +1 -1
  38. package/dist/hooks/useLastOpenedConversation.esm.js.map +1 -1
  39. package/dist/hooks/useTranslation.esm.js +7 -0
  40. package/dist/hooks/useTranslation.esm.js.map +1 -0
  41. package/dist/hooks/useWelcomePrompts.esm.js +21 -6
  42. package/dist/hooks/useWelcomePrompts.esm.js.map +1 -1
  43. package/dist/index.d.ts +11 -5
  44. package/dist/index.esm.js +1 -0
  45. package/dist/index.esm.js.map +1 -1
  46. package/dist/translations/de.esm.js +128 -0
  47. package/dist/translations/de.esm.js.map +1 -0
  48. package/dist/translations/es.esm.js +128 -0
  49. package/dist/translations/es.esm.js.map +1 -0
  50. package/dist/translations/fr.esm.js +128 -0
  51. package/dist/translations/fr.esm.js.map +1 -0
  52. package/dist/translations/index.esm.js +14 -0
  53. package/dist/translations/index.esm.js.map +1 -0
  54. package/dist/translations/translationRef.esm.js +128 -0
  55. package/dist/translations/translationRef.esm.js.map +1 -0
  56. package/dist/types.esm.js.map +1 -1
  57. package/dist/utils/lightspeed-chatbox-utils.esm.js +24 -21
  58. package/dist/utils/lightspeed-chatbox-utils.esm.js.map +1 -1
  59. package/package.json +12 -12
@@ -1,8 +1,8 @@
1
- import React__default from 'react';
1
+ import React from 'react';
2
2
 
3
3
  const useIsMobile = () => {
4
- const [isMobile, setIsMobile] = React__default.useState(window.innerWidth <= 768);
5
- React__default.useEffect(() => {
4
+ const [isMobile, setIsMobile] = React.useState(window.innerWidth <= 768);
5
+ React.useEffect(() => {
6
6
  const handleResize = () => setIsMobile(window.innerWidth <= 768);
7
7
  window.addEventListener("resize", handleResize);
8
8
  return () => window.removeEventListener("resize", handleResize);
@@ -1 +1 @@
1
- {"version":3,"file":"useIsMobile.esm.js","sources":["../../src/hooks/useIsMobile.ts"],"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 */\nimport React from 'react';\n\nexport const useIsMobile = () => {\n const [isMobile, setIsMobile] = React.useState(window.innerWidth <= 768);\n\n React.useEffect(() => {\n const handleResize = () => setIsMobile(window.innerWidth <= 768);\n window.addEventListener('resize', handleResize);\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return isMobile;\n};\n"],"names":["React"],"mappings":";;AAiBO,MAAM,cAAc,MAAM;AAC/B,EAAM,MAAA,CAAC,UAAU,WAAW,CAAA,GAAIA,eAAM,QAAS,CAAA,MAAA,CAAO,cAAc,GAAG,CAAA;AAEvE,EAAAA,cAAA,CAAM,UAAU,MAAM;AACpB,IAAA,MAAM,YAAe,GAAA,MAAM,WAAY,CAAA,MAAA,CAAO,cAAc,GAAG,CAAA;AAC/D,IAAO,MAAA,CAAA,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAE9C,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAoB,CAAA,QAAA,EAAU,YAAY,CAAA;AAAA,GAChE,EAAG,EAAE,CAAA;AAEL,EAAO,OAAA,QAAA;AACT;;;;"}
1
+ {"version":3,"file":"useIsMobile.esm.js","sources":["../../src/hooks/useIsMobile.ts"],"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 */\nimport React from 'react';\n\nexport const useIsMobile = () => {\n const [isMobile, setIsMobile] = React.useState(window.innerWidth <= 768);\n\n React.useEffect(() => {\n const handleResize = () => setIsMobile(window.innerWidth <= 768);\n window.addEventListener('resize', handleResize);\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return isMobile;\n};\n"],"names":[],"mappings":";;AAiBO,MAAM,cAAc,MAAM;AAC/B,EAAM,MAAA,CAAC,UAAU,WAAW,CAAA,GAAI,MAAM,QAAS,CAAA,MAAA,CAAO,cAAc,GAAG,CAAA;AAEvE,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,MAAM,YAAe,GAAA,MAAM,WAAY,CAAA,MAAA,CAAO,cAAc,GAAG,CAAA;AAC/D,IAAO,MAAA,CAAA,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAE9C,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAoB,CAAA,QAAA,EAAU,YAAY,CAAA;AAAA,GAChE,EAAG,EAAE,CAAA;AAEL,EAAO,OAAA,QAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLastOpenedConversation.esm.js","sources":["../../src/hooks/useLastOpenedConversation.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\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 */\nimport {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\ntype UseLastOpenedConversationReturn = {\n lastOpenedId: string | null;\n setLastOpenedId: Dispatch<SetStateAction<string | null>>;\n clearLastOpenedId: () => void;\n isReady: boolean;\n};\n\nexport const useLastOpenedConversation = (\n user: string | undefined,\n key = 'lastOpenedConversation',\n): UseLastOpenedConversationReturn => {\n const [lastOpenedId, setLastOpenedId] = useState<string | null>(null);\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n if (!user) {\n setLastOpenedId(null);\n setIsReady(false);\n return;\n }\n\n try {\n const storedData = localStorage.getItem(key);\n const parsedData = storedData ? JSON.parse(storedData) : {};\n setLastOpenedId(parsedData[user] || null);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error accessing localStorage:', error);\n } finally {\n setIsReady(true);\n }\n }, [user, key]);\n\n useEffect(() => {\n if (!user || lastOpenedId === null) return;\n // Update localStorage whenever the last opened ID changes\n try {\n const storedData = localStorage.getItem(key);\n const parsedData = storedData ? JSON.parse(storedData) : {};\n\n if (parsedData[user] !== lastOpenedId) {\n parsedData[user] = lastOpenedId;\n localStorage.setItem(key, JSON.stringify(parsedData));\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error updating localStorage:', error);\n }\n }, [lastOpenedId, user, key]);\n\n const clearLastOpenedId = useCallback(() => {\n if (!user) return;\n\n try {\n const storedData = localStorage.getItem(key);\n const parsedData = storedData ? JSON.parse(storedData) : {};\n delete parsedData[user];\n localStorage.setItem(key, JSON.stringify(parsedData));\n setLastOpenedId(null);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error clearing localStorage:', error);\n }\n }, [user, key]);\n\n return { lastOpenedId, setLastOpenedId, clearLastOpenedId, isReady };\n};\n"],"names":[],"mappings":";;AA8BO,MAAM,yBAA4B,GAAA,CACvC,IACA,EAAA,GAAA,GAAM,wBAC8B,KAAA;AACpC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA;AAAA;AAGF,IAAI,IAAA;AACF,MAAM,MAAA,UAAA,GAAa,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA;AAC3C,MAAA,MAAM,aAAa,UAAa,GAAA,IAAA,CAAK,KAAM,CAAA,UAAU,IAAI,EAAC;AAC1D,MAAgB,eAAA,CAAA,UAAA,CAAW,IAAI,CAAA,IAAK,IAAI,CAAA;AAAA,aACjC,KAAO,EAAA;AAEd,MAAQ,OAAA,CAAA,KAAA,CAAM,iCAAiC,KAAK,CAAA;AAAA,KACpD,SAAA;AACA,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA;AACjB,GACC,EAAA,CAAC,IAAM,EAAA,GAAG,CAAC,CAAA;AAEd,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,IAAQ,IAAA,YAAA,KAAiB,IAAM,EAAA;AAEpC,IAAI,IAAA;AACF,MAAM,MAAA,UAAA,GAAa,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA;AAC3C,MAAA,MAAM,aAAa,UAAa,GAAA,IAAA,CAAK,KAAM,CAAA,UAAU,IAAI,EAAC;AAE1D,MAAI,IAAA,UAAA,CAAW,IAAI,CAAA,KAAM,YAAc,EAAA;AACrC,QAAA,UAAA,CAAW,IAAI,CAAI,GAAA,YAAA;AACnB,QAAA,YAAA,CAAa,OAAQ,CAAA,GAAA,EAAK,IAAK,CAAA,SAAA,CAAU,UAAU,CAAC,CAAA;AAAA;AACtD,aACO,KAAO,EAAA;AAEd,MAAQ,OAAA,CAAA,KAAA,CAAM,gCAAgC,KAAK,CAAA;AAAA;AACrD,GACC,EAAA,CAAC,YAAc,EAAA,IAAA,EAAM,GAAG,CAAC,CAAA;AAE5B,EAAM,MAAA,iBAAA,GAAoB,YAAY,MAAM;AAC1C,IAAA,IAAI,CAAC,IAAM,EAAA;AAEX,IAAI,IAAA;AACF,MAAM,MAAA,UAAA,GAAa,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA;AAC3C,MAAA,MAAM,aAAa,UAAa,GAAA,IAAA,CAAK,KAAM,CAAA,UAAU,IAAI,EAAC;AAC1D,MAAA,OAAO,WAAW,IAAI,CAAA;AACtB,MAAA,YAAA,CAAa,OAAQ,CAAA,GAAA,EAAK,IAAK,CAAA,SAAA,CAAU,UAAU,CAAC,CAAA;AACpD,MAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,aACb,KAAO,EAAA;AAEd,MAAQ,OAAA,CAAA,KAAA,CAAM,gCAAgC,KAAK,CAAA;AAAA;AACrD,GACC,EAAA,CAAC,IAAM,EAAA,GAAG,CAAC,CAAA;AAEd,EAAA,OAAO,EAAE,YAAA,EAAc,eAAiB,EAAA,iBAAA,EAAmB,OAAQ,EAAA;AACrE;;;;"}
1
+ {"version":3,"file":"useLastOpenedConversation.esm.js","sources":["../../src/hooks/useLastOpenedConversation.ts"],"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 */\nimport {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\ntype UseLastOpenedConversationReturn = {\n lastOpenedId: string | null;\n setLastOpenedId: Dispatch<SetStateAction<string | null>>;\n clearLastOpenedId: () => void;\n isReady: boolean;\n};\n\nexport const useLastOpenedConversation = (\n user: string | undefined,\n key = 'lastOpenedConversation',\n): UseLastOpenedConversationReturn => {\n const [lastOpenedId, setLastOpenedId] = useState<string | null>(null);\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n if (!user) {\n setLastOpenedId(null);\n setIsReady(false);\n return;\n }\n\n try {\n const storedData = localStorage.getItem(key);\n const parsedData = storedData ? JSON.parse(storedData) : {};\n setLastOpenedId(parsedData[user] || null);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error accessing localStorage:', error);\n } finally {\n setIsReady(true);\n }\n }, [user, key]);\n\n useEffect(() => {\n if (!user || lastOpenedId === null) return;\n // Update localStorage whenever the last opened ID changes\n try {\n const storedData = localStorage.getItem(key);\n const parsedData = storedData ? JSON.parse(storedData) : {};\n\n if (parsedData[user] !== lastOpenedId) {\n parsedData[user] = lastOpenedId;\n localStorage.setItem(key, JSON.stringify(parsedData));\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error updating localStorage:', error);\n }\n }, [lastOpenedId, user, key]);\n\n const clearLastOpenedId = useCallback(() => {\n if (!user) return;\n\n try {\n const storedData = localStorage.getItem(key);\n const parsedData = storedData ? JSON.parse(storedData) : {};\n delete parsedData[user];\n localStorage.setItem(key, JSON.stringify(parsedData));\n setLastOpenedId(null);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error clearing localStorage:', error);\n }\n }, [user, key]);\n\n return { lastOpenedId, setLastOpenedId, clearLastOpenedId, isReady };\n};\n"],"names":[],"mappings":";;AA8BO,MAAM,yBAA4B,GAAA,CACvC,IACA,EAAA,GAAA,GAAM,wBAC8B,KAAA;AACpC,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA;AAAA;AAGF,IAAI,IAAA;AACF,MAAM,MAAA,UAAA,GAAa,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA;AAC3C,MAAA,MAAM,aAAa,UAAa,GAAA,IAAA,CAAK,KAAM,CAAA,UAAU,IAAI,EAAC;AAC1D,MAAgB,eAAA,CAAA,UAAA,CAAW,IAAI,CAAA,IAAK,IAAI,CAAA;AAAA,aACjC,KAAO,EAAA;AAEd,MAAQ,OAAA,CAAA,KAAA,CAAM,iCAAiC,KAAK,CAAA;AAAA,KACpD,SAAA;AACA,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA;AACjB,GACC,EAAA,CAAC,IAAM,EAAA,GAAG,CAAC,CAAA;AAEd,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,IAAQ,IAAA,YAAA,KAAiB,IAAM,EAAA;AAEpC,IAAI,IAAA;AACF,MAAM,MAAA,UAAA,GAAa,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA;AAC3C,MAAA,MAAM,aAAa,UAAa,GAAA,IAAA,CAAK,KAAM,CAAA,UAAU,IAAI,EAAC;AAE1D,MAAI,IAAA,UAAA,CAAW,IAAI,CAAA,KAAM,YAAc,EAAA;AACrC,QAAA,UAAA,CAAW,IAAI,CAAI,GAAA,YAAA;AACnB,QAAA,YAAA,CAAa,OAAQ,CAAA,GAAA,EAAK,IAAK,CAAA,SAAA,CAAU,UAAU,CAAC,CAAA;AAAA;AACtD,aACO,KAAO,EAAA;AAEd,MAAQ,OAAA,CAAA,KAAA,CAAM,gCAAgC,KAAK,CAAA;AAAA;AACrD,GACC,EAAA,CAAC,YAAc,EAAA,IAAA,EAAM,GAAG,CAAC,CAAA;AAE5B,EAAM,MAAA,iBAAA,GAAoB,YAAY,MAAM;AAC1C,IAAA,IAAI,CAAC,IAAM,EAAA;AAEX,IAAI,IAAA;AACF,MAAM,MAAA,UAAA,GAAa,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA;AAC3C,MAAA,MAAM,aAAa,UAAa,GAAA,IAAA,CAAK,KAAM,CAAA,UAAU,IAAI,EAAC;AAC1D,MAAA,OAAO,WAAW,IAAI,CAAA;AACtB,MAAA,YAAA,CAAa,OAAQ,CAAA,GAAA,EAAK,IAAK,CAAA,SAAA,CAAU,UAAU,CAAC,CAAA;AACpD,MAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,aACb,KAAO,EAAA;AAEd,MAAQ,OAAA,CAAA,KAAA,CAAM,gCAAgC,KAAK,CAAA;AAAA;AACrD,GACC,EAAA,CAAC,IAAM,EAAA,GAAG,CAAC,CAAA;AAEd,EAAA,OAAO,EAAE,YAAA,EAAc,eAAiB,EAAA,iBAAA,EAAmB,OAAQ,EAAA;AACrE;;;;"}
@@ -0,0 +1,7 @@
1
+ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
2
+ import { lightspeedTranslationRef } from '../translations/translationRef.esm.js';
3
+
4
+ const useTranslation = () => useTranslationRef(lightspeedTranslationRef);
5
+
6
+ export { useTranslation };
7
+ //# sourceMappingURL=useTranslation.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTranslation.esm.js","sources":["../../src/hooks/useTranslation.ts"],"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 {\n TranslationFunction,\n useTranslationRef,\n} from '@backstage/core-plugin-api/alpha';\n\nimport { lightspeedTranslationRef } from '../translations/translationRef';\n\nexport const useTranslation = (): {\n t: TranslationFunction<typeof lightspeedTranslationRef.T>;\n} => useTranslationRef(lightspeedTranslationRef);\n"],"names":[],"mappings":";;;AAuBa,MAAA,cAAA,GAAiB,MAEzB,iBAAA,CAAkB,wBAAwB;;;;"}
@@ -1,19 +1,34 @@
1
- import React__default from 'react';
1
+ import React from 'react';
2
2
  import { useApi, configApiRef } from '@backstage/core-plugin-api';
3
3
  import { RHDH_SAMPLE_PROMPTS, DEFAULT_SAMPLE_PROMPTS } from '../const.esm.js';
4
4
  import { getRandomSamplePrompts } from '../utils/prompt-utils.esm.js';
5
+ import { useTranslation } from './useTranslation.esm.js';
5
6
 
6
7
  const useWelcomePrompts = () => {
7
8
  const configApi = useApi(configApiRef);
8
- return React__default.useMemo(() => {
9
+ const { t } = useTranslation();
10
+ return React.useMemo(() => {
9
11
  const questionValidationEnabled = configApi.getOptionalBoolean("lightspeed.questionValidation") ?? true;
10
- const DEFAULT_PROMPTS = questionValidationEnabled ? RHDH_SAMPLE_PROMPTS : [...DEFAULT_SAMPLE_PROMPTS, ...RHDH_SAMPLE_PROMPTS];
11
- const samplePrompts = (configApi?.getOptionalConfigArray("lightspeed.prompts") ?? []).map((config) => ({
12
+ const translatePrompts = (prompts) => {
13
+ return prompts.map((prompt) => {
14
+ if ("titleKey" in prompt && "messageKey" in prompt) {
15
+ return {
16
+ title: t(prompt.titleKey, { defaultValue: prompt.titleKey }),
17
+ message: t(prompt.messageKey, {
18
+ defaultValue: prompt.messageKey
19
+ })
20
+ };
21
+ }
22
+ return prompt;
23
+ });
24
+ };
25
+ const DEFAULT_PROMPTS = questionValidationEnabled ? translatePrompts(RHDH_SAMPLE_PROMPTS) : translatePrompts([...DEFAULT_SAMPLE_PROMPTS, ...RHDH_SAMPLE_PROMPTS]);
26
+ const userConfiguredPrompts = (configApi?.getOptionalConfigArray("lightspeed.prompts") ?? []).map((config) => ({
12
27
  title: config.getString("title") ?? "",
13
28
  message: config.getString("message") ?? ""
14
29
  }));
15
- return getRandomSamplePrompts(samplePrompts, DEFAULT_PROMPTS);
16
- }, [configApi]);
30
+ return getRandomSamplePrompts(userConfiguredPrompts, DEFAULT_PROMPTS);
31
+ }, [configApi, t]);
17
32
  };
18
33
 
19
34
  export { useWelcomePrompts };
@@ -1 +1 @@
1
- {"version":3,"file":"useWelcomePrompts.esm.js","sources":["../../src/hooks/useWelcomePrompts.ts"],"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 */\nimport React from 'react';\n\nimport { ConfigApi, configApiRef, useApi } from '@backstage/core-plugin-api';\n\nimport { DEFAULT_SAMPLE_PROMPTS, RHDH_SAMPLE_PROMPTS } from '../const';\nimport { SamplePrompts } from '../types';\nimport { getRandomSamplePrompts } from '../utils/prompt-utils';\n\nexport const useWelcomePrompts = (): SamplePrompts => {\n const configApi: ConfigApi = useApi(configApiRef);\n\n return React.useMemo(() => {\n const questionValidationEnabled =\n configApi.getOptionalBoolean('lightspeed.questionValidation') ?? true;\n\n const DEFAULT_PROMPTS = questionValidationEnabled\n ? RHDH_SAMPLE_PROMPTS\n : [...DEFAULT_SAMPLE_PROMPTS, ...RHDH_SAMPLE_PROMPTS];\n\n const samplePrompts: SamplePrompts = (\n configApi?.getOptionalConfigArray('lightspeed.prompts') ?? []\n ).map(config => ({\n title: config.getString('title') ?? '',\n message: config.getString('message') ?? '',\n }));\n return getRandomSamplePrompts(samplePrompts, DEFAULT_PROMPTS);\n }, [configApi]);\n};\n"],"names":["React"],"mappings":";;;;;AAuBO,MAAM,oBAAoB,MAAqB;AACpD,EAAM,MAAA,SAAA,GAAuB,OAAO,YAAY,CAAA;AAEhD,EAAO,OAAAA,cAAA,CAAM,QAAQ,MAAM;AACzB,IAAA,MAAM,yBACJ,GAAA,SAAA,CAAU,kBAAmB,CAAA,+BAA+B,CAAK,IAAA,IAAA;AAEnE,IAAA,MAAM,kBAAkB,yBACpB,GAAA,mBAAA,GACA,CAAC,GAAG,sBAAA,EAAwB,GAAG,mBAAmB,CAAA;AAEtD,IAAM,MAAA,aAAA,GAAA,CACJ,WAAW,sBAAuB,CAAA,oBAAoB,KAAK,EAAC,EAC5D,IAAI,CAAW,MAAA,MAAA;AAAA,MACf,KAAO,EAAA,MAAA,CAAO,SAAU,CAAA,OAAO,CAAK,IAAA,EAAA;AAAA,MACpC,OAAS,EAAA,MAAA,CAAO,SAAU,CAAA,SAAS,CAAK,IAAA;AAAA,KACxC,CAAA,CAAA;AACF,IAAO,OAAA,sBAAA,CAAuB,eAAe,eAAe,CAAA;AAAA,GAC9D,EAAG,CAAC,SAAS,CAAC,CAAA;AAChB;;;;"}
1
+ {"version":3,"file":"useWelcomePrompts.esm.js","sources":["../../src/hooks/useWelcomePrompts.ts"],"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 */\nimport React from 'react';\n\nimport { ConfigApi, configApiRef, useApi } from '@backstage/core-plugin-api';\n\nimport { DEFAULT_SAMPLE_PROMPTS, RHDH_SAMPLE_PROMPTS } from '../const';\nimport { SamplePrompt, SamplePrompts } from '../types';\nimport { getRandomSamplePrompts } from '../utils/prompt-utils';\nimport { useTranslation } from './useTranslation';\n\nexport const useWelcomePrompts = (): SamplePrompts => {\n const configApi: ConfigApi = useApi(configApiRef);\n const { t } = useTranslation();\n\n return React.useMemo(() => {\n const questionValidationEnabled =\n configApi.getOptionalBoolean('lightspeed.questionValidation') ?? true;\n\n // Transform translation keys to actual prompts\n const translatePrompts = (prompts: SamplePrompts): SamplePrompts => {\n return prompts.map((prompt: SamplePrompt) => {\n if ('titleKey' in prompt && 'messageKey' in prompt) {\n return {\n title: t(prompt.titleKey as any, { defaultValue: prompt.titleKey }),\n message: t(prompt.messageKey as any, {\n defaultValue: prompt.messageKey,\n }),\n };\n }\n return prompt as { title: string; message: string };\n });\n };\n\n const DEFAULT_PROMPTS = questionValidationEnabled\n ? translatePrompts(RHDH_SAMPLE_PROMPTS)\n : translatePrompts([...DEFAULT_SAMPLE_PROMPTS, ...RHDH_SAMPLE_PROMPTS]);\n\n const userConfiguredPrompts: SamplePrompts = (\n configApi?.getOptionalConfigArray('lightspeed.prompts') ?? []\n ).map(config => ({\n title: config.getString('title') ?? '',\n message: config.getString('message') ?? '',\n }));\n return getRandomSamplePrompts(userConfiguredPrompts, DEFAULT_PROMPTS);\n }, [configApi, t]);\n};\n"],"names":[],"mappings":";;;;;;AAwBO,MAAM,oBAAoB,MAAqB;AACpD,EAAM,MAAA,SAAA,GAAuB,OAAO,YAAY,CAAA;AAChD,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA;AAE7B,EAAO,OAAA,KAAA,CAAM,QAAQ,MAAM;AACzB,IAAA,MAAM,yBACJ,GAAA,SAAA,CAAU,kBAAmB,CAAA,+BAA+B,CAAK,IAAA,IAAA;AAGnE,IAAM,MAAA,gBAAA,GAAmB,CAAC,OAA0C,KAAA;AAClE,MAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,MAAyB,KAAA;AAC3C,QAAI,IAAA,UAAA,IAAc,MAAU,IAAA,YAAA,IAAgB,MAAQ,EAAA;AAClD,UAAO,OAAA;AAAA,YACL,KAAA,EAAO,EAAE,MAAO,CAAA,QAAA,EAAiB,EAAE,YAAc,EAAA,MAAA,CAAO,UAAU,CAAA;AAAA,YAClE,OAAA,EAAS,CAAE,CAAA,MAAA,CAAO,UAAmB,EAAA;AAAA,cACnC,cAAc,MAAO,CAAA;AAAA,aACtB;AAAA,WACH;AAAA;AAEF,QAAO,OAAA,MAAA;AAAA,OACR,CAAA;AAAA,KACH;AAEA,IAAM,MAAA,eAAA,GAAkB,yBACpB,GAAA,gBAAA,CAAiB,mBAAmB,CAAA,GACpC,gBAAiB,CAAA,CAAC,GAAG,sBAAA,EAAwB,GAAG,mBAAmB,CAAC,CAAA;AAExE,IAAM,MAAA,qBAAA,GAAA,CACJ,WAAW,sBAAuB,CAAA,oBAAoB,KAAK,EAAC,EAC5D,IAAI,CAAW,MAAA,MAAA;AAAA,MACf,KAAO,EAAA,MAAA,CAAO,SAAU,CAAA,OAAO,CAAK,IAAA,EAAA;AAAA,MACpC,OAAS,EAAA,MAAA,CAAO,SAAU,CAAA,SAAS,CAAK,IAAA;AAAA,KACxC,CAAA,CAAA;AACF,IAAO,OAAA,sBAAA,CAAuB,uBAAuB,eAAe,CAAA;AAAA,GACnE,EAAA,CAAC,SAAW,EAAA,CAAC,CAAC,CAAA;AACnB;;;;"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- /// <reference types="react" />
2
- import * as react from 'react';
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
2
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
3
+ import * as _backstage_core_plugin_api_alpha from '@backstage/core-plugin-api/alpha';
4
4
 
5
5
  /**
6
6
  * Lightspeed Plugin
@@ -13,12 +13,18 @@ declare const lightspeedPlugin: _backstage_core_plugin_api.BackstagePlugin<{
13
13
  * Lightspeed Page
14
14
  * @public
15
15
  */
16
- declare const LightspeedPage: () => react.JSX.Element;
16
+ declare const LightspeedPage: () => react_jsx_runtime.JSX.Element;
17
17
 
18
18
  /**
19
19
  * @public
20
20
  * Lightspeed Icon
21
21
  */
22
- declare const LightspeedIcon: () => react.JSX.Element;
22
+ declare const LightspeedIcon: () => react_jsx_runtime.JSX.Element;
23
23
 
24
- export { LightspeedIcon, LightspeedPage, lightspeedPlugin };
24
+ /**
25
+ * Translastion Resource for Developer lightspeed
26
+ * @public
27
+ **/
28
+ declare const lightspeedTranslationResource: _backstage_core_plugin_api_alpha.TranslationResource<"plugin.lightspeed">;
29
+
30
+ export { LightspeedIcon, LightspeedPage, lightspeedPlugin, lightspeedTranslationResource };
package/dist/index.esm.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { LightspeedPage, lightspeedPlugin } from './plugin.esm.js';
2
2
  export { LightspeedIcon } from './components/LightspeedIcon.esm.js';
3
+ export { lightspeedTranslationResource } from './translations/index.esm.js';
3
4
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,128 @@
1
+ import { createTranslationMessages } from '@backstage/core-plugin-api/alpha';
2
+ import { lightspeedTranslationRef } from './translationRef.esm.js';
3
+
4
+ const lightspeedTranslationDe = createTranslationMessages({
5
+ ref: lightspeedTranslationRef,
6
+ messages: {
7
+ // Page titles and headers
8
+ "page.title": "Lightspeed",
9
+ "page.subtitle": "KI-gest\xFCtzter Entwicklungsassistent",
10
+ // Sample prompts - General Development
11
+ "prompts.codeReadability.title": "Hilfe zur Code-Lesbarkeit",
12
+ "prompts.codeReadability.message": "K\xF6nnen Sie Techniken vorschlagen, die ich verwenden kann, um meinen Code lesbarer und wartbarer zu machen?",
13
+ "prompts.debugging.title": "Hilfe beim Debugging",
14
+ "prompts.debugging.message": "Meine Anwendung wirft einen Fehler beim Versuch, sich mit der Datenbank zu verbinden. K\xF6nnen Sie mir helfen, das Problem zu identifizieren?",
15
+ "prompts.developmentConcept.title": "Entwicklungskonzept erkl\xE4ren",
16
+ "prompts.developmentConcept.message": "K\xF6nnen Sie erkl\xE4ren, wie Microservices-Architektur funktioniert und welche Vorteile sie gegen\xFCber einem monolithischen Design hat?",
17
+ "prompts.codeOptimization.title": "Code-Optimierungen vorschlagen",
18
+ "prompts.codeOptimization.message": "K\xF6nnen Sie g\xE4ngige M\xF6glichkeiten vorschlagen, Code zu optimieren, um bessere Leistung zu erzielen?",
19
+ "prompts.documentation.title": "Dokumentationszusammenfassung",
20
+ "prompts.documentation.message": "K\xF6nnen Sie die Dokumentation f\xFCr die Implementierung von OAuth 2.0-Authentifizierung in einer Web-App zusammenfassen?",
21
+ "prompts.gitWorkflows.title": "Arbeitsabl\xE4ufe mit Git",
22
+ "prompts.gitWorkflows.message": "Ich m\xF6chte \xC4nderungen am Code in einem anderen Branch vornehmen, ohne meine bestehende Arbeit zu verlieren. Was ist das Verfahren, um dies mit Git zu tun?",
23
+ "prompts.testingStrategies.title": "Teststrategien vorschlagen",
24
+ "prompts.testingStrategies.message": "K\xF6nnen Sie g\xE4ngige Teststrategien empfehlen, die meine Anwendung robust und fehlerfrei machen?",
25
+ "prompts.sortingAlgorithms.title": "Sortieralgorithmen entmystifizieren",
26
+ "prompts.sortingAlgorithms.message": "K\xF6nnen Sie den Unterschied zwischen einem Quicksort- und einem Mergesort-Algorithmus erkl\xE4ren und wann man welchen verwendet?",
27
+ "prompts.eventDriven.title": "Event-getriebene Architektur verstehen",
28
+ "prompts.eventDriven.message": "K\xF6nnen Sie erkl\xE4ren, was event-getriebene Architektur ist und wann es vorteilhaft ist, sie in der Softwareentwicklung zu verwenden?",
29
+ // Sample prompts - RHDH Specific
30
+ "prompts.tekton.title": "Mit Tekton bereitstellen",
31
+ "prompts.tekton.message": "K\xF6nnen Sie mir helfen, die Bereitstellung meiner Anwendung mit Tekton-Pipelines zu automatisieren?",
32
+ "prompts.openshift.title": "OpenShift-Bereitstellung erstellen",
33
+ "prompts.openshift.message": "K\xF6nnen Sie mich durch die Erstellung einer neuen Bereitstellung in OpenShift f\xFCr eine containerisierte Anwendung f\xFChren?",
34
+ "prompts.rhdh.title": "Erste Schritte mit Red Hat Developer Hub",
35
+ "prompts.rhdh.message": "K\xF6nnen Sie mich durch die ersten Schritte f\xFChren, um Developer Hub als Entwickler zu nutzen, wie das Erkunden des Software-Katalogs und das Hinzuf\xFCgen meines Dienstes?",
36
+ // Conversation history
37
+ "conversation.history.confirm.title": "Chat l\xF6schen?",
38
+ "conversation.history.confirm.message": "Sie werden diesen Chat hier nicht mehr sehen. Dies l\xF6scht auch verwandte Aktivit\xE4ten wie Prompts, Antworten und Feedback aus Ihrer Lightspeed-Aktivit\xE4t.",
39
+ "conversation.history.confirm.delete": "L\xF6schen",
40
+ // Permissions
41
+ "permission.required.title": "Fehlende Berechtigungen",
42
+ "permission.required.description": "Um das Lightspeed-Plugin zu sehen, wenden Sie sich an Ihren Administrator, um die Berechtigungen <b>lightspeed.chat.read</b> und <b>lightspeed.chat.create</b> zu erhalten.",
43
+ // Disclaimers
44
+ "disclaimer.withValidation": "Developer Lightspeed kann Fragen zu vielen Themen beantworten, indem es Ihre konfigurierten Modelle verwendet. Die Antworten von Developer Lightspeed werden von der Red Hat Developer Hub-Dokumentation beeinflusst, aber Developer Lightspeed hat keinen Zugriff auf Ihren Software-Katalog, TechDocs oder Vorlagen usw. Developer Lightspeed verwendet Fragenvalidierung (Prompts), um sicherzustellen, dass Gespr\xE4che auf technische Themen fokussiert bleiben, die f\xFCr Red Hat Developer Hub relevant sind, wie Backstage, Kubernetes und OpenShift. Geben Sie keine pers\xF6nlichen oder sensiblen Informationen in Ihre Eingabe ein. Interaktionen mit Developer Lightspeed k\xF6nnen \xFCberpr\xFCft und zur Verbesserung von Produkten oder Dienstleistungen verwendet werden.",
45
+ "disclaimer.withoutValidation": "Developer Lightspeed kann Fragen zu vielen Themen beantworten, indem es Ihre konfigurierten Modelle verwendet. Die Antworten von Developer Lightspeed werden von der Red Hat Developer Hub-Dokumentation beeinflusst, aber Developer Lightspeed hat keinen Zugriff auf Ihren Software-Katalog, TechDocs oder Vorlagen usw. Geben Sie keine pers\xF6nlichen oder sensiblen Informationen in Ihre Eingabe ein. Interaktionen mit Developer Lightspeed k\xF6nnen \xFCberpr\xFCft und zur Verbesserung von Produkten oder Dienstleistungen verwendet werden.",
46
+ // Footer and feedback
47
+ "footer.accuracy.label": "\xDCberpr\xFCfen Sie immer die Genauigkeit von KI/LLM-generierten Antworten vor der Verwendung.",
48
+ "footer.accuracy.popover.title": "Genauigkeit \xFCberpr\xFCfen",
49
+ "footer.accuracy.popover.description": "Obwohl Developer Lightspeed sich um Genauigkeit bem\xFCht, besteht immer die M\xF6glichkeit von Fehlern. Es ist eine gute Praxis, kritische Informationen aus zuverl\xE4ssigen Quellen zu \xFCberpr\xFCfen, besonders wenn sie f\xFCr Entscheidungsfindung oder Handlungen entscheidend sind.",
50
+ "footer.accuracy.popover.image.alt": "Beispielbild f\xFCr Fu\xDFnoten-Popover",
51
+ "footer.accuracy.popover.cta.label": "Verstanden",
52
+ "footer.accuracy.popover.link.label": "Mehr erfahren",
53
+ // Common actions
54
+ "common.cancel": "Abbrechen",
55
+ // Menu items
56
+ "menu.newConversation": "Neuer Chat",
57
+ // Chat-specific UI elements
58
+ "chatbox.header.title": "Developer Lightspeed",
59
+ "chatbox.search.placeholder": "Fr\xFChere Chats durchsuchen...",
60
+ "chatbox.welcome.greeting": "Hallo, {{userName}}",
61
+ "chatbox.welcome.description": "Wie kann ich Ihnen heute helfen?",
62
+ "chatbox.message.placeholder": "Senden Sie eine Nachricht und laden Sie optional eine JSON-, YAML-, TXT- oder XML-Datei hoch...",
63
+ "chatbox.fileUpload.failed": "Datei-Upload fehlgeschlagen",
64
+ "chatbox.fileUpload.infoText": "Unterst\xFCtzte Dateitypen sind: .txt, .yaml, .json und .xml. Die maximale Dateigr\xF6\xDFe betr\xE4gt 25 MB.",
65
+ // Accessibility and ARIA labels
66
+ "aria.chatbotSelector": "Chatbot-Auswahl",
67
+ "aria.important": "Wichtig",
68
+ // Modal actions
69
+ "modal.edit": "Bearbeiten",
70
+ "modal.save": "Speichern",
71
+ "modal.close": "Schlie\xDFen",
72
+ "modal.cancel": "Abbrechen",
73
+ // Conversation actions
74
+ "conversation.delete": "L\xF6schen",
75
+ "conversation.announcement.userMessage": "Nachricht vom Benutzer: {{prompt}}. Nachricht vom Bot wird geladen.",
76
+ // User states
77
+ "user.guest": "Gast",
78
+ "user.loading": "...",
79
+ // Button tooltips and labels
80
+ "tooltip.attach": "Anh\xE4ngen",
81
+ "tooltip.send": "Senden",
82
+ "tooltip.microphone.active": "Aufh\xF6ren zu h\xF6ren",
83
+ "tooltip.microphone.inactive": "Mikrofon verwenden",
84
+ "button.newChat": "Neuer Chat",
85
+ // Modal titles
86
+ "modal.title.preview": "Anhang-Vorschau",
87
+ "modal.title.edit": "Anhang bearbeiten",
88
+ // Alt texts for icons
89
+ "icon.lightspeed.alt": "Lightspeed-Icon",
90
+ "icon.permissionRequired.alt": "Berechtigung erforderlich Icon",
91
+ // Message utilities
92
+ "message.options.label": "Optionen",
93
+ // File attachment errors
94
+ "file.upload.error.alreadyExists": "Die Datei existiert bereits.",
95
+ "file.upload.error.multipleFiles": "Mehr als eine Datei hochgeladen.",
96
+ "file.upload.error.unsupportedType": "Nicht unterst\xFCtzter Dateityp. Unterst\xFCtzte Typen sind: .txt, .yaml, .json und .xml.",
97
+ "file.upload.error.fileTooLarge": "Ihre Dateigr\xF6\xDFe ist zu gro\xDF. Bitte stellen Sie sicher, dass Ihre Datei kleiner als 25 MB ist.",
98
+ "file.upload.error.readFailed": "Fehler beim Lesen der Datei: {{errorMessage}}",
99
+ // Developer error messages
100
+ "error.context.fileAttachment": "useFileAttachmentContext muss innerhalb eines FileAttachmentContextProvider sein",
101
+ // Feedback actions
102
+ "feedback.form.title": "Warum haben Sie diese Bewertung gew\xE4hlt?",
103
+ "feedback.form.textAreaPlaceholder": "Geben Sie optionale zus\xE4tzliche Kommentare",
104
+ "feedback.form.submitWord": "Absenden",
105
+ "feedback.tooltips.goodResponse": "Gute Antwort",
106
+ "feedback.tooltips.badResponse": "Schlechte Antwort",
107
+ "feedback.tooltips.copied": "Kopiert",
108
+ "feedback.tooltips.copy": "Kopieren",
109
+ "feedback.tooltips.listening": "H\xF6re zu",
110
+ "feedback.tooltips.listen": "Zuh\xF6ren",
111
+ "feedback.quickResponses.positive.helpful": "Hilfreiche Informationen",
112
+ "feedback.quickResponses.positive.easyToUnderstand": "Einfach zu verstehen",
113
+ "feedback.quickResponses.positive.resolvedIssue": "Hat mein Problem gel\xF6st",
114
+ "feedback.quickResponses.negative.didntAnswer": "Hat meine Frage nicht beantwortet",
115
+ "feedback.quickResponses.negative.hardToUnderstand": "Schwer zu verstehen",
116
+ "feedback.quickResponses.negative.notHelpful": "Nicht hilfreich",
117
+ "feedback.completion.title": "Feedback \xFCbermittelt",
118
+ "feedback.completion.body": "Wir haben Ihre Antwort erhalten. Vielen Dank f\xFCr Ihr Feedback!",
119
+ // Conversation categorization
120
+ "conversation.category.today": "Heute",
121
+ "conversation.category.yesterday": "Gestern",
122
+ "conversation.category.previous7Days": "Letzte 7 Tage",
123
+ "conversation.category.previous30Days": "Letzte 30 Tage"
124
+ }
125
+ });
126
+
127
+ export { lightspeedTranslationDe as default };
128
+ //# sourceMappingURL=de.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"de.esm.js","sources":["../../src/translations/de.ts"],"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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\n\nimport { lightspeedTranslationRef } from './translationRef';\n\n/**\n * Deutsch translation for Developer Lightspeed.\n * @public\n */\nconst lightspeedTranslationDe = createTranslationMessages({\n ref: lightspeedTranslationRef,\n messages: {\n // Page titles and headers\n 'page.title': 'Lightspeed',\n 'page.subtitle': 'KI-gestützter Entwicklungsassistent',\n\n // Sample prompts - General Development\n 'prompts.codeReadability.title': 'Hilfe zur Code-Lesbarkeit',\n 'prompts.codeReadability.message':\n 'Können Sie Techniken vorschlagen, die ich verwenden kann, um meinen Code lesbarer und wartbarer zu machen?',\n 'prompts.debugging.title': 'Hilfe beim Debugging',\n 'prompts.debugging.message':\n 'Meine Anwendung wirft einen Fehler beim Versuch, sich mit der Datenbank zu verbinden. Können Sie mir helfen, das Problem zu identifizieren?',\n 'prompts.developmentConcept.title': 'Entwicklungskonzept erklären',\n 'prompts.developmentConcept.message':\n 'Können Sie erklären, wie Microservices-Architektur funktioniert und welche Vorteile sie gegenüber einem monolithischen Design hat?',\n 'prompts.codeOptimization.title': 'Code-Optimierungen vorschlagen',\n 'prompts.codeOptimization.message':\n 'Können Sie gängige Möglichkeiten vorschlagen, Code zu optimieren, um bessere Leistung zu erzielen?',\n 'prompts.documentation.title': 'Dokumentationszusammenfassung',\n 'prompts.documentation.message':\n 'Können Sie die Dokumentation für die Implementierung von OAuth 2.0-Authentifizierung in einer Web-App zusammenfassen?',\n 'prompts.gitWorkflows.title': 'Arbeitsabläufe mit Git',\n 'prompts.gitWorkflows.message':\n 'Ich möchte Änderungen am Code in einem anderen Branch vornehmen, ohne meine bestehende Arbeit zu verlieren. Was ist das Verfahren, um dies mit Git zu tun?',\n 'prompts.testingStrategies.title': 'Teststrategien vorschlagen',\n 'prompts.testingStrategies.message':\n 'Können Sie gängige Teststrategien empfehlen, die meine Anwendung robust und fehlerfrei machen?',\n 'prompts.sortingAlgorithms.title': 'Sortieralgorithmen entmystifizieren',\n 'prompts.sortingAlgorithms.message':\n 'Können Sie den Unterschied zwischen einem Quicksort- und einem Mergesort-Algorithmus erklären und wann man welchen verwendet?',\n 'prompts.eventDriven.title': 'Event-getriebene Architektur verstehen',\n 'prompts.eventDriven.message':\n 'Können Sie erklären, was event-getriebene Architektur ist und wann es vorteilhaft ist, sie in der Softwareentwicklung zu verwenden?',\n\n // Sample prompts - RHDH Specific\n 'prompts.tekton.title': 'Mit Tekton bereitstellen',\n 'prompts.tekton.message':\n 'Können Sie mir helfen, die Bereitstellung meiner Anwendung mit Tekton-Pipelines zu automatisieren?',\n 'prompts.openshift.title': 'OpenShift-Bereitstellung erstellen',\n 'prompts.openshift.message':\n 'Können Sie mich durch die Erstellung einer neuen Bereitstellung in OpenShift für eine containerisierte Anwendung führen?',\n 'prompts.rhdh.title': 'Erste Schritte mit Red Hat Developer Hub',\n 'prompts.rhdh.message':\n 'Können Sie mich durch die ersten Schritte führen, um Developer Hub als Entwickler zu nutzen, wie das Erkunden des Software-Katalogs und das Hinzufügen meines Dienstes?',\n\n // Conversation history\n 'conversation.history.confirm.title': 'Chat löschen?',\n 'conversation.history.confirm.message':\n 'Sie werden diesen Chat hier nicht mehr sehen. Dies löscht auch verwandte Aktivitäten wie Prompts, Antworten und Feedback aus Ihrer Lightspeed-Aktivität.',\n 'conversation.history.confirm.delete': 'Löschen',\n\n // Permissions\n 'permission.required.title': 'Fehlende Berechtigungen',\n 'permission.required.description':\n 'Um das Lightspeed-Plugin zu sehen, wenden Sie sich an Ihren Administrator, um die Berechtigungen <b>lightspeed.chat.read</b> und <b>lightspeed.chat.create</b> zu erhalten.',\n\n // Disclaimers\n 'disclaimer.withValidation':\n 'Developer Lightspeed kann Fragen zu vielen Themen beantworten, indem es Ihre konfigurierten Modelle verwendet. Die Antworten von Developer Lightspeed werden von der Red Hat Developer Hub-Dokumentation beeinflusst, aber Developer Lightspeed hat keinen Zugriff auf Ihren Software-Katalog, TechDocs oder Vorlagen usw. Developer Lightspeed verwendet Fragenvalidierung (Prompts), um sicherzustellen, dass Gespräche auf technische Themen fokussiert bleiben, die für Red Hat Developer Hub relevant sind, wie Backstage, Kubernetes und OpenShift. Geben Sie keine persönlichen oder sensiblen Informationen in Ihre Eingabe ein. Interaktionen mit Developer Lightspeed können überprüft und zur Verbesserung von Produkten oder Dienstleistungen verwendet werden.',\n 'disclaimer.withoutValidation':\n 'Developer Lightspeed kann Fragen zu vielen Themen beantworten, indem es Ihre konfigurierten Modelle verwendet. Die Antworten von Developer Lightspeed werden von der Red Hat Developer Hub-Dokumentation beeinflusst, aber Developer Lightspeed hat keinen Zugriff auf Ihren Software-Katalog, TechDocs oder Vorlagen usw. Geben Sie keine persönlichen oder sensiblen Informationen in Ihre Eingabe ein. Interaktionen mit Developer Lightspeed können überprüft und zur Verbesserung von Produkten oder Dienstleistungen verwendet werden.',\n\n // Footer and feedback\n 'footer.accuracy.label':\n 'Überprüfen Sie immer die Genauigkeit von KI/LLM-generierten Antworten vor der Verwendung.',\n 'footer.accuracy.popover.title': 'Genauigkeit überprüfen',\n 'footer.accuracy.popover.description':\n 'Obwohl Developer Lightspeed sich um Genauigkeit bemüht, besteht immer die Möglichkeit von Fehlern. Es ist eine gute Praxis, kritische Informationen aus zuverlässigen Quellen zu überprüfen, besonders wenn sie für Entscheidungsfindung oder Handlungen entscheidend sind.',\n 'footer.accuracy.popover.image.alt': 'Beispielbild für Fußnoten-Popover',\n 'footer.accuracy.popover.cta.label': 'Verstanden',\n 'footer.accuracy.popover.link.label': 'Mehr erfahren',\n\n // Common actions\n 'common.cancel': 'Abbrechen',\n\n // Menu items\n 'menu.newConversation': 'Neuer Chat',\n\n // Chat-specific UI elements\n 'chatbox.header.title': 'Developer Lightspeed',\n 'chatbox.search.placeholder': 'Frühere Chats durchsuchen...',\n 'chatbox.welcome.greeting': 'Hallo, {{userName}}',\n 'chatbox.welcome.description': 'Wie kann ich Ihnen heute helfen?',\n 'chatbox.message.placeholder':\n 'Senden Sie eine Nachricht und laden Sie optional eine JSON-, YAML-, TXT- oder XML-Datei hoch...',\n 'chatbox.fileUpload.failed': 'Datei-Upload fehlgeschlagen',\n 'chatbox.fileUpload.infoText':\n 'Unterstützte Dateitypen sind: .txt, .yaml, .json und .xml. Die maximale Dateigröße beträgt 25 MB.',\n\n // Accessibility and ARIA labels\n 'aria.chatbotSelector': 'Chatbot-Auswahl',\n 'aria.important': 'Wichtig',\n\n // Modal actions\n 'modal.edit': 'Bearbeiten',\n 'modal.save': 'Speichern',\n 'modal.close': 'Schließen',\n 'modal.cancel': 'Abbrechen',\n\n // Conversation actions\n 'conversation.delete': 'Löschen',\n 'conversation.announcement.userMessage':\n 'Nachricht vom Benutzer: {{prompt}}. Nachricht vom Bot wird geladen.',\n\n // User states\n 'user.guest': 'Gast',\n 'user.loading': '...',\n\n // Button tooltips and labels\n 'tooltip.attach': 'Anhängen',\n 'tooltip.send': 'Senden',\n 'tooltip.microphone.active': 'Aufhören zu hören',\n 'tooltip.microphone.inactive': 'Mikrofon verwenden',\n 'button.newChat': 'Neuer Chat',\n\n // Modal titles\n 'modal.title.preview': 'Anhang-Vorschau',\n 'modal.title.edit': 'Anhang bearbeiten',\n\n // Alt texts for icons\n 'icon.lightspeed.alt': 'Lightspeed-Icon',\n 'icon.permissionRequired.alt': 'Berechtigung erforderlich Icon',\n\n // Message utilities\n 'message.options.label': 'Optionen',\n\n // File attachment errors\n 'file.upload.error.alreadyExists': 'Die Datei existiert bereits.',\n 'file.upload.error.multipleFiles': 'Mehr als eine Datei hochgeladen.',\n 'file.upload.error.unsupportedType':\n 'Nicht unterstützter Dateityp. Unterstützte Typen sind: .txt, .yaml, .json und .xml.',\n 'file.upload.error.fileTooLarge':\n 'Ihre Dateigröße ist zu groß. Bitte stellen Sie sicher, dass Ihre Datei kleiner als 25 MB ist.',\n 'file.upload.error.readFailed':\n 'Fehler beim Lesen der Datei: {{errorMessage}}',\n\n // Developer error messages\n 'error.context.fileAttachment':\n 'useFileAttachmentContext muss innerhalb eines FileAttachmentContextProvider sein',\n\n // Feedback actions\n 'feedback.form.title': 'Warum haben Sie diese Bewertung gewählt?',\n 'feedback.form.textAreaPlaceholder':\n 'Geben Sie optionale zusätzliche Kommentare',\n 'feedback.form.submitWord': 'Absenden',\n 'feedback.tooltips.goodResponse': 'Gute Antwort',\n 'feedback.tooltips.badResponse': 'Schlechte Antwort',\n 'feedback.tooltips.copied': 'Kopiert',\n 'feedback.tooltips.copy': 'Kopieren',\n 'feedback.tooltips.listening': 'Höre zu',\n 'feedback.tooltips.listen': 'Zuhören',\n 'feedback.quickResponses.positive.helpful': 'Hilfreiche Informationen',\n 'feedback.quickResponses.positive.easyToUnderstand': 'Einfach zu verstehen',\n 'feedback.quickResponses.positive.resolvedIssue': 'Hat mein Problem gelöst',\n 'feedback.quickResponses.negative.didntAnswer':\n 'Hat meine Frage nicht beantwortet',\n 'feedback.quickResponses.negative.hardToUnderstand': 'Schwer zu verstehen',\n 'feedback.quickResponses.negative.notHelpful': 'Nicht hilfreich',\n 'feedback.completion.title': 'Feedback übermittelt',\n 'feedback.completion.body':\n 'Wir haben Ihre Antwort erhalten. Vielen Dank für Ihr Feedback!',\n\n // Conversation categorization\n 'conversation.category.today': 'Heute',\n 'conversation.category.yesterday': 'Gestern',\n 'conversation.category.previous7Days': 'Letzte 7 Tage',\n 'conversation.category.previous30Days': 'Letzte 30 Tage',\n },\n});\n\nexport default lightspeedTranslationDe;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { createTranslationMessages } from '@backstage/core-plugin-api/alpha';
2
+ import { lightspeedTranslationRef } from './translationRef.esm.js';
3
+
4
+ const lightspeedTranslationEs = createTranslationMessages({
5
+ ref: lightspeedTranslationRef,
6
+ messages: {
7
+ // Page titles and headers
8
+ "page.title": "Lightspeed",
9
+ "page.subtitle": "Asistente de desarrollo impulsado por IA",
10
+ // Sample prompts - General Development
11
+ "prompts.codeReadability.title": "Obtener ayuda sobre legibilidad del c\xF3digo",
12
+ "prompts.codeReadability.message": "\xBFPuedes sugerir t\xE9cnicas que pueda usar para hacer mi c\xF3digo m\xE1s legible y mantenible?",
13
+ "prompts.debugging.title": "Obtener ayuda con depuraci\xF3n",
14
+ "prompts.debugging.message": "Mi aplicaci\xF3n est\xE1 lanzando un error al intentar conectarse a la base de datos. \xBFPuedes ayudarme a identificar el problema?",
15
+ "prompts.developmentConcept.title": "Explicar un concepto de desarrollo",
16
+ "prompts.developmentConcept.message": "\xBFPuedes explicar c\xF3mo funciona la arquitectura de microservicios y sus ventajas sobre un dise\xF1o monol\xEDtico?",
17
+ "prompts.codeOptimization.title": "Sugerir optimizaciones de c\xF3digo",
18
+ "prompts.codeOptimization.message": "\xBFPuedes sugerir formas comunes de optimizar el c\xF3digo para lograr mejor rendimiento?",
19
+ "prompts.documentation.title": "Resumen de documentaci\xF3n",
20
+ "prompts.documentation.message": "\xBFPuedes resumir la documentaci\xF3n para implementar autenticaci\xF3n OAuth 2.0 en una aplicaci\xF3n web?",
21
+ "prompts.gitWorkflows.title": "Flujos de trabajo con Git",
22
+ "prompts.gitWorkflows.message": "Quiero hacer cambios en el c\xF3digo en otra rama sin perder mi trabajo existente. \xBFCu\xE1l es el procedimiento para hacer esto usando Git?",
23
+ "prompts.testingStrategies.title": "Sugerir estrategias de prueba",
24
+ "prompts.testingStrategies.message": "\xBFPuedes recomendar algunas estrategias de prueba comunes que har\xE1n que mi aplicaci\xF3n sea robusta y libre de errores?",
25
+ "prompts.sortingAlgorithms.title": "Desmitificar algoritmos de ordenamiento",
26
+ "prompts.sortingAlgorithms.message": "\xBFPuedes explicar la diferencia entre un algoritmo de ordenamiento r\xE1pido y uno de ordenamiento por mezcla, y cu\xE1ndo usar cada uno?",
27
+ "prompts.eventDriven.title": "Entender la arquitectura impulsada por eventos",
28
+ "prompts.eventDriven.message": "\xBFPuedes explicar qu\xE9 es la arquitectura impulsada por eventos y cu\xE1ndo es beneficioso usarla en el desarrollo de software?",
29
+ // Sample prompts - RHDH Specific
30
+ "prompts.tekton.title": "Implementar con Tekton",
31
+ "prompts.tekton.message": "\xBFPuedes ayudarme a automatizar la implementaci\xF3n de mi aplicaci\xF3n usando pipelines de Tekton?",
32
+ "prompts.openshift.title": "Crear una implementaci\xF3n de OpenShift",
33
+ "prompts.openshift.message": "\xBFPuedes guiarme a trav\xE9s de la creaci\xF3n de una nueva implementaci\xF3n en OpenShift para una aplicaci\xF3n containerizada?",
34
+ "prompts.rhdh.title": "Comenzar con Red Hat Developer Hub",
35
+ "prompts.rhdh.message": "\xBFPuedes guiarme a trav\xE9s de los primeros pasos para comenzar a usar Developer Hub como desarrollador, como explorar el Cat\xE1logo de Software y agregar mi servicio?",
36
+ // Conversation history
37
+ "conversation.history.confirm.title": "\xBFEliminar chat?",
38
+ "conversation.history.confirm.message": "Ya no ver\xE1s este chat aqu\xED. Esto tambi\xE9n eliminar\xE1 la actividad relacionada como prompts, respuestas y comentarios de tu Actividad de Lightspeed.",
39
+ "conversation.history.confirm.delete": "Eliminar",
40
+ // Permissions
41
+ "permission.required.title": "Permisos faltantes",
42
+ "permission.required.description": "Para ver el plugin de lightspeed, contacta a tu administrador para que te d\xE9 los permisos <b>lightspeed.chat.read</b> y <b>lightspeed.chat.create</b>.",
43
+ // Disclaimers
44
+ "disclaimer.withValidation": "Developer Lightspeed puede responder preguntas sobre muchos temas usando tus modelos configurados. Las respuestas de Developer Lightspeed est\xE1n influenciadas por la documentaci\xF3n de Red Hat Developer Hub, pero Developer Lightspeed no tiene acceso a tu Cat\xE1logo de Software, TechDocs o Plantillas, etc. Developer Lightspeed usa validaci\xF3n de preguntas (prompts) para asegurar que las conversaciones permanezcan enfocadas en temas t\xE9cnicos relevantes para Red Hat Developer Hub, como Backstage, Kubernetes y OpenShift. No incluyas informaci\xF3n personal o sensible en tu entrada. Las interacciones con Developer Lightspeed pueden ser revisadas y usadas para mejorar productos o servicios.",
45
+ "disclaimer.withoutValidation": "Developer Lightspeed puede responder preguntas sobre muchos temas usando tus modelos configurados. Las respuestas de Developer Lightspeed est\xE1n influenciadas por la documentaci\xF3n de Red Hat Developer Hub, pero Developer Lightspeed no tiene acceso a tu Cat\xE1logo de Software, TechDocs o Plantillas, etc. No incluyas informaci\xF3n personal o sensible en tu entrada. Las interacciones con Developer Lightspeed pueden ser revisadas y usadas para mejorar productos o servicios.",
46
+ // Footer and feedback
47
+ "footer.accuracy.label": "Siempre verifica la precisi\xF3n de las respuestas generadas por IA/LLM antes de usarlas.",
48
+ "footer.accuracy.popover.title": "Verificar precisi\xF3n",
49
+ "footer.accuracy.popover.description": "Si bien Developer Lightspeed se esfuerza por la precisi\xF3n, siempre existe la posibilidad de errores. Es una buena pr\xE1ctica verificar informaci\xF3n cr\xEDtica de fuentes confiables, especialmente si es crucial para la toma de decisiones o acciones.",
50
+ "footer.accuracy.popover.image.alt": "Imagen de ejemplo para el popover de nota al pie",
51
+ "footer.accuracy.popover.cta.label": "Entendido",
52
+ "footer.accuracy.popover.link.label": "Aprende m\xE1s",
53
+ // Common actions
54
+ "common.cancel": "Cancelar",
55
+ // Menu items
56
+ "menu.newConversation": "Nuevo Chat",
57
+ // Chat-specific UI elements
58
+ "chatbox.header.title": "Developer Lightspeed",
59
+ "chatbox.search.placeholder": "Buscar chats anteriores...",
60
+ "chatbox.welcome.greeting": "Hola, {{userName}}",
61
+ "chatbox.welcome.description": "\xBFC\xF3mo puedo ayudarte hoy?",
62
+ "chatbox.message.placeholder": "Env\xEDa un mensaje y opcionalmente sube un archivo JSON, YAML, TXT o XML...",
63
+ "chatbox.fileUpload.failed": "La carga del archivo fall\xF3",
64
+ "chatbox.fileUpload.infoText": "Los tipos de archivo soportados son: .txt, .yaml, .json y .xml. El tama\xF1o m\xE1ximo del archivo es 25 MB.",
65
+ // Accessibility and ARIA labels
66
+ "aria.chatbotSelector": "Selector de chatbot",
67
+ "aria.important": "Importante",
68
+ // Modal actions
69
+ "modal.edit": "Editar",
70
+ "modal.save": "Guardar",
71
+ "modal.close": "Cerrar",
72
+ "modal.cancel": "Cancelar",
73
+ // Conversation actions
74
+ "conversation.delete": "Eliminar",
75
+ "conversation.announcement.userMessage": "Mensaje del Usuario: {{prompt}}. El mensaje del Bot est\xE1 cargando.",
76
+ // User states
77
+ "user.guest": "Invitado",
78
+ "user.loading": "...",
79
+ // Button tooltips and labels
80
+ "tooltip.attach": "Adjuntar",
81
+ "tooltip.send": "Enviar",
82
+ "tooltip.microphone.active": "Dejar de escuchar",
83
+ "tooltip.microphone.inactive": "Usar micr\xF3fono",
84
+ "button.newChat": "Nuevo chat",
85
+ // Modal titles
86
+ "modal.title.preview": "Vista previa del adjunto",
87
+ "modal.title.edit": "Editar adjunto",
88
+ // Alt texts for icons
89
+ "icon.lightspeed.alt": "icono de lightspeed",
90
+ "icon.permissionRequired.alt": "icono de permiso requerido",
91
+ // Message utilities
92
+ "message.options.label": "Opciones",
93
+ // File attachment errors
94
+ "file.upload.error.alreadyExists": "El archivo ya existe.",
95
+ "file.upload.error.multipleFiles": "Se subi\xF3 m\xE1s de un archivo.",
96
+ "file.upload.error.unsupportedType": "Tipo de archivo no soportado. Los tipos soportados son: .txt, .yaml, .json y .xml.",
97
+ "file.upload.error.fileTooLarge": "El tama\xF1o de tu archivo es demasiado grande. Por favor aseg\xFArate de que tu archivo sea menor a 25 MB.",
98
+ "file.upload.error.readFailed": "Error al leer el archivo: {{errorMessage}}",
99
+ // Developer error messages
100
+ "error.context.fileAttachment": "useFileAttachmentContext debe estar dentro de un FileAttachmentContextProvider",
101
+ // Feedback actions
102
+ "feedback.form.title": "\xBFPor qu\xE9 elegiste esta calificaci\xF3n?",
103
+ "feedback.form.textAreaPlaceholder": "Proporciona comentarios adicionales opcionales",
104
+ "feedback.form.submitWord": "Enviar",
105
+ "feedback.tooltips.goodResponse": "Buena Respuesta",
106
+ "feedback.tooltips.badResponse": "Mala Respuesta",
107
+ "feedback.tooltips.copied": "Copiado",
108
+ "feedback.tooltips.copy": "Copiar",
109
+ "feedback.tooltips.listening": "Escuchando",
110
+ "feedback.tooltips.listen": "Escuchar",
111
+ "feedback.quickResponses.positive.helpful": "Informaci\xF3n \xFAtil",
112
+ "feedback.quickResponses.positive.easyToUnderstand": "F\xE1cil de entender",
113
+ "feedback.quickResponses.positive.resolvedIssue": "Resolvi\xF3 mi problema",
114
+ "feedback.quickResponses.negative.didntAnswer": "No respondi\xF3 mi pregunta",
115
+ "feedback.quickResponses.negative.hardToUnderstand": "Dif\xEDcil de entender",
116
+ "feedback.quickResponses.negative.notHelpful": "No fue \xFAtil",
117
+ "feedback.completion.title": "Feedback enviado",
118
+ "feedback.completion.body": "Hemos recibido tu respuesta. \xA1Gracias por compartir tu feedback!",
119
+ // Conversation categorization
120
+ "conversation.category.today": "Hoy",
121
+ "conversation.category.yesterday": "Ayer",
122
+ "conversation.category.previous7Days": "\xDAltimos 7 d\xEDas",
123
+ "conversation.category.previous30Days": "\xDAltimos 30 d\xEDas"
124
+ }
125
+ });
126
+
127
+ export { lightspeedTranslationEs as default };
128
+ //# sourceMappingURL=es.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es.esm.js","sources":["../../src/translations/es.ts"],"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 { createTranslationMessages } from '@backstage/core-plugin-api/alpha';\n\nimport { lightspeedTranslationRef } from './translationRef';\n\n/**\n * Spanish translation for Developer Lightspeed.\n * @public\n */\nconst lightspeedTranslationEs = createTranslationMessages({\n ref: lightspeedTranslationRef,\n messages: {\n // Page titles and headers\n 'page.title': 'Lightspeed',\n 'page.subtitle': 'Asistente de desarrollo impulsado por IA',\n\n // Sample prompts - General Development\n 'prompts.codeReadability.title':\n 'Obtener ayuda sobre legibilidad del código',\n 'prompts.codeReadability.message':\n '¿Puedes sugerir técnicas que pueda usar para hacer mi código más legible y mantenible?',\n 'prompts.debugging.title': 'Obtener ayuda con depuración',\n 'prompts.debugging.message':\n 'Mi aplicación está lanzando un error al intentar conectarse a la base de datos. ¿Puedes ayudarme a identificar el problema?',\n 'prompts.developmentConcept.title': 'Explicar un concepto de desarrollo',\n 'prompts.developmentConcept.message':\n '¿Puedes explicar cómo funciona la arquitectura de microservicios y sus ventajas sobre un diseño monolítico?',\n 'prompts.codeOptimization.title': 'Sugerir optimizaciones de código',\n 'prompts.codeOptimization.message':\n '¿Puedes sugerir formas comunes de optimizar el código para lograr mejor rendimiento?',\n 'prompts.documentation.title': 'Resumen de documentación',\n 'prompts.documentation.message':\n '¿Puedes resumir la documentación para implementar autenticación OAuth 2.0 en una aplicación web?',\n 'prompts.gitWorkflows.title': 'Flujos de trabajo con Git',\n 'prompts.gitWorkflows.message':\n 'Quiero hacer cambios en el código en otra rama sin perder mi trabajo existente. ¿Cuál es el procedimiento para hacer esto usando Git?',\n 'prompts.testingStrategies.title': 'Sugerir estrategias de prueba',\n 'prompts.testingStrategies.message':\n '¿Puedes recomendar algunas estrategias de prueba comunes que harán que mi aplicación sea robusta y libre de errores?',\n 'prompts.sortingAlgorithms.title':\n 'Desmitificar algoritmos de ordenamiento',\n 'prompts.sortingAlgorithms.message':\n '¿Puedes explicar la diferencia entre un algoritmo de ordenamiento rápido y uno de ordenamiento por mezcla, y cuándo usar cada uno?',\n 'prompts.eventDriven.title':\n 'Entender la arquitectura impulsada por eventos',\n 'prompts.eventDriven.message':\n '¿Puedes explicar qué es la arquitectura impulsada por eventos y cuándo es beneficioso usarla en el desarrollo de software?',\n\n // Sample prompts - RHDH Specific\n 'prompts.tekton.title': 'Implementar con Tekton',\n 'prompts.tekton.message':\n '¿Puedes ayudarme a automatizar la implementación de mi aplicación usando pipelines de Tekton?',\n 'prompts.openshift.title': 'Crear una implementación de OpenShift',\n 'prompts.openshift.message':\n '¿Puedes guiarme a través de la creación de una nueva implementación en OpenShift para una aplicación containerizada?',\n 'prompts.rhdh.title': 'Comenzar con Red Hat Developer Hub',\n 'prompts.rhdh.message':\n '¿Puedes guiarme a través de los primeros pasos para comenzar a usar Developer Hub como desarrollador, como explorar el Catálogo de Software y agregar mi servicio?',\n\n // Conversation history\n 'conversation.history.confirm.title': '¿Eliminar chat?',\n 'conversation.history.confirm.message':\n 'Ya no verás este chat aquí. Esto también eliminará la actividad relacionada como prompts, respuestas y comentarios de tu Actividad de Lightspeed.',\n 'conversation.history.confirm.delete': 'Eliminar',\n\n // Permissions\n 'permission.required.title': 'Permisos faltantes',\n 'permission.required.description':\n 'Para ver el plugin de lightspeed, contacta a tu administrador para que te dé los permisos <b>lightspeed.chat.read</b> y <b>lightspeed.chat.create</b>.',\n\n // Disclaimers\n 'disclaimer.withValidation':\n 'Developer Lightspeed puede responder preguntas sobre muchos temas usando tus modelos configurados. Las respuestas de Developer Lightspeed están influenciadas por la documentación de Red Hat Developer Hub, pero Developer Lightspeed no tiene acceso a tu Catálogo de Software, TechDocs o Plantillas, etc. Developer Lightspeed usa validación de preguntas (prompts) para asegurar que las conversaciones permanezcan enfocadas en temas técnicos relevantes para Red Hat Developer Hub, como Backstage, Kubernetes y OpenShift. No incluyas información personal o sensible en tu entrada. Las interacciones con Developer Lightspeed pueden ser revisadas y usadas para mejorar productos o servicios.',\n 'disclaimer.withoutValidation':\n 'Developer Lightspeed puede responder preguntas sobre muchos temas usando tus modelos configurados. Las respuestas de Developer Lightspeed están influenciadas por la documentación de Red Hat Developer Hub, pero Developer Lightspeed no tiene acceso a tu Catálogo de Software, TechDocs o Plantillas, etc. No incluyas información personal o sensible en tu entrada. Las interacciones con Developer Lightspeed pueden ser revisadas y usadas para mejorar productos o servicios.',\n\n // Footer and feedback\n 'footer.accuracy.label':\n 'Siempre verifica la precisión de las respuestas generadas por IA/LLM antes de usarlas.',\n 'footer.accuracy.popover.title': 'Verificar precisión',\n 'footer.accuracy.popover.description':\n 'Si bien Developer Lightspeed se esfuerza por la precisión, siempre existe la posibilidad de errores. Es una buena práctica verificar información crítica de fuentes confiables, especialmente si es crucial para la toma de decisiones o acciones.',\n 'footer.accuracy.popover.image.alt':\n 'Imagen de ejemplo para el popover de nota al pie',\n 'footer.accuracy.popover.cta.label': 'Entendido',\n 'footer.accuracy.popover.link.label': 'Aprende más',\n\n // Common actions\n 'common.cancel': 'Cancelar',\n\n // Menu items\n 'menu.newConversation': 'Nuevo Chat',\n\n // Chat-specific UI elements\n 'chatbox.header.title': 'Developer Lightspeed',\n 'chatbox.search.placeholder': 'Buscar chats anteriores...',\n 'chatbox.welcome.greeting': 'Hola, {{userName}}',\n 'chatbox.welcome.description': '¿Cómo puedo ayudarte hoy?',\n 'chatbox.message.placeholder':\n 'Envía un mensaje y opcionalmente sube un archivo JSON, YAML, TXT o XML...',\n 'chatbox.fileUpload.failed': 'La carga del archivo falló',\n 'chatbox.fileUpload.infoText':\n 'Los tipos de archivo soportados son: .txt, .yaml, .json y .xml. El tamaño máximo del archivo es 25 MB.',\n\n // Accessibility and ARIA labels\n 'aria.chatbotSelector': 'Selector de chatbot',\n 'aria.important': 'Importante',\n\n // Modal actions\n 'modal.edit': 'Editar',\n 'modal.save': 'Guardar',\n 'modal.close': 'Cerrar',\n 'modal.cancel': 'Cancelar',\n\n // Conversation actions\n 'conversation.delete': 'Eliminar',\n 'conversation.announcement.userMessage':\n 'Mensaje del Usuario: {{prompt}}. El mensaje del Bot está cargando.',\n\n // User states\n 'user.guest': 'Invitado',\n 'user.loading': '...',\n\n // Button tooltips and labels\n 'tooltip.attach': 'Adjuntar',\n 'tooltip.send': 'Enviar',\n 'tooltip.microphone.active': 'Dejar de escuchar',\n 'tooltip.microphone.inactive': 'Usar micrófono',\n 'button.newChat': 'Nuevo chat',\n\n // Modal titles\n 'modal.title.preview': 'Vista previa del adjunto',\n 'modal.title.edit': 'Editar adjunto',\n\n // Alt texts for icons\n 'icon.lightspeed.alt': 'icono de lightspeed',\n 'icon.permissionRequired.alt': 'icono de permiso requerido',\n\n // Message utilities\n 'message.options.label': 'Opciones',\n\n // File attachment errors\n 'file.upload.error.alreadyExists': 'El archivo ya existe.',\n 'file.upload.error.multipleFiles': 'Se subió más de un archivo.',\n 'file.upload.error.unsupportedType':\n 'Tipo de archivo no soportado. Los tipos soportados son: .txt, .yaml, .json y .xml.',\n 'file.upload.error.fileTooLarge':\n 'El tamaño de tu archivo es demasiado grande. Por favor asegúrate de que tu archivo sea menor a 25 MB.',\n 'file.upload.error.readFailed':\n 'Error al leer el archivo: {{errorMessage}}',\n\n // Developer error messages\n 'error.context.fileAttachment':\n 'useFileAttachmentContext debe estar dentro de un FileAttachmentContextProvider',\n\n // Feedback actions\n 'feedback.form.title': '¿Por qué elegiste esta calificación?',\n 'feedback.form.textAreaPlaceholder':\n 'Proporciona comentarios adicionales opcionales',\n 'feedback.form.submitWord': 'Enviar',\n 'feedback.tooltips.goodResponse': 'Buena Respuesta',\n 'feedback.tooltips.badResponse': 'Mala Respuesta',\n 'feedback.tooltips.copied': 'Copiado',\n 'feedback.tooltips.copy': 'Copiar',\n 'feedback.tooltips.listening': 'Escuchando',\n 'feedback.tooltips.listen': 'Escuchar',\n 'feedback.quickResponses.positive.helpful': 'Información útil',\n 'feedback.quickResponses.positive.easyToUnderstand': 'Fácil de entender',\n 'feedback.quickResponses.positive.resolvedIssue': 'Resolvió mi problema',\n 'feedback.quickResponses.negative.didntAnswer': 'No respondió mi pregunta',\n 'feedback.quickResponses.negative.hardToUnderstand': 'Difícil de entender',\n 'feedback.quickResponses.negative.notHelpful': 'No fue útil',\n 'feedback.completion.title': 'Feedback enviado',\n 'feedback.completion.body':\n 'Hemos recibido tu respuesta. ¡Gracias por compartir tu feedback!',\n\n // Conversation categorization\n 'conversation.category.today': 'Hoy',\n 'conversation.category.yesterday': 'Ayer',\n 'conversation.category.previous7Days': 'Últimos 7 días',\n 'conversation.category.previous30Days': 'Últimos 30 días',\n },\n});\n\nexport default lightspeedTranslationEs;\n"],"names":[],"mappings":"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"}