/**
 * @blinksgg/canvas
 *
 * A batteries-included canvas library for node-based editors
 * with drag, resize, pan/zoom, and Supabase sync.
 */

// Package version - update in package.json and here when releasing
export const CANVAS_VERSION = '2.0.0';

/**
 * Version info for debugging and compatibility checks
 */
export const canvasVersion = {
	version: CANVAS_VERSION,
	major: 2,
	minor: 0,
	patch: 0,
	/** Check if current version is at least the specified version */
	isAtLeast: (major: number, minor = 0, patch = 0) => {
		if (canvasVersion.major > major) return true;
		if (canvasVersion.major < major) return false;
		if (canvasVersion.minor > minor) return true;
		if (canvasVersion.minor < minor) return false;
		return canvasVersion.patch >= patch;
	},
} as const;

// Core state management (headless)
export * from './core';

// Hooks
export * from './hooks';

// Utilities
export * from './utils';

// Database layer (Supabase integration)
export * from './db';

// Styles
export * from './styles';

// Providers
export * from './providers';

// Components
export * from './components';

// Bundled Nodes (pre-built node types)
export * from './nodes';

// Commands system (command palette)
export * from './commands';

// Gesture system
export * as gestures from './gestures';
