d2lang/d2 · error
expected "text-transform" to be one of (%s)
Error message
expected "text-transform" to be one of (%s)
What it means
The "text-transform" style key must be one of d2ast.TextTransforms (e.g. uppercase, lowercase, title, none). Matching is case-insensitive; anything else returns this error listing the valid options.
Source
Thrown at d2graph/d2graph.go:488
if err != nil {
return errors.New(`expected "filled" to be true or false`)
}
s.Filled.Value = value
case "double-border":
if s.DoubleBorder == nil {
break
}
_, err := strconv.ParseBool(value)
if err != nil {
return errors.New(`expected "double-border" to be true or false`)
}
s.DoubleBorder.Value = value
case "text-transform":
if s.TextTransform == nil {
break
}
if !go2.Contains(d2ast.TextTransforms, strings.ToLower(value)) {
return fmt.Errorf(`expected "text-transform" to be one of (%s)`, strings.Join(d2ast.TextTransforms, ", "))
}
s.TextTransform.Value = value
default:
return fmt.Errorf("unknown style key: %s", key)
}
return nil
}
type ContainerLevel int
func (l ContainerLevel) LabelSize() int {
// Largest to smallest
if l == 1 {
return d2fonts.FONT_SIZE_XXL
} else if l == 2 {
return d2fonts.FONT_SIZE_XL
} else if l == 3 {View on GitHub (pinned to 0d69dca6f5)
Solutions
- Use one of: uppercase, lowercase, title, none (see joined list in the message)
- Lowercase the value (matching is case-insensitive, but use canonical form)
- Remove the key if no transform is wanted
Example fix
// before x.style.text-transform: capitalize // after x.style.text-transform: title
Defensive patterns
Strategy: validation
Validate before calling
var textTransforms = map[string]bool{"uppercase":true, "lowercase":true, "title":true, "none":true}
if !textTransforms[strings.ToLower(v)] { /* reject before SetStyle */ } Type guard
func validTextTransform(v string) bool {
return slices.Contains(d2ast.TextTransforms, strings.ToLower(v))
} Try / catch
if err := obj.SetStyle("text-transform", v); err != nil {
return fmt.Errorf("text-transform invalid: %v", err)
} Prevention
- Use only uppercase/lowercase/title/none
- Do not copy CSS text-transform values into .d2
- Keep values lowercase
When it happens
Trigger: Assigning style key "text-transform" with a value not in d2ast.TextTransforms — e.g. "capitalize", "UPPER CASE", or CSS-style values like "initial".
Common situations: Porting CSS text-transform habits into .d2 files, typos such as "titel", or expecting values CSS supports that D2 does not implement.
Related errors
- expected "shadow" to be true or false
- expected "3d" to be true or false
- expected "multiple" to be true or false
- expected "font-size" to be a number between 8 and 100
- expected "font-color" to be a valid named color ("orange"),
AI-assisted analysis of d2lang/d2@0d69dca6f5 (2026-08-31).
Data as JSON: /api/errors/9dcd599acdee12a4.
Report an issue: GitHub.