Code/CraftingStation.cs
using Sandbox;
using System;
using System.Collections.Generic;

/// <summary>
/// Place on any world object to make it a crafting station.
/// Press E to open the crafting panel with this station's recipes.
/// </summary>
public sealed class CraftingStation : Component
{
    [Property] public string StationName { get; set; } = "Crafting Station";

    [Property] public List<CraftingRecipe> Recipes { get; set; } = new();

    /// <summary>
    /// How far the player can be before the crafting panel auto-closes.
    /// </summary>
    [Property] public float CloseDistance { get; set; } = 200f;

    /// <summary>
    /// Fire this to open the crafting panel for this station.
    /// PlayerPickupHandler calls it on E-press.
    /// Subscribe in your HUD to handle it.
    /// </summary>
    public static Action<CraftingStation> OnStationOpened;
}