
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
A simple, feature-rich, and easy-to-use GUI library for better visibility into data intensive applications.
Lightweight, flexible GUI controls for your JavaScript applications
Create beautiful control panels with minimal code
# Using npm
npm install rad-gui
# Using yarn
yarn add rad-gui
import { GUI } from 'rad-gui';
import 'rad-gui/lib/rad-gui.css';
// Create a GUI instance
const gui = new GUI();
const params = { x: 0, y: 0, color: '#ff0000' };
gui.add(params, 'x', 0, 100);
gui.addColor(params, 'color');
import { GUI, ControlEventData } from 'rad-gui';
import 'rad-gui/lib/rad-gui.css';
interface DemoParams {
x: number;
y: number;
color: string;
enabled: boolean;
}
const gui = new GUI({ title: 'Controls', width: 300 });
const params: DemoParams = { x: 0, y: 0, color: '#ff0000', enabled: true };
// Full type safety and IntelliSense support
gui.add(params, 'x', 0, 100)
.onChange((data: ControlEventData<number>) => {
console.log(`X changed to ${data.value}`);
});
gui.addColor(params, 'color');
gui.add(params, 'enabled');
For a complete example, see our TypeScript Example which demonstrates all features with proper typing.
RAD-GUI provides comprehensive type definitions and IntelliSense support for TypeScript projects. The library includes:
// Basic GUI creation
const gui = new GUI();
// With options
const gui = new GUI({
title: 'My Controls',
width: 300,
autoPlace: false,
closeFolders: true
});
// Auto-detected control types
gui.add(object, 'numberProperty'); // → NumberControl
gui.add(object, 'booleanProperty'); // → ToggleControl
gui.add(object, 'stringProperty'); // → TextControl
gui.add(object, 'functionProperty'); // → FunctionControl
// Explicit control types
gui.add(object, 'number', 0, 100, 1); // NumberControl with range
gui.add(object, 'option', ['A', 'B', 'C']); // OptionControl
gui.addColor(object, 'color'); // ColorControl
// Individual control events
gui.add(params, 'value')
.onChange((data: ControlEventData) => {
console.log(`${data.property} changed to ${data.value}`);
})
.onFinishChange((data: ControlEventData) => {
console.log('Finished changing:', data);
});
// Global GUI events
gui.onChange((data: ControlEventData) => {
// Called for any control change
});
gui.onOpenClose((gui: GUI) => {
// Called when folders open/close
});
doSomething() {
console.log('Button clicked!');
}
};
// Add controls
gui.addColor(params, 'color').name('Color');
gui.add(params, 'x', 0, 100).name('X Position');
gui.add(params, 'y', 0, 100).name('Y Position');
gui.add(params, 'enabled').name('Enabled');
gui.add(params, 'option', ['A', 'B', 'C']).name('Option');
gui.add(params, 'doSomething').name('Run Action');
// Create a folder for grouped controls
const folder = gui.addFolder('Advanced Settings');
folder.add(params, 'x').step(5).name('X (Step 5)');
Step-by-step tutorials, best practices, and advanced usage examples
For API details and reference information, visit the API Reference.
This project includes a .llm.reference.md
file specifically designed for AI assistants, agents, and tools to better understand and work with the codebase. This file contains:
AI tools can reference this file to provide more accurate and helpful suggestions when working with rad-gui.
RAD-GUI supports various control types based on the parameter's value and provided options:
Type | Description | Example |
---|---|---|
Number | Slider or text input for numbers | gui.add(params, 'x', 0, 100) |
Boolean | Checkbox for true/false values | gui.add(params, 'visible') |
String | Text input field | gui.add(params, 'name') |
Function | Button that calls a function | gui.add(params, 'save') |
Color | Color picker | gui.addColor(params, 'color') |
Options | Dropdown for selecting from options | gui.add(params, 'size', ['S', 'M', 'L']) |
RAD-GUI is easily styled using CSS variables:
// Create and apply a custom theme
const darkTheme = {
'--background-color': '#1a1a1a',
'--text-color': '#e0e0e0',
'--title-background-color': '#272727',
'--title-text-color': '#ffffff',
'--widget-color': '#2c2c2c',
'--hover-color': '#3c3c3c',
'--focus-color': '#444444',
'--number-color': '#2cc9ff',
'--string-color': '#a2db3c'
};
// Apply theme to a specific GUI instance
Object.entries(darkTheme).forEach(([key, value]) => {
gui.domElement.style.setProperty(key, value);
});
Explore more examples in the examples
directory:
# Install dependencies
npm install
# Build development version
npm run build:dev
# Run tests
npm run test
# View demo
npm run local:kitchen-sink
FAQs
A simple, feature-rich, and easy-to-use GUI library for better visibility into data intensive applications.
The npm package rad-gui receives a total of 8 weekly downloads. As such, rad-gui popularity was classified as not popular.
We found that rad-gui demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.