@vibecook/ice 0.1.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.
Files changed (148) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +76 -0
  3. package/dist/chunk-5S7GSXJG.js +6003 -0
  4. package/dist/chunk-5S7GSXJG.js.map +1 -0
  5. package/dist/chunk-BCJ47SX7.js +550 -0
  6. package/dist/chunk-BCJ47SX7.js.map +1 -0
  7. package/dist/chunk-FIAXPNNY.js +1446 -0
  8. package/dist/chunk-FIAXPNNY.js.map +1 -0
  9. package/dist/devtools.js +417 -0
  10. package/dist/devtools.js.map +1 -0
  11. package/dist/dom.js +41 -0
  12. package/dist/dom.js.map +1 -0
  13. package/dist/index.js +450 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/kernel.js +63 -0
  16. package/dist/kernel.js.map +1 -0
  17. package/dist/r3f.js +1101 -0
  18. package/dist/r3f.js.map +1 -0
  19. package/dist/react.js +440 -0
  20. package/dist/react.js.map +1 -0
  21. package/dist/types/packages/core/src/boot/hmr.d.ts +12 -0
  22. package/dist/types/packages/core/src/catalog/camera-derived.d.ts +144 -0
  23. package/dist/types/packages/core/src/catalog/gesture.d.ts +254 -0
  24. package/dist/types/packages/core/src/catalog/graph.d.ts +55 -0
  25. package/dist/types/packages/core/src/catalog/index.d.ts +32 -0
  26. package/dist/types/packages/core/src/catalog/pointer.d.ts +111 -0
  27. package/dist/types/packages/core/src/catalog/scene.d.ts +34 -0
  28. package/dist/types/packages/core/src/catalog/selection-presence.d.ts +53 -0
  29. package/dist/types/packages/core/src/catalog/settings-resources.d.ts +46 -0
  30. package/dist/types/packages/core/src/doc/autosave.d.ts +69 -0
  31. package/dist/types/packages/core/src/doc/bootstrap.d.ts +74 -0
  32. package/dist/types/packages/core/src/doc/broadcast-relay.d.ts +52 -0
  33. package/dist/types/packages/core/src/doc/channels.d.ts +49 -0
  34. package/dist/types/packages/core/src/doc/doc-commit-sink.d.ts +22 -0
  35. package/dist/types/packages/core/src/doc/doc-kit.d.ts +50 -0
  36. package/dist/types/packages/core/src/doc/envelope.d.ts +36 -0
  37. package/dist/types/packages/core/src/doc/migrate.d.ts +69 -0
  38. package/dist/types/packages/core/src/doc/version-gate.d.ts +49 -0
  39. package/dist/types/packages/core/src/engine/commit-sink.d.ts +61 -0
  40. package/dist/types/packages/core/src/engine/engine.d.ts +62 -0
  41. package/dist/types/packages/core/src/engine/frame-info.d.ts +16 -0
  42. package/dist/types/packages/core/src/engine/instantiate.d.ts +45 -0
  43. package/dist/types/packages/core/src/engine/pipeline.d.ts +17 -0
  44. package/dist/types/packages/core/src/engine/reflectors.d.ts +56 -0
  45. package/dist/types/packages/core/src/facade/create-canvas-engine.d.ts +120 -0
  46. package/dist/types/packages/core/src/guards/dev.d.ts +2 -0
  47. package/dist/types/packages/core/src/guards/guarded-tx.d.ts +51 -0
  48. package/dist/types/packages/core/src/guards/live-writer.d.ts +33 -0
  49. package/dist/types/packages/core/src/guards/resource-writer.d.ts +17 -0
  50. package/dist/types/packages/core/src/helpers/phase-set.d.ts +70 -0
  51. package/dist/types/packages/core/src/helpers/version-stamps.d.ts +55 -0
  52. package/dist/types/packages/core/src/index.d.ts +63 -0
  53. package/dist/types/packages/core/src/input/measure-queue.d.ts +30 -0
  54. package/dist/types/packages/core/src/input/queue.d.ts +60 -0
  55. package/dist/types/packages/core/src/interaction/install.d.ts +58 -0
  56. package/dist/types/packages/core/src/nav/nested-canvas.d.ts +62 -0
  57. package/dist/types/packages/core/src/ops/cascade.d.ts +18 -0
  58. package/dist/types/packages/core/src/ops/claims.d.ts +15 -0
  59. package/dist/types/packages/core/src/ops/gestures.d.ts +10 -0
  60. package/dist/types/packages/core/src/ops/point-pick.d.ts +42 -0
  61. package/dist/types/packages/core/src/ops/port-geometry.d.ts +17 -0
  62. package/dist/types/packages/core/src/ops/selection.d.ts +14 -0
  63. package/dist/types/packages/core/src/presence/index.d.ts +7 -0
  64. package/dist/types/packages/core/src/presence/presence-kit.d.ts +39 -0
  65. package/dist/types/packages/core/src/presence/publish.d.ts +14 -0
  66. package/dist/types/packages/core/src/presence/remote-cursors.d.ts +18 -0
  67. package/dist/types/packages/core/src/schema/meta.d.ts +43 -0
  68. package/dist/types/packages/core/src/schema/prefab.d.ts +69 -0
  69. package/dist/types/packages/core/src/settings/defaults.d.ts +56 -0
  70. package/dist/types/packages/core/src/systems/camera-sim.d.ts +19 -0
  71. package/dist/types/packages/core/src/systems/chrome.d.ts +48 -0
  72. package/dist/types/packages/core/src/systems/cleanup.d.ts +19 -0
  73. package/dist/types/packages/core/src/systems/l0-input.d.ts +31 -0
  74. package/dist/types/packages/core/src/systems/l1-pick.d.ts +44 -0
  75. package/dist/types/packages/core/src/systems/l1-wires.d.ts +30 -0
  76. package/dist/types/packages/core/src/systems/l2-arbitrate.d.ts +40 -0
  77. package/dist/types/packages/core/src/systems/l2-recognize.d.ts +45 -0
  78. package/dist/types/packages/core/src/systems/l3-behave.d.ts +24 -0
  79. package/dist/types/packages/core/src/systems/l3-claim.d.ts +26 -0
  80. package/dist/types/packages/core/src/systems/l3-connect.d.ts +57 -0
  81. package/dist/types/packages/core/src/systems/l3-draw.d.ts +21 -0
  82. package/dist/types/packages/core/src/systems/l3-drop.d.ts +21 -0
  83. package/dist/types/packages/core/src/systems/l3-marquee.d.ts +35 -0
  84. package/dist/types/packages/core/src/systems/l3-ports.d.ts +30 -0
  85. package/dist/types/packages/core/src/systems/l3-resize.d.ts +17 -0
  86. package/dist/types/packages/core/src/systems/l3-snap.d.ts +19 -0
  87. package/dist/types/packages/core/src/systems/l4-cursor.d.ts +24 -0
  88. package/dist/types/packages/core/src/systems/measure-ingest.d.ts +26 -0
  89. package/dist/types/packages/core/src/tools/define-tool.d.ts +79 -0
  90. package/dist/types/packages/core/src/widget/define-widget.d.ts +124 -0
  91. package/dist/types/packages/core/src/widget/equip.d.ts +14 -0
  92. package/dist/types/packages/core/src/widget/mount-store.d.ts +47 -0
  93. package/dist/types/packages/core/src/widget/props.d.ts +98 -0
  94. package/dist/types/packages/core/src/widget/spawn.d.ts +30 -0
  95. package/dist/types/packages/devtools/src/index.d.ts +8 -0
  96. package/dist/types/packages/devtools/src/panel.d.ts +48 -0
  97. package/dist/types/packages/dom/src/host.d.ts +24 -0
  98. package/dist/types/packages/dom/src/index.d.ts +19 -0
  99. package/dist/types/packages/dom/src/loop.d.ts +11 -0
  100. package/dist/types/packages/dom/src/measure-adapter.d.ts +31 -0
  101. package/dist/types/packages/dom/src/measure-wiring.d.ts +49 -0
  102. package/dist/types/packages/dom/src/planes.d.ts +33 -0
  103. package/dist/types/packages/dom/src/pointer-adapter.d.ts +48 -0
  104. package/dist/types/packages/dom/src/reflectors/chrome.d.ts +33 -0
  105. package/dist/types/packages/dom/src/reflectors/cursor.d.ts +21 -0
  106. package/dist/types/packages/dom/src/reflectors/dom-widgets.d.ts +54 -0
  107. package/dist/types/packages/dom/src/reflectors/graybox.d.ts +31 -0
  108. package/dist/types/packages/dom/src/reflectors/grid.d.ts +63 -0
  109. package/dist/types/packages/dom/src/reflectors/plane-transform.d.ts +38 -0
  110. package/dist/types/packages/dom/src/reflectors/remote-cursors.d.ts +20 -0
  111. package/dist/types/packages/dom/src/reflectors/wires.d.ts +88 -0
  112. package/dist/types/packages/ice/src/devtools.d.ts +1 -0
  113. package/dist/types/packages/ice/src/dom.d.ts +1 -0
  114. package/dist/types/packages/ice/src/index.d.ts +1 -0
  115. package/dist/types/packages/ice/src/kernel.d.ts +1 -0
  116. package/dist/types/packages/ice/src/r3f.d.ts +1 -0
  117. package/dist/types/packages/ice/src/react.d.ts +1 -0
  118. package/dist/types/packages/kernel/src/anchors.d.ts +18 -0
  119. package/dist/types/packages/kernel/src/bezier.d.ts +38 -0
  120. package/dist/types/packages/kernel/src/coords.d.ts +67 -0
  121. package/dist/types/packages/kernel/src/eviction.d.ts +23 -0
  122. package/dist/types/packages/kernel/src/index.d.ts +13 -0
  123. package/dist/types/packages/kernel/src/shapes.d.ts +22 -0
  124. package/dist/types/packages/kernel/src/snap.d.ts +44 -0
  125. package/dist/types/packages/kernel/src/spatial-index.d.ts +16 -0
  126. package/dist/types/packages/kernel/src/zoom-bands.d.ts +19 -0
  127. package/dist/types/packages/r3f/src/bridge.d.ts +68 -0
  128. package/dist/types/packages/r3f/src/composite-material.d.ts +17 -0
  129. package/dist/types/packages/r3f/src/compositor-pass.d.ts +83 -0
  130. package/dist/types/packages/r3f/src/dev-write-trap.d.ts +30 -0
  131. package/dist/types/packages/r3f/src/gl-root.d.ts +21 -0
  132. package/dist/types/packages/r3f/src/gl-router.d.ts +60 -0
  133. package/dist/types/packages/r3f/src/index.d.ts +16 -0
  134. package/dist/types/packages/r3f/src/island-state.d.ts +68 -0
  135. package/dist/types/packages/r3f/src/island.d.ts +13 -0
  136. package/dist/types/packages/r3f/src/pool.d.ts +56 -0
  137. package/dist/types/packages/r3f/src/resource-registry.d.ts +30 -0
  138. package/dist/types/packages/r3f/src/use-island-frame.d.ts +24 -0
  139. package/dist/types/packages/react/src/engine-context.d.ts +31 -0
  140. package/dist/types/packages/react/src/hooks.d.ts +40 -0
  141. package/dist/types/packages/react/src/index.d.ts +14 -0
  142. package/dist/types/packages/react/src/infinite-canvas.d.ts +71 -0
  143. package/dist/types/packages/react/src/keymap.d.ts +42 -0
  144. package/dist/types/packages/react/src/use-commit.d.ts +35 -0
  145. package/dist/types/packages/react/src/use-presence.d.ts +23 -0
  146. package/dist/types/packages/react/src/use-tool.d.ts +4 -0
  147. package/dist/types/packages/react/src/widget-root.d.ts +33 -0
  148. package/package.json +112 -0
@@ -0,0 +1,144 @@
1
+ /** The single live camera (F2). `gesturing` gates the compositor DPR (design-004). */
2
+ export declare const Camera: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
3
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
4
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
5
+ readonly zoom: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
6
+ readonly gesturing: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
7
+ }>, {
8
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
9
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
10
+ readonly zoom: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
11
+ readonly gesturing: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
12
+ }>;
13
+ /** Viewport size + device pixel ratio. */
14
+ export declare const Viewport: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
15
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
16
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
17
+ readonly dpr: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
18
+ }>, {
19
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
20
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
21
+ readonly dpr: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
22
+ }>;
23
+ /** The active tool id (defaults to select). */
24
+ export declare const ActiveTool: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
25
+ readonly id: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
26
+ }>, {
27
+ readonly id: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
28
+ }>;
29
+ /** Global snap toggle + threshold in screen px (scaled by zoom at use, design-003 §5.2). */
30
+ export declare const SnapConfig: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
31
+ readonly enabled: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
32
+ readonly thresholdPx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
33
+ }>, {
34
+ readonly enabled: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
35
+ readonly thresholdPx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
36
+ }>;
37
+ /** Per-container view-state memory — a runtime rider on container widgets (design-001 §5.7). */
38
+ export declare const ContainerCamera: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
39
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
40
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
41
+ readonly zoom: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
42
+ }>, {
43
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
44
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
45
+ readonly zoom: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
46
+ }>;
47
+ /** Widget's ChildOf chain roots in the CURRENT nav frame (activeMembership system). */
48
+ export declare const Active: import("@vibecook/strata-ecs").Tag;
49
+ /** In the viewport. Invariant: Active widgets are Visible ⊕ Culled. */
50
+ export declare const Visible: import("@vibecook/strata-ecs").Tag;
51
+ /** Outside the viewport. */
52
+ export declare const Culled: import("@vibecook/strata-ecs").Tag;
53
+ /** LOD tier + the effective size it was computed from (5 thresholds, width AND height). */
54
+ export declare const WidgetBreakpoint: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
55
+ readonly tier: import("@vibecook/strata-ecs").FieldSpec<import("@vibecook/strata-ecs").EnumType<"micro" | "compact" | "normal" | "expanded" | "detailed">, true>;
56
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"u16", true>;
57
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"u16", true>;
58
+ }>, {
59
+ readonly tier: import("@vibecook/strata-ecs").FieldSpec<import("@vibecook/strata-ecs").EnumType<"micro" | "compact" | "normal" | "expanded" | "detailed">, true>;
60
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"u16", true>;
61
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"u16", true>;
62
+ }>;
63
+ /** Session rider on auto-sized widgets (ResizeObserver → queue → ingest; never committed). */
64
+ export declare const MeasuredSize: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
65
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
66
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
67
+ }>, {
68
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
69
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
70
+ }>;
71
+ /** Selection outline rect. */
72
+ export declare const SelectionBox: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
73
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
74
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
75
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
76
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
77
+ }>, {
78
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
79
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
80
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
81
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
82
+ }>;
83
+ /** A resize handle's anchor (the one chrome kind behaviors capture). */
84
+ export declare const HandleSpec: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
85
+ readonly anchor: import("@vibecook/strata-ecs").EnumType<"w" | "n" | "e" | "s" | "nw" | "ne" | "se" | "sw">;
86
+ }>, {
87
+ readonly anchor: import("@vibecook/strata-ecs").EnumType<"w" | "n" | "e" | "s" | "nw" | "ne" | "se" | "sw">;
88
+ }>;
89
+ /** A snap guide line along one axis. */
90
+ export declare const GuideLine: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
91
+ readonly axis: import("@vibecook/strata-ecs").EnumType<"x" | "y">;
92
+ readonly at: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
93
+ readonly from: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
94
+ readonly to: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
95
+ }>, {
96
+ readonly axis: import("@vibecook/strata-ecs").EnumType<"x" | "y">;
97
+ readonly at: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
98
+ readonly from: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
99
+ readonly to: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
100
+ }>;
101
+ /** Marquee selection rect. */
102
+ export declare const MarqueeBox: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
103
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
104
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
105
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
106
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
107
+ }>, {
108
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
109
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
110
+ readonly w: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
111
+ readonly h: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
112
+ }>;
113
+ /** Cursor appearance — local (OS cursor) vs remote (custom node). */
114
+ export declare const CursorVisual: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
115
+ readonly kind: import("@vibecook/strata-ecs").EnumType<"local" | "remote">;
116
+ readonly pressed: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
117
+ }>, {
118
+ readonly kind: import("@vibecook/strata-ecs").EnumType<"local" | "remote">;
119
+ readonly pressed: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
120
+ }>;
121
+ /** cursor → pointer or presence peer. */
122
+ export declare const Follows: import("@vibecook/strata-ecs").Relation;
123
+ /** chrome → its source (recognizer, selection). */
124
+ export declare const VisualOf: import("@vibecook/strata-ecs").Relation;
125
+ /** Depth of a nav entry (root = 0). */
126
+ export declare const NavDepth: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
127
+ readonly d: import("@vibecook/strata-ecs").FieldSpec<"u8", true>;
128
+ }>, {
129
+ readonly d: import("@vibecook/strata-ecs").FieldSpec<"u8", true>;
130
+ }>;
131
+ /** Camera stored on a nav entry. */
132
+ export declare const NavCamera: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
133
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
134
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
135
+ readonly zoom: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
136
+ }>, {
137
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
138
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
139
+ readonly zoom: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
140
+ }>;
141
+ /** nav entry → container widget. */
142
+ export declare const NavFrame: import("@vibecook/strata-ecs").Relation;
143
+ /** The canvas background entity, so picking always resolves to *something* (design-001 §4). */
144
+ export declare const CanvasSurface: import("@vibecook/strata-ecs").Tag;
@@ -0,0 +1,254 @@
1
+ /** Continuous drag. Origin from dead-zone exit; totals/velocities accumulate; `zoomAtClaim` anchors widget-move math. */
2
+ export declare const Drag: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
3
+ readonly startX: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
4
+ readonly startY: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
5
+ readonly totalX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
6
+ readonly totalY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
7
+ readonly velX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
8
+ readonly velY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
9
+ readonly zoomAtClaim: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
10
+ }>, {
11
+ readonly startX: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
12
+ readonly startY: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
13
+ readonly totalX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
14
+ readonly totalY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
15
+ readonly velX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
16
+ readonly velY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
17
+ readonly zoomAtClaim: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
18
+ }>;
19
+ /**
20
+ * Discrete tap — claims at up within the tap window & slop. `count` is the
21
+ * multi-tap tally (v2 gesture.ts): 0 while the (next) tap is in progress; each
22
+ * clean release increments it. Without a `MultiTap` opt-in on the capture
23
+ * target the first release Recognizes at count 1 — zero added latency.
24
+ */
25
+ export declare const Tap: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
26
+ readonly downAt: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
27
+ readonly count: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
28
+ }>, {
29
+ readonly downAt: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
30
+ readonly count: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
31
+ }>;
32
+ /** Discrete-with-tail: claims at the long-press hold, then tracks cur X/Y per frame (touch marquee rides it). */
33
+ export declare const LongPress: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
34
+ readonly downAt: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
35
+ readonly startX: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
36
+ readonly startY: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
37
+ readonly curX: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
38
+ readonly curY: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
39
+ }>, {
40
+ readonly downAt: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
41
+ readonly startX: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
42
+ readonly startY: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
43
+ readonly curX: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
44
+ readonly curY: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
45
+ }>;
46
+ /** Continuous two-finger pinch. `startDist` re-baselines at activation; `cx/cy` is the centroid. */
47
+ export declare const Pinch: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
48
+ readonly startDist: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
49
+ readonly startZoom: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
50
+ readonly cx: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
51
+ readonly cy: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
52
+ readonly zoomAtClaim: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
53
+ }>, {
54
+ readonly startDist: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
55
+ readonly startZoom: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
56
+ readonly cx: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
57
+ readonly cy: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
58
+ readonly zoomAtClaim: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
59
+ }>;
60
+ /** Continuous wheel pan (`Simultaneous` — never claims pointers). `anchorX/Y` is the screen anchor. */
61
+ export declare const WheelPan: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
62
+ readonly dx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
63
+ readonly dy: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
64
+ readonly anchorX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
65
+ readonly anchorY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
66
+ }>, {
67
+ readonly dx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
68
+ readonly dy: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
69
+ readonly anchorX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
70
+ readonly anchorY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
71
+ }>;
72
+ /** Continuous wheel zoom (`Simultaneous`). `pinch` is the accumulated zoom signal; `anchorX/Y` the pin point. */
73
+ export declare const WheelZoom: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
74
+ readonly pinch: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
75
+ readonly anchorX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
76
+ readonly anchorY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
77
+ }>, {
78
+ readonly pinch: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
79
+ readonly anchorX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
80
+ readonly anchorY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
81
+ }>;
82
+ /**
83
+ * The recognizer lifecycle as ONE PhaseSet (design-003 §4.2): seven mutually-exclusive
84
+ * phases. Each mints a persistent `Gesture<Phase>` tag AND a one-tick `GestureJust<Phase>`
85
+ * marker (plain concatenation — the doc vocabulary "GesturePossible"… is unchanged), so
86
+ * behaviors edge-trigger discrete/terminal actions on the markers exactly once while a
87
+ * terminal tag lingers through the reap window (§4.2, §4.1). The named phase tags below
88
+ * are re-exports of `GesturePhases.tags.*` for ergonomics + `ops/claims` compatibility.
89
+ * `GesturePossible` etc. is the ONLY definition path for these tag names (strata's schema
90
+ * registry is process-global — a second `defineTag("GesturePossible")` would throw).
91
+ *
92
+ * `Pending` (restored from v2 gesture.ts — the design-003 §4.2 "dead machinery" drop is
93
+ * superseded now that a real gesture ships it): criteria met but recognition withheld —
94
+ * a multi-tap awaiting its inter-tap window, or a recognizer parked behind a
95
+ * `Sequence`/`RequiresFail` edge. NEVER reaped; exempt from integrity's watched-pointer
96
+ * count (a pending multi-tap legitimately outlives its lifted touch pointer).
97
+ */
98
+ export declare const GesturePhases: import("..").PhaseSet<"Possible" | "Active" | "Pending" | "Recognized" | "Ended" | "Failed" | "Cancelled">;
99
+ /** Recognizer alive, not yet claiming. */
100
+ export declare const GesturePossible: import("@vibecook/strata-ecs").Tag;
101
+ /** Continuous kinds' claiming phase + per-frame work gate. */
102
+ export declare const GestureActive: import("@vibecook/strata-ecs").Tag;
103
+ /** Recognition withheld (multi-tap window / dependency edge); never reaped. */
104
+ export declare const GesturePending: import("@vibecook/strata-ecs").Tag;
105
+ /** Discrete kinds' terminal claim. */
106
+ export declare const GestureRecognized: import("@vibecook/strata-ecs").Tag;
107
+ /** Continuous kinds' terminal (release). */
108
+ export declare const GestureEnded: import("@vibecook/strata-ecs").Tag;
109
+ /** Recognizer failed its predicate or lost arbitration. */
110
+ export declare const GestureFailed: import("@vibecook/strata-ecs").Tag;
111
+ /** Recognizer cancelled (pointercancel / integrity / CancelRequest). */
112
+ export declare const GestureCancelled: import("@vibecook/strata-ecs").Tag;
113
+ /** Suspended (a pinch suspends the single-pointer recognizers) — "suspend, don't kill". */
114
+ export declare const GestureSuspended: import("@vibecook/strata-ecs").Tag;
115
+ /**
116
+ * The recognizer latched a `Captures` target at spawn (design-003 §4.1 integrity).
117
+ * Relations auto-clear on target despawn, so "had a capture, has none now" is
118
+ * detectable only with this spawn-time mark — integrity cancels on that edge loss.
119
+ */
120
+ export declare const HadCapture: import("@vibecook/strata-ecs").Tag;
121
+ /** Runs alongside claims without competing (wheel pan/zoom) — keeps zoom-while-dragging legal. */
122
+ export declare const Simultaneous: import("@vibecook/strata-ecs").Tag;
123
+ export declare const RoutedMove: import("@vibecook/strata-ecs").Tag;
124
+ export declare const RoutedResize: import("@vibecook/strata-ecs").Tag;
125
+ export declare const RoutedConnect: import("@vibecook/strata-ecs").Tag;
126
+ export declare const RoutedMarquee: import("@vibecook/strata-ecs").Tag;
127
+ export declare const RoutedPan: import("@vibecook/strata-ecs").Tag;
128
+ /** Draw-tool drag: the release rect creates a widget (design-005 §3, M10). */
129
+ export declare const RoutedDraw: import("@vibecook/strata-ecs").Tag;
130
+ /**
131
+ * Per-target multi-tap opt-in (v2 gesture.ts): declares "this target counts
132
+ * multi-taps", read via the recognizer's `Captures` target. Absent → max 1,
133
+ * zero latency (a plain widget stays instant). `windowMs` = the inter-tap
134
+ * wait; `slopPx` = max screen gap between taps for the rejoin.
135
+ */
136
+ export declare const MultiTap: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
137
+ readonly max: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
138
+ readonly windowMs: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
139
+ readonly slopPx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
140
+ }>, {
141
+ readonly max: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
142
+ readonly windowMs: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
143
+ readonly slopPx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
144
+ }>;
145
+ /** recognizer → watched pointer(s). */
146
+ export declare const Watches: import("@vibecook/strata-ecs").Relation;
147
+ /**
148
+ * Sequencing edges (v2 gesture.ts; resolved by the dependency system at the end
149
+ * of `ctl:recognize`). `Sequence` gates the ENTRANCE: a `Pending` recognizer
150
+ * waits for `after` to pass (Active/Recognized), then hands off — Down rebases
151
+ * to the current pointer and the source retires. `RequiresFail` gates the EXIT:
152
+ * a `Pending` recognizer finishes only once `other` fails (discrete →
153
+ * Recognized, continuous → Active); if `other` wins, it loses. Edges auto-clear
154
+ * on despawn, so each carries a `Had*` spawn-time mark (the `HadCapture`
155
+ * pattern): "had an edge, has none" = orphaned → Failed.
156
+ */
157
+ export declare const Sequence: import("@vibecook/strata-ecs").Relation;
158
+ export declare const RequiresFail: import("@vibecook/strata-ecs").Relation;
159
+ /** The recognizer was given a `Sequence` edge (orphan detection — see above). */
160
+ export declare const HadSequence: import("@vibecook/strata-ecs").Tag;
161
+ /** The recognizer was given a `RequiresFail` edge (orphan detection — see above). */
162
+ export declare const HadRequiresFail: import("@vibecook/strata-ecs").Tag;
163
+ /** recognizer → grabbed entity (widget/port/handle/canvas), latched at down. */
164
+ export declare const Captures: import("@vibecook/strata-ecs").Relation;
165
+ /** recognizer → affected widgets (live edge set; remote despawns auto-clear their edge). */
166
+ export declare const Drags: import("@vibecook/strata-ecs").Relation;
167
+ /** pointer → the recognizer that claimed it (arbitration output, design-003 §4.3). */
168
+ export declare const ClaimedBy: import("@vibecook/strata-ecs").Relation;
169
+ /** recognizer → candidate container under the dragged bounds (design-003 §5 dropSystem). */
170
+ export declare const DropTarget: import("@vibecook/strata-ecs").Relation;
171
+ /**
172
+ * Per-dragged-widget origin, attached at claim time with the CURRENT transform embedded
173
+ * (design-001 §3, design-003 §4.5). Bare on purpose: a defaulted zero origin would corrupt
174
+ * the cancel-restore of Position/StackZ.
175
+ */
176
+ export declare const Grab: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
177
+ readonly x: "f64";
178
+ readonly y: "f64";
179
+ readonly w: "f32";
180
+ readonly h: "f32";
181
+ readonly z: "f64";
182
+ }>, {
183
+ readonly x: "f64";
184
+ readonly y: "f64";
185
+ readonly w: "f32";
186
+ readonly h: "f32";
187
+ readonly z: "f64";
188
+ }>;
189
+ /** Snap offset — in the Drag prefab's essential set (present from spawn, zeroed — writers never race an attach). */
190
+ export declare const SnapState: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
191
+ readonly dx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
192
+ readonly dy: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
193
+ }>, {
194
+ readonly dx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
195
+ readonly dy: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
196
+ }>;
197
+ /**
198
+ * The down point + timestamp latched on the recognizer at spawn (design-003 §4.1). Bare: it must
199
+ * carry the real down sample.
200
+ */
201
+ export declare const Down: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
202
+ readonly x: "f64";
203
+ readonly y: "f64";
204
+ readonly ms: "f64";
205
+ }>, {
206
+ readonly x: "f64";
207
+ readonly y: "f64";
208
+ readonly ms: "f64";
209
+ }>;
210
+ /** On widgets, toggled O(1) when the drop candidate changes (design-001 §5.5). */
211
+ export declare const OverlapCandidate: import("@vibecook/strata-ecs").Tag;
212
+ /**
213
+ * Capability: a SOLID widget is a drop-REJECTING target — dragging another
214
+ * widget onto it and releasing flies the dragged set back (v1's iOS-card
215
+ * overlap contract, field report 2026-07-12). Opt-in via `defineWidget`
216
+ * `interaction.solid`; free-overlap apps (moodboard) never equip it.
217
+ */
218
+ export declare const Solid: import("@vibecook/strata-ecs").Tag;
219
+ /**
220
+ * Capability: this widget's drag starts on LONG-PRESS (the iOS home-screen
221
+ * model — hold to lift, then move; taps and widget-internal interactions stay
222
+ * instant). Opt-in via `defineWidget` `interaction.dragOn: "longPress"`.
223
+ * Mechanically: `recognizerSpawn` parks the widget's Drag recognizer
224
+ * `Pending` behind a `Sequence` edge to the same pointer's LongPress — the
225
+ * restored Pending machinery's hand-off does the rest (design-003 §4.2
226
+ * amendment; first production wiring, 2026-07-12).
227
+ */
228
+ export declare const LongPressDrag: import("@vibecook/strata-ecs").Tag;
229
+ /**
230
+ * On a hovered Solid widget (or a mismatched container) while a drag's bounds
231
+ * overlap it: the REJECT half of the drop signal pair (OverlapCandidate is the
232
+ * accept half) — chrome renders the weak "won't take it" glow. Change-only,
233
+ * cleared on move-off and on every move terminal.
234
+ */
235
+ export declare const OverlapRejected: import("@vibecook/strata-ecs").Tag;
236
+ /**
237
+ * Fly-back tween easing Position → target (design-003 §5 move outcome; design-001 §3 amends the
238
+ * per-cell guard so a live tween IS the diverging authority until reconvergence).
239
+ *
240
+ * Minimal shape not spelled out field-by-field in design-001 §5: the target (`toX/toY`) and
241
+ * `durationMs` are supplied at attach (bare); `elapsedMs` starts at 0 and the tween system advances
242
+ * it, removing the component on arrival.
243
+ */
244
+ export declare const TransformTween: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
245
+ readonly toX: "f64";
246
+ readonly toY: "f64";
247
+ readonly durationMs: "f32";
248
+ readonly elapsedMs: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
249
+ }>, {
250
+ readonly toX: "f64";
251
+ readonly toY: "f64";
252
+ readonly durationMs: "f32";
253
+ readonly elapsedMs: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
254
+ }>;
@@ -0,0 +1,55 @@
1
+ /** Marks an entity as a wire. */
2
+ export declare const Wire: import("@vibecook/strata-ecs").Tag;
3
+ /** wire → source widget (durable-eligible). */
4
+ export declare const WireFrom: import("@vibecook/strata-ecs").Relation;
5
+ /** wire → target widget (durable-eligible). */
6
+ export declare const WireTo: import("@vibecook/strata-ecs").Relation;
7
+ /** The port ids (from each widget's port schema) the wire binds to. */
8
+ export declare const WirePorts: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
9
+ readonly from: "string";
10
+ readonly to: "string";
11
+ }>, {
12
+ readonly from: "string";
13
+ readonly to: "string";
14
+ }>;
15
+ /** A widget port descriptor — spawned only for interaction (connect tool / hover proximity). */
16
+ export declare const Port: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
17
+ readonly id: "string";
18
+ readonly side: import("@vibecook/strata-ecs").EnumType<"w" | "n" | "e" | "s">;
19
+ readonly index: import("@vibecook/strata-ecs").FieldSpec<"u8", true>;
20
+ }>, {
21
+ readonly id: "string";
22
+ readonly side: import("@vibecook/strata-ecs").EnumType<"w" | "n" | "e" | "s">;
23
+ readonly index: import("@vibecook/strata-ecs").FieldSpec<"u8", true>;
24
+ }>;
25
+ /** port → widget. */
26
+ export declare const PortOf: import("@vibecook/strata-ecs").Relation;
27
+ /** Derive-owned world coordinates of a port anchor. */
28
+ export declare const PortAnchor: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
29
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
30
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
31
+ }>, {
32
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
33
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
34
+ }>;
35
+ /** Marks a widget as a container (accepts children via the drop system). */
36
+ export declare const Container: import("@vibecook/strata-ecs").Tag;
37
+ /** JSON list of provides-keys this container accepts. */
38
+ export declare const Accepts: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
39
+ readonly list: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
40
+ }>, {
41
+ readonly list: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
42
+ }>;
43
+ /** JSON list of provides-keys this widget offers to containers. */
44
+ export declare const Provides: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
45
+ readonly list: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
46
+ }>, {
47
+ readonly list: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
48
+ }>;
49
+ /**
50
+ * The durable wire prefab (design-001 §5.3): PrefabId "wire" + WirePorts;
51
+ * Wire tag + WireFrom/WireTo edges ride the spawn (doc commit sink executes
52
+ * connect intents). Registered here so the version gate stamps
53
+ * `engine.pack.wire.<v>` like every durable pack.
54
+ */
55
+ export declare const WirePrefab: import("..").Prefab;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The component / tag / relation / resource CATALOG — the vocabulary contract
3
+ * (design-001 §5, design-003 §4). A faithful transcription: names match the
4
+ * design EXACTLY, since these strings are the durable + cross-peer schema.
5
+ *
6
+ * Everything is defined through the recording wrappers in ../schema/meta (never
7
+ * strata directly), so prefab validation and devtools can introspect the shapes.
8
+ *
9
+ * DEFAULTS POLICY (design-001 §5 says "match the doc"; the task asks for prefab
10
+ * ergonomics — reconciled here):
11
+ * - Essential geometry/identity a prefab or commit ALWAYS supplies stays bare
12
+ * (required at spawn): Position, Size, StackZ, WirePorts, Pointer.id/device,
13
+ * Port.id/side, PresenceInfo.
14
+ * - Origin-latch riders that MUST carry real values stay bare: Grab, Down —
15
+ * a defaulted zero origin would corrupt a cancel-restore.
16
+ * - Enum-identity fields that differ per entity stay bare: HandleSpec.anchor,
17
+ * GuideLine.axis, CursorVisual.kind, PresenceCursor.device.
18
+ * - Everything else — runtime accumulators/scratch (recognizer kind components,
19
+ * per-frame value writes), optional-eligible components (Rotation), derived
20
+ * state, and resources — carries a zero/identity default so an ad-hoc attach
21
+ * or `ctx.spawn` needs no boilerplate. Resources especially: one live value
22
+ * that must initialize sanely (origin, zoom 1, select tool).
23
+ *
24
+ * PrefabId is NOT here — it is defined once in ../schema/prefab (§2 rule 5).
25
+ */
26
+ export * from "./scene";
27
+ export * from "./graph";
28
+ export * from "./pointer";
29
+ export * from "./gesture";
30
+ export * from "./selection-presence";
31
+ export * from "./camera-derived";
32
+ export * from "./settings-resources";
@@ -0,0 +1,111 @@
1
+ /** Pointer identity. `owner` is the peer/user id ("" for the local device). */
2
+ export declare const Pointer: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
3
+ readonly id: "string";
4
+ readonly device: import("@vibecook/strata-ecs").EnumType<"mouse" | "touch" | "pen">;
5
+ readonly owner: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
6
+ }>, {
7
+ readonly id: "string";
8
+ readonly device: import("@vibecook/strata-ecs").EnumType<"mouse" | "touch" | "pen">;
9
+ readonly owner: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
10
+ }>;
11
+ /** Screen-space position, CSS px. */
12
+ export declare const PointerScreen: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
13
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
14
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
15
+ }>, {
16
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
17
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
18
+ }>;
19
+ /** Button bitmask + the screen point/time where the current press began. */
20
+ export declare const PointerButtons: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
21
+ readonly buttons: import("@vibecook/strata-ecs").FieldSpec<"u8", true>;
22
+ readonly downX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
23
+ readonly downY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
24
+ /** The down EVENT's timestamp (0 = unknown ⇒ consumers fall back to frame now). */
25
+ readonly downMs: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
26
+ }>, {
27
+ readonly buttons: import("@vibecook/strata-ecs").FieldSpec<"u8", true>;
28
+ readonly downX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
29
+ readonly downY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
30
+ /** The down EVENT's timestamp (0 = unknown ⇒ consumers fall back to frame now). */
31
+ readonly downMs: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
32
+ }>;
33
+ /** Keyboard modifiers latched with the pointer sample. */
34
+ export declare const PointerMods: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
35
+ readonly shift: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
36
+ readonly ctrl: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
37
+ readonly alt: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
38
+ readonly meta: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
39
+ }>, {
40
+ readonly shift: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
41
+ readonly ctrl: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
42
+ readonly alt: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
43
+ readonly meta: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
44
+ }>;
45
+ /** Wheel deltas — accumulate within a tick, zeroed in cleanup. `pinch` is the ctrl-wheel zoom signal. */
46
+ export declare const PointerWheel: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
47
+ readonly dx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
48
+ readonly dy: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
49
+ readonly pinch: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
50
+ }>, {
51
+ readonly dx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
52
+ readonly dy: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
53
+ readonly pinch: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
54
+ }>;
55
+ /** Touch-forgiveness radius, screen px (0 = exact, for mouse/pen). */
56
+ export declare const PointerRadius: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
57
+ readonly r: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
58
+ }>, {
59
+ readonly r: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
60
+ }>;
61
+ /** One-tick: pointer went down this tick (cleared in cleanup). */
62
+ export declare const WentDown: import("@vibecook/strata-ecs").Tag;
63
+ /** One-tick: pointer went up this tick. */
64
+ export declare const WentUp: import("@vibecook/strata-ecs").Tag;
65
+ /** One-tick: pointer was cancelled this tick (pointercancel / touch lost / blur). */
66
+ export declare const WentCancelled: import("@vibecook/strata-ecs").Tag;
67
+ /** The down was consumed by a widget's own DOM handler — recognizers skip it. */
68
+ export declare const HandledByWidget: import("@vibecook/strata-ecs").Tag;
69
+ /** Marks the local device's pointer(s) (vs. presence projections). */
70
+ export declare const LocalPointer: import("@vibecook/strata-ecs").Tag;
71
+ /** Derive-owned world position — screen × camera, recomputed every tick. */
72
+ export declare const PointerWorld: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
73
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
74
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
75
+ }>, {
76
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
77
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
78
+ }>;
79
+ /**
80
+ * Keyboard modifier state (design-003 §2 — minimal keyboard). Written by ingest
81
+ * from adapter key events. `space` is the pan gesture modifier (design-003 §4.4);
82
+ * shortcuts are app handlers between frames, never a tick system.
83
+ */
84
+ export declare const Keyboard: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
85
+ readonly shift: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
86
+ readonly ctrl: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
87
+ readonly alt: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
88
+ readonly meta: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
89
+ readonly space: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
90
+ }>, {
91
+ readonly shift: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
92
+ readonly ctrl: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
93
+ readonly alt: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
94
+ readonly meta: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
95
+ readonly space: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
96
+ }>;
97
+ /**
98
+ * ONE-TICK cancel request (design-003 §4.1/§8): escape / tool switch / doc
99
+ * detach all converge here via `cancelActiveGestures()`. The ctl:spawn sweep
100
+ * consumes it; cleanup clears it — a latched cancel would kill every future
101
+ * gesture forever.
102
+ */
103
+ export declare const CancelRequest: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
104
+ readonly active: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
105
+ }>, {
106
+ readonly active: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
107
+ }>;
108
+ /** pointer → hovered entity (radiused pick — "hover is forgiving"). */
109
+ export declare const Targets: import("@vibecook/strata-ecs").Relation;
110
+ /** pointer → r=0 point-pick target ("grab is precise"). */
111
+ export declare const TouchesExact: import("@vibecook/strata-ecs").Relation;
@@ -0,0 +1,34 @@
1
+ /** Frame-local position, world units. f64 — the infinite canvas loses integer precision in f32 past ~16.7M. */
2
+ export declare const Position: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
3
+ readonly x: "f64";
4
+ readonly y: "f64";
5
+ }>, {
6
+ readonly x: "f64";
7
+ readonly y: "f64";
8
+ }>;
9
+ /** Widget size, world units. f32 — sizes never need f64's range. */
10
+ export declare const Size: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
11
+ readonly w: "f32";
12
+ readonly h: "f32";
13
+ }>, {
14
+ readonly w: "f32";
15
+ readonly h: "f32";
16
+ }>;
17
+ /** Optional-eligible rotation, radians. Identity default so a bare attach is ergonomic. */
18
+ export declare const Rotation: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
19
+ readonly r: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
20
+ }>, {
21
+ readonly r: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
22
+ }>;
23
+ /** Fractional stacking order — z-reorder is one cell write; midpoints jittered, ties break by key. */
24
+ export declare const StackZ: import("@vibecook/strata-ecs").Component<import("@vibecook/strata-ecs").ValueOf<{
25
+ readonly z: "f64";
26
+ }>, {
27
+ readonly z: "f64";
28
+ }>;
29
+ /**
30
+ * child → parent frame (durable-eligible). Replaces the ParentFrame/ContainerChildren triad:
31
+ * children-of-x = `Related(ChildOf, x)`; ancestor walk = forward `getRelation`; engine cascade
32
+ * walks `getReverse(e, ChildOf)` (see ops/cascade.ts).
33
+ */
34
+ export declare const ChildOf: import("@vibecook/strata-ecs").Relation;