Files
calendar/packages/types/App.d.ts
T
Hariom BalharaGitHubsean-brydonPeer Richelsenkodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>zomars
6c86317081 AppStore CLI: Making video app creation a breeze with major cleanup of locations code throughout (#3825)
* Fix breadcrumb colors

* HorizontalTabs

* Team List Item WIP

* Horizontal Tabs

* Cards

* Remove team list item WIP

* Login Page

* Add welcome back i118n

* EventType page work

* Update EventType Icons

* WIP Availability

* Horizontal Tab Work

* Add build command for in root

* Update build DIr/command

* Add Edit Button + change buttons to v2

* Availablitiy page

* Fix IPAD

* Make mobile look a little nicer

* WIP bookingshell

* Remove list items from breaking build

* Add Embed ModalBox for routing forms

* Mian bulk of Booking Page.

* Few updates to components

* Fix chormatic feedback

* Add duplicate form support

* Fix duplication logic

* Change to feathericons everywhere and other fixes

* Dont allow routes for fallback route

* Fix banner

* Fix Empty Screen

* Text area + embded window fixes

* Semi fix avatar

* Fix all TS issues

* Fix tests

* Troubleshoot container + Active on count

* Support routing using query params

* Improve mobile

* NITS

* Fix padding on input

* Support multiselect in router endpoint

* Fix the issue where app goes in embed mode after viewing embed once

* Fix icons

* Add router url tests

* Add Responses download and form toggling tests

* Add required validation test

* Change Icons everywhere

* App typeform app

* Improvements in cli

* Starting to move event types settings to tabs

* Begin migration to single page form

* Single page tabs

* Limits Page

* Advanced tab

* Add RHF to dependancies

* Add typeform how-to-use page

* Add typeform how-to-use page and screenshots

* Most of advanced tab

* Solved RHF mismtach

* Build fixes

* RHF conditionals fixes

* Improved legibility

* Fix TS error

* Add missing image

* Update CliApp.tsx

* Major refactor/organisation into optional V2 UI

* Portal EditLocationModal

* Fix dialoug form

* Update imports

* Auto Animate + custom inputs WIP

* Custom Inputs

* WIP Apps

* Fixing stories imports

* Stripe app

* Remove duplicate dialog

* Remove duplicate dialog

* Major locations cleanup, 10s of bug fixes and app-store improvements

* Fix missing pieces

* More fixes

* Fix embed URL

* Fix app toggles + number of active apps

* Fix container padding on disabledBorder prop

* Removes strict

* more fixes

* EventType Team page WIP

* Fix embed

* NIT

* Add Darkmode gray color

* V2 Shell WIP

* Fix headings on shell V2

* Fix mobile layout with V2 shell

* V2 create event type button

* Checked Team Select

* Hidden to happen on save - not on toggle

* Team Attendee Select animation

* Fix scheduling type and remove multi select label

* Fix overflow on teams url

* Revert console

* Revert api

* Fix Embed TS errors

* Fix TS errors

* Fix Eslint errors

* Fix TS errors for UI

* Fix ESLINT error

* Fix TS errors

* Add missing import

* Fix CLI

* Add a default placeholder

* Remove hardcoded daily:integrations

* Fix message for payment page

* Revert api and console to main

* Update README

* Fix TS errors

* Fix Lint warnings

* Fix Tests

* Fix conflict issues

* Fix conflict issues

Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: zomars <zomars@me.com>
2022-08-25 18:48:50 -06:00

122 lines
3.7 KiB
TypeScript

import type { Prisma } from "@prisma/client";
import { Optional } from "./utils";
type CommonProperties = {
default?: false;
type: string;
label: string;
messageForOrganizer?: string;
iconUrl?: string;
variable?: "locationLink";
defaultValueVariable?: "link";
attendeeInputType?: null;
attendeeInputPlaceholder?: null;
};
type StaticLinkBasedEventLocation = {
linkType: "static";
urlRegExp: string;
organizerInputPlaceholder?: string;
organizerInputType?: "text" | "phone";
} & CommonProperties;
type DynamicLinkBasedEventLocation = {
linkType: "dynamic";
urlRegExp?: null;
organizerInputType?: null;
organizerInputPlaceholder?: null;
} & CommonProperties;
export type EventLocationTypeFromAppMeta = StaticLinkBasedEventLocation | DynamicLinkBasedEventLocation;
type EventLocationAppData = {
location: EventLocationTypeFromAppMeta;
};
/**
* This is the definition for an app store's app metadata.
* This is used to display App info, categorize or hide certain apps in the app store.
*/
export interface App {
/**
* @deprecated
* Wheter if the app is installed or not. Usually we check for api keys in env
* variables to determine if this is true or not.
* */
installed?: boolean;
/** The app type */
type:
| `${string}_calendar`
| `${string}_messaging`
| `${string}_payment`
| `${string}_video`
| `${string}_web3`
| `${string}_other`
| `${string}_other_calendar`;
/** The display name for the app, TODO settle between this or name */
title?: string;
/** The display name for the app */
name: string;
/** A brief description, usually found in the app's package.json */
description: string;
/**
* @deprecated logo is used instead
* The icon to display in /apps/installed
*/
imageSrc?: string;
/** TODO determine if we should use this instead of category */
variant: "calendar" | "payment" | "conferencing" | "video" | "other" | "other_calendar";
/** The slug for the app store public page inside `/apps/[slug] */
slug: string;
/** The category to which this app belongs, currently we have `calendar`, `payment` or `video` */
/*
* @deprecated Use categories
*/
category: string;
/** The category to which this app belongs, currently we have `calendar`, `payment` or `video` */
categories?: string[];
/** An absolute url to the app logo */
logo: string;
/** Company or individual publishing this app */
publisher: string;
/** App's website */
url: string;
/** Optional documentation website URL */
docsUrl?: string;
/** Wether if the app is verified by Cal.com or not */
verified: boolean;
/** Wether the app should appear in the trending section of the app store */
trending: boolean;
/** Rating from 0 to 5, harcoded for now. Should be fetched later on. */
rating: number;
/** Number of reviews, harcoded for now. Should be fetched later on. */
reviews: number;
/**
* Wheter if the app is installed globally or needs user intervention.
* Used to show Connect/Disconnect buttons in App Store
* */
isGlobal?: boolean;
/** A contact email, mainly to ask for support */
email: string;
/** Needed API Keys (usually for global apps) */
key?: Prisma.JsonValue;
/** Needed API Keys (usually for global apps) */
key?: Prisma.JsonValue;
/** If not free, what kind of fees does the app have */
feeType?: "monthly" | "usage-based" | "one-time" | "free";
/** 0 = free. if type="usage-based" it's the price per booking */
price?: number;
/** only required for "usage-based" billing. % of commission for paid bookings */
commission?: number;
licenseRequired?: boolean;
isProOnly?: boolean;
appData?: EventLocationAppData;
}
export type AppMeta = Optional<App, "rating" | "trending" | "reviews" | "verified">;