+ {#each [animation, ...$patterns.entries(), extra] as [id, pattern] (id)}
+
+ {#if pattern}
+
+ {:else if id === "animate"}
+
+ {:else if id === "extra"}
+
+
+ {/if}
+
+ {/each}
+
+
+
diff --git a/src/_site/components/bobbin/Mirror.svelte b/src/_site/components/bobbin/Mirror.svelte
new file mode 100644
index 0000000..ad4a306
--- /dev/null
+++ b/src/_site/components/bobbin/Mirror.svelte
@@ -0,0 +1,8 @@
+
+
+{#each scales as scale}
+ Missing shape to mirror
+{/each}
diff --git a/src/_site/components/bobbin/Path.svelte b/src/_site/components/bobbin/Path.svelte
new file mode 100644
index 0000000..e742591
--- /dev/null
+++ b/src/_site/components/bobbin/Path.svelte
@@ -0,0 +1,17 @@
+
+
+
diff --git a/src/_site/components/bobbin/README.md b/src/_site/components/bobbin/README.md
new file mode 100644
index 0000000..ebc7b76
--- /dev/null
+++ b/src/_site/components/bobbin/README.md
@@ -0,0 +1,27 @@
+# Bobbin – delicate circular symmetries
+
+Weaving together technologies of the past and future, _Bobbin_ invites us to explore the delicate intricacies of
+circular patterns. Mimicking the delicacy found in traditional crafts, _Bobbin_ leverages Svelte to enable us all to
+become artists. Like modern day lace makers, we are invited to create our own designs and step back and admire the
+possibilities of the web as a design tool. This tool celebrates the advancements we have made on seeing speedy results,
+without compromising on elegance or beauty.
+
+All the editing features use the web platform’s native toolset, which made Svelte & SvelteKit an ideal environment for
+development:
+
+- The design is encoded as state search parameter
+- Undo and redo rely on the web history
+- Patterns can be seen without without JavaScript with SSR
+- The resulting SVG can be exported as-is and used as the basis for further work
+- Animations are built with CSS and the Web Animation API
+
+[Bobbins](https://en.wikipedia.org/wiki/Bobbin_lace#Bobbins) are used to hold the thread to create lace, which was the
+inspiration for this tool.
+
+## Timeline
+
+1. Feb 20th early weaving explorations
+2. Apr 5th first Svelte prototype
+3. Apr 11th addition of this ReadMe
+4. Apr 13th animated rotation
+5. Apr 15th renamed to Bobbin
diff --git a/src/_site/components/bobbin/SVG.svelte b/src/_site/components/bobbin/SVG.svelte
new file mode 100644
index 0000000..109c3ad
--- /dev/null
+++ b/src/_site/components/bobbin/SVG.svelte
@@ -0,0 +1,17 @@
+
+
+
diff --git a/src/_site/components/bobbin/Shape.svelte b/src/_site/components/bobbin/Shape.svelte
new file mode 100644
index 0000000..f65afb4
--- /dev/null
+++ b/src/_site/components/bobbin/Shape.svelte
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+ {#if active}
+
+ {/if}
+
+
+
+
+
+
diff --git a/src/_site/components/bobbin/Spread.svelte b/src/_site/components/bobbin/Spread.svelte
new file mode 100644
index 0000000..9f6410a
--- /dev/null
+++ b/src/_site/components/bobbin/Spread.svelte
@@ -0,0 +1,10 @@
+
+
+
+ {#each Array.from({ length: count }, (_, index) => (360 / count) * index) as angle (angle)}
+ Missing element
+ {/each}
+
diff --git a/src/_site/components/bobbin/Store.svelte b/src/_site/components/bobbin/Store.svelte
new file mode 100644
index 0000000..f5b2356
--- /dev/null
+++ b/src/_site/components/bobbin/Store.svelte
@@ -0,0 +1,74 @@
+
diff --git a/src/_site/components/bobbin/Use.svelte b/src/_site/components/bobbin/Use.svelte
new file mode 100644
index 0000000..e059d3c
--- /dev/null
+++ b/src/_site/components/bobbin/Use.svelte
@@ -0,0 +1,83 @@
+
+
+