Ensure park and ride slugs are valid before displaying links

Prevents 500 errors by filtering out parks and rides with null or empty slugs from trending lists and excludes them from database queries where slugs are required. Additionally, it adds conditional rendering in templates to handle parks without slugs gracefully.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 0bdea3fb-49ea-4863-b501-fa6f5af0cbf0
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
This commit is contained in:
pac7
2025-09-22 14:36:17 +00:00
parent 1a8171f918
commit 0ee6e8c820
6 changed files with 155 additions and 185 deletions

View File

@@ -410,9 +410,6 @@
.top-0 {
top: calc(var(--spacing) * 0);
}
.top-1 {
top: calc(var(--spacing) * 1);
}
.top-1\/2 {
top: calc(1/2 * 100%);
}
@@ -452,9 +449,6 @@
.left-0 {
left: calc(var(--spacing) * 0);
}
.left-1 {
left: calc(var(--spacing) * 1);
}
.left-1\/2 {
left: calc(1/2 * 100%);
}
@@ -533,9 +527,6 @@
max-width: 96rem;
}
}
.-mx-1 {
margin-inline: calc(var(--spacing) * -1);
}
.-mx-1\.5 {
margin-inline: calc(var(--spacing) * -1.5);
}
@@ -554,9 +545,6 @@
.mx-auto {
margin-inline: auto;
}
.-my-1 {
margin-block: calc(var(--spacing) * -1);
}
.-my-1\.5 {
margin-block: calc(var(--spacing) * -1.5);
}
@@ -566,9 +554,6 @@
.my-auto {
margin-block: auto;
}
.mt-0 {
margin-top: calc(var(--spacing) * 0);
}
.mt-0\.5 {
margin-top: calc(var(--spacing) * 0.5);
}
@@ -641,9 +626,6 @@
.mb-12 {
margin-bottom: calc(var(--spacing) * 12);
}
.-ml-0 {
margin-left: calc(var(--spacing) * -0);
}
.-ml-0\.5 {
margin-left: calc(var(--spacing) * -0.5);
}
@@ -815,9 +797,6 @@
.min-h-screen {
min-height: 100vh;
}
.w-1 {
width: calc(var(--spacing) * 1);
}
.w-1\/2 {
width: calc(1/2 * 100%);
}
@@ -953,13 +932,6 @@
.grow {
flex-grow: 1;
}
.border-collapse {
border-collapse: collapse;
}
.-translate-x-1 {
--tw-translate-x: calc(var(--spacing) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
}
.-translate-x-1\/2 {
--tw-translate-x: calc(calc(1/2 * 100%) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -976,10 +948,6 @@
--tw-translate-x: 100%;
translate: var(--tw-translate-x) var(--tw-translate-y);
}
.-translate-y-1 {
--tw-translate-y: calc(var(--spacing) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
}
.-translate-y-1\/2 {
--tw-translate-y: calc(calc(1/2 * 100%) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1162,13 +1130,6 @@
margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
}
}
.space-y-8 {
:where(& > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));
margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));
}
}
.-space-x-px {
:where(& > :not(:last-child)) {
--tw-space-x-reverse: 0;
@@ -1433,9 +1394,6 @@
.bg-\[\#5865F2\] {
background-color: #5865F2;
}
.bg-accent {
background-color: var(--color-accent);
}
.bg-accent\/10 {
background-color: color-mix(in srgb, #8b5cf6 10%, transparent);
@supports (color: color-mix(in lab, red, red)) {
@@ -1484,9 +1442,6 @@
.bg-blue-600 {
background-color: var(--color-blue-600);
}
.bg-blue-900 {
background-color: var(--color-blue-900);
}
.bg-blue-900\/40 {
background-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 40%, transparent);
@supports (color: color-mix(in lab, red, red)) {
@@ -1541,9 +1496,6 @@
.bg-green-600 {
background-color: var(--color-green-600);
}
.bg-green-900 {
background-color: var(--color-green-900);
}
.bg-green-900\/40 {
background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 40%, transparent);
@supports (color: color-mix(in lab, red, red)) {
@@ -1598,9 +1550,6 @@
.bg-red-600 {
background-color: var(--color-red-600);
}
.bg-red-900 {
background-color: var(--color-red-900);
}
.bg-red-900\/40 {
background-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 40%, transparent);
@supports (color: color-mix(in lab, red, red)) {
@@ -1658,9 +1607,6 @@
.bg-yellow-600 {
background-color: var(--color-yellow-600);
}
.bg-yellow-900 {
background-color: var(--color-yellow-900);
}
.bg-yellow-900\/40 {
background-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 40%, transparent);
@supports (color: color-mix(in lab, red, red)) {
@@ -1679,10 +1625,6 @@
--tw-gradient-position: to top in oklab;
background-image: linear-gradient(var(--tw-gradient-stops));
}
.from-black {
--tw-gradient-from: var(--color-black);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.from-black\/60 {
--tw-gradient-from: color-mix(in srgb, #000 60%, transparent);
@supports (color: color-mix(in lab, red, red)) {
@@ -1743,10 +1685,6 @@
--tw-gradient-from: var(--color-red-500);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.from-secondary {
--tw-gradient-from: var(--color-secondary);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.from-secondary\/20 {
--tw-gradient-from: color-mix(in srgb, #e11d48 20%, transparent);
@supports (color: color-mix(in lab, red, red)) {
@@ -1782,10 +1720,6 @@
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-via-stops);
}
.to-accent {
--tw-gradient-to: var(--color-accent);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.to-accent\/20 {
--tw-gradient-to: color-mix(in srgb, #8b5cf6 20%, transparent);
@supports (color: color-mix(in lab, red, red)) {
@@ -1915,9 +1849,6 @@
.px-8 {
padding-inline: calc(var(--spacing) * 8);
}
.py-0 {
padding-block: calc(var(--spacing) * 0);
}
.py-0\.5 {
padding-block: calc(var(--spacing) * 0.5);
}
@@ -2122,9 +2053,6 @@
.text-emerald-800 {
color: var(--color-emerald-800);
}
.text-gray-200 {
color: var(--color-gray-200);
}
.text-gray-300 {
color: var(--color-gray-300);
}
@@ -2254,9 +2182,6 @@
.italic {
font-style: italic;
}
.underline {
text-decoration-line: underline;
}
.underline-offset-4 {
text-underline-offset: 4px;
}