diff --git a/src/lib/components/ui/input-top-customized/input-otp-customized.svelte b/src/lib/components/ui/input-top-customized/input-otp-customized.svelte
index a82f89b..b6c448c 100644
--- a/src/lib/components/ui/input-top-customized/input-otp-customized.svelte
+++ b/src/lib/components/ui/input-top-customized/input-otp-customized.svelte
@@ -7,7 +7,13 @@
let { value = $bindable(), ...restProps }: Props = $props();
-
+
{#snippet children({ cells })}
{#each cells.slice(0, 3) as cell (cell)}
diff --git a/src/lib/components/ui/popover/index.ts b/src/lib/components/ui/popover/index.ts
index 5eba297..5fb2ee9 100644
--- a/src/lib/components/ui/popover/index.ts
+++ b/src/lib/components/ui/popover/index.ts
@@ -1,17 +1,19 @@
-import { Popover as PopoverPrimitive } from "bits-ui";
+import Root from "./popover.svelte";
+import Close from "./popover-close.svelte";
import Content from "./popover-content.svelte";
import Trigger from "./popover-trigger.svelte";
-const Root = PopoverPrimitive.Root;
-const Close = PopoverPrimitive.Close;
+import Portal from "./popover-portal.svelte";
export {
Root,
Content,
Trigger,
Close,
+ Portal,
//
Root as Popover,
Content as PopoverContent,
Trigger as PopoverTrigger,
Close as PopoverClose,
+ Portal as PopoverPortal,
};
diff --git a/src/lib/components/ui/popover/popover-close.svelte b/src/lib/components/ui/popover/popover-close.svelte
new file mode 100644
index 0000000..fd2c882
--- /dev/null
+++ b/src/lib/components/ui/popover/popover-close.svelte
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/lib/components/ui/popover/popover-content.svelte b/src/lib/components/ui/popover/popover-content.svelte
index 815dfd9..3d867e2 100644
--- a/src/lib/components/ui/popover/popover-content.svelte
+++ b/src/lib/components/ui/popover/popover-content.svelte
@@ -1,6 +1,8 @@
-
+
-
+
diff --git a/src/lib/components/ui/popover/popover-portal.svelte b/src/lib/components/ui/popover/popover-portal.svelte
new file mode 100644
index 0000000..8115718
--- /dev/null
+++ b/src/lib/components/ui/popover/popover-portal.svelte
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/lib/components/ui/popover/popover.svelte b/src/lib/components/ui/popover/popover.svelte
new file mode 100644
index 0000000..b485e41
--- /dev/null
+++ b/src/lib/components/ui/popover/popover.svelte
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/lib/server/services/appointment-service.ts b/src/lib/server/services/appointment-service.ts
index 3e08eb0..530aea2 100644
--- a/src/lib/server/services/appointment-service.ts
+++ b/src/lib/server/services/appointment-service.ts
@@ -20,7 +20,7 @@ export interface ClientTunnelData {
appointmentDate: string;
duration: number;
emailHash: string;
- clientEmail: string;
+ clientEmail?: string;
clientLanguage?: string;
clientPublicKey: string;
privateKeyShare: string;
@@ -437,19 +437,21 @@ export class AppointmentService {
});
// Send email notification to client (async, don't wait)
- this.sendAppointmentNotification(
- result.appointment.id,
- clientData.channelId,
- clientData.clientEmail,
- clientData.clientLanguage || "de",
- result.requiresConfirmation,
- ).catch((error) => {
- log.error("Failed to send appointment notification", {
- tunnelId: clientData.tunnelId,
- appointmentId: result.appointment.id,
- error: String(error),
+ if (clientData.clientEmail) {
+ this.sendAppointmentNotification(
+ result.appointment.id,
+ clientData.channelId,
+ clientData.clientEmail,
+ clientData.clientLanguage || "de",
+ result.requiresConfirmation,
+ ).catch((error) => {
+ log.error("Failed to send appointment notification", {
+ tunnelId: clientData.tunnelId,
+ appointmentId: result.appointment.id,
+ error: String(error),
+ });
});
- });
+ }
return response;
}
diff --git a/src/lib/types/public.ts b/src/lib/types/public.ts
index 9528cfc..9773a1a 100644
--- a/src/lib/types/public.ts
+++ b/src/lib/types/public.ts
@@ -40,6 +40,7 @@ export type TPublicAppointment = {
};
data?: {
name: string;
+ shareEmail: boolean;
email: string;
phone?: string;
};
diff --git a/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/add-personal-data-form/add-personal-data-form.svelte b/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/add-personal-data-form/add-personal-data-form.svelte
index 95120e9..7d8ce6d 100644
--- a/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/add-personal-data-form/add-personal-data-form.svelte
+++ b/src/routes/(pages)/(clients)/book-appointment/[[id]]/(components)/add-personal-data-form/add-personal-data-form.svelte
@@ -1,16 +1,17 @@
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 1e94dd7..65f8702 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -1,9 +1,10 @@