+{/if}
diff --git a/packages/bbui/src/Tabs/Tab.svelte b/packages/bbui/src/Tabs/Tab.svelte
index 86f2c0ee52..0aa59f7f8a 100644
--- a/packages/bbui/src/Tabs/Tab.svelte
+++ b/packages/bbui/src/Tabs/Tab.svelte
@@ -5,7 +5,7 @@
export let icon = ""
const dispatch = createEventDispatcher()
- const selected = getContext("tab")
+ let selected = getContext("tab")
let tab
let tabInfo
@@ -16,8 +16,8 @@
// We just need to get this off the main thread to fix this, by using
// a 0ms timeout.
setTimeout(() => {
- tabInfo = tab.getBoundingClientRect()
- if ($selected.title === title) {
+ tabInfo = tab?.getBoundingClientRect()
+ if (tabInfo && $selected.title === title) {
$selected.info = tabInfo
}
}, 0)
diff --git a/packages/bbui/src/index.js b/packages/bbui/src/index.js
index 377d451604..c30047f73f 100644
--- a/packages/bbui/src/index.js
+++ b/packages/bbui/src/index.js
@@ -59,6 +59,7 @@ export { default as Badge } from "./Badge/Badge.svelte"
export { default as StatusLight } from "./StatusLight/StatusLight.svelte"
export { default as ColorPicker } from "./ColorPicker/ColorPicker.svelte"
export { default as InlineAlert } from "./InlineAlert/InlineAlert.svelte"
+export { default as Banner } from "./Banner/Banner.svelte"
// Typography
export { default as Body } from "./Typography/Body.svelte"
diff --git a/packages/builder/src/components/common/inputs/EditableLabel.svelte b/packages/builder/src/components/common/inputs/EditableLabel.svelte
new file mode 100644
index 0000000000..ffe3c0968e
--- /dev/null
+++ b/packages/builder/src/components/common/inputs/EditableLabel.svelte
@@ -0,0 +1,63 @@
+
+
+
+ {#if !editing}
+ {#if type === "heading"}
+ {value || defaultValue}
+ {:else if type === "body"}
+ {value || defaultValue}
+ {:else}
+
+ {/if}
+