registry.ts544 lines · main
| 1 | // @ts-nocheck |
| 2 | import { SHORTCUT_REFERENCE_GROUPS } from './referenceGroups' |
| 3 | import { ADVISORS_NAV_SHORTCUT_IDS, advisorsNavRegistry } from './registry/advisors-nav' |
| 4 | import { ADVISORS_PAGE_SHORTCUT_IDS, advisorsPageRegistry } from './registry/advisors-page' |
| 5 | import { API_KEYS_SHORTCUT_IDS, apiKeysRegistry } from './registry/api-keys' |
| 6 | import { AUTH_NAV_SHORTCUT_IDS, authNavRegistry } from './registry/auth-nav' |
| 7 | import { AUTH_USERS_SHORTCUT_IDS, authUsersRegistry } from './registry/auth-users' |
| 8 | import { DATABASE_NAV_SHORTCUT_IDS, databaseNavRegistry } from './registry/database-nav' |
| 9 | import { FUNCTIONS_DETAIL_SHORTCUT_IDS, functionsDetailRegistry } from './registry/functions-detail' |
| 10 | import { |
| 11 | FUNCTIONS_DETAIL_NAV_SHORTCUT_IDS, |
| 12 | functionsDetailNavRegistry, |
| 13 | } from './registry/functions-detail-nav' |
| 14 | import { FUNCTIONS_LIST_SHORTCUT_IDS, functionsListRegistry } from './registry/functions-list' |
| 15 | import { FUNCTIONS_NAV_SHORTCUT_IDS, functionsNavRegistry } from './registry/functions-nav' |
| 16 | import { |
| 17 | FUNCTIONS_OVERVIEW_SHORTCUT_IDS, |
| 18 | functionsOverviewRegistry, |
| 19 | } from './registry/functions-overview' |
| 20 | import { JWT_KEYS_SHORTCUT_IDS, jwtKeysRegistry } from './registry/jwt-keys' |
| 21 | import { LIST_PAGE_SHORTCUT_IDS, listPageRegistry } from './registry/list-page' |
| 22 | import { LOG_DRAINS_SHORTCUT_IDS, logDrainsRegistry } from './registry/log-drains' |
| 23 | import { LOGS_PREVIEW_SHORTCUT_IDS, logsPreviewRegistry } from './registry/logs-preview' |
| 24 | import { |
| 25 | OBSERVABILITY_NAV_SHORTCUT_IDS, |
| 26 | observabilityNavRegistry, |
| 27 | } from './registry/observability-nav' |
| 28 | import { |
| 29 | OBSERVABILITY_PAGE_SHORTCUT_IDS, |
| 30 | observabilityPageRegistry, |
| 31 | } from './registry/observability-page' |
| 32 | import { ORG_AUDIT_LOGS_SHORTCUT_IDS, orgAuditLogsRegistry } from './registry/org-audit-logs' |
| 33 | import { ORG_INTEGRATIONS_SHORTCUT_IDS, orgIntegrationsRegistry } from './registry/org-integrations' |
| 34 | import { ORG_OAUTH_APPS_SHORTCUT_IDS, orgOAuthAppsRegistry } from './registry/org-oauth-apps' |
| 35 | import { ORG_PRIVATE_APPS_SHORTCUT_IDS, orgPrivateAppsRegistry } from './registry/org-private-apps' |
| 36 | import { ORG_PROJECTS_SHORTCUT_IDS, orgProjectsRegistry } from './registry/org-projects' |
| 37 | import { ORG_SETTINGS_NAV_SHORTCUT_IDS, orgSettingsNavRegistry } from './registry/org-settings-nav' |
| 38 | import { ORG_TEAM_SHORTCUT_IDS, orgTeamRegistry } from './registry/org-team' |
| 39 | import { |
| 40 | PLATFORM_WEBHOOKS_SHORTCUT_IDS, |
| 41 | platformWebhooksRegistry, |
| 42 | } from './registry/platform-webhooks' |
| 43 | import { |
| 44 | PROJECT_SETTINGS_NAV_SHORTCUT_IDS, |
| 45 | projectSettingsNavRegistry, |
| 46 | } from './registry/project-settings-nav' |
| 47 | import { |
| 48 | REALTIME_INSPECTOR_SHORTCUT_IDS, |
| 49 | realtimeInspectorRegistry, |
| 50 | } from './registry/realtime-inspector' |
| 51 | import { REALTIME_NAV_SHORTCUT_IDS, realtimeNavRegistry } from './registry/realtime-nav' |
| 52 | import { |
| 53 | SCHEMA_VISUALIZER_SHORTCUT_IDS, |
| 54 | schemaVisualizerRegistry, |
| 55 | } from './registry/schema-visualizer' |
| 56 | import { SQL_EDITOR_SHORTCUT_IDS, sqlEditorRegistry } from './registry/sql-editor' |
| 57 | import { STORAGE_BUCKETS_SHORTCUT_IDS, storageBucketsRegistry } from './registry/storage-buckets' |
| 58 | import { STORAGE_EXPLORER_SHORTCUT_IDS, storageExplorerRegistry } from './registry/storage-explorer' |
| 59 | import { STORAGE_NAV_SHORTCUT_IDS, storageNavRegistry } from './registry/storage-nav' |
| 60 | import { TABLE_EDITOR_SHORTCUT_IDS, tableEditorRegistry } from './registry/table-editor' |
| 61 | import { UNIFIED_LOGS_SHORTCUT_IDS, unifiedLogsRegistry } from './registry/unified-logs' |
| 62 | import { 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 | */ |
| 71 | export 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 | */ |
| 197 | export 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 | */ |
| 219 | export 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 | } |