registry.ts544 lines · main
1// @ts-nocheck
2import { SHORTCUT_REFERENCE_GROUPS } from './referenceGroups'
3import { ADVISORS_NAV_SHORTCUT_IDS, advisorsNavRegistry } from './registry/advisors-nav'
4import { ADVISORS_PAGE_SHORTCUT_IDS, advisorsPageRegistry } from './registry/advisors-page'
5import { API_KEYS_SHORTCUT_IDS, apiKeysRegistry } from './registry/api-keys'
6import { AUTH_NAV_SHORTCUT_IDS, authNavRegistry } from './registry/auth-nav'
7import { AUTH_USERS_SHORTCUT_IDS, authUsersRegistry } from './registry/auth-users'
8import { DATABASE_NAV_SHORTCUT_IDS, databaseNavRegistry } from './registry/database-nav'
9import { FUNCTIONS_DETAIL_SHORTCUT_IDS, functionsDetailRegistry } from './registry/functions-detail'
10import {
11 FUNCTIONS_DETAIL_NAV_SHORTCUT_IDS,
12 functionsDetailNavRegistry,
13} from './registry/functions-detail-nav'
14import { FUNCTIONS_LIST_SHORTCUT_IDS, functionsListRegistry } from './registry/functions-list'
15import { FUNCTIONS_NAV_SHORTCUT_IDS, functionsNavRegistry } from './registry/functions-nav'
16import {
17 FUNCTIONS_OVERVIEW_SHORTCUT_IDS,
18 functionsOverviewRegistry,
19} from './registry/functions-overview'
20import { JWT_KEYS_SHORTCUT_IDS, jwtKeysRegistry } from './registry/jwt-keys'
21import { LIST_PAGE_SHORTCUT_IDS, listPageRegistry } from './registry/list-page'
22import { LOG_DRAINS_SHORTCUT_IDS, logDrainsRegistry } from './registry/log-drains'
23import { LOGS_PREVIEW_SHORTCUT_IDS, logsPreviewRegistry } from './registry/logs-preview'
24import {
25 OBSERVABILITY_NAV_SHORTCUT_IDS,
26 observabilityNavRegistry,
27} from './registry/observability-nav'
28import {
29 OBSERVABILITY_PAGE_SHORTCUT_IDS,
30 observabilityPageRegistry,
31} from './registry/observability-page'
32import { ORG_AUDIT_LOGS_SHORTCUT_IDS, orgAuditLogsRegistry } from './registry/org-audit-logs'
33import { ORG_INTEGRATIONS_SHORTCUT_IDS, orgIntegrationsRegistry } from './registry/org-integrations'
34import { ORG_OAUTH_APPS_SHORTCUT_IDS, orgOAuthAppsRegistry } from './registry/org-oauth-apps'
35import { ORG_PRIVATE_APPS_SHORTCUT_IDS, orgPrivateAppsRegistry } from './registry/org-private-apps'
36import { ORG_PROJECTS_SHORTCUT_IDS, orgProjectsRegistry } from './registry/org-projects'
37import { ORG_SETTINGS_NAV_SHORTCUT_IDS, orgSettingsNavRegistry } from './registry/org-settings-nav'
38import { ORG_TEAM_SHORTCUT_IDS, orgTeamRegistry } from './registry/org-team'
39import {
40 PLATFORM_WEBHOOKS_SHORTCUT_IDS,
41 platformWebhooksRegistry,
42} from './registry/platform-webhooks'
43import {
44 PROJECT_SETTINGS_NAV_SHORTCUT_IDS,
45 projectSettingsNavRegistry,
46} from './registry/project-settings-nav'
47import {
48 REALTIME_INSPECTOR_SHORTCUT_IDS,
49 realtimeInspectorRegistry,
50} from './registry/realtime-inspector'
51import { REALTIME_NAV_SHORTCUT_IDS, realtimeNavRegistry } from './registry/realtime-nav'
52import {
53 SCHEMA_VISUALIZER_SHORTCUT_IDS,
54 schemaVisualizerRegistry,
55} from './registry/schema-visualizer'
56import { SQL_EDITOR_SHORTCUT_IDS, sqlEditorRegistry } from './registry/sql-editor'
57import { STORAGE_BUCKETS_SHORTCUT_IDS, storageBucketsRegistry } from './registry/storage-buckets'
58import { STORAGE_EXPLORER_SHORTCUT_IDS, storageExplorerRegistry } from './registry/storage-explorer'
59import { STORAGE_NAV_SHORTCUT_IDS, storageNavRegistry } from './registry/storage-nav'
60import { TABLE_EDITOR_SHORTCUT_IDS, tableEditorRegistry } from './registry/table-editor'
61import { UNIFIED_LOGS_SHORTCUT_IDS, unifiedLogsRegistry } from './registry/unified-logs'
62import { ShortcutDefinition } from './types'
63
64/**
65 * The canonical list of shortcut IDs. Add new shortcuts here first, then
66 * register them in `SHORTCUT_DEFINITIONS` below.
67 *
68 * ID convention: `"<surface>.<action>"` in kebab-case, e.g. `"results.copy-markdown"`.
69 * The `<surface>` groups related shortcuts (sql-editor, table-editor, results, etc).
70 */
71export const SHORTCUT_IDS = {
72 COMMAND_MENU_OPEN: 'command-menu.open',
73 AI_ASSISTANT_TOGGLE: 'ai-assistant.toggle',
74 AI_ASSISTANT_CANCEL_EDIT: 'ai-assistant.cancel-edit',
75 INLINE_EDITOR_TOGGLE: 'inline-editor.toggle',
76 RESULTS_COPY_MARKDOWN: 'results.copy-markdown',
77 RESULTS_COPY_JSON: 'results.copy-json',
78 RESULTS_COPY_CSV: 'results.copy-csv',
79 RESULTS_DOWNLOAD_CSV: 'results.download-csv',
80 DATA_TABLE_TOGGLE_FILTERS: 'data-table.toggle-filters',
81 DATA_TABLE_RESET_FILTERS: 'data-table.reset-filters',
82 DATA_TABLE_RESET_COLUMNS: 'data-table.reset-columns',
83 DATA_TABLE_TOGGLE_LIVE: 'data-table.toggle-live',
84 ACTION_BAR_SAVE: 'action-bar.save',
85 OPERATION_QUEUE_SAVE: 'operation-queue.save',
86 OPERATION_QUEUE_TOGGLE: 'operation-queue.toggle',
87 OPERATION_QUEUE_UNDO: 'operation-queue.undo',
88 NAV_HOME: 'nav.home',
89 NAV_TABLE_EDITOR: 'nav.table-editor',
90 NAV_SQL_EDITOR: 'nav.sql-editor',
91 NAV_DATABASE: 'nav.database',
92 NAV_AUTH: 'nav.auth',
93 NAV_STORAGE: 'nav.storage',
94 NAV_FUNCTIONS: 'nav.functions',
95 NAV_REALTIME: 'nav.realtime',
96 NAV_ADVISORS: 'nav.advisors',
97 NAV_OBSERVABILITY: 'nav.observability',
98 NAV_LOGS: 'nav.logs',
99 NAV_INTEGRATIONS: 'nav.integrations',
100 NAV_SETTINGS: 'nav.settings',
101 NAV_ORG_PROJECTS: 'nav.org-projects',
102 NAV_ORG_TEAM: 'nav.org-team',
103 NAV_ORG_INTEGRATIONS: 'nav.org-integrations',
104 NAV_ORG_USAGE: 'nav.org-usage',
105 NAV_ORG_BILLING: 'nav.org-billing',
106 NAV_ORG_SETTINGS: 'nav.org-settings',
107 SHORTCUTS_OPEN_REFERENCE: 'shortcuts.open-reference',
108 CONNECT_OPEN_SHEET: 'connect.open-sheet',
109
110 // Org settings sub-page navigation chords
111 ...ORG_SETTINGS_NAV_SHORTCUT_IDS,
112 // Org OAuth Apps page shortcuts
113 ...ORG_OAUTH_APPS_SHORTCUT_IDS,
114 // Org Team page shortcuts
115 ...ORG_TEAM_SHORTCUT_IDS,
116 // Org Integrations page shortcuts
117 ...ORG_INTEGRATIONS_SHORTCUT_IDS,
118 // Org Projects page shortcuts
119 ...ORG_PROJECTS_SHORTCUT_IDS,
120 // Org Private Apps page shortcuts
121 ...ORG_PRIVATE_APPS_SHORTCUT_IDS,
122 // Org Audit Logs page shortcuts
123 ...ORG_AUDIT_LOGS_SHORTCUT_IDS,
124
125 // Table editor shortcuts
126 ...TABLE_EDITOR_SHORTCUT_IDS,
127
128 // Unified Logs page shortcuts
129 ...UNIFIED_LOGS_SHORTCUT_IDS,
130
131 // SQL editor shortcuts
132 ...SQL_EDITOR_SHORTCUT_IDS,
133
134 // Schema visualizer shortcuts
135 ...SCHEMA_VISUALIZER_SHORTCUT_IDS,
136
137 // Shared list-page shortcuts (database/* listing pages, etc.)
138 ...LIST_PAGE_SHORTCUT_IDS,
139
140 // Database sub-page navigation chords
141 ...DATABASE_NAV_SHORTCUT_IDS,
142
143 // Auth users page shortcuts
144 ...AUTH_USERS_SHORTCUT_IDS,
145 // Auth sub-page navigation chords
146 ...AUTH_NAV_SHORTCUT_IDS,
147
148 // Storage sub-page navigation chords
149 ...STORAGE_NAV_SHORTCUT_IDS,
150 // Storage Files (bucket list) page shortcuts
151 ...STORAGE_BUCKETS_SHORTCUT_IDS,
152 // Storage Explorer (file browser) shortcuts
153 ...STORAGE_EXPLORER_SHORTCUT_IDS,
154
155 // Edge Functions sub-page navigation chords
156 ...FUNCTIONS_NAV_SHORTCUT_IDS,
157 // Edge Functions overview (list) page shortcuts
158 ...FUNCTIONS_LIST_SHORTCUT_IDS,
159 // Per-function detail layout shortcuts (header actions + test submit)
160 ...FUNCTIONS_DETAIL_SHORTCUT_IDS,
161 // Per-function detail tab navigation (digits)
162 ...FUNCTIONS_DETAIL_NAV_SHORTCUT_IDS,
163 // Per-function Overview tab shortcuts (intervals, refresh, open logs)
164 ...FUNCTIONS_OVERVIEW_SHORTCUT_IDS,
165
166 // Realtime sub-page navigation chords
167 ...REALTIME_NAV_SHORTCUT_IDS,
168 // Realtime Inspector page shortcuts
169 ...REALTIME_INSPECTOR_SHORTCUT_IDS,
170
171 // Observability sub-page navigation chords
172 ...OBSERVABILITY_NAV_SHORTCUT_IDS,
173 // Observability shared page-action shortcuts
174 ...OBSERVABILITY_PAGE_SHORTCUT_IDS,
175 // Advisors sub-page navigation chords
176 ...ADVISORS_NAV_SHORTCUT_IDS,
177 // Advisors lint page shortcuts (tabs, refresh, close detail)
178 ...ADVISORS_PAGE_SHORTCUT_IDS,
179
180 // LogsPreviewer shortcuts (Function Logs, Function Invocations, Logs Explorer)
181 ...LOGS_PREVIEW_SHORTCUT_IDS,
182
183 // Platform Webhooks page shortcuts (org and project level)
184 ...PLATFORM_WEBHOOKS_SHORTCUT_IDS,
185
186 // Project Settings sub-page navigation chords and page actions
187 ...PROJECT_SETTINGS_NAV_SHORTCUT_IDS,
188 ...API_KEYS_SHORTCUT_IDS,
189 ...JWT_KEYS_SHORTCUT_IDS,
190 ...LOG_DRAINS_SHORTCUT_IDS,
191} as const
192
193/**
194 * Union of all valid shortcut IDs. Use this as the `id` parameter type on any
195 * hook or util that takes a shortcut reference.
196 */
197export type ShortcutId = (typeof SHORTCUT_IDS)[keyof typeof SHORTCUT_IDS]
198
199/**
200 * The shortcut registry — every shortcut the app knows about, keyed by
201 * `ShortcutId`. The `Record` type ensures this map stays exhaustive: adding a
202 * new entry to `SHORTCUT_IDS` without a matching definition here is a type error.
203 *
204 * See `ShortcutDefinition` for the shape of each entry.
205 *
206 * @example
207 * // Add a new shortcut:
208 * // 1. Add to SHORTCUT_IDS:
209 * // SQL_EDITOR_RUN: 'sql-editor.run'
210 * // 2. Add to SHORTCUT_DEFINITIONS:
211 * // [SHORTCUT_IDS.SQL_EDITOR_RUN]: {
212 * // id: SHORTCUT_IDS.SQL_EDITOR_RUN,
213 * // label: 'Run query',
214 * // sequence: ['Mod+Enter'],
215 * // }
216 * // 3. Use in a component:
217 * // useShortcut(SHORTCUT_IDS.SQL_EDITOR_RUN, runQuery)
218 */
219export const SHORTCUT_DEFINITIONS: Record<ShortcutId, ShortcutDefinition> = {
220 [SHORTCUT_IDS.COMMAND_MENU_OPEN]: {
221 id: SHORTCUT_IDS.COMMAND_MENU_OPEN,
222 label: 'Open command menu',
223 sequence: ['Mod+K'],
224 },
225 [SHORTCUT_IDS.AI_ASSISTANT_TOGGLE]: {
226 id: SHORTCUT_IDS.AI_ASSISTANT_TOGGLE,
227 label: 'Toggle AI Assistant panel',
228 sequence: ['Mod+I'],
229 referenceGroup: SHORTCUT_REFERENCE_GROUPS.GLOBAL_ACTIONS,
230 },
231 [SHORTCUT_IDS.INLINE_EDITOR_TOGGLE]: {
232 id: SHORTCUT_IDS.INLINE_EDITOR_TOGGLE,
233 label: 'Toggle inline SQL editor',
234 sequence: ['Mod+E'],
235 referenceGroup: SHORTCUT_REFERENCE_GROUPS.GLOBAL_ACTIONS,
236 },
237 [SHORTCUT_IDS.RESULTS_COPY_MARKDOWN]: {
238 id: SHORTCUT_IDS.RESULTS_COPY_MARKDOWN,
239 label: 'Copy results as Markdown',
240 sequence: ['Mod+Shift+M'],
241 },
242 [SHORTCUT_IDS.RESULTS_COPY_JSON]: {
243 id: SHORTCUT_IDS.RESULTS_COPY_JSON,
244 label: 'Copy results as JSON',
245 sequence: ['Mod+Shift+J'],
246 },
247 [SHORTCUT_IDS.RESULTS_COPY_CSV]: {
248 id: SHORTCUT_IDS.RESULTS_COPY_CSV,
249 label: 'Copy results as CSV',
250 sequence: ['Mod+Shift+C'],
251 },
252 [SHORTCUT_IDS.RESULTS_DOWNLOAD_CSV]: {
253 id: SHORTCUT_IDS.RESULTS_DOWNLOAD_CSV,
254 label: 'Download results as CSV',
255 sequence: ['Mod+Shift+D'],
256 },
257 [SHORTCUT_IDS.AI_ASSISTANT_CANCEL_EDIT]: {
258 id: SHORTCUT_IDS.AI_ASSISTANT_CANCEL_EDIT,
259 label: 'Cancel AI Assistant edit',
260 sequence: ['Mod+Escape'],
261 showInSettings: false,
262 },
263 [SHORTCUT_IDS.DATA_TABLE_TOGGLE_FILTERS]: {
264 id: SHORTCUT_IDS.DATA_TABLE_TOGGLE_FILTERS,
265 label: 'Toggle filter sidebar',
266 sequence: ['Mod+B'],
267 showInSettings: false,
268 },
269 [SHORTCUT_IDS.DATA_TABLE_RESET_FILTERS]: {
270 id: SHORTCUT_IDS.DATA_TABLE_RESET_FILTERS,
271 label: 'Reset filters',
272 sequence: ['Mod+Escape'],
273 showInSettings: false,
274 },
275 [SHORTCUT_IDS.DATA_TABLE_RESET_COLUMNS]: {
276 id: SHORTCUT_IDS.DATA_TABLE_RESET_COLUMNS,
277 label: 'Reset columns',
278 sequence: ['Mod+U'],
279 showInSettings: false,
280 },
281 [SHORTCUT_IDS.DATA_TABLE_TOGGLE_LIVE]: {
282 id: SHORTCUT_IDS.DATA_TABLE_TOGGLE_LIVE,
283 label: 'Toggle live mode',
284 sequence: ['Mod+J'],
285 showInSettings: false,
286 },
287 [SHORTCUT_IDS.ACTION_BAR_SAVE]: {
288 id: SHORTCUT_IDS.ACTION_BAR_SAVE,
289 label: 'Save form',
290 sequence: ['Mod+Enter'],
291 showInSettings: false,
292 },
293 [SHORTCUT_IDS.OPERATION_QUEUE_SAVE]: {
294 id: SHORTCUT_IDS.OPERATION_QUEUE_SAVE,
295 label: 'Save pending table edits',
296 sequence: ['Mod+S'],
297 showInSettings: false,
298 },
299 [SHORTCUT_IDS.OPERATION_QUEUE_TOGGLE]: {
300 id: SHORTCUT_IDS.OPERATION_QUEUE_TOGGLE,
301 label: 'Toggle operation queue panel',
302 sequence: ['Mod+.'],
303 showInSettings: false,
304 },
305 [SHORTCUT_IDS.OPERATION_QUEUE_UNDO]: {
306 id: SHORTCUT_IDS.OPERATION_QUEUE_UNDO,
307 label: 'Undo latest table edit',
308 sequence: ['Mod+Z'],
309 showInSettings: false,
310 },
311 [SHORTCUT_IDS.NAV_HOME]: {
312 id: SHORTCUT_IDS.NAV_HOME,
313 label: 'Go to Project Overview',
314 sequence: ['G', 'H'],
315 showInSettings: false,
316 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
317 },
318 [SHORTCUT_IDS.NAV_TABLE_EDITOR]: {
319 id: SHORTCUT_IDS.NAV_TABLE_EDITOR,
320 label: 'Go to Table Editor',
321 sequence: ['G', 'T'],
322 showInSettings: false,
323 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
324 },
325 [SHORTCUT_IDS.NAV_SQL_EDITOR]: {
326 id: SHORTCUT_IDS.NAV_SQL_EDITOR,
327 label: 'Go to SQL Editor',
328 sequence: ['G', 'S'],
329 showInSettings: false,
330 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
331 },
332 [SHORTCUT_IDS.NAV_DATABASE]: {
333 id: SHORTCUT_IDS.NAV_DATABASE,
334 label: 'Go to Database',
335 sequence: ['G', 'D'],
336 showInSettings: false,
337 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
338 },
339 [SHORTCUT_IDS.NAV_AUTH]: {
340 id: SHORTCUT_IDS.NAV_AUTH,
341 label: 'Go to Authentication',
342 sequence: ['G', 'A'],
343 showInSettings: false,
344 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
345 },
346 [SHORTCUT_IDS.NAV_STORAGE]: {
347 id: SHORTCUT_IDS.NAV_STORAGE,
348 label: 'Go to Storage',
349 sequence: ['G', 'B'],
350 showInSettings: false,
351 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
352 },
353 [SHORTCUT_IDS.NAV_FUNCTIONS]: {
354 id: SHORTCUT_IDS.NAV_FUNCTIONS,
355 label: 'Go to Edge Functions',
356 sequence: ['G', 'F'],
357 showInSettings: false,
358 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
359 },
360 [SHORTCUT_IDS.NAV_REALTIME]: {
361 id: SHORTCUT_IDS.NAV_REALTIME,
362 label: 'Go to Realtime',
363 sequence: ['G', 'R'],
364 showInSettings: false,
365 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
366 },
367 [SHORTCUT_IDS.NAV_ADVISORS]: {
368 id: SHORTCUT_IDS.NAV_ADVISORS,
369 label: 'Go to Advisors',
370 sequence: ['G', 'V'],
371 showInSettings: false,
372 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
373 },
374 [SHORTCUT_IDS.NAV_OBSERVABILITY]: {
375 id: SHORTCUT_IDS.NAV_OBSERVABILITY,
376 label: 'Go to Observability',
377 sequence: ['G', 'U'],
378 showInSettings: false,
379 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
380 },
381 [SHORTCUT_IDS.NAV_LOGS]: {
382 id: SHORTCUT_IDS.NAV_LOGS,
383 label: 'Go to Logs',
384 sequence: ['G', 'L'],
385 showInSettings: false,
386 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
387 },
388 [SHORTCUT_IDS.NAV_INTEGRATIONS]: {
389 id: SHORTCUT_IDS.NAV_INTEGRATIONS,
390 label: 'Go to Integrations',
391 sequence: ['G', 'I'],
392 showInSettings: false,
393 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
394 },
395 [SHORTCUT_IDS.NAV_SETTINGS]: {
396 id: SHORTCUT_IDS.NAV_SETTINGS,
397 label: 'Go to Project Settings',
398 sequence: ['G', ','],
399 showInSettings: false,
400 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
401 },
402 [SHORTCUT_IDS.NAV_ORG_PROJECTS]: {
403 id: SHORTCUT_IDS.NAV_ORG_PROJECTS,
404 label: 'Go to Projects',
405 sequence: ['G', 'P'],
406 showInSettings: false,
407 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
408 },
409 [SHORTCUT_IDS.NAV_ORG_TEAM]: {
410 id: SHORTCUT_IDS.NAV_ORG_TEAM,
411 label: 'Go to Team',
412 sequence: ['G', 'M'],
413 showInSettings: false,
414 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
415 },
416 [SHORTCUT_IDS.NAV_ORG_INTEGRATIONS]: {
417 id: SHORTCUT_IDS.NAV_ORG_INTEGRATIONS,
418 label: 'Go to Organization Integrations',
419 sequence: ['G', 'I'],
420 showInSettings: false,
421 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
422 },
423 [SHORTCUT_IDS.NAV_ORG_USAGE]: {
424 id: SHORTCUT_IDS.NAV_ORG_USAGE,
425 label: 'Go to Usage',
426 sequence: ['G', 'U'],
427 showInSettings: false,
428 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
429 },
430 [SHORTCUT_IDS.NAV_ORG_BILLING]: {
431 id: SHORTCUT_IDS.NAV_ORG_BILLING,
432 label: 'Go to Billing',
433 sequence: ['G', 'B'],
434 showInSettings: false,
435 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
436 },
437 [SHORTCUT_IDS.NAV_ORG_SETTINGS]: {
438 id: SHORTCUT_IDS.NAV_ORG_SETTINGS,
439 label: 'Go to Organization Settings',
440 sequence: ['G', ','],
441 showInSettings: false,
442 referenceGroup: SHORTCUT_REFERENCE_GROUPS.NAVIGATION_GLOBAL,
443 },
444 [SHORTCUT_IDS.SHORTCUTS_OPEN_REFERENCE]: {
445 id: SHORTCUT_IDS.SHORTCUTS_OPEN_REFERENCE,
446 label: 'Show all keyboard shortcuts',
447 // '?' isn't yet in @tanstack/hotkeys' PunctuationKey union (TanStack/hotkeys#19),
448 // but matches correctly at runtime — event.key === '?' regardless of layout.
449 // @ts-expect-error — remove this once upstream adds '?' to PunctuationKey.
450 sequence: ['Shift+?'],
451 showInSettings: false,
452 options: { ignoreInputs: true },
453 },
454 [SHORTCUT_IDS.CONNECT_OPEN_SHEET]: {
455 id: SHORTCUT_IDS.CONNECT_OPEN_SHEET,
456 label: 'Open Connect sheet',
457 sequence: ['O', 'C'],
458 showInSettings: false,
459 referenceGroup: SHORTCUT_REFERENCE_GROUPS.GLOBAL_ACTIONS,
460 options: { ignoreInputs: true },
461 },
462
463 // Org settings sub-page navigation chord registration
464 ...orgSettingsNavRegistry,
465 // Org OAuth Apps page shortcut registration
466 ...orgOAuthAppsRegistry,
467 // Org Team page shortcut registration
468 ...orgTeamRegistry,
469 // Org Integrations page shortcut registration
470 ...orgIntegrationsRegistry,
471 // Org Projects page shortcut registration
472 ...orgProjectsRegistry,
473 // Org Private Apps page shortcut registration
474 ...orgPrivateAppsRegistry,
475 // Org Audit Logs page shortcut registration
476 ...orgAuditLogsRegistry,
477
478 // Table editor shortcut registration
479 ...tableEditorRegistry,
480
481 // Unified Logs page shortcut registration
482 ...unifiedLogsRegistry,
483
484 // SQL editor shortcut registration
485 ...sqlEditorRegistry,
486
487 // Schema visualizer shortcut registration
488 ...schemaVisualizerRegistry,
489
490 // Shared list-page shortcut registration
491 ...listPageRegistry,
492
493 // Database sub-page navigation chord registration
494 ...databaseNavRegistry,
495
496 // Auth users page shortcut registration
497 ...authUsersRegistry,
498 // Auth sub-page navigation chord registration
499 ...authNavRegistry,
500
501 // Storage sub-page navigation chord registration
502 ...storageNavRegistry,
503 // Storage Files (bucket list) page shortcut registration
504 ...storageBucketsRegistry,
505 // Storage Explorer (file browser) shortcut registration
506 ...storageExplorerRegistry,
507
508 // Edge Functions sub-page navigation chord registration
509 ...functionsNavRegistry,
510 // Edge Functions overview (list) page shortcut registration
511 ...functionsListRegistry,
512 // Per-function detail layout shortcut registration
513 ...functionsDetailRegistry,
514 // Per-function detail tab navigation registration
515 ...functionsDetailNavRegistry,
516 // Per-function Overview tab shortcut registration
517 ...functionsOverviewRegistry,
518
519 // Realtime sub-page navigation chord registration
520 ...realtimeNavRegistry,
521 // Realtime Inspector page shortcut registration
522 ...realtimeInspectorRegistry,
523
524 // Observability sub-page navigation chord registration
525 ...observabilityNavRegistry,
526 // Observability shared page-action shortcut registration
527 ...observabilityPageRegistry,
528 // Advisors sub-page navigation chord registration
529 ...advisorsNavRegistry,
530 // Advisors lint page shortcut registration
531 ...advisorsPageRegistry,
532
533 // LogsPreviewer shortcut registration
534 ...logsPreviewRegistry,
535
536 // Platform Webhooks page shortcut registration
537 ...platformWebhooksRegistry,
538
539 // Project Settings sub-page navigation and page action shortcut registration
540 ...projectSettingsNavRegistry,
541 ...apiKeysRegistry,
542 ...jwtKeysRegistry,
543 ...logDrainsRegistry,
544}