diff --git a/assets/readme/examples/svg-icon-gallery.pdf b/assets/readme/examples/svg-icon-gallery.pdf
new file mode 100644
index 000000000..13671a81c
Binary files /dev/null and b/assets/readme/examples/svg-icon-gallery.pdf differ
diff --git a/examples/README.md b/examples/README.md
index c32d4b86c..35b702b03 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -89,6 +89,7 @@ are with the canonical DSL, then jump to its detailed section below.
|---|---|---|
| [Shape containers](#shape-containers) | Circles, ellipses, rounded cards with `ClipPolicy.CLIP_PATH` | [PDF](../assets/readme/examples/shape-container.pdf) · [Source](src/main/java/com/demcha/examples/features/shapes/ShapeContainerExample.java) |
| [Vector paths (Bézier)](#vector-paths-bézier) | `addPath(...)` + `SvgPath.parse(...)` — design shapes and imported SVG icons as native curves; zero tessellation | [PDF](../assets/readme/examples/vector-path.pdf) · [Source](src/main/java/com/demcha/examples/features/shapes/VectorPathExample.java) |
+| [SVG icon gallery](#svg-icon-gallery) | 34 real-world multicolour svgrepo icons via `SvgIcon.parse` — up to 19 layers each, the whole set 156 KB of sources | [PDF](../assets/readme/examples/svg-icon-gallery.pdf) · [Source](src/main/java/com/demcha/examples/features/svg/SvgIconGalleryExample.java) |
| [Advanced tables](#advanced-tables) | Row span, zebra rows, totals, repeating header on page break | [PDF](../assets/readme/examples/table-advanced.pdf) · [Source](src/main/java/com/demcha/examples/features/tables/TableAdvancedExample.java) |
| [Barcodes](#barcodes) | QR, Code 128, Code 39, EAN-13, EAN-8, branded QR with theme colours | [PDF](../assets/readme/examples/barcode-showcase.pdf) · [Source](src/main/java/com/demcha/examples/features/barcodes/BarcodeShowcaseExample.java) |
| [Charts](#charts) | Native vector bar, line, and pie/donut charts — data/spec/style layers, axis & grid toggles, point markers, value labels, legend | [PDF](../assets/readme/examples/chart-showcase.pdf) · [Source](src/main/java/com/demcha/examples/features/charts/ChartShowcaseExample.java) |
@@ -380,6 +381,21 @@ flow.addPath(path -> path
[📄 View PDF](../assets/readme/examples/vector-path.pdf) ·
[📜 Full source](src/main/java/com/demcha/examples/features/shapes/VectorPathExample.java)
+### SVG icon gallery
+
+A stress-test sheet for the beta SVG reader: 34 real-world multicolour
+icons (svgrepo.com) parsed by `SvgIcon.parse` and presented as a tile
+grid — each icon centred on a rounded card with a label plaque across
+the bottom, every layer a native vector path. The entire icon set weighs
+156 KB of `.svg` sources; the rendered page is a 70 KB PDF.
+
+```java
+flow.addSvgIcon(SvgIcon.parse(readResource("/icons/apple.svg")), 50);
+```
+
+[📄 View PDF](../assets/readme/examples/svg-icon-gallery.pdf) ·
+[📜 Full source](src/main/java/com/demcha/examples/features/svg/SvgIconGalleryExample.java)
+
### Advanced tables
`DocumentTableCell.rowSpan(int)` mirrors `colSpan(int)`.
diff --git a/examples/src/main/java/com/demcha/examples/GenerateAllExamples.java b/examples/src/main/java/com/demcha/examples/GenerateAllExamples.java
index 6930131ac..19697f813 100644
--- a/examples/src/main/java/com/demcha/examples/GenerateAllExamples.java
+++ b/examples/src/main/java/com/demcha/examples/GenerateAllExamples.java
@@ -11,6 +11,7 @@
import com.demcha.examples.features.shapes.VectorPathExample;
import com.demcha.examples.features.snapshots.LayoutSnapshotRegressionExample;
import com.demcha.examples.features.streaming.HttpStreamingExample;
+import com.demcha.examples.features.svg.SvgIconGalleryExample;
import com.demcha.examples.features.tables.ComposedTableCellExample;
import com.demcha.examples.features.tables.TableAdvancedExample;
import com.demcha.examples.features.text.InlineShapesExample;
@@ -130,6 +131,7 @@ public static void main(String[] args) throws Exception {
// v1.5 visual primitives
System.out.println("Generated: " + ShapeContainerExample.generate());
System.out.println("Generated: " + VectorPathExample.generate());
+ System.out.println("Generated: " + SvgIconGalleryExample.generate());
System.out.println("Generated: " + TransformsExample.generate());
System.out.println("Generated: " + TableAdvancedExample.generate());
diff --git a/examples/src/main/java/com/demcha/examples/features/svg/SvgIconGalleryExample.java b/examples/src/main/java/com/demcha/examples/features/svg/SvgIconGalleryExample.java
new file mode 100644
index 000000000..26f0e4a07
--- /dev/null
+++ b/examples/src/main/java/com/demcha/examples/features/svg/SvgIconGalleryExample.java
@@ -0,0 +1,217 @@
+package com.demcha.examples.features.svg;
+
+import com.demcha.compose.GraphCompose;
+import com.demcha.compose.document.api.DocumentSession;
+import com.demcha.compose.document.dsl.LayerStackBuilder;
+import com.demcha.compose.document.dsl.ParagraphBuilder;
+import com.demcha.compose.document.dsl.PathBuilder;
+import com.demcha.compose.document.dsl.ShapeContainerBuilder;
+import com.demcha.compose.document.node.DocumentNode;
+import com.demcha.compose.document.node.LayerAlign;
+import com.demcha.compose.document.node.TextAlign;
+import com.demcha.compose.document.style.DocumentColor;
+import com.demcha.compose.document.style.DocumentInsets;
+import com.demcha.compose.document.style.DocumentStroke;
+import com.demcha.compose.document.style.DocumentTextDecoration;
+import com.demcha.compose.document.style.DocumentTextStyle;
+import com.demcha.compose.document.svg.SvgIcon;
+import com.demcha.compose.font.FontName;
+import com.demcha.examples.support.ExampleOutputPaths;
+
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Runnable stress-test gallery for the beta SVG icon reader: 34 real-world
+ * multicolour icons (up to 19 layers each) read straight from {@code .svg}
+ * resources via {@link SvgIcon#parse(String)} and presented as a tile grid —
+ * each icon centred on a rounded card with a label plaque across the bottom,
+ * every curve a native PDF Bézier, the whole icon set a fraction of one
+ * screenshot's weight.
+ *
+ *
{@code
+ * flow.addSvgIcon(SvgIcon.read(Path.of("icons/apple.svg")), 52);
+ * }
+ *
+ * Icon artwork: svgrepo.com
+ * collections (see each icon's page for its licence).
+ *
+ * @author Artem Demchyshyn
+ */
+public final class SvgIconGalleryExample {
+
+ private static final List ICONS = List.of(
+ "apple", "avocado", "banana", "boxing", "calendar",
+ "camera-take-pictures", "chat-chat", "cherry", "diagnosis", "eye-password-eye-password",
+ "feet", "food", "grape", "headphones-music", "key-password",
+ "kiwi-fruit", "magnifying-glass-find-search", "microphone-singing", "movie", "peach",
+ "pencil-revision", "personal-account-account", "picture", "record", "reminder-alert",
+ "setting", "shopping-cart", "shopping", "social-contact", "starfish",
+ "steak", "store-homepage-home", "toolbox", "upload");
+
+ /** Short display labels for the verbose svgrepo file names. */
+ private static final Map SHORT_LABELS = Map.ofEntries(
+ Map.entry("camera-take-pictures", "Camera"),
+ Map.entry("chat-chat", "Chat"),
+ Map.entry("eye-password-eye-password", "Eye"),
+ Map.entry("headphones-music", "Headphones"),
+ Map.entry("key-password", "Key"),
+ Map.entry("kiwi-fruit", "Kiwi"),
+ Map.entry("magnifying-glass-find-search", "Search"),
+ Map.entry("microphone-singing", "Microphone"),
+ Map.entry("pencil-revision", "Pencil"),
+ Map.entry("personal-account-account", "Account"),
+ Map.entry("reminder-alert", "Reminder"),
+ Map.entry("shopping-cart", "Cart"),
+ Map.entry("social-contact", "Contact"),
+ Map.entry("store-homepage-home", "Store"));
+
+ private static final int COLUMNS = 5;
+ private static final double CARD_WIDTH = 97;
+ private static final double CARD_HEIGHT = 84;
+ private static final double CARD_RADIUS = 9;
+ private static final double PLAQUE_HEIGHT = 17;
+ /** Icons contain-fit into this square inside the card body. */
+ private static final double ICON_BOX = 44;
+
+ private static final DocumentColor CARD_FILL = DocumentColor.rgb(248, 249, 251);
+ private static final DocumentColor CARD_BORDER = DocumentColor.rgb(228, 231, 236);
+ private static final DocumentColor PLAQUE_FILL = DocumentColor.rgb(235, 238, 243);
+ private static final DocumentColor LABEL_INK = DocumentColor.rgb(82, 90, 102);
+ private static final DocumentColor MUTED = DocumentColor.rgb(90, 96, 105);
+
+ private static final DocumentTextStyle LABEL_STYLE = DocumentTextStyle.builder()
+ .fontName(FontName.HELVETICA_BOLD)
+ .size(6.4)
+ .decoration(DocumentTextDecoration.BOLD)
+ .color(LABEL_INK)
+ .build();
+
+ private SvgIconGalleryExample() {
+ }
+
+ /**
+ * Renders the 34-icon gallery sheet as a uniform card grid.
+ *
+ * @return path to the generated PDF
+ * @throws Exception if rendering or resource IO fails
+ */
+ public static Path generate() throws Exception {
+ Path pdfFile = ExampleOutputPaths.prepare("features/svg", "svg-icon-gallery.pdf");
+
+ try (DocumentSession document = GraphCompose.document(pdfFile)
+ .pageSize(595, 842)
+ .margin(DocumentInsets.of(34))
+ .create()) {
+ document.pageFlow(page -> {
+ page.addParagraph(p -> p
+ .text("SVG icon gallery")
+ .textStyle(DocumentTextStyle.DEFAULT.withSize(22)));
+ page.addParagraph(p -> p
+ .text("34 real-world multicolour icons (svgrepo.com) read by SvgIcon.parse "
+ + "— every layer a native vector path, the whole set 156 KB of sources.")
+ .textStyle(DocumentTextStyle.DEFAULT.withSize(9.5).withColor(MUTED))
+ .padding(DocumentInsets.bottom(14)));
+
+ for (int start = 0; start < ICONS.size(); start += COLUMNS) {
+ List chunk = ICONS.subList(start, Math.min(start + COLUMNS, ICONS.size()));
+ page.addRow(row -> {
+ row.spacing(10).evenWeights().margin(DocumentInsets.bottom(10));
+ for (String name : chunk) {
+ // Rows host sections; the fixed-size card rides inside one.
+ row.addSection("Tile" + name.replace('-', '_'),
+ s -> s.add(card(name)));
+ }
+ // Pad the last row so its cells line up with the full rows.
+ for (int filler = chunk.size(); filler < COLUMNS; filler++) {
+ row.addSpacer(CARD_WIDTH);
+ }
+ });
+ }
+ });
+
+ document.buildPdf();
+ }
+
+ return pdfFile;
+ }
+
+ /** One tile: rounded card, icon centred in the body, label plaque across the bottom. */
+ private static DocumentNode card(String name) {
+ String id = name.replace('-', '_');
+ return new ShapeContainerBuilder()
+ .name("Card" + id)
+ .roundedRect(CARD_WIDTH, CARD_HEIGHT, CARD_RADIUS)
+ .fillColor(CARD_FILL)
+ .stroke(DocumentStroke.of(CARD_BORDER, 0.8))
+ .position(iconStack(name, id), 0, -PLAQUE_HEIGHT / 2.0, LayerAlign.CENTER)
+ .bottomCenter(plaque(name, id))
+ .build();
+ }
+
+ /**
+ * Builds the icon as a standalone layer stack whose box is exactly the
+ * icon's contain-fit size, so the card's CENTER anchor lands true.
+ * (The flow-level {@code addSvgIcon(...)} sugar targets flows; a card
+ * layer needs the node form of the same composition.)
+ */
+ private static DocumentNode iconStack(String name, String id) {
+ SvgIcon icon = loadIcon(name);
+ double width = Math.min(ICON_BOX, ICON_BOX * icon.aspectRatio());
+ double height = width / icon.aspectRatio();
+ LayerStackBuilder stack = new LayerStackBuilder().name("Icon" + id);
+ for (int i = 0; i < icon.layers().size(); i++) {
+ SvgIcon.Layer layer = icon.layers().get(i);
+ stack.layer(new PathBuilder()
+ .name("SvgLayer" + i)
+ .size(width, height)
+ .svg(layer.geometry())
+ .fillColor(layer.fill())
+ .stroke(layer.stroke())
+ .build());
+ }
+ return stack.build();
+ }
+
+ /**
+ * Full-width label band across the card bottom; the card's CLIP_PATH
+ * rounds its outer corners automatically.
+ */
+ private static DocumentNode plaque(String name, String id) {
+ return new ShapeContainerBuilder()
+ .name("Plaque" + id)
+ .rectangle(CARD_WIDTH, PLAQUE_HEIGHT)
+ .fillColor(PLAQUE_FILL)
+ .center(new ParagraphBuilder()
+ .text(label(name))
+ .textStyle(LABEL_STYLE)
+ .align(TextAlign.CENTER)
+ .margin(DocumentInsets.zero())
+ .build())
+ .build();
+ }
+
+ private static SvgIcon loadIcon(String name) {
+ try (InputStream in = Objects.requireNonNull(
+ SvgIconGalleryExample.class.getResourceAsStream("/icons/" + name + ".svg"),
+ "icon resource missing: " + name)) {
+ return SvgIcon.parse(new String(in.readAllBytes(), StandardCharsets.UTF_8));
+ } catch (Exception e) {
+ throw new IllegalStateException("failed to load icon: " + name, e);
+ }
+ }
+
+ /** {@code "camera-take-pictures"} → {@code "CAMERA"}; plain names just uppercase. */
+ private static String label(String name) {
+ return SHORT_LABELS.getOrDefault(name, name.replace('-', ' ')).toUpperCase(Locale.ROOT);
+ }
+
+ public static void main(String[] args) throws Exception {
+ System.out.println("Generated: " + generate());
+ }
+}
diff --git a/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java b/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java
index 77447fa0d..14ed92b21 100644
--- a/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java
+++ b/examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java
@@ -95,6 +95,7 @@ record Entry(String title, String description, List tags, String codeUrl
feature("tables", "composed-table-cell-showcase", "Composed Table Cells", "DocumentTableCell.node(DocumentNode) — paragraphs, lists, sub-tables inside cells with two-pass measurement.", "tables", "v1.6");
feature("canvas", "canvas-layer-showcase", "Canvas Layer (free-canvas)", "CanvasLayerNode — pixel-precise (x,y) placement of children inside a fixed bounding box.", "canvas", "v1.6", "absolute");
feature("shapes", "shape-container", "Shape-as-Container", "Rounded rect, ellipse, circle containers with ClipPolicy and layered children.", "shapes", "clip");
+ feature("svg", "svg-icon-gallery", "SVG Icon Gallery", "34 real-world multicolour svgrepo icons through SvgIcon.parse — native vector layers, the whole set 156 KB of sources.", "svg", "icons", "v1.8");
feature("shapes", "vector-path", "Vector Paths (Bézier)", "addPath(...) — free-form design shapes with native cubic Bézier curves: stroked waves, filled blobs, mixed line/curve ribbons. No tessellation.", "shapes", "bezier", "v1.8");
feature("transforms", "transforms", "Layers + Transforms", "rotate / scale on every leaf builder + LayerStack with explicit z-index.", "transforms", "layers");
feature("text", "rich-text-showcase", "Rich Text", "Inline runs with bold / italic / colour / link options, markdown parsing.", "text", "rich");
@@ -143,6 +144,7 @@ static String groupLabel(String category, String group) {
case "features/chrome" -> "PDF Chrome (header / footer / watermark)";
case "features/streaming" -> "Streaming & I/O";
case "features/snapshots" -> "Snapshot Testing";
+ case "features/svg" -> "SVG Import";
case "features/debug" -> "Debug & Diagnostics";
case "flagships/default" -> "Flagship Demos";
default -> capitalize(group);
diff --git a/examples/src/main/resources/icons/apple.svg b/examples/src/main/resources/icons/apple.svg
new file mode 100644
index 000000000..6b4f98197
--- /dev/null
+++ b/examples/src/main/resources/icons/apple.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/avocado.svg b/examples/src/main/resources/icons/avocado.svg
new file mode 100644
index 000000000..d6f1f6c77
--- /dev/null
+++ b/examples/src/main/resources/icons/avocado.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/banana.svg b/examples/src/main/resources/icons/banana.svg
new file mode 100644
index 000000000..f5cbee786
--- /dev/null
+++ b/examples/src/main/resources/icons/banana.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/boxing.svg b/examples/src/main/resources/icons/boxing.svg
new file mode 100644
index 000000000..0be6536fd
--- /dev/null
+++ b/examples/src/main/resources/icons/boxing.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/calendar.svg b/examples/src/main/resources/icons/calendar.svg
new file mode 100644
index 000000000..fc057b752
--- /dev/null
+++ b/examples/src/main/resources/icons/calendar.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/camera-take-pictures.svg b/examples/src/main/resources/icons/camera-take-pictures.svg
new file mode 100644
index 000000000..44b25d93a
--- /dev/null
+++ b/examples/src/main/resources/icons/camera-take-pictures.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/chat-chat.svg b/examples/src/main/resources/icons/chat-chat.svg
new file mode 100644
index 000000000..15129fe87
--- /dev/null
+++ b/examples/src/main/resources/icons/chat-chat.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/cherry.svg b/examples/src/main/resources/icons/cherry.svg
new file mode 100644
index 000000000..5938e47f9
--- /dev/null
+++ b/examples/src/main/resources/icons/cherry.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/diagnosis.svg b/examples/src/main/resources/icons/diagnosis.svg
new file mode 100644
index 000000000..5c64daf7d
--- /dev/null
+++ b/examples/src/main/resources/icons/diagnosis.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/eye-password-eye-password.svg b/examples/src/main/resources/icons/eye-password-eye-password.svg
new file mode 100644
index 000000000..0774698b0
--- /dev/null
+++ b/examples/src/main/resources/icons/eye-password-eye-password.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/feet.svg b/examples/src/main/resources/icons/feet.svg
new file mode 100644
index 000000000..93d32839f
--- /dev/null
+++ b/examples/src/main/resources/icons/feet.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/food.svg b/examples/src/main/resources/icons/food.svg
new file mode 100644
index 000000000..cc5c0f2f7
--- /dev/null
+++ b/examples/src/main/resources/icons/food.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/grape.svg b/examples/src/main/resources/icons/grape.svg
new file mode 100644
index 000000000..e95d8cdd1
--- /dev/null
+++ b/examples/src/main/resources/icons/grape.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/headphones-music.svg b/examples/src/main/resources/icons/headphones-music.svg
new file mode 100644
index 000000000..7927ad9d8
--- /dev/null
+++ b/examples/src/main/resources/icons/headphones-music.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/key-password.svg b/examples/src/main/resources/icons/key-password.svg
new file mode 100644
index 000000000..4577c88e0
--- /dev/null
+++ b/examples/src/main/resources/icons/key-password.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/kiwi-fruit.svg b/examples/src/main/resources/icons/kiwi-fruit.svg
new file mode 100644
index 000000000..8d47319f6
--- /dev/null
+++ b/examples/src/main/resources/icons/kiwi-fruit.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/magnifying-glass-find-search.svg b/examples/src/main/resources/icons/magnifying-glass-find-search.svg
new file mode 100644
index 000000000..8ef3d4e2f
--- /dev/null
+++ b/examples/src/main/resources/icons/magnifying-glass-find-search.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/microphone-singing.svg b/examples/src/main/resources/icons/microphone-singing.svg
new file mode 100644
index 000000000..f9c8c5229
--- /dev/null
+++ b/examples/src/main/resources/icons/microphone-singing.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/movie.svg b/examples/src/main/resources/icons/movie.svg
new file mode 100644
index 000000000..a1eb0d89f
--- /dev/null
+++ b/examples/src/main/resources/icons/movie.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/peach.svg b/examples/src/main/resources/icons/peach.svg
new file mode 100644
index 000000000..443130386
--- /dev/null
+++ b/examples/src/main/resources/icons/peach.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/pencil-revision.svg b/examples/src/main/resources/icons/pencil-revision.svg
new file mode 100644
index 000000000..f3dbbd354
--- /dev/null
+++ b/examples/src/main/resources/icons/pencil-revision.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/personal-account-account.svg b/examples/src/main/resources/icons/personal-account-account.svg
new file mode 100644
index 000000000..bb28eac73
--- /dev/null
+++ b/examples/src/main/resources/icons/personal-account-account.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/picture.svg b/examples/src/main/resources/icons/picture.svg
new file mode 100644
index 000000000..a98011f2a
--- /dev/null
+++ b/examples/src/main/resources/icons/picture.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/record.svg b/examples/src/main/resources/icons/record.svg
new file mode 100644
index 000000000..13aeec034
--- /dev/null
+++ b/examples/src/main/resources/icons/record.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/reminder-alert.svg b/examples/src/main/resources/icons/reminder-alert.svg
new file mode 100644
index 000000000..1303469cc
--- /dev/null
+++ b/examples/src/main/resources/icons/reminder-alert.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/setting.svg b/examples/src/main/resources/icons/setting.svg
new file mode 100644
index 000000000..1734f0892
--- /dev/null
+++ b/examples/src/main/resources/icons/setting.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/shopping-cart.svg b/examples/src/main/resources/icons/shopping-cart.svg
new file mode 100644
index 000000000..e27baf434
--- /dev/null
+++ b/examples/src/main/resources/icons/shopping-cart.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/shopping.svg b/examples/src/main/resources/icons/shopping.svg
new file mode 100644
index 000000000..722f1ca2a
--- /dev/null
+++ b/examples/src/main/resources/icons/shopping.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/social-contact.svg b/examples/src/main/resources/icons/social-contact.svg
new file mode 100644
index 000000000..69776d115
--- /dev/null
+++ b/examples/src/main/resources/icons/social-contact.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/starfish.svg b/examples/src/main/resources/icons/starfish.svg
new file mode 100644
index 000000000..fe5103665
--- /dev/null
+++ b/examples/src/main/resources/icons/starfish.svg
@@ -0,0 +1,46 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/steak.svg b/examples/src/main/resources/icons/steak.svg
new file mode 100644
index 000000000..098a2ee6f
--- /dev/null
+++ b/examples/src/main/resources/icons/steak.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/store-homepage-home.svg b/examples/src/main/resources/icons/store-homepage-home.svg
new file mode 100644
index 000000000..7f9468193
--- /dev/null
+++ b/examples/src/main/resources/icons/store-homepage-home.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/toolbox.svg b/examples/src/main/resources/icons/toolbox.svg
new file mode 100644
index 000000000..dbfe9b877
--- /dev/null
+++ b/examples/src/main/resources/icons/toolbox.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/examples/src/main/resources/icons/upload.svg b/examples/src/main/resources/icons/upload.svg
new file mode 100644
index 000000000..3b0ce8dd8
--- /dev/null
+++ b/examples/src/main/resources/icons/upload.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file