@nocturnium/svelte-ide 1.4.0 → 1.5.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/components/ai/AIEditPreview.svelte +36 -6
- package/dist/components/ai/AIPanel.svelte +42 -14
- package/dist/components/core/Button.svelte +11 -4
- package/dist/components/core/Icon.svelte +19 -1
- package/dist/components/core/ResizeHandle.svelte +90 -6
- package/dist/components/core/ResizeHandle.svelte.d.ts +6 -0
- package/dist/components/core/Tooltip.svelte +13 -2
- package/dist/components/editor/EchoCursorLayer.svelte +4 -1
- package/dist/components/editor/GhostBracketLayer.svelte +17 -7
- package/dist/components/editor/GitBlameLayer.svelte +10 -3
- package/dist/components/editor/InlineDiagnosticsLayer.svelte +226 -13
- package/dist/components/editor/InlineDiagnosticsLayer.svelte.d.ts +7 -0
- package/dist/components/editor/InlineDiffLayer.svelte +8 -2
- package/dist/components/editor/PluginPreviewSandbox.svelte +10 -2
- package/dist/components/editor/ProblemsPanel.svelte +40 -5
- package/dist/components/editor/SnippetPalette.svelte +63 -20
- package/dist/components/editor/core/diagnostics.js +4 -1
- package/dist/components/editor/core/snippet-manager.js +3 -3
- package/dist/components/plugins/PluginCard.svelte +21 -1
- package/dist/components/plugins/PluginPanel.svelte +17 -3
- package/dist/styles/theme.css +8 -1
- package/package.json +1 -1
|
@@ -18,7 +18,7 @@ const JS_SNIPPETS = [
|
|
|
18
18
|
prefix: 'log',
|
|
19
19
|
body: 'console.log($1);$0',
|
|
20
20
|
description: 'Log to console',
|
|
21
|
-
languages: ['javascript', 'typescript'
|
|
21
|
+
languages: ['javascript', 'typescript'],
|
|
22
22
|
category: 'Debug',
|
|
23
23
|
isUserDefined: false,
|
|
24
24
|
usageCount: 0,
|
|
@@ -42,7 +42,7 @@ const JS_SNIPPETS = [
|
|
|
42
42
|
prefix: 'af',
|
|
43
43
|
body: 'const ${1:name} = (${2:params}) => {\n\t$0\n};',
|
|
44
44
|
description: 'Arrow function',
|
|
45
|
-
languages: ['javascript', 'typescript'
|
|
45
|
+
languages: ['javascript', 'typescript'],
|
|
46
46
|
category: 'Functions',
|
|
47
47
|
isUserDefined: false,
|
|
48
48
|
usageCount: 0,
|
|
@@ -126,7 +126,7 @@ const JS_SNIPPETS = [
|
|
|
126
126
|
prefix: 'imp',
|
|
127
127
|
body: "import { $2 } from '$1';$0",
|
|
128
128
|
description: 'Named import',
|
|
129
|
-
languages: ['javascript', 'typescript'
|
|
129
|
+
languages: ['javascript', 'typescript'],
|
|
130
130
|
category: 'Modules',
|
|
131
131
|
isUserDefined: false,
|
|
132
132
|
usageCount: 0,
|
|
@@ -68,7 +68,9 @@
|
|
|
68
68
|
{#if installed}
|
|
69
69
|
<Button variant="danger" size="xs" onclick={onUninstall}>Uninstall</Button>
|
|
70
70
|
{:else if plugin.status === 'deployed'}
|
|
71
|
-
<Button variant="primary" size="xs" onclick={onInstall}>
|
|
71
|
+
<Button variant="primary" size="xs" class="plugin-card__install" onclick={onInstall}>
|
|
72
|
+
Install
|
|
73
|
+
</Button>
|
|
72
74
|
{/if}
|
|
73
75
|
</div>
|
|
74
76
|
</div>
|
|
@@ -141,4 +143,22 @@
|
|
|
141
143
|
display: flex;
|
|
142
144
|
align-items: flex-start;
|
|
143
145
|
}
|
|
146
|
+
|
|
147
|
+
/*
|
|
148
|
+
* Install CTA: keep the embedded panel in ONE accent story (wave-blue),
|
|
149
|
+
* instead of the ember-orange `primary` fill competing with the surrounding
|
|
150
|
+
* blue chrome. White-on-blue uses --ide-interactive-strong (deep ocean) for
|
|
151
|
+
* AA-safe contrast (~5.3:1), not the lighter wave (~3.4:1, fails AA). The
|
|
152
|
+
* accent stays BLUE per the owner brand decision.
|
|
153
|
+
*/
|
|
154
|
+
.plugin-card__actions :global(.ide-button.plugin-card__install) {
|
|
155
|
+
background: var(--ide-interactive-strong);
|
|
156
|
+
color: #fff;
|
|
157
|
+
border-color: var(--ide-interactive-strong);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.plugin-card__actions :global(.ide-button.plugin-card__install:hover:not(:disabled)) {
|
|
161
|
+
background: color-mix(in srgb, var(--ide-interactive-strong) 88%, white);
|
|
162
|
+
border-color: color-mix(in srgb, var(--ide-interactive-strong) 88%, white);
|
|
163
|
+
}
|
|
144
164
|
</style>
|
|
@@ -54,7 +54,13 @@
|
|
|
54
54
|
<Badge variant="success" size="sm" dot>Live</Badge>
|
|
55
55
|
{/if}
|
|
56
56
|
</div>
|
|
57
|
-
<Button
|
|
57
|
+
<Button
|
|
58
|
+
variant="ghost"
|
|
59
|
+
size="xs"
|
|
60
|
+
title="Demo only — the create-proposal flow is illustrative on this static host"
|
|
61
|
+
aria-label="New plugin proposal (demo only)"
|
|
62
|
+
onclick={() => (showCreateForm = true)}
|
|
63
|
+
>
|
|
58
64
|
{#snippet icon()}<Icon name="plus" size={14} />{/snippet}
|
|
59
65
|
New
|
|
60
66
|
</Button>
|
|
@@ -110,7 +116,9 @@
|
|
|
110
116
|
{:else if activeTab === 'installed'}
|
|
111
117
|
{#if installedPlugins.length === 0}
|
|
112
118
|
<div class="plugin-panel__empty">
|
|
113
|
-
|
|
119
|
+
<!-- Static container glyph, not the radial `plugin` spoke (which mirrors
|
|
120
|
+
the `loading` glyph and reads as a spinner over this empty copy). -->
|
|
121
|
+
<Icon name="folder" size={32} />
|
|
114
122
|
<p>No plugins installed</p>
|
|
115
123
|
<Button variant="secondary" size="sm" onclick={() => (activeTab = 'available')}>
|
|
116
124
|
Browse Available
|
|
@@ -162,7 +170,13 @@
|
|
|
162
170
|
<div class="plugin-panel__empty">
|
|
163
171
|
<Icon name="file" size={32} />
|
|
164
172
|
<p>No proposals yet</p>
|
|
165
|
-
<Button
|
|
173
|
+
<Button
|
|
174
|
+
variant="primary"
|
|
175
|
+
size="sm"
|
|
176
|
+
title="Demo only — the create-proposal flow is illustrative on this static host"
|
|
177
|
+
aria-label="Create plugin proposal (demo only)"
|
|
178
|
+
onclick={() => (showCreateForm = true)}
|
|
179
|
+
>
|
|
166
180
|
Create Plugin
|
|
167
181
|
</Button>
|
|
168
182
|
</div>
|
package/dist/styles/theme.css
CHANGED
|
@@ -64,12 +64,19 @@
|
|
|
64
64
|
--ide-interactive-focus: var(--color-nocturnium-aurora-blue);
|
|
65
65
|
--ide-interactive-muted: color-mix(in srgb, var(--ide-interactive) 70%, transparent);
|
|
66
66
|
--ide-interactive-rgb: 74, 141, 183;
|
|
67
|
+
/* Deeper blue for FILLED active/selected states paired with white text:
|
|
68
|
+
white on --ide-interactive (#4a8db7) is only ~3.4:1, below WCAG AA; white on
|
|
69
|
+
this ocean blue (#2d5a7b) is ~5.3:1. Use for active pills/toggles/tabs. */
|
|
70
|
+
--ide-interactive-strong: var(--color-nocturnium-ocean);
|
|
67
71
|
|
|
68
72
|
/* Primary action — the signature warm ember accent, shared as a single
|
|
69
73
|
source of truth by primary buttons and badges so "primary" reads the
|
|
70
74
|
same everywhere. */
|
|
71
75
|
--ide-primary: var(--ide-interactive-active);
|
|
72
|
-
|
|
76
|
+
/* Primary hover is a controlled lift of the SAME ember (one deliberate primary),
|
|
77
|
+
not a jump to the separate flame hue — keeps the action color cohesive and
|
|
78
|
+
keeps dark-ink (--ide-text-inverse) label contrast comfortably above AA. */
|
|
79
|
+
--ide-primary-hover: color-mix(in srgb, var(--ide-primary) 85%, white);
|
|
73
80
|
|
|
74
81
|
/* IDE Accent Colors */
|
|
75
82
|
--ide-accent: var(--color-nocturnium-wave);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocturnium/svelte-ide",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Svelte 5 code editor and IDE building blocks — custom editor, syntax highlighting, code folding, multi-cursor, LSP client, and optional realtime collaboration.",
|
|
5
5
|
"author": "Nocturnium & Jordan Dziat <hello@nocturnium.ai> (https://nocturnium.ai)",
|
|
6
6
|
"license": "MIT",
|