User-visible follow-ups after first running the Phase 2 spike.
Spawn tool now matches legacy UX:
- CursorSphere from @pascal-app/editor for the placement indicator
(ring + line + tool-icon tooltip) — was a plain sphere mesh.
- Emits sfx:structure-build on commit + setTool(null) + setMode
('select') to exit build mode, matching legacy spawn-tool.
Shelf tool placement:
- Emits sfx:structure-build on commit.
- Cursor preview now shows top board + brackets (was just the top),
matching what gets placed.
Shelf selectable from the 3D canvas:
- ShelfEvent type added to @pascal-app/core/events/bus.
- 'shelf' added to NodeConfig in useNodeEvents.
- ShelfRenderer wires `useNodeEvents(node, 'shelf')` handlers onto
every mesh. Clicks/hovers now bubble through the editor's selection
manager and update useViewer.selection.
Shelf appears in the sidebar:
- ShelfTreeNode component (mirrors spawn-tree-node's shape +
selection/hover/rename wiring; lucide Layers icon).
- TreeNode dispatcher adds a `case 'shelf':` arm.
Framework changes:
- @pascal-app/editor exports CursorSphere alongside triggerSFX.
- @pascal-app/nodes now declares @pascal-app/editor as peer/dev dep.
Pre-existing typecheck errors in @pascal-app/editor (ceiling-tree-node,
fence-tree-node, slab-tree-node, scene.ts) are unchanged — present on
main and not introduced by this commit.
630 tests still pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
43 lines
2.2 KiB
TypeScript
43 lines
2.2 KiB
TypeScript
export type { EditorProps } from './components/editor'
|
|
export { default as Editor } from './components/editor'
|
|
export {
|
|
type SnapshotCameraData,
|
|
ThumbnailGenerator,
|
|
} from './components/editor/thumbnail-generator'
|
|
export { CursorSphere } from './components/tools/shared/cursor-sphere'
|
|
export { CameraActions as ViewerToolbarRight } from './components/ui/action-menu/camera-actions'
|
|
export { ViewToggles as ViewerToolbarLeft } from './components/ui/action-menu/view-toggles'
|
|
export { useCommandPalette } from './components/ui/command-palette'
|
|
export { SliderControl } from './components/ui/controls/slider-control'
|
|
export { FloatingLevelSelector } from './components/ui/floating-level-selector'
|
|
export { CATALOG_ITEMS } from './components/ui/item-catalog/catalog-items'
|
|
export { PALETTE_COLORS } from './components/ui/primitives/color-dot'
|
|
export { useSidebarStore } from './components/ui/primitives/sidebar'
|
|
export { Slider } from './components/ui/primitives/slider'
|
|
export { SceneLoader } from './components/ui/scene-loader'
|
|
export type { ExtraPanel } from './components/ui/sidebar/icon-rail'
|
|
export { ItemsPanel } from './components/ui/sidebar/panels/items-panel'
|
|
export {
|
|
type ProjectVisibility,
|
|
SettingsPanel,
|
|
type SettingsPanelProps,
|
|
} from './components/ui/sidebar/panels/settings-panel'
|
|
export type { SitePanelProps } from './components/ui/sidebar/panels/site-panel'
|
|
export type { SidebarTab } from './components/ui/sidebar/tab-bar'
|
|
export type { PresetsAdapter, PresetsTab } from './contexts/presets-context'
|
|
export { PresetsProvider } from './contexts/presets-context'
|
|
export type { SaveStatus } from './hooks/use-auto-save'
|
|
export type { SceneGraph } from './lib/scene'
|
|
export { applySceneGraphToEditor } from './lib/scene'
|
|
export { triggerSFX } from './lib/sfx-bus'
|
|
export { default as useAudio } from './store/use-audio'
|
|
export { type CommandAction, useCommandRegistry } from './store/use-command-registry'
|
|
export type { FloorplanSelectionTool, SplitOrientation, ViewMode } from './store/use-editor'
|
|
export { default as useEditor } from './store/use-editor'
|
|
export {
|
|
type PaletteView,
|
|
type PaletteViewProps,
|
|
usePaletteViewRegistry,
|
|
} from './store/use-palette-view-registry'
|
|
export { useUploadStore } from './store/use-upload'
|