fix(frontend): Svelte 5 reactivity, each block keys, and path resolution
Add proper keys to #each blocks across 15+ components to fix reordering bugs. Replace new Date() with SvelteDate in reactive contexts. Use $derived for computed values (totalPages). Use resolve() from $app/paths for all internal navigation hrefs. Add ARIA labels and keyboard accessibility to NavBar mobile menu. Remove unused handleRetry from UserPaymentModal. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -835,7 +835,7 @@
|
||||
</div>
|
||||
{:else}
|
||||
<div
|
||||
class="no-scrollbar mt-2 flex max-h-40 min-h-[100px] w-full scroll-pb-6 flex-col gap-4 overflow-y-auto border-t pt-4"
|
||||
class="no-scrollbar mt-2 flex max-h-40 min-h-25 w-full scroll-pb-6 flex-col gap-4 overflow-y-auto border-t pt-4"
|
||||
>
|
||||
<div class="grid justify-center gap-2 text-sm text-gray-600">
|
||||
{newDate.toDate(getLocalTimeZone()).toLocaleDateString('en-GB', {
|
||||
@@ -927,9 +927,9 @@
|
||||
onclick={() => {
|
||||
selectedServices = selectedServices.filter((s) => s.id !== service.id);
|
||||
}}
|
||||
class="cursor-pointer rounded-lg border border-input bg-background bg-fuchsia-100 p-4 text-left transition-colors hover:bg-fuchsia-50"
|
||||
class="cursor-pointer rounded-lg border border-input bg-fuchsia-100 p-4 text-left transition-colors hover:bg-fuchsia-50"
|
||||
>
|
||||
<div class="flex h-full min-h-[6rem] flex-col justify-between">
|
||||
<div class="flex h-full min-h-24 flex-col justify-between">
|
||||
<div>
|
||||
<h3 class="font-semibold">{service.name}</h3>
|
||||
<p class="text-sm text-gray-600">{service.description || ''}</p>
|
||||
@@ -966,7 +966,7 @@
|
||||
}}
|
||||
class="cursor-pointer rounded-lg border border-input bg-background p-4 text-left transition-colors hover:bg-fuchsia-50"
|
||||
>
|
||||
<div class="flex h-full min-h-[6rem] flex-col justify-between">
|
||||
<div class="flex h-full min-h-24 flex-col justify-between">
|
||||
<div>
|
||||
<h3 class="font-semibold">{service.name}</h3>
|
||||
<p class="text-sm text-gray-600">{service.description || ''}</p>
|
||||
@@ -1055,9 +1055,9 @@
|
||||
onclick={() => {
|
||||
selectedServices = selectedServices.filter((s) => s.id !== service.id);
|
||||
}}
|
||||
class="cursor-pointer rounded-lg border border-input bg-background bg-fuchsia-100 p-4 text-left transition-colors hover:bg-fuchsia-50"
|
||||
class="cursor-pointer rounded-lg border border-input bg-fuchsia-100 p-4 text-left transition-colors hover:bg-fuchsia-50"
|
||||
>
|
||||
<div class="flex h-full min-h-[6rem] flex-col justify-between">
|
||||
<div class="flex h-full min-h-24 flex-col justify-between">
|
||||
<div>
|
||||
<h3 class="font-semibold">{service.name}</h3>
|
||||
<p class="text-sm text-gray-600">{service.description || ''}</p>
|
||||
@@ -1089,7 +1089,7 @@
|
||||
}}
|
||||
class="cursor-pointer rounded-lg border border-input bg-background p-4 text-left transition-colors hover:bg-fuchsia-50"
|
||||
>
|
||||
<div class="flex h-full min-h-[6rem] flex-col justify-between">
|
||||
<div class="flex h-full min-h-24 flex-col justify-between">
|
||||
<div>
|
||||
<h3 class="font-semibold">{service.name}</h3>
|
||||
<p class="text-sm text-gray-600">{service.description || ''}</p>
|
||||
|
||||
Reference in New Issue
Block a user