@nocturnium/svelte-ide 1.0.0-rc.1
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/LICENSE +21 -0
- package/README.md +251 -0
- package/dist/components/agents/AgentActivityPanel.svelte +565 -0
- package/dist/components/agents/AgentActivityPanel.svelte.d.ts +24 -0
- package/dist/components/agents/AgentAvatar.svelte +417 -0
- package/dist/components/agents/AgentAvatar.svelte.d.ts +23 -0
- package/dist/components/agents/AgentCursor.svelte +224 -0
- package/dist/components/agents/AgentCursor.svelte.d.ts +35 -0
- package/dist/components/agents/AgentPresenceBar.svelte +261 -0
- package/dist/components/agents/AgentPresenceBar.svelte.d.ts +20 -0
- package/dist/components/agents/index.d.ts +4 -0
- package/dist/components/agents/index.js +5 -0
- package/dist/components/ai/AIConversationList.svelte +524 -0
- package/dist/components/ai/AIConversationList.svelte.d.ts +17 -0
- package/dist/components/ai/AIEditPreview.svelte +132 -0
- package/dist/components/ai/AIEditPreview.svelte.d.ts +8 -0
- package/dist/components/ai/AIInlineEdit.svelte +155 -0
- package/dist/components/ai/AIInlineEdit.svelte.d.ts +10 -0
- package/dist/components/ai/AIMessage.svelte +239 -0
- package/dist/components/ai/AIMessage.svelte.d.ts +13 -0
- package/dist/components/ai/AIMessageActions.svelte +176 -0
- package/dist/components/ai/AIMessageActions.svelte.d.ts +12 -0
- package/dist/components/ai/AIMessageContent.svelte +355 -0
- package/dist/components/ai/AIMessageContent.svelte.d.ts +7 -0
- package/dist/components/ai/AIPanel.svelte +561 -0
- package/dist/components/ai/AIPanel.svelte.d.ts +7 -0
- package/dist/components/ai/AISuggestionWidget.svelte +132 -0
- package/dist/components/ai/AISuggestionWidget.svelte.d.ts +10 -0
- package/dist/components/ai/AIToolCallDisplay.svelte +317 -0
- package/dist/components/ai/AIToolCallDisplay.svelte.d.ts +12 -0
- package/dist/components/ai/index.d.ts +9 -0
- package/dist/components/ai/index.js +10 -0
- package/dist/components/core/Avatar.svelte +110 -0
- package/dist/components/core/Avatar.svelte.d.ts +12 -0
- package/dist/components/core/Badge.svelte +98 -0
- package/dist/components/core/Badge.svelte.d.ts +11 -0
- package/dist/components/core/Button.svelte +175 -0
- package/dist/components/core/Button.svelte.d.ts +18 -0
- package/dist/components/core/ConnectionStatus.svelte +294 -0
- package/dist/components/core/ConnectionStatus.svelte.d.ts +20 -0
- package/dist/components/core/ContextMenu.svelte +176 -0
- package/dist/components/core/ContextMenu.svelte.d.ts +19 -0
- package/dist/components/core/ErrorBoundary.svelte +277 -0
- package/dist/components/core/ErrorBoundary.svelte.d.ts +23 -0
- package/dist/components/core/Icon.svelte +107 -0
- package/dist/components/core/Icon.svelte.d.ts +8 -0
- package/dist/components/core/Input.svelte +138 -0
- package/dist/components/core/Input.svelte.d.ts +20 -0
- package/dist/components/core/Kbd.svelte +34 -0
- package/dist/components/core/Kbd.svelte.d.ts +7 -0
- package/dist/components/core/ResizeHandle.svelte +200 -0
- package/dist/components/core/ResizeHandle.svelte.d.ts +23 -0
- package/dist/components/core/Spinner.svelte +35 -0
- package/dist/components/core/Spinner.svelte.d.ts +7 -0
- package/dist/components/core/Textarea.svelte +112 -0
- package/dist/components/core/Textarea.svelte.d.ts +18 -0
- package/dist/components/core/Tooltip.svelte +103 -0
- package/dist/components/core/Tooltip.svelte.d.ts +11 -0
- package/dist/components/core/index.d.ts +13 -0
- package/dist/components/core/index.js +14 -0
- package/dist/components/editor/AIFocusLayer.svelte +430 -0
- package/dist/components/editor/AIFocusLayer.svelte.d.ts +32 -0
- package/dist/components/editor/Breadcrumbs.svelte +435 -0
- package/dist/components/editor/Breadcrumbs.svelte.d.ts +33 -0
- package/dist/components/editor/BreakpointLayer.svelte +642 -0
- package/dist/components/editor/BreakpointLayer.svelte.d.ts +20 -0
- package/dist/components/editor/CognitiveLoadMeter.svelte +324 -0
- package/dist/components/editor/CognitiveLoadMeter.svelte.d.ts +18 -0
- package/dist/components/editor/CollaborativeEditor.svelte +218 -0
- package/dist/components/editor/CollaborativeEditor.svelte.d.ts +32 -0
- package/dist/components/editor/CommandPalette.svelte +434 -0
- package/dist/components/editor/CommandPalette.svelte.d.ts +11 -0
- package/dist/components/editor/ComplexityLayer.svelte +293 -0
- package/dist/components/editor/ComplexityLayer.svelte.d.ts +23 -0
- package/dist/components/editor/ConflictZoneLayer.svelte +441 -0
- package/dist/components/editor/ConflictZoneLayer.svelte.d.ts +25 -0
- package/dist/components/editor/ContextLens.svelte +262 -0
- package/dist/components/editor/ContextLens.svelte.d.ts +27 -0
- package/dist/components/editor/CustomEditor.svelte +1242 -0
- package/dist/components/editor/CustomEditor.svelte.d.ts +37 -0
- package/dist/components/editor/DebugConsole.svelte +646 -0
- package/dist/components/editor/DebugConsole.svelte.d.ts +41 -0
- package/dist/components/editor/EchoCursorLayer.svelte +363 -0
- package/dist/components/editor/EchoCursorLayer.svelte.d.ts +24 -0
- package/dist/components/editor/Editor.svelte +61 -0
- package/dist/components/editor/Editor.svelte.d.ts +22 -0
- package/dist/components/editor/EditorGutter.svelte +119 -0
- package/dist/components/editor/EditorGutter.svelte.d.ts +19 -0
- package/dist/components/editor/EditorLines.svelte +182 -0
- package/dist/components/editor/EditorLines.svelte.d.ts +43 -0
- package/dist/components/editor/EditorPane.svelte +134 -0
- package/dist/components/editor/EditorPane.svelte.d.ts +9 -0
- package/dist/components/editor/EditorSelections.svelte +186 -0
- package/dist/components/editor/EditorSelections.svelte.d.ts +25 -0
- package/dist/components/editor/EditorTabs.svelte +170 -0
- package/dist/components/editor/EditorTabs.svelte.d.ts +12 -0
- package/dist/components/editor/FileExplorer.svelte +811 -0
- package/dist/components/editor/FileExplorer.svelte.d.ts +67 -0
- package/dist/components/editor/FileIcon.svelte +110 -0
- package/dist/components/editor/FileIcon.svelte.d.ts +10 -0
- package/dist/components/editor/FindReplace.svelte +448 -0
- package/dist/components/editor/FindReplace.svelte.d.ts +40 -0
- package/dist/components/editor/GhostBracketLayer.svelte +391 -0
- package/dist/components/editor/GhostBracketLayer.svelte.d.ts +24 -0
- package/dist/components/editor/GitBlameLayer.svelte +436 -0
- package/dist/components/editor/GitBlameLayer.svelte.d.ts +18 -0
- package/dist/components/editor/InlineDiagnosticsLayer.svelte +540 -0
- package/dist/components/editor/InlineDiagnosticsLayer.svelte.d.ts +35 -0
- package/dist/components/editor/InlineDiffLayer.svelte +337 -0
- package/dist/components/editor/InlineDiffLayer.svelte.d.ts +31 -0
- package/dist/components/editor/MinimalEditor.svelte +75 -0
- package/dist/components/editor/MinimalEditor.svelte.d.ts +6 -0
- package/dist/components/editor/MinimalEditor2.svelte +84 -0
- package/dist/components/editor/MinimalEditor2.svelte.d.ts +6 -0
- package/dist/components/editor/Minimap.svelte +327 -0
- package/dist/components/editor/Minimap.svelte.d.ts +34 -0
- package/dist/components/editor/PluginPreviewSandbox.svelte +793 -0
- package/dist/components/editor/PluginPreviewSandbox.svelte.d.ts +49 -0
- package/dist/components/editor/ProblemsPanel.svelte +628 -0
- package/dist/components/editor/ProblemsPanel.svelte.d.ts +25 -0
- package/dist/components/editor/QuickActionsMenu.svelte +403 -0
- package/dist/components/editor/QuickActionsMenu.svelte.d.ts +18 -0
- package/dist/components/editor/SnippetPalette.svelte +530 -0
- package/dist/components/editor/SnippetPalette.svelte.d.ts +16 -0
- package/dist/components/editor/StructureMap.svelte +431 -0
- package/dist/components/editor/StructureMap.svelte.d.ts +37 -0
- package/dist/components/editor/SymbolOutline.svelte +722 -0
- package/dist/components/editor/SymbolOutline.svelte.d.ts +44 -0
- package/dist/components/editor/TimelineScrubber.svelte +470 -0
- package/dist/components/editor/TimelineScrubber.svelte.d.ts +40 -0
- package/dist/components/editor/TokenRenderer.svelte +69 -0
- package/dist/components/editor/TokenRenderer.svelte.d.ts +15 -0
- package/dist/components/editor/constants.d.ts +32 -0
- package/dist/components/editor/constants.js +36 -0
- package/dist/components/editor/core/ai-awareness.d.ts +176 -0
- package/dist/components/editor/core/ai-awareness.js +210 -0
- package/dist/components/editor/core/bracket-healer.d.ts +189 -0
- package/dist/components/editor/core/bracket-healer.js +406 -0
- package/dist/components/editor/core/breakpoints.d.ts +203 -0
- package/dist/components/editor/core/breakpoints.js +414 -0
- package/dist/components/editor/core/commands.d.ts +108 -0
- package/dist/components/editor/core/commands.js +246 -0
- package/dist/components/editor/core/complexity-analyzer.d.ts +123 -0
- package/dist/components/editor/core/complexity-analyzer.js +376 -0
- package/dist/components/editor/core/conflict-predictor.d.ts +135 -0
- package/dist/components/editor/core/conflict-predictor.js +316 -0
- package/dist/components/editor/core/crdt-binding.d.ts +118 -0
- package/dist/components/editor/core/crdt-binding.js +286 -0
- package/dist/components/editor/core/diagnostics.d.ts +210 -0
- package/dist/components/editor/core/diagnostics.js +335 -0
- package/dist/components/editor/core/echo-cursor.d.ts +201 -0
- package/dist/components/editor/core/echo-cursor.js +267 -0
- package/dist/components/editor/core/folding.d.ts +124 -0
- package/dist/components/editor/core/folding.js +672 -0
- package/dist/components/editor/core/ghost-pair.d.ts +122 -0
- package/dist/components/editor/core/ghost-pair.js +221 -0
- package/dist/components/editor/core/git-blame.d.ts +170 -0
- package/dist/components/editor/core/git-blame.js +324 -0
- package/dist/components/editor/core/index.d.ts +26 -0
- package/dist/components/editor/core/index.js +24 -0
- package/dist/components/editor/core/keybindings.d.ts +79 -0
- package/dist/components/editor/core/keybindings.js +357 -0
- package/dist/components/editor/core/multi-cursor.d.ts +196 -0
- package/dist/components/editor/core/multi-cursor.js +521 -0
- package/dist/components/editor/core/navigation.d.ts +107 -0
- package/dist/components/editor/core/navigation.js +408 -0
- package/dist/components/editor/core/quick-actions.d.ts +189 -0
- package/dist/components/editor/core/quick-actions.js +427 -0
- package/dist/components/editor/core/search.d.ts +88 -0
- package/dist/components/editor/core/search.js +192 -0
- package/dist/components/editor/core/semantic-analyzer.d.ts +77 -0
- package/dist/components/editor/core/semantic-analyzer.js +424 -0
- package/dist/components/editor/core/snippet-manager.d.ts +202 -0
- package/dist/components/editor/core/snippet-manager.js +565 -0
- package/dist/components/editor/core/state.d.ts +367 -0
- package/dist/components/editor/core/state.js +900 -0
- package/dist/components/editor/core/timeline.d.ts +204 -0
- package/dist/components/editor/core/timeline.js +349 -0
- package/dist/components/editor/editor-find.d.ts +56 -0
- package/dist/components/editor/editor-find.js +148 -0
- package/dist/components/editor/editor-input.d.ts +77 -0
- package/dist/components/editor/editor-input.js +445 -0
- package/dist/components/editor/editor-multicursor.d.ts +21 -0
- package/dist/components/editor/editor-multicursor.js +196 -0
- package/dist/components/editor/editor-scroll.d.ts +14 -0
- package/dist/components/editor/editor-scroll.js +34 -0
- package/dist/components/editor/index.d.ts +15 -0
- package/dist/components/editor/index.js +21 -0
- package/dist/components/editor/languages.d.ts +62 -0
- package/dist/components/editor/languages.js +285 -0
- package/dist/components/editor/theme.d.ts +88 -0
- package/dist/components/editor/theme.js +139 -0
- package/dist/components/editor/tokenizer/base.d.ts +40 -0
- package/dist/components/editor/tokenizer/base.js +203 -0
- package/dist/components/editor/tokenizer/index.d.ts +56 -0
- package/dist/components/editor/tokenizer/index.js +215 -0
- package/dist/components/editor/tokenizer/languages/css.d.ts +17 -0
- package/dist/components/editor/tokenizer/languages/css.js +194 -0
- package/dist/components/editor/tokenizer/languages/go.d.ts +17 -0
- package/dist/components/editor/tokenizer/languages/go.js +220 -0
- package/dist/components/editor/tokenizer/languages/html.d.ts +24 -0
- package/dist/components/editor/tokenizer/languages/html.js +145 -0
- package/dist/components/editor/tokenizer/languages/javascript.d.ts +56 -0
- package/dist/components/editor/tokenizer/languages/javascript.js +452 -0
- package/dist/components/editor/tokenizer/languages/json.d.ts +12 -0
- package/dist/components/editor/tokenizer/languages/json.js +91 -0
- package/dist/components/editor/tokenizer/languages/markdown.d.ts +16 -0
- package/dist/components/editor/tokenizer/languages/markdown.js +156 -0
- package/dist/components/editor/tokenizer/languages/python.d.ts +20 -0
- package/dist/components/editor/tokenizer/languages/python.js +227 -0
- package/dist/components/editor/tokenizer/languages/svelte.d.ts +40 -0
- package/dist/components/editor/tokenizer/languages/svelte.js +326 -0
- package/dist/components/editor/tokenizer/types.d.ts +86 -0
- package/dist/components/editor/tokenizer/types.js +4 -0
- package/dist/components/layout/IDELayout.svelte +274 -0
- package/dist/components/layout/IDELayout.svelte.d.ts +29 -0
- package/dist/components/layout/StatusBar.svelte +511 -0
- package/dist/components/layout/StatusBar.svelte.d.ts +47 -0
- package/dist/components/layout/index.d.ts +2 -0
- package/dist/components/layout/index.js +3 -0
- package/dist/components/lsp/AutocompleteWidget.svelte +364 -0
- package/dist/components/lsp/AutocompleteWidget.svelte.d.ts +33 -0
- package/dist/components/lsp/DiagnosticMarker.svelte +166 -0
- package/dist/components/lsp/DiagnosticMarker.svelte.d.ts +19 -0
- package/dist/components/lsp/DiagnosticsPanel.svelte +388 -0
- package/dist/components/lsp/DiagnosticsPanel.svelte.d.ts +21 -0
- package/dist/components/lsp/HoverTooltip.svelte +274 -0
- package/dist/components/lsp/HoverTooltip.svelte.d.ts +24 -0
- package/dist/components/lsp/LSPEditor.svelte +486 -0
- package/dist/components/lsp/LSPEditor.svelte.d.ts +39 -0
- package/dist/components/lsp/SignatureHelpWidget.svelte +216 -0
- package/dist/components/lsp/SignatureHelpWidget.svelte.d.ts +22 -0
- package/dist/components/lsp/index.d.ts +6 -0
- package/dist/components/lsp/index.js +7 -0
- package/dist/components/plugins/PluginCard.svelte +153 -0
- package/dist/components/plugins/PluginCard.svelte.d.ts +19 -0
- package/dist/components/plugins/PluginPanel.svelte +280 -0
- package/dist/components/plugins/PluginPanel.svelte.d.ts +8 -0
- package/dist/components/plugins/PluginProposalForm.svelte +250 -0
- package/dist/components/plugins/PluginProposalForm.svelte.d.ts +6 -0
- package/dist/components/plugins/PluginStatusBadge.svelte +14 -0
- package/dist/components/plugins/PluginStatusBadge.svelte.d.ts +8 -0
- package/dist/components/plugins/index.d.ts +4 -0
- package/dist/components/plugins/index.js +5 -0
- package/dist/components/vfs/LockConflictDialog.svelte +705 -0
- package/dist/components/vfs/LockConflictDialog.svelte.d.ts +21 -0
- package/dist/components/vfs/LockIndicator.svelte +194 -0
- package/dist/components/vfs/LockIndicator.svelte.d.ts +29 -0
- package/dist/components/vfs/LockOverlay.svelte +344 -0
- package/dist/components/vfs/LockOverlay.svelte.d.ts +17 -0
- package/dist/components/vfs/VersionConflictDialog.svelte +549 -0
- package/dist/components/vfs/VersionConflictDialog.svelte.d.ts +24 -0
- package/dist/components/vfs/index.d.ts +4 -0
- package/dist/components/vfs/index.js +5 -0
- package/dist/crdt/awareness.d.ts +42 -0
- package/dist/crdt/awareness.js +109 -0
- package/dist/crdt/document.d.ts +101 -0
- package/dist/crdt/document.js +187 -0
- package/dist/crdt/index.d.ts +9 -0
- package/dist/crdt/index.js +8 -0
- package/dist/crdt/provider.d.ts +85 -0
- package/dist/crdt/provider.js +150 -0
- package/dist/crdt/types.d.ts +61 -0
- package/dist/crdt/types.js +4 -0
- package/dist/crdt/undo.d.ts +34 -0
- package/dist/crdt/undo.js +70 -0
- package/dist/index.d.ts +277 -0
- package/dist/index.js +280 -0
- package/dist/plugins/index.d.ts +103 -0
- package/dist/plugins/index.js +153 -0
- package/dist/services/error-handling.d.ts +95 -0
- package/dist/services/error-handling.js +413 -0
- package/dist/services/ide-integration.d.ts +83 -0
- package/dist/services/ide-integration.js +367 -0
- package/dist/services/lsp-client.d.ts +69 -0
- package/dist/services/lsp-client.js +667 -0
- package/dist/services/mock-ai.d.ts +37 -0
- package/dist/services/mock-ai.js +318 -0
- package/dist/services/optimistic.d.ts +141 -0
- package/dist/services/optimistic.js +367 -0
- package/dist/services/vfs-client.d.ts +81 -0
- package/dist/services/vfs-client.js +348 -0
- package/dist/stores/agents.svelte.d.ts +85 -0
- package/dist/stores/agents.svelte.js +459 -0
- package/dist/stores/ai-persistence.svelte.d.ts +76 -0
- package/dist/stores/ai-persistence.svelte.js +334 -0
- package/dist/stores/ai.svelte.d.ts +140 -0
- package/dist/stores/ai.svelte.js +383 -0
- package/dist/stores/collaboration.svelte.d.ts +164 -0
- package/dist/stores/collaboration.svelte.js +334 -0
- package/dist/stores/editor.svelte.d.ts +131 -0
- package/dist/stores/editor.svelte.js +250 -0
- package/dist/stores/index.d.ts +10 -0
- package/dist/stores/index.js +29 -0
- package/dist/stores/layout.svelte.d.ts +171 -0
- package/dist/stores/layout.svelte.js +351 -0
- package/dist/stores/plugin.svelte.d.ts +121 -0
- package/dist/stores/plugin.svelte.js +410 -0
- package/dist/stores/vfs.svelte.d.ts +123 -0
- package/dist/stores/vfs.svelte.js +680 -0
- package/dist/styles/theme.css +623 -0
- package/dist/types/agents.d.ts +127 -0
- package/dist/types/agents.js +5 -0
- package/dist/types/ai.d.ts +137 -0
- package/dist/types/ai.js +4 -0
- package/dist/types/crdt.d.ts +222 -0
- package/dist/types/crdt.js +5 -0
- package/dist/types/editor.d.ts +52 -0
- package/dist/types/editor.js +18 -0
- package/dist/types/events.d.ts +133 -0
- package/dist/types/events.js +4 -0
- package/dist/types/filesystem.d.ts +77 -0
- package/dist/types/filesystem.js +4 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.js +12 -0
- package/dist/types/lsp.d.ts +691 -0
- package/dist/types/lsp.js +108 -0
- package/dist/types/plugin.d.ts +239 -0
- package/dist/types/plugin.js +5 -0
- package/dist/types/vfs.d.ts +191 -0
- package/dist/types/vfs.js +18 -0
- package/dist/utils/format.d.ts +55 -0
- package/dist/utils/format.js +152 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/keybindings.d.ts +33 -0
- package/dist/utils/keybindings.js +171 -0
- package/dist/utils/language.d.ts +27 -0
- package/dist/utils/language.js +222 -0
- package/package.json +178 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nocturnium and Jordan Dziat
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# @nocturnium/svelte-ide
|
|
2
|
+
|
|
3
|
+
Lightweight, Svelte 5-native code editor components — a simpler alternative to
|
|
4
|
+
CodeMirror when you want a fast, themeable editor without dragging in a full IDE
|
|
5
|
+
framework.
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/@nocturnium/svelte-ide)
|
|
8
|
+
[](./LICENSE)
|
|
9
|
+
[](https://svelte.dev)
|
|
10
|
+
|
|
11
|
+
Built from scratch with Svelte 5 runes and zero runtime UI dependencies. Use a
|
|
12
|
+
single `<CustomEditor>` for a textarea-grade upgrade, or compose the editor,
|
|
13
|
+
LSP, collaboration, AI, and plugin pieces into a full IDE experience.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Features
|
|
18
|
+
|
|
19
|
+
- **Custom code editor** — no CodeMirror, no Monaco; pure Svelte 5.
|
|
20
|
+
- **Syntax highlighting** for 12 languages via a built-in tokenizer.
|
|
21
|
+
- **Code folding** — bracket, indentation, comment, and region strategies.
|
|
22
|
+
- **Multi-cursor editing** with overlap merging and configurable limits.
|
|
23
|
+
- **Find & replace** with regex support.
|
|
24
|
+
- **LSP client** — autocomplete, hover, signatures, diagnostics over WebSocket.
|
|
25
|
+
- **Realtime collaboration** (optional) — CRDT/Yjs, tree-shakeable.
|
|
26
|
+
- **AI panel & agent presence** layers for assistant-driven editing.
|
|
27
|
+
- **Plugin system** with a proposal-based lifecycle (bring your own backend).
|
|
28
|
+
- **Themeable** — every color/size is a CSS custom property you can override.
|
|
29
|
+
- **Zero external UI dependencies**; collaboration deps are optional peers.
|
|
30
|
+
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install @nocturnium/svelte-ide
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Requires **Svelte 5** (declared as a peer dependency).
|
|
38
|
+
|
|
39
|
+
Collaboration is optional and tree-shakeable — install these only if you use the
|
|
40
|
+
`./crdt` entry point or `<CollaborativeEditor>`:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm install yjs y-websocket y-protocols
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Quick start
|
|
47
|
+
|
|
48
|
+
Import the component **and** the theme stylesheet (components are unstyled
|
|
49
|
+
without the design tokens):
|
|
50
|
+
|
|
51
|
+
```svelte
|
|
52
|
+
<script>
|
|
53
|
+
import { CustomEditor } from '@nocturnium/svelte-ide';
|
|
54
|
+
import '@nocturnium/svelte-ide/theme.css';
|
|
55
|
+
|
|
56
|
+
let code = $state('function hello() {\n console.log("world");\n}');
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<CustomEditor
|
|
60
|
+
content={code}
|
|
61
|
+
language="javascript"
|
|
62
|
+
onChange={(value) => (code = value)}
|
|
63
|
+
/>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`<CustomEditor>` also accepts `readonly`, `folding`, `multiCursor`, `maxCursors`,
|
|
67
|
+
`preferences`, and callbacks like `onCursorsChange`, `onSave`, and
|
|
68
|
+
`onComplexityChange`. See the [Editor guide](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/editor.md).
|
|
69
|
+
|
|
70
|
+
> **Theme it your way:** all tokens are CSS variables on `:root` (prefixed
|
|
71
|
+
> `--ide-*` and `--color-nocturnium-*`). Override them in a stylesheet loaded
|
|
72
|
+
> after `theme.css` — see [Theming](https://github.com/nocturnium/svelte-ide/blob/main/docs/theming.md).
|
|
73
|
+
|
|
74
|
+
## Language support
|
|
75
|
+
|
|
76
|
+
JavaScript · TypeScript · JSX · TSX · HTML · XML · CSS · JSON · Python · Go ·
|
|
77
|
+
Markdown · Svelte (plus a `plaintext` fallback). Call `getSupportedLanguages()`
|
|
78
|
+
to enumerate them at runtime.
|
|
79
|
+
|
|
80
|
+
## Feature highlights
|
|
81
|
+
|
|
82
|
+
### Language Server Protocol
|
|
83
|
+
|
|
84
|
+
```svelte
|
|
85
|
+
<script>
|
|
86
|
+
import { LSPEditor, createLSPClient } from '@nocturnium/svelte-ide';
|
|
87
|
+
import '@nocturnium/svelte-ide/theme.css';
|
|
88
|
+
|
|
89
|
+
const client = createLSPClient({
|
|
90
|
+
serverUrl: 'ws://localhost:8765/lsp?language=typescript',
|
|
91
|
+
rootUri: 'file:///workspace',
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
let code = $state('const greeting: string = "hi";');
|
|
95
|
+
</script>
|
|
96
|
+
|
|
97
|
+
<LSPEditor
|
|
98
|
+
content={code}
|
|
99
|
+
uri="file:///workspace/main.ts"
|
|
100
|
+
language="typescript"
|
|
101
|
+
lspClient={client}
|
|
102
|
+
onChange={(value) => (code = value)}
|
|
103
|
+
onDiagnostics={(diagnostics) => console.log(diagnostics)}
|
|
104
|
+
/>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
You supply the LSP bridge. A ready-to-run Go WebSocket bridge lives in
|
|
108
|
+
[`backend/`](https://github.com/nocturnium/svelte-ide/blob/main/backend/README.md); any LSP-over-WebSocket server works. See the
|
|
109
|
+
[LSP guide](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/lsp.md).
|
|
110
|
+
|
|
111
|
+
### Realtime collaboration (optional)
|
|
112
|
+
|
|
113
|
+
```svelte
|
|
114
|
+
<script>
|
|
115
|
+
import { CollaborativeEditor } from '@nocturnium/svelte-ide';
|
|
116
|
+
import '@nocturnium/svelte-ide/theme.css';
|
|
117
|
+
// requires: npm install yjs y-websocket y-protocols
|
|
118
|
+
|
|
119
|
+
let content = $state('');
|
|
120
|
+
</script>
|
|
121
|
+
|
|
122
|
+
<CollaborativeEditor
|
|
123
|
+
documentId="room-1"
|
|
124
|
+
initialContent="// edit together"
|
|
125
|
+
language="javascript"
|
|
126
|
+
onChange={(value) => (content = value)}
|
|
127
|
+
/>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The collaboration server URL is always caller-supplied — nothing is baked in.
|
|
131
|
+
See the [Collaboration guide](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/collaboration.md).
|
|
132
|
+
|
|
133
|
+
### AI assistant panel
|
|
134
|
+
|
|
135
|
+
```svelte
|
|
136
|
+
<script>
|
|
137
|
+
import { AIPanel } from '@nocturnium/svelte-ide';
|
|
138
|
+
import '@nocturnium/svelte-ide/theme.css';
|
|
139
|
+
</script>
|
|
140
|
+
|
|
141
|
+
<AIPanel />
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
`<AIPanel>` talks to **your own** chat endpoint (configurable; defaults to
|
|
145
|
+
`/api/chat`) via the AI store. Model output is HTML-escaped with link-scheme
|
|
146
|
+
whitelisting before rendering. See the
|
|
147
|
+
[AI & agents guide](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/ai-and-agents.md).
|
|
148
|
+
|
|
149
|
+
## Entry points
|
|
150
|
+
|
|
151
|
+
The package root exposes the **stable core**. Backend-dependent and
|
|
152
|
+
experimental subsystems live behind dedicated subpaths — this keeps intent
|
|
153
|
+
explicit and tree-shaking clean.
|
|
154
|
+
|
|
155
|
+
| Import | Contents |
|
|
156
|
+
| --- | --- |
|
|
157
|
+
| `@nocturnium/svelte-ide` | Stable core: editors, layout shell, file explorer, core UI primitives, editor/language/tokenizer/theme utilities, LSP client, layout-store functions, public types |
|
|
158
|
+
| `@nocturnium/svelte-ide/theme.css` | Default theme (design tokens + component styles) |
|
|
159
|
+
| `.../components/editor` | `CustomEditor`, `Editor`, `EditorPane`, `EditorTabs`, … |
|
|
160
|
+
| `.../components/core` | `Button`, `Icon`, `Input`, `Tooltip`, `ResizeHandle`, … |
|
|
161
|
+
| `.../components/ai` | `AIPanel`, `AIMessage`, `AIInlineEdit`, … |
|
|
162
|
+
| `.../components/lsp` | `LSPEditor`, `AutocompleteWidget`, `HoverTooltip`, … |
|
|
163
|
+
| `.../components/agents` | `AgentAvatar`, `AgentActivityPanel`, `AgentCursor`, … |
|
|
164
|
+
| `.../components/vfs` | `LockIndicator`, `LockConflictDialog`, … |
|
|
165
|
+
| `.../components/layout` | `IDELayout`, `StatusBar` |
|
|
166
|
+
| `.../components/plugins` | `PluginPanel`, `PluginCard`, … |
|
|
167
|
+
| `.../stores` | Full Svelte 5 runes store surface (layout, editor, ai, plugin, …) |
|
|
168
|
+
| `.../plugins` | Plugin runtime (`createPluginLoader`, `definePlugin`, `defineCommand`, `definePanel`, `pluginRegistry`) |
|
|
169
|
+
| `.../crdt` | CRDT collaboration primitives (requires Yjs) |
|
|
170
|
+
| `.../types`, `.../utils` | Full type and helper-function surface |
|
|
171
|
+
|
|
172
|
+
## API Stability
|
|
173
|
+
|
|
174
|
+
This package follows [SemVer](https://semver.org/). The surface is split into a
|
|
175
|
+
stable core and a set of experimental subpaths.
|
|
176
|
+
|
|
177
|
+
**Stable (root entry).** Imported from `@nocturnium/svelte-ide`, these follow
|
|
178
|
+
SemVer and only change with a major version bump:
|
|
179
|
+
|
|
180
|
+
- Editors: `Editor`, `CustomEditor`, `LSPEditor` (`CollaborativeEditor` is
|
|
181
|
+
experimental — see below).
|
|
182
|
+
- Composition: `EditorPane`, `EditorTabs`, `FileExplorer`, `FileIcon`,
|
|
183
|
+
`IDELayout`, `StatusBar`.
|
|
184
|
+
- Core UI primitives: `Button`, `Icon`, `Input`, `Textarea`, `Tooltip`, `Kbd`,
|
|
185
|
+
`Badge`, `Spinner`, `Avatar`, `ContextMenu`, `ResizeHandle`, `ErrorBoundary`,
|
|
186
|
+
`ConnectionStatus`.
|
|
187
|
+
- Editor-core, language, tokenizer, and theme utilities.
|
|
188
|
+
- LSP client: `LSPClient`, `createLSPClient`, the position helpers, and the
|
|
189
|
+
public LSP types (`Diagnostic`, `LSPConnectionState`, `ServerCapabilities`).
|
|
190
|
+
- The curated layout-store functions and the public editor/filesystem/LSP/AI
|
|
191
|
+
types.
|
|
192
|
+
|
|
193
|
+
**Experimental (subpath entries).** These are reachable only via their
|
|
194
|
+
subpaths and **may change in minor versions**:
|
|
195
|
+
|
|
196
|
+
- `./components/agents` — agent presence UI
|
|
197
|
+
- `./components/vfs` — virtual-filesystem lock/conflict UI
|
|
198
|
+
- `./components/plugins` — plugin UI components
|
|
199
|
+
- `./plugins` — plugin runtime/loader
|
|
200
|
+
- `./crdt` and `<CollaborativeEditor>` — realtime collaboration (requires Yjs)
|
|
201
|
+
|
|
202
|
+
The full store, type, and util surfaces exposed via `./stores`, `./types`, and
|
|
203
|
+
`./utils` beyond the curated root set are likewise experimental.
|
|
204
|
+
|
|
205
|
+
## Documentation
|
|
206
|
+
|
|
207
|
+
- **[Documentation hub](https://github.com/nocturnium/svelte-ide/blob/main/docs/README.md)** — full table of contents
|
|
208
|
+
- [Getting started](https://github.com/nocturnium/svelte-ide/blob/main/docs/getting-started.md)
|
|
209
|
+
- [Architecture](https://github.com/nocturnium/svelte-ide/blob/main/docs/architecture.md)
|
|
210
|
+
- [Theming](https://github.com/nocturnium/svelte-ide/blob/main/docs/theming.md)
|
|
211
|
+
- Guides: [Editor](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/editor.md) ·
|
|
212
|
+
[Syntax highlighting](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/syntax-highlighting.md) ·
|
|
213
|
+
[Code folding](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/code-folding.md) ·
|
|
214
|
+
[Multi-cursor](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/multi-cursor.md) ·
|
|
215
|
+
[LSP](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/lsp.md) ·
|
|
216
|
+
[Collaboration](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/collaboration.md) ·
|
|
217
|
+
[AI & agents](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/ai-and-agents.md) ·
|
|
218
|
+
[Plugins](https://github.com/nocturnium/svelte-ide/blob/main/docs/guides/plugins.md)
|
|
219
|
+
- API reference: [Components](https://github.com/nocturnium/svelte-ide/blob/main/docs/api/components.md) ·
|
|
220
|
+
[Stores](https://github.com/nocturnium/svelte-ide/blob/main/docs/api/stores.md) ·
|
|
221
|
+
[Services](https://github.com/nocturnium/svelte-ide/blob/main/docs/api/services.md) ·
|
|
222
|
+
[Types & utils](https://github.com/nocturnium/svelte-ide/blob/main/docs/api/types-and-utils.md)
|
|
223
|
+
|
|
224
|
+
## The LSP backend
|
|
225
|
+
|
|
226
|
+
[`backend/`](https://github.com/nocturnium/svelte-ide/tree/main/backend) is a standalone Go "lsp-bridge" WebSocket server that
|
|
227
|
+
proxies browser editors to native language servers (gopls,
|
|
228
|
+
typescript-language-server, …). It is a separate module — **not** part of the
|
|
229
|
+
npm package — and accepts `localhost` origins only by default. See
|
|
230
|
+
[`backend/README.md`](https://github.com/nocturnium/svelte-ide/blob/main/backend/README.md).
|
|
231
|
+
|
|
232
|
+
## Try the demo
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
git clone https://github.com/nocturnium/svelte-ide.git
|
|
236
|
+
cd svelte-ide
|
|
237
|
+
npm install
|
|
238
|
+
npm run dev # http://localhost:5173
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
The SvelteKit app under `src/routes/` showcases every feature.
|
|
242
|
+
|
|
243
|
+
## Contributing
|
|
244
|
+
|
|
245
|
+
Contributions are welcome! See [CONTRIBUTING.md](https://github.com/nocturnium/svelte-ide/blob/main/CONTRIBUTING.md) for setup,
|
|
246
|
+
scripts, and conventions, and our [Code of Conduct](https://github.com/nocturnium/svelte-ide/blob/main/CODE_OF_CONDUCT.md).
|
|
247
|
+
Security issues: please follow [SECURITY.md](https://github.com/nocturnium/svelte-ide/blob/main/SECURITY.md).
|
|
248
|
+
|
|
249
|
+
## License
|
|
250
|
+
|
|
251
|
+
[MIT](./LICENSE) © Nocturnium and Jordan Dziat
|