html-overlay-node 0.1.9 → 0.1.11

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.
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#1f1f1f"><path d="M600-160v-80H440v-200h-80v80H80v-240h280v80h80v-200h160v-80h280v240H600v-80h-80v320h80v-80h280v240H600Zm80-80h120v-80H680v80ZM160-440h120v-80H160v80Zm520-200h120v-80H680v80Zm0 400v-80 80ZM280-440v-80 80Zm400-200v-80 80Z"/></svg>
package/index.css CHANGED
@@ -1,232 +1,436 @@
1
- html,
2
- body {
3
- height: 100%;
4
- margin: 0;
5
- overflow: hidden;
6
- /* Prevent page scroll */
7
- }
8
-
9
- #wrap {
10
- height: 100%;
11
- width: 100%;
12
- display: flex;
13
- overflow: hidden;
14
- /* Prevent grid overflow */
15
- }
16
-
17
- .content-root {
18
- width: 100%;
19
- height: 100%;
20
- position: relative;
21
- overflow: hidden;
22
- /* KEY FIX: Prevent scroll on zoom/pan */
23
- }
24
-
25
- #cv {
26
- width: 100%;
27
- height: 100%;
28
- display: block;
29
- position: absolute;
30
- top: 0;
31
- left: 0;
32
- }
33
-
34
- button {
35
- margin-right: 8px;
36
- }
37
-
38
- /* Toolbar buttons */
39
- #toolbar button {
40
- padding: 6px 12px;
41
- background: #6366f1;
42
- color: #fff;
43
- border: none;
44
- border-radius: 4px;
45
- font-size: 12px;
46
- font-weight: 500;
47
- cursor: pointer;
48
- transition: all 0.2s ease;
49
- display: flex;
50
- align-items: center;
51
- gap: 4px;
52
- margin: 0;
53
- }
54
-
55
- #toolbar button:hover {
56
- background: #818cf8;
57
- transform: translateY(-1px);
58
- box-shadow: 0 2px 4px rgba(99, 102, 241, 0.3);
59
- }
60
-
61
- #toolbar button:active {
62
- transform: translateY(0);
63
- }
64
-
65
- /* Toolbar */
66
- #toolbar {
67
- z-index: 1000;
68
- position: absolute;
69
- top: 20px;
70
- left: 20px;
71
- display: flex;
72
- gap: 12px;
73
- align-items: center;
74
- padding: 12px 16px;
75
- background: rgba(30, 30, 36, 0.95);
76
- border-radius: 8px;
77
- border: 1px solid #444;
78
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
79
- font-family:
80
- system-ui,
81
- -apple-system,
82
- sans-serif;
83
- font-size: 13px;
84
- color: #e9e9ef;
85
- }
86
-
87
- #toolbar label {
88
- display: flex;
89
- align-items: center;
90
- gap: 6px;
91
- cursor: pointer;
92
- }
93
-
94
- #toolbar select {
95
- padding: 4px 8px;
96
- background: #1a1a1e;
97
- border: 1px solid #555;
98
- border-radius: 4px;
99
- color: #e9e9ef;
100
- font-size: 12px;
101
- }
102
-
103
- .indicator {
104
- padding: 4px 8px;
105
- background: #2a2a31;
106
- border-radius: 4px;
107
- font-size: 11px;
108
- font-weight: 500;
109
- }
110
-
111
- .indicator.active {
112
- background: #3a4a5a;
113
- color: #6cf;
114
- }
115
-
116
- /* Help Overlay */
117
- #helpOverlay {
118
- position: absolute;
119
- bottom: 20px;
120
- left: 20px;
121
- width: 320px;
122
- max-height: 500px;
123
- background: rgba(20, 20, 23, 0.95);
124
- border: 2px solid #444;
125
- border-radius: 8px;
126
- padding: 16px;
127
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.6);
128
- font-family:
129
- system-ui,
130
- -apple-system,
131
- sans-serif;
132
- font-size: 13px;
133
- color: #e9e9ef;
134
- overflow-y: auto;
135
- display: none;
136
- z-index: 1000;
137
- /* Ensure it appears above canvas */
138
- }
139
-
140
- #helpOverlay.visible {
141
- display: block;
142
- }
143
-
144
- #helpOverlay h3 {
145
- margin: 0 0 12px 0;
146
- font-size: 16px;
147
- color: #6cf;
148
- border-bottom: 1px solid #444;
149
- padding-bottom: 8px;
150
- display: flex;
151
- justify-content: space-between;
152
- align-items: center;
153
- }
154
-
155
- #helpOverlay .close-btn {
156
- cursor: pointer;
157
- font-size: 24px;
158
- line-height: 1;
159
- color: #888;
160
- transition: color 0.2s;
161
- background: none;
162
- border: none;
163
- padding: 0;
164
- width: 24px;
165
- height: 24px;
166
- display: flex;
167
- align-items: center;
168
- justify-content: center;
169
- }
170
-
171
- #helpOverlay .close-btn:hover {
172
- color: #6cf;
173
- }
174
-
175
- #helpOverlay h4 {
176
- margin: 16px 0 8px 0;
177
- font-size: 13px;
178
- color: #8aa1ff;
179
- font-weight: 600;
180
- }
181
-
182
- .shortcut-item {
183
- display: flex;
184
- justify-content: space-between;
185
- align-items: center;
186
- padding: 6px 8px;
187
- margin: 4px 0;
188
- background: rgba(42, 42, 49, 0.5);
189
- border-radius: 4px;
190
- }
191
-
192
- .shortcut-key {
193
- font-family: monospace;
194
- font-weight: bold;
195
- padding: 2px 6px;
196
- background: #1a1a1e;
197
- border: 1px solid #555;
198
- border-radius: 3px;
199
- font-size: 11px;
200
- color: #6cf;
201
- }
202
-
203
- #helpToggle {
204
- position: absolute;
205
- bottom: 20px;
206
- left: 20px;
207
- width: 40px;
208
- height: 40px;
209
- background: rgba(30, 30, 36, 0.95);
210
- border: 2px solid #444;
211
- border-radius: 50%;
212
- display: flex;
213
- align-items: center;
214
- justify-content: center;
215
- font-size: 20px;
216
- font-weight: bold;
217
- color: #6cf;
218
- cursor: pointer;
219
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
220
- transition: all 0.2s ease;
221
- z-index: 1000;
222
- /* Ensure it appears above canvas */
223
- }
224
-
225
- #helpToggle:hover {
226
- background: rgba(42, 42, 49, 0.95);
227
- transform: scale(1.05);
228
- }
229
-
230
- #helpToggle.active {
231
- background: #3a4a5a;
232
- }
1
+ :root {
2
+ /* Colors */
3
+ --color-primary: #6366f1;
4
+ --color-primary-hover: #818cf8;
5
+ --color-primary-active: #5568d0;
6
+ --color-bg-deep: rgba(10, 10, 18, 0.96);
7
+ --color-bg-surface: rgba(255, 255, 255, 0.05);
8
+ --color-bg-toolbar: rgba(12, 12, 20, 0.92);
9
+ --color-border: rgba(255, 255, 255, 0.08);
10
+ --color-border-light: rgba(255, 255, 255, 0.04);
11
+ --color-border-focus: rgba(99, 102, 241, 0.4);
12
+ --color-text-main: #f5f5f5;
13
+ --color-text-dim: #a0a0c0;
14
+ --color-text-muted: #8080a0;
15
+ --color-text-disabled: #4a4a68;
16
+
17
+ /* Layout */
18
+ --radius-xs: 1px;
19
+ --radius-sm: 2px;
20
+ --radius-md: 2px;
21
+ --radius-lg: 4px;
22
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
23
+ --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
24
+ --shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.6);
25
+
26
+ /* Node Categories - Premium Palette */
27
+ --color-node-default: #3b3b4f;
28
+ --color-node-logic: #7c3aed;
29
+ --color-node-action: #059669;
30
+ --color-node-data: #2563eb;
31
+ --color-node-info: #4f46e5;
32
+ --color-node-event: #d97706;
33
+ --color-node-math: #db2777;
34
+
35
+ --font-main: "Inter", system-ui, -apple-system, sans-serif;
36
+ --font-mono: "JetBrains Mono", "SF Mono", "Cascadia Code", monospace;
37
+ }
38
+
39
+ html,
40
+ body {
41
+ height: 100%;
42
+ margin: 0;
43
+ overflow: hidden;
44
+ font-family: var(--font-main);
45
+ background-color: #0c0c14;
46
+ }
47
+
48
+ #wrap {
49
+ height: 100%;
50
+ width: 100%;
51
+ display: flex;
52
+ overflow: hidden;
53
+ }
54
+
55
+ .content-root {
56
+ width: 100%;
57
+ height: 100%;
58
+ position: relative;
59
+ overflow: hidden;
60
+ }
61
+
62
+ #cv {
63
+ width: 100%;
64
+ height: 100%;
65
+ display: block;
66
+ position: absolute;
67
+ top: 0;
68
+ left: 0;
69
+ }
70
+
71
+ /* ── Toolbar ─────────────────────────────────────────────────── */
72
+ #toolbar {
73
+ z-index: 1000;
74
+ position: absolute;
75
+ top: 16px;
76
+ left: 16px;
77
+ display: flex;
78
+ gap: 4px;
79
+ align-items: center;
80
+ padding: 6px 10px;
81
+ background: var(--color-bg-toolbar);
82
+ backdrop-filter: blur(8px);
83
+ border-radius: var(--radius-md);
84
+ border: 1px solid var(--color-border);
85
+ box-shadow: var(--shadow-sm), var(--shadow-md);
86
+ font-size: 12px;
87
+ color: var(--color-text-muted);
88
+ }
89
+
90
+ #toolbar button {
91
+ padding: 4px 10px;
92
+ background: transparent;
93
+ color: var(--color-text-muted);
94
+ border: 1px solid transparent;
95
+ border-radius: var(--radius-sm);
96
+ font-size: 11px;
97
+ font-weight: 500;
98
+ cursor: pointer;
99
+ letter-spacing: 0.4px;
100
+ transition: all 0.12s ease;
101
+ margin: 0;
102
+ white-space: nowrap;
103
+ }
104
+
105
+ #toolbar button:hover {
106
+ background: rgba(255, 255, 255, 0.05);
107
+ color: #b0b0d0;
108
+ border-color: rgba(255, 255, 255, 0.08);
109
+ }
110
+
111
+ #toolbar button:active {
112
+ background: rgba(255, 255, 255, 0.03);
113
+ }
114
+
115
+ .toolbar-sep {
116
+ width: 1px;
117
+ height: 16px;
118
+ background: rgba(255, 255, 255, 0.08);
119
+ margin: 0 6px;
120
+ flex-shrink: 0;
121
+ }
122
+
123
+ #toolbar label {
124
+ display: flex;
125
+ align-items: center;
126
+ gap: 6px;
127
+ cursor: pointer;
128
+ color: #606080;
129
+ font-size: 11px;
130
+ }
131
+
132
+ #toolbar select {
133
+ padding: 3px 24px 3px 8px;
134
+ background: var(--color-bg-surface);
135
+ border: 1px solid var(--color-border);
136
+ border-radius: var(--radius-md);
137
+ color: var(--color-text-dim);
138
+ font-size: 11px;
139
+ cursor: pointer;
140
+ outline: none;
141
+ transition: all 0.15s ease;
142
+ appearance: none;
143
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23606080' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
144
+ background-repeat: no-repeat;
145
+ background-position: right 8px center;
146
+ }
147
+
148
+ #toolbar select:hover {
149
+ border-color: var(--color-border-focus);
150
+ color: var(--color-text-main);
151
+ background-color: var(--color-bg-toolbar);
152
+ }
153
+
154
+ #toolbar select:focus {
155
+ border-color: var(--color-primary);
156
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15);
157
+ }
158
+
159
+ .indicator {
160
+ padding: 3px 8px;
161
+ background: transparent;
162
+ border: 1px solid rgba(255, 255, 255, 0.06);
163
+ border-radius: 3px;
164
+ font-size: 10px;
165
+ font-weight: 500;
166
+ letter-spacing: 0.4px;
167
+ color: #4a4a68;
168
+ text-transform: uppercase;
169
+ transition: all 0.15s ease;
170
+ }
171
+
172
+ .indicator.active {
173
+ color: #5568d0;
174
+ border-color: rgba(85, 104, 208, 0.3);
175
+ background: rgba(85, 104, 208, 0.06);
176
+ }
177
+
178
+ /* ── Mode Toggle ────────────────────────────────────────────── */
179
+ .mode-toggle {
180
+ display: flex;
181
+ background: rgba(0, 0, 0, 0.2);
182
+ padding: 2px;
183
+ border-radius: var(--radius-sm);
184
+ gap: 2px;
185
+ }
186
+
187
+ .mode-toggle button {
188
+ padding: 3px 12px !important;
189
+ font-size: 10px !important;
190
+ text-transform: uppercase;
191
+ letter-spacing: 0.5px;
192
+ border: 1px solid transparent !important;
193
+ opacity: 0.4;
194
+ }
195
+
196
+ .mode-toggle button:hover {
197
+ opacity: 1;
198
+ background: rgba(255, 255, 255, 0.05) !important;
199
+ }
200
+
201
+ .mode-toggle button.active {
202
+ opacity: 1;
203
+ font-weight: 700;
204
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
205
+ }
206
+
207
+ /* Run Mode Active State (Emerald) */
208
+ .mode-toggle button[data-mode="run"].active {
209
+ color: #10b981 !important;
210
+ background: rgba(16, 185, 129, 0.1) !important;
211
+ border-color: rgba(16, 185, 129, 0.3) !important;
212
+ box-shadow: 0 0 12px rgba(16, 185, 129, 0.15);
213
+ }
214
+
215
+ /* Step Mode Active State (Violet) */
216
+ .mode-toggle button[data-mode="step"].active {
217
+ color: #a78bfa !important;
218
+ background: rgba(139, 92, 246, 0.1) !important;
219
+ border-color: rgba(139, 92, 246, 0.3) !important;
220
+ box-shadow: 0 0 12px rgba(139, 92, 246, 0.15);
221
+ }
222
+
223
+ /* ── Help Overlay ─────────────────────────────────────────────── */
224
+ #helpOverlay {
225
+ position: absolute;
226
+ bottom: 16px;
227
+ left: 16px;
228
+ width: 300px;
229
+ max-height: 480px;
230
+ background: var(--color-bg-deep);
231
+ backdrop-filter: blur(12px);
232
+ border: 1px solid var(--color-border);
233
+ border-radius: var(--radius-lg);
234
+ padding: 14px;
235
+ box-shadow: var(--shadow-md), var(--shadow-lg);
236
+ font-size: 12px;
237
+ color: var(--color-text-muted);
238
+ overflow-y: auto;
239
+ display: none;
240
+ z-index: 1000;
241
+ scrollbar-width: thin;
242
+ scrollbar-color: rgba(255, 255, 255, 0.1) transparent;
243
+ }
244
+
245
+ #helpOverlay::-webkit-scrollbar {
246
+ width: 5px;
247
+ }
248
+
249
+ #helpOverlay::-webkit-scrollbar-track {
250
+ background: transparent;
251
+ }
252
+
253
+ #helpOverlay::-webkit-scrollbar-thumb {
254
+ background: rgba(255, 255, 255, 0.12);
255
+ border-radius: 10px;
256
+ }
257
+
258
+ #helpOverlay::-webkit-scrollbar-thumb:hover {
259
+ background: rgba(255, 255, 255, 0.2);
260
+ }
261
+
262
+ #helpOverlay.visible {
263
+ display: block;
264
+ }
265
+
266
+ #helpOverlay h3 {
267
+ margin: 0 0 10px 0;
268
+ font-size: 12px;
269
+ font-weight: 600;
270
+ color: var(--color-text-dim);
271
+ border-bottom: 1px solid var(--color-border);
272
+ padding-bottom: 8px;
273
+ display: flex;
274
+ justify-content: space-between;
275
+ align-items: center;
276
+ letter-spacing: 0.5px;
277
+ text-transform: uppercase;
278
+ }
279
+
280
+ #helpOverlay .close-btn {
281
+ cursor: pointer;
282
+ font-size: 18px;
283
+ line-height: 1;
284
+ color: #4a4a68;
285
+ transition: color 0.15s;
286
+ background: none;
287
+ border: none;
288
+ padding: 0;
289
+ width: 20px;
290
+ height: 20px;
291
+ display: flex;
292
+ align-items: center;
293
+ justify-content: center;
294
+ }
295
+
296
+ #helpOverlay .close-btn:hover {
297
+ color: #8888a8;
298
+ }
299
+
300
+ #helpOverlay h4 {
301
+ margin: 12px 0 6px 0;
302
+ font-size: 10px;
303
+ color: #4a4a68;
304
+ font-weight: 600;
305
+ text-transform: uppercase;
306
+ letter-spacing: 0.8px;
307
+ }
308
+
309
+ .shortcut-item {
310
+ display: flex;
311
+ justify-content: space-between;
312
+ align-items: center;
313
+ padding: 4px 6px;
314
+ margin: 2px 0;
315
+ border-radius: 3px;
316
+ }
317
+
318
+ .shortcut-item:hover {
319
+ background: rgba(255, 255, 255, 0.03);
320
+ }
321
+
322
+ .shortcut-item span:first-child {
323
+ font-size: 11px;
324
+ color: #68688a;
325
+ }
326
+
327
+ .shortcut-key {
328
+ font-family: var(--font-mono);
329
+ font-weight: 600;
330
+ padding: 2px 5px;
331
+ background: var(--color-bg-surface);
332
+ border: 1px solid var(--color-border);
333
+ border-radius: var(--radius-sm);
334
+ font-size: 10px;
335
+ color: var(--color-primary);
336
+ letter-spacing: 0.2px;
337
+ }
338
+
339
+ #helpToggle {
340
+ position: absolute;
341
+ bottom: 16px;
342
+ left: 16px;
343
+ width: 28px;
344
+ height: 28px;
345
+ background: var(--color-bg-toolbar);
346
+ backdrop-filter: blur(8px);
347
+ border: 1px solid var(--color-border);
348
+ border-radius: var(--radius-sm);
349
+ display: flex;
350
+ align-items: center;
351
+ justify-content: center;
352
+ font-size: 13px;
353
+ font-weight: 600;
354
+ color: var(--color-text-disabled);
355
+ cursor: pointer;
356
+ box-shadow: var(--shadow-sm);
357
+ transition: all 0.12s ease;
358
+ z-index: 1000;
359
+ }
360
+
361
+ #helpToggle:hover {
362
+ background: var(--color-bg-deep);
363
+ color: var(--color-text-dim);
364
+ border-color: var(--color-border-focus);
365
+ }
366
+
367
+ #helpToggle.active {
368
+ color: var(--color-primary);
369
+ border-color: var(--color-primary-active);
370
+ background: rgba(99, 102, 241, 0.08);
371
+ }
372
+
373
+ /* ── Premium Components ───────────────────────────────────────── */
374
+ .premium-input {
375
+ width: 100%;
376
+ padding: 6px 10px;
377
+ background: rgba(0, 0, 0, 0.4) !important;
378
+ border: 1px solid rgba(255, 255, 255, 0.1) !important;
379
+ border-radius: var(--radius-sm) !important;
380
+ color: var(--color-text-main) !important;
381
+ font-size: 11px !important;
382
+ font-family: var(--font-mono) !important;
383
+ outline: none !important;
384
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
385
+ box-sizing: border-box !important;
386
+ pointer-events: auto !important;
387
+ }
388
+
389
+ .premium-input:focus {
390
+ border-color: var(--color-primary) !important;
391
+ background: rgba(0, 0, 0, 0.6) !important;
392
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15) !important;
393
+ }
394
+
395
+ .premium-button {
396
+ padding: 4px 12px;
397
+ background: rgba(99, 102, 241, 0.1);
398
+ border: 1px solid rgba(99, 102, 241, 0.3);
399
+ border-radius: var(--radius-sm);
400
+ color: var(--color-primary-hover);
401
+ font-size: 11px;
402
+ font-weight: 600;
403
+ cursor: pointer;
404
+ transition: all 0.2s ease;
405
+ pointer-events: auto;
406
+ }
407
+
408
+ .premium-button:hover {
409
+ background: var(--color-primary);
410
+ color: white;
411
+ border-color: var(--color-primary);
412
+ }
413
+
414
+ .premium-label {
415
+ color: var(--color-text-muted);
416
+ font-size: 10px;
417
+ font-weight: 600;
418
+ letter-spacing: 0.05em;
419
+ text-transform: uppercase;
420
+ margin-bottom: 6px;
421
+ display: block;
422
+ }
423
+
424
+ .node-overlay {
425
+ /* Let the canvas renderer handle the box rendering */
426
+ border-radius: var(--radius-md);
427
+ pointer-events: none;
428
+ }
429
+
430
+ .node-body {
431
+ padding-top: 10px; /* Offset to clear port labels */
432
+ }
433
+
434
+ .node-header-accent {
435
+ display: none; /* Redundant now */
436
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "html-overlay-node",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "LiteGraph-style node editor with HTML overlay support",
5
5
  "main": "./src/index.js",
6
6
  "module": "./src/index.js",