Merge branch 'spectrum-bbui' into spectrum/kevs-bits-and-bobs-the-sequel

This commit is contained in:
Keviin Åberg Kultalahti 2021-04-28 15:09:32 +02:00
commit e63e2b369a
20 changed files with 170 additions and 226 deletions

View File

@ -41,14 +41,12 @@
class="spectrum-ActionButton spectrum-ActionButton--size{size}" class="spectrum-ActionButton spectrum-ActionButton--size{size}"
{disabled} {disabled}
on:longPress on:longPress
on:click|preventDefault on:click|preventDefault>
>
{#if longPressable} {#if longPressable}
<svg <svg
class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold" class="spectrum-Icon spectrum-UIIcon-CornerTriangle100 spectrum-ActionButton-hold"
focusable="false" focusable="false"
aria-hidden="true" aria-hidden="true">
>
<use xlink:href="#spectrum-css-icon-CornerTriangle100" /> <use xlink:href="#spectrum-css-icon-CornerTriangle100" />
</svg> </svg>
{/if} {/if}
@ -57,8 +55,7 @@
class="spectrum-Icon spectrum-Icon--size{size}" class="spectrum-Icon spectrum-Icon--size{size}"
focusable="false" focusable="false"
aria-hidden="true" aria-hidden="true"
aria-label={icon} aria-label={icon}>
>
<use xlink:href="#spectrum-icon-18-{icon}" /> <use xlink:href="#spectrum-icon-18-{icon}" />
</svg> </svg>
{/if} {/if}
@ -66,9 +63,3 @@
<span class="spectrum-ActionButton-label"><slot /></span> <span class="spectrum-ActionButton-label"><slot /></span>
{/if} {/if}
</button> </button>
<style>
span {
text-transform: capitalize;
}
</style>

View File

@ -28,7 +28,7 @@
setContext("actionMenu", { show, hide }) setContext("actionMenu", { show, hide })
</script> </script>
<div class="contents" use:getAnchor on:click={openMenu}> <div use:getAnchor on:click={openMenu}>
<slot name="control" /> <slot name="control" />
</div> </div>
<Popover bind:this={dropdown} {anchor} align="left"> <Popover bind:this={dropdown} {anchor} align="left">
@ -36,9 +36,3 @@
<slot /> <slot />
</Menu> </Menu>
</Popover> </Popover>
<style>
div {
display: contents;
}
</style>

View File

@ -3,14 +3,25 @@ import { localStorageStore } from "./localStorage"
export const getThemeStore = () => { export const getThemeStore = () => {
const themeElement = document.documentElement const themeElement = document.documentElement
const initialValue = { const initialValue = {
darkMode: true, theme: "darkest",
options: ["lightest", "light", "dark", "darkest"],
} }
const store = localStorageStore("bb-theme", initialValue) const store = localStorageStore("bb-theme", initialValue)
// Update theme when store changes // Update theme class when store changes
store.subscribe(theme => { store.subscribe(state => {
themeElement.classList.toggle("spectrum--darkest", theme.darkMode) // Handle any old local storage values - this can be removed after the update
themeElement.classList.toggle("spectrum--lightest", !theme.darkMode) if (state.darkMode !== undefined) {
store.set(initialValue)
return
}
state.options.forEach(option => {
themeElement.classList.toggle(
`spectrum--${option}`,
option === state.theme
)
})
}) })
return store return store

View File

@ -57,7 +57,7 @@
<CreateColumnButton /> <CreateColumnButton />
{#if schema && Object.keys(schema).length > 0} {#if schema && Object.keys(schema).length > 0}
<CreateRowButton <CreateRowButton
title={isUsersTable ? 'Create New User' : 'Create New Row'} title={isUsersTable ? 'Create user' : 'Create row'}
modalContentComponent={isUsersTable ? CreateEditUser : CreateEditRow} /> modalContentComponent={isUsersTable ? CreateEditUser : CreateEditRow} />
<CreateViewButton /> <CreateViewButton />
<ManageAccessButton resourceId={$tables.selected?._id} /> <ManageAccessButton resourceId={$tables.selected?._id} />

View File

@ -1,5 +1,5 @@
<script> <script>
import { Modal, Button } from "@budibase/bbui" import { Modal, ActionButton } from "@budibase/bbui"
import CalculateModal from "../modals/CalculateModal.svelte" import CalculateModal from "../modals/CalculateModal.svelte"
export let view = {} export let view = {}
@ -7,15 +7,14 @@
let modal let modal
</script> </script>
<Button <ActionButton
icon="Calculator" icon="Calculator"
primary
size="S" size="S"
quiet quiet
on:click={modal.show} on:click={modal.show}
active={view.field && view.calculation}> active={view.field && view.calculation}>
Calculate Calculate
</Button> </ActionButton>
<Modal bind:this={modal}> <Modal bind:this={modal}>
<CalculateModal {view} /> <CalculateModal {view} />
</Modal> </Modal>

View File

@ -1,13 +1,13 @@
<script> <script>
import { Button, Icon, Modal, ModalContent } from "@budibase/bbui" import { ActionButton, Modal } from "@budibase/bbui"
import CreateEditColumn from "../modals/CreateEditColumn.svelte" import CreateEditColumn from "../modals/CreateEditColumn.svelte"
let modal let modal
</script> </script>
<Button icon="AddCircle" primary size="S" quiet on:click={modal.show}> <ActionButton icon="TableColumnAddRight" quiet size="S" on:click={modal.show}>
Create New Column Create column
</Button> </ActionButton>
<Modal bind:this={modal}> <Modal bind:this={modal}>
<CreateEditColumn /> <CreateEditColumn />
</Modal> </Modal>

View File

@ -1,16 +1,16 @@
<script> <script>
import { Button, Icon, Modal } from "@budibase/bbui" import { ActionButton, Modal } from "@budibase/bbui"
import CreateEditRow from "../modals/CreateEditRow.svelte" import CreateEditRow from "../modals/CreateEditRow.svelte"
export let modalContentComponent = CreateEditRow export let modalContentComponent = CreateEditRow
export let title = "Create New Row" export let title = "Create row"
let modal let modal
</script> </script>
<Button icon="Add" primary size="S" quiet on:click={modal.show}> <ActionButton icon="TableRowAddBottom" size="S" quiet on:click={modal.show}>
{title} {title}
</Button> </ActionButton>
<Modal bind:this={modal}> <Modal bind:this={modal}>
<svelte:component this={modalContentComponent} /> <svelte:component this={modalContentComponent} />
</Modal> </Modal>

View File

@ -1,13 +1,13 @@
<script> <script>
import { Modal, Button } from "@budibase/bbui" import { Modal, ActionButton } from "@budibase/bbui"
import CreateViewModal from "../modals/CreateViewModal.svelte" import CreateViewModal from "../modals/CreateViewModal.svelte"
let modal let modal
</script> </script>
<Button icon="CollectionAdd" primary size="S" quiet on:click={modal.show}> <ActionButton icon="CollectionAdd" size="S" quiet on:click={modal.show}>
Create New View Create view
</Button> </ActionButton>
<Modal bind:this={modal}> <Modal bind:this={modal}>
<CreateViewModal /> <CreateViewModal />
</Modal> </Modal>

View File

@ -1,5 +1,5 @@
<script> <script>
import { Button, Modal } from "@budibase/bbui" import { ActionButton, Modal } from "@budibase/bbui"
import ExportModal from "../modals/ExportModal.svelte" import ExportModal from "../modals/ExportModal.svelte"
export let view export let view
@ -7,9 +7,9 @@
let modal let modal
</script> </script>
<Button icon="Download" primary size="S" quiet on:click={modal.show}> <ActionButton icon="Download" size="S" quiet on:click={modal.show}>
Export Export
</Button> </ActionButton>
<Modal bind:this={modal}> <Modal bind:this={modal}>
<ExportModal {view} /> <ExportModal {view} />
</Modal> </Modal>

View File

@ -1,5 +1,5 @@
<script> <script>
import { Button, Modal } from "@budibase/bbui" import { ActionButton, Modal } from "@budibase/bbui"
import FilterModal from "../modals/FilterModal.svelte" import FilterModal from "../modals/FilterModal.svelte"
export let view = {} export let view = {}
@ -7,15 +7,14 @@
let modal let modal
</script> </script>
<Button <ActionButton
icon="Filter" icon="Filter"
primary
size="S" size="S"
quiet quiet
on:click={modal.show} on:click={modal.show}
active={view.filters?.length}> active={view.filters?.length}>
Filter Filter
</Button> </ActionButton>
<Modal bind:this={modal}> <Modal bind:this={modal}>
<FilterModal {view} /> <FilterModal {view} />
</Modal> </Modal>

View File

@ -1,28 +1,13 @@
<script> <script>
import { Button } from "@budibase/bbui" import { ActionButton } from "@budibase/bbui"
export let hideAutocolumns export let hideAutocolumns
let anchor
let dropdown
function hideOrUnhide() { function hideOrUnhide() {
hideAutocolumns = !hideAutocolumns hideAutocolumns = !hideAutocolumns
} }
</script> </script>
<div bind:this={anchor}> <ActionButton icon="MagicWand" primary size="S" quiet on:click={hideOrUnhide}>
<Button icon="MagicWand" primary size="S" quiet on:click={hideOrUnhide}> {#if hideAutocolumns}Show auto columns{:else}Hide auto columns{/if}
{#if hideAutocolumns} </ActionButton>
Show Auto Columns
{:else}
Hide Auto Columns
{/if}
</Button>
</div>
<style>
i {
margin-right: 4px;
}
</style>

View File

@ -1,5 +1,5 @@
<script> <script>
import { Button, Modal } from "@budibase/bbui" import { ActionButton, Modal } from "@budibase/bbui"
import { permissions } from "stores/backend" import { permissions } from "stores/backend"
import ManageAccessModal from "../modals/ManageAccessModal.svelte" import ManageAccessModal from "../modals/ManageAccessModal.svelte"
@ -14,9 +14,9 @@
} }
</script> </script>
<Button icon="LockClosed" primary size="S" quiet on:click={openDropdown}> <ActionButton icon="LockClosed" size="S" quiet on:click={openDropdown}>
Manage Access Manage access
</Button> </ActionButton>
<Modal bind:this={modal}> <Modal bind:this={modal}>
<ManageAccessModal <ManageAccessModal
{resourceId} {resourceId}

View File

@ -34,11 +34,10 @@
{#each $tables.list as table, idx} {#each $tables.list as table, idx}
<NavItem <NavItem
border={idx > 0} border={idx > 0}
icon={table._id === TableNames.USERS ? "UserGroup" : "Table"} icon={table._id === TableNames.USERS ? 'UserGroup' : 'Table'}
text={table.name} text={table.name}
selected={selectedView === `all_${table._id}`} selected={selectedView === `all_${table._id}`}
on:click={() => selectTable(table)} on:click={() => selectTable(table)}>
>
{#if table._id !== TableNames.USERS} {#if table._id !== TableNames.USERS}
<EditTablePopover {table} /> <EditTablePopover {table} />
{/if} {/if}
@ -46,14 +45,12 @@
{#each Object.keys(table.views || {}) as viewName, idx (idx)} {#each Object.keys(table.views || {}) as viewName, idx (idx)}
<NavItem <NavItem
indentLevel={1} indentLevel={1}
icon="ri-eye-line" icon="Remove"
text={viewName} text={viewName}
selected={selectedView === viewName} selected={selectedView === viewName}
on:click={() => onClickView(table, viewName)} on:click={() => onClickView(table, viewName)}>
>
<EditViewPopover <EditViewPopover
view={{ name: viewName, ...table.views[viewName] }} view={{ name: viewName, ...table.views[viewName] }} />
/>
</NavItem> </NavItem>
{/each} {/each}
{/each} {/each}

View File

@ -1,40 +1,30 @@
<script> <script>
import { goto } from "@roxi/routify" import { goto } from "@roxi/routify"
import { views } from "stores/backend" import { views } from "stores/backend"
import { notifications } from "@budibase/bbui"
import { Icon, Popover, Button, Input } from "@budibase/bbui"
import ConfirmDialog from "components/common/ConfirmDialog.svelte" import ConfirmDialog from "components/common/ConfirmDialog.svelte"
import { DropdownContainer, DropdownItem } from "components/common/Dropdowns" import {
notifications,
Icon,
Input,
ActionMenu,
MenuItem,
Modal,
ModalContent,
} from "@budibase/bbui"
export let view export let view
let anchor let editorModal
let dropdown let confirmDeleteDialogue
let editing
let originalName = view.name let originalName = view.name
let confirmDeleteDialog let confirmDeleteDialog
function showEditor() {
editing = true
}
function hideEditor() {
dropdown.hide()
editing = false
}
function showDelete() {
dropdown.hide()
confirmDeleteDialog.show()
}
async function save() { async function save() {
await views.save({ await views.save({
originalName, originalName,
...view, ...view,
}) })
notifications.success("View renamed successfully") notifications.success("View renamed successfully")
hideEditor()
} }
async function deleteView() { async function deleteView() {
@ -46,69 +36,21 @@
} }
</script> </script>
<div on:click|stopPropagation> <ActionMenu>
<div bind:this={anchor} class="icon" on:click={dropdown.show}> <div slot="control" class="icon">
<Icon s hoverable name="MoreSmallList" /> <Icon s hoverable name="MoreSmallList" />
</div> </div>
<Popover align="left" {anchor} bind:this={dropdown}> <MenuItem icon="Edit" on:click={editorModal.show}>Edit</MenuItem>
{#if editing} <MenuItem icon="Delete" on:click={confirmDeleteDialog.show}>Delete</MenuItem>
<div class="actions"> </ActionMenu>
<h5>Edit View</h5> <Modal bind:this={editorModal}>
<Input label="View Name" thin bind:value={view.name} /> <ModalContent title="Edit View" onConfirm={save} confirmText="Save">
<footer> <Input label="View Name" thin bind:value={view.name} />
<Button secondary on:click={hideEditor}>Cancel</Button> </ModalContent>
<Button primary on:click={save}>Save</Button> </Modal>
</footer>
</div>
{:else}
<DropdownContainer>
<DropdownItem
icon="ri-edit-line"
data-cy="edit-view"
title="Edit"
on:click={showEditor}
/>
<DropdownItem
icon="ri-delete-bin-line"
title="Delete"
data-cy="delete-view"
on:click={showDelete}
/>
</DropdownContainer>
{/if}
</Popover>
</div>
<ConfirmDialog <ConfirmDialog
bind:this={confirmDeleteDialog} bind:this={confirmDeleteDialog}
body={`Are you sure you wish to delete the view '${view.name}'? Your data will be deleted and this action cannot be undone.`} body={`Are you sure you wish to delete the view '${view.name}'? Your data will be deleted and this action cannot be undone.`}
okText="Delete View" okText="Delete View"
onOk={deleteView} onOk={deleteView}
title="Confirm Deletion" title="Confirm Deletion" />
/>
<style>
div.icon {
display: flex;
flex-direction: row;
justify-content: flex-end;
align-items: center;
}
.actions {
padding: var(--spacing-xl);
display: grid;
grid-gap: var(--spacing-xl);
min-width: 400px;
}
h5 {
margin: 0;
font-weight: 500;
}
footer {
display: flex;
justify-content: flex-end;
gap: var(--spacing-m);
}
</style>

View File

@ -1,5 +1,5 @@
<script> <script>
import { Modal, ModalContent } from "@budibase/bbui" import { Modal, ModalContent, Body } from "@budibase/bbui"
export let title = "" export let title = ""
export let body = "" export let body = ""
@ -20,15 +20,9 @@
<Modal bind:this={modal} on:hide={onCancel}> <Modal bind:this={modal} on:hide={onCancel}>
<ModalContent onConfirm={onOk} {title} confirmText={okText} {cancelText} red> <ModalContent onConfirm={onOk} {title} confirmText={okText} {cancelText} red>
<div class="body"> <Body s>
{body} {body}
<slot /> <slot />
</div> </Body>
</ModalContent> </ModalContent>
</Modal> </Modal>
<style>
.body {
font-size: var(--font-size-s);
}
</style>

View File

@ -4,6 +4,7 @@
ActionGroup, ActionGroup,
ActionButton, ActionButton,
MenuItem, MenuItem,
Icon,
} from "@budibase/bbui" } from "@budibase/bbui"
import { store, currentAssetName } from "builderStore" import { store, currentAssetName } from "builderStore"
import structure from "./componentStructure.json" import structure from "./componentStructure.json"
@ -12,7 +13,7 @@
const enrichStructure = (structure, definitions) => { const enrichStructure = (structure, definitions) => {
let enrichedStructure = [] let enrichedStructure = []
structure.forEach((item) => { structure.forEach(item => {
if (typeof item === "string") { if (typeof item === "string") {
const def = definitions[`@budibase/standard-components/${item}`] const def = definitions[`@budibase/standard-components/${item}`]
if (def) { if (def) {
@ -32,37 +33,65 @@
return enrichedStructure return enrichedStructure
} }
const onItemChosen = async (item) => { const onItemChosen = async item => {
if (!item.isCategory) { if (!item.isCategory) {
// Add this component
await store.actions.components.create(item.component) await store.actions.components.create(item.component)
} }
} }
</script> </script>
<ActionGroup> <div class="components">
{#each enrichedStructure as item} {#each enrichedStructure as item}
<ActionMenu disabled={!item.isCategory}> <ActionMenu disabled={!item.isCategory}>
<ActionButton <ActionButton
icon={item.icon} icon={item.icon}
primary
quiet quiet
size="S"
slot="control" slot="control"
on:click={() => onItemChosen(item)} on:click={() => onItemChosen(item)}>
> <div class="buttonContent">
{item.name} {item.name}
{#if item.isCategory}
<Icon size="S" name="ChevronDown" />
{/if}
</div>
</ActionButton> </ActionButton>
{#each item.children || [] as item} {#each item.children || [] as item}
{#if !item.showOnAsset || item.showOnAsset.includes($currentAssetName)} {#if !item.showOnAsset || item.showOnAsset.includes($currentAssetName)}
<MenuItem <MenuItem
dataCy={`component-${item.name}`} dataCy={`component-${item.name}`}
icon={item.icon} icon={item.icon}
on:click={() => onItemChosen(item)} on:click={() => onItemChosen(item)}>
>
{item.name} {item.name}
</MenuItem> </MenuItem>
{/if} {/if}
{/each} {/each}
</ActionMenu> </ActionMenu>
{/each} {/each}
</ActionGroup> </div>
<style>
.components {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
flex-wrap: wrap;
margin-top: -10px;
}
.components :global(> *) {
margin-top: 10px;
}
.buttonContent {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: flex-end;
}
.buttonContent :global(svg) {
margin-left: 2px !important;
margin-right: 0 !important;
margin-bottom: -1px;
}
</style>

View File

@ -7,7 +7,7 @@
"search", "search",
{ {
"name": "Form", "name": "Form",
"icon": "ri-file-edit-line", "icon": "Form",
"children": [ "children": [
"form", "form",
"fieldgroup", "fieldgroup",
@ -24,7 +24,7 @@
}, },
{ {
"name": "Card", "name": "Card",
"icon": "ri-archive-drawer-line", "icon": "Card",
"children": [ "children": [
"stackedlist", "stackedlist",
"card", "card",
@ -34,7 +34,7 @@
}, },
{ {
"name": "Chart", "name": "Chart",
"icon": "ri-bar-chart-2-line", "icon": "GraphBarVertical",
"children": [ "children": [
"bar", "bar",
"line", "line",
@ -46,7 +46,7 @@
}, },
{ {
"name": "Elements", "name": "Elements",
"icon": "ri-paragraph", "icon": "TextParagraph",
"children": [ "children": [
"heading", "heading",
"text", "text",
@ -59,7 +59,7 @@
}, },
{ {
"name": "Other", "name": "Other",
"icon": "ri-more-2-line", "icon": "More",
"children": [ "children": [
"screenslot", "screenslot",
"navigation", "navigation",

View File

@ -1,8 +1,11 @@
<script> <script>
import { themeStore } from "builderStore" import { themeStore } from "builderStore"
import { Toggle } from "@budibase/bbui" import { Select } from "@budibase/bbui"
import { capitalise } from "../../helpers"
let showAdvanced = false
</script> </script>
<Toggle text="Dark theme" bind:value={$themeStore.darkMode} /> <Select
options={$themeStore.options}
bind:value={$themeStore.theme}
placeholder={null}
getOptionLabel={capitalise} />

View File

@ -44,7 +44,7 @@
<style> <style>
.apps-card { .apps-card {
background-color: var(--background-alt); background-color: var(--background);
padding: var(--spacing-xl) var(--spacing-xl) var(--spacing-xl) padding: var(--spacing-xl) var(--spacing-xl) var(--spacing-xl)
var(--spacing-xl); var(--spacing-xl);
max-width: 300px; max-width: 300px;

View File

@ -2,7 +2,7 @@
"container": { "container": {
"name": "Container", "name": "Container",
"description": "This component contains things within itself", "description": "This component contains things within itself",
"icon": "ri-layout-column-line", "icon": "Sandbox",
"hasChildren": true, "hasChildren": true,
"styleable": true, "styleable": true,
"transitionable": true, "transitionable": true,
@ -10,14 +10,14 @@
}, },
"screenslot": { "screenslot": {
"name": "Screenslot", "name": "Screenslot",
"icon": "ri-artboard-2-line", "icon": "WebPage",
"description": "Contains your app screens", "description": "Contains your app screens",
"styleable": true "styleable": true
}, },
"button": { "button": {
"name": "Button", "name": "Button",
"description": "A basic html button that is ready for styling", "description": "A basic html button that is ready for styling",
"icon": "ri-share-box-line", "icon": "Button",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -40,7 +40,7 @@
"repeater": { "repeater": {
"name": "Repeater", "name": "Repeater",
"description": "A configurable data list that attaches to your backend tables.", "description": "A configurable data list that attaches to your backend tables.",
"icon": "ri-list-check-2", "icon": "ViewList",
"styleable": true, "styleable": true,
"hasChildren": true, "hasChildren": true,
"settings": [ "settings": [
@ -68,7 +68,7 @@
"search": { "search": {
"name": "Search", "name": "Search",
"description": "A searchable list of items.", "description": "A searchable list of items.",
"icon": "ri-search-line", "icon": "Search",
"styleable": true, "styleable": true,
"hasChildren": true, "hasChildren": true,
"settings": [ "settings": [
@ -101,7 +101,7 @@
} }
}, },
"stackedlist": { "stackedlist": {
"name": "Stacked List", "name": "TaskList",
"icon": "ri-archive-drawer-line", "icon": "ri-archive-drawer-line",
"description": "A basic card component that can contain content and actions.", "description": "A basic card component that can contain content and actions.",
"styleable": true, "styleable": true,
@ -132,7 +132,7 @@
"card": { "card": {
"name": "Vertical Card", "name": "Vertical Card",
"description": "A basic card component that can contain content and actions.", "description": "A basic card component that can contain content and actions.",
"icon": "ri-layout-column-line", "icon": "ViewColumn",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -192,7 +192,7 @@
"text": { "text": {
"name": "Paragraph", "name": "Paragraph",
"description": "A component for displaying paragraph text.", "description": "A component for displaying paragraph text.",
"icon": "ri-paragraph", "icon": "TextParagraph",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -204,7 +204,7 @@
}, },
"heading": { "heading": {
"name": "Headline", "name": "Headline",
"icon": "ri-heading", "icon": "TextBold",
"description": "A component for displaying heading text", "description": "A component for displaying heading text",
"styleable": true, "styleable": true,
"settings": [ "settings": [
@ -225,7 +225,7 @@
"image": { "image": {
"name": "Image", "name": "Image",
"description": "A basic component for displaying images", "description": "A basic component for displaying images",
"icon": "ri-image-line", "icon": "Image",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -238,7 +238,7 @@
"backgroundimage": { "backgroundimage": {
"name": "Background Image", "name": "Background Image",
"description": "A background image", "description": "A background image",
"icon": "ri-image-line", "icon": "Images",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -295,7 +295,7 @@
"icon": { "icon": {
"name": "Icon", "name": "Icon",
"description": "A basic component for displaying icons", "description": "A basic component for displaying icons",
"icon": "ri-sun-fill", "icon": "Bell",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -342,7 +342,7 @@
"login": { "login": {
"name": "Login Form", "name": "Login Form",
"description": "A component that automatically generates a login screen for your app.", "description": "A component that automatically generates a login screen for your app.",
"icon": "ri-login-box-line", "icon": "Login",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -365,7 +365,7 @@
"navigation": { "navigation": {
"name": "Nav Bar", "name": "Nav Bar",
"description": "A component for handling the navigation within your app.", "description": "A component for handling the navigation within your app.",
"icon": "ri-navigation-line", "icon": "BreadcrumbNavigation",
"styleable": true, "styleable": true,
"hasChildren": true, "hasChildren": true,
"settings": [ "settings": [
@ -379,7 +379,7 @@
"link": { "link": {
"name": "Link", "name": "Link",
"description": "A basic link component for internal and external links", "description": "A basic link component for internal and external links",
"icon": "ri-link", "icon": "Link",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -408,7 +408,7 @@
"cardhorizontal": { "cardhorizontal": {
"name": "Horizontal Card", "name": "Horizontal Card",
"description": "A basic card component that can contain content and actions.", "description": "A basic card component that can contain content and actions.",
"icon": "ri-layout-row-line", "icon": "ViewRow",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -480,7 +480,7 @@
"cardstat": { "cardstat": {
"name": "Stat Card", "name": "Stat Card",
"description": "A card component for displaying numbers.", "description": "A card component for displaying numbers.",
"icon": "ri-dual-sim-2-line", "icon": "Card",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -505,7 +505,7 @@
}, },
"embed": { "embed": {
"name": "Embed", "name": "Embed",
"icon": "ri-code-line", "icon": "Code",
"description": "Embed content from 3rd party sources", "description": "Embed content from 3rd party sources",
"styleable": true, "styleable": true,
"settings": [ "settings": [
@ -519,7 +519,7 @@
"bar": { "bar": {
"name": "Bar Chart", "name": "Bar Chart",
"description": "Bar chart", "description": "Bar chart",
"icon": "ri-bar-chart-line", "icon": "GraphBarVertical",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -619,7 +619,7 @@
"line": { "line": {
"name": "Line Chart", "name": "Line Chart",
"description": "Line chart", "description": "Line chart",
"icon": "ri-line-chart-line", "icon": "GraphTrend",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -720,7 +720,7 @@
"area": { "area": {
"name": "Area Chart", "name": "Area Chart",
"description": "Line chart", "description": "Line chart",
"icon": "ri-line-chart-fill", "icon": "GraphAreaStacked",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -833,7 +833,7 @@
"pie": { "pie": {
"name": "Pie Chart", "name": "Pie Chart",
"description": "Pie chart", "description": "Pie chart",
"icon": "ri-pie-chart-line", "icon": "GraphPie",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -910,7 +910,7 @@
"donut": { "donut": {
"name": "Donut Chart", "name": "Donut Chart",
"description": "Donut chart", "description": "Donut chart",
"icon": "ri-donut-chart-line", "icon": "GraphDonut",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -987,7 +987,7 @@
"candlestick": { "candlestick": {
"name": "Candlestick Chart", "name": "Candlestick Chart",
"description": "Candlestick chart", "description": "Candlestick chart",
"icon": "ri-stock-line", "icon": "GraphBarVerticalStacked",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1068,7 +1068,7 @@
}, },
"form": { "form": {
"name": "Form", "name": "Form",
"icon": "ri-file-text-line", "icon": "Form",
"styleable": true, "styleable": true,
"hasChildren": true, "hasChildren": true,
"actions": [ "actions": [
@ -1133,7 +1133,7 @@
}, },
"fieldgroup": { "fieldgroup": {
"name": "Field Group", "name": "Field Group",
"icon": "ri-layout-row-line", "icon": "Group",
"styleable": true, "styleable": true,
"hasChildren": true, "hasChildren": true,
"settings": [ "settings": [
@ -1161,7 +1161,7 @@
}, },
"stringfield": { "stringfield": {
"name": "Text Field", "name": "Text Field",
"icon": "ri-t-box-line", "icon": "Text",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1189,7 +1189,7 @@
}, },
"numberfield": { "numberfield": {
"name": "Number Field", "name": "Number Field",
"icon": "ri-edit-box-line", "icon": "123",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1217,7 +1217,7 @@
}, },
"passwordfield": { "passwordfield": {
"name": "Password Field", "name": "Password Field",
"icon": "ri-lock-password-line", "icon": "LockClosed",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1245,7 +1245,7 @@
}, },
"optionsfield": { "optionsfield": {
"name": "Options Picker", "name": "Options Picker",
"icon": "ri-file-list-line", "icon": "ViewList",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1274,7 +1274,7 @@
}, },
"booleanfield": { "booleanfield": {
"name": "Checkbox", "name": "Checkbox",
"icon": "ri-checkbox-line", "icon": "Checkmark",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1302,7 +1302,7 @@
}, },
"longformfield": { "longformfield": {
"name": "Rich Text", "name": "Rich Text",
"icon": "ri-file-edit-line", "icon": "TextParagraph",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1331,7 +1331,7 @@
}, },
"datetimefield": { "datetimefield": {
"name": "Date Picker", "name": "Date Picker",
"icon": "ri-calendar-line", "icon": "DateInput",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1365,7 +1365,7 @@
}, },
"attachmentfield": { "attachmentfield": {
"name": "Attachment", "name": "Attachment",
"icon": "ri-image-edit-line", "icon": "Attach",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1388,7 +1388,7 @@
}, },
"relationshipfield": { "relationshipfield": {
"name": "Relationship Picker", "name": "Relationship Picker",
"icon": "ri-links-line", "icon": "TaskList",
"styleable": true, "styleable": true,
"settings": [ "settings": [
{ {
@ -1416,7 +1416,7 @@
}, },
"dataprovider": { "dataprovider": {
"name": "Data Provider", "name": "Data Provider",
"icon": "ri-database-2-line", "icon": "Data",
"styleable": false, "styleable": false,
"hasChildren": true, "hasChildren": true,
"settings": [ "settings": [
@ -1476,7 +1476,7 @@
}, },
"table": { "table": {
"name": "Table", "name": "Table",
"icon": "ri-table-line", "icon": "Table",
"styleable": true, "styleable": true,
"hasChildren": true, "hasChildren": true,
"settings": [ "settings": [