@k2b/ui 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/content/Calendar.js +12 -5
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/PdfPreview.js +170 -72
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/feedback/dialog-core.js +2 -1
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/feedback/prompts.js +20 -6
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/toast.js +4 -2
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/intl/messages.js +48 -2
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/Navigation.js +8 -5
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/SettingsModal.js +32 -10
- package/dist/browser/layout/SettingsModal.js.map +1 -1
- package/dist/browser/layout/navigation-model.js +1 -0
- package/dist/browser/layout/navigation-model.js.map +1 -1
- package/dist/ssr/content/Calendar.js +13 -6
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js +79 -22
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/feedback/dialog-core.js +2 -1
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/feedback/prompts.js +19 -5
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/toast.js +4 -2
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/intl/messages.js +48 -2
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +8 -5
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/SettingsModal.js +30 -5
- package/dist/ssr/layout/SettingsModal.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js +1 -0
- package/dist/ssr/layout/navigation-model.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/content/PdfPreview.d.ts +8 -0
- package/dist/types/intl/messages.d.ts +23 -0
- package/dist/types/layout/navigation-model.d.ts +5 -0
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["intl/messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"./locale\";\n\nconst uiMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n chartView: \"Chart view\",\n chartDiagram: \"Diagram\",\n chartData: \"Table\",\n chartSeries: \"Series visibility\",\n chartOnly: \"Only\",\n chartShowAll: \"Show all\",\n chartShowing: \"Showing\",\n chartSelectedDatum: \"Selected data point\",\n chartReference: \"Reference\",\n chartCurrent: \"Current\",\n chartPinReference: \"Pin as reference\",\n chartRemoveComparison: \"Remove comparison\",\n chartPreviousData: \"The chart and table still show the last loaded filters\",\n chartCopyData: \"Copy data\",\n chartCopyFailed: \"Could not copy data\",\n\n actions: \"Actions\",\n add: \"Add\",\n addTag: \"Add tag\",\n addImage: \"Add image\",\n attachments: \"Attachments\",\n assistant: \"Assistant\",\n avatarLabel: ({ name }: { name: string }) => `${name} avatar`,\n all: \"All\",\n calendar: \"Calendar\",\n clear: \"Clear\",\n clearDate: \"Clear date\",\n clearSelection: \"Clear selection\",\n chooseOption: \"Choose option\",\n close: \"Close\",\n closeDialog: \"close dialog\",\n copied: \"Copied\",\n copy: \"Copy\",\n closeLightbox: \"Close lightbox\",\n couldNotLoadData: \"Could not load this data\",\n datePicker: \"Date picker\",\n dataTable: \"Data table\",\n datePresets: \"Date presets\",\n decreaseValue: \"Decrease value\",\n download: \"Download\",\n downloadAsZip: \"Download as ZIP\",\n downloadImage: \"Download image\",\n dropFiles: \"Drop files or click to choose\",\n dropToUpload: \"Drop to upload\",\n dropdownMenu: \"Dropdown menu\",\n durationPresets: \"Duration presets\",\n filterOptions: \"Filter options\",\n fileTypeNotAccepted: \"File type not accepted\",\n imageLightbox: \"Image lightbox\",\n imageNavigation: \"Image navigation\",\n increaseValue: \"Increase value\",\n loading: \"Loading...\",\n hidePassword: \"Hide password\",\n noColumns: \"No columns.\",\n noData: \"No data.\",\n noRecords: \"No records\",\n noTagsYet: \"No tags yet\",\n noResultsFound: \"No results found\",\n nextImage: \"Next image\",\n noOptions: \"No options available\",\n optionsCouldNotLoad: \"Options could not be loaded\",\n noResults: \"No results\",\n nothingHere: \"Nothing here yet.\",\n nothingToShow: \"Nothing to show.\",\n no: \"No\",\n options: \"Options\",\n pagination: \"Pagination\",\n pageOf: ({ page, total }: { page: number; total: number }) => `Page ${page} of ${total}`,\n pickDate: \"Pick date\",\n previousImage: \"Previous image\",\n previousMonth: \"Previous month\",\n previousPage: \"Previous page\",\n previousYear: \"Previous year\",\n nextMonth: \"Next month\",\n nextPage: \"Next page\",\n nextYear: \"Next year\",\n goToPage: ({ page }: { page: number }) => `Go to page ${page}`,\n retry: \"Retry\",\n refreshing: \"Refreshing\",\n reset: \"Reset\",\n required: \"required\",\n rename: \"Rename\",\n delete: \"Delete\",\n remove: \"Remove\",\n removeTag: \"Remove tag\",\n search: \"Search...\",\n searchLabel: \"Search\",\n spotlightNoResults: \"No results.\",\n searchFailed: \"Search failed.\",\n searchResults: \"Search results\",\n save: \"Save\",\n saveShortcut: \"Save (Ctrl/Cmd+S)\",\n sectionsLabel: ({ title }: { title: string }) => `${title} sections`,\n searchOptions: \"Search options\",\n select: \"Select...\",\n selectMatchingOption: \"Select a matching option\",\n selectOption: \"Select option\",\n suggestions: \"Suggestions\",\n suggestionsCouldNotLoad: \"Suggestions could not be loaded\",\n showPassword: \"Show password\",\n time: \"Time\",\n timeLabel: ({ label }: { label: string }) => `${label} time`,\n completionSuggestions: \"Completion suggestions\",\n contextMenu: \"Context menu\",\n unknownUser: \"Unknown user\",\n uploading: \"Uploading…\",\n chooseFile: \"Choose file\",\n chooseFiles: \"Choose files\",\n chooseMatchingFile: \"Choose a file that matches this field.\",\n checkingOptions: \"Checking options\",\n checkingOptionsLoading: \"Checking options...\",\n noMatchingOption: \"No matching option found\",\n noOptionsFound: \"No options found\",\n typeToSearch: \"Type to search...\",\n showGridView: \"Show grid view\",\n showListView: \"Show list view\",\n start: \"Start\",\n end: \"End\",\n addFileFolderUpload: \"Add file, folder, or upload\",\n addPane: \"Add pane\",\n addToChat: \"Add to chat\",\n attachFiles: \"Attach files\",\n addGuidance: \"Add guidance...\",\n calendarView: \"Calendar view\",\n openDate: ({ label }: { label: string }) => `Open ${label}`,\n createEventOn: ({ label }: { label: string }) => `Create event on ${label}`,\n hiddenOverlappingEvents: ({ count }: { count: number }) => `${count} hidden overlapping events`,\n today: \"Today\",\n day: \"Day\",\n week: \"Week\",\n weekShort: \"Wk\",\n month: \"Month\",\n year: \"Year\",\n allDay: \"All day\",\n noEvents: \"No events\",\n previous: \"Previous\",\n next: \"Next\",\n moveEvent: \"Move event\",\n resizeEvent: \"Resize event\",\n cancel: \"Cancel\",\n chat: \"Chat\",\n chooseModel: \"Choose model\",\n closeWindow: \"Close window\",\n code: \"Code\",\n codeLabel: ({ title }: { title: string }) => `${title} code`,\n column: ({ number }: { number: number }) => `Column ${number}`,\n commands: \"Commands\",\n dropFilesToAttach: \"Drop files to attach\",\n conversation: \"Conversation\",\n jumpToLatest: \"Jump to latest\",\n conversationMessages: ({ label }: { label: string }) => `${label} messages`,\n dialogTabs: \"Dialog tabs\",\n files: \"Files\",\n chooseFileToPreview: \"Choose a file to preview it.\",\n change: \"Change\",\n changeImage: \"Change image\",\n cropArea: \"Crop area. Use arrow keys to move; hold Shift for larger steps.\",\n cropPreview: \"Crop preview\",\n discardChanges: \"Discard changes\",\n discardUnsavedFile: \"Discard the unsaved changes in this file?\",\n downloadFailed: \"Download failed\",\n failedLoadFiles: \"Failed to load files\",\n failedLoadImage: \"Failed to load image.\",\n folderEmpty: \"This folder is empty.\",\n folderSelected: \"Folder selected\",\n newFile: \"New file\",\n newFileName: \"Name of the new file:\",\n newFolder: \"New folder\",\n newFolderName: \"Name of the new folder:\",\n fileActions: \"File actions\",\n actionsFor: ({ name }: { name: string }) => `Actions for ${name}`,\n fileSaved: \"File saved\",\n pickFileFromTree: \"Pick a file from the tree to view it.\",\n imageProcessingFailed: \"Image could not be processed.\",\n preparingImage: \"Preparing image…\",\n processingImage: \"Processing image\",\n removeImage: \"Remove image\",\n rotateRight: \"Rotate right\",\n selectedImage: \"Selected image\",\n selectFile: \"Select a file\",\n spaceEmpty: \"This space is empty.\",\n uploadFiles: \"Upload files\",\n filterIcons: \"Filter icons\",\n loadEarlier: \"Load earlier\",\n loadingConversation: \"Loading conversation\",\n loadingFiles: \"Loading files...\",\n loadingMessages: \"Loading messages\",\n failed: \"Failed\",\n generating: \"Generating\",\n loadOlderMessages: \"Load older messages\",\n loadingOlderMessages: \"Loading older messages\",\n couldNotLoadOlderMessages: \"Could not load older messages\",\n couldNotLoadEarlierMessages: \"Could not load earlier messages\",\n couldNotPostMessage: \"Could not post message\",\n message: \"Message\",\n messageActions: \"Message actions\",\n messageComposer: \"Message composer\",\n messageInput: \"Message input\",\n confirmation: \"Confirmation\",\n confirm: \"Confirm\",\n dialog: \"Dialog\",\n discard: \"Discard\",\n error: \"Error\",\n form: \"Form\",\n filterActions: \"Filter actions\",\n info: \"Info\",\n interactiveLineChart: \"Interactive line chart\",\n interactiveChart:\n \"Interactive chart. Use arrow keys to inspect, Enter to select, Escape to dismiss. On maps and timelines use Alt with arrow keys to inspect.\",\n chartFields: ({ key }: { key: string }) => {\n const labels: Record<string, string> = {\n x: \"X\",\n y: \"Y\",\n value: \"Value\",\n percent: \"Share\",\n total: \"Total\",\n from: \"From\",\n to: \"To\",\n upperInclusive: \"Includes upper bound\",\n count: \"Count\",\n q1: \"Lower quartile\",\n q2: \"Median\",\n q3: \"Upper quartile\",\n whiskerLow: \"Lower whisker\",\n whiskerHigh: \"Upper whisker\",\n min: \"Minimum\",\n max: \"Maximum\",\n threshold: \"Threshold\",\n delta: \"Change\",\n latitude: \"Latitude\",\n longitude: \"Longitude\",\n size: \"Size\",\n state: \"State\",\n duration: \"Duration\",\n detail: \"Detail\",\n errY: \"Y error\",\n errYHigh: \"Upper Y error\",\n errYLow: \"Lower Y error\",\n errX: \"X error\",\n errXHigh: \"Upper X error\",\n errXLow: \"Lower X error\",\n };\n return labels[key] ?? key;\n },\n interactiveMap: \"Interactive map\",\n interactiveTimeline: \"Interactive timeline\",\n ok: \"OK\",\n success: \"Success\",\n model: \"Model\",\n input: \"Input\",\n output: \"Output\",\n loopTotal: \"Loop total\",\n remaining: \"Remaining\",\n notConfigured: \"Not configured\",\n unknown: \"Unknown\",\n system: \"System\",\n tool: \"Tool\",\n user: \"User\",\n useColor: \"Use a color\",\n useTransparent: \"Use transparent\",\n series: \"Series\",\n waiting: \"Waiting\",\n templateEditorPlaceholder: \"Write HTML with Liquid values like {{ APP_NAME }}...\",\n templatePreview: \"Template preview\",\n lastRequestContext: \"Last request context\",\n contextWindowUsed: \"Context window used\",\n contextUsageUnavailable: \"Context usage unavailable\",\n contextUsageUnavailableWithWindow: ({ window }: { window: string }) => `Context usage unavailable, ${window} token context window`,\n tokensUsed: ({ total }: { total: string }) => `${total} tokens used`,\n tokensUsedPercent: ({ total, percent }: { total: string; percent: number }) =>\n `${total} tokens used, ${percent}% of the context window`,\n moveDown: \"Move down\",\n moveUp: \"Move up\",\n moveNamedDown: ({ label }: { label: string }) => `Move ${label} down`,\n moveNamedUp: ({ label }: { label: string }) => `Move ${label} up`,\n rowAction: \"Row action\",\n addToNamed: ({ name }: { name: string }) => `Add to ${name}`,\n insertBeforeNamed: ({ name }: { name: string }) => `Insert before ${name}`,\n insertAtEnd: \"Insert at end\",\n addPaneSide: ({ side, name }: { side: \"left\" | \"right\" | \"top\" | \"bottom\"; name: string }) => `Add ${side} of ${name}`,\n discardUnsavedChanges: \"Discard unsaved changes?\",\n unsavedChangesTitle: \"Unsaved changes\",\n tagName: \"Tag name\",\n name: \"Name\",\n color: \"Color\",\n tagCouldNotBeSaved: \"The tag could not be saved.\",\n tagActionFailed: \"The tag action failed.\",\n tagsPlaceholder: \"Tags (e.g. Tag 1, Tag 2,...)\",\n tagsAdded: ({ tags }: { tags: string }) => `Tags added: ${tags}.`,\n tagsRemoved: ({ tags }: { tags: string }) => `Tags removed: ${tags}.`,\n noFiles: \"No files\",\n noLogEntries: \"No log entries found.\",\n noPreview: \"No preview\",\n openPreview: \"Open preview\",\n paneTabs: \"Pane tabs\",\n paneWorkspace: \"Pane workspace\",\n pdfPreview: \"PDF preview\",\n pdfPreviewHttpError: ({ status }: { status: number }) => `PDF preview failed with HTTP ${status}`,\n pickIcon: \"Pick an icon...\",\n postMessage: \"Post message\",\n preview: \"Preview\",\n previewPdf: \"Preview PDF\",\n renderPdfPreview: \"Render a PDF preview to see the final output.\",\n queueMessage: \"Queue message\",\n queueing: \"Queueing\",\n sending: \"Sending\",\n steering: \"Steering\",\n writeMessage: \"Write a message or type / ...\",\n openInNewTab: ({ name }: { name: string }) => `Open ${name} in a new tab`,\n closeNamed: ({ name }: { name: string }) => `Close ${name}`,\n goToImage: ({ index }: { index: number }) => `Go to image ${index}`,\n pinDigit: ({ index, total }: { index: number; total: number }) => `PIN digit ${index} of ${total}`,\n moreSelected: ({ count }: { count: number }) => `${count} more selected`,\n removeNamed: ({ name }: { name: string }) => `Remove ${name}`,\n resizeCrop: ({ handle }: { handle: string }) => `Resize crop ${handle}`,\n range: \"Range\",\n resizePanes: \"Resize panes\",\n resetMapView: \"Reset map view\",\n resetTimelineView: \"Reset timeline view\",\n retryOlderMessages: \"Retry loading older messages\",\n saveChanges: \"Save changes\",\n saving: \"Saving\",\n sendMessage: \"Send message\",\n startConversation: \"Start a conversation\",\n steerResponse: \"Steer response\",\n stopResponse: \"Stop response\",\n stopping: \"Stopping\",\n unsaved: \"Unsaved\",\n unsavedChangeLabel: ({ count }: { count: number }) => `unsaved ${count === 1 ? \"change\" : \"changes\"}`,\n noUnsavedChanges: \"No unsaved changes\",\n moveWindow: ({ title }: { title: string }) => `Move ${title} window. Use arrow keys; hold Shift for larger steps.`,\n resizeWindow: \"Resize window. Use arrow keys; hold Shift for larger steps.\",\n window: \"Window\",\n zoomIn: \"Zoom in\",\n zoomOut: \"Zoom out\",\n resetZoom: \"Reset zoom\",\n openFullscreen: \"Open fullscreen\",\n zoomPanKeys: \"Zoom with plus and minus, move with the arrow keys, reset with 0, open fullscreen with F.\",\n binaryFile: \"Binary file\",\n boldShortcut: \"Bold (Ctrl/Cmd+B)\",\n bulletListShortcut: \"Bullet list (Ctrl/Cmd+Shift+8)\",\n heading1Shortcut: \"Heading 1 (Ctrl/Cmd+Shift+1)\",\n heading2Shortcut: \"Heading 2 (Ctrl/Cmd+Shift+2)\",\n heading3Shortcut: \"Heading 3 (Ctrl/Cmd+Shift+3)\",\n inlineCodeShortcut: \"Inline code (Ctrl/Cmd+E)\",\n italicShortcut: \"Italic (Ctrl/Cmd+I)\",\n linkShortcut: \"Link (Ctrl/Cmd+K)\",\n markdownFormatting: \"Markdown formatting\",\n numberedListShortcut: \"Numbered list (Ctrl/Cmd+Shift+7)\",\n quote: \"Quote\",\n csvSettings: \"CSV preview settings\",\n csvEncoding: \"Encoding\",\n csvSeparator: \"Separator\",\n csvDefaultSeparator: \"File type default\",\n csvComma: \"Comma\",\n csvSemicolon: \"Semicolon\",\n csvTab: \"Tab\",\n csvView: \"Display\",\n csvRaw: \"Raw text\",\n delimitedFileEmpty: \"This delimited file contains no rows.\",\n edit: \"Edit\",\n emptyFile: \"Empty file\",\n failedLoadFile: \"Failed to load file\",\n noInlinePreview: \"No inline preview available for this source.\",\n previewMoreLines: (n: number) => `… ${n} more lines`,\n previewColumnsLimited: \"Showing the first 50 columns. Download the file for all columns.\",\n textEditor: \"Text editor\",\n audioUnsupported: \"Your browser does not support audio playback.\",\n videoUnsupported: \"Your browser does not support video playback.\",\n yes: \"Yes\",\n },\n de: {\n chartView: \"Diagrammansicht\",\n chartDiagram: \"Diagramm\",\n chartData: \"Tabelle\",\n chartSeries: \"Sichtbare Datenreihen\",\n chartOnly: \"Nur diese\",\n chartShowAll: \"Alle anzeigen\",\n chartShowing: \"Angezeigt\",\n chartSelectedDatum: \"Ausgewählter Datenpunkt\",\n chartReference: \"Vergleich\",\n chartCurrent: \"Aktuell\",\n chartPinReference: \"Als Vergleich merken\",\n chartRemoveComparison: \"Vergleich entfernen\",\n chartPreviousData: \"Diagramm und Tabelle zeigen weiterhin die zuletzt geladenen Filter\",\n chartCopyData: \"Daten kopieren\",\n chartCopyFailed: \"Daten konnten nicht kopiert werden\",\n\n actions: \"Aktionen\",\n add: \"Hinzufügen\",\n addTag: \"Tag hinzufügen\",\n addImage: \"Bild hinzufügen\",\n attachments: \"Anhänge\",\n assistant: \"Assistent\",\n avatarLabel: ({ name }) => `Avatar von ${name}`,\n all: \"Alle\",\n calendar: \"Kalender\",\n clear: \"Leeren\",\n clearDate: \"Datum löschen\",\n clearSelection: \"Auswahl löschen\",\n chooseOption: \"Option auswählen\",\n close: \"Schließen\",\n closeDialog: \"Dialog schließen\",\n copied: \"Kopiert\",\n copy: \"Kopieren\",\n closeLightbox: \"Bildansicht schließen\",\n couldNotLoadData: \"Diese Daten konnten nicht geladen werden\",\n datePicker: \"Datumsauswahl\",\n dataTable: \"Datentabelle\",\n datePresets: \"Datumsvorgaben\",\n decreaseValue: \"Wert verringern\",\n download: \"Herunterladen\",\n downloadAsZip: \"Als ZIP herunterladen\",\n downloadImage: \"Bild herunterladen\",\n dropFiles: \"Dateien ablegen oder zum Auswählen klicken\",\n dropToUpload: \"Zum Hochladen ablegen\",\n dropdownMenu: \"Dropdown-Menü\",\n durationPresets: \"Dauervorgaben\",\n filterOptions: \"Optionen filtern\",\n fileTypeNotAccepted: \"Dateityp wird nicht akzeptiert\",\n imageLightbox: \"Bildansicht\",\n imageNavigation: \"Bildnavigation\",\n increaseValue: \"Wert erhöhen\",\n loading: \"Wird geladen...\",\n hidePassword: \"Passwort ausblenden\",\n noColumns: \"Keine Spalten.\",\n noData: \"Keine Daten.\",\n noRecords: \"Keine Einträge\",\n noTagsYet: \"Noch keine Tags\",\n noResultsFound: \"Keine Ergebnisse gefunden\",\n nextImage: \"Nächstes Bild\",\n noOptions: \"Keine Optionen verfügbar\",\n optionsCouldNotLoad: \"Optionen konnten nicht geladen werden\",\n noResults: \"Keine Ergebnisse\",\n nothingHere: \"Noch nichts vorhanden.\",\n nothingToShow: \"Nichts anzuzeigen.\",\n no: \"Nein\",\n options: \"Optionen\",\n pagination: \"Seitennavigation\",\n pageOf: ({ page, total }) => `Seite ${page} von ${total}`,\n pickDate: \"Datum auswählen\",\n previousImage: \"Vorheriges Bild\",\n previousMonth: \"Vorheriger Monat\",\n previousPage: \"Vorherige Seite\",\n previousYear: \"Vorheriges Jahr\",\n nextMonth: \"Nächster Monat\",\n nextPage: \"Nächste Seite\",\n nextYear: \"Nächstes Jahr\",\n goToPage: ({ page }) => `Zu Seite ${page}`,\n retry: \"Erneut versuchen\",\n refreshing: \"Wird aktualisiert\",\n reset: \"Zurücksetzen\",\n required: \"erforderlich\",\n rename: \"Umbenennen\",\n delete: \"Löschen\",\n remove: \"Entfernen\",\n removeTag: \"Tag entfernen\",\n search: \"Suchen...\",\n searchLabel: \"Suchen\",\n spotlightNoResults: \"Keine Ergebnisse.\",\n searchFailed: \"Suche fehlgeschlagen.\",\n searchResults: \"Suchergebnisse\",\n save: \"Speichern\",\n saveShortcut: \"Speichern (Strg/Cmd+S)\",\n sectionsLabel: ({ title }) => `Bereiche von ${title}`,\n searchOptions: \"Optionen durchsuchen\",\n select: \"Auswählen...\",\n selectMatchingOption: \"Eine passende Option auswählen\",\n selectOption: \"Option auswählen\",\n suggestions: \"Vorschläge\",\n suggestionsCouldNotLoad: \"Vorschläge konnten nicht geladen werden\",\n showPassword: \"Passwort anzeigen\",\n time: \"Uhrzeit\",\n timeLabel: ({ label }) => `${label}zeit`,\n completionSuggestions: \"Vervollständigungsvorschläge\",\n contextMenu: \"Kontextmenü\",\n unknownUser: \"Unbekannte Person\",\n uploading: \"Wird hochgeladen…\",\n chooseFile: \"Datei auswählen\",\n chooseFiles: \"Dateien auswählen\",\n chooseMatchingFile: \"Wähle eine zu diesem Feld passende Datei aus.\",\n checkingOptions: \"Optionen werden geprüft\",\n checkingOptionsLoading: \"Optionen werden geprüft...\",\n noMatchingOption: \"Keine passende Option gefunden\",\n noOptionsFound: \"Keine Optionen gefunden\",\n typeToSearch: \"Zum Suchen tippen...\",\n showGridView: \"Rasteransicht anzeigen\",\n showListView: \"Listenansicht anzeigen\",\n start: \"Beginn\",\n end: \"Ende\",\n addFileFolderUpload: \"Datei oder Ordner hinzufügen oder hochladen\",\n addPane: \"Bereich hinzufügen\",\n addToChat: \"Zum Chat hinzufügen\",\n attachFiles: \"Dateien anhängen\",\n addGuidance: \"Hinweis hinzufügen...\",\n calendarView: \"Kalenderansicht\",\n openDate: ({ label }) => `${label} öffnen`,\n createEventOn: ({ label }) => `Termin am ${label} erstellen`,\n hiddenOverlappingEvents: ({ count }) => `${count} ausgeblendete überlappende Termine`,\n today: \"Heute\",\n day: \"Tag\",\n week: \"Woche\",\n weekShort: \"KW\",\n month: \"Monat\",\n year: \"Jahr\",\n allDay: \"Ganztägig\",\n noEvents: \"Keine Termine\",\n previous: \"Zurück\",\n next: \"Weiter\",\n moveEvent: \"Termin verschieben\",\n resizeEvent: \"Termindauer ändern\",\n cancel: \"Abbrechen\",\n chat: \"Chat\",\n chooseModel: \"Modell auswählen\",\n closeWindow: \"Fenster schließen\",\n code: \"Code\",\n codeLabel: ({ title }) => `Code von ${title}`,\n column: ({ number }) => `Spalte ${number}`,\n commands: \"Befehle\",\n dropFilesToAttach: \"Dateien zum Anhängen ablegen\",\n conversation: \"Unterhaltung\",\n jumpToLatest: \"Zur neuesten Nachricht\",\n conversationMessages: ({ label }) => `Nachrichten in ${label}`,\n dialogTabs: \"Dialog-Tabs\",\n files: \"Dateien\",\n chooseFileToPreview: \"Wähle eine Datei für die Vorschau aus.\",\n change: \"Ändern\",\n changeImage: \"Bild ändern\",\n cropArea: \"Zuschneidebereich. Mit Pfeiltasten verschieben; Umschalt für größere Schritte halten.\",\n cropPreview: \"Zuschneidevorschau\",\n discardChanges: \"Änderungen verwerfen\",\n discardUnsavedFile: \"Ungespeicherte Änderungen an dieser Datei verwerfen?\",\n downloadFailed: \"Download fehlgeschlagen\",\n failedLoadFiles: \"Dateien konnten nicht geladen werden\",\n failedLoadImage: \"Bild konnte nicht geladen werden.\",\n folderEmpty: \"Dieser Ordner ist leer.\",\n folderSelected: \"Ordner ausgewählt\",\n newFile: \"Neue Datei\",\n newFileName: \"Name der neuen Datei:\",\n newFolder: \"Neuer Ordner\",\n newFolderName: \"Name des neuen Ordners:\",\n fileActions: \"Dateiaktionen\",\n actionsFor: ({ name }) => `Aktionen für ${name}`,\n fileSaved: \"Datei gespeichert\",\n pickFileFromTree: \"Wähle im Dateibaum eine Datei aus.\",\n imageProcessingFailed: \"Bild konnte nicht verarbeitet werden.\",\n preparingImage: \"Bild wird vorbereitet…\",\n processingImage: \"Bild wird verarbeitet\",\n removeImage: \"Bild entfernen\",\n rotateRight: \"Nach rechts drehen\",\n selectedImage: \"Ausgewähltes Bild\",\n selectFile: \"Datei auswählen\",\n spaceEmpty: \"Dieser Bereich ist leer.\",\n uploadFiles: \"Dateien hochladen\",\n filterIcons: \"Symbole filtern\",\n loadEarlier: \"Ältere laden\",\n loadingConversation: \"Unterhaltung wird geladen\",\n loadingFiles: \"Dateien werden geladen...\",\n loadingMessages: \"Nachrichten werden geladen\",\n failed: \"Fehlgeschlagen\",\n generating: \"Wird generiert\",\n loadOlderMessages: \"Ältere Nachrichten laden\",\n loadingOlderMessages: \"Ältere Nachrichten werden geladen\",\n couldNotLoadOlderMessages: \"Ältere Nachrichten konnten nicht geladen werden\",\n couldNotLoadEarlierMessages: \"Ältere Nachrichten konnten nicht geladen werden\",\n couldNotPostMessage: \"Nachricht konnte nicht gepostet werden\",\n message: \"Nachricht\",\n messageActions: \"Nachrichtenaktionen\",\n messageComposer: \"Nachricht verfassen\",\n messageInput: \"Nachrichteneingabe\",\n confirmation: \"Bestätigung\",\n confirm: \"Bestätigen\",\n dialog: \"Dialog\",\n discard: \"Verwerfen\",\n error: \"Fehler\",\n form: \"Formular\",\n filterActions: \"Filteraktionen\",\n info: \"Information\",\n interactiveLineChart: \"Interaktives Liniendiagramm\",\n interactiveChart:\n \"Interaktives Diagramm. Pfeiltasten zum Erkunden, Enter zum Auswählen, Escape zum Schließen. In Karten und Zeitleisten Alt mit Pfeiltasten zum Erkunden.\",\n chartFields: ({ key }: { key: string }) => {\n const labels: Record<string, string> = {\n x: \"X\",\n y: \"Y\",\n value: \"Wert\",\n percent: \"Anteil\",\n total: \"Gesamt\",\n from: \"Von\",\n to: \"Bis\",\n upperInclusive: \"Obergrenze enthalten\",\n count: \"Anzahl\",\n q1: \"Unteres Quartil\",\n q2: \"Median\",\n q3: \"Oberes Quartil\",\n whiskerLow: \"Unterer Whisker\",\n whiskerHigh: \"Oberer Whisker\",\n min: \"Minimum\",\n max: \"Maximum\",\n threshold: \"Schwellenwert\",\n delta: \"Änderung\",\n latitude: \"Breitengrad\",\n longitude: \"Längengrad\",\n size: \"Größe\",\n state: \"Zustand\",\n duration: \"Dauer\",\n detail: \"Details\",\n errY: \"Y-Fehler\",\n errYHigh: \"Oberer Y-Fehler\",\n errYLow: \"Unterer Y-Fehler\",\n errX: \"X-Fehler\",\n errXHigh: \"Oberer X-Fehler\",\n errXLow: \"Unterer X-Fehler\",\n };\n return labels[key] ?? key;\n },\n interactiveMap: \"Interaktive Karte\",\n interactiveTimeline: \"Interaktive Zeitachse\",\n ok: \"OK\",\n success: \"Erfolg\",\n model: \"Modell\",\n input: \"Eingabe\",\n output: \"Ausgabe\",\n loopTotal: \"Schleife gesamt\",\n remaining: \"Verbleibend\",\n notConfigured: \"Nicht konfiguriert\",\n unknown: \"Unbekannt\",\n system: \"System\",\n tool: \"Werkzeug\",\n user: \"Benutzer\",\n useColor: \"Farbe verwenden\",\n useTransparent: \"Transparent verwenden\",\n series: \"Datenreihe\",\n waiting: \"Wartet\",\n templateEditorPlaceholder: \"HTML mit Liquid-Werten wie {{ APP_NAME }} schreiben...\",\n templatePreview: \"Vorlagenvorschau\",\n lastRequestContext: \"Kontext der letzten Anfrage\",\n contextWindowUsed: \"Kontextfenster verwendet\",\n contextUsageUnavailable: \"Kontextnutzung nicht verfügbar\",\n contextUsageUnavailableWithWindow: ({ window }) => `Kontextnutzung nicht verfügbar, Kontextfenster mit ${window} Token`,\n tokensUsed: ({ total }) => `${total} Token verwendet`,\n tokensUsedPercent: ({ total, percent }) => `${total} Token verwendet, ${percent}% des Kontextfensters`,\n moveDown: \"Nach unten\",\n moveUp: \"Nach oben\",\n moveNamedDown: ({ label }) => `${label} nach unten verschieben`,\n moveNamedUp: ({ label }) => `${label} nach oben verschieben`,\n rowAction: \"Zeilenaktion\",\n addToNamed: ({ name }) => `Zu ${name} hinzufügen`,\n insertBeforeNamed: ({ name }) => `Vor ${name} einfügen`,\n insertAtEnd: \"Am Ende einfügen\",\n addPaneSide: ({ side, name }) =>\n `${side === \"left\" ? \"Links\" : side === \"right\" ? \"Rechts\" : side === \"top\" ? \"Oberhalb\" : \"Unterhalb\"} von ${name} hinzufügen`,\n discardUnsavedChanges: \"Ungespeicherte Änderungen verwerfen?\",\n unsavedChangesTitle: \"Ungespeicherte Änderungen\",\n tagName: \"Tag-Name\",\n name: \"Name\",\n color: \"Farbe\",\n tagCouldNotBeSaved: \"Der Tag konnte nicht gespeichert werden.\",\n tagActionFailed: \"Die Tag-Aktion ist fehlgeschlagen.\",\n tagsPlaceholder: \"Tags (z. B. Tag 1, Tag 2, …)\",\n tagsAdded: ({ tags }) => `Tags hinzugefügt: ${tags}.`,\n tagsRemoved: ({ tags }) => `Tags entfernt: ${tags}.`,\n noFiles: \"Keine Dateien\",\n noLogEntries: \"Keine Logeinträge gefunden.\",\n noPreview: \"Keine Vorschau\",\n openPreview: \"Vorschau öffnen\",\n paneTabs: \"Bereichs-Tabs\",\n paneWorkspace: \"Arbeitsbereich\",\n pdfPreview: \"PDF-Vorschau\",\n pdfPreviewHttpError: ({ status }) => `PDF-Vorschau ist mit HTTP ${status} fehlgeschlagen`,\n pickIcon: \"Symbol auswählen...\",\n postMessage: \"Nachricht posten\",\n preview: \"Vorschau\",\n previewPdf: \"PDF anzeigen\",\n renderPdfPreview: \"Erzeuge eine PDF-Vorschau, um das Endergebnis zu sehen.\",\n queueMessage: \"Nachricht einreihen\",\n queueing: \"Wird eingereiht\",\n sending: \"Wird gesendet\",\n steering: \"Wird gesteuert\",\n writeMessage: \"Nachricht schreiben oder / eingeben ...\",\n openInNewTab: ({ name }) => `${name} in neuem Tab öffnen`,\n closeNamed: ({ name }) => `${name} schließen`,\n goToImage: ({ index }) => `Zu Bild ${index} wechseln`,\n pinDigit: ({ index, total }) => `PIN-Ziffer ${index} von ${total}`,\n moreSelected: ({ count }) => `${count} weitere ${count === 1 ? \"Option\" : \"Optionen\"} ausgewählt`,\n removeNamed: ({ name }) => `${name} entfernen`,\n resizeCrop: ({ handle }) => `Zuschneidebereich am Griff ${handle} skalieren`,\n range: \"Zeitraum\",\n resizePanes: \"Bereiche skalieren\",\n resetMapView: \"Kartenansicht zurücksetzen\",\n resetTimelineView: \"Zeitachsenansicht zurücksetzen\",\n retryOlderMessages: \"Ältere Nachrichten erneut laden\",\n saveChanges: \"Änderungen speichern\",\n saving: \"Wird gespeichert\",\n sendMessage: \"Nachricht senden\",\n startConversation: \"Unterhaltung beginnen\",\n steerResponse: \"Antwort steuern\",\n stopResponse: \"Antwort stoppen\",\n stopping: \"Wird gestoppt\",\n unsaved: \"Ungespeichert\",\n unsavedChangeLabel: ({ count }) => `ungespeicherte ${count === 1 ? \"Änderung\" : \"Änderungen\"}`,\n noUnsavedChanges: \"Keine ungespeicherten Änderungen\",\n moveWindow: ({ title }) => `Fenster ${title} verschieben. Pfeiltasten verwenden; Umschalt für größere Schritte halten.`,\n resizeWindow: \"Fenster skalieren. Pfeiltasten verwenden; Umschalt für größere Schritte halten.\",\n window: \"Fenster\",\n zoomIn: \"Vergrößern\",\n zoomOut: \"Verkleinern\",\n resetZoom: \"Zoom zurücksetzen\",\n openFullscreen: \"Im Vollbild öffnen\",\n zoomPanKeys: \"Mit Plus und Minus zoomen, mit den Pfeiltasten verschieben, mit 0 zurücksetzen, mit F im Vollbild öffnen.\",\n binaryFile: \"Binärdatei\",\n boldShortcut: \"Fett (Strg/Cmd+B)\",\n bulletListShortcut: \"Aufzählung (Strg/Cmd+Umschalt+8)\",\n heading1Shortcut: \"Überschrift 1 (Strg/Cmd+Umschalt+1)\",\n heading2Shortcut: \"Überschrift 2 (Strg/Cmd+Umschalt+2)\",\n heading3Shortcut: \"Überschrift 3 (Strg/Cmd+Umschalt+3)\",\n inlineCodeShortcut: \"Inline-Code (Strg/Cmd+E)\",\n italicShortcut: \"Kursiv (Strg/Cmd+I)\",\n linkShortcut: \"Link (Strg/Cmd+K)\",\n markdownFormatting: \"Markdown-Formatierung\",\n numberedListShortcut: \"Nummerierte Liste (Strg/Cmd+Umschalt+7)\",\n quote: \"Zitat\",\n csvSettings: \"CSV-Vorschau einstellen\",\n csvEncoding: \"Zeichenkodierung\",\n csvSeparator: \"Trennzeichen\",\n csvDefaultSeparator: \"Standard des Dateityps\",\n csvComma: \"Komma\",\n csvSemicolon: \"Semikolon\",\n csvTab: \"Tabulator\",\n csvView: \"Darstellung\",\n csvRaw: \"Rohtext\",\n delimitedFileEmpty: \"Diese Trennzeichen-Datei enthält keine Zeilen.\",\n edit: \"Bearbeiten\",\n emptyFile: \"Leere Datei\",\n failedLoadFile: \"Datei konnte nicht geladen werden\",\n noInlinePreview: \"Für diese Quelle ist keine direkte Vorschau verfügbar.\",\n previewMoreLines: (n: number) => `… ${n} weitere Zeilen`,\n previewColumnsLimited: \"Die ersten 50 Spalten werden angezeigt. Lade die Datei für alle Spalten herunter.\",\n textEditor: \"Texteditor\",\n audioUnsupported: \"Dein Browser unterstützt keine Audiowiedergabe.\",\n videoUnsupported: \"Dein Browser unterstützt keine Videowiedergabe.\",\n yes: \"Ja\",\n },\n },\n});\n\nexport type UiMessages = ReturnType<(typeof uiMessages)[\"resolve\"]>[\"t\"];\n\n/** Generic component chrome owned by @k2b/ui, resolved from the inherited render locale. */\nexport const useUiMessages = (): (() => UiMessages) => {\n const locale = useLocale();\n return () => uiMessages.resolve([locale()]).t;\n};\n\n/** Browser-only imperative UI (for example prompts) inherits the document locale. */\nexport const resolveUiMessages = (locale?: string): UiMessages =>\n uiMessages.resolve([locale ?? (typeof document === \"undefined\" ? uiMessages.baseLocale : document.documentElement.lang)]).t;\n\nexport const checkUiMessages = () => uiMessages.check();\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["intl/messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"./locale\";\n\nconst uiMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n chartView: \"Chart view\",\n chartDiagram: \"Diagram\",\n chartData: \"Table\",\n chartSeries: \"Series visibility\",\n chartOnly: \"Only\",\n chartShowAll: \"Show all\",\n chartShowing: \"Showing\",\n chartSelectedDatum: \"Selected data point\",\n chartReference: \"Reference\",\n chartCurrent: \"Current\",\n chartPinReference: \"Pin as reference\",\n chartRemoveComparison: \"Remove comparison\",\n chartPreviousData: \"The chart and table still show the last loaded filters\",\n chartCopyData: \"Copy data\",\n chartCopyFailed: \"Could not copy data\",\n\n actions: \"Actions\",\n add: \"Add\",\n addTag: \"Add tag\",\n addImage: \"Add image\",\n attachments: \"Attachments\",\n assistant: \"Assistant\",\n avatarLabel: ({ name }: { name: string }) => `${name} avatar`,\n all: \"All\",\n calendar: \"Calendar\",\n clear: \"Clear\",\n clearDate: \"Clear date\",\n clearSelection: \"Clear selection\",\n chooseOption: \"Choose option\",\n close: \"Close\",\n closeDialog: \"close dialog\",\n copied: \"Copied\",\n copy: \"Copy\",\n closeLightbox: \"Close lightbox\",\n couldNotLoadData: \"Could not load this data\",\n datePicker: \"Date picker\",\n dataTable: \"Data table\",\n datePresets: \"Date presets\",\n decreaseValue: \"Decrease value\",\n download: \"Download\",\n downloadAsZip: \"Download as ZIP\",\n downloadImage: \"Download image\",\n dropFiles: \"Drop files or click to choose\",\n dropToUpload: \"Drop to upload\",\n dropdownMenu: \"Dropdown menu\",\n durationPresets: \"Duration presets\",\n filterOptions: \"Filter options\",\n fileTypeNotAccepted: \"File type not accepted\",\n imageLightbox: \"Image lightbox\",\n imageNavigation: \"Image navigation\",\n increaseValue: \"Increase value\",\n loading: \"Loading...\",\n hidePassword: \"Hide password\",\n noColumns: \"No columns.\",\n noData: \"No data.\",\n noRecords: \"No records\",\n noTagsYet: \"No tags yet\",\n noResultsFound: \"No results found\",\n nextImage: \"Next image\",\n noOptions: \"No options available\",\n optionsCouldNotLoad: \"Options could not be loaded\",\n noResults: \"No results\",\n nothingHere: \"Nothing here yet.\",\n nothingToShow: \"Nothing to show.\",\n no: \"No\",\n options: \"Options\",\n pagination: \"Pagination\",\n pageOf: ({ page, total }: { page: number; total: number }) => `Page ${page} of ${total}`,\n pickDate: \"Pick date\",\n previousImage: \"Previous image\",\n previousMonth: \"Previous month\",\n previousPage: \"Previous page\",\n previousYear: \"Previous year\",\n nextMonth: \"Next month\",\n nextPage: \"Next page\",\n nextYear: \"Next year\",\n goToPage: ({ page }: { page: number }) => `Go to page ${page}`,\n retry: \"Retry\",\n refreshing: \"Refreshing\",\n reset: \"Reset\",\n required: \"Required\",\n minCharacters: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n maxCharacters: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n minTags: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n maxTags: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n rename: \"Rename\",\n delete: \"Delete\",\n remove: \"Remove\",\n removeTag: \"Remove tag\",\n search: \"Search...\",\n searchLabel: \"Search\",\n spotlightNoResults: \"No results.\",\n searchFailed: \"Search failed.\",\n searchResults: \"Search results\",\n save: \"Save\",\n saveShortcut: \"Save (Ctrl/Cmd+S)\",\n sectionsLabel: ({ title }: { title: string }) => `${title} sections`,\n searchOptions: \"Search options\",\n select: \"Select...\",\n selectMatchingOption: \"Select a matching option\",\n selectOption: \"Select option\",\n suggestions: \"Suggestions\",\n suggestionsCouldNotLoad: \"Suggestions could not be loaded\",\n showPassword: \"Show password\",\n time: \"Time\",\n timeLabel: ({ label }: { label: string }) => `${label} time`,\n completionSuggestions: \"Completion suggestions\",\n contextMenu: \"Context menu\",\n unknownUser: \"Unknown user\",\n uploading: \"Uploading…\",\n chooseFile: \"Choose file\",\n chooseFiles: \"Choose files\",\n chooseMatchingFile: \"Choose a file that matches this field.\",\n checkingOptions: \"Checking options\",\n checkingOptionsLoading: \"Checking options...\",\n noMatchingOption: \"No matching option found\",\n noOptionsFound: \"No options found\",\n typeToSearch: \"Type to search...\",\n showGridView: \"Show grid view\",\n showListView: \"Show list view\",\n start: \"Start\",\n end: \"End\",\n addFileFolderUpload: \"Add file, folder, or upload\",\n addPane: \"Add pane\",\n addToChat: \"Add to chat\",\n attachFiles: \"Attach files\",\n addGuidance: \"Add guidance...\",\n calendarView: \"Calendar view\",\n openDate: ({ label }: { label: string }) => `Open ${label}`,\n createEventOn: ({ label }: { label: string }) => `Create event on ${label}`,\n hiddenOverlappingEvents: ({ count }: { count: number }) => `${count} hidden overlapping events`,\n calendarEventTime: ({ title, start, end }: { title: string; start: string; end: string }) => `${title}, ${start} to ${end}`,\n today: \"Today\",\n day: \"Day\",\n week: \"Week\",\n weekShort: \"Wk\",\n month: \"Month\",\n year: \"Year\",\n allDay: \"All day\",\n noEvents: \"No events\",\n previous: \"Previous\",\n next: \"Next\",\n moveEvent: \"Move event\",\n resizeEvent: \"Resize event\",\n cancel: \"Cancel\",\n chat: \"Chat\",\n chooseModel: \"Choose model\",\n closeWindow: \"Close window\",\n code: \"Code\",\n codeLabel: ({ title }: { title: string }) => `${title} code`,\n column: ({ number }: { number: number }) => `Column ${number}`,\n commands: \"Commands\",\n dropFilesToAttach: \"Drop files to attach\",\n conversation: \"Conversation\",\n jumpToLatest: \"Jump to latest\",\n conversationMessages: ({ label }: { label: string }) => `${label} messages`,\n dialogTabs: \"Dialog tabs\",\n files: \"Files\",\n chooseFileToPreview: \"Choose a file to preview it.\",\n change: \"Change\",\n changeImage: \"Change image\",\n cropArea: \"Crop area. Use arrow keys to move; hold Shift for larger steps.\",\n cropPreview: \"Crop preview\",\n discardChanges: \"Discard changes\",\n discardUnsavedFile: \"Discard the unsaved changes in this file?\",\n downloadFailed: \"Download failed\",\n failedLoadFiles: \"Failed to load files\",\n failedLoadImage: \"Failed to load image.\",\n folderEmpty: \"This folder is empty.\",\n folderSelected: \"Folder selected\",\n newFile: \"New file\",\n newFileName: \"Name of the new file:\",\n newFolder: \"New folder\",\n newFolderName: \"Name of the new folder:\",\n fileActions: \"File actions\",\n actionsFor: ({ name }: { name: string }) => `Actions for ${name}`,\n fileSaved: \"File saved\",\n pickFileFromTree: \"Pick a file from the tree to view it.\",\n imageProcessingFailed: \"Image could not be processed.\",\n preparingImage: \"Preparing image…\",\n processingImage: \"Processing image\",\n removeImage: \"Remove image\",\n rotateRight: \"Rotate right\",\n selectedImage: \"Selected image\",\n selectFile: \"Select a file\",\n spaceEmpty: \"This space is empty.\",\n uploadFiles: \"Upload files\",\n filterIcons: \"Filter icons\",\n loadEarlier: \"Load earlier\",\n loadingConversation: \"Loading conversation\",\n loadingFiles: \"Loading files...\",\n loadingMessages: \"Loading messages\",\n failed: \"Failed\",\n generating: \"Generating\",\n loadOlderMessages: \"Load older messages\",\n loadingOlderMessages: \"Loading older messages\",\n couldNotLoadOlderMessages: \"Could not load older messages\",\n couldNotLoadEarlierMessages: \"Could not load earlier messages\",\n couldNotPostMessage: \"Could not post message\",\n message: \"Message\",\n messageActions: \"Message actions\",\n messageComposer: \"Message composer\",\n messageInput: \"Message input\",\n confirmation: \"Confirmation\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Type ${phrase} to confirm`,\n confirm: \"Confirm\",\n dialog: \"Dialog\",\n discard: \"Discard\",\n error: \"Error\",\n form: \"Form\",\n filterActions: \"Filter actions\",\n info: \"Info\",\n dismissNotification: \"Dismiss notification\",\n interactiveLineChart: \"Interactive line chart\",\n interactiveChart:\n \"Interactive chart. Use arrow keys to inspect, Enter to select, Escape to dismiss. On maps and timelines use Alt with arrow keys to inspect.\",\n chartFields: ({ key }: { key: string }) => {\n const labels: Record<string, string> = {\n x: \"X\",\n y: \"Y\",\n value: \"Value\",\n percent: \"Share\",\n total: \"Total\",\n from: \"From\",\n to: \"To\",\n upperInclusive: \"Includes upper bound\",\n count: \"Count\",\n q1: \"Lower quartile\",\n q2: \"Median\",\n q3: \"Upper quartile\",\n whiskerLow: \"Lower whisker\",\n whiskerHigh: \"Upper whisker\",\n min: \"Minimum\",\n max: \"Maximum\",\n threshold: \"Threshold\",\n delta: \"Change\",\n latitude: \"Latitude\",\n longitude: \"Longitude\",\n size: \"Size\",\n state: \"State\",\n duration: \"Duration\",\n detail: \"Detail\",\n errY: \"Y error\",\n errYHigh: \"Upper Y error\",\n errYLow: \"Lower Y error\",\n errX: \"X error\",\n errXHigh: \"Upper X error\",\n errXLow: \"Lower X error\",\n };\n return labels[key] ?? key;\n },\n interactiveMap: \"Interactive map\",\n interactiveTimeline: \"Interactive timeline\",\n ok: \"OK\",\n success: \"Success\",\n model: \"Model\",\n input: \"Input\",\n output: \"Output\",\n loopTotal: \"Loop total\",\n remaining: \"Remaining\",\n notConfigured: \"Not configured\",\n unknown: \"Unknown\",\n system: \"System\",\n tool: \"Tool\",\n user: \"User\",\n useColor: \"Use a color\",\n useTransparent: \"Use transparent\",\n series: \"Series\",\n waiting: \"Waiting\",\n templateEditorPlaceholder: \"Write HTML with Liquid values like {{ APP_NAME }}...\",\n templatePreview: \"Template preview\",\n lastRequestContext: \"Last request context\",\n contextWindowUsed: \"Context window used\",\n contextUsageUnavailable: \"Context usage unavailable\",\n contextUsageUnavailableWithWindow: ({ window }: { window: string }) => `Context usage unavailable, ${window} token context window`,\n tokensUsed: ({ total }: { total: string }) => `${total} tokens used`,\n tokensUsedPercent: ({ total, percent }: { total: string; percent: number }) =>\n `${total} tokens used, ${percent}% of the context window`,\n moveDown: \"Move down\",\n moveUp: \"Move up\",\n moveNamedDown: ({ label }: { label: string }) => `Move ${label} down`,\n moveNamedUp: ({ label }: { label: string }) => `Move ${label} up`,\n rowAction: \"Row action\",\n addToNamed: ({ name }: { name: string }) => `Add to ${name}`,\n insertBeforeNamed: ({ name }: { name: string }) => `Insert before ${name}`,\n insertAtEnd: \"Insert at end\",\n addPaneSide: ({ side, name }: { side: \"left\" | \"right\" | \"top\" | \"bottom\"; name: string }) => `Add ${side} of ${name}`,\n discardUnsavedChanges: \"Discard unsaved changes?\",\n unsavedChangesTitle: \"Unsaved changes\",\n tagName: \"Tag name\",\n name: \"Name\",\n color: \"Color\",\n tagCouldNotBeSaved: \"The tag could not be saved.\",\n tagActionFailed: \"The tag action failed.\",\n tagsPlaceholder: \"Tags (e.g. Tag 1, Tag 2,...)\",\n tagsAdded: ({ tags }: { tags: string }) => `Tags added: ${tags}.`,\n tagsRemoved: ({ tags }: { tags: string }) => `Tags removed: ${tags}.`,\n noFiles: \"No files\",\n noLogEntries: \"No log entries found.\",\n noPreview: \"No preview\",\n openPreview: \"Open preview\",\n paneTabs: \"Pane tabs\",\n paneWorkspace: \"Pane workspace\",\n pdfPreview: \"PDF preview\",\n pdfPreviewHttpError: ({ status }: { status: number }) => `PDF preview failed with HTTP ${status}`,\n pdfPreviewTabBlocked: \"The browser blocked the new tab. Allow pop-ups and try again.\",\n pdfPreviewRendering: \"Rendering PDF preview…\",\n pickIcon: \"Pick an icon...\",\n postMessage: \"Post message\",\n preview: \"Preview\",\n previewPdf: \"Preview PDF\",\n renderPdfPreview: \"Render a PDF preview to see the final output.\",\n queueMessage: \"Queue message\",\n queueing: \"Queueing\",\n sending: \"Sending\",\n steering: \"Steering\",\n writeMessage: \"Write a message or type / ...\",\n openInNewTab: ({ name }: { name: string }) => `Open ${name} in a new tab`,\n closeNamed: ({ name }: { name: string }) => `Close ${name}`,\n goToImage: ({ index }: { index: number }) => `Go to image ${index}`,\n pinDigit: ({ index, total }: { index: number; total: number }) => `PIN digit ${index} of ${total}`,\n moreSelected: ({ count }: { count: number }) => `${count} more selected`,\n removeNamed: ({ name }: { name: string }) => `Remove ${name}`,\n resizeCrop: ({ handle }: { handle: string }) => `Resize crop ${handle}`,\n range: \"Range\",\n resizePanes: \"Resize panes\",\n resetMapView: \"Reset map view\",\n resetTimelineView: \"Reset timeline view\",\n retryOlderMessages: \"Retry loading older messages\",\n saveChanges: \"Save changes\",\n saving: \"Saving\",\n sendMessage: \"Send message\",\n startConversation: \"Start a conversation\",\n steerResponse: \"Steer response\",\n stopResponse: \"Stop response\",\n stopping: \"Stopping\",\n unsaved: \"Unsaved\",\n unsavedChangeLabel: ({ count }: { count: number }) => `unsaved ${count === 1 ? \"change\" : \"changes\"}`,\n noUnsavedChanges: \"No unsaved changes\",\n moveWindow: ({ title }: { title: string }) => `Move ${title} window. Use arrow keys; hold Shift for larger steps.`,\n resizeWindow: \"Resize window. Use arrow keys; hold Shift for larger steps.\",\n window: \"Window\",\n zoomIn: \"Zoom in\",\n zoomOut: \"Zoom out\",\n resetZoom: \"Reset zoom\",\n openFullscreen: \"Open fullscreen\",\n zoomPanKeys: \"Zoom with plus and minus, move with the arrow keys, reset with 0, open fullscreen with F.\",\n binaryFile: \"Binary file\",\n boldShortcut: \"Bold (Ctrl/Cmd+B)\",\n bulletListShortcut: \"Bullet list (Ctrl/Cmd+Shift+8)\",\n heading1Shortcut: \"Heading 1 (Ctrl/Cmd+Shift+1)\",\n heading2Shortcut: \"Heading 2 (Ctrl/Cmd+Shift+2)\",\n heading3Shortcut: \"Heading 3 (Ctrl/Cmd+Shift+3)\",\n inlineCodeShortcut: \"Inline code (Ctrl/Cmd+E)\",\n italicShortcut: \"Italic (Ctrl/Cmd+I)\",\n linkShortcut: \"Link (Ctrl/Cmd+K)\",\n markdownFormatting: \"Markdown formatting\",\n numberedListShortcut: \"Numbered list (Ctrl/Cmd+Shift+7)\",\n quote: \"Quote\",\n csvSettings: \"CSV preview settings\",\n csvEncoding: \"Encoding\",\n csvSeparator: \"Separator\",\n csvDefaultSeparator: \"File type default\",\n csvComma: \"Comma\",\n csvSemicolon: \"Semicolon\",\n csvTab: \"Tab\",\n csvView: \"Display\",\n csvRaw: \"Raw text\",\n delimitedFileEmpty: \"This delimited file contains no rows.\",\n edit: \"Edit\",\n emptyFile: \"Empty file\",\n failedLoadFile: \"Failed to load file\",\n noInlinePreview: \"No inline preview available for this source.\",\n previewMoreLines: (n: number) => `… ${n} more lines`,\n previewColumnsLimited: \"Showing the first 50 columns. Download the file for all columns.\",\n textEditor: \"Text editor\",\n audioUnsupported: \"Your browser does not support audio playback.\",\n videoUnsupported: \"Your browser does not support video playback.\",\n yes: \"Yes\",\n },\n de: {\n chartView: \"Diagrammansicht\",\n chartDiagram: \"Diagramm\",\n chartData: \"Tabelle\",\n chartSeries: \"Sichtbare Datenreihen\",\n chartOnly: \"Nur diese\",\n chartShowAll: \"Alle anzeigen\",\n chartShowing: \"Angezeigt\",\n chartSelectedDatum: \"Ausgewählter Datenpunkt\",\n chartReference: \"Vergleich\",\n chartCurrent: \"Aktuell\",\n chartPinReference: \"Als Vergleich merken\",\n chartRemoveComparison: \"Vergleich entfernen\",\n chartPreviousData: \"Diagramm und Tabelle zeigen weiterhin die zuletzt geladenen Filter\",\n chartCopyData: \"Daten kopieren\",\n chartCopyFailed: \"Daten konnten nicht kopiert werden\",\n\n actions: \"Aktionen\",\n add: \"Hinzufügen\",\n addTag: \"Tag hinzufügen\",\n addImage: \"Bild hinzufügen\",\n attachments: \"Anhänge\",\n assistant: \"Assistent\",\n avatarLabel: ({ name }) => `Avatar von ${name}`,\n all: \"Alle\",\n calendar: \"Kalender\",\n clear: \"Leeren\",\n clearDate: \"Datum löschen\",\n clearSelection: \"Auswahl löschen\",\n chooseOption: \"Option auswählen\",\n close: \"Schließen\",\n closeDialog: \"Dialog schließen\",\n copied: \"Kopiert\",\n copy: \"Kopieren\",\n closeLightbox: \"Bildansicht schließen\",\n couldNotLoadData: \"Diese Daten konnten nicht geladen werden\",\n datePicker: \"Datumsauswahl\",\n dataTable: \"Datentabelle\",\n datePresets: \"Datumsvorgaben\",\n decreaseValue: \"Wert verringern\",\n download: \"Herunterladen\",\n downloadAsZip: \"Als ZIP herunterladen\",\n downloadImage: \"Bild herunterladen\",\n dropFiles: \"Dateien ablegen oder zum Auswählen klicken\",\n dropToUpload: \"Zum Hochladen ablegen\",\n dropdownMenu: \"Dropdown-Menü\",\n durationPresets: \"Dauervorgaben\",\n filterOptions: \"Optionen filtern\",\n fileTypeNotAccepted: \"Dateityp wird nicht akzeptiert\",\n imageLightbox: \"Bildansicht\",\n imageNavigation: \"Bildnavigation\",\n increaseValue: \"Wert erhöhen\",\n loading: \"Wird geladen...\",\n hidePassword: \"Passwort ausblenden\",\n noColumns: \"Keine Spalten.\",\n noData: \"Keine Daten.\",\n noRecords: \"Keine Einträge\",\n noTagsYet: \"Noch keine Tags\",\n noResultsFound: \"Keine Ergebnisse gefunden\",\n nextImage: \"Nächstes Bild\",\n noOptions: \"Keine Optionen verfügbar\",\n optionsCouldNotLoad: \"Optionen konnten nicht geladen werden\",\n noResults: \"Keine Ergebnisse\",\n nothingHere: \"Noch nichts vorhanden.\",\n nothingToShow: \"Nichts anzuzeigen.\",\n no: \"Nein\",\n options: \"Optionen\",\n pagination: \"Seitennavigation\",\n pageOf: ({ page, total }) => `Seite ${page} von ${total}`,\n pickDate: \"Datum auswählen\",\n previousImage: \"Vorheriges Bild\",\n previousMonth: \"Vorheriger Monat\",\n previousPage: \"Vorherige Seite\",\n previousYear: \"Vorheriges Jahr\",\n nextMonth: \"Nächster Monat\",\n nextPage: \"Nächste Seite\",\n nextYear: \"Nächstes Jahr\",\n goToPage: ({ page }) => `Zu Seite ${page}`,\n retry: \"Erneut versuchen\",\n refreshing: \"Wird aktualisiert\",\n reset: \"Zurücksetzen\",\n required: \"Erforderlich\",\n minCharacters: ({ count }) => `Mindestens ${count} Zeichen`,\n maxCharacters: ({ count }) => `Höchstens ${count} Zeichen`,\n minTags: ({ count }) => `Mindestens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n maxTags: ({ count }) => `Höchstens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n rename: \"Umbenennen\",\n delete: \"Löschen\",\n remove: \"Entfernen\",\n removeTag: \"Tag entfernen\",\n search: \"Suchen...\",\n searchLabel: \"Suchen\",\n spotlightNoResults: \"Keine Ergebnisse.\",\n searchFailed: \"Suche fehlgeschlagen.\",\n searchResults: \"Suchergebnisse\",\n save: \"Speichern\",\n saveShortcut: \"Speichern (Strg/Cmd+S)\",\n sectionsLabel: ({ title }) => `Bereiche von ${title}`,\n searchOptions: \"Optionen durchsuchen\",\n select: \"Auswählen...\",\n selectMatchingOption: \"Eine passende Option auswählen\",\n selectOption: \"Option auswählen\",\n suggestions: \"Vorschläge\",\n suggestionsCouldNotLoad: \"Vorschläge konnten nicht geladen werden\",\n showPassword: \"Passwort anzeigen\",\n time: \"Uhrzeit\",\n timeLabel: ({ label }) => `${label}zeit`,\n completionSuggestions: \"Vervollständigungsvorschläge\",\n contextMenu: \"Kontextmenü\",\n unknownUser: \"Unbekannte Person\",\n uploading: \"Wird hochgeladen…\",\n chooseFile: \"Datei auswählen\",\n chooseFiles: \"Dateien auswählen\",\n chooseMatchingFile: \"Wähle eine zu diesem Feld passende Datei aus.\",\n checkingOptions: \"Optionen werden geprüft\",\n checkingOptionsLoading: \"Optionen werden geprüft...\",\n noMatchingOption: \"Keine passende Option gefunden\",\n noOptionsFound: \"Keine Optionen gefunden\",\n typeToSearch: \"Zum Suchen tippen...\",\n showGridView: \"Rasteransicht anzeigen\",\n showListView: \"Listenansicht anzeigen\",\n start: \"Beginn\",\n end: \"Ende\",\n addFileFolderUpload: \"Datei oder Ordner hinzufügen oder hochladen\",\n addPane: \"Bereich hinzufügen\",\n addToChat: \"Zum Chat hinzufügen\",\n attachFiles: \"Dateien anhängen\",\n addGuidance: \"Hinweis hinzufügen...\",\n calendarView: \"Kalenderansicht\",\n openDate: ({ label }) => `${label} öffnen`,\n createEventOn: ({ label }) => `Termin am ${label} erstellen`,\n hiddenOverlappingEvents: ({ count }) => `${count} ausgeblendete überlappende Termine`,\n calendarEventTime: ({ title, start, end }) => `${title}, ${start} bis ${end}`,\n today: \"Heute\",\n day: \"Tag\",\n week: \"Woche\",\n weekShort: \"KW\",\n month: \"Monat\",\n year: \"Jahr\",\n allDay: \"Ganztägig\",\n noEvents: \"Keine Termine\",\n previous: \"Zurück\",\n next: \"Weiter\",\n moveEvent: \"Termin verschieben\",\n resizeEvent: \"Termindauer ändern\",\n cancel: \"Abbrechen\",\n chat: \"Chat\",\n chooseModel: \"Modell auswählen\",\n closeWindow: \"Fenster schließen\",\n code: \"Code\",\n codeLabel: ({ title }) => `Code von ${title}`,\n column: ({ number }) => `Spalte ${number}`,\n commands: \"Befehle\",\n dropFilesToAttach: \"Dateien zum Anhängen ablegen\",\n conversation: \"Unterhaltung\",\n jumpToLatest: \"Zur neuesten Nachricht\",\n conversationMessages: ({ label }) => `Nachrichten in ${label}`,\n dialogTabs: \"Dialog-Tabs\",\n files: \"Dateien\",\n chooseFileToPreview: \"Wähle eine Datei für die Vorschau aus.\",\n change: \"Ändern\",\n changeImage: \"Bild ändern\",\n cropArea: \"Zuschneidebereich. Mit Pfeiltasten verschieben; Umschalt für größere Schritte halten.\",\n cropPreview: \"Zuschneidevorschau\",\n discardChanges: \"Änderungen verwerfen\",\n discardUnsavedFile: \"Ungespeicherte Änderungen an dieser Datei verwerfen?\",\n downloadFailed: \"Download fehlgeschlagen\",\n failedLoadFiles: \"Dateien konnten nicht geladen werden\",\n failedLoadImage: \"Bild konnte nicht geladen werden.\",\n folderEmpty: \"Dieser Ordner ist leer.\",\n folderSelected: \"Ordner ausgewählt\",\n newFile: \"Neue Datei\",\n newFileName: \"Name der neuen Datei:\",\n newFolder: \"Neuer Ordner\",\n newFolderName: \"Name des neuen Ordners:\",\n fileActions: \"Dateiaktionen\",\n actionsFor: ({ name }) => `Aktionen für ${name}`,\n fileSaved: \"Datei gespeichert\",\n pickFileFromTree: \"Wähle im Dateibaum eine Datei aus.\",\n imageProcessingFailed: \"Bild konnte nicht verarbeitet werden.\",\n preparingImage: \"Bild wird vorbereitet…\",\n processingImage: \"Bild wird verarbeitet\",\n removeImage: \"Bild entfernen\",\n rotateRight: \"Nach rechts drehen\",\n selectedImage: \"Ausgewähltes Bild\",\n selectFile: \"Datei auswählen\",\n spaceEmpty: \"Dieser Bereich ist leer.\",\n uploadFiles: \"Dateien hochladen\",\n filterIcons: \"Symbole filtern\",\n loadEarlier: \"Ältere laden\",\n loadingConversation: \"Unterhaltung wird geladen\",\n loadingFiles: \"Dateien werden geladen...\",\n loadingMessages: \"Nachrichten werden geladen\",\n failed: \"Fehlgeschlagen\",\n generating: \"Wird generiert\",\n loadOlderMessages: \"Ältere Nachrichten laden\",\n loadingOlderMessages: \"Ältere Nachrichten werden geladen\",\n couldNotLoadOlderMessages: \"Ältere Nachrichten konnten nicht geladen werden\",\n couldNotLoadEarlierMessages: \"Ältere Nachrichten konnten nicht geladen werden\",\n couldNotPostMessage: \"Nachricht konnte nicht gepostet werden\",\n message: \"Nachricht\",\n messageActions: \"Nachrichtenaktionen\",\n messageComposer: \"Nachricht verfassen\",\n messageInput: \"Nachrichteneingabe\",\n confirmation: \"Bestätigung\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Gib ${phrase} zur Bestätigung ein`,\n confirm: \"Bestätigen\",\n dialog: \"Dialog\",\n discard: \"Verwerfen\",\n error: \"Fehler\",\n form: \"Formular\",\n filterActions: \"Filteraktionen\",\n info: \"Information\",\n dismissNotification: \"Benachrichtigung schließen\",\n interactiveLineChart: \"Interaktives Liniendiagramm\",\n interactiveChart:\n \"Interaktives Diagramm. Pfeiltasten zum Erkunden, Enter zum Auswählen, Escape zum Schließen. In Karten und Zeitleisten Alt mit Pfeiltasten zum Erkunden.\",\n chartFields: ({ key }: { key: string }) => {\n const labels: Record<string, string> = {\n x: \"X\",\n y: \"Y\",\n value: \"Wert\",\n percent: \"Anteil\",\n total: \"Gesamt\",\n from: \"Von\",\n to: \"Bis\",\n upperInclusive: \"Obergrenze enthalten\",\n count: \"Anzahl\",\n q1: \"Unteres Quartil\",\n q2: \"Median\",\n q3: \"Oberes Quartil\",\n whiskerLow: \"Unterer Whisker\",\n whiskerHigh: \"Oberer Whisker\",\n min: \"Minimum\",\n max: \"Maximum\",\n threshold: \"Schwellenwert\",\n delta: \"Änderung\",\n latitude: \"Breitengrad\",\n longitude: \"Längengrad\",\n size: \"Größe\",\n state: \"Zustand\",\n duration: \"Dauer\",\n detail: \"Details\",\n errY: \"Y-Fehler\",\n errYHigh: \"Oberer Y-Fehler\",\n errYLow: \"Unterer Y-Fehler\",\n errX: \"X-Fehler\",\n errXHigh: \"Oberer X-Fehler\",\n errXLow: \"Unterer X-Fehler\",\n };\n return labels[key] ?? key;\n },\n interactiveMap: \"Interaktive Karte\",\n interactiveTimeline: \"Interaktive Zeitachse\",\n ok: \"OK\",\n success: \"Erfolg\",\n model: \"Modell\",\n input: \"Eingabe\",\n output: \"Ausgabe\",\n loopTotal: \"Schleife gesamt\",\n remaining: \"Verbleibend\",\n notConfigured: \"Nicht konfiguriert\",\n unknown: \"Unbekannt\",\n system: \"System\",\n tool: \"Werkzeug\",\n user: \"Benutzer\",\n useColor: \"Farbe verwenden\",\n useTransparent: \"Transparent verwenden\",\n series: \"Datenreihe\",\n waiting: \"Wartet\",\n templateEditorPlaceholder: \"HTML mit Liquid-Werten wie {{ APP_NAME }} schreiben...\",\n templatePreview: \"Vorlagenvorschau\",\n lastRequestContext: \"Kontext der letzten Anfrage\",\n contextWindowUsed: \"Kontextfenster verwendet\",\n contextUsageUnavailable: \"Kontextnutzung nicht verfügbar\",\n contextUsageUnavailableWithWindow: ({ window }) => `Kontextnutzung nicht verfügbar, Kontextfenster mit ${window} Token`,\n tokensUsed: ({ total }) => `${total} Token verwendet`,\n tokensUsedPercent: ({ total, percent }) => `${total} Token verwendet, ${percent}% des Kontextfensters`,\n moveDown: \"Nach unten\",\n moveUp: \"Nach oben\",\n moveNamedDown: ({ label }) => `${label} nach unten verschieben`,\n moveNamedUp: ({ label }) => `${label} nach oben verschieben`,\n rowAction: \"Zeilenaktion\",\n addToNamed: ({ name }) => `Zu ${name} hinzufügen`,\n insertBeforeNamed: ({ name }) => `Vor ${name} einfügen`,\n insertAtEnd: \"Am Ende einfügen\",\n addPaneSide: ({ side, name }) =>\n `${side === \"left\" ? \"Links\" : side === \"right\" ? \"Rechts\" : side === \"top\" ? \"Oberhalb\" : \"Unterhalb\"} von ${name} hinzufügen`,\n discardUnsavedChanges: \"Ungespeicherte Änderungen verwerfen?\",\n unsavedChangesTitle: \"Ungespeicherte Änderungen\",\n tagName: \"Tag-Name\",\n name: \"Name\",\n color: \"Farbe\",\n tagCouldNotBeSaved: \"Der Tag konnte nicht gespeichert werden.\",\n tagActionFailed: \"Die Tag-Aktion ist fehlgeschlagen.\",\n tagsPlaceholder: \"Tags (z. B. Tag 1, Tag 2, …)\",\n tagsAdded: ({ tags }) => `Tags hinzugefügt: ${tags}.`,\n tagsRemoved: ({ tags }) => `Tags entfernt: ${tags}.`,\n noFiles: \"Keine Dateien\",\n noLogEntries: \"Keine Logeinträge gefunden.\",\n noPreview: \"Keine Vorschau\",\n openPreview: \"Vorschau öffnen\",\n paneTabs: \"Bereichs-Tabs\",\n paneWorkspace: \"Arbeitsbereich\",\n pdfPreview: \"PDF-Vorschau\",\n pdfPreviewHttpError: ({ status }) => `PDF-Vorschau ist mit HTTP ${status} fehlgeschlagen`,\n pdfPreviewTabBlocked: \"Der Browser hat den neuen Tab blockiert. Erlaube Pop-ups und versuche es erneut.\",\n pdfPreviewRendering: \"PDF-Vorschau wird erstellt…\",\n pickIcon: \"Symbol auswählen...\",\n postMessage: \"Nachricht posten\",\n preview: \"Vorschau\",\n previewPdf: \"PDF anzeigen\",\n renderPdfPreview: \"Erzeuge eine PDF-Vorschau, um das Endergebnis zu sehen.\",\n queueMessage: \"Nachricht einreihen\",\n queueing: \"Wird eingereiht\",\n sending: \"Wird gesendet\",\n steering: \"Wird gesteuert\",\n writeMessage: \"Nachricht schreiben oder / eingeben ...\",\n openInNewTab: ({ name }) => `${name} in neuem Tab öffnen`,\n closeNamed: ({ name }) => `${name} schließen`,\n goToImage: ({ index }) => `Zu Bild ${index} wechseln`,\n pinDigit: ({ index, total }) => `PIN-Ziffer ${index} von ${total}`,\n moreSelected: ({ count }) => `${count} weitere ${count === 1 ? \"Option\" : \"Optionen\"} ausgewählt`,\n removeNamed: ({ name }) => `${name} entfernen`,\n resizeCrop: ({ handle }) => `Zuschneidebereich am Griff ${handle} skalieren`,\n range: \"Zeitraum\",\n resizePanes: \"Bereiche skalieren\",\n resetMapView: \"Kartenansicht zurücksetzen\",\n resetTimelineView: \"Zeitachsenansicht zurücksetzen\",\n retryOlderMessages: \"Ältere Nachrichten erneut laden\",\n saveChanges: \"Änderungen speichern\",\n saving: \"Wird gespeichert\",\n sendMessage: \"Nachricht senden\",\n startConversation: \"Unterhaltung beginnen\",\n steerResponse: \"Antwort steuern\",\n stopResponse: \"Antwort stoppen\",\n stopping: \"Wird gestoppt\",\n unsaved: \"Ungespeichert\",\n unsavedChangeLabel: ({ count }) => `ungespeicherte ${count === 1 ? \"Änderung\" : \"Änderungen\"}`,\n noUnsavedChanges: \"Keine ungespeicherten Änderungen\",\n moveWindow: ({ title }) => `Fenster ${title} verschieben. Pfeiltasten verwenden; Umschalt für größere Schritte halten.`,\n resizeWindow: \"Fenster skalieren. Pfeiltasten verwenden; Umschalt für größere Schritte halten.\",\n window: \"Fenster\",\n zoomIn: \"Vergrößern\",\n zoomOut: \"Verkleinern\",\n resetZoom: \"Zoom zurücksetzen\",\n openFullscreen: \"Im Vollbild öffnen\",\n zoomPanKeys: \"Mit Plus und Minus zoomen, mit den Pfeiltasten verschieben, mit 0 zurücksetzen, mit F im Vollbild öffnen.\",\n binaryFile: \"Binärdatei\",\n boldShortcut: \"Fett (Strg/Cmd+B)\",\n bulletListShortcut: \"Aufzählung (Strg/Cmd+Umschalt+8)\",\n heading1Shortcut: \"Überschrift 1 (Strg/Cmd+Umschalt+1)\",\n heading2Shortcut: \"Überschrift 2 (Strg/Cmd+Umschalt+2)\",\n heading3Shortcut: \"Überschrift 3 (Strg/Cmd+Umschalt+3)\",\n inlineCodeShortcut: \"Inline-Code (Strg/Cmd+E)\",\n italicShortcut: \"Kursiv (Strg/Cmd+I)\",\n linkShortcut: \"Link (Strg/Cmd+K)\",\n markdownFormatting: \"Markdown-Formatierung\",\n numberedListShortcut: \"Nummerierte Liste (Strg/Cmd+Umschalt+7)\",\n quote: \"Zitat\",\n csvSettings: \"CSV-Vorschau einstellen\",\n csvEncoding: \"Zeichenkodierung\",\n csvSeparator: \"Trennzeichen\",\n csvDefaultSeparator: \"Standard des Dateityps\",\n csvComma: \"Komma\",\n csvSemicolon: \"Semikolon\",\n csvTab: \"Tabulator\",\n csvView: \"Darstellung\",\n csvRaw: \"Rohtext\",\n delimitedFileEmpty: \"Diese Trennzeichen-Datei enthält keine Zeilen.\",\n edit: \"Bearbeiten\",\n emptyFile: \"Leere Datei\",\n failedLoadFile: \"Datei konnte nicht geladen werden\",\n noInlinePreview: \"Für diese Quelle ist keine direkte Vorschau verfügbar.\",\n previewMoreLines: (n: number) => `… ${n} weitere Zeilen`,\n previewColumnsLimited: \"Die ersten 50 Spalten werden angezeigt. Lade die Datei für alle Spalten herunter.\",\n textEditor: \"Texteditor\",\n audioUnsupported: \"Dein Browser unterstützt keine Audiowiedergabe.\",\n videoUnsupported: \"Dein Browser unterstützt keine Videowiedergabe.\",\n yes: \"Ja\",\n },\n },\n});\n\nexport type UiMessages = ReturnType<(typeof uiMessages)[\"resolve\"]>[\"t\"];\n\n/** Generic component chrome owned by @k2b/ui, resolved from the inherited render locale. */\nexport const useUiMessages = (): (() => UiMessages) => {\n const locale = useLocale();\n return () => uiMessages.resolve([locale()]).t;\n};\n\n/** Browser-only imperative UI (for example prompts) inherits the document locale. */\nexport const resolveUiMessages = (locale?: string): UiMessages =>\n uiMessages.resolve([locale ?? (typeof document === \"undefined\" ? uiMessages.baseLocale : document.documentElement.lang)]).t;\n\nexport const checkUiMessages = () => uiMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,UAAU;AAEpC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;EAC7B,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,SAAS,EAAE,YAAY;MACvB,YAAY,EAAE,SAAS;MACvB,SAAS,EAAE,OAAO;MAClB,WAAW,EAAE,mBAAmB;MAChC,SAAS,EAAE,MAAM;MACjB,YAAY,EAAE,UAAU;MACxB,YAAY,EAAE,SAAS;MACvB,kBAAkB,EAAE,qBAAqB;MACzC,cAAc,EAAE,WAAW;MAC3B,YAAY,EAAE,SAAS;MACvB,iBAAiB,EAAE,kBAAkB;MACrC,qBAAqB,EAAE,mBAAmB;MAC1C,iBAAiB,EAAE,wDAAwD;MAC3E,aAAa,EAAE,WAAW;MAC1B,eAAe,EAAE,qBAAqB;MAEtC,OAAO,EAAE,SAAS;MAClB,GAAG,EAAE,KAAK;MACV,MAAM,EAAE,SAAS;MACjB,QAAQ,EAAE,WAAW;MACrB,WAAW,EAAE,aAAa;MAC1B,SAAS,EAAE,WAAW;MACtB,WAAW,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,GAAG,IAAI,SAAS;MAC7D,GAAG,EAAE,KAAK;MACV,QAAQ,EAAE,UAAU;MACpB,KAAK,EAAE,OAAO;MACd,SAAS,EAAE,YAAY;MACvB,cAAc,EAAE,iBAAiB;MACjC,YAAY,EAAE,eAAe;MAC7B,KAAK,EAAE,OAAO;MACd,WAAW,EAAE,cAAc;MAC3B,MAAM,EAAE,QAAQ;MAChB,IAAI,EAAE,MAAM;MACZ,aAAa,EAAE,gBAAgB;MAC/B,gBAAgB,EAAE,0BAA0B;MAC5C,UAAU,EAAE,aAAa;MACzB,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,cAAc;MAC3B,aAAa,EAAE,gBAAgB;MAC/B,QAAQ,EAAE,UAAU;MACpB,aAAa,EAAE,iBAAiB;MAChC,aAAa,EAAE,gBAAgB;MAC/B,SAAS,EAAE,+BAA+B;MAC1C,YAAY,EAAE,gBAAgB;MAC9B,YAAY,EAAE,eAAe;MAC7B,eAAe,EAAE,kBAAkB;MACnC,aAAa,EAAE,gBAAgB;MAC/B,mBAAmB,EAAE,wBAAwB;MAC7C,aAAa,EAAE,gBAAgB;MAC/B,eAAe,EAAE,kBAAkB;MACnC,aAAa,EAAE,gBAAgB;MAC/B,OAAO,EAAE,YAAY;MACrB,YAAY,EAAE,eAAe;MAC7B,SAAS,EAAE,aAAa;MACxB,MAAM,EAAE,UAAU;MAClB,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,aAAa;MACxB,cAAc,EAAE,kBAAkB;MAClC,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,sBAAsB;MACjC,mBAAmB,EAAE,6BAA6B;MAClD,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,mBAAmB;MAChC,aAAa,EAAE,kBAAkB;MACjC,EAAE,EAAE,IAAI;MACR,OAAO,EAAE,SAAS;MAClB,UAAU,EAAE,YAAY;MACxB,MAAM,EAAE,CAAC;QAAE,IAAI;QAAE;MAAuC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE;MACxF,QAAQ,EAAE,WAAW;MACrB,aAAa,EAAE,gBAAgB;MAC/B,aAAa,EAAE,gBAAgB;MAC/B,YAAY,EAAE,eAAe;MAC7B,YAAY,EAAE,eAAe;MAC7B,SAAS,EAAE,YAAY;MACvB,QAAQ,EAAE,WAAW;MACrB,QAAQ,EAAE,WAAW;MACrB,QAAQ,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,cAAc,IAAI,EAAE;MAC9D,KAAK,EAAE,OAAO;MACd,UAAU,EAAE,YAAY;MACxB,KAAK,EAAE,OAAO;MACd,QAAQ,EAAE,UAAU;MACpB,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,YAAY,EAAE;MAChH,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,YAAY,EAAE;MAC/G,OAAO,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC9F,OAAO,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC7F,MAAM,EAAE,QAAQ;MAChB,MAAM,EAAE,QAAQ;MAChB,MAAM,EAAE,QAAQ;MAChB,SAAS,EAAE,YAAY;MACvB,MAAM,EAAE,WAAW;MACnB,WAAW,EAAE,QAAQ;MACrB,kBAAkB,EAAE,aAAa;MACjC,YAAY,EAAE,gBAAgB;MAC9B,aAAa,EAAE,gBAAgB;MAC/B,IAAI,EAAE,MAAM;MACZ,YAAY,EAAE,mBAAmB;MACjC,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,WAAW;MACpE,aAAa,EAAE,gBAAgB;MAC/B,MAAM,EAAE,WAAW;MACnB,oBAAoB,EAAE,0BAA0B;MAChD,YAAY,EAAE,eAAe;MAC7B,WAAW,EAAE,aAAa;MAC1B,uBAAuB,EAAE,iCAAiC;MAC1D,YAAY,EAAE,eAAe;MAC7B,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,OAAO;MAC5D,qBAAqB,EAAE,wBAAwB;MAC/C,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,SAAS,EAAE,YAAY;MACvB,UAAU,EAAE,aAAa;MACzB,WAAW,EAAE,cAAc;MAC3B,kBAAkB,EAAE,wCAAwC;MAC5D,eAAe,EAAE,kBAAkB;MACnC,sBAAsB,EAAE,qBAAqB;MAC7C,gBAAgB,EAAE,0BAA0B;MAC5C,cAAc,EAAE,kBAAkB;MAClC,YAAY,EAAE,mBAAmB;MACjC,YAAY,EAAE,gBAAgB;MAC9B,YAAY,EAAE,gBAAgB;MAC9B,KAAK,EAAE,OAAO;MACd,GAAG,EAAE,KAAK;MACV,mBAAmB,EAAE,6BAA6B;MAClD,OAAO,EAAE,UAAU;MACnB,SAAS,EAAE,aAAa;MACxB,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,eAAe;MAC7B,QAAQ,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,EAAE;MAC3D,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,mBAAmB,KAAK,EAAE;MAC3E,uBAAuB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,4BAA4B;MAC/F,iBAAiB,EAAE,CAAC;QAAE,KAAK;QAAE,KAAK;QAAE;MAAmD,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,OAAO,GAAG,EAAE;MAC3H,KAAK,EAAE,OAAO;MACd,GAAG,EAAE,KAAK;MACV,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,OAAO;MACd,IAAI,EAAE,MAAM;MACZ,MAAM,EAAE,SAAS;MACjB,QAAQ,EAAE,WAAW;MACrB,QAAQ,EAAE,UAAU;MACpB,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,cAAc;MAC3B,MAAM,EAAE,QAAQ;MAChB,IAAI,EAAE,MAAM;MACZ,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,OAAO;MAC5D,MAAM,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,UAAU,MAAM,EAAE;MAC9D,QAAQ,EAAE,UAAU;MACpB,iBAAiB,EAAE,sBAAsB;MACzC,YAAY,EAAE,cAAc;MAC5B,YAAY,EAAE,gBAAgB;MAC9B,oBAAoB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,WAAW;MAC3E,UAAU,EAAE,aAAa;MACzB,KAAK,EAAE,OAAO;MACd,mBAAmB,EAAE,8BAA8B;MACnD,MAAM,EAAE,QAAQ;MAChB,WAAW,EAAE,cAAc;MAC3B,QAAQ,EAAE,iEAAiE;MAC3E,WAAW,EAAE,cAAc;MAC3B,cAAc,EAAE,iBAAiB;MACjC,kBAAkB,EAAE,2CAA2C;MAC/D,cAAc,EAAE,iBAAiB;MACjC,eAAe,EAAE,sBAAsB;MACvC,eAAe,EAAE,uBAAuB;MACxC,WAAW,EAAE,uBAAuB;MACpC,cAAc,EAAE,iBAAiB;MACjC,OAAO,EAAE,UAAU;MACnB,WAAW,EAAE,uBAAuB;MACpC,SAAS,EAAE,YAAY;MACvB,aAAa,EAAE,yBAAyB;MACxC,WAAW,EAAE,cAAc;MAC3B,UAAU,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,eAAe,IAAI,EAAE;MACjE,SAAS,EAAE,YAAY;MACvB,gBAAgB,EAAE,uCAAuC;MACzD,qBAAqB,EAAE,+BAA+B;MACtD,cAAc,EAAE,kBAAkB;MAClC,eAAe,EAAE,kBAAkB;MACnC,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,aAAa,EAAE,gBAAgB;MAC/B,UAAU,EAAE,eAAe;MAC3B,UAAU,EAAE,sBAAsB;MAClC,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,mBAAmB,EAAE,sBAAsB;MAC3C,YAAY,EAAE,kBAAkB;MAChC,eAAe,EAAE,kBAAkB;MACnC,MAAM,EAAE,QAAQ;MAChB,UAAU,EAAE,YAAY;MACxB,iBAAiB,EAAE,qBAAqB;MACxC,oBAAoB,EAAE,wBAAwB;MAC9C,yBAAyB,EAAE,+BAA+B;MAC1D,2BAA2B,EAAE,iCAAiC;MAC9D,mBAAmB,EAAE,wBAAwB;MAC7C,OAAO,EAAE,SAAS;MAClB,cAAc,EAAE,iBAAiB;MACjC,eAAe,EAAE,kBAAkB;MACnC,YAAY,EAAE,eAAe;MAC7B,YAAY,EAAE,cAAc;MAC5B,aAAa,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,QAAQ,MAAM,aAAa;MAC9E,OAAO,EAAE,SAAS;MAClB,MAAM,EAAE,QAAQ;MAChB,OAAO,EAAE,SAAS;MAClB,KAAK,EAAE,OAAO;MACd,IAAI,EAAE,MAAM;MACZ,aAAa,EAAE,gBAAgB;MAC/B,IAAI,EAAE,MAAM;MACZ,mBAAmB,EAAE,sBAAsB;MAC3C,oBAAoB,EAAE,wBAAwB;MAC9C,gBAAgB,EACd,6IAA6I;MAC/I,WAAW,EAAE,CAAC;QAAE;MAAqB,CAAC,KAAK;QACzC,MAAM,MAA8B,GAAG;UACrC,CAAC,EAAE,GAAG;UACN,CAAC,EAAE,GAAG;UACN,KAAK,EAAE,OAAO;UACd,OAAO,EAAE,OAAO;UAChB,KAAK,EAAE,OAAO;UACd,IAAI,EAAE,MAAM;UACZ,EAAE,EAAE,IAAI;UACR,cAAc,EAAE,sBAAsB;UACtC,KAAK,EAAE,OAAO;UACd,EAAE,EAAE,gBAAgB;UACpB,EAAE,EAAE,QAAQ;UACZ,EAAE,EAAE,gBAAgB;UACpB,UAAU,EAAE,eAAe;UAC3B,WAAW,EAAE,eAAe;UAC5B,GAAG,EAAE,SAAS;UACd,GAAG,EAAE,SAAS;UACd,SAAS,EAAE,WAAW;UACtB,KAAK,EAAE,QAAQ;UACf,QAAQ,EAAE,UAAU;UACpB,SAAS,EAAE,WAAW;UACtB,IAAI,EAAE,MAAM;UACZ,KAAK,EAAE,OAAO;UACd,QAAQ,EAAE,UAAU;UACpB,MAAM,EAAE,QAAQ;UAChB,IAAI,EAAE,SAAS;UACf,QAAQ,EAAE,eAAe;UACzB,OAAO,EAAE,eAAe;UACxB,IAAI,EAAE,SAAS;UACf,QAAQ,EAAE,eAAe;UACzB,OAAO,EAAE;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG;MAC3B,CAAC;MACD,cAAc,EAAE,iBAAiB;MACjC,mBAAmB,EAAE,sBAAsB;MAC3C,EAAE,EAAE,IAAI;MACR,OAAO,EAAE,SAAS;MAClB,KAAK,EAAE,OAAO;MACd,KAAK,EAAE,OAAO;MACd,MAAM,EAAE,QAAQ;MAChB,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,WAAW;MACtB,aAAa,EAAE,gBAAgB;MAC/B,OAAO,EAAE,SAAS;MAClB,MAAM,EAAE,QAAQ;MAChB,IAAI,EAAE,MAAM;MACZ,IAAI,EAAE,MAAM;MACZ,QAAQ,EAAE,aAAa;MACvB,cAAc,EAAE,iBAAiB;MACjC,MAAM,EAAE,QAAQ;MAChB,OAAO,EAAE,SAAS;MAClB,yBAAyB,EAAE,sDAAsD;MACjF,eAAe,EAAE,kBAAkB;MACnC,kBAAkB,EAAE,sBAAsB;MAC1C,iBAAiB,EAAE,qBAAqB;MACxC,uBAAuB,EAAE,2BAA2B;MACpD,iCAAiC,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,8BAA8B,MAAM,uBAAuB;MAClI,UAAU,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,cAAc;MACpE,iBAAiB,EAAE,CAAC;QAAE,KAAK;QAAE;MAA4C,CAAC,KACxE,GAAG,KAAK,iBAAiB,OAAO,yBAAyB;MAC3D,QAAQ,EAAE,WAAW;MACrB,MAAM,EAAE,SAAS;MACjB,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,OAAO;MACrE,WAAW,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,KAAK;MACjE,SAAS,EAAE,YAAY;MACvB,UAAU,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,UAAU,IAAI,EAAE;MAC5D,iBAAiB,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,iBAAiB,IAAI,EAAE;MAC1E,WAAW,EAAE,eAAe;MAC5B,WAAW,EAAE,CAAC;QAAE,IAAI;QAAE;MAAkE,CAAC,KAAK,OAAO,IAAI,OAAO,IAAI,EAAE;MACtH,qBAAqB,EAAE,0BAA0B;MACjD,mBAAmB,EAAE,iBAAiB;MACtC,OAAO,EAAE,UAAU;MACnB,IAAI,EAAE,MAAM;MACZ,KAAK,EAAE,OAAO;MACd,kBAAkB,EAAE,6BAA6B;MACjD,eAAe,EAAE,wBAAwB;MACzC,eAAe,EAAE,8BAA8B;MAC/C,SAAS,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,eAAe,IAAI,GAAG;MACjE,WAAW,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,iBAAiB,IAAI,GAAG;MACrE,OAAO,EAAE,UAAU;MACnB,YAAY,EAAE,uBAAuB;MACrC,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,cAAc;MAC3B,QAAQ,EAAE,WAAW;MACrB,aAAa,EAAE,gBAAgB;MAC/B,UAAU,EAAE,aAAa;MACzB,mBAAmB,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,gCAAgC,MAAM,EAAE;MACjG,oBAAoB,EAAE,+DAA+D;MACrF,mBAAmB,EAAE,wBAAwB;MAC7C,QAAQ,EAAE,iBAAiB;MAC3B,WAAW,EAAE,cAAc;MAC3B,OAAO,EAAE,SAAS;MAClB,UAAU,EAAE,aAAa;MACzB,gBAAgB,EAAE,+CAA+C;MACjE,YAAY,EAAE,eAAe;MAC7B,QAAQ,EAAE,UAAU;MACpB,OAAO,EAAE,SAAS;MAClB,QAAQ,EAAE,UAAU;MACpB,YAAY,EAAE,+BAA+B;MAC7C,YAAY,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,QAAQ,IAAI,eAAe;MACzE,UAAU,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,SAAS,IAAI,EAAE;MAC3D,SAAS,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,eAAe,KAAK,EAAE;MACnE,QAAQ,EAAE,CAAC;QAAE,KAAK;QAAE;MAAwC,CAAC,KAAK,aAAa,KAAK,OAAO,KAAK,EAAE;MAClG,YAAY,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,gBAAgB;MACxE,WAAW,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,UAAU,IAAI,EAAE;MAC7D,UAAU,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,eAAe,MAAM,EAAE;MACvE,KAAK,EAAE,OAAO;MACd,WAAW,EAAE,cAAc;MAC3B,YAAY,EAAE,gBAAgB;MAC9B,iBAAiB,EAAE,qBAAqB;MACxC,kBAAkB,EAAE,8BAA8B;MAClD,WAAW,EAAE,cAAc;MAC3B,MAAM,EAAE,QAAQ;MAChB,WAAW,EAAE,cAAc;MAC3B,iBAAiB,EAAE,sBAAsB;MACzC,aAAa,EAAE,gBAAgB;MAC/B,YAAY,EAAE,eAAe;MAC7B,QAAQ,EAAE,UAAU;MACpB,OAAO,EAAE,SAAS;MAClB,kBAAkB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,KAAK,CAAC,GAAG,QAAQ,GAAG,SAAS,EAAE;MACrG,gBAAgB,EAAE,oBAAoB;MACtC,UAAU,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,uDAAuD;MAClH,YAAY,EAAE,6DAA6D;MAC3E,MAAM,EAAE,QAAQ;MAChB,MAAM,EAAE,SAAS;MACjB,OAAO,EAAE,UAAU;MACnB,SAAS,EAAE,YAAY;MACvB,cAAc,EAAE,iBAAiB;MACjC,WAAW,EAAE,2FAA2F;MACxG,UAAU,EAAE,aAAa;MACzB,YAAY,EAAE,mBAAmB;MACjC,kBAAkB,EAAE,gCAAgC;MACpD,gBAAgB,EAAE,8BAA8B;MAChD,gBAAgB,EAAE,8BAA8B;MAChD,gBAAgB,EAAE,8BAA8B;MAChD,kBAAkB,EAAE,0BAA0B;MAC9C,cAAc,EAAE,qBAAqB;MACrC,YAAY,EAAE,mBAAmB;MACjC,kBAAkB,EAAE,qBAAqB;MACzC,oBAAoB,EAAE,kCAAkC;MACxD,KAAK,EAAE,OAAO;MACd,WAAW,EAAE,sBAAsB;MACnC,WAAW,EAAE,UAAU;MACvB,YAAY,EAAE,WAAW;MACzB,mBAAmB,EAAE,mBAAmB;MACxC,QAAQ,EAAE,OAAO;MACjB,YAAY,EAAE,WAAW;MACzB,MAAM,EAAE,KAAK;MACb,OAAO,EAAE,SAAS;MAClB,MAAM,EAAE,UAAU;MAClB,kBAAkB,EAAE,uCAAuC;MAC3D,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,YAAY;MACvB,cAAc,EAAE,qBAAqB;MACrC,eAAe,EAAE,8CAA8C;MAC/D,gBAAgB,EAAG,CAAS,IAAK,KAAK,CAAC,aAAa;MACpD,qBAAqB,EAAE,kEAAkE;MACzF,UAAU,EAAE,aAAa;MACzB,gBAAgB,EAAE,+CAA+C;MACjE,gBAAgB,EAAE,+CAA+C;MACjE,GAAG,EAAE;IACP,CAAC;IACD,EAAE,EAAE;MACF,SAAS,EAAE,iBAAiB;MAC5B,YAAY,EAAE,UAAU;MACxB,SAAS,EAAE,SAAS;MACpB,WAAW,EAAE,uBAAuB;MACpC,SAAS,EAAE,WAAW;MACtB,YAAY,EAAE,eAAe;MAC7B,YAAY,EAAE,WAAW;MACzB,kBAAkB,EAAE,yBAAyB;MAC7C,cAAc,EAAE,WAAW;MAC3B,YAAY,EAAE,SAAS;MACvB,iBAAiB,EAAE,sBAAsB;MACzC,qBAAqB,EAAE,qBAAqB;MAC5C,iBAAiB,EAAE,oEAAoE;MACvF,aAAa,EAAE,gBAAgB;MAC/B,eAAe,EAAE,oCAAoC;MAErD,OAAO,EAAE,UAAU;MACnB,GAAG,EAAE,YAAY;MACjB,MAAM,EAAE,gBAAgB;MACxB,QAAQ,EAAE,iBAAiB;MAC3B,WAAW,EAAE,SAAS;MACtB,SAAS,EAAE,WAAW;MACtB,WAAW,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,cAAc,IAAI,EAAE;MAC/C,GAAG,EAAE,MAAM;MACX,QAAQ,EAAE,UAAU;MACpB,KAAK,EAAE,QAAQ;MACf,SAAS,EAAE,eAAe;MAC1B,cAAc,EAAE,iBAAiB;MACjC,YAAY,EAAE,kBAAkB;MAChC,KAAK,EAAE,WAAW;MAClB,WAAW,EAAE,kBAAkB;MAC/B,MAAM,EAAE,SAAS;MACjB,IAAI,EAAE,UAAU;MAChB,aAAa,EAAE,uBAAuB;MACtC,gBAAgB,EAAE,0CAA0C;MAC5D,UAAU,EAAE,eAAe;MAC3B,SAAS,EAAE,cAAc;MACzB,WAAW,EAAE,gBAAgB;MAC7B,aAAa,EAAE,iBAAiB;MAChC,QAAQ,EAAE,eAAe;MACzB,aAAa,EAAE,uBAAuB;MACtC,aAAa,EAAE,oBAAoB;MACnC,SAAS,EAAE,4CAA4C;MACvD,YAAY,EAAE,uBAAuB;MACrC,YAAY,EAAE,eAAe;MAC7B,eAAe,EAAE,eAAe;MAChC,aAAa,EAAE,kBAAkB;MACjC,mBAAmB,EAAE,gCAAgC;MACrD,aAAa,EAAE,aAAa;MAC5B,eAAe,EAAE,gBAAgB;MACjC,aAAa,EAAE,cAAc;MAC7B,OAAO,EAAE,iBAAiB;MAC1B,YAAY,EAAE,qBAAqB;MACnC,SAAS,EAAE,gBAAgB;MAC3B,MAAM,EAAE,cAAc;MACtB,SAAS,EAAE,gBAAgB;MAC3B,SAAS,EAAE,iBAAiB;MAC5B,cAAc,EAAE,2BAA2B;MAC3C,SAAS,EAAE,eAAe;MAC1B,SAAS,EAAE,0BAA0B;MACrC,mBAAmB,EAAE,uCAAuC;MAC5D,SAAS,EAAE,kBAAkB;MAC7B,WAAW,EAAE,wBAAwB;MACrC,aAAa,EAAE,oBAAoB;MACnC,EAAE,EAAE,MAAM;MACV,OAAO,EAAE,UAAU;MACnB,UAAU,EAAE,kBAAkB;MAC9B,MAAM,EAAE,CAAC;QAAE,IAAI;QAAE;MAAM,CAAC,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;MACzD,QAAQ,EAAE,iBAAiB;MAC3B,aAAa,EAAE,iBAAiB;MAChC,aAAa,EAAE,kBAAkB;MACjC,YAAY,EAAE,iBAAiB;MAC/B,YAAY,EAAE,iBAAiB;MAC/B,SAAS,EAAE,gBAAgB;MAC3B,QAAQ,EAAE,eAAe;MACzB,QAAQ,EAAE,eAAe;MACzB,QAAQ,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,YAAY,IAAI,EAAE;MAC1C,KAAK,EAAE,kBAAkB;MACzB,UAAU,EAAE,mBAAmB;MAC/B,KAAK,EAAE,cAAc;MACrB,QAAQ,EAAE,cAAc;MACxB,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,UAAU;MAC3D,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,UAAU;MAC1D,OAAO,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC7E,OAAO,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC5E,MAAM,EAAE,YAAY;MACpB,MAAM,EAAE,SAAS;MACjB,MAAM,EAAE,WAAW;MACnB,SAAS,EAAE,eAAe;MAC1B,MAAM,EAAE,WAAW;MACnB,WAAW,EAAE,QAAQ;MACrB,kBAAkB,EAAE,mBAAmB;MACvC,YAAY,EAAE,uBAAuB;MACrC,aAAa,EAAE,gBAAgB;MAC/B,IAAI,EAAE,WAAW;MACjB,YAAY,EAAE,wBAAwB;MACtC,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,gBAAgB,KAAK,EAAE;MACrD,aAAa,EAAE,sBAAsB;MACrC,MAAM,EAAE,cAAc;MACtB,oBAAoB,EAAE,gCAAgC;MACtD,YAAY,EAAE,kBAAkB;MAChC,WAAW,EAAE,YAAY;MACzB,uBAAuB,EAAE,yCAAyC;MAClE,YAAY,EAAE,mBAAmB;MACjC,IAAI,EAAE,SAAS;MACf,SAAS,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,MAAM;MACxC,qBAAqB,EAAE,8BAA8B;MACrD,WAAW,EAAE,aAAa;MAC1B,WAAW,EAAE,mBAAmB;MAChC,SAAS,EAAE,mBAAmB;MAC9B,UAAU,EAAE,iBAAiB;MAC7B,WAAW,EAAE,mBAAmB;MAChC,kBAAkB,EAAE,+CAA+C;MACnE,eAAe,EAAE,yBAAyB;MAC1C,sBAAsB,EAAE,4BAA4B;MACpD,gBAAgB,EAAE,gCAAgC;MAClD,cAAc,EAAE,yBAAyB;MACzC,YAAY,EAAE,sBAAsB;MACpC,YAAY,EAAE,wBAAwB;MACtC,YAAY,EAAE,wBAAwB;MACtC,KAAK,EAAE,QAAQ;MACf,GAAG,EAAE,MAAM;MACX,mBAAmB,EAAE,6CAA6C;MAClE,OAAO,EAAE,oBAAoB;MAC7B,SAAS,EAAE,qBAAqB;MAChC,WAAW,EAAE,kBAAkB;MAC/B,WAAW,EAAE,uBAAuB;MACpC,YAAY,EAAE,iBAAiB;MAC/B,QAAQ,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,SAAS;MAC1C,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,YAAY;MAC5D,uBAAuB,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,qCAAqC;MACrF,iBAAiB,EAAE,CAAC;QAAE,KAAK;QAAE,KAAK;QAAE;MAAI,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,QAAQ,GAAG,EAAE;MAC7E,KAAK,EAAE,OAAO;MACd,GAAG,EAAE,KAAK;MACV,IAAI,EAAE,OAAO;MACb,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,OAAO;MACd,IAAI,EAAE,MAAM;MACZ,MAAM,EAAE,WAAW;MACnB,QAAQ,EAAE,eAAe;MACzB,QAAQ,EAAE,QAAQ;MAClB,IAAI,EAAE,QAAQ;MACd,SAAS,EAAE,oBAAoB;MAC/B,WAAW,EAAE,oBAAoB;MACjC,MAAM,EAAE,WAAW;MACnB,IAAI,EAAE,MAAM;MACZ,WAAW,EAAE,kBAAkB;MAC/B,WAAW,EAAE,mBAAmB;MAChC,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,YAAY,KAAK,EAAE;MAC7C,MAAM,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,UAAU,MAAM,EAAE;MAC1C,QAAQ,EAAE,SAAS;MACnB,iBAAiB,EAAE,8BAA8B;MACjD,YAAY,EAAE,cAAc;MAC5B,YAAY,EAAE,wBAAwB;MACtC,oBAAoB,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,kBAAkB,KAAK,EAAE;MAC9D,UAAU,EAAE,aAAa;MACzB,KAAK,EAAE,SAAS;MAChB,mBAAmB,EAAE,wCAAwC;MAC7D,MAAM,EAAE,QAAQ;MAChB,WAAW,EAAE,aAAa;MAC1B,QAAQ,EAAE,uFAAuF;MACjG,WAAW,EAAE,oBAAoB;MACjC,cAAc,EAAE,sBAAsB;MACtC,kBAAkB,EAAE,sDAAsD;MAC1E,cAAc,EAAE,yBAAyB;MACzC,eAAe,EAAE,sCAAsC;MACvD,eAAe,EAAE,mCAAmC;MACpD,WAAW,EAAE,yBAAyB;MACtC,cAAc,EAAE,mBAAmB;MACnC,OAAO,EAAE,YAAY;MACrB,WAAW,EAAE,uBAAuB;MACpC,SAAS,EAAE,cAAc;MACzB,aAAa,EAAE,yBAAyB;MACxC,WAAW,EAAE,eAAe;MAC5B,UAAU,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,gBAAgB,IAAI,EAAE;MAChD,SAAS,EAAE,mBAAmB;MAC9B,gBAAgB,EAAE,oCAAoC;MACtD,qBAAqB,EAAE,uCAAuC;MAC9D,cAAc,EAAE,wBAAwB;MACxC,eAAe,EAAE,uBAAuB;MACxC,WAAW,EAAE,gBAAgB;MAC7B,WAAW,EAAE,oBAAoB;MACjC,aAAa,EAAE,mBAAmB;MAClC,UAAU,EAAE,iBAAiB;MAC7B,UAAU,EAAE,0BAA0B;MACtC,WAAW,EAAE,mBAAmB;MAChC,WAAW,EAAE,iBAAiB;MAC9B,WAAW,EAAE,cAAc;MAC3B,mBAAmB,EAAE,2BAA2B;MAChD,YAAY,EAAE,2BAA2B;MACzC,eAAe,EAAE,4BAA4B;MAC7C,MAAM,EAAE,gBAAgB;MACxB,UAAU,EAAE,gBAAgB;MAC5B,iBAAiB,EAAE,0BAA0B;MAC7C,oBAAoB,EAAE,mCAAmC;MACzD,yBAAyB,EAAE,iDAAiD;MAC5E,2BAA2B,EAAE,iDAAiD;MAC9E,mBAAmB,EAAE,wCAAwC;MAC7D,OAAO,EAAE,WAAW;MACpB,cAAc,EAAE,qBAAqB;MACrC,eAAe,EAAE,qBAAqB;MACtC,YAAY,EAAE,oBAAoB;MAClC,YAAY,EAAE,aAAa;MAC3B,aAAa,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,OAAO,MAAM,sBAAsB;MACtF,OAAO,EAAE,YAAY;MACrB,MAAM,EAAE,QAAQ;MAChB,OAAO,EAAE,WAAW;MACpB,KAAK,EAAE,QAAQ;MACf,IAAI,EAAE,UAAU;MAChB,aAAa,EAAE,gBAAgB;MAC/B,IAAI,EAAE,aAAa;MACnB,mBAAmB,EAAE,4BAA4B;MACjD,oBAAoB,EAAE,6BAA6B;MACnD,gBAAgB,EACd,yJAAyJ;MAC3J,WAAW,EAAE,CAAC;QAAE;MAAqB,CAAC,KAAK;QACzC,MAAM,MAA8B,GAAG;UACrC,CAAC,EAAE,GAAG;UACN,CAAC,EAAE,GAAG;UACN,KAAK,EAAE,MAAM;UACb,OAAO,EAAE,QAAQ;UACjB,KAAK,EAAE,QAAQ;UACf,IAAI,EAAE,KAAK;UACX,EAAE,EAAE,KAAK;UACT,cAAc,EAAE,sBAAsB;UACtC,KAAK,EAAE,QAAQ;UACf,EAAE,EAAE,iBAAiB;UACrB,EAAE,EAAE,QAAQ;UACZ,EAAE,EAAE,gBAAgB;UACpB,UAAU,EAAE,iBAAiB;UAC7B,WAAW,EAAE,gBAAgB;UAC7B,GAAG,EAAE,SAAS;UACd,GAAG,EAAE,SAAS;UACd,SAAS,EAAE,eAAe;UAC1B,KAAK,EAAE,UAAU;UACjB,QAAQ,EAAE,aAAa;UACvB,SAAS,EAAE,YAAY;UACvB,IAAI,EAAE,OAAO;UACb,KAAK,EAAE,SAAS;UAChB,QAAQ,EAAE,OAAO;UACjB,MAAM,EAAE,SAAS;UACjB,IAAI,EAAE,UAAU;UAChB,QAAQ,EAAE,iBAAiB;UAC3B,OAAO,EAAE,kBAAkB;UAC3B,IAAI,EAAE,UAAU;UAChB,QAAQ,EAAE,iBAAiB;UAC3B,OAAO,EAAE;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG;MAC3B,CAAC;MACD,cAAc,EAAE,mBAAmB;MACnC,mBAAmB,EAAE,uBAAuB;MAC5C,EAAE,EAAE,IAAI;MACR,OAAO,EAAE,QAAQ;MACjB,KAAK,EAAE,QAAQ;MACf,KAAK,EAAE,SAAS;MAChB,MAAM,EAAE,SAAS;MACjB,SAAS,EAAE,iBAAiB;MAC5B,SAAS,EAAE,aAAa;MACxB,aAAa,EAAE,oBAAoB;MACnC,OAAO,EAAE,WAAW;MACpB,MAAM,EAAE,QAAQ;MAChB,IAAI,EAAE,UAAU;MAChB,IAAI,EAAE,UAAU;MAChB,QAAQ,EAAE,iBAAiB;MAC3B,cAAc,EAAE,uBAAuB;MACvC,MAAM,EAAE,YAAY;MACpB,OAAO,EAAE,QAAQ;MACjB,yBAAyB,EAAE,wDAAwD;MACnF,eAAe,EAAE,kBAAkB;MACnC,kBAAkB,EAAE,6BAA6B;MACjD,iBAAiB,EAAE,0BAA0B;MAC7C,uBAAuB,EAAE,gCAAgC;MACzD,iCAAiC,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,sDAAsD,MAAM,QAAQ;MACvH,UAAU,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,kBAAkB;MACrD,iBAAiB,EAAE,CAAC;QAAE,KAAK;QAAE;MAAQ,CAAC,KAAK,GAAG,KAAK,qBAAqB,OAAO,uBAAuB;MACtG,QAAQ,EAAE,YAAY;MACtB,MAAM,EAAE,WAAW;MACnB,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,yBAAyB;MAC/D,WAAW,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,wBAAwB;MAC5D,SAAS,EAAE,cAAc;MACzB,UAAU,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,MAAM,IAAI,aAAa;MACjD,iBAAiB,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,OAAO,IAAI,WAAW;MACvD,WAAW,EAAE,kBAAkB;MAC/B,WAAW,EAAE,CAAC;QAAE,IAAI;QAAE;MAAK,CAAC,KAC1B,GAAG,IAAI,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI,KAAK,OAAO,GAAG,QAAQ,GAAG,IAAI,KAAK,KAAK,GAAG,UAAU,GAAG,WAAW,QAAQ,IAAI,aAAa;MACjI,qBAAqB,EAAE,sCAAsC;MAC7D,mBAAmB,EAAE,2BAA2B;MAChD,OAAO,EAAE,UAAU;MACnB,IAAI,EAAE,MAAM;MACZ,KAAK,EAAE,OAAO;MACd,kBAAkB,EAAE,0CAA0C;MAC9D,eAAe,EAAE,oCAAoC;MACrD,eAAe,EAAE,8BAA8B;MAC/C,SAAS,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,qBAAqB,IAAI,GAAG;MACrD,WAAW,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,kBAAkB,IAAI,GAAG;MACpD,OAAO,EAAE,eAAe;MACxB,YAAY,EAAE,6BAA6B;MAC3C,SAAS,EAAE,gBAAgB;MAC3B,WAAW,EAAE,iBAAiB;MAC9B,QAAQ,EAAE,eAAe;MACzB,aAAa,EAAE,gBAAgB;MAC/B,UAAU,EAAE,cAAc;MAC1B,mBAAmB,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,6BAA6B,MAAM,iBAAiB;MACzF,oBAAoB,EAAE,kFAAkF;MACxG,mBAAmB,EAAE,6BAA6B;MAClD,QAAQ,EAAE,qBAAqB;MAC/B,WAAW,EAAE,kBAAkB;MAC/B,OAAO,EAAE,UAAU;MACnB,UAAU,EAAE,cAAc;MAC1B,gBAAgB,EAAE,yDAAyD;MAC3E,YAAY,EAAE,qBAAqB;MACnC,QAAQ,EAAE,iBAAiB;MAC3B,OAAO,EAAE,eAAe;MACxB,QAAQ,EAAE,gBAAgB;MAC1B,YAAY,EAAE,yCAAyC;MACvD,YAAY,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,GAAG,IAAI,sBAAsB;MACzD,UAAU,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,GAAG,IAAI,YAAY;MAC7C,SAAS,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,WAAW,KAAK,WAAW;MACrD,QAAQ,EAAE,CAAC;QAAE,KAAK;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,QAAQ,KAAK,EAAE;MAClE,YAAY,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,KAAK,CAAC,GAAG,QAAQ,GAAG,UAAU,aAAa;MACjG,WAAW,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,GAAG,IAAI,YAAY;MAC9C,UAAU,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,8BAA8B,MAAM,YAAY;MAC5E,KAAK,EAAE,UAAU;MACjB,WAAW,EAAE,oBAAoB;MACjC,YAAY,EAAE,4BAA4B;MAC1C,iBAAiB,EAAE,gCAAgC;MACnD,kBAAkB,EAAE,iCAAiC;MACrD,WAAW,EAAE,sBAAsB;MACnC,MAAM,EAAE,kBAAkB;MAC1B,WAAW,EAAE,kBAAkB;MAC/B,iBAAiB,EAAE,uBAAuB;MAC1C,aAAa,EAAE,iBAAiB;MAChC,YAAY,EAAE,iBAAiB;MAC/B,QAAQ,EAAE,eAAe;MACzB,OAAO,EAAE,eAAe;MACxB,kBAAkB,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,kBAAkB,KAAK,KAAK,CAAC,GAAG,UAAU,GAAG,YAAY,EAAE;MAC9F,gBAAgB,EAAE,kCAAkC;MACpD,UAAU,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,WAAW,KAAK,4EAA4E;MACvH,YAAY,EAAE,iFAAiF;MAC/F,MAAM,EAAE,SAAS;MACjB,MAAM,EAAE,YAAY;MACpB,OAAO,EAAE,aAAa;MACtB,SAAS,EAAE,mBAAmB;MAC9B,cAAc,EAAE,oBAAoB;MACpC,WAAW,EAAE,2GAA2G;MACxH,UAAU,EAAE,YAAY;MACxB,YAAY,EAAE,mBAAmB;MACjC,kBAAkB,EAAE,kCAAkC;MACtD,gBAAgB,EAAE,qCAAqC;MACvD,gBAAgB,EAAE,qCAAqC;MACvD,gBAAgB,EAAE,qCAAqC;MACvD,kBAAkB,EAAE,0BAA0B;MAC9C,cAAc,EAAE,qBAAqB;MACrC,YAAY,EAAE,mBAAmB;MACjC,kBAAkB,EAAE,uBAAuB;MAC3C,oBAAoB,EAAE,yCAAyC;MAC/D,KAAK,EAAE,OAAO;MACd,WAAW,EAAE,yBAAyB;MACtC,WAAW,EAAE,kBAAkB;MAC/B,YAAY,EAAE,cAAc;MAC5B,mBAAmB,EAAE,wBAAwB;MAC7C,QAAQ,EAAE,OAAO;MACjB,YAAY,EAAE,WAAW;MACzB,MAAM,EAAE,WAAW;MACnB,OAAO,EAAE,aAAa;MACtB,MAAM,EAAE,SAAS;MACjB,kBAAkB,EAAE,gDAAgD;MACpE,IAAI,EAAE,YAAY;MAClB,SAAS,EAAE,aAAa;MACxB,cAAc,EAAE,mCAAmC;MACnD,eAAe,EAAE,wDAAwD;MACzE,gBAAgB,EAAG,CAAS,IAAK,KAAK,CAAC,iBAAiB;MACxD,qBAAqB,EAAE,mFAAmF;MAC1G,UAAU,EAAE,YAAY;MACxB,gBAAgB,EAAE,iDAAiD;MACnE,gBAAgB,EAAE,iDAAiD;MACnE,GAAG,EAAE;IACP;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,aAAa,GAAG,MAA0B;EACrD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;;AAED;AACA,OAAO,MAAM,iBAAiB,GAAI,MAAe,IAC/C,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,UAAU,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7H,OAAO,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
|
|
@@ -43,11 +43,14 @@ export default function Navigation(props) {
|
|
|
43
43
|
children: id => {
|
|
44
44
|
const item = () => rows.items.find(entry => entry.id === id);
|
|
45
45
|
const disabled = () => rows.disabled || item().disabled;
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
// `expanded` hands disclosure to the item's owner; every other toggle stays local to this renderer.
|
|
47
|
+
const open = () => item().expanded ?? expanded()[id] ?? item().defaultExpanded ?? true;
|
|
48
|
+
const toggle = () => {
|
|
49
|
+
if (item().expanded !== undefined) props.navigation.onExpandedChange?.(id, !open());else setExpanded(current => ({
|
|
50
|
+
...current,
|
|
51
|
+
[id]: !open()
|
|
52
|
+
}));
|
|
53
|
+
};
|
|
51
54
|
const content = () => [_$createComponent(Show, {
|
|
52
55
|
get when() {
|
|
53
56
|
return item().icon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["layout/Navigation.tsx"],"sourcesContent":["import { documentNavigate, Link } from \"@k2b/ssr/nav\";\nimport { createSignal, For, Show } from \"solid-js\";\nimport { Dropdown } from \"../actions/Dropdown\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { NavigationController, NavigationItem } from \"./navigation-model\";\n\nexport type NavigationProps = {\n navigation: NavigationController;\n label: string;\n /** A host can finish dismissing its menu before the selected operation runs. */\n beforeSelect?: () => boolean | void | Promise<boolean | void>;\n};\n\nexport default function Navigation(props: NavigationProps) {\n const messages = useUiMessages();\n const [expanded, setExpanded] = createSignal<Record<string, boolean>>({});\n const ready = async () => (await props.beforeSelect?.()) !== false;\n const activate = async (id: string) => {\n if (await ready()) await props.navigation.activate(id);\n };\n const Rows = (rows: { items: readonly NavigationItem[]; disabled?: boolean }) => (\n <ul class=\"k2b-navigation__list\">\n <For each={rows.items.map((item) => item.id)}>\n {(id) => {\n const item = () => rows.items.find((entry) => entry.id === id)!;\n const disabled = () => rows.disabled || item().disabled;\n const open = () => expanded()[id] ?? item().defaultExpanded ?? true;\n const toggle = () => setExpanded((current) => ({ ...current, [id]: !open() }));\n const content = () => (\n <>\n <Show when={item().icon}>\n <i class={item().icon} aria-hidden=\"true\" />\n </Show>\n <span class=\"k2b-navigation__copy\">\n <span>{item().label}</span>\n <Show when={item().description}>\n <small>{item().description}</small>\n </Show>\n </span>\n <Show when={item().color}>\n <span class=\"k2b-navigation__color\" style={{ \"background-color\": item().color }} />\n </Show>\n <Show when={item().badge !== undefined}>\n <span class=\"k2b-navigation__badge\">{item().badge}</span>\n </Show>\n </>\n );\n return (\n <li>\n <div class=\"k2b-navigation__row\" data-active={item().active || undefined}>\n <Show\n when={item().href}\n fallback={\n <button\n type=\"button\"\n class=\"k2b-navigation__control\"\n disabled={disabled()}\n aria-expanded={!item().action ? open() : undefined}\n onClick={() => (item().action ? void activate(id) : toggle())}\n >\n {content()}\n <Show when={!item().action && item().children?.length}>\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </Show>\n </button>\n }\n >\n {(href) => (\n <Link\n class=\"k2b-navigation__control\"\n href={href()}\n aria-current={item().active ? \"page\" : undefined}\n aria-disabled={disabled() || undefined}\n tabIndex={disabled() ? -1 : undefined}\n scroll={item().scroll}\n onNavigate={async (event) => {\n if (!(await ready())) return;\n if (item().navigation === \"enhanced\" && props.navigation.onNavigate) await props.navigation.onNavigate(event);\n else event.fallback();\n }}\n onClick={(event) => {\n if (disabled()) {\n event.preventDefault();\n return;\n }\n if (!item().action || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)\n return;\n // Local opening can fetch before committing navigation, outside a view transition.\n event.preventDefault();\n void activate(id);\n }}\n >\n {content()}\n </Link>\n )}\n </Show>\n <Show when={(item().href || item().action) && item().children?.length}>\n <button\n type=\"button\"\n class=\"k2b-navigation__disclosure\"\n aria-label={item().label}\n aria-expanded={open()}\n disabled={disabled()}\n onClick={toggle}\n >\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </button>\n </Show>\n <Show when={item().actions?.length}>\n <Dropdown.Root\n items={(item().actions ?? []).map((action) => ({\n label: action.label,\n icon: action.icon,\n disabled: disabled() || action.disabled,\n action: () => {\n if (action.href)\n void ready().then((allowed) => {\n if (allowed) documentNavigate(action.href!);\n });\n else void activate(action.id);\n },\n }))}\n >\n <Dropdown.Trigger iconOnly label={`${item().label}: ${messages().rowAction}`} variant=\"ghost\">\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </div>\n <Show when={item().children?.length}>\n <div hidden={!open()}>\n <Rows items={item().children ?? []} disabled={disabled()} />\n </div>\n </Show>\n </li>\n );\n }}\n </For>\n </ul>\n );\n return (\n <nav class=\"k2b-navigation\" aria-label={props.label}>\n <Rows items={props.navigation.items()} />\n </nav>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["layout/Navigation.tsx"],"sourcesContent":["import { documentNavigate, Link } from \"@k2b/ssr/nav\";\nimport { createSignal, For, Show } from \"solid-js\";\nimport { Dropdown } from \"../actions/Dropdown\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { NavigationController, NavigationItem } from \"./navigation-model\";\n\nexport type NavigationProps = {\n navigation: NavigationController;\n label: string;\n /** A host can finish dismissing its menu before the selected operation runs. */\n beforeSelect?: () => boolean | void | Promise<boolean | void>;\n};\n\nexport default function Navigation(props: NavigationProps) {\n const messages = useUiMessages();\n const [expanded, setExpanded] = createSignal<Record<string, boolean>>({});\n const ready = async () => (await props.beforeSelect?.()) !== false;\n const activate = async (id: string) => {\n if (await ready()) await props.navigation.activate(id);\n };\n const Rows = (rows: { items: readonly NavigationItem[]; disabled?: boolean }) => (\n <ul class=\"k2b-navigation__list\">\n <For each={rows.items.map((item) => item.id)}>\n {(id) => {\n const item = () => rows.items.find((entry) => entry.id === id)!;\n const disabled = () => rows.disabled || item().disabled;\n // `expanded` hands disclosure to the item's owner; every other toggle stays local to this renderer.\n const open = () => item().expanded ?? expanded()[id] ?? item().defaultExpanded ?? true;\n const toggle = () => {\n if (item().expanded !== undefined) props.navigation.onExpandedChange?.(id, !open());\n else setExpanded((current) => ({ ...current, [id]: !open() }));\n };\n const content = () => (\n <>\n <Show when={item().icon}>\n <i class={item().icon} aria-hidden=\"true\" />\n </Show>\n <span class=\"k2b-navigation__copy\">\n <span>{item().label}</span>\n <Show when={item().description}>\n <small>{item().description}</small>\n </Show>\n </span>\n <Show when={item().color}>\n <span class=\"k2b-navigation__color\" style={{ \"background-color\": item().color }} />\n </Show>\n <Show when={item().badge !== undefined}>\n <span class=\"k2b-navigation__badge\">{item().badge}</span>\n </Show>\n </>\n );\n return (\n <li>\n <div class=\"k2b-navigation__row\" data-active={item().active || undefined}>\n <Show\n when={item().href}\n fallback={\n <button\n type=\"button\"\n class=\"k2b-navigation__control\"\n disabled={disabled()}\n aria-expanded={!item().action ? open() : undefined}\n onClick={() => (item().action ? void activate(id) : toggle())}\n >\n {content()}\n <Show when={!item().action && item().children?.length}>\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </Show>\n </button>\n }\n >\n {(href) => (\n <Link\n class=\"k2b-navigation__control\"\n href={href()}\n aria-current={item().active ? \"page\" : undefined}\n aria-disabled={disabled() || undefined}\n tabIndex={disabled() ? -1 : undefined}\n scroll={item().scroll}\n onNavigate={async (event) => {\n if (!(await ready())) return;\n if (item().navigation === \"enhanced\" && props.navigation.onNavigate) await props.navigation.onNavigate(event);\n else event.fallback();\n }}\n onClick={(event) => {\n if (disabled()) {\n event.preventDefault();\n return;\n }\n if (!item().action || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)\n return;\n // Local opening can fetch before committing navigation, outside a view transition.\n event.preventDefault();\n void activate(id);\n }}\n >\n {content()}\n </Link>\n )}\n </Show>\n <Show when={(item().href || item().action) && item().children?.length}>\n <button\n type=\"button\"\n class=\"k2b-navigation__disclosure\"\n aria-label={item().label}\n aria-expanded={open()}\n disabled={disabled()}\n onClick={toggle}\n >\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </button>\n </Show>\n <Show when={item().actions?.length}>\n <Dropdown.Root\n items={(item().actions ?? []).map((action) => ({\n label: action.label,\n icon: action.icon,\n disabled: disabled() || action.disabled,\n action: () => {\n if (action.href)\n void ready().then((allowed) => {\n if (allowed) documentNavigate(action.href!);\n });\n else void activate(action.id);\n },\n }))}\n >\n <Dropdown.Trigger iconOnly label={`${item().label}: ${messages().rowAction}`} variant=\"ghost\">\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </div>\n <Show when={item().children?.length}>\n <div hidden={!open()}>\n <Rows items={item().children ?? []} disabled={disabled()} />\n </div>\n </Show>\n </li>\n );\n }}\n </For>\n </ul>\n );\n return (\n <nav class=\"k2b-navigation\" aria-label={props.label}>\n <Rows items={props.navigation.items()} />\n </nav>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,gBAAgB,EAAE,IAAI,QAAQ,cAAc;AACrD,SAAS,YAAY,EAAE,GAAG,EAAE,IAAI,QAAQ,UAAU;AAClD,SAAS,QAAQ,QAAQ,qBAAqB;AAC9C,SAAS,aAAa,QAAQ,kBAAkB;AAUhD,eAAe,SAAS,UAAU,CAAC,KAAsB,EAAE;EACzD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC;EAChC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,YAAY,CAA0B,CAAC,CAAC,CAAC;EACzE,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,KAAK;EAClE,MAAM,QAAQ,GAAG,MAAO,EAAU,IAAK;IACrC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;EACxD,CAAC;EACD,MAAM,IAAI,GAAI,IAA8D;IAAA;IAAA,iCAEvE,GAAG;MAAA,IAAC,IAAI;QAAA,OAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,IAAI,IAAK,IAAI,CAAC,EAAE,CAAC;MAAA;MAAA,UACxC,EAAE,IAAK;QACP,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAE,KAAK,IAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAE;QAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ;QACvD;QACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI;QACtF,MAAM,MAAM,GAAG,MAAM;UACnB,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAC/E,WAAW,CAAE,OAAO,KAAM;YAAE,GAAG,OAAO;YAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;UAAE,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,OAAO,GAAG,yBAEX,IAAI;UAAA,IAAC,IAAI;YAAA,OAAE,IAAI,CAAC,CAAC,CAAC,IAAI;UAAA;UAAA;YAAA;YAAA,kCACX,IAAI,CAAC,CAAC,CAAC,IAAI;YAAA;UAAA;QAAA;UAAA;YAAA;YAAA;YAAA;UAAA,sBAGd,IAAI,CAAC,CAAC,CAAC,KAAK;UAAA,kCAClB,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,IAAI,CAAC,CAAC,CAAC,WAAW;YAAA;YAAA;cAAA;cAAA,sBACpB,IAAI,CAAC,CAAC,CAAC,WAAW;cAAA;YAAA;UAAA;UAAA;QAAA,wBAG7B,IAAI;UAAA,IAAC,IAAI;YAAA,OAAE,IAAI,CAAC,CAAC,CAAC,KAAK;UAAA;UAAA;YAAA;YAAA,8DAC2C,IAAI,CAAC,CAAC,CAAC,KAAK;YAAA;UAAA;QAAA,sBAE9E,IAAI;UAAA,IAAC,IAAI;YAAA,OAAE,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS;UAAA;UAAA;YAAA;YAAA,sBACC,IAAI,CAAC,CAAC,CAAC,KAAK;YAAA;UAAA;QAAA,GAGtD;QACD;UAAA;YAAA;YAAA;YAAA;YAAA;YAAA;YAAA;YAAA;YAAA;YAAA;UAAA,kCAGO,IAAI;YAAA,IACH,IAAI;cAAA,OAAE,IAAI,CAAC,CAAC,CAAC,IAAI;YAAA;YAAA,IACjB,QAAQ;cAAA;gBAAA;kBAAA;kBAAA;kBAAA;kBAAA;gBAAA,iBAMK,MAAO,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAE;gBAAA,iBAE5D,OAAO;gBAAA,mCACP,IAAI;kBAAA,IAAC,IAAI;oBAAA,OAAE,gBAAC,IAAI,CAAC,CAAC,CAAC,MAAM,OAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM;kBAAA;kBAAA;oBAAA;oBAAA,mCACzC,IAAI,CAAC,CAAC,GAAG,oBAAoB,GAAG,qBAAqB;oBAAA;kBAAA;gBAAA;gBAAA;kBAAA,WANvD,QAAQ,CAAC,CAAC;oBAAA,OACL,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS;kBAAA;kBAAA;kBAAA;gBAAA;kBAAA;kBAAA;gBAAA;gBAAA;gBAAA;cAAA;YAAA;YAAA,UAUpD,IAAI,sBACH,IAAI;cAAA;cAAA,IAEH,IAAI;gBAAA,OAAE,IAAI,CAAC,CAAC;cAAA;cAAA;gBAAA,OACE,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,SAAS;cAAA;cAAA;gBAAA,OACjC,QAAQ,CAAC,CAAC,IAAI,SAAS;cAAA;cAAA,IACtC,QAAQ;gBAAA,OAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;cAAA;cAAA,IACrC,MAAM;gBAAA,OAAE,IAAI,CAAC,CAAC,CAAC,MAAM;cAAA;cACrB,UAAU,EAAE,MAAO,KAAK,IAAK;gBAC3B,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE;gBACtB,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KACzG,KAAK,CAAC,QAAQ,CAAC,CAAC;cACvB,CAAC;cACD,OAAO,EAAG,KAAK,IAAK;gBAClB,IAAI,QAAQ,CAAC,CAAC,EAAE;kBACd,KAAK,CAAC,cAAc,CAAC,CAAC;kBACtB;gBACF;gBACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAC1G;gBACF;gBACA,KAAK,CAAC,cAAc,CAAC,CAAC;gBACtB,KAAK,QAAQ,CAAC,EAAE,CAAC;cACnB,CAAC;cAAA;gBAAA,OAEA,OAAO,CAAC,CAAC;cAAA;YAAA;UAEb;UAAA,kCAEF,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,gBAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,QAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM;YAAA;YAAA;cAAA;gBAAA;cAAA,iBAOxD,MAAM;cAAA;gBAAA,UAHH,IAAI,CAAC,CAAC,CAAC,KAAK;kBAAA,OACT,IAAI,CAAC,CAAC;kBAAA,OACX,QAAQ,CAAC,CAAC;kBAAA,OAGV,IAAI,CAAC,CAAC,GAAG,oBAAoB,GAAG,qBAAqB;gBAAA;gBAAA;gBAAA;gBAAA;gBAAA;cAAA;gBAAA;gBAAA;gBAAA;gBAAA;cAAA;cAAA;cAAA;YAAA;UAAA;UAAA,kCAGlE,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM;YAAA;YAAA;cAAA,yBAC/B,QAAQ,CAAC,IAAI;gBAAA,IACZ,KAAK;kBAAA,OAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAE,MAAM,KAAM;oBAC7C,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ;oBACvC,MAAM,EAAE,MAAM;sBACZ,IAAI,MAAM,CAAC,IAAI,EACb,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAE,OAAO,IAAK;wBAC7B,IAAI,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAK,CAAC;sBAC7C,CAAC,CAAC,CAAC,KACA,KAAK,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/B;kBACF,CAAC,CAAC,CAAC;gBAAA;gBAAA;kBAAA,yBAEF,QAAQ,CAAC,OAAO;oBAAC,QAAQ;oBAAA,IAAC,KAAK;sBAAA,OAAE,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;oBAAA;oBAAE,OAAO;oBAAA;sBAAA;oBAAA;kBAAA;gBAAA;cAAA;YAAA;UAAA;UAAA,kCAM1F,IAAI;YAAA,IAAC,IAAI;cAAA,OAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM;YAAA;YAAA;cAAA;cAAA,mCAE9B,IAAI;gBAAA,IAAC,KAAK;kBAAA,OAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE;gBAAA;gBAAA,IAAE,QAAQ;kBAAA,OAAE,QAAQ,CAAC,CAAC;gBAAA;cAAA;cAAA,+CAD7C,CAAC,IAAI,CAAC,CAAC;cAAA;YAAA;UAAA;UAAA,oDAjFwB,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS;UAAA;QAAA;MAuF9E;IAAC;IAAA;EAAA,IAGN;EACD;IAAA;IAAA,mCAEK,IAAI;MAAA,IAAC,KAAK;QAAA,OAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;MAAA;IAAA;IAAA,oDADC,KAAK,CAAC,KAAK;IAAA;EAAA;AAIvD;AAAC","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { template as _$template } from "solid-js/web";
|
|
2
2
|
import { delegateEvents as _$delegateEvents } from "solid-js/web";
|
|
3
|
-
import {
|
|
3
|
+
import { memo as _$memo } from "solid-js/web";
|
|
4
4
|
import { className as _$className } from "solid-js/web";
|
|
5
5
|
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
6
6
|
import { effect as _$effect } from "solid-js/web";
|
|
@@ -12,14 +12,16 @@ import { createComponent as _$createComponent } from "solid-js/web";
|
|
|
12
12
|
import { use as _$use } from "solid-js/web";
|
|
13
13
|
var _tmpl$ = /*#__PURE__*/_$template(`<button type=button role=tab><!$><!/><span>`),
|
|
14
14
|
_tmpl$2 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
|
|
15
|
-
_tmpl$3 = /*#__PURE__*/_$template(`<
|
|
16
|
-
_tmpl$4 = /*#__PURE__*/_$template(`<div role=region><!$><!/><aside class=k2b-settings__rail><nav class=k2b-settings__tabs role=tablist></nav></aside><div class=k2b-settings__content><!$><!/><!$><!/>`),
|
|
15
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<i class="ti ti-x"aria-hidden=true>`),
|
|
16
|
+
_tmpl$4 = /*#__PURE__*/_$template(`<div role=region><!$><!/><aside class=k2b-settings__rail><nav class=k2b-settings__tabs role=tablist data-scroll-fade-mode=both data-scroll-fade-axis=horizontal></nav></aside><div class=k2b-settings__content><!$><!/><!$><!/>`),
|
|
17
17
|
_tmpl$5 = /*#__PURE__*/_$template(`<div class=k2b-settings__tab-group role=presentation><span class=k2b-settings__tab-group-label aria-hidden=true></span><!$><!/>`),
|
|
18
18
|
_tmpl$6 = /*#__PURE__*/_$template(`<section class=k2b-settings__body role=tabpanel tabindex=0><div class=k2b-settings__section><div class=k2b-settings__section-heading><h2></h2><!$><!/></div><!$><!/>`),
|
|
19
19
|
_tmpl$7 = /*#__PURE__*/_$template(`<p>`),
|
|
20
20
|
_tmpl$8 = /*#__PURE__*/_$template(`<footer class=k2b-settings__footer>`);
|
|
21
|
-
import { children, createMemo, createSignal, createUniqueId, For, Show } from "solid-js";
|
|
21
|
+
import { children, createEffect, createMemo, createSignal, createUniqueId, For, Show } from "solid-js";
|
|
22
|
+
import { IconButton } from "../actions/Button";
|
|
22
23
|
import { useUiMessages } from "../intl/messages";
|
|
24
|
+
import { createScrollFade } from "./scroll-fade";
|
|
23
25
|
import { assertUniqueStableUiIds } from "./stable-id";
|
|
24
26
|
const SETTINGS_MODAL_TAB = Symbol("SettingsModal.Tab");
|
|
25
27
|
const SETTINGS_MODAL_GROUP = Symbol("SettingsModal.Group");
|
|
@@ -84,10 +86,21 @@ const SettingsModal = props => {
|
|
|
84
86
|
});
|
|
85
87
|
const instanceId = `k2b-settings-${createUniqueId()}`;
|
|
86
88
|
const tabRefs = new Map();
|
|
89
|
+
let tabList;
|
|
90
|
+
// Narrow surfaces show the categories as one scrolling row; the fade tells that more follow.
|
|
91
|
+
createScrollFade(() => tabList, () => true);
|
|
87
92
|
const firstTabId = () => tabs()[0]?.props.id ?? "";
|
|
88
93
|
const [localActiveTab, setLocalActiveTab] = createSignal(props.defaultTab ?? firstTabId());
|
|
89
94
|
const requestedActiveTabId = () => props.activeTab ?? (localActiveTab() || firstTabId());
|
|
90
|
-
const resolvedActiveTabId = () => tabs().some(tab => tab.props.id === requestedActiveTabId()) ? requestedActiveTabId() : firstTabId();
|
|
95
|
+
const resolvedActiveTabId = createMemo(() => tabs().some(tab => tab.props.id === requestedActiveTabId()) ? requestedActiveTabId() : firstTabId());
|
|
96
|
+
// `defaultTab`, `activeTab` and clicks can select a category past the edge of the scrolling row or rail.
|
|
97
|
+
createEffect(() => {
|
|
98
|
+
const id = resolvedActiveTabId();
|
|
99
|
+
queueMicrotask(() => tabRefs.get(id)?.scrollIntoView?.({
|
|
100
|
+
block: "nearest",
|
|
101
|
+
inline: "nearest"
|
|
102
|
+
}));
|
|
103
|
+
});
|
|
91
104
|
const activeTab = () => tabs().find(tab => tab.props.id === resolvedActiveTabId()) ?? null;
|
|
92
105
|
const resolvedPanelChildren = children(() => activeTab()?.props.children);
|
|
93
106
|
const panelChildren = createMemo(() => splitPanelChildren(resolvedPanelChildren()));
|
|
@@ -178,13 +191,22 @@ const SettingsModal = props => {
|
|
|
178
191
|
return props.onClose;
|
|
179
192
|
},
|
|
180
193
|
get children() {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
194
|
+
return _$createComponent(IconButton, {
|
|
195
|
+
"class": "k2b-settings__close",
|
|
196
|
+
get label() {
|
|
197
|
+
return props.closeLabel ?? messages().close;
|
|
198
|
+
},
|
|
199
|
+
get onClick() {
|
|
200
|
+
return props.onClose;
|
|
201
|
+
},
|
|
202
|
+
get children() {
|
|
203
|
+
return _$getNextElement(_tmpl$3);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
186
206
|
}
|
|
187
207
|
}), _el$14, _co$4);
|
|
208
|
+
var _ref$ = tabList;
|
|
209
|
+
typeof _ref$ === "function" ? _$use(_ref$, _el$9) : tabList = _el$9;
|
|
188
210
|
_$insert(_el$9, _$createComponent(For, {
|
|
189
211
|
get each() {
|
|
190
212
|
return railEntries();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["layout/SettingsModal.tsx"],"sourcesContent":["import { children, createMemo, createSignal, createUniqueId, For, type JSX, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { assertUniqueStableUiIds } from \"./stable-id\";\n\nconst SETTINGS_MODAL_TAB = Symbol(\"SettingsModal.Tab\");\nconst SETTINGS_MODAL_GROUP = Symbol(\"SettingsModal.Group\");\nconst SETTINGS_MODAL_FOOTER = Symbol(\"SettingsModal.Footer\");\n\nexport type SettingsModalTabTone = \"default\" | \"danger\";\n\nexport type SettingsModalTabProps = {\n id: string;\n title: string;\n description?: string;\n icon?: string;\n tone?: SettingsModalTabTone;\n children: JSX.Element;\n};\n\nexport type SettingsModalGroupProps = {\n title: string;\n children: JSX.Element;\n};\n\nexport type SettingsModalFooterProps = {\n children: JSX.Element;\n};\n\ntype SettingsModalTabDefinition = {\n readonly kind: typeof SETTINGS_MODAL_TAB;\n readonly props: SettingsModalTabProps;\n};\n\ntype SettingsModalGroupDefinition = {\n readonly kind: typeof SETTINGS_MODAL_GROUP;\n readonly props: SettingsModalGroupProps;\n};\n\ntype SettingsModalFooterDefinition = {\n readonly kind: typeof SETTINGS_MODAL_FOOTER;\n readonly props: SettingsModalFooterProps;\n};\n\nexport type SettingsModalProps = {\n /** Accessible name for the settings surface. */\n title: string;\n /** @deprecated Retained for source compatibility; tab descriptions carry the visible context. */\n subtitle?: string;\n /** @deprecated Retained for source compatibility; tab icons identify the rail entries. */\n icon?: string;\n defaultTab?: string;\n activeTab?: string;\n onTabChange?: (id: string) => void;\n onClose?: () => void;\n closeLabel?: string;\n class?: string;\n children: JSX.Element;\n};\n\ntype SettingsModalComponent = ((props: SettingsModalProps) => JSX.Element) & {\n Tab: (props: SettingsModalTabProps) => JSX.Element;\n Group: (props: SettingsModalGroupProps) => JSX.Element;\n Footer: (props: SettingsModalFooterProps) => JSX.Element;\n};\n\nconst isTabDefinition = (value: unknown): value is SettingsModalTabDefinition =>\n !!value && typeof value === \"object\" && (value as { kind?: unknown }).kind === SETTINGS_MODAL_TAB;\n\nconst isGroupDefinition = (value: unknown): value is SettingsModalGroupDefinition =>\n !!value && typeof value === \"object\" && (value as { kind?: unknown }).kind === SETTINGS_MODAL_GROUP;\n\nconst isFooterDefinition = (value: unknown): value is SettingsModalFooterDefinition =>\n !!value && typeof value === \"object\" && (value as { kind?: unknown }).kind === SETTINGS_MODAL_FOOTER;\n\nconst collectTabs = (value: unknown): SettingsModalTabDefinition[] => {\n if (Array.isArray(value)) return value.flatMap(collectTabs);\n if (isGroupDefinition(value)) return collectTabs(value.props.children);\n return isTabDefinition(value) ? [value] : [];\n};\n\nconst collectRailEntries = (value: unknown): (SettingsModalGroupDefinition | SettingsModalTabDefinition)[] => {\n if (Array.isArray(value)) return value.flatMap(collectRailEntries);\n if (isGroupDefinition(value) || isTabDefinition(value)) return [value];\n return [];\n};\n\nconst splitPanelChildren = (value: unknown): { content: JSX.Element[]; footer?: SettingsModalFooterDefinition } => {\n if (Array.isArray(value)) {\n return value.reduce<{ content: JSX.Element[]; footer?: SettingsModalFooterDefinition }>(\n (result, entry) => {\n const next = splitPanelChildren(entry);\n result.content.push(...next.content);\n if (next.footer) result.footer = next.footer;\n return result;\n },\n { content: [] },\n );\n }\n return isFooterDefinition(value) ? { content: [], footer: value } : { content: [value as JSX.Element] };\n};\n\nfunction SettingsModalTab(props: SettingsModalTabProps): JSX.Element {\n return { kind: SETTINGS_MODAL_TAB, props } satisfies SettingsModalTabDefinition as unknown as JSX.Element;\n}\n\nfunction SettingsModalGroup(props: SettingsModalGroupProps): JSX.Element {\n return { kind: SETTINGS_MODAL_GROUP, props } satisfies SettingsModalGroupDefinition as unknown as JSX.Element;\n}\n\nfunction SettingsModalFooter(props: SettingsModalFooterProps): JSX.Element {\n return { kind: SETTINGS_MODAL_FOOTER, props } satisfies SettingsModalFooterDefinition as unknown as JSX.Element;\n}\n\nconst SettingsModal = ((props: SettingsModalProps): JSX.Element => {\n const messages = useUiMessages();\n const resolved = children(() => props.children);\n const railEntries = createMemo(() => collectRailEntries(resolved()));\n const tabs = createMemo(() => {\n const collected = collectTabs(resolved());\n assertUniqueStableUiIds(\n collected.map((tab) => tab.props.id),\n \"SettingsModal.Tab id\",\n );\n return collected;\n });\n const instanceId = `k2b-settings-${createUniqueId()}`;\n const tabRefs = new Map<string, HTMLButtonElement>();\n const firstTabId = () => tabs()[0]?.props.id ?? \"\";\n const [localActiveTab, setLocalActiveTab] = createSignal(props.defaultTab ?? firstTabId());\n const requestedActiveTabId = () => props.activeTab ?? (localActiveTab() || firstTabId());\n const resolvedActiveTabId = () => (tabs().some((tab) => tab.props.id === requestedActiveTabId()) ? requestedActiveTabId() : firstTabId());\n const activeTab = () => tabs().find((tab) => tab.props.id === resolvedActiveTabId()) ?? null;\n const resolvedPanelChildren = children(() => activeTab()?.props.children);\n const panelChildren = createMemo(() => splitPanelChildren(resolvedPanelChildren()));\n\n const selectTab = (id: string) => {\n if (props.activeTab === undefined) setLocalActiveTab(id);\n props.onTabChange?.(id);\n };\n\n const moveTabFocus = (event: KeyboardEvent, currentId: string) => {\n const currentIndex = tabs().findIndex((tab) => tab.props.id === currentId);\n if (currentIndex < 0 || tabs().length === 0) return;\n let nextIndex: number | null = null;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") nextIndex = (currentIndex + 1) % tabs().length;\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") nextIndex = (currentIndex - 1 + tabs().length) % tabs().length;\n if (event.key === \"Home\") nextIndex = 0;\n if (event.key === \"End\") nextIndex = tabs().length - 1;\n if (nextIndex === null) return;\n event.preventDefault();\n const nextTab = tabs()[nextIndex];\n if (!nextTab) return;\n selectTab(nextTab.props.id);\n tabRefs.get(nextTab.props.id)?.focus();\n };\n\n const tabId = (id: string) => `${instanceId}-tab-${id}`;\n const panelId = (id: string) => `${instanceId}-panel-${id}`;\n\n const TabButton = (tab: SettingsModalTabDefinition): JSX.Element => {\n const active = () => resolvedActiveTabId() === tab.props.id;\n return (\n <button\n ref={(element) => tabRefs.set(tab.props.id, element)}\n id={tabId(tab.props.id)}\n type=\"button\"\n role=\"tab\"\n aria-selected={active()}\n aria-controls={active() ? panelId(tab.props.id) : undefined}\n tabIndex={active() ? 0 : -1}\n data-state={active() ? \"active\" : \"idle\"}\n data-active={active() ? \"true\" : undefined}\n data-tone={tab.props.tone ?? \"default\"}\n onClick={() => selectTab(tab.props.id)}\n onKeyDown={(event) => moveTabFocus(event, tab.props.id)}\n >\n <Show when={tab.props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <span>{tab.props.title}</span>\n </button>\n );\n };\n\n return (\n <div class={`k2b-settings ${props.class ?? \"\"}`} role=\"region\" aria-label={props.title}>\n <Show when={props.onClose}>\n <button\n type=\"button\"\n class=\"k2b-settings__close k2b-icon-button\"\n aria-label={props.closeLabel ?? messages().close}\n onClick={props.onClose}\n >\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </button>\n </Show>\n <aside class=\"k2b-settings__rail\">\n <nav class=\"k2b-settings__tabs\" aria-label={messages().sectionsLabel({ title: props.title })} role=\"tablist\">\n <For each={railEntries()}>\n {(entry) =>\n isGroupDefinition(entry) ? (\n <div class=\"k2b-settings__tab-group\" role=\"presentation\">\n <span class=\"k2b-settings__tab-group-label\" aria-hidden=\"true\">\n {entry.props.title}\n </span>\n <For each={collectTabs(entry.props.children)}>{(tab) => TabButton(tab)}</For>\n </div>\n ) : (\n TabButton(entry)\n )\n }\n </For>\n </nav>\n </aside>\n <div class=\"k2b-settings__content\">\n <Show when={activeTab()}>\n {(tab) => (\n <section\n id={panelId(tab().props.id)}\n class=\"k2b-settings__body\"\n role=\"tabpanel\"\n aria-labelledby={tabId(tab().props.id)}\n tabIndex={0}\n data-tone={tab().props.tone ?? \"default\"}\n >\n <div class=\"k2b-settings__section\">\n <div class=\"k2b-settings__section-heading\">\n <h2>{tab().props.title}</h2>\n <Show when={tab().props.description}>{(description) => <p>{description()}</p>}</Show>\n </div>\n {panelChildren().content}\n </div>\n </section>\n )}\n </Show>\n <Show when={panelChildren().footer}>{(footer) => <footer class=\"k2b-settings__footer\">{footer().props.children}</footer>}</Show>\n </div>\n </div>\n );\n}) as SettingsModalComponent;\n\nSettingsModal.Tab = SettingsModalTab;\nSettingsModal.Group = SettingsModalGroup;\nSettingsModal.Footer = SettingsModalFooter;\n\nexport default SettingsModal;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["layout/SettingsModal.tsx"],"sourcesContent":["import { children, createEffect, createMemo, createSignal, createUniqueId, For, type JSX, Show } from \"solid-js\";\nimport { IconButton } from \"../actions/Button\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { createScrollFade } from \"./scroll-fade\";\nimport { assertUniqueStableUiIds } from \"./stable-id\";\n\nconst SETTINGS_MODAL_TAB = Symbol(\"SettingsModal.Tab\");\nconst SETTINGS_MODAL_GROUP = Symbol(\"SettingsModal.Group\");\nconst SETTINGS_MODAL_FOOTER = Symbol(\"SettingsModal.Footer\");\n\nexport type SettingsModalTabTone = \"default\" | \"danger\";\n\nexport type SettingsModalTabProps = {\n id: string;\n title: string;\n description?: string;\n icon?: string;\n tone?: SettingsModalTabTone;\n children: JSX.Element;\n};\n\nexport type SettingsModalGroupProps = {\n title: string;\n children: JSX.Element;\n};\n\nexport type SettingsModalFooterProps = {\n children: JSX.Element;\n};\n\ntype SettingsModalTabDefinition = {\n readonly kind: typeof SETTINGS_MODAL_TAB;\n readonly props: SettingsModalTabProps;\n};\n\ntype SettingsModalGroupDefinition = {\n readonly kind: typeof SETTINGS_MODAL_GROUP;\n readonly props: SettingsModalGroupProps;\n};\n\ntype SettingsModalFooterDefinition = {\n readonly kind: typeof SETTINGS_MODAL_FOOTER;\n readonly props: SettingsModalFooterProps;\n};\n\nexport type SettingsModalProps = {\n /** Accessible name for the settings surface. */\n title: string;\n /** @deprecated Retained for source compatibility; tab descriptions carry the visible context. */\n subtitle?: string;\n /** @deprecated Retained for source compatibility; tab icons identify the rail entries. */\n icon?: string;\n defaultTab?: string;\n activeTab?: string;\n onTabChange?: (id: string) => void;\n onClose?: () => void;\n closeLabel?: string;\n class?: string;\n children: JSX.Element;\n};\n\ntype SettingsModalComponent = ((props: SettingsModalProps) => JSX.Element) & {\n Tab: (props: SettingsModalTabProps) => JSX.Element;\n Group: (props: SettingsModalGroupProps) => JSX.Element;\n Footer: (props: SettingsModalFooterProps) => JSX.Element;\n};\n\nconst isTabDefinition = (value: unknown): value is SettingsModalTabDefinition =>\n !!value && typeof value === \"object\" && (value as { kind?: unknown }).kind === SETTINGS_MODAL_TAB;\n\nconst isGroupDefinition = (value: unknown): value is SettingsModalGroupDefinition =>\n !!value && typeof value === \"object\" && (value as { kind?: unknown }).kind === SETTINGS_MODAL_GROUP;\n\nconst isFooterDefinition = (value: unknown): value is SettingsModalFooterDefinition =>\n !!value && typeof value === \"object\" && (value as { kind?: unknown }).kind === SETTINGS_MODAL_FOOTER;\n\nconst collectTabs = (value: unknown): SettingsModalTabDefinition[] => {\n if (Array.isArray(value)) return value.flatMap(collectTabs);\n if (isGroupDefinition(value)) return collectTabs(value.props.children);\n return isTabDefinition(value) ? [value] : [];\n};\n\nconst collectRailEntries = (value: unknown): (SettingsModalGroupDefinition | SettingsModalTabDefinition)[] => {\n if (Array.isArray(value)) return value.flatMap(collectRailEntries);\n if (isGroupDefinition(value) || isTabDefinition(value)) return [value];\n return [];\n};\n\nconst splitPanelChildren = (value: unknown): { content: JSX.Element[]; footer?: SettingsModalFooterDefinition } => {\n if (Array.isArray(value)) {\n return value.reduce<{ content: JSX.Element[]; footer?: SettingsModalFooterDefinition }>(\n (result, entry) => {\n const next = splitPanelChildren(entry);\n result.content.push(...next.content);\n if (next.footer) result.footer = next.footer;\n return result;\n },\n { content: [] },\n );\n }\n return isFooterDefinition(value) ? { content: [], footer: value } : { content: [value as JSX.Element] };\n};\n\nfunction SettingsModalTab(props: SettingsModalTabProps): JSX.Element {\n return { kind: SETTINGS_MODAL_TAB, props } satisfies SettingsModalTabDefinition as unknown as JSX.Element;\n}\n\nfunction SettingsModalGroup(props: SettingsModalGroupProps): JSX.Element {\n return { kind: SETTINGS_MODAL_GROUP, props } satisfies SettingsModalGroupDefinition as unknown as JSX.Element;\n}\n\nfunction SettingsModalFooter(props: SettingsModalFooterProps): JSX.Element {\n return { kind: SETTINGS_MODAL_FOOTER, props } satisfies SettingsModalFooterDefinition as unknown as JSX.Element;\n}\n\nconst SettingsModal = ((props: SettingsModalProps): JSX.Element => {\n const messages = useUiMessages();\n const resolved = children(() => props.children);\n const railEntries = createMemo(() => collectRailEntries(resolved()));\n const tabs = createMemo(() => {\n const collected = collectTabs(resolved());\n assertUniqueStableUiIds(\n collected.map((tab) => tab.props.id),\n \"SettingsModal.Tab id\",\n );\n return collected;\n });\n const instanceId = `k2b-settings-${createUniqueId()}`;\n const tabRefs = new Map<string, HTMLButtonElement>();\n let tabList: HTMLElement | undefined;\n // Narrow surfaces show the categories as one scrolling row; the fade tells that more follow.\n createScrollFade(\n () => tabList,\n () => true,\n );\n const firstTabId = () => tabs()[0]?.props.id ?? \"\";\n const [localActiveTab, setLocalActiveTab] = createSignal(props.defaultTab ?? firstTabId());\n const requestedActiveTabId = () => props.activeTab ?? (localActiveTab() || firstTabId());\n const resolvedActiveTabId = createMemo(() =>\n tabs().some((tab) => tab.props.id === requestedActiveTabId()) ? requestedActiveTabId() : firstTabId(),\n );\n // `defaultTab`, `activeTab` and clicks can select a category past the edge of the scrolling row or rail.\n createEffect(() => {\n const id = resolvedActiveTabId();\n queueMicrotask(() => tabRefs.get(id)?.scrollIntoView?.({ block: \"nearest\", inline: \"nearest\" }));\n });\n const activeTab = () => tabs().find((tab) => tab.props.id === resolvedActiveTabId()) ?? null;\n const resolvedPanelChildren = children(() => activeTab()?.props.children);\n const panelChildren = createMemo(() => splitPanelChildren(resolvedPanelChildren()));\n\n const selectTab = (id: string) => {\n if (props.activeTab === undefined) setLocalActiveTab(id);\n props.onTabChange?.(id);\n };\n\n const moveTabFocus = (event: KeyboardEvent, currentId: string) => {\n const currentIndex = tabs().findIndex((tab) => tab.props.id === currentId);\n if (currentIndex < 0 || tabs().length === 0) return;\n let nextIndex: number | null = null;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") nextIndex = (currentIndex + 1) % tabs().length;\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") nextIndex = (currentIndex - 1 + tabs().length) % tabs().length;\n if (event.key === \"Home\") nextIndex = 0;\n if (event.key === \"End\") nextIndex = tabs().length - 1;\n if (nextIndex === null) return;\n event.preventDefault();\n const nextTab = tabs()[nextIndex];\n if (!nextTab) return;\n selectTab(nextTab.props.id);\n tabRefs.get(nextTab.props.id)?.focus();\n };\n\n const tabId = (id: string) => `${instanceId}-tab-${id}`;\n const panelId = (id: string) => `${instanceId}-panel-${id}`;\n\n const TabButton = (tab: SettingsModalTabDefinition): JSX.Element => {\n const active = () => resolvedActiveTabId() === tab.props.id;\n return (\n <button\n ref={(element) => tabRefs.set(tab.props.id, element)}\n id={tabId(tab.props.id)}\n type=\"button\"\n role=\"tab\"\n aria-selected={active()}\n aria-controls={active() ? panelId(tab.props.id) : undefined}\n tabIndex={active() ? 0 : -1}\n data-state={active() ? \"active\" : \"idle\"}\n data-active={active() ? \"true\" : undefined}\n data-tone={tab.props.tone ?? \"default\"}\n onClick={() => selectTab(tab.props.id)}\n onKeyDown={(event) => moveTabFocus(event, tab.props.id)}\n >\n <Show when={tab.props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <span>{tab.props.title}</span>\n </button>\n );\n };\n\n return (\n <div class={`k2b-settings ${props.class ?? \"\"}`} role=\"region\" aria-label={props.title}>\n <Show when={props.onClose}>\n <IconButton class=\"k2b-settings__close\" label={props.closeLabel ?? messages().close} onClick={props.onClose}>\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </IconButton>\n </Show>\n <aside class=\"k2b-settings__rail\">\n <nav\n ref={tabList}\n class=\"k2b-settings__tabs\"\n aria-label={messages().sectionsLabel({ title: props.title })}\n role=\"tablist\"\n data-scroll-fade-mode=\"both\"\n data-scroll-fade-axis=\"horizontal\"\n >\n <For each={railEntries()}>\n {(entry) =>\n isGroupDefinition(entry) ? (\n <div class=\"k2b-settings__tab-group\" role=\"presentation\">\n <span class=\"k2b-settings__tab-group-label\" aria-hidden=\"true\">\n {entry.props.title}\n </span>\n <For each={collectTabs(entry.props.children)}>{(tab) => TabButton(tab)}</For>\n </div>\n ) : (\n TabButton(entry)\n )\n }\n </For>\n </nav>\n </aside>\n <div class=\"k2b-settings__content\">\n <Show when={activeTab()}>\n {(tab) => (\n <section\n id={panelId(tab().props.id)}\n class=\"k2b-settings__body\"\n role=\"tabpanel\"\n aria-labelledby={tabId(tab().props.id)}\n tabIndex={0}\n data-tone={tab().props.tone ?? \"default\"}\n >\n <div class=\"k2b-settings__section\">\n <div class=\"k2b-settings__section-heading\">\n <h2>{tab().props.title}</h2>\n <Show when={tab().props.description}>{(description) => <p>{description()}</p>}</Show>\n </div>\n {panelChildren().content}\n </div>\n </section>\n )}\n </Show>\n <Show when={panelChildren().footer}>{(footer) => <footer class=\"k2b-settings__footer\">{footer().props.children}</footer>}</Show>\n </div>\n </div>\n );\n}) as SettingsModalComponent;\n\nSettingsModal.Tab = SettingsModalTab;\nSettingsModal.Group = SettingsModalGroup;\nSettingsModal.Footer = SettingsModalFooter;\n\nexport default SettingsModal;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ export function createNavigation(options) {
|
|
|
14
14
|
return {
|
|
15
15
|
items: options.items,
|
|
16
16
|
onNavigate: options.onNavigate,
|
|
17
|
+
onExpandedChange: options.onExpandedChange,
|
|
17
18
|
async activate(id) {
|
|
18
19
|
const item = findNavigationItem(options.items(), id);
|
|
19
20
|
if (item?.action) await options.onAction?.(item.action);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["layout/navigation-model.ts"],"sourcesContent":["import type { LinkNavigateEvent, NavigationScrollMode } from \"@k2b/ssr/nav\";\nimport type { Accessor } from \"solid-js\";\n\ntype NavigationEntry = {\n id: string;\n label: string;\n icon?: string;\n badge?: string | number;\n description?: string;\n active?: boolean;\n disabled?: boolean;\n color?: string;\n children?: readonly NavigationItem[];\n /** Initial disclosure state; subsequent toggles remain local to the renderer. */\n defaultExpanded?: boolean;\n actions?: readonly NavigationItem[];\n};\n\n/** Serializable presentation. Functions stay with the controller's owning island. */\nexport type NavigationItem = NavigationEntry &\n (\n | { href: string; action?: string; navigation?: \"document\" | \"enhanced\"; scroll?: NavigationScrollMode }\n | { action: string; href?: never; navigation?: never; scroll?: never }\n | { href?: never; action?: never; navigation?: never; scroll?: never; children: readonly NavigationItem[] }\n );\n\nexport type NavigationOptions = {\n items: Accessor<readonly NavigationItem[]>;\n onAction?: (action: string) => void | Promise<void>;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n};\n\nexport function findNavigationItem(items: readonly NavigationItem[], id: string): NavigationItem | undefined {\n for (const item of items) {\n if (item.disabled) continue;\n if (item.id === id) return item;\n const found = findNavigationItem(item.children ?? [], id) ?? findNavigationItem(item.actions ?? [], id);\n if (found) return found;\n }\n}\n\n/** One live source for renderers; no router, registry, fetching or persisted state. */\nexport function createNavigation(options: NavigationOptions) {\n return {\n items: options.items,\n onNavigate: options.onNavigate,\n async activate(id: string) {\n const item = findNavigationItem(options.items(), id);\n if (item?.action) await options.onAction?.(item.action);\n },\n };\n}\n\nexport type NavigationController = ReturnType<typeof createNavigation>;\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":[],"sources":["layout/navigation-model.ts"],"sourcesContent":["import type { LinkNavigateEvent, NavigationScrollMode } from \"@k2b/ssr/nav\";\nimport type { Accessor } from \"solid-js\";\n\ntype NavigationEntry = {\n id: string;\n label: string;\n icon?: string;\n badge?: string | number;\n description?: string;\n active?: boolean;\n disabled?: boolean;\n color?: string;\n children?: readonly NavigationItem[];\n /** Initial disclosure state; subsequent toggles remain local to the renderer. */\n defaultExpanded?: boolean;\n /** Owner-held disclosure state. The renderer shows it and reports toggles through `onExpandedChange`. */\n expanded?: boolean;\n actions?: readonly NavigationItem[];\n};\n\n/** Serializable presentation. Functions stay with the controller's owning island. */\nexport type NavigationItem = NavigationEntry &\n (\n | { href: string; action?: string; navigation?: \"document\" | \"enhanced\"; scroll?: NavigationScrollMode }\n | { action: string; href?: never; navigation?: never; scroll?: never }\n | { href?: never; action?: never; navigation?: never; scroll?: never; children: readonly NavigationItem[] }\n );\n\nexport type NavigationOptions = {\n items: Accessor<readonly NavigationItem[]>;\n onAction?: (action: string) => void | Promise<void>;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n /** Receives disclosure toggles of items that carry `expanded`; the owner decides the next state. */\n onExpandedChange?: (id: string, expanded: boolean) => void;\n};\n\nexport function findNavigationItem(items: readonly NavigationItem[], id: string): NavigationItem | undefined {\n for (const item of items) {\n if (item.disabled) continue;\n if (item.id === id) return item;\n const found = findNavigationItem(item.children ?? [], id) ?? findNavigationItem(item.actions ?? [], id);\n if (found) return found;\n }\n}\n\n/** One live source for renderers; no router, registry, fetching or persisted state. */\nexport function createNavigation(options: NavigationOptions) {\n return {\n items: options.items,\n onNavigate: options.onNavigate,\n onExpandedChange: options.onExpandedChange,\n async activate(id: string) {\n const item = findNavigationItem(options.items(), id);\n if (item?.action) await options.onAction?.(item.action);\n },\n };\n}\n\nexport type NavigationController = ReturnType<typeof createNavigation>;\n"],"mappings":"AAoBA;;AAgBA,OAAO,SAAS,kBAAkB,CAAC,KAAgC,EAAE,EAAU,EAA8B;EAC3G,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;IACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;IACnB,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,IAAI;IAC/B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC;IACvG,IAAI,KAAK,EAAE,OAAO,KAAK;EACzB;AACF;;AAEA;AACA,OAAO,SAAS,gBAAgB,CAAC,OAA0B,EAAE;EAC3D,OAAO;IACL,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,UAAU,EAAE,OAAO,CAAC,UAAU;IAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;IAC1C,MAAM,QAAQ,CAAC,EAAU,EAAE;MACzB,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;MACpD,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IACzD;EACF,CAAC;AACH","ignoreList":[]}
|