diff --git a/code/renderers/vue/template/components/Button.vue b/code/renderers/vue/template/components/Button.vue
new file mode 100644
index 00000000000..864a2638ac5
--- /dev/null
+++ b/code/renderers/vue/template/components/Button.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
diff --git a/code/renderers/vue/template/components/Pre.vue b/code/renderers/vue/template/components/Pre.vue
new file mode 100644
index 00000000000..a5154fe629e
--- /dev/null
+++ b/code/renderers/vue/template/components/Pre.vue
@@ -0,0 +1,29 @@
+
+ {{ finalText }}
+
+
+
diff --git a/code/renderers/vue/template/components/button.css b/code/renderers/vue/template/components/button.css
new file mode 100644
index 00000000000..dc91dc76370
--- /dev/null
+++ b/code/renderers/vue/template/components/button.css
@@ -0,0 +1,30 @@
+.storybook-button {
+ font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ font-weight: 700;
+ border: 0;
+ border-radius: 3em;
+ cursor: pointer;
+ display: inline-block;
+ line-height: 1;
+}
+.storybook-button--primary {
+ color: white;
+ background-color: #1ea7fd;
+}
+.storybook-button--secondary {
+ color: #333;
+ background-color: transparent;
+ box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;
+}
+.storybook-button--small {
+ font-size: 12px;
+ padding: 10px 16px;
+}
+.storybook-button--medium {
+ font-size: 14px;
+ padding: 11px 20px;
+}
+.storybook-button--large {
+ font-size: 16px;
+ padding: 12px 24px;
+}
diff --git a/code/renderers/vue/template/components/index.js b/code/renderers/vue/template/components/index.js
new file mode 100644
index 00000000000..33b27eb659d
--- /dev/null
+++ b/code/renderers/vue/template/components/index.js
@@ -0,0 +1,6 @@
+import globalThis from 'global';
+
+import Button from './Button.vue';
+import Pre from './Pre.vue';
+
+globalThis.Components = { Button, Pre };