@agent-native/core 0.77.4 → 0.77.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +31 -0
- package/corpus/core/package.json +3 -3
- package/corpus/core/src/agent/production-agent.ts +35 -0
- package/corpus/core/src/agent/run-store.ts +2 -0
- package/corpus/core/src/agent/thread-data-builder.ts +21 -2
- package/corpus/core/src/cli/create.ts +35 -1
- package/corpus/core/src/cli/skills.ts +8 -0
- package/corpus/core/src/client/AgentPanel.tsx +57 -25
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +31 -1
- package/corpus/core/src/client/analytics.ts +24 -2
- package/corpus/core/src/client/changelog/Changelog.tsx +22 -10
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +405 -35
- package/corpus/core/src/client/use-agent-engine-configured.ts +29 -15
- package/corpus/core/src/client/use-chat-threads.ts +104 -55
- package/corpus/core/src/server/analytics.ts +27 -3
- package/corpus/core/src/sharing/access.ts +35 -13
- package/corpus/core/src/sharing/actions/share-resource.ts +32 -9
- package/corpus/core/src/sharing/actions/unshare-resource.ts +25 -2
- package/corpus/core/src/sharing/registry.ts +9 -0
- package/corpus/core/src/vite/client.ts +3 -0
- package/corpus/templates/analytics/actions/data-source-status.ts +25 -14
- package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +2 -2
- package/corpus/templates/analytics/app/lib/data-source-status.ts +47 -6
- package/corpus/templates/analytics/app/lib/data-sources.ts +14 -3
- package/corpus/templates/analytics/app/pages/DataSources.tsx +24 -5
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +15 -43
- package/corpus/templates/analytics/changelog/2026-06-25-fixed-hubspot-data-source-status-so-private-app-tokens-legac.md +6 -0
- package/corpus/templates/analytics/netlify.toml +1 -0
- package/corpus/templates/analytics/server/lib/credential-keys.ts +3 -1
- package/corpus/templates/analytics/server/routes/api/test-connection.post.ts +12 -3
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +5 -2
- package/corpus/templates/assets/changelog/2026-06-25-create-now-returns-from-agent-settings-to-the-asset-chat-eve.md +6 -0
- package/corpus/templates/assets/netlify.toml +1 -0
- package/corpus/templates/brain/netlify.toml +1 -0
- package/corpus/templates/calendar/app/i18n-data.ts +12 -0
- package/corpus/templates/calendar/app/lib/clipboard.ts +58 -0
- package/corpus/templates/calendar/app/pages/AvailabilitySettings.tsx +15 -9
- package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +6 -2
- package/corpus/templates/calendar/changelog/2026-06-25-booking-link-copy-buttons-no-longer-fail-when-clipboard-perm.md +6 -0
- package/corpus/templates/calendar/netlify.toml +1 -0
- package/corpus/templates/chat/netlify.toml +1 -0
- package/corpus/templates/clips/AGENTS.md +9 -7
- package/corpus/templates/clips/actions/add-vocabulary-term.ts +2 -2
- package/corpus/templates/clips/actions/archive-recording.ts +5 -2
- package/corpus/templates/clips/actions/clear-edits.ts +5 -2
- package/corpus/templates/clips/actions/create-folder.ts +7 -2
- package/corpus/templates/clips/actions/delete-folder.ts +7 -4
- package/corpus/templates/clips/actions/delete-recording-permanent.ts +5 -2
- package/corpus/templates/clips/actions/finalize-recording.ts +5 -2
- package/corpus/templates/clips/actions/import-loom-recording.ts +2 -1
- package/corpus/templates/clips/actions/list-notifications.ts +9 -5
- package/corpus/templates/clips/actions/list-organization-state.ts +2 -1
- package/corpus/templates/clips/actions/list-recordings.ts +4 -1
- package/corpus/templates/clips/actions/move-recording.ts +5 -1
- package/corpus/templates/clips/actions/rename-folder.ts +6 -3
- package/corpus/templates/clips/actions/request-transcript.ts +5 -2
- package/corpus/templates/clips/actions/restore-recording.ts +5 -2
- package/corpus/templates/clips/actions/save-browser-diagnostics.ts +21 -8
- package/corpus/templates/clips/actions/set-chapters.ts +5 -2
- package/corpus/templates/clips/actions/set-thumbnail.ts +5 -2
- package/corpus/templates/clips/actions/split-recording.ts +5 -2
- package/corpus/templates/clips/actions/stitch-recordings.ts +6 -2
- package/corpus/templates/clips/actions/trash-recording.ts +5 -2
- package/corpus/templates/clips/actions/undo-edit.ts +5 -2
- package/corpus/templates/clips/actions/view-screen.ts +2 -1
- package/corpus/templates/clips/app/components/library/recording-card.tsx +24 -7
- package/corpus/templates/clips/app/i18n/ar-SA.ts +14 -0
- package/corpus/templates/clips/app/i18n/de-DE.ts +14 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +14 -0
- package/corpus/templates/clips/app/i18n/es-ES.ts +14 -0
- package/corpus/templates/clips/app/i18n/fr-FR.ts +14 -0
- package/corpus/templates/clips/app/i18n/hi-IN.ts +14 -0
- package/corpus/templates/clips/app/i18n/ja-JP.ts +14 -0
- package/corpus/templates/clips/app/i18n/ko-KR.ts +14 -0
- package/corpus/templates/clips/app/i18n/pt-BR.ts +14 -0
- package/corpus/templates/clips/app/i18n/zh-CN.ts +14 -0
- package/corpus/templates/clips/app/lib/browser-diagnostics-capture.ts +5 -1
- package/corpus/templates/clips/app/root.tsx +2 -2
- package/corpus/templates/clips/app/routes/_app.extensions.$id.tsx +4 -1
- package/corpus/templates/clips/app/routes/_app.extensions._index.tsx +4 -1
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +12 -5
- package/corpus/templates/clips/changelog/2026-06-25-chrome-extension-recordings-now-upload-large-capture-bursts.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-25-console-diagnostics-keep-more-useful-non-secret-details-when.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-25-fixed-owner-recognition-so-clips-created-from-desktop-and-we.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-25-localized-clips-settings-changelog-and-extension-sidebar-lab.md +6 -0
- package/corpus/templates/clips/chrome-extension/package.json +3 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
- package/corpus/templates/clips/chrome-extension/src/background.ts +85 -9
- package/corpus/templates/clips/chrome-extension/src/content-script.ts +55 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +79 -3
- package/corpus/templates/clips/chrome-extension/src/options.ts +10 -0
- package/corpus/templates/clips/chrome-extension/src/overlay.ts +6 -0
- package/corpus/templates/clips/chrome-extension/src/permission.ts +8 -1
- package/corpus/templates/clips/chrome-extension/src/popup.ts +65 -39
- package/corpus/templates/clips/chrome-extension/src/sentry.ts +206 -0
- package/corpus/templates/clips/chrome-extension/vite.config.ts +47 -0
- package/corpus/templates/clips/desktop/src/overlays/countdown.tsx +4 -2
- package/corpus/templates/clips/desktop/src/styles.css +15 -1
- package/corpus/templates/clips/netlify.toml +1 -0
- package/corpus/templates/clips/server/db/index.ts +1 -0
- package/corpus/templates/clips/server/lib/google-calendar-oauth.ts +35 -23
- package/corpus/templates/clips/server/lib/public-agent-context.ts +8 -1
- package/corpus/templates/clips/server/lib/recordings.ts +18 -2
- package/corpus/templates/clips/server/lib/slack-oauth.ts +9 -6
- package/corpus/templates/clips/server/plugins/onboarding-calendar.ts +6 -2
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +2 -2
- package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +5 -2
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +5 -2
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +5 -2
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/reset-chunks.post.ts +5 -2
- package/corpus/templates/clips/shared/browser-diagnostics.ts +14 -4
- package/corpus/templates/content/netlify.toml +1 -0
- package/corpus/templates/design/netlify.toml +1 -0
- package/corpus/templates/dispatch/netlify.toml +1 -0
- package/corpus/templates/forms/netlify.toml +1 -0
- package/corpus/templates/macros/netlify.toml +1 -0
- package/corpus/templates/mail/app/components/email/EmailList.tsx +7 -3
- package/corpus/templates/mail/app/components/email/EmailThread.tsx +4 -1
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +10 -2
- package/corpus/templates/mail/app/hooks/use-compose-state.ts +15 -5
- package/corpus/templates/mail/app/hooks/use-google-auth.ts +47 -9
- package/corpus/templates/mail/changelog/2026-06-25-account-avatars-stay-stable-while-mail-refreshes-google-acco.md +6 -0
- package/corpus/templates/mail/changelog/2026-06-25-mail-background-draft-saves-and-thread-prefetches-no-longer.md +6 -0
- package/corpus/templates/mail/netlify.toml +1 -0
- package/corpus/templates/plan/.agents/skills/visual-plan/references/canvas.md +8 -0
- package/corpus/templates/plan/netlify.toml +1 -0
- package/corpus/templates/slides/netlify.toml +1 -0
- package/corpus/templates/videos/netlify.toml +1 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +31 -0
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-store.d.ts +2 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +2 -0
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +23 -2
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +28 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/skills.d.ts +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +8 -0
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +8 -2
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +29 -15
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +4 -4
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +22 -2
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/changelog/Changelog.d.ts +7 -2
- package/dist/client/changelog/Changelog.d.ts.map +1 -1
- package/dist/client/changelog/Changelog.js +9 -7
- package/dist/client/changelog/Changelog.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +339 -11
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
- package/dist/client/use-agent-engine-configured.js +23 -13
- package/dist/client/use-agent-engine-configured.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts +4 -0
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +49 -4
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/observability/routes.d.ts +7 -7
- package/dist/server/agent-engine-api-key-route.d.ts +2 -2
- package/dist/server/analytics.d.ts +4 -0
- package/dist/server/analytics.d.ts.map +1 -1
- package/dist/server/analytics.js +19 -3
- package/dist/server/analytics.js.map +1 -1
- package/dist/sharing/access.d.ts.map +1 -1
- package/dist/sharing/access.js +26 -12
- package/dist/sharing/access.js.map +1 -1
- package/dist/sharing/actions/share-resource.js +20 -9
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/sharing/actions/unshare-resource.js +13 -2
- package/dist/sharing/actions/unshare-resource.js.map +1 -1
- package/dist/sharing/registry.d.ts +9 -0
- package/dist/sharing/registry.d.ts.map +1 -1
- package/dist/sharing/registry.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +1 -0
- package/dist/vite/client.js.map +1 -1
- package/package.json +3 -3
|
@@ -47,6 +47,7 @@ import {
|
|
|
47
47
|
TooltipTrigger,
|
|
48
48
|
} from "../components/ui/tooltip.js";
|
|
49
49
|
import { PromptComposer } from "../composer/PromptComposer.js";
|
|
50
|
+
import { DEFAULT_LOCALE, useOptionalLocale, type LocaleCode } from "../i18n.js";
|
|
50
51
|
import { cn } from "../utils.js";
|
|
51
52
|
import {
|
|
52
53
|
deleteOrHideExtension,
|
|
@@ -82,6 +83,376 @@ const EXTENSIONS_SORT_MODE_KEY = "extensions-sort-mode";
|
|
|
82
83
|
|
|
83
84
|
type ExtensionSortMode = "most-used" | "alphabetical" | "manual";
|
|
84
85
|
|
|
86
|
+
type ExtensionsCopy = {
|
|
87
|
+
title: string;
|
|
88
|
+
description: string;
|
|
89
|
+
open: string;
|
|
90
|
+
learnMore: string;
|
|
91
|
+
sortOptions: string;
|
|
92
|
+
sortTooltip: string;
|
|
93
|
+
sortBy: string;
|
|
94
|
+
mostUsed: string;
|
|
95
|
+
alphabetical: string;
|
|
96
|
+
manualOrder: string;
|
|
97
|
+
showHidden: string;
|
|
98
|
+
newExtension: string;
|
|
99
|
+
createPlaceholder: string;
|
|
100
|
+
collapse: string;
|
|
101
|
+
expand: string;
|
|
102
|
+
reorder: (name: string) => string;
|
|
103
|
+
dragToReorder: string;
|
|
104
|
+
hiddenFromEveryone: string;
|
|
105
|
+
file: string;
|
|
106
|
+
unfavorite: string;
|
|
107
|
+
favorite: string;
|
|
108
|
+
actions: string;
|
|
109
|
+
editInFiles: string;
|
|
110
|
+
rename: string;
|
|
111
|
+
unhideForEveryone: string;
|
|
112
|
+
hideFromEveryone: string;
|
|
113
|
+
removeFromMyList: string;
|
|
114
|
+
delete: string;
|
|
115
|
+
showLess: string;
|
|
116
|
+
showMore: string;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const EXTENSIONS_COPY: Record<LocaleCode, ExtensionsCopy> = {
|
|
120
|
+
"en-US": {
|
|
121
|
+
title: "Extensions",
|
|
122
|
+
description:
|
|
123
|
+
"Build small sandboxed apps that can read app data, call actions, and save their own state.",
|
|
124
|
+
open: "Open extensions",
|
|
125
|
+
learnMore: "Learn more",
|
|
126
|
+
sortOptions: "Extensions sort options",
|
|
127
|
+
sortTooltip: "Extensions sort",
|
|
128
|
+
sortBy: "Sort by",
|
|
129
|
+
mostUsed: "Most used",
|
|
130
|
+
alphabetical: "Alphabetical",
|
|
131
|
+
manualOrder: "Manual order",
|
|
132
|
+
showHidden: "Show hidden",
|
|
133
|
+
newExtension: "New extension",
|
|
134
|
+
createPlaceholder: "Describe what you'd like to build...",
|
|
135
|
+
collapse: "Collapse extensions",
|
|
136
|
+
expand: "Expand extensions",
|
|
137
|
+
reorder: (name) => `Reorder ${name}`,
|
|
138
|
+
dragToReorder: "Drag to reorder",
|
|
139
|
+
hiddenFromEveryone: "Hidden from everyone",
|
|
140
|
+
file: "File",
|
|
141
|
+
unfavorite: "Unfavorite",
|
|
142
|
+
favorite: "Favorite",
|
|
143
|
+
actions: "Extension actions",
|
|
144
|
+
editInFiles: "Edit in files",
|
|
145
|
+
rename: "Rename",
|
|
146
|
+
unhideForEveryone: "Unhide for everyone",
|
|
147
|
+
hideFromEveryone: "Hide from everyone",
|
|
148
|
+
removeFromMyList: "Remove from my list",
|
|
149
|
+
delete: "Delete",
|
|
150
|
+
showLess: "show less",
|
|
151
|
+
showMore: "show more",
|
|
152
|
+
},
|
|
153
|
+
"zh-CN": {
|
|
154
|
+
title: "扩展",
|
|
155
|
+
description: "构建可读取应用数据、调用操作并保存自身状态的小型沙盒应用。",
|
|
156
|
+
open: "打开扩展",
|
|
157
|
+
learnMore: "了解更多",
|
|
158
|
+
sortOptions: "扩展排序选项",
|
|
159
|
+
sortTooltip: "扩展排序",
|
|
160
|
+
sortBy: "排序方式",
|
|
161
|
+
mostUsed: "最常用",
|
|
162
|
+
alphabetical: "按字母顺序",
|
|
163
|
+
manualOrder: "手动排序",
|
|
164
|
+
showHidden: "显示隐藏项",
|
|
165
|
+
newExtension: "新建扩展",
|
|
166
|
+
createPlaceholder: "描述你想构建的内容...",
|
|
167
|
+
collapse: "收起扩展",
|
|
168
|
+
expand: "展开扩展",
|
|
169
|
+
reorder: (name) => `重新排序 ${name}`,
|
|
170
|
+
dragToReorder: "拖动以重新排序",
|
|
171
|
+
hiddenFromEveryone: "已对所有人隐藏",
|
|
172
|
+
file: "文件",
|
|
173
|
+
unfavorite: "取消收藏",
|
|
174
|
+
favorite: "收藏",
|
|
175
|
+
actions: "扩展操作",
|
|
176
|
+
editInFiles: "在文件中编辑",
|
|
177
|
+
rename: "重命名",
|
|
178
|
+
unhideForEveryone: "对所有人取消隐藏",
|
|
179
|
+
hideFromEveryone: "对所有人隐藏",
|
|
180
|
+
removeFromMyList: "从我的列表中移除",
|
|
181
|
+
delete: "删除",
|
|
182
|
+
showLess: "收起",
|
|
183
|
+
showMore: "显示更多",
|
|
184
|
+
},
|
|
185
|
+
"es-ES": {
|
|
186
|
+
title: "Extensiones",
|
|
187
|
+
description:
|
|
188
|
+
"Crea pequeñas apps aisladas que pueden leer datos de la app, llamar acciones y guardar su propio estado.",
|
|
189
|
+
open: "Abrir extensiones",
|
|
190
|
+
learnMore: "Más información",
|
|
191
|
+
sortOptions: "Opciones de orden de extensiones",
|
|
192
|
+
sortTooltip: "Orden de extensiones",
|
|
193
|
+
sortBy: "Ordenar por",
|
|
194
|
+
mostUsed: "Más usadas",
|
|
195
|
+
alphabetical: "Alfabético",
|
|
196
|
+
manualOrder: "Orden manual",
|
|
197
|
+
showHidden: "Mostrar ocultas",
|
|
198
|
+
newExtension: "Nueva extensión",
|
|
199
|
+
createPlaceholder: "Describe lo que quieres crear...",
|
|
200
|
+
collapse: "Contraer extensiones",
|
|
201
|
+
expand: "Expandir extensiones",
|
|
202
|
+
reorder: (name) => `Reordenar ${name}`,
|
|
203
|
+
dragToReorder: "Arrastra para reordenar",
|
|
204
|
+
hiddenFromEveryone: "Oculta para todos",
|
|
205
|
+
file: "Archivo",
|
|
206
|
+
unfavorite: "Quitar de favoritos",
|
|
207
|
+
favorite: "Favorito",
|
|
208
|
+
actions: "Acciones de extensión",
|
|
209
|
+
editInFiles: "Editar en archivos",
|
|
210
|
+
rename: "Renombrar",
|
|
211
|
+
unhideForEveryone: "Mostrar para todos",
|
|
212
|
+
hideFromEveryone: "Ocultar para todos",
|
|
213
|
+
removeFromMyList: "Quitar de mi lista",
|
|
214
|
+
delete: "Eliminar",
|
|
215
|
+
showLess: "mostrar menos",
|
|
216
|
+
showMore: "mostrar más",
|
|
217
|
+
},
|
|
218
|
+
"fr-FR": {
|
|
219
|
+
title: "Extensions",
|
|
220
|
+
description:
|
|
221
|
+
"Créez de petites apps sandboxées capables de lire les données de l'app, d'appeler des actions et d'enregistrer leur propre état.",
|
|
222
|
+
open: "Ouvrir les extensions",
|
|
223
|
+
learnMore: "En savoir plus",
|
|
224
|
+
sortOptions: "Options de tri des extensions",
|
|
225
|
+
sortTooltip: "Tri des extensions",
|
|
226
|
+
sortBy: "Trier par",
|
|
227
|
+
mostUsed: "Les plus utilisées",
|
|
228
|
+
alphabetical: "Alphabétique",
|
|
229
|
+
manualOrder: "Ordre manuel",
|
|
230
|
+
showHidden: "Afficher les masquées",
|
|
231
|
+
newExtension: "Nouvelle extension",
|
|
232
|
+
createPlaceholder: "Décrivez ce que vous voulez créer...",
|
|
233
|
+
collapse: "Replier les extensions",
|
|
234
|
+
expand: "Déplier les extensions",
|
|
235
|
+
reorder: (name) => `Réordonner ${name}`,
|
|
236
|
+
dragToReorder: "Faire glisser pour réordonner",
|
|
237
|
+
hiddenFromEveryone: "Masquée pour tout le monde",
|
|
238
|
+
file: "Fichier",
|
|
239
|
+
unfavorite: "Retirer des favoris",
|
|
240
|
+
favorite: "Favori",
|
|
241
|
+
actions: "Actions de l'extension",
|
|
242
|
+
editInFiles: "Modifier dans les fichiers",
|
|
243
|
+
rename: "Renommer",
|
|
244
|
+
unhideForEveryone: "Afficher pour tout le monde",
|
|
245
|
+
hideFromEveryone: "Masquer pour tout le monde",
|
|
246
|
+
removeFromMyList: "Retirer de ma liste",
|
|
247
|
+
delete: "Supprimer",
|
|
248
|
+
showLess: "afficher moins",
|
|
249
|
+
showMore: "afficher plus",
|
|
250
|
+
},
|
|
251
|
+
"de-DE": {
|
|
252
|
+
title: "Erweiterungen",
|
|
253
|
+
description:
|
|
254
|
+
"Erstelle kleine Sandbox-Apps, die App-Daten lesen, Aktionen aufrufen und ihren eigenen Zustand speichern können.",
|
|
255
|
+
open: "Erweiterungen öffnen",
|
|
256
|
+
learnMore: "Mehr erfahren",
|
|
257
|
+
sortOptions: "Sortieroptionen für Erweiterungen",
|
|
258
|
+
sortTooltip: "Erweiterungen sortieren",
|
|
259
|
+
sortBy: "Sortieren nach",
|
|
260
|
+
mostUsed: "Am häufigsten genutzt",
|
|
261
|
+
alphabetical: "Alphabetisch",
|
|
262
|
+
manualOrder: "Manuelle Reihenfolge",
|
|
263
|
+
showHidden: "Ausgeblendete anzeigen",
|
|
264
|
+
newExtension: "Neue Erweiterung",
|
|
265
|
+
createPlaceholder: "Beschreibe, was du erstellen möchtest...",
|
|
266
|
+
collapse: "Erweiterungen einklappen",
|
|
267
|
+
expand: "Erweiterungen ausklappen",
|
|
268
|
+
reorder: (name) => `${name} neu anordnen`,
|
|
269
|
+
dragToReorder: "Zum Neuordnen ziehen",
|
|
270
|
+
hiddenFromEveryone: "Für alle ausgeblendet",
|
|
271
|
+
file: "Datei",
|
|
272
|
+
unfavorite: "Aus Favoriten entfernen",
|
|
273
|
+
favorite: "Favorisieren",
|
|
274
|
+
actions: "Erweiterungsaktionen",
|
|
275
|
+
editInFiles: "In Dateien bearbeiten",
|
|
276
|
+
rename: "Umbenennen",
|
|
277
|
+
unhideForEveryone: "Für alle einblenden",
|
|
278
|
+
hideFromEveryone: "Für alle ausblenden",
|
|
279
|
+
removeFromMyList: "Aus meiner Liste entfernen",
|
|
280
|
+
delete: "Löschen",
|
|
281
|
+
showLess: "weniger anzeigen",
|
|
282
|
+
showMore: "mehr anzeigen",
|
|
283
|
+
},
|
|
284
|
+
"ja-JP": {
|
|
285
|
+
title: "拡張機能",
|
|
286
|
+
description:
|
|
287
|
+
"アプリデータを読み取り、アクションを呼び出し、独自の状態を保存できる小さなサンドボックスアプリを作成します。",
|
|
288
|
+
open: "拡張機能を開く",
|
|
289
|
+
learnMore: "詳しく見る",
|
|
290
|
+
sortOptions: "拡張機能の並べ替えオプション",
|
|
291
|
+
sortTooltip: "拡張機能の並べ替え",
|
|
292
|
+
sortBy: "並べ替え",
|
|
293
|
+
mostUsed: "よく使う順",
|
|
294
|
+
alphabetical: "アルファベット順",
|
|
295
|
+
manualOrder: "手動順",
|
|
296
|
+
showHidden: "非表示を表示",
|
|
297
|
+
newExtension: "新しい拡張機能",
|
|
298
|
+
createPlaceholder: "作りたいものを説明してください...",
|
|
299
|
+
collapse: "拡張機能を折りたたむ",
|
|
300
|
+
expand: "拡張機能を展開",
|
|
301
|
+
reorder: (name) => `${name} を並べ替え`,
|
|
302
|
+
dragToReorder: "ドラッグして並べ替え",
|
|
303
|
+
hiddenFromEveryone: "全員に非表示",
|
|
304
|
+
file: "ファイル",
|
|
305
|
+
unfavorite: "お気に入り解除",
|
|
306
|
+
favorite: "お気に入り",
|
|
307
|
+
actions: "拡張機能の操作",
|
|
308
|
+
editInFiles: "ファイルで編集",
|
|
309
|
+
rename: "名前を変更",
|
|
310
|
+
unhideForEveryone: "全員に表示",
|
|
311
|
+
hideFromEveryone: "全員に非表示",
|
|
312
|
+
removeFromMyList: "自分のリストから削除",
|
|
313
|
+
delete: "削除",
|
|
314
|
+
showLess: "少なく表示",
|
|
315
|
+
showMore: "さらに表示",
|
|
316
|
+
},
|
|
317
|
+
"ko-KR": {
|
|
318
|
+
title: "확장",
|
|
319
|
+
description:
|
|
320
|
+
"앱 데이터를 읽고, 액션을 호출하고, 자체 상태를 저장할 수 있는 작은 샌드박스 앱을 만듭니다.",
|
|
321
|
+
open: "확장 열기",
|
|
322
|
+
learnMore: "자세히 알아보기",
|
|
323
|
+
sortOptions: "확장 정렬 옵션",
|
|
324
|
+
sortTooltip: "확장 정렬",
|
|
325
|
+
sortBy: "정렬 기준",
|
|
326
|
+
mostUsed: "가장 많이 사용",
|
|
327
|
+
alphabetical: "가나다순",
|
|
328
|
+
manualOrder: "수동 순서",
|
|
329
|
+
showHidden: "숨김 항목 표시",
|
|
330
|
+
newExtension: "새 확장",
|
|
331
|
+
createPlaceholder: "만들고 싶은 것을 설명하세요...",
|
|
332
|
+
collapse: "확장 접기",
|
|
333
|
+
expand: "확장 펼치기",
|
|
334
|
+
reorder: (name) => `${name} 순서 변경`,
|
|
335
|
+
dragToReorder: "드래그하여 순서 변경",
|
|
336
|
+
hiddenFromEveryone: "모두에게 숨김",
|
|
337
|
+
file: "파일",
|
|
338
|
+
unfavorite: "즐겨찾기 해제",
|
|
339
|
+
favorite: "즐겨찾기",
|
|
340
|
+
actions: "확장 작업",
|
|
341
|
+
editInFiles: "파일에서 편집",
|
|
342
|
+
rename: "이름 변경",
|
|
343
|
+
unhideForEveryone: "모두에게 표시",
|
|
344
|
+
hideFromEveryone: "모두에게 숨기기",
|
|
345
|
+
removeFromMyList: "내 목록에서 제거",
|
|
346
|
+
delete: "삭제",
|
|
347
|
+
showLess: "덜 보기",
|
|
348
|
+
showMore: "더 보기",
|
|
349
|
+
},
|
|
350
|
+
"pt-BR": {
|
|
351
|
+
title: "Extensões",
|
|
352
|
+
description:
|
|
353
|
+
"Crie pequenos apps isolados que podem ler dados do app, chamar ações e salvar o próprio estado.",
|
|
354
|
+
open: "Abrir extensões",
|
|
355
|
+
learnMore: "Saiba mais",
|
|
356
|
+
sortOptions: "Opções de ordenação das extensões",
|
|
357
|
+
sortTooltip: "Ordenação das extensões",
|
|
358
|
+
sortBy: "Ordenar por",
|
|
359
|
+
mostUsed: "Mais usadas",
|
|
360
|
+
alphabetical: "Alfabética",
|
|
361
|
+
manualOrder: "Ordem manual",
|
|
362
|
+
showHidden: "Mostrar ocultas",
|
|
363
|
+
newExtension: "Nova extensão",
|
|
364
|
+
createPlaceholder: "Descreva o que você quer criar...",
|
|
365
|
+
collapse: "Recolher extensões",
|
|
366
|
+
expand: "Expandir extensões",
|
|
367
|
+
reorder: (name) => `Reordenar ${name}`,
|
|
368
|
+
dragToReorder: "Arraste para reordenar",
|
|
369
|
+
hiddenFromEveryone: "Oculta para todos",
|
|
370
|
+
file: "Arquivo",
|
|
371
|
+
unfavorite: "Remover dos favoritos",
|
|
372
|
+
favorite: "Favoritar",
|
|
373
|
+
actions: "Ações da extensão",
|
|
374
|
+
editInFiles: "Editar em arquivos",
|
|
375
|
+
rename: "Renomear",
|
|
376
|
+
unhideForEveryone: "Mostrar para todos",
|
|
377
|
+
hideFromEveryone: "Ocultar para todos",
|
|
378
|
+
removeFromMyList: "Remover da minha lista",
|
|
379
|
+
delete: "Excluir",
|
|
380
|
+
showLess: "mostrar menos",
|
|
381
|
+
showMore: "mostrar mais",
|
|
382
|
+
},
|
|
383
|
+
"hi-IN": {
|
|
384
|
+
title: "एक्सटेंशन",
|
|
385
|
+
description:
|
|
386
|
+
"छोटे सैंडबॉक्स ऐप बनाएं जो ऐप डेटा पढ़ सकते हैं, कार्रवाइयां चला सकते हैं और अपना स्टेट सहेज सकते हैं।",
|
|
387
|
+
open: "एक्सटेंशन खोलें",
|
|
388
|
+
learnMore: "और जानें",
|
|
389
|
+
sortOptions: "एक्सटेंशन क्रम विकल्प",
|
|
390
|
+
sortTooltip: "एक्सटेंशन क्रम",
|
|
391
|
+
sortBy: "इसके अनुसार क्रमबद्ध करें",
|
|
392
|
+
mostUsed: "सबसे अधिक उपयोग",
|
|
393
|
+
alphabetical: "वर्णानुक्रम",
|
|
394
|
+
manualOrder: "मैन्युअल क्रम",
|
|
395
|
+
showHidden: "छिपे हुए दिखाएं",
|
|
396
|
+
newExtension: "नया एक्सटेंशन",
|
|
397
|
+
createPlaceholder: "बताएं कि आप क्या बनाना चाहते हैं...",
|
|
398
|
+
collapse: "एक्सटेंशन समेटें",
|
|
399
|
+
expand: "एक्सटेंशन फैलाएं",
|
|
400
|
+
reorder: (name) => `${name} का क्रम बदलें`,
|
|
401
|
+
dragToReorder: "क्रम बदलने के लिए खींचें",
|
|
402
|
+
hiddenFromEveryone: "सभी से छिपा हुआ",
|
|
403
|
+
file: "फ़ाइल",
|
|
404
|
+
unfavorite: "पसंदीदा से हटाएं",
|
|
405
|
+
favorite: "पसंदीदा",
|
|
406
|
+
actions: "एक्सटेंशन कार्रवाइयां",
|
|
407
|
+
editInFiles: "फ़ाइलों में संपादित करें",
|
|
408
|
+
rename: "नाम बदलें",
|
|
409
|
+
unhideForEveryone: "सभी के लिए दिखाएं",
|
|
410
|
+
hideFromEveryone: "सभी से छिपाएं",
|
|
411
|
+
removeFromMyList: "मेरी सूची से हटाएं",
|
|
412
|
+
delete: "हटाएं",
|
|
413
|
+
showLess: "कम दिखाएं",
|
|
414
|
+
showMore: "और दिखाएं",
|
|
415
|
+
},
|
|
416
|
+
"ar-SA": {
|
|
417
|
+
title: "الإضافات",
|
|
418
|
+
description:
|
|
419
|
+
"أنشئ تطبيقات صغيرة معزولة يمكنها قراءة بيانات التطبيق واستدعاء الإجراءات وحفظ حالتها الخاصة.",
|
|
420
|
+
open: "فتح الإضافات",
|
|
421
|
+
learnMore: "معرفة المزيد",
|
|
422
|
+
sortOptions: "خيارات ترتيب الإضافات",
|
|
423
|
+
sortTooltip: "ترتيب الإضافات",
|
|
424
|
+
sortBy: "ترتيب حسب",
|
|
425
|
+
mostUsed: "الأكثر استخدامًا",
|
|
426
|
+
alphabetical: "أبجديًا",
|
|
427
|
+
manualOrder: "ترتيب يدوي",
|
|
428
|
+
showHidden: "إظهار المخفية",
|
|
429
|
+
newExtension: "إضافة جديدة",
|
|
430
|
+
createPlaceholder: "صف ما تريد إنشاءه...",
|
|
431
|
+
collapse: "طي الإضافات",
|
|
432
|
+
expand: "توسيع الإضافات",
|
|
433
|
+
reorder: (name) => `إعادة ترتيب ${name}`,
|
|
434
|
+
dragToReorder: "اسحب لإعادة الترتيب",
|
|
435
|
+
hiddenFromEveryone: "مخفية عن الجميع",
|
|
436
|
+
file: "ملف",
|
|
437
|
+
unfavorite: "إزالة من المفضلة",
|
|
438
|
+
favorite: "إضافة إلى المفضلة",
|
|
439
|
+
actions: "إجراءات الإضافة",
|
|
440
|
+
editInFiles: "تحرير في الملفات",
|
|
441
|
+
rename: "إعادة تسمية",
|
|
442
|
+
unhideForEveryone: "إظهار للجميع",
|
|
443
|
+
hideFromEveryone: "إخفاء عن الجميع",
|
|
444
|
+
removeFromMyList: "إزالة من قائمتي",
|
|
445
|
+
delete: "حذف",
|
|
446
|
+
showLess: "إظهار أقل",
|
|
447
|
+
showMore: "إظهار المزيد",
|
|
448
|
+
},
|
|
449
|
+
};
|
|
450
|
+
|
|
451
|
+
function useExtensionsCopy() {
|
|
452
|
+
const locale = useOptionalLocale()?.locale ?? DEFAULT_LOCALE;
|
|
453
|
+
return EXTENSIONS_COPY[locale] ?? EXTENSIONS_COPY[DEFAULT_LOCALE];
|
|
454
|
+
}
|
|
455
|
+
|
|
85
456
|
function getFavorites(): Set<string> {
|
|
86
457
|
try {
|
|
87
458
|
const raw = localStorage.getItem(FAVORITES_KEY);
|
|
@@ -148,11 +519,13 @@ function ExtensionSortMenu({
|
|
|
148
519
|
onChange,
|
|
149
520
|
showHidden,
|
|
150
521
|
onShowHiddenChange,
|
|
522
|
+
copy,
|
|
151
523
|
}: {
|
|
152
524
|
value: ExtensionSortMode;
|
|
153
525
|
onChange: (value: ExtensionSortMode) => void;
|
|
154
526
|
showHidden: boolean;
|
|
155
527
|
onShowHiddenChange: (next: boolean) => void;
|
|
528
|
+
copy: ExtensionsCopy;
|
|
156
529
|
}) {
|
|
157
530
|
return (
|
|
158
531
|
<DropdownMenu>
|
|
@@ -162,16 +535,16 @@ function ExtensionSortMenu({
|
|
|
162
535
|
<button
|
|
163
536
|
type="button"
|
|
164
537
|
className="inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md text-muted-foreground/45 opacity-0 transition-all hover:bg-accent hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring group-hover/extensions-section:opacity-100"
|
|
165
|
-
aria-label=
|
|
538
|
+
aria-label={copy.sortOptions}
|
|
166
539
|
>
|
|
167
540
|
<IconSettings className="h-3.5 w-3.5" />
|
|
168
541
|
</button>
|
|
169
542
|
</DropdownMenuTrigger>
|
|
170
543
|
</TooltipTrigger>
|
|
171
|
-
<TooltipContent>
|
|
544
|
+
<TooltipContent>{copy.sortTooltip}</TooltipContent>
|
|
172
545
|
</Tooltip>
|
|
173
546
|
<DropdownMenuContent side="right" align="start" className="w-44">
|
|
174
|
-
<DropdownMenuLabel>
|
|
547
|
+
<DropdownMenuLabel>{copy.sortBy}</DropdownMenuLabel>
|
|
175
548
|
<DropdownMenuRadioGroup
|
|
176
549
|
value={value}
|
|
177
550
|
onValueChange={(next) => {
|
|
@@ -185,14 +558,14 @@ function ExtensionSortMenu({
|
|
|
185
558
|
}}
|
|
186
559
|
>
|
|
187
560
|
<DropdownMenuRadioItem value="most-used">
|
|
188
|
-
|
|
561
|
+
{copy.mostUsed}
|
|
189
562
|
</DropdownMenuRadioItem>
|
|
190
563
|
<DropdownMenuRadioItem value="alphabetical">
|
|
191
|
-
|
|
564
|
+
{copy.alphabetical}
|
|
192
565
|
</DropdownMenuRadioItem>
|
|
193
566
|
<DropdownMenuSeparator />
|
|
194
567
|
<DropdownMenuRadioItem value="manual">
|
|
195
|
-
|
|
568
|
+
{copy.manualOrder}
|
|
196
569
|
</DropdownMenuRadioItem>
|
|
197
570
|
</DropdownMenuRadioGroup>
|
|
198
571
|
<DropdownMenuSeparator />
|
|
@@ -200,7 +573,7 @@ function ExtensionSortMenu({
|
|
|
200
573
|
checked={showHidden}
|
|
201
574
|
onCheckedChange={(checked) => onShowHiddenChange(Boolean(checked))}
|
|
202
575
|
>
|
|
203
|
-
|
|
576
|
+
{copy.showHidden}
|
|
204
577
|
</DropdownMenuCheckboxItem>
|
|
205
578
|
</DropdownMenuContent>
|
|
206
579
|
</DropdownMenu>
|
|
@@ -208,6 +581,7 @@ function ExtensionSortMenu({
|
|
|
208
581
|
}
|
|
209
582
|
|
|
210
583
|
export function ExtensionsSidebarSection() {
|
|
584
|
+
const copy = useExtensionsCopy();
|
|
211
585
|
const location = useLocation();
|
|
212
586
|
const navigate = useNavigate();
|
|
213
587
|
const queryClient = useQueryClient();
|
|
@@ -475,9 +849,7 @@ export function ExtensionsSidebarSection() {
|
|
|
475
849
|
type="button"
|
|
476
850
|
onClick={toggleExtensionsOpen}
|
|
477
851
|
className="absolute inset-0 rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
478
|
-
aria-label={
|
|
479
|
-
extensionsOpen ? "Collapse extensions" : "Expand extensions"
|
|
480
|
-
}
|
|
852
|
+
aria-label={extensionsOpen ? copy.collapse : copy.expand}
|
|
481
853
|
aria-expanded={extensionsOpen}
|
|
482
854
|
/>
|
|
483
855
|
<div className="pointer-events-none relative z-10 flex min-w-0 flex-1 items-center gap-2 px-3 py-1.5 pr-20">
|
|
@@ -488,7 +860,7 @@ export function ExtensionsSidebarSection() {
|
|
|
488
860
|
className="pointer-events-auto min-w-0 select-none truncate"
|
|
489
861
|
onClick={toggleExtensionsOpen}
|
|
490
862
|
>
|
|
491
|
-
|
|
863
|
+
{copy.title}
|
|
492
864
|
</span>
|
|
493
865
|
</HoverCardTrigger>
|
|
494
866
|
<HoverCardContent
|
|
@@ -499,11 +871,10 @@ export function ExtensionsSidebarSection() {
|
|
|
499
871
|
>
|
|
500
872
|
<div>
|
|
501
873
|
<p className="text-sm font-semibold text-foreground">
|
|
502
|
-
|
|
874
|
+
{copy.title}
|
|
503
875
|
</p>
|
|
504
876
|
<p className="mt-1 text-xs leading-relaxed text-muted-foreground">
|
|
505
|
-
|
|
506
|
-
actions, and save their own state.
|
|
877
|
+
{copy.description}
|
|
507
878
|
</p>
|
|
508
879
|
</div>
|
|
509
880
|
<div className="flex items-center gap-2">
|
|
@@ -511,7 +882,7 @@ export function ExtensionsSidebarSection() {
|
|
|
511
882
|
to="/extensions"
|
|
512
883
|
className="inline-flex h-8 items-center rounded-md border px-2.5 text-xs font-medium text-foreground transition-colors hover:bg-accent"
|
|
513
884
|
>
|
|
514
|
-
|
|
885
|
+
{copy.open}
|
|
515
886
|
</Link>
|
|
516
887
|
<a
|
|
517
888
|
href="https://agent-native.com/docs/extensions"
|
|
@@ -519,7 +890,7 @@ export function ExtensionsSidebarSection() {
|
|
|
519
890
|
rel="noopener noreferrer"
|
|
520
891
|
className="inline-flex h-8 items-center rounded-md px-2.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-foreground"
|
|
521
892
|
>
|
|
522
|
-
|
|
893
|
+
{copy.learnMore}
|
|
523
894
|
</a>
|
|
524
895
|
</div>
|
|
525
896
|
</HoverCardContent>
|
|
@@ -531,13 +902,14 @@ export function ExtensionsSidebarSection() {
|
|
|
531
902
|
onChange={setExtensionSortMode}
|
|
532
903
|
showHidden={showGloballyHidden}
|
|
533
904
|
onShowHiddenChange={setShowGloballyHidden}
|
|
905
|
+
copy={copy}
|
|
534
906
|
/>
|
|
535
907
|
<Popover open={showCreate} onOpenChange={setShowCreate}>
|
|
536
908
|
<PopoverTrigger asChild>
|
|
537
909
|
<button
|
|
538
910
|
type="button"
|
|
539
911
|
className="inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground/70 transition-colors hover:bg-accent hover:text-accent-foreground"
|
|
540
|
-
aria-label=
|
|
912
|
+
aria-label={copy.newExtension}
|
|
541
913
|
>
|
|
542
914
|
<IconPlus className="h-3.5 w-3.5" />
|
|
543
915
|
</button>
|
|
@@ -548,11 +920,11 @@ export function ExtensionsSidebarSection() {
|
|
|
548
920
|
className="w-[420px] p-3"
|
|
549
921
|
>
|
|
550
922
|
<p className="px-1 pb-2 text-sm font-semibold text-foreground">
|
|
551
|
-
|
|
923
|
+
{copy.newExtension}
|
|
552
924
|
</p>
|
|
553
925
|
<PromptComposer
|
|
554
926
|
autoFocus
|
|
555
|
-
placeholder=
|
|
927
|
+
placeholder={copy.createPlaceholder}
|
|
556
928
|
draftScope="extensions:sidebar-create"
|
|
557
929
|
onSubmit={handleCreate}
|
|
558
930
|
/>
|
|
@@ -562,9 +934,7 @@ export function ExtensionsSidebarSection() {
|
|
|
562
934
|
type="button"
|
|
563
935
|
onClick={toggleExtensionsOpen}
|
|
564
936
|
className="flex h-6 w-6 shrink-0 items-center justify-center rounded-md text-muted-foreground/70 hover:bg-accent hover:text-foreground"
|
|
565
|
-
aria-label={
|
|
566
|
-
extensionsOpen ? "Collapse extensions" : "Expand extensions"
|
|
567
|
-
}
|
|
937
|
+
aria-label={extensionsOpen ? copy.collapse : copy.expand}
|
|
568
938
|
aria-expanded={extensionsOpen}
|
|
569
939
|
>
|
|
570
940
|
<IconChevronDown
|
|
@@ -652,12 +1022,12 @@ export function ExtensionsSidebarSection() {
|
|
|
652
1022
|
setDragOverId(null);
|
|
653
1023
|
}}
|
|
654
1024
|
className="-ml-2 cursor-grab rounded p-0.5 text-muted-foreground/30 opacity-0 transition-colors hover:text-muted-foreground/70 active:cursor-grabbing group-hover/extension:opacity-100 group-focus-within/extension:opacity-100"
|
|
655
|
-
aria-label={
|
|
1025
|
+
aria-label={copy.reorder(extension.name)}
|
|
656
1026
|
>
|
|
657
1027
|
<IconGripVertical className="h-3 w-3" />
|
|
658
1028
|
</button>
|
|
659
1029
|
</TooltipTrigger>
|
|
660
|
-
<TooltipContent>
|
|
1030
|
+
<TooltipContent>{copy.dragToReorder}</TooltipContent>
|
|
661
1031
|
</Tooltip>
|
|
662
1032
|
<Link
|
|
663
1033
|
to={extensionPath(extension.id, extension.name)}
|
|
@@ -690,7 +1060,7 @@ export function ExtensionsSidebarSection() {
|
|
|
690
1060
|
{extension.globallyHidden && (
|
|
691
1061
|
<IconEyeOff
|
|
692
1062
|
className="h-3 w-3 shrink-0 text-muted-foreground/60"
|
|
693
|
-
aria-label=
|
|
1063
|
+
aria-label={copy.hiddenFromEveryone}
|
|
694
1064
|
/>
|
|
695
1065
|
)}
|
|
696
1066
|
<span className="block truncate">
|
|
@@ -698,7 +1068,7 @@ export function ExtensionsSidebarSection() {
|
|
|
698
1068
|
</span>
|
|
699
1069
|
{isLocalExtension && (
|
|
700
1070
|
<span className="shrink-0 rounded border border-border px-1 text-[9px] font-medium uppercase tracking-wide text-muted-foreground/70">
|
|
701
|
-
|
|
1071
|
+
{copy.file}
|
|
702
1072
|
</span>
|
|
703
1073
|
)}
|
|
704
1074
|
</span>
|
|
@@ -724,7 +1094,7 @@ export function ExtensionsSidebarSection() {
|
|
|
724
1094
|
? "text-yellow-500"
|
|
725
1095
|
: "text-muted-foreground/40 hover:text-yellow-500",
|
|
726
1096
|
)}
|
|
727
|
-
aria-label={isFav ?
|
|
1097
|
+
aria-label={isFav ? copy.unfavorite : copy.favorite}
|
|
728
1098
|
>
|
|
729
1099
|
{isFav ? (
|
|
730
1100
|
<IconStarFilled className="h-3 w-3" />
|
|
@@ -743,7 +1113,7 @@ export function ExtensionsSidebarSection() {
|
|
|
743
1113
|
<button
|
|
744
1114
|
type="button"
|
|
745
1115
|
className="pointer-events-auto cursor-pointer rounded p-0.5 text-muted-foreground/40 transition-colors hover:text-foreground"
|
|
746
|
-
aria-label=
|
|
1116
|
+
aria-label={copy.actions}
|
|
747
1117
|
>
|
|
748
1118
|
<IconDots className="h-3 w-3" />
|
|
749
1119
|
</button>
|
|
@@ -756,14 +1126,14 @@ export function ExtensionsSidebarSection() {
|
|
|
756
1126
|
{isLocalExtension ? (
|
|
757
1127
|
<DropdownMenuItem disabled>
|
|
758
1128
|
<IconPencil className="h-3.5 w-3.5" />
|
|
759
|
-
|
|
1129
|
+
{copy.editInFiles}
|
|
760
1130
|
</DropdownMenuItem>
|
|
761
1131
|
) : (
|
|
762
1132
|
<DropdownMenuItem
|
|
763
1133
|
onSelect={() => startRename(extension)}
|
|
764
1134
|
>
|
|
765
1135
|
<IconPencil className="h-3.5 w-3.5" />
|
|
766
|
-
|
|
1136
|
+
{copy.rename}
|
|
767
1137
|
</DropdownMenuItem>
|
|
768
1138
|
)}
|
|
769
1139
|
{!isLocalExtension &&
|
|
@@ -773,14 +1143,14 @@ export function ExtensionsSidebarSection() {
|
|
|
773
1143
|
onSelect={() => handleGlobalUnhide(extension)}
|
|
774
1144
|
>
|
|
775
1145
|
<IconEye className="h-3.5 w-3.5" />
|
|
776
|
-
|
|
1146
|
+
{copy.unhideForEveryone}
|
|
777
1147
|
</DropdownMenuItem>
|
|
778
1148
|
) : (
|
|
779
1149
|
<DropdownMenuItem
|
|
780
1150
|
onSelect={() => handleGlobalHide(extension)}
|
|
781
1151
|
>
|
|
782
1152
|
<IconEyeOff className="h-3.5 w-3.5" />
|
|
783
|
-
|
|
1153
|
+
{copy.hideFromEveryone}
|
|
784
1154
|
</DropdownMenuItem>
|
|
785
1155
|
))}
|
|
786
1156
|
{!isLocalExtension && (
|
|
@@ -790,8 +1160,8 @@ export function ExtensionsSidebarSection() {
|
|
|
790
1160
|
>
|
|
791
1161
|
<IconTrash className="h-3.5 w-3.5" />
|
|
792
1162
|
{extension.canDelete === false
|
|
793
|
-
?
|
|
794
|
-
:
|
|
1163
|
+
? copy.removeFromMyList
|
|
1164
|
+
: copy.delete}
|
|
795
1165
|
</DropdownMenuItem>
|
|
796
1166
|
)}
|
|
797
1167
|
</DropdownMenuContent>
|
|
@@ -807,7 +1177,7 @@ export function ExtensionsSidebarSection() {
|
|
|
807
1177
|
onClick={() => setShowAllExtensions((current) => !current)}
|
|
808
1178
|
className="ml-5 mt-1 inline-flex h-5 items-center rounded px-1.5 text-[11px] font-medium text-muted-foreground/60 transition-colors hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1"
|
|
809
1179
|
>
|
|
810
|
-
{showAllExtensions ?
|
|
1180
|
+
{showAllExtensions ? copy.showLess : copy.showMore}
|
|
811
1181
|
</button>
|
|
812
1182
|
)}
|
|
813
1183
|
</div>
|