diff --git a/packages/builder/cypress/support/commands.js b/packages/builder/cypress/support/commands.js
index e67057344a..d99e2b271f 100644
--- a/packages/builder/cypress/support/commands.js
+++ b/packages/builder/cypress/support/commands.js
@@ -35,7 +35,13 @@ Cypress.Commands.add("login", () => {
Cypress.Commands.add("createApp", name => {
cy.visit(`localhost:${Cypress.env("PORT")}/builder`)
cy.wait(500)
- cy.contains(/Start from scratch/).dblclick()
+ cy.request(`${Cypress.config().baseUrl}api/applications?status=all`)
+ .its("body")
+ .then(body => {
+ if (body.length > 0) {
+ cy.get(".spectrum-Button").contains("Create app").click({ force: true })
+ }
+ })
cy.get(".spectrum-Modal").within(() => {
cy.get("input").eq(0).type(name).should("have.value", name).blur()
cy.get(".spectrum-ButtonGroup").contains("Create app").click()
diff --git a/packages/builder/src/components/start/CreateAppModal.svelte b/packages/builder/src/components/start/CreateAppModal.svelte
index 178588f608..60065b6eef 100644
--- a/packages/builder/src/components/start/CreateAppModal.svelte
+++ b/packages/builder/src/components/start/CreateAppModal.svelte
@@ -11,7 +11,6 @@
import { capitalise } from "helpers"
import { goto } from "@roxi/routify"
import { APP_NAME_REGEX } from "constants"
- import TemplateList from "./TemplateList.svelte"
export let template
export let inline
@@ -147,58 +146,34 @@
}
-{#if showTemplateSelection}
- {
- template = {}
- return false
- }}
- showCancelButton={!inline}
- showCloseIcon={!inline}
- >
- {
- if (!selected) {
- template = useImport ? { fromFile: true } : {}
- return
- }
- template = selected
+
+ {#if template?.fromFile}
+ {
+ $values.file = e.detail?.[0]
+ $touched.file = true
}}
/>
-
-{:else}
-
- {#if template?.fromFile}
- {
- $values.file = e.detail?.[0]
- $touched.file = true
- }}
- />
- {/if}
- ($touched.name = true)}
- label="Name"
- placeholder={$auth.user.firstName
- ? `${$auth.user.firstName}'s app`
- : "My app"}
- />
-
-{/if}
+ {/if}
+ ($touched.name = true)}
+ label="Name"
+ placeholder={$auth.user.firstName
+ ? `${$auth.user.firstName}'s app`
+ : "My app"}
+ />
+
diff --git a/packages/builder/src/components/start/TemplateList.svelte b/packages/builder/src/components/start/TemplateList.svelte
deleted file mode 100644
index 90573bddff..0000000000
--- a/packages/builder/src/components/start/TemplateList.svelte
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
- onSelect(null)}>
-
-
-
-
Start from scratch
-
BLANK
-
- onSelect(null, { useImport: true })}
- >
-
-
-
-
Import an app
-
BLANK
-
-
-
-
diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte
index ac10b5317f..047c60e979 100644
--- a/packages/builder/src/pages/builder/portal/apps/index.svelte
+++ b/packages/builder/src/pages/builder/portal/apps/index.svelte
@@ -11,6 +11,7 @@
notifications,
Body,
Search,
+ Icon,
} from "@budibase/bbui"
import Spinner from "components/common/Spinner.svelte"
import CreateAppModal from "components/start/CreateAppModal.svelte"
@@ -27,6 +28,7 @@
import AppRow from "components/start/AppRow.svelte"
import { AppStatus } from "constants"
import analytics, { Events } from "analytics"
+ import Logo from "assets/bb-space-man.svg"
let sortBy = "name"
let template
@@ -78,6 +80,7 @@
}
const initiateAppCreation = () => {
+ template = {}
creationModal.show()
creatingApp = true
}
@@ -300,14 +303,26 @@
{#if cloud}
-
@@ -389,9 +404,24 @@
{#if !enrichedApps.length && !creatingApp && loaded}
-
-
-
+
+
+
+
+
+ Create a business app in minutes!
+
+ initiateAppCreation()} size="M" cta>
+
+
+
+
{/if}
@@ -474,12 +504,15 @@
}
.grid {
+ height: 200px;
display: grid;
+ overflow: hidden;
grid-gap: var(--spacing-xl);
grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
+ grid-template-rows: minmax(70px, 1fr) minmax(100px, 1fr) minmax(0px, 0);
}
.template-card {
- height: 80px;
+ height: 70px;
border-radius: var(--border-radius-s);
border: 1px solid var(--spectrum-global-color-gray-300);
cursor: pointer;
@@ -533,4 +566,42 @@
justify-content: center;
align-items: center;
}
+
+ .centered {
+ width: calc(100% - 350px);
+ height: calc(100% - 100px);
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .main {
+ width: 300px;
+ }
+
+ .new-screen-text {
+ width: 160px;
+ text-align: center;
+ color: #2c2c2c;
+ font-weight: 600;
+ }
+
+ .new-screen-button {
+ margin-left: 5px;
+ height: 20px;
+ width: 100px;
+ display: flex;
+ align-items: center;
+ }
+
+ .img-size {
+ width: 160px;
+ height: 160px;
+ }
+
+ .background-icon {
+ margin-top: 4px;
+ margin-right: 4px;
+ }