diff --git a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte
index b953217f4d..c4c57c8e04 100644
--- a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte
+++ b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte
@@ -146,6 +146,7 @@
.root {
height: 100%;
+ padding: 20px;
display: flex;
flex-direction: column;
}
diff --git a/packages/builder/src/components/userInterface/ComponentSelectionList.svelte b/packages/builder/src/components/userInterface/ComponentSelectionList.svelte
index 509da640f6..d1958d3d3f 100644
--- a/packages/builder/src/components/userInterface/ComponentSelectionList.svelte
+++ b/packages/builder/src/components/userInterface/ComponentSelectionList.svelte
@@ -1,264 +1,54 @@
-
- {#each componentItems as item}
-
- {/each}
-
+
+ {#each categories as category}
+ - (selectedCategory = category)}
+ class:active={selectedCategory === category}>
+ {category.name}
+
+ {/each}
+
+
+
+
- (selectedComponent = null)}
- onOk={onTemplateInstanceChosen}>
- {#each templateInstances.map(i => i.name) as instance}
-
-
-
- {/each}
-
-
diff --git a/packages/builder/src/components/userInterface/ComponentItem.svelte b/packages/builder/src/components/userInterface/ComponentTab/Item.svelte
similarity index 100%
rename from packages/builder/src/components/userInterface/ComponentItem.svelte
rename to packages/builder/src/components/userInterface/ComponentTab/Item.svelte
diff --git a/packages/builder/src/components/userInterface/ComponentTab/Tab.svelte b/packages/builder/src/components/userInterface/ComponentTab/Tab.svelte
new file mode 100644
index 0000000000..8e45c570b3
--- /dev/null
+++ b/packages/builder/src/components/userInterface/ComponentTab/Tab.svelte
@@ -0,0 +1,10 @@
+
+
+{#each components as { icon, name, description }}
+
+{/each}
diff --git a/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte b/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte
index b4b200c40d..9ca5b1e122 100644
--- a/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte
+++ b/packages/builder/src/components/userInterface/ComponentsPaneSwitcher.svelte
@@ -60,9 +60,7 @@
.switcher {
display: flex;
justify-content: space-between;
- margin-bottom: 20px;
- padding: 0 20px 20px;
- border-bottom: 1px solid #d8d8d8;
+ margin: 20px;
}
.switcher > button {
@@ -85,11 +83,4 @@
color: var(--secondary100);
font-weight: 600;
}
-
- .panel {
- flex: 1 1 auto;
- height: 0px;
- overflow-y: auto;
- padding: 0 5px 40px 10px;
- }
diff --git a/packages/builder/src/components/userInterface/temporaryPanelStructure.js b/packages/builder/src/components/userInterface/temporaryPanelStructure.js
new file mode 100644
index 0000000000..163a93cfb3
--- /dev/null
+++ b/packages/builder/src/components/userInterface/temporaryPanelStructure.js
@@ -0,0 +1,244 @@
+export default {
+ categories: [
+ {
+ name: 'Basic',
+ components: [
+ {
+ name: 'Container',
+ description: 'This component contains things within itself',
+ icon: 'ri-layout-row-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Text',
+ description: 'This is a simple text component',
+ icon: 'ri-t-box-fill',
+ commonProps: {},
+ type: [
+ {
+ _component: '@budibase/standard-components/header',
+ name: 'Headline',
+ icon: 'headline',
+ props: {
+ type: {
+ type: 'options',
+ options: [
+ 'h1',
+ 'h2'
+ ],
+ 'default': 'h1'
+ }
+ }
+ },
+ {
+ _component: '@budibase/standard-components/text',
+ name: 'Paragraph',
+ icon: 'paragraph',
+ props: {}
+ }
+ ]
+ },
+ {
+ name: 'Button',
+ description: 'A basic html button that is ready for styling',
+ icon: 'ri-radio-button-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Icon',
+ description: 'A basic component for displaying icons',
+ icon: 'ri-sun-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Avatar',
+ description: 'A basic component for rendering an avatar',
+ icon: 'ri-user-smile-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Link',
+ description: 'A basic link component for internal and external links',
+ icon: 'ri-link',
+ commonProps: {},
+ type: []
+ }
+ ]
+ },
+ {
+ name: 'Form',
+ components: [
+ {
+ name: 'Button',
+ description: 'A basic html button that is ready for styling',
+ icon: 'ri-radio-button-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Icon',
+ description: 'A basic component for displaying icons',
+ icon: 'ri-sun-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Avatar',
+ description: 'A basic component for rendering an avatar',
+ icon: 'ri-user-smile-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Link',
+ description: 'A basic link component for internal and external links',
+ icon: 'ri-link',
+ commonProps: {},
+ type: []
+ }
+ ]
+ },
+ {
+ name: 'Blocks',
+ components: [
+ {
+ name: 'Container',
+ description: 'This component contains things within itself',
+ icon: 'ri-layout-row-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Text',
+ description: 'This is a simple text component',
+ icon: 'ri-t-box-fill',
+ commonProps: {},
+ type: [
+ {
+ _component: '@budibase/standard-components/header',
+ name: 'Headline',
+ icon: 'headline',
+ props: {
+ type: {
+ type: 'options',
+ options: [
+ 'h1',
+ 'h2'
+ ],
+ 'default': 'h1'
+ }
+ }
+ },
+ {
+ _component: '@budibase/standard-components/text',
+ name: 'Paragraph',
+ icon: 'paragraph',
+ props: {}
+ }
+ ]
+ },
+ {
+ name: 'Button',
+ description: 'A basic html button that is ready for styling',
+ icon: 'ri-radio-button-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Icon',
+ description: 'A basic component for displaying icons',
+ icon: 'ri-sun-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Avatar',
+ description: 'A basic component for rendering an avatar',
+ icon: 'ri-user-smile-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Link',
+ description: 'A basic link component for internal and external links',
+ icon: 'ri-link',
+ commonProps: {},
+ type: []
+ }
+ ]
+ },
+ {
+ name: 'Data',
+ components: [
+ {
+ name: 'Container',
+ description: 'This component contains things within itself',
+ icon: 'ri-layout-row-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Text',
+ description: 'This is a simple text component',
+ icon: 'ri-t-box-fill',
+ commonProps: {},
+ type: [
+ {
+ _component: '@budibase/standard-components/header',
+ name: 'Headline',
+ icon: 'headline',
+ props: {
+ type: {
+ type: 'options',
+ options: [
+ 'h1',
+ 'h2'
+ ],
+ 'default': 'h1'
+ }
+ }
+ },
+ {
+ _component: '@budibase/standard-components/text',
+ name: 'Paragraph',
+ icon: 'paragraph',
+ props: {}
+ }
+ ]
+ },
+ {
+ name: 'Button',
+ description: 'A basic html button that is ready for styling',
+ icon: 'ri-radio-button-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Icon',
+ description: 'A basic component for displaying icons',
+ icon: 'ri-sun-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Avatar',
+ description: 'A basic component for rendering an avatar',
+ icon: 'ri-user-smile-fill',
+ commonProps: {},
+ type: []
+ },
+ {
+ name: 'Link',
+ description: 'A basic link component for internal and external links',
+ icon: 'ri-link',
+ commonProps: {},
+ type: []
+ }
+ ]
+ },
+ ]
+}
\ No newline at end of file