@miadi/stateloom-web 0.1.1 → 0.1.3
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/package.json +1 -1
- package/server/.next/BUILD_ID +1 -1
- package/server/.next/build-manifest.json +2 -2
- package/server/.next/prerender-manifest.json +3 -3
- package/server/.next/server/app/_global-error.html +2 -2
- package/server/.next/server/app/_global-error.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/_not-found.html +1 -1
- package/server/.next/server/app/_not-found.rsc +2 -2
- package/server/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/server/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/api/file/route.js.nft.json +1 -1
- package/server/.next/server/app/api/rispec/route.js.nft.json +1 -1
- package/server/.next/server/app/api/watch/route.js.nft.json +1 -1
- package/server/.next/server/app/index.html +1 -1
- package/server/.next/server/app/index.rsc +3 -3
- package/server/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/server/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/server/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/server/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/server/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/page.js.nft.json +1 -1
- package/server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__ac84e72e._.js → [root-of-the-server]__2b35b711._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__edbb995c._.js +3 -3
- package/server/.next/server/pages/404.html +1 -1
- package/server/.next/server/pages/500.html +2 -2
- package/server/.next/server/server-reference-manifest.js +1 -1
- package/server/.next/server/server-reference-manifest.json +1 -1
- package/server/.next/static/chunks/50f310b5d321b604.css +2 -0
- package/server/.next/static/chunks/b8543b198154e75c.js +10 -0
- package/server/package-lock.json +36 -3
- package/server/package.json +2 -1
- package/server/src/app/globals.css +11 -73
- package/server/src/app/layout.tsx +3 -0
- package/server/src/components/Canvas.tsx +78 -1325
- package/server/src/components/PresenceChips.tsx +77 -0
- package/server/src/components/SettingsPanel.tsx +11 -6
- package/server/src/components/SocketBridgeProvider.tsx +6 -22
- package/server/src/components/Toolbar.tsx +5 -0
- package/server/src/types/definition.ts +12 -2
- package/server/stateloom-web.json +2 -2
- package/server/tsconfig.tsbuildinfo +1 -1
- package/server/.next/static/chunks/2c679fab817159f2.css +0 -1
- package/server/.next/static/chunks/7921d7703dd690a6.js +0 -10
- /package/server/.next/static/{vPEqV8SJpTDJWGy_fRuh4 → WuhCSMxaHZvNZ4hY20AEo}/_buildManifest.js +0 -0
- /package/server/.next/static/{vPEqV8SJpTDJWGy_fRuh4 → WuhCSMxaHZvNZ4hY20AEo}/_clientMiddlewareManifest.json +0 -0
- /package/server/.next/static/{vPEqV8SJpTDJWGy_fRuh4 → WuhCSMxaHZvNZ4hY20AEo}/_ssgManifest.js +0 -0
package/server/package-lock.json
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"name": "stateloom-web",
|
|
9
9
|
"version": "0.1.1",
|
|
10
10
|
"dependencies": {
|
|
11
|
+
"@miadi/stateloom-canvas": "file:../bridge-canvas",
|
|
11
12
|
"@miadi/stateloom-client": "file:../bridge-client",
|
|
12
13
|
"@miadi/stateloom-protocol": "file:../bridge-protocol",
|
|
13
14
|
"@miadi/stateloom-react": "file:../bridge-react",
|
|
@@ -28,9 +29,28 @@
|
|
|
28
29
|
"typescript": "^5"
|
|
29
30
|
}
|
|
30
31
|
},
|
|
32
|
+
"../bridge-canvas": {
|
|
33
|
+
"name": "@miadi/stateloom-canvas",
|
|
34
|
+
"version": "0.1.0",
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@miadi/stateloom-protocol": "file:../bridge-protocol"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/react": "^19",
|
|
41
|
+
"react": "^19",
|
|
42
|
+
"typescript": "^5.7"
|
|
43
|
+
},
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=20"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"react": "^19"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
31
51
|
"../bridge-client": {
|
|
32
52
|
"name": "@miadi/stateloom-client",
|
|
33
|
-
"version": "0.1.
|
|
53
|
+
"version": "0.1.1",
|
|
34
54
|
"license": "MIT",
|
|
35
55
|
"dependencies": {
|
|
36
56
|
"@miadi/stateloom-protocol": "file:../bridge-protocol",
|
|
@@ -40,20 +60,26 @@
|
|
|
40
60
|
"@types/node": "^22",
|
|
41
61
|
"socket.io": "^4.8.1",
|
|
42
62
|
"typescript": "^5.7"
|
|
63
|
+
},
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=20"
|
|
43
66
|
}
|
|
44
67
|
},
|
|
45
68
|
"../bridge-protocol": {
|
|
46
69
|
"name": "@miadi/stateloom-protocol",
|
|
47
|
-
"version": "0.1.
|
|
70
|
+
"version": "0.1.3",
|
|
48
71
|
"license": "MIT",
|
|
49
72
|
"devDependencies": {
|
|
50
73
|
"@types/node": "^22",
|
|
51
74
|
"typescript": "^5.7"
|
|
75
|
+
},
|
|
76
|
+
"engines": {
|
|
77
|
+
"node": ">=20"
|
|
52
78
|
}
|
|
53
79
|
},
|
|
54
80
|
"../bridge-react": {
|
|
55
81
|
"name": "@miadi/stateloom-react",
|
|
56
|
-
"version": "0.1.
|
|
82
|
+
"version": "0.1.4",
|
|
57
83
|
"license": "MIT",
|
|
58
84
|
"dependencies": {
|
|
59
85
|
"@miadi/stateloom-client": "file:../bridge-client",
|
|
@@ -66,6 +92,9 @@
|
|
|
66
92
|
"socket.io": "^4.8.1",
|
|
67
93
|
"typescript": "^5.7"
|
|
68
94
|
},
|
|
95
|
+
"engines": {
|
|
96
|
+
"node": ">=20"
|
|
97
|
+
},
|
|
69
98
|
"peerDependencies": {
|
|
70
99
|
"react": "^19"
|
|
71
100
|
}
|
|
@@ -1068,6 +1097,10 @@
|
|
|
1068
1097
|
"@jridgewell/sourcemap-codec": "^1.4.14"
|
|
1069
1098
|
}
|
|
1070
1099
|
},
|
|
1100
|
+
"node_modules/@miadi/stateloom-canvas": {
|
|
1101
|
+
"resolved": "../bridge-canvas",
|
|
1102
|
+
"link": true
|
|
1103
|
+
},
|
|
1071
1104
|
"node_modules/@miadi/stateloom-client": {
|
|
1072
1105
|
"resolved": "../bridge-client",
|
|
1073
1106
|
"link": true
|
package/server/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stateloom-web",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"private": true,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "next dev -p ${PORT:-4598}",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"lint": "eslint"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
+
"@miadi/stateloom-canvas": "file:../bridge-canvas",
|
|
12
13
|
"@miadi/stateloom-client": "file:../bridge-client",
|
|
13
14
|
"@miadi/stateloom-protocol": "file:../bridge-protocol",
|
|
14
15
|
"@miadi/stateloom-react": "file:../bridge-react",
|
|
@@ -108,15 +108,10 @@ body {
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
/*
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
.
|
|
115
|
-
position: fixed;
|
|
116
|
-
top: calc(env(safe-area-inset-top) + 0.5rem);
|
|
117
|
-
right: calc(env(safe-area-inset-right) + 1rem);
|
|
118
|
-
z-index: 50;
|
|
119
|
-
}
|
|
111
|
+
/* `.presence-dock` lived here: a fixed top-right rail of one pill per peer.
|
|
112
|
+
It grew with the room and painted itself across the toolbar's own controls,
|
|
113
|
+
so presence moved into the toolbar flow as a single fixed-width control —
|
|
114
|
+
see components/PresenceChips.tsx. Nothing floats over the navigation now. */
|
|
120
115
|
|
|
121
116
|
/* The way back. A pinch on the chrome moves the root font size, and every length
|
|
122
117
|
in this stylesheet is a multiple of it — so at 175% the app is legible but the
|
|
@@ -251,67 +246,10 @@ body {
|
|
|
251
246
|
}
|
|
252
247
|
}
|
|
253
248
|
|
|
254
|
-
/* ---
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
/* Node fade-out: fade + scale down as the state leaves the definition. */
|
|
263
|
-
@keyframes sm-node-out {
|
|
264
|
-
from { opacity: 1; transform: scale(1); }
|
|
265
|
-
to { opacity: 0; transform: scale(0.9); }
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/* Edge draw-on: reveal the stroke (pathLength=1 normalises the dash units). */
|
|
269
|
-
@keyframes sm-edge-draw {
|
|
270
|
-
from { stroke-dashoffset: 1; opacity: 0; }
|
|
271
|
-
to { stroke-dashoffset: 0; opacity: 1; }
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/* Runtime-active pulse: a green (#22c55e) glow that layers over any stroke. */
|
|
275
|
-
@keyframes sm-pulse {
|
|
276
|
-
0%, 100% { filter: drop-shadow(0 0 1px rgba(34, 197, 94, 0.55)); }
|
|
277
|
-
50% { filter: drop-shadow(0 0 6px rgba(34, 197, 94, 0.95)); }
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
.sm-node-enter {
|
|
281
|
-
transform-box: fill-box;
|
|
282
|
-
transform-origin: center;
|
|
283
|
-
animation: sm-node-in 220ms ease-out both;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
.sm-node-exit {
|
|
287
|
-
transform-box: fill-box;
|
|
288
|
-
transform-origin: center;
|
|
289
|
-
animation: sm-node-out 200ms ease-in forwards;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
.sm-edge-enter {
|
|
293
|
-
stroke-dasharray: 1;
|
|
294
|
-
animation: sm-edge-draw 260ms ease-out both;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
.sm-node-active {
|
|
298
|
-
animation: sm-pulse 1.2s ease-in-out infinite;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
@media (prefers-reduced-motion: reduce) {
|
|
302
|
-
.sm-node-enter,
|
|
303
|
-
.sm-edge-enter {
|
|
304
|
-
animation: none;
|
|
305
|
-
}
|
|
306
|
-
/* Keep exit near-instant so onAnimationEnd still fires and the node is
|
|
307
|
-
cleaned up from the exiting layer. */
|
|
308
|
-
.sm-node-exit {
|
|
309
|
-
animation-duration: 1ms;
|
|
310
|
-
}
|
|
311
|
-
/* Drop the infinite motion but keep a static glow so active states stay
|
|
312
|
-
distinguishable without relying on motion. */
|
|
313
|
-
.sm-node-active {
|
|
314
|
-
animation: none;
|
|
315
|
-
filter: drop-shadow(0 0 4px rgba(34, 197, 94, 0.85));
|
|
316
|
-
}
|
|
317
|
-
}
|
|
249
|
+
/* --- Live canvas animations ------------------------------------------------
|
|
250
|
+
Moved out with the board itself. The node bloom, the edge draw-on, the
|
|
251
|
+
active-state pulse and their reduced-motion answers now ship as
|
|
252
|
+
`@miadi/stateloom-canvas/styles.css`, imported in app/layout.tsx, so the
|
|
253
|
+
designer and forgewright animate the same way from one source. Nothing in
|
|
254
|
+
this app referenced the old `sm-*` class names outside the canvas, which is
|
|
255
|
+
why they could simply leave. */
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { Metadata, Viewport } from "next";
|
|
2
2
|
import "./globals.css";
|
|
3
|
+
// The board's own colours and animations. It ships with the canvas package so
|
|
4
|
+
// forgewright gets the identical surface from the identical stylesheet.
|
|
5
|
+
import "@miadi/stateloom-canvas/styles.css";
|
|
3
6
|
|
|
4
7
|
export const metadata: Metadata = {
|
|
5
8
|
title: "SMCraft Designer",
|