diff --git a/groups/line.json b/groups/line.json
new file mode 100644
index 000000000..f2724eab5
--- /dev/null
+++ b/groups/line.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "../group.schema.json",
+ "description": "Geometry: drawn strokes, paths and line segments",
+ "tags": [
+ "stroke",
+ "path",
+ "segment",
+ "vector",
+ "graphics",
+ "design",
+ "shape",
+ "curve"
+ ]
+}
diff --git a/icon.schema.json b/icon.schema.json
index 325b90b20..0418c2c3c 100644
--- a/icon.schema.json
+++ b/icon.schema.json
@@ -205,6 +205,7 @@
"$group:heart",
"$group:key",
"$group:letter",
+ "$group:line",
"$group:lock",
"$group:minus",
"$group:navigation-first",
diff --git a/icons/line-squiggle.json b/icons/line-squiggle.json
index 074f7dbd0..eb828f936 100644
--- a/icons/line-squiggle.json
+++ b/icons/line-squiggle.json
@@ -6,12 +6,10 @@
],
"use-cases": [],
"tags": [
- "line",
+ "$group:line",
"snakes",
"annotate",
- "curve",
"doodle",
- "stroke",
"pen",
"tool",
"gesture",
diff --git a/icons/line-style.json b/icons/line-style.json
index 26a8e88ab..51609d2aa 100644
--- a/icons/line-style.json
+++ b/icons/line-style.json
@@ -5,8 +5,7 @@
],
"use-cases": [],
"tags": [
- "line",
- "stroke",
+ "$group:line",
"style",
"dashed",
"border"
diff --git a/icons/spline-pointer.json b/icons/spline-pointer.json
index 2f0c6a129..c509884c0 100644
--- a/icons/spline-pointer.json
+++ b/icons/spline-pointer.json
@@ -13,8 +13,7 @@
"node",
"click",
"pointer",
- "target",
- "vector"
+ "target"
],
"categories": [
"$extends:spline",
diff --git a/icons/spline.json b/icons/spline.json
index 7b36e01aa..9aae046a6 100644
--- a/icons/spline.json
+++ b/icons/spline.json
@@ -6,11 +6,9 @@
],
"use-cases": [],
"tags": [
- "path",
+ "$group:line",
"pen",
"tool",
- "shape",
- "curve",
"draw"
],
"categories": [
diff --git a/icons/stroke-line-cap-butt.json b/icons/stroke-line-cap-butt.json
new file mode 100644
index 000000000..0cd0d371b
--- /dev/null
+++ b/icons/stroke-line-cap-butt.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "Set the line cap to butt in a vector graphics editor"
+ ],
+ "tags": [
+ "$group:line",
+ "endpoint",
+ "flat",
+ "flush"
+ ],
+ "categories": [
+ "design",
+ "shapes"
+ ]
+}
diff --git a/icons/stroke-line-cap-butt.svg b/icons/stroke-line-cap-butt.svg
new file mode 100644
index 000000000..37364fc48
--- /dev/null
+++ b/icons/stroke-line-cap-butt.svg
@@ -0,0 +1,17 @@
+
diff --git a/icons/stroke-line-cap-round.json b/icons/stroke-line-cap-round.json
new file mode 100644
index 000000000..c8839cc37
--- /dev/null
+++ b/icons/stroke-line-cap-round.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "Set the line cap to round in a vector graphics editor"
+ ],
+ "tags": [
+ "$group:line",
+ "endpoint",
+ "arc",
+ "circular",
+ "smooth"
+ ],
+ "categories": [
+ "design",
+ "shapes"
+ ]
+}
diff --git a/icons/stroke-line-cap-round.svg b/icons/stroke-line-cap-round.svg
new file mode 100644
index 000000000..f86e6bbe4
--- /dev/null
+++ b/icons/stroke-line-cap-round.svg
@@ -0,0 +1,16 @@
+
diff --git a/icons/stroke-line-cap-square.json b/icons/stroke-line-cap-square.json
new file mode 100644
index 000000000..afd493ff6
--- /dev/null
+++ b/icons/stroke-line-cap-square.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "Set the line cap to square in a vector graphics editor"
+ ],
+ "tags": [
+ "$group:line",
+ "endpoint",
+ "projecting",
+ "extended",
+ "flat"
+ ],
+ "categories": [
+ "design",
+ "shapes"
+ ]
+}
diff --git a/icons/stroke-line-cap-square.svg b/icons/stroke-line-cap-square.svg
new file mode 100644
index 000000000..93d8f91bb
--- /dev/null
+++ b/icons/stroke-line-cap-square.svg
@@ -0,0 +1,16 @@
+
diff --git a/icons/stroke-line-join-bevel.json b/icons/stroke-line-join-bevel.json
new file mode 100644
index 000000000..cd2e0402f
--- /dev/null
+++ b/icons/stroke-line-join-bevel.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "rrod497",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "Applying beveled corners to strokes in vector editors"
+ ],
+ "tags": [
+ "$group:line",
+ "edge",
+ "intersection",
+ "angle",
+ "chamfer",
+ "trim",
+ "flat",
+ "diagonal"
+ ],
+ "categories": [
+ "design",
+ "shapes"
+ ]
+}
diff --git a/icons/stroke-line-join-bevel.svg b/icons/stroke-line-join-bevel.svg
new file mode 100644
index 000000000..5c861c6d8
--- /dev/null
+++ b/icons/stroke-line-join-bevel.svg
@@ -0,0 +1,16 @@
+
diff --git a/icons/stroke-line-join-miter.json b/icons/stroke-line-join-miter.json
new file mode 100644
index 000000000..d66b5c448
--- /dev/null
+++ b/icons/stroke-line-join-miter.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "rrod497",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "Applying sharp corners to strokes in vector editors"
+ ],
+ "tags": [
+ "$group:line",
+ "edge",
+ "intersection",
+ "angle",
+ "sharp",
+ "rect"
+ ],
+ "categories": [
+ "design",
+ "shapes"
+ ]
+}
diff --git a/icons/stroke-line-join-miter.svg b/icons/stroke-line-join-miter.svg
new file mode 100644
index 000000000..c4b711e36
--- /dev/null
+++ b/icons/stroke-line-join-miter.svg
@@ -0,0 +1,16 @@
+
diff --git a/icons/stroke-line-join-round.json b/icons/stroke-line-join-round.json
new file mode 100644
index 000000000..02feaa3cb
--- /dev/null
+++ b/icons/stroke-line-join-round.json
@@ -0,0 +1,23 @@
+{
+ "$schema": "../icon.schema.json",
+ "contributors": [
+ "rrod497",
+ "karsa-mistmere"
+ ],
+ "use-cases": [
+ "Applying rounded corners to strokes in vector editors"
+ ],
+ "tags": [
+ "$group:line",
+ "edge",
+ "intersection",
+ "angle",
+ "arc",
+ "circular",
+ "smooth"
+ ],
+ "categories": [
+ "design",
+ "shapes"
+ ]
+}
diff --git a/icons/stroke-line-join-round.svg b/icons/stroke-line-join-round.svg
new file mode 100644
index 000000000..7f5ee7d4b
--- /dev/null
+++ b/icons/stroke-line-join-round.svg
@@ -0,0 +1,16 @@
+