@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.
Files changed (57) hide show
  1. package/package.json +1 -1
  2. package/server/.next/BUILD_ID +1 -1
  3. package/server/.next/build-manifest.json +2 -2
  4. package/server/.next/prerender-manifest.json +3 -3
  5. package/server/.next/server/app/_global-error.html +2 -2
  6. package/server/.next/server/app/_global-error.rsc +1 -1
  7. package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/server/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/server/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/server/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/server/.next/server/app/_not-found.html +1 -1
  14. package/server/.next/server/app/_not-found.rsc +2 -2
  15. package/server/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  16. package/server/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/server/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/server/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/server/.next/server/app/api/file/route.js.nft.json +1 -1
  22. package/server/.next/server/app/api/rispec/route.js.nft.json +1 -1
  23. package/server/.next/server/app/api/watch/route.js.nft.json +1 -1
  24. package/server/.next/server/app/index.html +1 -1
  25. package/server/.next/server/app/index.rsc +3 -3
  26. package/server/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  27. package/server/.next/server/app/index.segments/_full.segment.rsc +3 -3
  28. package/server/.next/server/app/index.segments/_head.segment.rsc +1 -1
  29. package/server/.next/server/app/index.segments/_index.segment.rsc +2 -2
  30. package/server/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  31. package/server/.next/server/app/page.js.nft.json +1 -1
  32. package/server/.next/server/app/page_client-reference-manifest.js +1 -1
  33. package/server/.next/server/chunks/ssr/{[root-of-the-server]__ac84e72e._.js → [root-of-the-server]__2b35b711._.js} +1 -1
  34. package/server/.next/server/chunks/ssr/[root-of-the-server]__edbb995c._.js +3 -3
  35. package/server/.next/server/pages/404.html +1 -1
  36. package/server/.next/server/pages/500.html +2 -2
  37. package/server/.next/server/server-reference-manifest.js +1 -1
  38. package/server/.next/server/server-reference-manifest.json +1 -1
  39. package/server/.next/static/chunks/50f310b5d321b604.css +2 -0
  40. package/server/.next/static/chunks/b8543b198154e75c.js +10 -0
  41. package/server/package-lock.json +36 -3
  42. package/server/package.json +2 -1
  43. package/server/src/app/globals.css +11 -73
  44. package/server/src/app/layout.tsx +3 -0
  45. package/server/src/components/Canvas.tsx +78 -1325
  46. package/server/src/components/PresenceChips.tsx +77 -0
  47. package/server/src/components/SettingsPanel.tsx +11 -6
  48. package/server/src/components/SocketBridgeProvider.tsx +6 -22
  49. package/server/src/components/Toolbar.tsx +5 -0
  50. package/server/src/types/definition.ts +12 -2
  51. package/server/stateloom-web.json +2 -2
  52. package/server/tsconfig.tsbuildinfo +1 -1
  53. package/server/.next/static/chunks/2c679fab817159f2.css +0 -1
  54. package/server/.next/static/chunks/7921d7703dd690a6.js +0 -10
  55. /package/server/.next/static/{vPEqV8SJpTDJWGy_fRuh4 → WuhCSMxaHZvNZ4hY20AEo}/_buildManifest.js +0 -0
  56. /package/server/.next/static/{vPEqV8SJpTDJWGy_fRuh4 → WuhCSMxaHZvNZ4hY20AEo}/_clientMiddlewareManifest.json +0 -0
  57. /package/server/.next/static/{vPEqV8SJpTDJWGy_fRuh4 → WuhCSMxaHZvNZ4hY20AEo}/_ssgManifest.js +0 -0
@@ -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.0",
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.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.2",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stateloom-web",
3
- "version": "0.1.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
- /* Presence chips ride the top-right corner. Under `viewport-fit=cover` that
112
- corner can be beneath a notch or the status bar, so the offset is measured
113
- from the safe area rather than the raw viewport edge. */
114
- .presence-dock {
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
- /* --- WS7b: live Canvas animations (SVG/CSS only, no libraries) --- */
255
-
256
- /* Node bloom-in: fade + scale from ~0.92 to 1 around the node's own center. */
257
- @keyframes sm-node-in {
258
- from { opacity: 0; transform: scale(0.92); }
259
- to { opacity: 1; transform: scale(1); }
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",