diff --git a/app/controllers/templates_uploads_controller.rb b/app/controllers/templates_uploads_controller.rb
new file mode 100644
index 00000000..ffe5a148
--- /dev/null
+++ b/app/controllers/templates_uploads_controller.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class TemplatesUploadsController < ApplicationController
+ def create
+ template = current_account.templates.new(author: current_user)
+ template.name = File.basename(params[:files].first.original_filename, '.*')
+
+ template.save!
+
+ documents = Templates::CreateAttachments.call(template, params)
+
+ schema = documents.map { |doc| { attachment_uuid: doc.uuid, name: doc.filename.base } }
+
+ template.update!(schema:)
+
+ redirect_to edit_template_path(template)
+ end
+end
diff --git a/app/javascript/template_builder/builder.vue b/app/javascript/template_builder/builder.vue
index 35cdf264..60d3581e 100644
--- a/app/javascript/template_builder/builder.vue
+++ b/app/javascript/template_builder/builder.vue
@@ -350,7 +350,7 @@ export default {
onWindowResize (e) {
const breakpointLg = 1024
- this.isBreakpointLg = this.$el.getRootNode().querySelector('div').offsetWidth < breakpointLg
+ this.isBreakpointLg = this.$el.getRootNode().querySelector('div[data-v-app]').offsetWidth < breakpointLg
},
setDocumentRefs (el) {
if (el) {
diff --git a/app/views/dashboard/index.html.erb b/app/views/dashboard/index.html.erb
index c73c6209..b47a8fbb 100644
--- a/app/views/dashboard/index.html.erb
+++ b/app/views/dashboard/index.html.erb
@@ -1,11 +1,14 @@
<% if Docuseal.demo? %><%= render 'shared/demo_alert' %><% end %>
<% if @templates.any? %>
-
Templates
- <%= link_to new_template_path, class: 'btn btn-primary text-base btn-md gap-2', data: { turbo_frame: :modal } do %>
- <%= svg_icon('plus', class: 'w-6 h-6 stroke-2') %>
-
Create
- <% end %>
+
Document Templates
+
+ <%= render 'templates/upload_button' %>
+ <%= link_to new_template_path, class: 'btn btn-primary text-base btn-md gap-2', data: { turbo_frame: :modal } do %>
+ <%= svg_icon('plus', class: 'w-6 h-6 stroke-2') %>
+ Create
+ <% end %>
+
<% @templates.each do |template| %>
diff --git a/app/views/icons/_upload.html.erb b/app/views/icons/_upload.html.erb
new file mode 100644
index 00000000..2dc6247f
--- /dev/null
+++ b/app/views/icons/_upload.html.erb
@@ -0,0 +1,6 @@
+
diff --git a/app/views/templates/_upload_button.html.erb b/app/views/templates/_upload_button.html.erb
new file mode 100644
index 00000000..15f80f94
--- /dev/null
+++ b/app/views/templates/_upload_button.html.erb
@@ -0,0 +1,17 @@
+<%= form_for '', url: templates_upload_path, method: :post, class: 'inline', html: { enctype: 'multipart/form-data' } do %>
+
+
+<% end %>
diff --git a/app/views/templates/new.html.erb b/app/views/templates/new.html.erb
index 0c3475e9..bccbada2 100644
--- a/app/views/templates/new.html.erb
+++ b/app/views/templates/new.html.erb
@@ -1,4 +1,4 @@
-<%= render 'shared/turbo_modal', title: @base_template ? 'Clone Template' : 'New Template' do %>
+<%= render 'shared/turbo_modal', title: @base_template ? 'Clone Template' : 'New Document Template' do %>
<%= form_for @template, data: { turbo_frame: :_top } do |f| %>
<% if @base_template %>
<%= hidden_field_tag :base_template_id, @base_template.id %>
diff --git a/config/routes.rb b/config/routes.rb
index d49f50fe..38b3c067 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -47,6 +47,7 @@ Rails.application.routes.draw do
resources :users, only: %i[new create edit update destroy]
resources :submissions, only: %i[show destroy]
resources :console_redirect, only: %i[index]
+ resource :templates_upload, only: %i[create]
resources :templates, only: %i[new create edit show destroy] do
resources :submissions, only: %i[new create]
resources :submissions_export, only: %i[index new]