diff --git a/plugins/plugin-annotations/Logo.md b/plugins/plugin-annotations/Logo.md
new file mode 100644
index 00000000000..19765aae122
--- /dev/null
+++ b/plugins/plugin-annotations/Logo.md
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+
+
+
+
+# @freesewing/plugin-logo
+
+A FreeSewing plugin to add our logo to your patterns
+
+
+
+
+> #### Note: Version 3 is a work in progress
+>
+> We are working on a new major version (v3) but it is not ready for prime-time.
+> For production use, please refer to our v2 packages (the `latest` on NPM)
+> or [the `v2` branch in our monorepo](https://github.com/freesewing/freesewing/tree/v2).
+>
+> We the `main` branch and `next` packages on NPM holds v3 code. But it's alpha for now.
+
+## What am I looking at? π€
+
+This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites.
+
+This folder holds: @freesewing/plugin-logo
+
+If you're not entirely sure what to do or how to start, type this command:
+
+```
+npm run tips
+```
+
+> If you don't want to set up a dev environment, you can run it in your browser:
+>
+> [](https://gitpod.io/#https://github.com/freesewing/freesewing)
+>
+> We recommend that you fork our repository and then
+> put `gitpod.io/# to start up a browser-based dev environment of your own.
+
+## About FreeSewing π
+
+Where the world of makers and developers collide, that's where you'll find FreeSewing.
+
+If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
+our sewing patterns adapted to your measurements.
+
+If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/).
+Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
+for parametric design of sewing patterns. But we also provide a range
+of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
+functionality of the platform.
+
+If you have NodeJS installed, you can try it right now by running:
+
+```bash
+npx create-freesewing-pattern
+```
+
+Or, consult our getting started guides
+for [Linux](https://freesewing.dev/tutorials/getting-started-linux/),
+[MacOS](https://freesewing.dev/tutorials/getting-started-mac/),
+or [Windows](https://freesewing.dev/tutorials/getting-started-windows/).
+
+We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that
+walks you through your first parametric design,
+and [a friendly community](https://freesewing.org/community/where/) with
+people who can help you when you get stuck.
+
+## Support FreeSewing: Become a patron π₯°
+
+FreeSewing is an open source project run by a community,
+and financially supported by our patrons.
+
+If you feel what we do is worthwhile, and you can spend a few coind without
+hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
+
+## Links π©βπ»
+
+ - π» Makers website: [freesewing.org](https://freesewing.org)
+ - π» Developers website: [freesewing.dev](https://freesewing.dev)
+ - π¬ Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/)
+ - β
Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/)
+ - π¦ Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
+ - π· Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
+
+## License: MIT π€
+
+Β© [Joost De Cock](https://github.com/joostdecock).
+See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
+
+## Where to get help π€―
+
+Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions,
+share your feedback, or just hang out.
+
+If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).
+
+
+
+## Contributors β¨
+
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
+
+
+
+
+
+
+
+
+
+
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
+
diff --git a/plugins/plugin-annotations/Notches.md b/plugins/plugin-annotations/Notches.md
new file mode 100644
index 00000000000..d14558d2aa1
--- /dev/null
+++ b/plugins/plugin-annotations/Notches.md
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+
+
+
+
+# @freesewing/plugin-notches
+
+A FreeSewing plugin that provides front and back notch snippets
+
+
+
+
+> #### Note: Version 3 is a work in progress
+>
+> We are working on a new major version (v3) but it is not ready for prime-time.
+> For production use, please refer to our v2 packages (the `latest` on NPM)
+> or [the `v2` branch in our monorepo](https://github.com/freesewing/freesewing/tree/v2).
+>
+> We the `main` branch and `next` packages on NPM holds v3 code. But it's alpha for now.
+
+## What am I looking at? π€
+
+This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites.
+
+This folder holds: @freesewing/plugin-notches
+
+If you're not entirely sure what to do or how to start, type this command:
+
+```
+npm run tips
+```
+
+> If you don't want to set up a dev environment, you can run it in your browser:
+>
+> [](https://gitpod.io/#https://github.com/freesewing/freesewing)
+>
+> We recommend that you fork our repository and then
+> put `gitpod.io/# to start up a browser-based dev environment of your own.
+
+## About FreeSewing π
+
+Where the world of makers and developers collide, that's where you'll find FreeSewing.
+
+If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
+our sewing patterns adapted to your measurements.
+
+If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/).
+Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
+for parametric design of sewing patterns. But we also provide a range
+of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
+functionality of the platform.
+
+If you have NodeJS installed, you can try it right now by running:
+
+```bash
+npx create-freesewing-pattern
+```
+
+Or, consult our getting started guides
+for [Linux](https://freesewing.dev/tutorials/getting-started-linux/),
+[MacOS](https://freesewing.dev/tutorials/getting-started-mac/),
+or [Windows](https://freesewing.dev/tutorials/getting-started-windows/).
+
+We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that
+walks you through your first parametric design,
+and [a friendly community](https://freesewing.org/community/where/) with
+people who can help you when you get stuck.
+
+## Support FreeSewing: Become a patron π₯°
+
+FreeSewing is an open source project run by a community,
+and financially supported by our patrons.
+
+If you feel what we do is worthwhile, and you can spend a few coind without
+hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
+
+## Links π©βπ»
+
+ - π» Makers website: [freesewing.org](https://freesewing.org)
+ - π» Developers website: [freesewing.dev](https://freesewing.dev)
+ - π¬ Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/)
+ - β
Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/)
+ - π¦ Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
+ - π· Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
+
+## License: MIT π€
+
+Β© [Joost De Cock](https://github.com/joostdecock).
+See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
+
+## Where to get help π€―
+
+Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions,
+share your feedback, or just hang out.
+
+If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).
+
+
+
+## Contributors β¨
+
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
+
+
+
+
+
+
+
+
+
+
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
+
diff --git a/plugins/plugin-annotations/ScaleBox.md b/plugins/plugin-annotations/ScaleBox.md
new file mode 100644
index 00000000000..2fc331559dd
--- /dev/null
+++ b/plugins/plugin-annotations/ScaleBox.md
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+
+
+
+
+# @freesewing/plugin-scalebox
+
+A FreeSewing plugin to add a scalebox to your pattern
+
+
+
+
+> #### Note: Version 3 is a work in progress
+>
+> We are working on a new major version (v3) but it is not ready for prime-time.
+> For production use, please refer to our v2 packages (the `latest` on NPM)
+> or [the `v2` branch in our monorepo](https://github.com/freesewing/freesewing/tree/v2).
+>
+> We the `main` branch and `next` packages on NPM holds v3 code. But it's alpha for now.
+
+## What am I looking at? π€
+
+This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites.
+
+This folder holds: @freesewing/plugin-scalebox
+
+If you're not entirely sure what to do or how to start, type this command:
+
+```
+npm run tips
+```
+
+> If you don't want to set up a dev environment, you can run it in your browser:
+>
+> [](https://gitpod.io/#https://github.com/freesewing/freesewing)
+>
+> We recommend that you fork our repository and then
+> put `gitpod.io/# to start up a browser-based dev environment of your own.
+
+## About FreeSewing π
+
+Where the world of makers and developers collide, that's where you'll find FreeSewing.
+
+If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
+our sewing patterns adapted to your measurements.
+
+If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/).
+Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
+for parametric design of sewing patterns. But we also provide a range
+of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
+functionality of the platform.
+
+If you have NodeJS installed, you can try it right now by running:
+
+```bash
+npx create-freesewing-pattern
+```
+
+Or, consult our getting started guides
+for [Linux](https://freesewing.dev/tutorials/getting-started-linux/),
+[MacOS](https://freesewing.dev/tutorials/getting-started-mac/),
+or [Windows](https://freesewing.dev/tutorials/getting-started-windows/).
+
+We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that
+walks you through your first parametric design,
+and [a friendly community](https://freesewing.org/community/where/) with
+people who can help you when you get stuck.
+
+## Support FreeSewing: Become a patron π₯°
+
+FreeSewing is an open source project run by a community,
+and financially supported by our patrons.
+
+If you feel what we do is worthwhile, and you can spend a few coind without
+hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
+
+## Links π©βπ»
+
+ - π» Makers website: [freesewing.org](https://freesewing.org)
+ - π» Developers website: [freesewing.dev](https://freesewing.dev)
+ - π¬ Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/)
+ - β
Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/)
+ - π¦ Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
+ - π· Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
+
+## License: MIT π€
+
+Β© [Joost De Cock](https://github.com/joostdecock).
+See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
+
+## Where to get help π€―
+
+Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions,
+share your feedback, or just hang out.
+
+If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).
+
+
+
+## Contributors β¨
+
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
+
+
+
+
+
+
+
+
+
+
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
+
diff --git a/plugins/plugin-annotations/buttons.md b/plugins/plugin-annotations/buttons.md
new file mode 100644
index 00000000000..e89dabb92be
--- /dev/null
+++ b/plugins/plugin-annotations/buttons.md
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+
+
+
+
+# @freesewing/plugin-buttons
+
+A FreeSewing plugin that provides button, buttonhole, and snap snippets
+
+
+
+
+> #### Note: Version 3 is a work in progress
+>
+> We are working on a new major version (v3) but it is not ready for prime-time.
+> For production use, please refer to our v2 packages (the `latest` on NPM)
+> or [the `v2` branch in our monorepo](https://github.com/freesewing/freesewing/tree/v2).
+>
+> We the `main` branch and `next` packages on NPM holds v3 code. But it's alpha for now.
+
+## What am I looking at? π€
+
+This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites.
+
+This folder holds: @freesewing/plugin-buttons
+
+If you're not entirely sure what to do or how to start, type this command:
+
+```
+npm run tips
+```
+
+> If you don't want to set up a dev environment, you can run it in your browser:
+>
+> [](https://gitpod.io/#https://github.com/freesewing/freesewing)
+>
+> We recommend that you fork our repository and then
+> put `gitpod.io/# to start up a browser-based dev environment of your own.
+
+## About FreeSewing π
+
+Where the world of makers and developers collide, that's where you'll find FreeSewing.
+
+If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
+our sewing patterns adapted to your measurements.
+
+If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/).
+Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
+for parametric design of sewing patterns. But we also provide a range
+of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
+functionality of the platform.
+
+If you have NodeJS installed, you can try it right now by running:
+
+```bash
+npx create-freesewing-pattern
+```
+
+Or, consult our getting started guides
+for [Linux](https://freesewing.dev/tutorials/getting-started-linux/),
+[MacOS](https://freesewing.dev/tutorials/getting-started-mac/),
+or [Windows](https://freesewing.dev/tutorials/getting-started-windows/).
+
+We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that
+walks you through your first parametric design,
+and [a friendly community](https://freesewing.org/community/where/) with
+people who can help you when you get stuck.
+
+## Support FreeSewing: Become a patron π₯°
+
+FreeSewing is an open source project run by a community,
+and financially supported by our patrons.
+
+If you feel what we do is worthwhile, and you can spend a few coind without
+hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
+
+## Links π©βπ»
+
+ - π» Makers website: [freesewing.org](https://freesewing.org)
+ - π» Developers website: [freesewing.dev](https://freesewing.dev)
+ - π¬ Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/)
+ - β
Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/)
+ - π¦ Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
+ - π· Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
+
+## License: MIT π€
+
+Β© [Joost De Cock](https://github.com/joostdecock).
+See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
+
+## Where to get help π€―
+
+Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions,
+share your feedback, or just hang out.
+
+If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).
+
+
+
+## Contributors β¨
+
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
+
+
+
+
+
+
+
+
+
+
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
+
diff --git a/plugins/plugin-annotations/grainline.md b/plugins/plugin-annotations/grainline.md
new file mode 100644
index 00000000000..c4ca3662b85
--- /dev/null
+++ b/plugins/plugin-annotations/grainline.md
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+
+
+
+
+# @freesewing/plugin-grainline
+
+A FreeSewing plugin to add grainline indicators on your patterns
+
+
+
+
+> #### Note: Version 3 is a work in progress
+>
+> We are working on a new major version (v3) but it is not ready for prime-time.
+> For production use, please refer to our v2 packages (the `latest` on NPM)
+> or [the `v2` branch in our monorepo](https://github.com/freesewing/freesewing/tree/v2).
+>
+> We the `main` branch and `next` packages on NPM holds v3 code. But it's alpha for now.
+
+## What am I looking at? π€
+
+This repository is our *monorepo* holding all our NPM designs, plugins, other NPM packages, and (web)sites.
+
+This folder holds: @freesewing/plugin-grainline
+
+If you're not entirely sure what to do or how to start, type this command:
+
+```
+npm run tips
+```
+
+> If you don't want to set up a dev environment, you can run it in your browser:
+>
+> [](https://gitpod.io/#https://github.com/freesewing/freesewing)
+>
+> We recommend that you fork our repository and then
+> put `gitpod.io/# to start up a browser-based dev environment of your own.
+
+## About FreeSewing π
+
+Where the world of makers and developers collide, that's where you'll find FreeSewing.
+
+If you're a maker, checkout [freesewing.org](https://freesewing.org/) where you can generate
+our sewing patterns adapted to your measurements.
+
+If you're a developer, our documentation is on [freesewing.dev](https://freesewing.dev/).
+Our [core library](https://freesewing.dev/reference/api/) is a *batteries-included* toolbox
+for parametric design of sewing patterns. But we also provide a range
+of [plugins](https://freesewing.dev/reference/plugins/) that further extend the
+functionality of the platform.
+
+If you have NodeJS installed, you can try it right now by running:
+
+```bash
+npx create-freesewing-pattern
+```
+
+Or, consult our getting started guides
+for [Linux](https://freesewing.dev/tutorials/getting-started-linux/),
+[MacOS](https://freesewing.dev/tutorials/getting-started-mac/),
+or [Windows](https://freesewing.dev/tutorials/getting-started-windows/).
+
+We also have a [pattern design tutorial](https://freesewing.dev/tutorials/pattern-design/) that
+walks you through your first parametric design,
+and [a friendly community](https://freesewing.org/community/where/) with
+people who can help you when you get stuck.
+
+## Support FreeSewing: Become a patron π₯°
+
+FreeSewing is an open source project run by a community,
+and financially supported by our patrons.
+
+If you feel what we do is worthwhile, and you can spend a few coind without
+hardship, then you should [join us and become a patron](https://freesewing.org/community/join).
+
+## Links π©βπ»
+
+ - π» Makers website: [freesewing.org](https://freesewing.org)
+ - π» Developers website: [freesewing.dev](https://freesewing.dev)
+ - π¬ Chat: On Discord via [discord.freesewing.org](https://discord.freesewing.org/)
+ - β
Todo list/Kanban board: On Github via [todo.freesewing.org](https://todo.freesewing.org/)
+ - π¦ Twitter: [@freesewing_org](https://twitter.com/freesewing_org)
+ - π· Instagram: [@freesewing_org](https://instagram.com/freesewing_org)
+
+## License: MIT π€
+
+Β© [Joost De Cock](https://github.com/joostdecock).
+See [the license file](https://github.com/freesewing/freesewing/blob/develop/LICENSE) for details.
+
+## Where to get help π€―
+
+Our [chatrooms on Discord](https://chat.freesewing.org/) are the best place to ask questions,
+share your feedback, or just hang out.
+
+If you want to report a problem, please [create an issue](https://github.com/freesewing/freesewing/issues/new).
+
+
+
+## Contributors β¨
+
+Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
+
+
+
+
+
+
+
+
+
+
+
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
+
diff --git a/plugins/plugin-annotations/img/grainline.png b/plugins/plugin-annotations/img/grainline.png
new file mode 100644
index 00000000000..c36c388f669
Binary files /dev/null and b/plugins/plugin-annotations/img/grainline.png differ
diff --git a/plugins/plugin-annotations/img/scalebox.png b/plugins/plugin-annotations/img/scalebox.png
new file mode 100644
index 00000000000..a30693cb776
Binary files /dev/null and b/plugins/plugin-annotations/img/scalebox.png differ
diff --git a/plugins/plugin-annotations/src/buttons.mjs b/plugins/plugin-annotations/src/buttons.mjs
new file mode 100644
index 00000000000..98eec4c6502
--- /dev/null
+++ b/plugins/plugin-annotations/src/buttons.mjs
@@ -0,0 +1,82 @@
+import { name, version } from '../data.mjs'
+
+const defs = [
+ // button
+ `
+
+
+
+
+
+
+`,
+ // buttonhole
+ `
+
+
+
+
+
+
+
+
+`,
+ // snaps
+ `
+
+
+
+
+
+
+
+
+
+
+
+
+
+`,
+]
+
+export const buttons = {
+ name,
+ version,
+ hooks: {
+ preRender: function (svg) {
+ for (const def of defs) {
+ if (svg.defs.indexOf(def) === -1) svg.defs += def
+ }
+ },
+ },
+}
+
+// More specifically named exports
+// export const buttonsPlugin = plugin
+// export const pluginButtons = plugin
diff --git a/plugins/plugin-annotations/src/grainline.mjs b/plugins/plugin-annotations/src/grainline.mjs
new file mode 100644
index 00000000000..9540f44b953
--- /dev/null
+++ b/plugins/plugin-annotations/src/grainline.mjs
@@ -0,0 +1,56 @@
+import { name, version } from '../data.mjs'
+
+const markers = `
+
+
+
+
+
+`
+
+const dflts = { text: 'grainline' }
+
+export const grainline = {
+ name,
+ version,
+ hooks: {
+ preRender: (svg) => {
+ if (svg.defs.indexOf(markers) === -1) svg.defs += markers
+ },
+ },
+ macros: {
+ grainline: function (so = {}, { points, paths, Path, complete, setGrain }) {
+ if (so === false) {
+ delete points.grainlineFrom
+ delete points.grainlineTo
+ delete paths.grainline
+ setGrain(90) // Restoring default
+ return true
+ }
+ so = {
+ ...dflts,
+ ...so,
+ }
+ // setGrain relies on plugin-cutlist
+ if (typeof setGrain === 'function') {
+ setGrain(so.from.angle(so.to))
+ }
+ if (complete) {
+ points.grainlineFrom = so.from.shiftFractionTowards(so.to, 0.05)
+ points.grainlineTo = so.to.shiftFractionTowards(so.from, 0.05)
+ paths.grainline = new Path()
+ .move(points.grainlineFrom)
+ .line(points.grainlineTo)
+ .attr('class', 'note')
+ .attr('marker-start', 'url(#grainlineFrom)')
+ .attr('marker-end', 'url(#grainlineTo)')
+ .attr('data-text', so.text)
+ .attr('data-text-class', 'center fill-note')
+ }
+ },
+ },
+}
+
+// More specifically named exports
+// export const grainlinePlugin = plugin
+// export const pluginGrainline = plugin
diff --git a/plugins/plugin-annotations/src/index.mjs b/plugins/plugin-annotations/src/index.mjs
index abf290e09c6..961cb2c3069 100644
--- a/plugins/plugin-annotations/src/index.mjs
+++ b/plugins/plugin-annotations/src/index.mjs
@@ -1,6 +1,10 @@
import { bartack } from './bartack.mjs'
+import { buttons } from './buttons.mjs'
import { crossbox } from './crossbox.mjs'
import { cutonfold } from './cutonfold.mjs'
+import { grainline } from './grainline.mjs'
+import { logo } from './logo.mjs'
+import { notches } from './notches.mjs'
import { pleat } from './pleat.mjs'
import { sewtogether } from './sewtogether.mjs'
@@ -20,3 +24,15 @@ export const pluginPleat = pleat
export const sewtogetherPlugin = sewtogether
export const pluginSewtogether = sewtogether
+
+export const buttonsPlugin = buttons
+export const pluginButtons = buttons
+
+export const grainlinePlugin = grainline
+export const pluginGrainline = grainline
+
+export const logoPlugin = logo
+export const pluginLogo = logo
+
+export const notchesPlugin = notches
+export const pluginNotches = notches
diff --git a/plugins/plugin-annotations/src/logo.mjs b/plugins/plugin-annotations/src/logo.mjs
new file mode 100644
index 00000000000..0ffc5844c00
--- /dev/null
+++ b/plugins/plugin-annotations/src/logo.mjs
@@ -0,0 +1,19 @@
+import { name, version } from '../data.mjs'
+
+const logoFunction = (scale) =>
+ ``
+
+export const logo = {
+ name,
+ version,
+ hooks: {
+ preRender: (svg) => {
+ if (svg.defs.indexOf('id="logo"') === -1)
+ svg.defs += logoFunction(svg.pattern.settings[0].scale)
+ },
+ },
+}
+
+// More specifically named exports
+// export const logoPlugin = logo
+// export const pluginLogo = logo
diff --git a/plugins/plugin-annotations/src/notches.mjs b/plugins/plugin-annotations/src/notches.mjs
new file mode 100644
index 00000000000..2a5838fcda6
--- /dev/null
+++ b/plugins/plugin-annotations/src/notches.mjs
@@ -0,0 +1,25 @@
+import { name, version } from '../data.mjs'
+
+const markers = `
+
+
+
+
+
+
+
+`
+
+export const notches = {
+ name,
+ version,
+ hooks: {
+ preRender: function (svg) {
+ if (svg.defs.indexOf(`id="notch"`) === -1) svg.defs += markers
+ },
+ },
+}
+
+// More specifically named exports
+// export const notchesPlugin = notches
+// export const pluginNotches = notches
diff --git a/plugins/plugin-annotations/tests/shared.test.mjs b/plugins/plugin-annotations/tests/shared.test.mjs
new file mode 100644
index 00000000000..7bf4f668398
--- /dev/null
+++ b/plugins/plugin-annotations/tests/shared.test.mjs
@@ -0,0 +1,6 @@
+// This file is auto-generated | Any changes you make will be overwritten.
+import { plugin } from '../src/index.mjs'
+import { sharedPluginTests } from '../../../tests/plugins/shared.mjs'
+
+// Run shared tests
+sharedPluginTests(plugin)