HomeDial Annotations Annotations Reference
Complete reference for all @dial annotations. These JSDoc comments control how your UI is generated.
Quick Reference
propertyName: type;
Property Annotations
Core Annotations
Annotation Description Values Example @dial <group>Assigns property to a named group. Groups related properties together for organized UI. string@dial appearance@dial-dtype <type>Specifies data type explicitly. Overrides automatic type inference. Supported: boolean, number, int, number-int, string, color, select, vector, vector3, euler, interface, object string@dial-dtype color@dial-ignoreExcludes property from schema. Use for internal properties, React props like className, or any property you don't want in the control panel - @dial-ignore@dial-options <json>Options for select/dropdown. Required for select dtype. Can be an array of strings or objects with label/value pairs array@dial-options ["a", "b", "c"]
Display Annotations
Annotation Description Values Example @dial-label <text>Custom display label. Overrides property name as control label string@dial-label "3D Position"@dial-icon <name>Lucide icon name. Adds icon next to control. See Lucide Icons string@dial-icon Palette@dial-placeholder <text>Input placeholder text. Shows hint text in empty inputs string@dial-placeholder "Enter..."@dial-tooltip <text>Hover tooltip. Displays helpful information on hover string@dial-tooltip "Help text"
Numeric Constraints
Annotation Description Values Example @dial-min <n>Minimum value for numeric inputs number@dial-min 0@dial-max <n>Maximum value for numeric inputs number@dial-max 100@dial-step <n>Step increment for numeric inputs number@dial-step 0.1@dial-value <v>Default value for the control any@dial-value 50@dial-default <v>Alias for @dial-value any@dial-default "text"
Vector-Specific Annotations
For tuple/vector types with per-element settings.
Annotation Description Values Example @dial-mins <array>Min values per element number[]@dial-mins [0, 0, 0]@dial-maxs <array>Max values per element number[]@dial-maxs [10, 10, 10]@dial-steps <array>Step values per element number[]@dial-steps [0.1, 0.1, 0.1]@dial-dtypes <array>Data types per element string[]@dial-dtypes ["int", "int", "int"]@dial-placeholders <array>Placeholders per element string[]@dial-placeholders ["X", "Y", "Z"]@dial-tooltips <array>Tooltips per element string[]@dial-tooltips ["X axis", "Y axis", "Z axis"]
Label Position Annotations
Annotation Description Values Example @dial-label-position <pos>Label position left, right, top, bottom, center, inline@dial-label-position top@dial-label-leftShorthand for left - @dial-label-left@dial-label-rightShorthand for right - @dial-label-right@dial-label-topShorthand for top - @dial-label-top@dial-label-bottomShorthand for bottom - @dial-label-bottom@dial-label-centerShorthand for center - @dial-label-center@dial-label-inlineShorthand for inline - @dial-label-inline
Layout Annotations
Annotation Description Values Example @dial-col-span <n>Column span in grid number@dial-col-span 2@dial-row-span <n>Row span in grid number@dial-row-span 2
Ordering Annotations
Control the display order of properties and groups in the generated UI.
Annotation Description Values Example @dial-order <n>Property display order within its group. Lower numbers appear first. Properties without order appear after ordered ones. number@dial-order 1@dial-group-order <n>Group display order. Lower numbers appear first. Groups without order appear after ordered ones. number@dial-group-order 1
Group Annotations
Apply to the first property in a group to configure the entire group layout.
Layout Configuration
Annotation Description Values Example @dial-group-layout <type>Layout system grid, flex@dial-group-layout grid@dial-group-grid-cols <n>Grid columns number@dial-group-grid-cols 3@dial-group-grid-rows <n>Grid rows number@dial-group-grid-rows 2@dial-group-grid-flow <dir>Grid flow row, column@dial-group-grid-flow row@dial-group-grid-col-templateCSS grid columns string@dial-group-grid-col-template "1fr 2fr"@dial-group-grid-row-templateCSS grid rows string@dial-group-grid-row-template "auto 1fr"@dial-group-flex-wrapFlex wrap behavior nowrap, wrap, wrap-reverse@dial-group-flex-wrap wrap@dial-group-flex-justify-contentFlex justify content flex-start, flex-end, center, space-between, space-around, space-evenly@dial-group-flex-justify-content center
Shorthand Group Annotations
Shorthand Full Form Description @dial-layout <type>@dial-group-layoutLayout type @dial-cols <n>@dial-group-grid-colsColumn count @dial-grid-cols <n>@dial-group-grid-colsColumn count (alternative) @dial-rows <n>@dial-group-grid-rowsRow count @dial-grid-rows <n>@dial-group-grid-rowsRow count (alternative) @dial-flow <dir>@dial-group-grid-flowFlow direction @dial-grid-flow <dir>@dial-group-grid-flowFlow direction (alternative) @dial-col-template@dial-group-grid-col-templateColumn template @dial-grid-col-template@dial-group-grid-col-templateColumn template (alternative) @dial-row-template@dial-group-grid-row-templateRow template @dial-grid-row-template@dial-group-grid-row-templateRow template (alternative) @dial-wrap@dial-group-flex-wrapFlex wrap @dial-flex-wrap@dial-group-flex-wrapFlex wrap (alternative) @dial-justify@dial-group-flex-justify-contentFlex justify @dial-flex-justify-content@dial-group-flex-justify-contentFlex justify (alternative)
Supported Data Types
dtype TypeScript Type UI Control Description booleanbooleanToggle On/off switch numbernumberSlider Decimal values int, number-intnumberInteger Slider Whole numbers stringstringText Input Text field colorstringColor Picker Hex color selectstring | unionDropdown Select from options vectorNamed tuple Complex Vector Any dimension, per-element constraints vector3[n, n, n]3D Vector X, Y, Z inputs (simplified) euler[n, n, n]Euler Angles Rotation degrees interfaceinterfaceNested Panel Nested control panel objectobjectNested Panel Nested control panel
Examples
Basic Property with All Annotations
interface Props {
opacity: number ;
}
Group with Layout
interface Props {
x: number ;
y: number ;
z: number ;
}
Vector with Per-Element Constraints
type RGB = [
r: number ,
g: number ,
b: number ,
] ;
interface Props {
color: RGB ;
}
Select with Options
interface Props {
material: string ;
}
Component-Level Ignore
export const InternalComponent : FC < Props > = ( ) => { } ;
Property and Group Ordering
interface OrderedProps {
title: string ;
description: string ;
theme: string ;
color: string ;
notes: string ;
}
Complete Example
interface CompleteExample {
position: [ number , number , number ] ;
rotX: number ;
rotY: number ;
rotZ: number ;
color: string ;
opacity: number ;
visible: boolean ;
shadows: boolean ;
_internal: any ;
}
Best Practices
Always specify dtype for clarity and correct control rendering
Group related properties using meaningful group names
Use descriptive labels when property names aren't clear
Set appropriate min/max/step for numeric values
Add icons to improve visual recognition
Use placeholders for text inputs and vector elements
Add tooltips for properties that need explanation
Use @dial-ignore for internal/private properties
Next Steps