diff --git a/apps/frontend/src/layouts/default.vue b/apps/frontend/src/layouts/default.vue
index 66deb1770e..336b8a0adc 100644
--- a/apps/frontend/src/layouts/default.vue
+++ b/apps/frontend/src/layouts/default.vue
@@ -1279,7 +1279,7 @@ const { cycle: changeTheme } = useTheme()
left: 0;
background-color: var(--color-raised-bg);
z-index: 11; // 20 = modals, 10 = svg icons
- transform: translateY(100%);
+ transform: translateY(calc(100% + env(safe-area-inset-bottom)));
transition: transform 0.4s cubic-bezier(0.54, 0.84, 0.42, 1);
border-radius: var(--size-rounded-card) var(--size-rounded-card) 0 0;
box-shadow: 0 0 20px 2px rgba(0, 0, 0, 0);
@@ -1367,6 +1367,17 @@ const { cycle: changeTheme } = useTheme()
border-top: 2px solid rgba(0, 0, 0, 0);
box-sizing: border-box;
+ &::after {
+ content: '';
+ position: absolute;
+ bottom: 2px;
+ left: 0;
+ width: 100%;
+ height: 300px;
+ background-color: var(--color-raised-bg);
+ transform: translateY(100%);
+ }
+
&.expanded {
box-shadow: none;
border-radius: 0;
diff --git a/apps/frontend/src/pages/[type]/[id].vue b/apps/frontend/src/pages/[type]/[id].vue
index 9526da0636..3d22125526 100644
--- a/apps/frontend/src/pages/[type]/[id].vue
+++ b/apps/frontend/src/pages/[type]/[id].vue
@@ -2071,10 +2071,10 @@ const createGalleryItemMutation = useMutation({
file.type.split('/')[file.type.split('/').length - 1]
}&featured=${featured ?? false}`
- if (title) {
+ if (title != null) {
url += `&title=${encodeURIComponent(title)}`
}
- if (description) {
+ if (description != null) {
url += `&description=${encodeURIComponent(description)}`
}
if (ordering !== null && ordering !== undefined) {
@@ -2132,10 +2132,10 @@ const editGalleryItemMutation = useMutation({
mutationFn: async ({ projectId, imageUrl, title, description, featured, ordering }) => {
let url = `project/${projectId}/gallery?url=${encodeURIComponent(imageUrl)}&featured=${featured ?? false}`
- if (title) {
+ if (title != null) {
url += `&title=${encodeURIComponent(title)}`
}
- if (description) {
+ if (description != null) {
url += `&description=${encodeURIComponent(description)}`
}
if (ordering !== null && ordering !== undefined) {
diff --git a/apps/frontend/src/pages/[type]/[id]/gallery.vue b/apps/frontend/src/pages/[type]/[id]/gallery.vue
index da877f314c..9f5880d580 100644
--- a/apps/frontend/src/pages/[type]/[id]/gallery.vue
+++ b/apps/frontend/src/pages/[type]/[id]/gallery.vue
@@ -524,8 +524,8 @@ async function editGalleryItem() {
const imageUrl = filteredGallery.value[editIndex.value].url
const success = await contextEditGalleryItem(
imageUrl,
- editTitle.value || undefined,
- editDescription.value || undefined,
+ editTitle.value,
+ editDescription.value,
editFeatured.value,
editOrder.value ? Number(editOrder.value) : undefined,
)
@@ -723,7 +723,7 @@ async function deleteGalleryImage() {
margin-bottom: 0;
border-radius: var(--size-rounded-card) var(--size-rounded-card) 0 0;
- min-height: 10rem;
+ aspect-ratio: 16 / 9;
object-fit: cover;
}
diff --git a/apps/frontend/src/pages/[type]/[id]/settings/gallery.vue b/apps/frontend/src/pages/[type]/[id]/settings/gallery.vue
index 9ff5b64c9d..bd8b670089 100644
--- a/apps/frontend/src/pages/[type]/[id]/settings/gallery.vue
+++ b/apps/frontend/src/pages/[type]/[id]/settings/gallery.vue
@@ -427,8 +427,8 @@ const editGalleryItem = async () => {
const success = await editGalleryItemMutation(
filteredGallery.value[editIndex.value].url,
- editTitle.value || undefined,
- editDescription.value || undefined,
+ editTitle.value,
+ editDescription.value,
editFeatured.value,
editOrder.value ?? undefined,
)
@@ -643,7 +643,7 @@ onUnmounted(() => {
margin-bottom: 0;
border-radius: var(--size-rounded-card) var(--size-rounded-card) 0 0;
- min-height: 10rem;
+ aspect-ratio: 16 / 9;
object-fit: cover;
}
diff --git a/apps/frontend/src/pages/settings/pats.vue b/apps/frontend/src/pages/settings/pats.vue
index 69bc7936a1..50ad7ea54f 100644
--- a/apps/frontend/src/pages/settings/pats.vue
+++ b/apps/frontend/src/pages/settings/pats.vue
@@ -10,7 +10,7 @@