Runs format script
parent
bc88fd0a04
commit
7be60b47f1
|
@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
|
|||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
- Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
- The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
- Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
|
|||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
|
|
|
@ -8,22 +8,19 @@ Contributions are what make the open source community such an amazing place to b
|
|||
|
||||
### Legend
|
||||
|
||||
✅ = has knowledge
|
||||
✅ = has knowledge
|
||||
|
||||
🥇 = is their main priority
|
||||
|
||||
⚠️ = is the only one with knowledge
|
||||
⚠️ = is the only one with knowledge
|
||||
|
||||
👀 = has no knowledge but wants to be onboarded
|
||||
👀 = has no knowledge but wants to be onboarded
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://dynamic-svgs.vercel.app/image.svg?dark">
|
||||
<img alt="Areas of expertise table" src="https://dynamic-svgs.vercel.app/image.svg">
|
||||
</picture>
|
||||
|
||||
|
||||
|
||||
|
||||
## Developing
|
||||
|
||||
The development branch is `main`. This is the branch that all pull
|
||||
|
|
|
@ -437,7 +437,7 @@ Special thanks to these amazing projects which help power Cal.com:
|
|||
- [Day.js](https://day.js.org/)
|
||||
- [Tailwind CSS](https://tailwindcss.com/)
|
||||
- [Prisma](https://prisma.io/)
|
||||
|
||||
<a href="https://jitsu.com/?utm_source=cal.com-gihub"><img height="40px" src="https://jitsu.com/img/powered-by-jitsu.png?gh=true" alt="Jitsu.com"></a>
|
||||
|
||||
<a href="https://jitsu.com/?utm_source=cal.com-gihub"><img height="40px" src="https://jitsu.com/img/powered-by-jitsu.png?gh=true" alt="Jitsu.com"></a>
|
||||
|
||||
Cal.com is an [open startup](https://cal.com/open) and [Jitsu](https://github.com/jitsucom/jitsu) (an open-source Segment alternative) helps us to track most of the usage metrics.
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
- Create a folder in packages/app-store/{APP_NAME} = {APP}
|
||||
- Fill it with a sample app
|
||||
- Modify {APP}/_metadata.ts with the data provided
|
||||
- Modify {APP}/\_metadata.ts with the data provided
|
||||
|
||||
## Approach
|
||||
|
||||
- appType is derived from App Name(a slugify operation that makes a string that can be used as a director name, a variable name for imports and a URL path).
|
||||
- appType is then used to create the app directory. It becomes `config.type` of config.json. config.type is the value used to create an entry in App table and retrieve any apps or credentials. It also becomes App.dirName
|
||||
- dirnames that don't start with _ are considered apps in packages/app-store and based on those apps .generated.ts* files are created. This allows pre-cli apps to keep on working.
|
||||
- app directory is populated with app-store/_baseApp with newly updated config.json and package.json
|
||||
- dirnames that don't start with \_ are considered apps in packages/app-store and based on those apps .generated.ts\* files are created. This allows pre-cli apps to keep on working.
|
||||
- app directory is populated with app-store/\_baseApp with newly updated config.json and package.json
|
||||
- `packages/prisma/seed-app-store.config.json` is updated with new app.
|
||||
|
||||
NOTE: After app-store-cli is live, Credential.appId and Credential.type would be same for new apps. For old apps they would remain different. Credential.type would be used to identify credentials in integrations call and Credential.appId/App.slug would be used to identify apps.
|
||||
|
@ -20,20 +20,20 @@ If we rename all existing apps to their slug names, we can remove type and then
|
|||
- Beta Release
|
||||
- Show a warning somewhere that app directory must not be renamed manually, edit command must be used.
|
||||
- edit command should ask for slug and verify if it exists
|
||||
|
||||
- Improvements
|
||||
- Prefill fields in edit command
|
||||
- Merge app-store:watch and app-store commands, introduce app-store --watch
|
||||
- Allow inputs in non interactive way as well - That would allow easily copy pasting commands.
|
||||
- App already exists check. Ask user to run edit/regenerate command
|
||||
- An app created through CLI should be able to completely skip API validation for testing purposes. Credentials should be created with no API specified specific to the app. It would allow us to test any app end to end not worrying about the corresponding API endpoint.
|
||||
- Require assets path relative to app dir.
|
||||
- Require assets path relative to app dir.
|
||||
|
||||
## Roadmap
|
||||
|
||||
- Avoid delete and edit on apps created outside of cli
|
||||
- Someone can add wrong directory name(which doesn't satisfy slug requirements) manually. How to handle it.
|
||||
- Allow editing and updating app from the cal app itself - including assets uploading when developing locally.
|
||||
- Improvements in shared code across app
|
||||
- Use baseApp/api/add.ts for all apps with configuration of credentials creation and redirection URL.
|
||||
- Delete creation side effects if App creation fails - Might make debugging difficult
|
||||
- This is so that web app doesn't break because of additional app folders or faulty db-seed
|
||||
- This is so that web app doesn't break because of additional app folders or faulty db-seed
|
||||
|
|
|
@ -113,13 +113,13 @@ export function getLocationTypes(): string[] {
|
|||
|
||||
export function getLocationLabels(t: TFunction) {
|
||||
const defaultLocationLabels = defaultLocations.reduce((locations, location) => {
|
||||
if(location.label === "attendee_phone_number") {
|
||||
locations[location.value] = t("your_number")
|
||||
return locations
|
||||
if (location.label === "attendee_phone_number") {
|
||||
locations[location.value] = t("your_number");
|
||||
return locations;
|
||||
}
|
||||
if(location.label === "host_phone_number") {
|
||||
locations[location.value] = `${t("phone_call")} (${t("number_provided")})`
|
||||
return locations
|
||||
if (location.label === "host_phone_number") {
|
||||
locations[location.value] = `${t("phone_call")} (${t("number_provided")})`;
|
||||
return locations;
|
||||
}
|
||||
locations[location.value] = t(location.label);
|
||||
return locations;
|
||||
|
|
|
@ -13,49 +13,49 @@ If you run it on localhost, check out the [additional information](https://githu
|
|||
2. If not redirected to developer account, go to: [Zapier Developer Account](https://developer.zapier.com)
|
||||
3. Click **Start a Zapier Integration**
|
||||
4. Create Integration
|
||||
- Name: Cal.com
|
||||
- Description: Cal.com is a scheduling infrastructure for absolutely everyone.
|
||||
- Intended Audience: Private
|
||||
- Role: choose whatever is appropriate
|
||||
- Category: Calendar
|
||||
- Name: Cal.com
|
||||
- Description: Cal.com is a scheduling infrastructure for absolutely everyone.
|
||||
- Intended Audience: Private
|
||||
- Role: choose whatever is appropriate
|
||||
- Category: Calendar
|
||||
|
||||
## Authentication
|
||||
|
||||
1. Go to Authentication, choose Api key and click save
|
||||
2. Click Add Fields
|
||||
- Key: apiKey
|
||||
- Check the box ‘is this field required?’
|
||||
- Key: apiKey
|
||||
- Check the box ‘is this field required?’
|
||||
3. Configure a Test
|
||||
- Test: GET ```<baseUrl>```/api/integrations/zapier/listBookings
|
||||
- URL Params
|
||||
- apiKey: {{bundle.authData.apiKey}}
|
||||
- Test: GET `<baseUrl>`/api/integrations/zapier/listBookings
|
||||
- URL Params
|
||||
- apiKey: {{bundle.authData.apiKey}}
|
||||
4. Test your authentication —> First you have to install Zapier in the Cal.com App Store and generate an API key, use this API key to test your authentication (only zapier Api key works)
|
||||
|
||||
|
||||
## Triggers
|
||||
|
||||
Booking created, Booking rescheduled, Booking cancelled
|
||||
|
||||
|
||||
### Booking created
|
||||
|
||||
1. Settings
|
||||
- Key: booking_created
|
||||
- Name: Booking created
|
||||
- Noun: Booking
|
||||
- Description: Triggers when a new booking is created
|
||||
- Key: booking_created
|
||||
- Name: Booking created
|
||||
- Noun: Booking
|
||||
- Description: Triggers when a new booking is created
|
||||
2. API Configuration (apiKey is set automatically, leave it like it is):
|
||||
- Trigger Type: REST Hook
|
||||
- Subscribe: POST ```<baseUrl>```/api/integrations/zapier/addSubscription
|
||||
- Request Body
|
||||
- subscriberUrl: {{bundle.targetUrl}}
|
||||
- triggerEvent: BOOKING_CREATED
|
||||
- Unsubscribe: DELETE ```<baseUrl>```/api/integrations/zapier/deleteSubscription
|
||||
- URL Params (in addition to apiKey)
|
||||
- id: {{bundle.subscribeData.id}}
|
||||
- PerformList: GET ```<baseUrl>```/api/integrations/zapier/listBookings
|
||||
- Trigger Type: REST Hook
|
||||
- Subscribe: POST `<baseUrl>`/api/integrations/zapier/addSubscription
|
||||
- Request Body
|
||||
- subscriberUrl: {{bundle.targetUrl}}
|
||||
- triggerEvent: BOOKING_CREATED
|
||||
- Unsubscribe: DELETE `<baseUrl>`/api/integrations/zapier/deleteSubscription
|
||||
- URL Params (in addition to apiKey)
|
||||
- id: {{bundle.subscribeData.id}}
|
||||
- PerformList: GET `<baseUrl>`/api/integrations/zapier/listBookings
|
||||
3. Test your API request
|
||||
|
||||
Create the other two triggers (booking rescheduled, booking cancelled) exactly like this one, just use the appropriate naming (e.g. booking_rescheduled instead of booking_created)
|
||||
|
||||
|
||||
### Set ZAPIER_INVITE_LINK
|
||||
|
||||
The invite link can be found under under Manage → Sharing.
|
||||
|
@ -68,4 +68,4 @@ Possible solution: using [https://ngrok.com/](https://ngrok.com/)
|
|||
|
||||
1. Create Account
|
||||
2. [Download](https://ngrok.com/download) gnork and start a tunnel to your running localhost
|
||||
- Use forwarding url as your baseUrl for the URL endpoints
|
||||
- Use forwarding url as your baseUrl for the URL endpoints
|
||||
|
|
|
@ -10,6 +10,7 @@ import { Button, Loader, Tooltip } from "@calcom/ui";
|
|||
|
||||
/** TODO: Maybe extract this into a package to prevent circular dependencies */
|
||||
import { trpc } from "@calcom/web/lib/trpc";
|
||||
|
||||
export interface IZapierSetupProps {
|
||||
inviteLink: string;
|
||||
}
|
||||
|
@ -46,7 +47,7 @@ export default function ZapierSetup(props: IZapierSetupProps) {
|
|||
|
||||
if (integrations.isLoading) {
|
||||
return (
|
||||
<div className="absolute z-50 flex items-center w-full h-screen bg-gray-200">
|
||||
<div className="absolute z-50 flex h-screen w-full items-center bg-gray-200">
|
||||
<Loader />
|
||||
</div>
|
||||
);
|
||||
|
@ -55,7 +56,7 @@ export default function ZapierSetup(props: IZapierSetupProps) {
|
|||
return (
|
||||
<div className="flex h-screen bg-gray-200">
|
||||
{showContent ? (
|
||||
<div className="p-10 m-auto bg-white rounded">
|
||||
<div className="m-auto rounded bg-white p-10">
|
||||
<div className="flex flex-row">
|
||||
<div className="mr-5">
|
||||
<img className="h-11" src="/api/app-store/zapier/icon.svg" alt="Zapier Logo" />
|
||||
|
@ -72,8 +73,8 @@ export default function ZapierSetup(props: IZapierSetupProps) {
|
|||
) : (
|
||||
<>
|
||||
<div className="mt-1 text-xl">{t("your_unique_api_key")}</div>
|
||||
<div className="flex my-2 mt-3">
|
||||
<div className="w-full p-3 pr-5 mr-1 bg-gray-100 rounded">{newApiKey}</div>
|
||||
<div className="my-2 mt-3 flex">
|
||||
<div className="mr-1 w-full rounded bg-gray-100 p-3 pr-5">{newApiKey}</div>
|
||||
<Tooltip content="copy to clipboard">
|
||||
<Button
|
||||
onClick={() => {
|
||||
|
@ -82,7 +83,7 @@ export default function ZapierSetup(props: IZapierSetupProps) {
|
|||
}}
|
||||
type="button"
|
||||
className="px-4 text-base ">
|
||||
<ClipboardCopyIcon className="w-5 h-5 mr-2 text-neutral-100" />
|
||||
<ClipboardCopyIcon className="mr-2 h-5 w-5 text-neutral-100" />
|
||||
{t("copy")}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
|
|
|
@ -7,7 +7,7 @@ export const Info = (props: {
|
|||
withSpacer?: boolean;
|
||||
lineThrough?: boolean;
|
||||
}) => {
|
||||
if (!props.description || props.description=="") return null;
|
||||
if (!props.description || props.description === "") return null;
|
||||
return (
|
||||
<>
|
||||
{props.withSpacer && <Spacer />}
|
||||
|
|
|
@ -90,7 +90,6 @@ export function LocationInfo(props: { calEvent: CalendarEvent; t: TFunction }) {
|
|||
style={{ color: "#3E3E3E" }}
|
||||
rel="noreferrer">
|
||||
Google <LinkIcon />
|
||||
|
||||
</a>
|
||||
}
|
||||
/>
|
||||
|
|
|
@ -5,12 +5,16 @@ export function ManageLink(props: { calEvent: CalendarEvent; attendee: Person })
|
|||
// Only the original attendee can make changes to the event
|
||||
// Guests cannot
|
||||
const t = props.attendee.language.translate;
|
||||
if(props.attendee.email === props.calEvent.attendees[0].email || props.calEvent.organizer.email === props.attendee.email ){
|
||||
if (
|
||||
props.attendee.email === props.calEvent.attendees[0].email ||
|
||||
props.calEvent.organizer.email === props.attendee.email
|
||||
) {
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
fontFamily: "Roboto, Helvetica, sans-serif",
|
||||
fontSize: "16px", fontWeight: 500,
|
||||
fontSize: "16px",
|
||||
fontWeight: 500,
|
||||
lineHeight: "0px",
|
||||
textAlign: "left",
|
||||
color: "#3e3e3e",
|
||||
|
@ -26,7 +30,7 @@ export function ManageLink(props: { calEvent: CalendarEvent; attendee: Person })
|
|||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
// Dont have the rights to the manage link
|
||||
return null
|
||||
|
||||
// Dont have the rights to the manage link
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { TFunction } from "next-i18next";
|
||||
|
||||
import { renderEmail } from "../";
|
||||
|
||||
import BaseEmail from "./_base-email";
|
||||
|
||||
export type PasswordReset = {
|
||||
|
|
|
@ -5,4 +5,4 @@ This folder contains all the various flavours of embeds.
|
|||
`core` contains the core library written in vanilla JS that manages the embed.
|
||||
`snippet` contains the Vanilla JS Code Snippet that can be installed on any website and would automatically fetch the `core` library.
|
||||
|
||||
Please see the respective folder READMEs for details on them.
|
||||
Please see the respective folder READMEs for details on them.
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
This is the vanilla JS core script that embeds Cal Link.
|
||||
|
||||
## How to use embed on any webpage no matter what framework
|
||||
|
||||
See <https://developer.cal.com/embed/install-with-javascript>
|
||||
|
||||
You can also see various example usages [here](https://github.com/calcom/cal.com/blob/main/packages/embeds/embed-core/index.html)
|
||||
|
@ -41,6 +42,7 @@ Make `dist/embed.umd.js` servable on URL <http://cal.com/embed.js>
|
|||
- Need to create a booking Shell so that common changes for embed can be applied there.
|
||||
|
||||
- Accessibility and UI/UX Issues
|
||||
|
||||
- let user choose the loader for ModalBox
|
||||
- If website owner links the booking page directly for an event, should the user be able to go to events-listing page using back button ?
|
||||
- Let user specify both dark and light theme colors. Right now the colors specified are for light theme.
|
||||
|
@ -48,34 +50,42 @@ Make `dist/embed.umd.js` servable on URL <http://cal.com/embed.js>
|
|||
- Maybe don't set border radius in inline mode or give option to configure border radius.
|
||||
|
||||
- Branding
|
||||
|
||||
- Powered by Cal.com and 'Try it for free'. Should they be shown only for FREE account.
|
||||
- Branding at the bottom has been removed for UI improvements, need to see where to add it.
|
||||
|
||||
- API
|
||||
|
||||
- Allow loader color customization using UI command itself too. Right now it's possible using CSS only.
|
||||
|
||||
- Automation Tests
|
||||
|
||||
- Run automation tests in CI
|
||||
- Automation Tests are using snapshots of Booking Page which has current month which requires us to regenerate snapshots every month.
|
||||
|
||||
- Bundling Related
|
||||
|
||||
- Comments in CSS aren't stripped off
|
||||
|
||||
- Debuggability
|
||||
|
||||
- Send log messages from iframe to parent so that all logs can exist in a single queue forming a timeline.
|
||||
- user should be able to use "on" instruction to understand what's going on in the system
|
||||
- Error Tracking for embed.js
|
||||
- Know where exactly it’s failing if it does.
|
||||
|
||||
- Color Scheme
|
||||
|
||||
- Need to reduce the number of colors on booking page, so that UI configuration is simpler
|
||||
|
||||
- Dev Experience/Ease of Installation
|
||||
|
||||
- Do we need a one liner(like `window.dataLayer.push`) to inform SDK of something even if snippet is not yet on the page but would be there e.g. through GTM it would come late on the page ?
|
||||
|
||||
- Option to disable redirect banner and let parent handle redirect.
|
||||
|
||||
- Release Issues
|
||||
|
||||
- Compatibility Issue - When embed-iframe.js is updated in such a way that it is not compatible with embed.js, doing a release might break the embed for some time. e.g. iframeReady event let's say get's changed to something else
|
||||
- Best Case scenario - App and Website goes live at the same time. A website using embed loads the same updated and thus compatible versions of embed.js and embed-iframe.js
|
||||
- Worst case scenario - App goes live first, website PR isn't merged yet and thus a website using the embed would load updated version of embed-iframe but outdated version of embed.js possibly breaking the embed.
|
||||
|
@ -83,6 +93,7 @@ Make `dist/embed.umd.js` servable on URL <http://cal.com/embed.js>
|
|||
- Quick Solution: Serve embed.js also from app, so that they go live together and there is only a slight chance of compatibility issues on going live. Note, that they can still occur as 2 different requests are sent at different times to fetch the libraries and deployments can go live in between,
|
||||
|
||||
- UI Config Features
|
||||
|
||||
- How would the user add on hover styles just using style attribute ?
|
||||
|
||||
- If just iframe refreshes due to some reason, embed script can't replay the applied instructions.
|
||||
|
@ -99,6 +110,7 @@ Make `dist/embed.umd.js` servable on URL <http://cal.com/embed.js>
|
|||
- Feature Documentation
|
||||
- Inline mode doesn't cause any scroll in iframe by default. It more looks like it is part of the website.
|
||||
- docs.cal.com
|
||||
|
||||
- A complete document on how to use embed
|
||||
|
||||
- app.cal.com
|
||||
|
|
|
@ -11,4 +11,4 @@ TODO
|
|||
- It would probably be better if Playwright tests exist at one place for all embeds.
|
||||
- Distribution
|
||||
- It would be better DX to serve the unbuilt version with JSX, instead of built version with React.createElement calls. But because of WebPack loaders not running on node_modules automatically, it doesn't work automatically.
|
||||
- Right now if a typescript project uses the package, VSCode takes the user to .d.ts files instead of the functions definitions. How to solve it ?
|
||||
- Right now if a typescript project uses the package, VSCode takes the user to .d.ts files instead of the functions definitions. How to solve it ?
|
||||
|
|
|
@ -8,4 +8,3 @@ Vanilla JS embed snippet that is responsible to fetch @calcom/embed-core and thu
|
|||
|
||||
- which can be used as `<script type="module" src=...`
|
||||
- You can also copy the appropriate portion of the code and install it directly as `<script>CODE_SUGGESTED_TO_BE_COPIED</script>`
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ export const bookEventTypeSelect = Prisma.validator<Prisma.EventTypeSelect>()({
|
|||
price: true,
|
||||
currency: true,
|
||||
disableGuests: true,
|
||||
userId:true,
|
||||
userId: true,
|
||||
seatsPerTimeSlot: true,
|
||||
users: {
|
||||
select: {
|
||||
|
@ -46,7 +46,7 @@ export const bookEventTypeSelect = Prisma.validator<Prisma.EventTypeSelect>()({
|
|||
theme: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
});
|
||||
|
||||
export const availiblityPageEventTypeSelect = Prisma.validator<Prisma.EventTypeSelect>()({
|
||||
id: true,
|
||||
|
@ -72,7 +72,7 @@ export const availiblityPageEventTypeSelect = Prisma.validator<Prisma.EventTypeS
|
|||
},
|
||||
},
|
||||
hidden: true,
|
||||
userId:true,
|
||||
userId: true,
|
||||
slug: true,
|
||||
minimumBookingNotice: true,
|
||||
beforeEventBuffer: true,
|
||||
|
@ -83,7 +83,7 @@ export const availiblityPageEventTypeSelect = Prisma.validator<Prisma.EventTypeS
|
|||
seatsPerTimeSlot: true,
|
||||
users: {
|
||||
select: {
|
||||
id:true,
|
||||
id: true,
|
||||
avatar: true,
|
||||
name: true,
|
||||
username: true,
|
||||
|
@ -92,4 +92,4 @@ export const availiblityPageEventTypeSelect = Prisma.validator<Prisma.EventTypeS
|
|||
timeZone: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
});
|
||||
|
|
|
@ -13,7 +13,7 @@ export default function EmptyScreen({
|
|||
}) {
|
||||
return (
|
||||
<>
|
||||
<div className="min-h-80 flex my-6 flex-col items-center justify-center rounded-sm border border-dashed">
|
||||
<div className="min-h-80 my-6 flex flex-col items-center justify-center rounded-sm border border-dashed">
|
||||
<div className="flex h-[72px] w-[72px] items-center justify-center rounded-full bg-gray-600 dark:bg-white">
|
||||
<Icon className="inline-block h-10 w-10 text-white dark:bg-white dark:text-gray-600" />
|
||||
</div>
|
||||
|
|
89
yarn.lock
89
yarn.lock
|
@ -1153,6 +1153,11 @@
|
|||
intl-messageformat "9.13.0"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@fullstory/browser@^1.5.1":
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@fullstory/browser/-/browser-1.6.1.tgz#dd3f2d3ce1dc72aa8e896f30cb5da83c72097816"
|
||||
integrity sha512-WZ8mR5nluF7W8OhSe7J8FAyxDLOwDnI+0Jj8f+qBd5WsExwrtwb2LOO2064Gn+U3m2WI3tEo6WbHeMs6qtv0YA==
|
||||
|
||||
"@glidejs/glide@^3.5.2":
|
||||
version "3.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@glidejs/glide/-/glide-3.5.2.tgz#7012c5920ecf202bbda44d8526fc979984b6dd54"
|
||||
|
@ -16165,66 +16170,131 @@ turbo-darwin-64@1.2.16:
|
|||
resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.2.16.tgz#1586fd6e52ffb5ad5e1e3ec8afe1c873f7fd98d9"
|
||||
integrity sha512-dyitLQJdH3uLVdlH9jAkP4LqEO/K+wOXjUqOzjTciRLjQPzmsNY60/bmFHODADK4eBBl1nxbtn7tmmoT4vS1qA==
|
||||
|
||||
turbo-darwin-64@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-1.2.9.tgz#001159794757f77c4b016fc56d045c5e7bfc9510"
|
||||
integrity sha512-rVwDQpi6p0GwTiqSsvtA1b3RvKl8l2y+ElZ3EKGiIIJYZt1D6wBMJoADaZ9uZ/LWkT+WKfAWNtKdwRmuBAOS6g==
|
||||
|
||||
turbo-darwin-arm64@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.2.16.tgz#3faf9c657fa5feb16465316ac8d47c4a2790c2f1"
|
||||
integrity sha512-Ex6uM4HU7rGXdhvJMpzNpp6qxglJ98nWeIi5qR/lBXHLjK3UCvSW8BEALArUJYJTXS9FZBq1a5LowFqXYsfDcA==
|
||||
|
||||
turbo-darwin-arm64@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-1.2.9.tgz#fb19615984d1780fdcdd9e54a607efb46a700e72"
|
||||
integrity sha512-j7NgQHkQWWODw1I/saiqmjjD54uGAEq0qTTtLI3RoLaA+yI+awXmHwsiHRqsvGSyGJlBoKBcbxXkekLf21q3GA==
|
||||
|
||||
turbo-freebsd-64@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-freebsd-64/-/turbo-freebsd-64-1.2.16.tgz#2674c2078eaa79200a3b91639e530b287a735cb4"
|
||||
integrity sha512-onRGKMvog8B3XDssSBIAg+FrEq9pcBoAybP7bpi/uYIH1L/WQ7YMmLn88X9JX19ehYuVOVZrjap4jWH2GIkU8A==
|
||||
|
||||
turbo-freebsd-64@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-freebsd-64/-/turbo-freebsd-64-1.2.9.tgz#edb2ee840ba80c257068e339d10ac460c1f9fb10"
|
||||
integrity sha512-+tLb3iCOrIeGrcOJZYey5mD9qgNgKYuwRRg6FeX/6TDITvZXcCS50A2uRbaD/PQzQKs1lHcshiCe/DRtbvJ63g==
|
||||
|
||||
turbo-freebsd-arm64@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-freebsd-arm64/-/turbo-freebsd-arm64-1.2.16.tgz#88cc25733b19880b4a14a9d4f34770da9e898a92"
|
||||
integrity sha512-S0EqPqxwnJuVNNXRgcHB0r8ai8LSrpHdihVJKRM7WYmIR7isccBEf/G9agrt73sCXwjvenxFs4HDR7cSvGt14Q==
|
||||
|
||||
turbo-freebsd-arm64@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-freebsd-arm64/-/turbo-freebsd-arm64-1.2.9.tgz#aebfb5b07a2dd6e9211fb6d9827c2f2288e2ca73"
|
||||
integrity sha512-gwI8jocTf036kc9GI1BebzftxrkT5pewHPA2iqvAXAJpX01G1x1iGcl8/uIbkbL5hp038nu+l2Kb+lRI96sJuA==
|
||||
|
||||
turbo-linux-32@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-32/-/turbo-linux-32-1.2.16.tgz#7c60a19acd32862085566da0f9389d2db36a7aee"
|
||||
integrity sha512-ecbqmGOxgTWePGrowtwyvZGfvwaLxFWmPK21cU0PS+fzoZBaVmzYmniTdd/2EkGCw7TOPhtiT22v96fWcnRycA==
|
||||
|
||||
turbo-linux-32@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-32/-/turbo-linux-32-1.2.9.tgz#1462e45776d3ce93c57f2014745e7edb60910a44"
|
||||
integrity sha512-Rm47bIsCHIae/DkXJ58YrWvdh8o4Ug9U4VnTDb9byXrz2B7624ol9XdfpXv429z7LXkQR1+WnwCMwFB4K6DyuQ==
|
||||
|
||||
turbo-linux-64@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.2.16.tgz#d589bf73bbfa38fa73ad8ec786c0b89b678e7af8"
|
||||
integrity sha512-q6gtdMWCzM0Sktkd73zcaQjNoeM1MjtrbwQBctWN/Sgj0eiPBPnzpIvokvx98x7RLf4qyI99/mlme0Dn5fx21A==
|
||||
|
||||
turbo-linux-64@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-1.2.9.tgz#0eef4a6f6f267b773ea58c4bda86922092eda3eb"
|
||||
integrity sha512-8Gqi+TzEdmOmxxAukU0NO0JlIqdm98C97u9qEsxWrXTFL/xL21gKCixqsBTEO7JOISC4M8VjArxjSsITRbkD5g==
|
||||
|
||||
turbo-linux-arm64@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.2.16.tgz#9eaaee4094f71a266553248dfaadc59756696242"
|
||||
integrity sha512-gUf67tYJ/N09WAZTTmtUWYrqm381tZxiulnRGAIM+iRsaTrweyUKZaYXwJvlPpI/cQOw25wCG9/IyvxLeagL8A==
|
||||
|
||||
turbo-linux-arm64@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-1.2.9.tgz#57777d356bf74ef2cc284998ef86fe19c77b92c2"
|
||||
integrity sha512-FVIeM7koUtyu1cNAJhPYjb90kL/ICdWoJr4PoZZYnqty5sxLsBg75bVErEDQeDzKQvwXLlcax2lEzHvaSyn/wg==
|
||||
|
||||
turbo-linux-arm@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-arm/-/turbo-linux-arm-1.2.16.tgz#54774c7e6e4f91ebdb211fa48b1b2a46b1e3c61c"
|
||||
integrity sha512-du7uvExELNb89V3g7iM0XP21fR1Yl3EoHRcOfQz32oUqnS7idCKvbEowM9LtiluQl1dKcOIJjn1nlvvsqzkhOg==
|
||||
|
||||
turbo-linux-arm@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-arm/-/turbo-linux-arm-1.2.9.tgz#2424016fb926143682f9029bd86a8d455979e075"
|
||||
integrity sha512-OS+XCWiGFbuM7UNBVQdVbIJqxhVu9Sr2WxQgDcGZpCYn32yLLPlWDDGL0Cl/EG006J9k+VS1e4OzyM6kfMxS9Q==
|
||||
|
||||
turbo-linux-mips64le@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-mips64le/-/turbo-linux-mips64le-1.2.16.tgz#fa49b858f8ed399b44cdce285a0feb67c30ee99b"
|
||||
integrity sha512-U5BM+Ql3z13uRtwMmKH/8eL+9DdTgyijC2gaX4xP0RTlcN7WfAstg8Fg/Tn2Vw9vtpVDdxwpw7dvX4kw2ghhpA==
|
||||
|
||||
turbo-linux-mips64le@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-mips64le/-/turbo-linux-mips64le-1.2.9.tgz#e3bb35f53cb84ff836cf42fc576b6197c92a5e8a"
|
||||
integrity sha512-2zVBnOVivWGpl51qO/lycfw7euM4b04AXYUmhsWkUN3FygIwyNgjuiMU8rxQOlu9VGX8X+WXkX2gfbgTovTeFw==
|
||||
|
||||
turbo-linux-ppc64le@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-ppc64le/-/turbo-linux-ppc64le-1.2.16.tgz#0a419310b938ef5eace46cb6c53b18099caae60c"
|
||||
integrity sha512-HQWSCmVZyc5chw7Ie2ZcfZPfmM06mbEEu0Wl11Y5QWh1ZzhPNQHs/TsF4I9r146wHi62XgcrKFjkw4ARZiWsLA==
|
||||
|
||||
turbo-linux-ppc64le@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-linux-ppc64le/-/turbo-linux-ppc64le-1.2.9.tgz#130041711579a1b6b3fe774d85c394425d45c0ac"
|
||||
integrity sha512-EGgKyzf8IhodOF32BvE3Zlgbr/dSGuUbemC9RGSuhF1F1PMnP1nYS/t3JWN5QKZU4O2uWiIyLdC/0ZjtcGAcZQ==
|
||||
|
||||
turbo-windows-32@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-windows-32/-/turbo-windows-32-1.2.16.tgz#8307dea3fab91be4e3e46aa37d76ce8e7ce3fdcb"
|
||||
integrity sha512-0ZtPz5FK2qZjznMG4vvRyaabrhO8BgbN+tBx1wjXSuoICTAjYi5TwRVVRh59c3x7qQmR21Cv33CrhLBPRfeAlg==
|
||||
|
||||
turbo-windows-32@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-windows-32/-/turbo-windows-32-1.2.9.tgz#89a0d8463dffba01627d69998bfe6ea5fa975511"
|
||||
integrity sha512-XrMJMUtewlfksBUB0R7Tyw16IoqshVl6f/3R2ccMccddEMcvak0oW03FK9n+Y4F+wyIoJ22AVhu8jMv+HgEehA==
|
||||
|
||||
turbo-windows-64@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.2.16.tgz#9f5f725d6ab829d3cf7944ba92714e9e5bdd09d0"
|
||||
integrity sha512-j8iAIixq/rGfBpHNbYOosxMasZrGuMzLILEuQGDxZgKNpYgobJ15QFHQlGR9sit1b8qPU5zZX4CtByRtkgH1Bw==
|
||||
|
||||
turbo-windows-64@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-1.2.9.tgz#a55e3f32996ce4a8a538f9667748e7a1129ed10e"
|
||||
integrity sha512-ewhj4MrqcMpW/keag4xG7YRLTJ7PzcqBc6Kc96OGD2qfK/uJV/r7H3Xt09WuYHRWwPgGEeNn8utpqdqbYfCVDw==
|
||||
|
||||
turbo-windows-arm64@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.2.16.tgz#75894186e9f1d6340a30c436d563c34999e5b87c"
|
||||
integrity sha512-4GpcJG3B8R9WDhwfT8fu6ZmOOfseCg6Q1cy/G8/zpJQk769yYcSnD8MgQhYgHB58aVFxZcMxBvLL6UA0UrpgWA==
|
||||
|
||||
turbo-windows-arm64@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-1.2.9.tgz#3dc635c0031a0998be0322f9a258553f7cb4eb6e"
|
||||
integrity sha512-B8BoNb/yZWAyKwQUbs2+UFzLmOu/WGv/+ADT6SQfI8jOaTenS7Od4bbMsGJT0iXcqv+v8TcWKX83KmQ6gxBQpg==
|
||||
|
||||
turbo@1.2.16:
|
||||
version "1.2.16"
|
||||
resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.2.16.tgz#324c2d586f6fa77aa9173274f3b9d9efbe0735e4"
|
||||
|
@ -16244,6 +16314,25 @@ turbo@1.2.16:
|
|||
turbo-windows-64 "1.2.16"
|
||||
turbo-windows-arm64 "1.2.16"
|
||||
|
||||
turbo@1.2.9:
|
||||
version "1.2.9"
|
||||
resolved "https://registry.yarnpkg.com/turbo/-/turbo-1.2.9.tgz#61257149a2a29966c9941a16e0b5ad88b07b4e79"
|
||||
integrity sha512-aPGzZqmUHE9yx9TS7wcAJnDmXiuQSNXDwU5b1KrgNlFuID18TL443wna79p7k4awmf4Yuhu1cSZIvO+se72iVQ==
|
||||
optionalDependencies:
|
||||
turbo-darwin-64 "1.2.9"
|
||||
turbo-darwin-arm64 "1.2.9"
|
||||
turbo-freebsd-64 "1.2.9"
|
||||
turbo-freebsd-arm64 "1.2.9"
|
||||
turbo-linux-32 "1.2.9"
|
||||
turbo-linux-64 "1.2.9"
|
||||
turbo-linux-arm "1.2.9"
|
||||
turbo-linux-arm64 "1.2.9"
|
||||
turbo-linux-mips64le "1.2.9"
|
||||
turbo-linux-ppc64le "1.2.9"
|
||||
turbo-windows-32 "1.2.9"
|
||||
turbo-windows-64 "1.2.9"
|
||||
turbo-windows-arm64 "1.2.9"
|
||||
|
||||
tween-functions@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/tween-functions/-/tween-functions-1.2.0.tgz#1ae3a50e7c60bb3def774eac707acbca73bbc3ff"
|
||||
|
|
Loading…
Reference in New Issue