* Add payment option to schema * Add payment option to Stripe zod * Set payment option on event type * Create manual payment intent in Stripe * Set payment option from Stripe app * Add payment option to DB * Pass React.ReactNode to checkbox * Create uncaptured payment intent * WIP * Capture card in setup intent * Show charge card option * Charge card from booking page * Bug fixes * Clean up * Clean up app card * Add no-show fee messaging on booking page * Send payment email on payment & add price * Fix messaging * Create no show fee charged email * Send charge fee collected email * Disable submit on card failure * Clean up * Serverside prevent charging card again if already charged * Only confirm booking if paid for * Type fixes * More type fixes * More type fixes * Type fix * Type fixes * UI changes * Payment component rework * Update apps/web/public/static/locales/en/common.json Co-authored-by: Alex van Andel <me@alexvanandel.com> * Update apps/web/public/static/locales/en/common.json Co-authored-by: Alex van Andel <me@alexvanandel.com> * Update apps/web/components/dialog/ChargeCardDialog.tsx Co-authored-by: Alex van Andel <me@alexvanandel.com> * Update packages/trpc/server/routers/viewer/payments.tsx Co-authored-by: Alex van Andel <me@alexvanandel.com> * Revert GTM config * Adjust payment option dropdown * Show alert when seats are set * Small bug fixes * Create collect card method * clean up * Prevent seats & charge no-show fee to be enabled together * Do not charge no-show fee on unconfirmed bookings * Add check to collect card method * Webhook send request emails * Fix some dark mode colours * Change awaiting payment language * Type fixes * Set height of Select and TextField both to 38px to fix alignment * Fix message seats & payment error message * Type fix --------- Co-authored-by: Alex van Andel <me@alexvanandel.com>
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import type React from "react";
|
|
import type { z } from "zod";
|
|
|
|
import type { _EventTypeModel } from "@calcom/prisma/zod";
|
|
import type { RouterOutputs } from "@calcom/trpc/react";
|
|
import type { ButtonProps } from "@calcom/ui";
|
|
|
|
export type IntegrationOAuthCallbackState = {
|
|
returnTo: string;
|
|
installGoogleVideo?: boolean;
|
|
};
|
|
|
|
type AppScript = { attrs?: Record<string, string> } & { src?: string; content?: string };
|
|
|
|
export type Tag = {
|
|
scripts: AppScript[];
|
|
};
|
|
|
|
export interface InstallAppButtonProps {
|
|
render: (
|
|
renderProps: ButtonProps & {
|
|
/** Tells that the default render component should be used */
|
|
useDefaultComponent?: boolean;
|
|
}
|
|
) => JSX.Element;
|
|
onChanged?: () => unknown;
|
|
disableInstall?: boolean;
|
|
}
|
|
export type EventTypeAppCardComponentProps = {
|
|
// Limit what data should be accessible to apps
|
|
eventType: Pick<
|
|
z.infer<typeof _EventTypeModel>,
|
|
"id" | "title" | "description" | "teamId" | "length" | "recurringEvent" | "seatsPerTimeSlot"
|
|
> & {
|
|
URL: string;
|
|
};
|
|
app: RouterOutputs["viewer"]["apps"][number];
|
|
};
|
|
export type EventTypeAppCardComponent = React.FC<EventTypeAppCardComponentProps>;
|