app store fixes (#2266)
* temporally hiding reviews and stars for apps, removed nuke my cal * fixed categories headline and back button * truncate description * updated huddle app * Delete truncate.ts Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
parent
785b156f95
commit
552751ffcf
12 changed files with 48 additions and 176 deletions
|
@ -55,21 +55,6 @@ export default function App({
|
||||||
}) {
|
}) {
|
||||||
const { t } = useLocale();
|
const { t } = useLocale();
|
||||||
|
|
||||||
/*const tabs = [
|
|
||||||
{
|
|
||||||
name: t("description"),
|
|
||||||
href: "?description",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: t("features"),
|
|
||||||
href: "?features",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: t("permissions"),
|
|
||||||
href: "?permissions",
|
|
||||||
},
|
|
||||||
];*/
|
|
||||||
|
|
||||||
const priceInDollar = Intl.NumberFormat("en-US", {
|
const priceInDollar = Intl.NumberFormat("en-US", {
|
||||||
style: "currency",
|
style: "currency",
|
||||||
currency: "USD",
|
currency: "USD",
|
||||||
|
@ -88,7 +73,7 @@ export default function App({
|
||||||
</Link>
|
</Link>
|
||||||
<div className="flex items-center justify-between py-8">
|
<div className="flex items-center justify-between py-8">
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<img className="h-16 w-16" src={logo} alt="" />
|
<img className="h-16 w-16" src={logo} alt={name} />
|
||||||
<header className="px-4 py-2">
|
<header className="px-4 py-2">
|
||||||
<h1 className="font-cal text-xl text-gray-900">{name}</h1>
|
<h1 className="font-cal text-xl text-gray-900">{name}</h1>
|
||||||
<h2 className="text-sm text-gray-500">
|
<h2 className="text-sm text-gray-500">
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
|
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||||
import type { App } from "@calcom/types/App";
|
import type { App } from "@calcom/types/App";
|
||||||
|
|
||||||
import { useLocale } from "@lib/hooks/useLocale";
|
|
||||||
|
|
||||||
import AppCard from "./AppCard";
|
import AppCard from "./AppCard";
|
||||||
|
|
||||||
export default function AllApps({ apps }: { apps: App[] }) {
|
export default function AllApps({ apps }: { apps: App[] }) {
|
||||||
|
|
|
@ -23,18 +23,17 @@ export default function AppCard(props: AppCardProps) {
|
||||||
color="secondary"
|
color="secondary"
|
||||||
className="ml-auto flex self-start"
|
className="ml-auto flex self-start"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
// TODO: Actually add the integration
|
|
||||||
console.log("The magic is supposed to happen here");
|
console.log("The magic is supposed to happen here");
|
||||||
}}>
|
}}>
|
||||||
Add
|
Add
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
<h3 className="font-medium">{props.name}</h3>
|
<h3 className="font-medium">{props.name}</h3>
|
||||||
<div className="flex text-sm text-gray-800">
|
{/* TODO: add reviews <div className="flex text-sm text-gray-800">
|
||||||
<span>{props.rating} stars</span> <StarIcon className="ml-1 mt-0.5 h-4 w-4 text-yellow-600" />
|
<span>{props.rating} stars</span> <StarIcon className="ml-1 mt-0.5 h-4 w-4 text-yellow-600" />
|
||||||
<span className="pl-1 text-gray-500">{props.reviews} reviews</span>
|
<span className="pl-1 text-gray-500">{props.reviews} reviews</span>
|
||||||
</div>
|
</div> */}
|
||||||
<p className="mt-2 text-sm text-gray-500">{props.description}</p>
|
<p className="mt-2 truncate text-sm text-gray-500">{props.description}</p>
|
||||||
</a>
|
</a>
|
||||||
</Link>
|
</Link>
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { CreditCardIcon } from "@heroicons/react/outline";
|
import { CreditCardIcon } from "@heroicons/react/outline";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
import { useLocale } from "@lib/hooks/useLocale";
|
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||||
|
|
||||||
export default function AppStoreCategories(props: any) {
|
export default function AppStoreCategories(props: any) {
|
||||||
const { t } = useLocale();
|
const { t } = useLocale();
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { DefaultSeo } from "next-seo";
|
import { DefaultSeo } from "next-seo";
|
||||||
|
import Head from "next/head";
|
||||||
// import { ReactQueryDevtools } from "react-query/devtools";
|
// import { ReactQueryDevtools } from "react-query/devtools";
|
||||||
import superjson from "superjson";
|
import superjson from "superjson";
|
||||||
|
|
||||||
|
@ -25,6 +26,9 @@ function MyApp(props: AppProps) {
|
||||||
<AppProviders {...props}>
|
<AppProviders {...props}>
|
||||||
<DefaultSeo {...seoConfig.defaultNextSeo} />
|
<DefaultSeo {...seoConfig.defaultNextSeo} />
|
||||||
<I18nLanguageHandler />
|
<I18nLanguageHandler />
|
||||||
|
<Head>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
||||||
|
</Head>
|
||||||
<Component {...pageProps} err={err} />
|
<Component {...pageProps} err={err} />
|
||||||
</AppProviders>
|
</AppProviders>
|
||||||
</ContractsProvider>
|
</ContractsProvider>
|
||||||
|
|
|
@ -22,7 +22,6 @@ class MyDocument extends Document<Props> {
|
||||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#000000" />
|
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#000000" />
|
||||||
<meta name="msapplication-TileColor" content="#ff0000" />
|
<meta name="msapplication-TileColor" content="#ff0000" />
|
||||||
<meta name="theme-color" content="#ffffff" />
|
<meta name="theme-color" content="#ffffff" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
|
||||||
</Head>
|
</Head>
|
||||||
<body className="bg-gray-100 dark:bg-neutral-900">
|
<body className="bg-gray-100 dark:bg-neutral-900">
|
||||||
<Main />
|
<Main />
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { ChevronLeftIcon } from "@heroicons/react/solid";
|
import { ChevronLeftIcon } from "@heroicons/react/solid";
|
||||||
import { InferGetStaticPropsType } from "next";
|
import { InferGetStaticPropsType } from "next";
|
||||||
|
import Link from "next/link";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
|
|
||||||
import { getAppRegistry } from "@calcom/app-store/_appRegistry";
|
import { getAppRegistry } from "@calcom/app-store/_appRegistry";
|
||||||
|
@ -14,14 +15,16 @@ export default function Apps({ appStore }: InferGetStaticPropsType<typeof getSta
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Shell
|
<>
|
||||||
heading={router.query.category + " - " + t("app_store")}
|
<Shell large>
|
||||||
subtitle={t("app_store_description")}
|
<div className="-mx-8">
|
||||||
large>
|
<div className="mb-10 bg-gray-50 px-10 pb-2">
|
||||||
<div className="mb-8">
|
<Link href="/apps">
|
||||||
<Button color="secondary" href="/apps">
|
<a className="mt-2 inline-flex px-1 py-2 text-sm text-gray-500 hover:bg-gray-100 hover:text-gray-800">
|
||||||
<ChevronLeftIcon className="h-5 w-5" />
|
<ChevronLeftIcon className="h-5 w-5" /> {t("browse_apps")}
|
||||||
</Button>
|
</a>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="mb-16">
|
<div className="mb-16">
|
||||||
<h2 className="mb-2 text-lg font-semibold text-gray-900">All {router.query.category} apps</h2>
|
<h2 className="mb-2 text-lg font-semibold text-gray-900">All {router.query.category} apps</h2>
|
||||||
|
@ -43,6 +46,7 @@ export default function Apps({ appStore }: InferGetStaticPropsType<typeof getSta
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Shell>
|
</Shell>
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,118 +0,0 @@
|
||||||
import showToast from "@calcom/lib/notification";
|
|
||||||
|
|
||||||
import App from "@components/App";
|
|
||||||
|
|
||||||
export default function NukeMyCal() {
|
|
||||||
return (
|
|
||||||
<App
|
|
||||||
name="Wipe my Cal"
|
|
||||||
type="wipemycal_other"
|
|
||||||
logo="/apps/nuke-my-cal.svg"
|
|
||||||
categories={["fun", "productivity"]}
|
|
||||||
author="/peer"
|
|
||||||
feeType="free" // "usage-based", "monthly", "one-time" or "free"
|
|
||||||
price={0} // 0 = free. if type="usage-based" it's the price per booking
|
|
||||||
commission={0} // only required for "usage-based" billing. % of commission for paid bookings
|
|
||||||
website="https://cal.com"
|
|
||||||
email="help@cal.com"
|
|
||||||
tos="https://cal.com/terms"
|
|
||||||
privacy="https://cal.com/privacy"
|
|
||||||
body={
|
|
||||||
<>
|
|
||||||
<style jsx>
|
|
||||||
{`
|
|
||||||
.pushable {
|
|
||||||
position: relative;
|
|
||||||
border: none;
|
|
||||||
background: transparent;
|
|
||||||
padding: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
outline-offset: 4px;
|
|
||||||
transition: filter 250ms;
|
|
||||||
}
|
|
||||||
.shadow {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
border-radius: 12px;
|
|
||||||
background: hsl(0deg 0% 0% / 0.25);
|
|
||||||
will-change: transform;
|
|
||||||
transform: translateY(2px);
|
|
||||||
transition: transform 600ms cubic-bezier(0.3, 0.7, 0.4, 1);
|
|
||||||
}
|
|
||||||
.edge {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
border-radius: 12px;
|
|
||||||
background: linear-gradient(
|
|
||||||
to left,
|
|
||||||
hsl(340deg 100% 16%) 0%,
|
|
||||||
hsl(340deg 100% 32%) 8%,
|
|
||||||
hsl(340deg 100% 32%) 92%,
|
|
||||||
hsl(340deg 100% 16%) 100%
|
|
||||||
);
|
|
||||||
}
|
|
||||||
.front {
|
|
||||||
display: block;
|
|
||||||
position: relative;
|
|
||||||
padding: 12px 42px;
|
|
||||||
border-radius: 12px;
|
|
||||||
font-size: 1.25rem;
|
|
||||||
color: white;
|
|
||||||
background: hsl(345deg 100% 47%);
|
|
||||||
will-change: transform;
|
|
||||||
transform: translateY(-4px);
|
|
||||||
transition: transform 600ms cubic-bezier(0.3, 0.7, 0.4, 1);
|
|
||||||
}
|
|
||||||
.pushable:hover {
|
|
||||||
filter: brightness(110%);
|
|
||||||
}
|
|
||||||
.pushable:hover .front {
|
|
||||||
transform: translateY(-6px);
|
|
||||||
transition: transform 250ms cubic-bezier(0.3, 0.7, 0.4, 1.5);
|
|
||||||
}
|
|
||||||
.pushable:active .front {
|
|
||||||
transform: translateY(-2px);
|
|
||||||
transition: transform 34ms;
|
|
||||||
}
|
|
||||||
.pushable:hover .shadow {
|
|
||||||
transform: translateY(4px);
|
|
||||||
transition: transform 250ms cubic-bezier(0.3, 0.7, 0.4, 1.5);
|
|
||||||
}
|
|
||||||
.pushable:active .shadow {
|
|
||||||
transform: translateY(1px);
|
|
||||||
transition: transform 34ms;
|
|
||||||
}
|
|
||||||
.pushable:focus:not(:focus-visible) {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
`}
|
|
||||||
</style>
|
|
||||||
<div>
|
|
||||||
Have an emergency? Need to reschedule all of your upcoming calendar events? Just click{" "}
|
|
||||||
<strong>Nuke my Cal</strong> and auto-reschedule the entire day. Give it a try!
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
Demo: <br />
|
|
||||||
<br />
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
onClick={() => (
|
|
||||||
new Audio("/apps/nuke-my-cal.wav").play(),
|
|
||||||
showToast("All of your calendar events for today have been rescheduled", "success")
|
|
||||||
)}
|
|
||||||
className="pushable">
|
|
||||||
<span className="shadow"></span>
|
|
||||||
<span className="edge"></span>
|
|
||||||
<span className="front">Nuke my Cal</span>
|
|
||||||
</button>
|
|
||||||
</>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
|
@ -4,7 +4,7 @@
|
||||||
"name": "@calcom/applecalendar",
|
"name": "@calcom/applecalendar",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"main": "./index.ts",
|
"main": "./index.ts",
|
||||||
"description": "For personal and business calendars",
|
"description": "Apple Calendar is a personal calendar app made by Apple Inc. that runs on both the macOS desktop operating system and the iOS mobile operating system.",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@calcom/prisma": "*",
|
"@calcom/prisma": "*",
|
||||||
"react-hook-form": "^7.20.4"
|
"react-hook-form": "^7.20.4"
|
||||||
|
|
|
@ -11,8 +11,8 @@ export const metadata = {
|
||||||
imageSrc: "/apps/huddle.svg",
|
imageSrc: "/apps/huddle.svg",
|
||||||
variant: "conferencing",
|
variant: "conferencing",
|
||||||
logo: "/apps/huddle.svg",
|
logo: "/apps/huddle.svg",
|
||||||
publisher: "Cal.com",
|
publisher: "huddle01.com",
|
||||||
url: "https://huddle01.com/",
|
url: "https://huddle01.com",
|
||||||
verified: true,
|
verified: true,
|
||||||
rating: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
|
rating: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
|
||||||
reviews: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
|
reviews: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
|
||||||
|
@ -22,7 +22,7 @@ export const metadata = {
|
||||||
title: "Huddle01",
|
title: "Huddle01",
|
||||||
trending: true,
|
trending: true,
|
||||||
isGlobal: true,
|
isGlobal: true,
|
||||||
email: "help@cal.com",
|
email: "support@huddle01.com",
|
||||||
locationType: "integrations:huddle01",
|
locationType: "integrations:huddle01",
|
||||||
key: { apikey: randomString(12) },
|
key: { apikey: randomString(12) },
|
||||||
} as App;
|
} as App;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"name": "@calcom/huddle01video",
|
"name": "@calcom/huddle01video",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"main": "./index.ts",
|
"main": "./index.ts",
|
||||||
"description": "Video conferencing",
|
"description": "One-click Meetings in your Metaversical. Login with Web3, create token-gated spaces, use NFT avatars and decentralized storage.",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@calcom/lib": "*"
|
"@calcom/lib": "*"
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"name": "@calcom/office365video",
|
"name": "@calcom/office365video",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"main": "./index.ts",
|
"main": "./index.ts",
|
||||||
"description": "Use your Office 365 account to book video calls through MS Teams NOTE: MUST HAVE A WORK / SCHOOL ACCOUNT",
|
"description": "Use your Office 365 account to book video calls through MS Teams. NOTE: MUST HAVE A WORK / SCHOOL ACCOUNT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@calcom/prisma": "*",
|
"@calcom/prisma": "*",
|
||||||
"@calcom/lib": "*"
|
"@calcom/lib": "*"
|
||||||
|
|
Loading…
Reference in a new issue