export declare const panelsEn: { readonly sidebar: { readonly selection: 'Selection'; readonly selectionShort: 'Sel'; readonly areas: 'Areas'; readonly envs: 'Colors'; readonly history: 'History'; readonly historyShort: 'Hist'; readonly map: 'Map'; readonly script: 'Script'; readonly route: 'Route'; readonly expandPanel: 'Expand panel'; readonly restorePanel: 'Restore panel'; readonly collapsePanel: 'Collapse panel'; readonly dragToResize: 'Drag to resize'; readonly noSelection: 'No selection'; readonly noSelectionHint: 'Select a room with the Select tool to edit its properties.'; }; readonly room: { readonly heading: 'Room #{{id}}'; readonly id: 'Room ID'; readonly centerView: 'Center view on room'; readonly exits: 'Exits'; readonly specialExits: 'Special Exits'; readonly customLines: 'Custom Lines'; readonly userData: 'User Data'; readonly environment: 'Room color'; readonly symbol: 'Symbol'; readonly name: 'Name'; readonly hash: 'Hash'; readonly hashNone: '(none)'; readonly weight: 'Weight'; readonly exitWeight: 'Exit weight'; readonly roomWeight: 'Room weight'; readonly removeExit: 'Remove exit'; readonly removeStub: 'Remove stub'; readonly markAsStub: 'Mark as stub — exit direction exists but destination is unknown'; readonly convertToStub: 'Convert to stub'; readonly pickTarget: 'Pick target room from map'; readonly pickTargetCancel: 'Click a room on the map (Esc to cancel)'; readonly customLine: 'Custom line'; readonly editCustomLine: 'Edit custom line'; readonly drawCustomLine: 'Draw custom line'; readonly symbolColorTitle: 'Symbol color (stored in userData as system.fallback_symbol_color)'; readonly clearSymbolColor: 'Clear symbol color'; readonly visibility: 'Room visibility'; readonly hidden: 'Hidden'; readonly hiddenTitle: 'Hide this room on the map (stored in userData as system.fallback_hidden)'; readonly border: 'Border'; readonly borderColorTitle: 'Custom border color (stored in userData as room.ui_borderColor)'; readonly clearBorderColor: 'Clear border color'; readonly borderThicknessPlaceholder: '1–10'; readonly borderThicknessTitle: 'Border thickness 1–10 (stored in userData as room.ui_borderThickness)'; readonly doorNone: 'No door (click to set)'; readonly doorOpen: 'Open door'; readonly doorClosed: 'Closed door'; readonly doorLocked: 'Locked door'; readonly roomLocked: 'Room locked — click to unlock'; readonly roomUnlocked: 'Room unlocked — click to lock'; readonly exitLocked: 'Locked — click to unlock'; readonly exitUnlocked: 'Unlocked — click to lock'; readonly specialExitPlaceholder: 'exit name'; readonly addButton: 'Add'; readonly removeSpecialExit: 'Remove special exit'; readonly clColor: 'Color'; readonly clArrow: 'Arrow'; readonly clBothWays: 'Both ways'; readonly clBothWaysHint: 'Also hide the default line on the partner room (only applies to reciprocal cardinal exits)'; readonly startDrawing: 'Start Drawing'; readonly drawEmpty: 'Draw empty'; readonly cancel: 'Cancel'; readonly solid: 'Solid'; readonly dash: 'Dash'; readonly dot: 'Dot'; readonly dashDot: 'Dash-Dot'; readonly dashDotDot: 'Dash-Dot-Dot'; readonly enterExitNameFirst: 'Enter exit name first.'; readonly updatedField: 'Updated {{field}} on room {{id}}'; readonly idUpdated: 'Room #{{from}} renamed to #{{to}}'; readonly idExists: 'Room #{{id}} already exists.'; readonly exitAdded: 'Exit {{dir}} → room {{id}} added.'; readonly exitRoomCreated: 'Created room #{{id}} {{dir}} of room #{{from}}.'; readonly exitCreateOccupied: 'Cannot create room #{{id}}: cell ({{x}}, {{y}}, {{z}}) is already occupied.'; readonly exitCreateInOut: 'Cannot auto-create rooms for in/out directions.'; readonly specialExitAdded: "Special exit '{{name}}' → {{id}} added"; readonly specialExitRemoved: "Special exit '{{name}}' removed"; readonly customLineRemoved: "Custom line '{{name}}' removed"; readonly hashCleared: 'Room {{id}} hash cleared'; readonly hashSet: 'Room {{id}} hash → {{hash}}'; readonly envChanged: 'Room {{id}} color → {{env}}'; readonly hiddenSet: 'Room {{id}} marked hidden'; readonly hiddenCleared: 'Room {{id}} no longer hidden'; readonly ack: 'Ack'; }; readonly multiRoom: { readonly heading: '{{count}} rooms selected'; readonly hint: 'Drag to move all. Delete to remove all. Shift+click/drag to add more. Ctrl+click/drag to toggle. Ctrl+A selects all.'; readonly bulkEdit: 'Bulk Edit'; readonly name: 'Name'; readonly symbol: 'Symbol'; readonly symbolColor: 'Symbol color'; readonly env: 'Color'; readonly weight: 'Weight'; readonly lock: 'Lock'; readonly mixed: 'mixed'; readonly differentValues: 'Rooms have different values'; readonly enableName: 'Enable name override'; readonly enableSymbol: 'Enable symbol override'; readonly enableSymbolColor: 'Enable symbol color override'; readonly enableEnv: 'Enable room color override'; readonly enableWeight: 'Enable weight override'; readonly enableLock: 'Enable lock override'; readonly clearSymbolColor: 'Clear: remove symbol color from all rooms'; readonly restoreSymbolColor: 'Restore: set a color instead of clearing'; readonly hidden: 'Hidden'; readonly enableHidden: 'Enable hidden override'; readonly hiddenOn: 'Will mark rooms hidden'; readonly hiddenOff: 'Will mark rooms visible'; readonly borderColor: 'Border color'; readonly enableBorderColor: 'Enable border color override'; readonly clearBorderColor: 'Clear: remove border color from all rooms'; readonly restoreBorderColor: 'Restore: set a color instead of clearing'; readonly borderThickness: 'Border width'; readonly enableBorderThickness: 'Enable border width override'; readonly borderThicknessPlaceholder: 'width'; readonly locked: 'Locked — click to set unlocked'; readonly unlocked: 'Unlocked — click to set locked'; readonly enableToSet: 'Enable to set'; readonly envPickerChange: 'Color {{id}} — click to change'; readonly applyTo: 'Apply to {{count}} rooms'; readonly warning: 'This will overwrite the checked properties on all {{count}} selected rooms.'; readonly applied: 'Applied bulk edit to {{count}} rooms'; }; readonly exit: { readonly heading: 'Exit'; readonly removeBothDirections: '✕ Remove both directions'; }; readonly stub: { readonly heading: 'Stub'; readonly removeStub: '✕ Remove stub'; }; readonly history: { readonly currentState: 'Current state'; readonly noHistory: 'No history yet.'; readonly undoneCount: 'Undone {{count}}×'; readonly redoneCoutn: 'Redone {{count}}×'; readonly undoStep: 'Undo {{count}} step'; readonly undoSteps: 'Undo {{count}} steps'; readonly redoStep: 'Redo {{count}} step'; readonly redoSteps: 'Redo {{count}} steps'; readonly collapse: 'Collapse'; readonly showMore: '+ {{count}} more'; readonly cmd: { readonly moveRoom: 'Move room #{{id}}'; readonly addRoom: 'Add room #{{id}}'; readonly deleteRoom: 'Delete room #{{id}}'; readonly renameRoomId: 'Rename room #{{from}} -> #{{to}}'; readonly addExitBidi: 'Add exit #{{from}} {{dir}} ↔ #{{to}}'; readonly addExitUni: 'Add exit #{{from}} {{dir}} → #{{to}}'; readonly removeExit: 'Remove exit #{{from}} {{dir}}'; readonly removeAllExits: 'Remove all exits from #{{id}}'; readonly setField: 'Set {{field}} on #{{id}}'; readonly setHash: 'Set hash on #{{id}}'; readonly clearHash: 'Clear hash on #{{id}}'; readonly addArea: 'Add area "{{name}}"'; readonly deleteArea: 'Delete area "{{name}}"'; readonly deleteAreaWithRooms: 'Delete area "{{name}}" + rooms'; readonly renameArea: 'Rename area → "{{name}}"'; readonly setEnvColor: 'Set room color #{{id}}'; readonly addSpecialExit: 'Add special exit "{{name}}" on #{{id}}'; readonly removeSpecialExit: 'Remove special exit "{{name}}" on #{{id}}'; readonly setCustomLine: 'Set custom line "{{name}}" on #{{id}}'; readonly removeCustomLine: 'Remove custom line "{{name}}"'; readonly moveRoomsToArea: 'Move {{count}} room(s) to area'; readonly lockRoom: 'Lock room #{{id}}'; readonly unlockRoom: 'Unlock room #{{id}}'; readonly setDoor: 'Set door on #{{id}} {{dir}}'; readonly setExitWeight: 'Set exit weight on #{{id}} {{dir}}'; readonly lockExit: 'Lock exit on #{{id}} {{dir}}'; readonly unlockExit: 'Unlock exit on #{{id}} {{dir}}'; readonly addStub: 'Add stub on #{{id}} {{dir}}'; readonly removeStub: 'Remove stub on #{{id}} {{dir}}'; readonly addUserData: 'Add user data "{{key}}" on #{{id}}'; readonly removeUserData: 'Remove user data "{{key}}" on #{{id}}'; readonly editUserData: 'Edit user data "{{key}}" on #{{id}}'; readonly addAreaUserData: 'Add area user data "{{key}}" on area #{{id}}'; readonly removeAreaUserData: 'Remove area user data "{{key}}" on area #{{id}}'; readonly editAreaUserData: 'Edit area user data "{{key}}" on area #{{id}}'; readonly addMapUserData: 'Add map user data "{{key}}"'; readonly removeMapUserData: 'Remove map user data "{{key}}"'; readonly editMapUserData: 'Edit map user data "{{key}}"'; readonly setSpecialDoor: 'Set door on special exit "{{name}}"'; readonly setSpecialWeight: 'Set weight on special exit "{{name}}"'; readonly addLabel: 'Add label #{{id}}'; readonly deleteLabel: 'Delete label #{{id}}'; readonly moveLabel: 'Move label #{{id}}'; readonly setLabelText: 'Set label #{{id}} text'; readonly setLabelSize: 'Resize label #{{id}}'; readonly setLabelColors: 'Set label #{{id}} colors'; readonly setLabelFont: 'Set font on label #{{id}}'; readonly setLabelOutlineColor: 'Set outline color on label #{{id}}'; readonly setLabelStyle: 'Set style on label #{{id}}'; readonly setLabelAlign: 'Set alignment on label #{{id}}'; readonly setLabelPixmap: 'Update pixmap on label #{{id}}'; readonly setLabelImageSrc: 'Set image source on label #{{id}}'; readonly disableZoomScaling: 'Disable zoom scaling on label #{{id}}'; readonly enableZoomScaling: 'Enable zoom scaling on label #{{id}}'; readonly setLabelForeground: 'Set label #{{id}} foreground'; readonly setLabelBackground: 'Set label #{{id}} background'; readonly resizeLabel: 'Resize label #{{id}}'; }; }; readonly customLine: { readonly heading: 'Custom Line'; readonly drawingOn: 'Drawing on room #{{id}}.'; readonly drawingHint: 'Click to add waypoints · right-click or Enter to finish · Esc cancels.'; readonly exitName: 'Exit Name'; readonly coveringBothWays: 'Covering both ways — stub on room #{{id}} ({{exitName}}).'; readonly waypoints: 'Waypoints'; readonly deleteWaypoint: 'Delete waypoint'; readonly redrawLine: 'Redraw line'; readonly snapToGrid: 'Snap to grid'; readonly removeCustomLine: 'Remove custom line'; readonly rightClickHint: 'Right-click a segment to insert a waypoint · drag a waypoint to move it · Delete to remove'; readonly finish: 'Finish'; readonly cancel: 'Cancel'; readonly exitInfo: 'Exit'; readonly fromRoom: 'From'; readonly roomLabel: 'Room'; readonly toRoom: 'To'; readonly pointsCount: 'Points'; readonly notFound: 'Custom line not found'; readonly cancelledStatus: 'Custom line cancelled.'; readonly startStatus: 'Click canvas to add waypoints · right-click or Enter to finish · Esc cancels'; readonly alreadyOnGrid: "Custom line '{{exit}}' already on grid."; readonly snappedToGrid: "Snapped custom line '{{exit}}' to grid"; readonly removedStatus: "Custom line '{{exit}}' removed"; readonly removedWaypoint: "Removed waypoint from '{{exit}}' on room {{id}}"; }; readonly label: { readonly heading: 'Label #{{id}}'; readonly position: 'Position: ({{x}}, {{y}}, {{z}}) · Drag to move'; readonly text: 'Text'; readonly image: 'Image'; readonly width: 'Width'; readonly height: 'Height'; readonly textColor: 'Text color'; readonly bgColor: 'BG color'; readonly bgAlpha: 'BG alpha'; readonly font: 'Font'; readonly size: 'Size'; readonly autoFit: 'Auto-fit'; readonly autoFitTitle: 'Auto-fit font size to fill label area'; readonly style: 'Style'; readonly alignLeft: 'Align left'; readonly alignCenter: 'Align center'; readonly alignRight: 'Align right'; readonly outlineColor: 'Outline color'; readonly outlineAlpha: 'Outline alpha'; readonly pixmap: 'Pixmap'; readonly noPixmap: 'No pixmap stored'; readonly regeneratePixmap: 'Regenerate pixmap'; readonly replaceImage: 'Replace image...'; readonly aspectLocked: 'Aspect ratio locked — click to unlock'; readonly aspectFree: 'Lock aspect ratio for resize'; readonly arLocked: 'AR locked'; readonly arFree: 'AR free'; readonly showOnTop: 'Show on top (foreground)'; readonly scaleWithZoom: 'Scale with zoom'; readonly notFound: 'Label not found.'; readonly zeroSizeWarning: 'zero-size label'; readonly ack: 'Ack'; readonly modeText: 'Text'; readonly modeImage: 'Image'; readonly fontSearchPlaceholder: 'Search fonts…'; }; readonly script: { readonly heading: 'Script'; readonly hint: 'Bulk-edit rooms with JavaScript. One run = one undo step.'; readonly loadingEditor: 'Loading editor…'; readonly namePlaceholder: 'Script name…'; readonly saveBtn: 'Save'; readonly overwriteBtn: 'Overwrite'; readonly overwriteTitle: 'Overwrite "{{name}}"'; readonly saveTitle: 'Save current script to library'; readonly libraryBtn: 'Library'; readonly libraryTitle: 'Browse saved scripts'; readonly apiBtn: '? API'; readonly apiTitle: 'Show script API reference'; readonly runBtn: 'Run script'; readonly running: 'Running…'; readonly resetBtn: 'Reset'; readonly runHint: 'Ctrl+Enter to run'; readonly errorRolledBack: 'All changes rolled back.'; readonly noChanges: 'No changes.'; readonly appliedChange: 'Applied {{count}} change.'; readonly appliedChanges: 'Applied {{count}} changes.'; readonly logTitle: 'Log'; readonly resultTitle: 'Result'; readonly copyBtn: 'Copy'; readonly copyTitle: 'Copy JSON to clipboard'; readonly savedStatus: 'Script "{{name}}" saved'; readonly loadedStatus: 'Script "{{name}}" loaded'; readonly deletedStatus: 'Script "{{name}}" deleted'; readonly errorStatus: 'Script error: {{message}}'; readonly ranNoChanges: 'Script ran (no changes)'; readonly ranChange: 'Script: {{count}} change'; readonly ranChanges: 'Script: {{count}} changes'; readonly libraryPanelTitle: 'Saved scripts'; readonly libraryCloseTitle: 'Close'; readonly libraryEmpty: 'No saved scripts yet. Type a name above and click Save.'; readonly librarySavedAgo: 'Saved {{time}}'; readonly libraryLoadedBadge: 'loaded'; readonly libraryAlreadyLoaded: 'Already loaded'; readonly libraryLoadTitle: 'Load into editor'; readonly libraryLoadBtn: 'Load'; readonly libraryDeleteBtn: 'Delete'; readonly libraryDeleteTitle: 'Delete "{{name}}"'; readonly libraryDeleteConfirm: 'Delete saved script "{{name}}"?'; readonly libraryTimeJustNow: 'just now'; readonly libraryTimeMinutes: '{{count}}m ago'; readonly libraryTimeHours: '{{count}}h ago'; readonly libraryTimeDays: '{{count}}d ago'; }; readonly map: { readonly heading: 'Map Info'; readonly noMap: 'No map loaded'; readonly noMapHint: 'Drag a .dat file in or load from toolbar.'; readonly version: 'Version'; readonly rooms: 'Rooms'; readonly areas: 'Areas'; readonly customEnvs: 'Custom colors'; readonly userData: 'User Data'; readonly storeAcks: 'Store acks in map userdata'; readonly warnings: 'Warnings'; readonly acknowledged: '{{count}} acknowledged'; readonly ack: 'Ack'; readonly unack: 'Unack'; readonly go: 'Go'; readonly warnZeroSizeLabel: 'Zero-size label'; readonly warnSelfLinkRoom: 'Self-linking room'; readonly warnOrphanRoom: 'Orphan room'; readonly warnDanglingExit: 'Dangling exit'; readonly warnDuplicateCoord: 'Duplicate coords'; readonly warnCoordMismatch: 'Direction mismatch'; }; readonly shared: { readonly noUserData: '— no user data —'; readonly removeEntry: 'Remove entry'; readonly addEntry: 'Add entry'; readonly keyPlaceholder: 'key'; readonly valuePlaceholder: 'value'; readonly searchPlaceholder: 'Search…'; readonly noResults: 'No results'; readonly toolHints: { readonly select: 'Click a room to select. Drag to move. Arrow keys nudge.'; readonly connect: 'Click source, then target. Shift for one-way.'; readonly unlink: 'Click an exit line to remove.'; readonly addRoom: 'Click an empty grid cell to create a room.'; readonly delete: 'Click a room to delete it.'; readonly pan: 'Drag to pan. Hold Space with any tool for temporary pan.'; readonly customLine: 'Click to add waypoints. Right-click or Enter to finish.'; readonly label: 'Click a label to select and edit its properties.'; }; }; readonly route: { readonly title: 'Route / speedwalk'; readonly description: 'Find the lowest-cost path between two rooms using room & exit weights, honouring locked exits and rooms.'; readonly from: 'From'; readonly to: 'To'; readonly pickFrom: 'Pick start room from map'; readonly pickTo: 'Pick destination room from map'; readonly pickCancel: 'Click a room on the map (Esc to cancel)'; readonly swap: 'Swap'; readonly algorithm: 'Algorithm'; readonly astar: 'A* (fast)'; readonly dijkstra: 'Dijkstra'; readonly find: 'Find route'; readonly clear: 'Clear'; readonly rooms: '{{count}} rooms'; readonly steps: '{{count}} steps'; readonly cost: 'Cost {{weight}}'; readonly speedwalk: 'Speedwalk'; readonly copy: 'Copy'; readonly copied: 'Copied!'; readonly goStart: 'Go to start'; readonly goEnd: 'Go to end'; readonly noPath: 'No route found between #{{from}} and #{{to}}.'; readonly sameRoom: 'Start and destination are the same room.'; readonly missing: 'Enter a valid start and destination room ID.'; readonly pickHint: 'Tip: click “⊕” next to From or To, then click a room on the map.'; readonly stepList: 'Steps'; }; }; export type PanelsLocale = { [K in keyof typeof panelsEn]: typeof panelsEn[K] extends string ? string : { [K2 in keyof typeof panelsEn[K]]: typeof panelsEn[K][K2] extends string ? string : Record; }; };