diff --git a/e2etests/testdata/txtar/icon-style/dagre/board.exp.json b/e2etests/testdata/txtar/icon-style/dagre/board.exp.json
index ae8607e6d..768640279 100644
--- a/e2etests/testdata/txtar/icon-style/dagre/board.exp.json
+++ b/e2etests/testdata/txtar/icon-style/dagre/board.exp.json
@@ -46,7 +46,9 @@
"Fragment": "",
"RawFragment": ""
},
- "iconBorderRadius": 20,
+ "iconStyle": {
+ "borderRadius": 20
+ },
"iconPosition": "INSIDE_MIDDLE_CENTER",
"blend": false,
"fields": null,
diff --git a/e2etests/testdata/txtar/icon-style/dagre/sketch.exp.svg b/e2etests/testdata/txtar/icon-style/dagre/sketch.exp.svg
index 2a02a9a26..6b9f4e5cb 100644
--- a/e2etests/testdata/txtar/icon-style/dagre/sketch.exp.svg
+++ b/e2etests/testdata/txtar/icon-style/dagre/sketch.exp.svg
@@ -1,9 +1,9 @@
-
\ No newline at end of file
diff --git a/e2etests/testdata/txtar/icon-style/elk/board.exp.json b/e2etests/testdata/txtar/icon-style/elk/board.exp.json
index 67f46fcbf..429ca832b 100644
--- a/e2etests/testdata/txtar/icon-style/elk/board.exp.json
+++ b/e2etests/testdata/txtar/icon-style/elk/board.exp.json
@@ -46,7 +46,9 @@
"Fragment": "",
"RawFragment": ""
},
- "iconBorderRadius": 20,
+ "iconStyle": {
+ "borderRadius": 20
+ },
"iconPosition": "INSIDE_MIDDLE_CENTER",
"blend": false,
"fields": null,
diff --git a/e2etests/testdata/txtar/icon-style/elk/sketch.exp.svg b/e2etests/testdata/txtar/icon-style/elk/sketch.exp.svg
index 7281fa4ab..9bcee2020 100644
--- a/e2etests/testdata/txtar/icon-style/elk/sketch.exp.svg
+++ b/e2etests/testdata/txtar/icon-style/elk/sketch.exp.svg
@@ -1,9 +1,9 @@
- lambda
+ .d2-1884699753 .fill-N1{fill:#0A0F25;}
+ .d2-1884699753 .fill-N2{fill:#676C7E;}
+ .d2-1884699753 .fill-N3{fill:#9499AB;}
+ .d2-1884699753 .fill-N4{fill:#CFD2DD;}
+ .d2-1884699753 .fill-N5{fill:#DEE1EB;}
+ .d2-1884699753 .fill-N6{fill:#EEF1F8;}
+ .d2-1884699753 .fill-N7{fill:#FFFFFF;}
+ .d2-1884699753 .fill-B1{fill:#0D32B2;}
+ .d2-1884699753 .fill-B2{fill:#0D32B2;}
+ .d2-1884699753 .fill-B3{fill:#E3E9FD;}
+ .d2-1884699753 .fill-B4{fill:#E3E9FD;}
+ .d2-1884699753 .fill-B5{fill:#EDF0FD;}
+ .d2-1884699753 .fill-B6{fill:#F7F8FE;}
+ .d2-1884699753 .fill-AA2{fill:#4A6FF3;}
+ .d2-1884699753 .fill-AA4{fill:#EDF0FD;}
+ .d2-1884699753 .fill-AA5{fill:#F7F8FE;}
+ .d2-1884699753 .fill-AB4{fill:#EDF0FD;}
+ .d2-1884699753 .fill-AB5{fill:#F7F8FE;}
+ .d2-1884699753 .stroke-N1{stroke:#0A0F25;}
+ .d2-1884699753 .stroke-N2{stroke:#676C7E;}
+ .d2-1884699753 .stroke-N3{stroke:#9499AB;}
+ .d2-1884699753 .stroke-N4{stroke:#CFD2DD;}
+ .d2-1884699753 .stroke-N5{stroke:#DEE1EB;}
+ .d2-1884699753 .stroke-N6{stroke:#EEF1F8;}
+ .d2-1884699753 .stroke-N7{stroke:#FFFFFF;}
+ .d2-1884699753 .stroke-B1{stroke:#0D32B2;}
+ .d2-1884699753 .stroke-B2{stroke:#0D32B2;}
+ .d2-1884699753 .stroke-B3{stroke:#E3E9FD;}
+ .d2-1884699753 .stroke-B4{stroke:#E3E9FD;}
+ .d2-1884699753 .stroke-B5{stroke:#EDF0FD;}
+ .d2-1884699753 .stroke-B6{stroke:#F7F8FE;}
+ .d2-1884699753 .stroke-AA2{stroke:#4A6FF3;}
+ .d2-1884699753 .stroke-AA4{stroke:#EDF0FD;}
+ .d2-1884699753 .stroke-AA5{stroke:#F7F8FE;}
+ .d2-1884699753 .stroke-AB4{stroke:#EDF0FD;}
+ .d2-1884699753 .stroke-AB5{stroke:#F7F8FE;}
+ .d2-1884699753 .background-color-N1{background-color:#0A0F25;}
+ .d2-1884699753 .background-color-N2{background-color:#676C7E;}
+ .d2-1884699753 .background-color-N3{background-color:#9499AB;}
+ .d2-1884699753 .background-color-N4{background-color:#CFD2DD;}
+ .d2-1884699753 .background-color-N5{background-color:#DEE1EB;}
+ .d2-1884699753 .background-color-N6{background-color:#EEF1F8;}
+ .d2-1884699753 .background-color-N7{background-color:#FFFFFF;}
+ .d2-1884699753 .background-color-B1{background-color:#0D32B2;}
+ .d2-1884699753 .background-color-B2{background-color:#0D32B2;}
+ .d2-1884699753 .background-color-B3{background-color:#E3E9FD;}
+ .d2-1884699753 .background-color-B4{background-color:#E3E9FD;}
+ .d2-1884699753 .background-color-B5{background-color:#EDF0FD;}
+ .d2-1884699753 .background-color-B6{background-color:#F7F8FE;}
+ .d2-1884699753 .background-color-AA2{background-color:#4A6FF3;}
+ .d2-1884699753 .background-color-AA4{background-color:#EDF0FD;}
+ .d2-1884699753 .background-color-AA5{background-color:#F7F8FE;}
+ .d2-1884699753 .background-color-AB4{background-color:#EDF0FD;}
+ .d2-1884699753 .background-color-AB5{background-color:#F7F8FE;}
+ .d2-1884699753 .color-N1{color:#0A0F25;}
+ .d2-1884699753 .color-N2{color:#676C7E;}
+ .d2-1884699753 .color-N3{color:#9499AB;}
+ .d2-1884699753 .color-N4{color:#CFD2DD;}
+ .d2-1884699753 .color-N5{color:#DEE1EB;}
+ .d2-1884699753 .color-N6{color:#EEF1F8;}
+ .d2-1884699753 .color-N7{color:#FFFFFF;}
+ .d2-1884699753 .color-B1{color:#0D32B2;}
+ .d2-1884699753 .color-B2{color:#0D32B2;}
+ .d2-1884699753 .color-B3{color:#E3E9FD;}
+ .d2-1884699753 .color-B4{color:#E3E9FD;}
+ .d2-1884699753 .color-B5{color:#EDF0FD;}
+ .d2-1884699753 .color-B6{color:#F7F8FE;}
+ .d2-1884699753 .color-AA2{color:#4A6FF3;}
+ .d2-1884699753 .color-AA4{color:#EDF0FD;}
+ .d2-1884699753 .color-AA5{color:#F7F8FE;}
+ .d2-1884699753 .color-AB4{color:#EDF0FD;}
+ .d2-1884699753 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-1884699753);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-1884699753);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-1884699753);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-1884699753);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-1884699753);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-1884699753);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-1884699753);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-1884699753);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]> lambda
\ No newline at end of file
diff --git a/testdata/d2compiler/TestCompile/glob-spread-vars/1.exp.json b/testdata/d2compiler/TestCompile/glob-spread-vars/1.exp.json
index b973d1850..11f146c70 100644
--- a/testdata/d2compiler/TestCompile/glob-spread-vars/1.exp.json
+++ b/testdata/d2compiler/TestCompile/glob-spread-vars/1.exp.json
@@ -206,6 +206,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -253,6 +254,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -302,6 +304,7 @@
"value": "red"
}
},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
diff --git a/testdata/d2compiler/TestCompile/glob-spread-vars/2.exp.json b/testdata/d2compiler/TestCompile/glob-spread-vars/2.exp.json
index 52b3ca111..7dc035581 100644
--- a/testdata/d2compiler/TestCompile/glob-spread-vars/2.exp.json
+++ b/testdata/d2compiler/TestCompile/glob-spread-vars/2.exp.json
@@ -256,6 +256,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -287,6 +288,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -317,6 +319,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -364,6 +367,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -409,6 +413,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -454,6 +459,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -561,6 +567,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
diff --git a/testdata/d2compiler/TestCompile/import-var-chain.exp.json b/testdata/d2compiler/TestCompile/import-var-chain.exp.json
index 8868dcdb7..5f738b569 100644
--- a/testdata/d2compiler/TestCompile/import-var-chain.exp.json
+++ b/testdata/d2compiler/TestCompile/import-var-chain.exp.json
@@ -39,6 +39,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
diff --git a/testdata/d2compiler/TestCompile/url_relative_link.exp.json b/testdata/d2compiler/TestCompile/url_relative_link.exp.json
index a781e613f..1a1f3899d 100644
--- a/testdata/d2compiler/TestCompile/url_relative_link.exp.json
+++ b/testdata/d2compiler/TestCompile/url_relative_link.exp.json
@@ -81,6 +81,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -128,6 +129,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"link": {
"value": "/google"
},
diff --git a/testdata/d2compiler/TestCompile2/globs/suspend-shape.exp.json b/testdata/d2compiler/TestCompile2/globs/suspend-shape.exp.json
index baf429ece..d8c653c2f 100644
--- a/testdata/d2compiler/TestCompile2/globs/suspend-shape.exp.json
+++ b/testdata/d2compiler/TestCompile2/globs/suspend-shape.exp.json
@@ -83,6 +83,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
diff --git a/testdata/d2compiler/TestCompile2/globs/unsuspend-cross-container-edge-label.exp.json b/testdata/d2compiler/TestCompile2/globs/unsuspend-cross-container-edge-label.exp.json
index 70fca048f..9f6e86713 100644
--- a/testdata/d2compiler/TestCompile2/globs/unsuspend-cross-container-edge-label.exp.json
+++ b/testdata/d2compiler/TestCompile2/globs/unsuspend-cross-container-edge-label.exp.json
@@ -406,6 +406,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -443,6 +444,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -521,6 +523,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -597,6 +600,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -673,6 +677,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -749,6 +754,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
diff --git a/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-child.exp.json b/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-child.exp.json
index 0cc431588..564e662a2 100644
--- a/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-child.exp.json
+++ b/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-child.exp.json
@@ -299,6 +299,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -336,6 +337,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -383,6 +385,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -428,6 +431,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -473,6 +477,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
diff --git a/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-filter.exp.json b/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-filter.exp.json
index aaf8ce50e..4100e2ac1 100644
--- a/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-filter.exp.json
+++ b/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-filter.exp.json
@@ -266,6 +266,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
diff --git a/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-label.exp.json b/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-label.exp.json
index d33cb9b7c..bce164ba8 100644
--- a/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-label.exp.json
+++ b/testdata/d2compiler/TestCompile2/globs/unsuspend-edge-label.exp.json
@@ -259,6 +259,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -296,6 +297,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -343,6 +345,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
@@ -388,6 +391,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"
diff --git a/testdata/d2compiler/TestCompile2/globs/unsuspend-shape-label.exp.json b/testdata/d2compiler/TestCompile2/globs/unsuspend-shape-label.exp.json
index 2ab9e4cfb..ab40a755f 100644
--- a/testdata/d2compiler/TestCompile2/globs/unsuspend-shape-label.exp.json
+++ b/testdata/d2compiler/TestCompile2/globs/unsuspend-shape-label.exp.json
@@ -114,6 +114,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": ""
@@ -161,6 +162,7 @@
"height": 0
},
"style": {},
+ "iconStyle": {},
"near_key": null,
"shape": {
"value": "rectangle"