* first implementation of verifying phone number
* add UI + logic for verifying phone number flow
* check if all phone numbers are verified before submit
* add numberVerification pending
* only send SMS to verified numbers
* fix design for mobile view
* check if phone number is verified before testing action
* add back message service id check
* add TWILIO_VERIFY_SID to .env.example
* code clean up
* add TWILIO_VERIFY_SID to README.md instructions
* save new verified numbers
* fix wrongly thrown error for new verified numbers
* use false as default value for isVerificationPending paramater
* add translations
* add migration file
* code clean up
* don't throw error if phone number is not needed
* Feedback
* Shows error when Twillio isn't properly setup
* Type fixes
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* small design fix for time unit select
* save video cal url to booking in metaData
* save video url when bookings are confirmed
* fix e2e tests
* remove not needed waitForNavigation
* add metadata to booking created webhook payload
* add migration
* fix type error
* adjust e2e tests
* add bookingMetadataSchema
* add missing change from merge
* add new line to expected test result
* update snapshot
* fix e2e tests
* Update confirm.ts
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: zomars <zomars@me.com>
* wip vimcal app
* added vimcal blog link
* todo: filter out external calendar apps
* Make it a non calendar type app with category and variant as calendar
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Initial incomplete (but mostly functional) push of date override functions
* Fixed date shifting on load
* Bring back minDate (automatically disable all dates before current date)
* Fix type error
* Supply working hours to render available dates
* Converted to SSR
* moving defaultValues to the backend
* Improv. as filter can be achieved within the reduce
Co-authored-by: Omar López <zomars@me.com>
* Double inversion -> single, as it is an early return
* uniq() exit - not needed anymore
* Typefixes
* It's overriding dates :D
* Fixed duplication DateOverrides in list
* Implemented changing the month
* Make dateOverrides an optional param
* Fixed test (which requires dateOverrides due to auto-typing)
* Prevent a full update on set as default from list view
* Added some extra keys to keep ts happy
* Only allow a single date override per date
* Disallow editing excludedDates to the same date
* Bring back duplicate key ?.?
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* storybook v2 init
* Merge config into storybook vite build
* Remove path
* Storybook config tweaks
* Added styles and settings for storybook v2, and started working on button documentation and examples.
* Badges + flex wrap on mobile
* Breadcrumbs+button+avatar
* Checkbox
* Input + moving files around
* WIP table
* WIP table grid
* Replaced imports for new components.
* Added first steps for varianttable.
* Small alignment fix.
* Custom Args Table - With scrollbar
* Adding table to components that need it + darkmode
* Add intro
* Fix types
* Remove V1 storybook and replace with V2
* Fix badge type error
* Fixed storybook dependencies
* Added cover image to storybook
* Remove vita from ts config, we dont use vite.
* Fixed button import.
* Explained postcss pseudo plugin.
* Fixed badge import.
* Add Avatar Stories
* ButtonGroup Stories
* Fixed imports
* Add checkbox stories
* Inital state plannning
* Inital state combined with passed in props
* Start of UI work
* Able to change dates?
* Add dynamic hour props
* Get grid system setup correctly
* Show events on grid
* Weird sizing issue but events placed correctly gridstart
* CAL styled calendar event component
* availability WIP ish
* Blocking days! + Block days < today
* Kinda working time line
* Rename grid stop + formatting
* Handle sorting events if required.
* Add util for getting startDate bassed on weekday
* Remove event stories for now
* Implement gridstops per hour to be dyamic
* New CSS Grid + offsetbased positoning
* Fix weird Z-Index issues on hover
* Implement blocklist again with new format
* Side by side events working - styling needs work
* New design of overlap
* Overlapping? Working :O
* Cleanup
* WIP hover state
* Werid border issue
* fix translate issue
* Kinda working with overflow
* Fix overflow
* Progressive date blocking
* Cleanup
* Fix double render of blocked list
* WIP mobile implementaiton
* Trying to fix CSS
* Extract CSS to styles.css to allow media queries
* Improve documentation - allow args to be changed in storybook
* Fix hover showing even if disabled
* WIP cols auto approach
* Merge blocking dates
* Fix zindex
* Fix hover position
* Fix Z-Index issues on hover and blocking events
* Re add onclick handler
* Fix overlapping blocking dates
* Fix scaling for datevalues columns
* Date values closer to DS
* Blocked List Tidy up
* Storybook + file tidy up
* Little tidy up
* Fix offsets
* Remove event hover
* Fix random bg-red-500
* Fix import
* FIx blocking cells appearing above start Date
* Fix truncation
* Fix border overlap
* Overlap a little nicer
* Condtional 80% sizing
* Nitpicks
* Fix today height and top breaking
* Add text left to time stamp
* Support string dates
* Add shalow to reduce re-renders
* Rename to Calendar instead of scheduler
* Fix 3 overlapping events
* Fix merge type error
* Fix destructuring
* NITS
* Move to features package
Co-authored-by: Jeroen Reumkens <hello@jeroenreumkens.nl>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* Add new modal for duplicate and trpc action for it
* Adding event type duplication validations
* Fix type errors and id not being removed from rest obj
* Fix test for duplicating event
* Fix test for duplicating event
* Add connect to event type workflows
* fix button for adding new events
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* Abstract app category navigation
* Send key schema to frontend
Co-authored-by: Omar López <zomars@users.noreply.github.com>
* Render keys for apps on admin
* Add enabled col for apps
* Save app keys to DB
* Add checks for admin role
* Abstract setup components
* Add AdminAppsList to setup wizard
* Migrate to v10 tRPC
* Default hide keys
* Display enabled apps
* Merge branch 'main' into admin-apps-ui
* Toggle calendars
* WIP
* Add params and include AppCategoryNavigation
* Refactor getEnabledApps
* Add warning for disabling apps
* Fallback to cal video when a video app is disabled
* WIP send disabled email
* Send email to all users of event types with payment app
* Disable Stripe when app is disabled
* Disable apps in event types
* Send email to users on disabled apps
* Send email based on what app was disabled
* WIP type fix
* Disable navigation to apps list if already setup
* UI import fixes
* Waits for session data before redirecting
* Updates admin seeded password
To comply with admin password requirements
* Update yarn.lock
* Flex fixes
* Adds admin middleware
* Clean up
* WIP
* WIP
* NTS
* Add dirName to app metadata
* Upsert app if not in db
* Upsert app if not in db
* Add dirName to app metadata
* Add keys to app packages w/ keys
* Merge with main
* Toggle show keys & on enable
* Fix empty keys
* Fix lark calendar metadata
* Fix some type errors
* Fix Lark metadata & check for category when upserting
* More type fixes
* Fix types & add keys to google cal
* WIP
* WIP
* WIP
* More type fixes
* Fix type errors
* Fix type errors
* More type fixes
* More type fixes
* More type fixes
* Feedback
* Fixes default value
* Feedback
* Migrate credential invalid col default value "false"
* Upsert app on saving keys
* Clean up
* Validate app keys on frontend
* Add nonempty to app keys schemas
* Add web3
* Listlocale filter on categories / category
* Grab app metadata via category or categories
* Show empty screen if no apps are enabled
* Fix type checks
* Fix type checks
* Fix type checks
* Fix type checks
* Fix type checks
* Fix type checks
* Replace .nonempty() w/ .min(1)
* Fix type error
* Address feedback
* Added migration to keep current apps enabled
* Update apps.tsx
* Fix bug
* Add keys schema to Plausible app
* Add appKeysSchema to zod.ts template
* Update AdminAppsList.tsx
Co-authored-by: Omar López <zomars@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* fixed search routes
* made static text multilingual and fixed german translations
# Conflicts:
# apps/web/components/availability/Schedule.tsx
* delete empty file created by fixing merge conflicts
* fixing TextField placeholder by passing attendeeName and fixed json variable
* Using useLocal to modify static text to make it multilingual, and passing the correct variables for brand and mail
* seperated whitelabel and improved translations
* added missing translation
* added missing translation for webhooks
* Updated AdminAppsView with dynamic translations.
Added translations for german and english files only.
* changed back to one liner
* updated german and english translations for impersonation.tsx
* updated german and english translations for impersonation.tsx and users.tsx. added missing german translation for timeformat_profile_hint
* updated german and english translations for team-billing-view.tsx
* updated german and english translations for LicenseRequired.tsx
* updated routes for profile and avatar
* yarn.lock updated from newer changes
* Revert " yarn.lock updated from newer changes"
This reverts commit efd9a90bf7.
* sanitize dangerouslySetInnerHTML to prevent xss attacks
* tried to fix window title flicker
* changed ssdInit to ssrInit for getServerSideProps. Serverside translation works but current route still set as a window title
* flicker with route in window title is caused here. It is not necessary to check if isPublic and session is false because it already gets checked in useRedirectToLoginIfUnauthenticated hook.
* fixed window title translation flicker for availability page
* fixed window title translation flicker for teams page
* fixed window title translation flicker for workflow page
* fixed error that div may not be rendered within p element
* fixed window title translation flicker for booking page
* fixed window title translation flicker by adding getServerSideProps
* Only set HeadSeo if an page title exists. If window title is set by the Meta component, shell is causing a flicker because it overwrites the title which is set by Meta. It is a problem especially for settings pages.
* fixed window title translation flicker by adding the Meta component to the skeleton
* fixed condition
* removed condition and added withoutSeo for settings pages
* using translations for create team page further fixed flicker for window title
* fixed flicker for window title for event-type creation page
* fixed flicker for window title for availability creation page
* fixed flicker for window title for sso page
* updated conferencing en translation
* added meta.CTA back it was mistakenly removed
* fixed flicker for workflows page
* fixed missing variable
* Update packages/ui/v2/core/Shell.tsx
* Delete index.tsx
* Update sso.tsx
* Updates subdmoules
Co-authored-by: maxi <maximilian.oehrlein@clicksports.de>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
* Removes user plan logic for stripe sub
* Update hardcoded price
* Removed checkoutSessionId metadata and fix for trpc query
* Remove or comment team billing unused code
* Add todo note
* Fix type checks
* Change function that was renamed
* Remove duplicated test
* remove plan when creating user on test
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix french translation for rescheduled email
* fix translations for team invite
* fix rescheduling email in german
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Default to Cal Video
* Show web conferencing details to follow on success page
* Show web conferencing details to follow on success page
* Show web conferencing details to follow on success page
* Type fixes
* Pass tests
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* adjustments for each language json file:
- changed every Cal or Cal.com with a variable to make it possible to change that with a custom brand
- fix and renamed ATTENDEE with attendeeName
* added two new variables for appName and support mail address. so everybody can change it via env
* changed static Cal or Cal.com with new defined constants
* Using useLocal to modify static text to make it multilingual, and passing the correct variables for brand and mail
* adding new readable variables for brand, website domain and mail address
* fixed search routes
* made static text multilingual and fixed german translations
* Revert "fixed search routes"
moved changes in another pr
This reverts commit e6ba11a1ec.
* revert non whitelabel changes and moved it into another pr
* revert attendeeName fix
* reverted translation fixes and moved them in another pr
* changed back to "Cal.com Logo"
* changed back to "https://console.cal.com"
* added new env variable for company name and replaced some domainName variables in language files
* changed default for COMPANY_NAME to Cal.com, Inc.
* changed Cal.com to APP_NAME for mail templates
* Dropped website domain in favor of app name
* Update .env.example
* Apply suggestions from code review
* Code review feedback
* Delete App.tsx
* Update packages/ui/Kbar.tsx
* added meta.CTA back it was mistakenly removed
* updated add members test
Co-authored-by: maxi <maximilian.oehrlein@clicksports.de>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: zomars <zomars@me.com>
* add first version of text editor
* add new editor to email body
* fix line height
* remove not needed styles
* allow adding html tags + small refactoring
* fix error when input is empty
* styling of add variable dropdown
* fix bg on focus
* small design fixes
* improve design
* show error message for no input
* text editor only for email body
* remove test button
* code clean up
* code clean up
* code clean up
* fix that added variables weren't saved
* fix import
* first version of editor
* connect reminder body of form with new editor
* add pencile for link-editor
* remove TreeViewPlugin
* clean up css file
* code clean up
* add text indent for list
* improve editor design
* fix style
* slow resizing of editor
* fix that new data was removed when leaving tab
* dont allow italic and bold at same time
* code clean up
* fix type error
* code clean up
* code clean up
* remove text if changed from SMS to email or other way around
* add add variable dropdown
* show error message if email body is empty
* add white-space pre-wrap
* fix import
* prettier
* fix add variable dropdown for mobile
* move dependencies to correct package.json file
* remove html-to-text
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* only show smsReminder number if event type has SMS_ATTENDEE action
* fix rescheduling bug
* Change array iteration to only run for best scenario
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alan <alannnc@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* Upgrade deps + allow node 18.x
* Upgraded next-auth to v4.17
* Latest known to work version of next-auth
* Make next-auth.d.ts compatible with next-auth@v4.17.0
* Type fixes
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Removed emptyscreen component v1 version, migrated pages that still used it to v2, and removed v1 of workflow pages and components.
* updated workflow pages imports to remove v2 from path.
* Deleted v1 switch component, deleted v1 api-keys components, deleted old web integrations components that were unused.
* Removed v1 list component.
* Fixed event workflows tab path.
* Fixed import path for button in sandbox page.
* Cleanup and type fixes
* Making explicit indexes
* UI import migrations
* More import fixes
* More import fixes
* Submodule sync
* Type fixes
* Build fixes
Co-authored-by: zomars <zomars@me.com>
* Added proper dark mode support for buttons, and converted buttons to use CVA for better maintainable variant styling.
* Added animations to buttons.
* Added cva types to buttonbase type since thats imported in different places
* Fixed issue with styled buttons when false was pas for disabled instead of undefined. Added a small util function that now accepts arrays of variants, and creates all the possible combinations. This way we have less duplicate compoundvariants defined. This fixes the styles in the eventsinglelayout component.
* Undo disabling of api jest tests.
* Fixed remaining buttons using combined prop, which is replace by button group.
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* Fix error message
* Only apply buffer limits to That event type
* Correctly get eventtypeId in source
* Add comment
* Move to i188n strings
* Wrap string to be translated
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Booking succes query refactor
The query is now using the uid as its main identifier for the success page
* Minor changes to the succes.tsx and tests
* Convert eventtype dates to string, and only select eventtype slug from db to have a smaller query (we don't need more data, and this way we don't need to convert the dates in here to smaller strings either.)
* In the payment component get the bookingUid from props instead of the query
* design fixes
* fix UI for recurring bookings
* fix success page for recurring events
* fix cancelling recurring events
* fix design of successful cancellation page
* fix email redirect + design fixes
* remove old cancel page
* fix v2 design for text area
* Changed the recurringMutation to use the uid for the success booking page
* redirect form old to new cancel page
* fix success page for recurring events
* rename to allRemainingbookings
* fix old cancel redirect
* fix recurring cancel link in email
* fix redirect when cancelling one recurring booking
* remove reschedule for recurring events in email
* create queryschema for cancel success page
* scroll down to bottom if cancel
* add cancellation reason
* fix tests
* fix old /cancel component
* code clean up
* Uses URL query as cancellation state
Also fixes string to boolean inference
Co-authored-by: Mischa Rouleaux <mischa-rouleaux@live.nl>
Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Jeroen Reumkens <hello@jeroenreumkens.nl>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: zomars <zomars@me.com>
* First steps in updating console ui components.
* Replaced remaining v1 components.
* Removed todo.
* Removed createelement from form component since we were not using it at all (we wrapped all our inputs in divs), and any input that was not wrapped, was actually broken...
* Undo update submodule.
* Reverted website submodule update.
* Booking succes query refactor
The query is now using the uid as its main identifier for the success page
* Minor changes to the succes.tsx and tests
* Convert eventtype dates to string, and only select eventtype slug from db to have a smaller query (we don't need more data, and this way we don't need to convert the dates in here to smaller strings either.)
* In the payment component get the bookingUid from props instead of the query
* Changed the recurringMutation to use the uid for the success booking page
Co-authored-by: alannnc <alannnc@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Jeroen Reumkens <hello@jeroenreumkens.nl>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Made full row of event type clickable, and fixed event type loader dimensions.
* Fixed skeletons for teams and workflows.
* Fixed skeleton for workflow detail page.
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* Removed unused ui components and updated skeleton components throughout the app to use new version.
* Deleted unused app component and changed destructive button variants to secondary as per design.
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* add sender id
* add sender to twilio from
* added missing sender
* add migration
* fix design of add action dialog
* add cal as sender when creating new workflow
* fix type errors
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* WIP teams billing page
* WIP
* Create settings page
* Remove unused imports
* Create stripe customer on team creation
* Add Stripe ids to team record
* Add Stripe price ids for team to .env
* Create & delete Stripe customers
* Add string
* Merge branch 'main' into v2/teams-billing
* Create checkout session when creating team
* Create webhook to update team with Stripe ids
* Add Stripe migration files
* Move deleting team from Stripe under ee
* Some cleanup
* Merge branch 'v2/teams-billing' of https://github.com/calcom/cal.com into v2/teams-billing
* Small clean up
* Link to team's portal page
* Fix types
* Fix type errors
* Fix type errors
* Fix type error
* Delete old files & type fixes
* Address feedback
* Fix type errors
* Removes team creation modal
* WIP
* Removed billing frequency from team creation
* Add Stripe check for delete team customer
* Merge branch 'v2/teams-billing' of https://github.com/calcom/cal.com into v2/teams-billing
* Add high level form to create new team
* WIP
* Add new team to form
* Validate for invited members
* Add translations
* WIP
* Add validation for team name
* Add validation to team slug
* Clean up
* Fix type error
* Fix type errors
* WIP
* Abstract invite members function
* Add subscription status column
* Hide pending teams from settings
* Send email on paid subscription
* WIP
* Sync packages
* Add team subscription cols to schema
* WIP
* Matches locks vite version to <3
* Removed subscriptionStatus
* WIP
* Fix warning
* Query optimizations
* WIP
* Cleanup
* Wip
* WIP
* Runtime error fixes
* Cancellation fixes
* Delete team fixes
* Cleanup
* Type fixes
* Allows to check memebership in getTeamWithMembers
* Adds team creation tests
* Cleanup
* Cleanup
* Restored change
* Updated copy
* Moved component
* Cleanup
* Fix team members view
* Cleanup
* Adds failsafe for skipping publishing on update
* Cleanup
* Feedback
* More feedback
* Cleanup
* Cleanup
* Feedback
* Feedback
* Feedback
* Adds edge-case for slug conflicts
* Feedback
* e2e fixes
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* add first version of testing routing forms
* small design changes
* use new shared component
* readd deleted code for showing result route
* add form validation for required fields
* design fixes
* add scroll
* fix design of select
* use old dialog with correct overflow behaviour
* code clean up
* remove unused import
* fix mobile view
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* fix: update form methods when username is updated
* Using RHF to decrease state logic in profile.tsx for UsernameAvailability (#5405)
* Type fixes & fixed onboarding
* Removed undefined allowed value + removed invalidation
* No longer need usernameRef.current.value
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Sendgrid app and code simplification
* Applying app-store-cli + impl
* Fixing types
* Adding features to readme
* Fixing unit tests
* A few last tweaks regarding UX and env vars
* Applying feedback
* Using calcom icons
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Guests will be able to add their own location or in person meetings
* fix type error
* fixed issue with attendees location not showing on success page
* google meet booking will now go through, removed unnecessary change
* filter out attendee address when editing location
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Add validations for server side loading of bookingInfo for seats event types
* Fix prop used for validating if booking has seats enabled
* Fix types
* Removed frontend filter for seatsShowAttendees as not needed anymore
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Improving recurring info in bookings
* Adding fixes to success page, it was invalid on custom tz
* Remove dead code
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* storybook v2 init
* Merge config into storybook vite build
* Remove path
* Storybook config tweaks
* Added styles and settings for storybook v2, and started working on button documentation and examples.
* Badges + flex wrap on mobile
* Breadcrumbs+button+avatar
* Checkbox
* Input + moving files around
* WIP table
* WIP table grid
* Replaced imports for new components.
* Added first steps for varianttable.
* Small alignment fix.
* Custom Args Table - With scrollbar
* Adding table to components that need it + darkmode
* Add intro
* Fix types
* Remove V1 storybook and replace with V2
* Fix badge type error
* Fixed storybook dependencies
* Added cover image to storybook
* Remove vita from ts config, we dont use vite.
* Fixed button import.
* Explained postcss pseudo plugin.
* Fixed badge import.
* Add Avatar Stories
* ButtonGroup Stories
* Fixed imports
* Add checkbox stories
* Add exports for differnt types of inputs
* Fix form and text area input
* Fix mass import errors
Co-authored-by: Jeroen Reumkens <hello@jeroenreumkens.nl>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Fixes the localisation issue with recurring events
* Implement DST as Dayjs doesn't
* Fixed generated booking URL when different TZ is set
* manually apply DST offset to times
* Fix type error