* charge free users for SMS to CA an US
* allow custom template for free users
* fix backend + some UI fixes
* make text editable
* rename back to needsTeamsUpgrade
* add twilio webhook handler tests
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Add credits section to billing
* create seperate router for credits
* add stripe checkout session
* schema changes + code improvements
* rename to creditBalance
* custom quantify input with error message
* add checkout session completed webhook endpoint
* fix typo
* UI fixes
* add payCredits handler
* add error toast message
* allow scheduling sms up as close to 15 minutes in the future
* schedule at most 2 hours in advance
* webhook to pay for sent sms
* continued work on twilio callback
* code clean up
* further implementation for credit handling
* add migration
* object as param for scheduleSMS
* object as param for sendSMS
* fix TrpcSessionUser imports
* fix imports
* add db changes
* add cron job for price setting
* twilio status callback to create expense log
* remove unused code
* set up low credit balance email
* fixes for buying credits
* fixes in api/twilio/webhook
* add test to save credits to credits balance
* fix typos
* add new helper function chargeCredits
* expand twilioProvider
* fix type errors
* adjust tests
* type errors
* clean up
* clean up
* fix subscription active check
* remove some user/org related code
* more changes to remove user/org support
* send emails seperatly to admins
* fixes for team billing page
* fix stripe success url
* fixes to creating expense log
* email imrovements and more
* get monthly team price from stripe
* fix import
* fix monthly credits calculation
* finsih low credit balance warning email
* credit balance limit reached email
* create CreditService
* cancel SMS and send as email instead
* add messageDispatcher
* fix type error
* fix type error
* fix type error
* fix import
* fix unit test
* clean up twilioProvider
* clean up chckSmsPrices/route
* add missing translations
* add skeleton loader
* add admin check to get handler
* code clean up + fixes
* improve scheduling with fallback
* fix type error
* add bookingUid to handleSendingSMS
* add unit tests for creditService
* add more tests to credit-service.test.ts
* add test for cancelScheduledMessagesAndScheduleEmails
* fix test and type error
* add back resolve
* fix empty resolve
* adjust limitReachedAt logic
* address mrge comment on styling
* add getAdminMembership to repository
* twilio/webhook clean up (feedback)
* feedback - clean up
* remove todo comment
* clean up twilio/webhook
* code clean up
* add use client
* add createOneTimeCheckout to stripe service
* refactor repository pattern
* small fixes + clean up
* fix type error
* add missing import
* fix hasAvailableCredits for user
* force-dynamic
* rename credits to creditBalance
* fix stripe import
* remove not needed code
* fix e2e tests
* improve low balance warning email
* dynamic-import CreditService
* index.ts
* add user logic checkSmsPrices endpoint
* fix e2e tests
* remove dynamic import CreditService
* Revert "remove dynamic import CreditService"
This reverts commit e272978a7ff3fc5a04139e656c9f8d2c84a40dda.
* no need to dynamic-import credit service
* Revert "no need to dynamic-import credit service"
This reverts commit ba5ae488d08979a65fb47b5d0722cda9f45d6ea0.
* fix twilio webhook
* add userId support in checkout.session.completed
* clean up code
* only select id in getAdminMembership
* revert billing/package.json
* fix type checks
* fix type checks
* adjust hasAvailableCredits function
* fixes for checkout sessioned completed
* add UI for user
* fix type errors
* adds requires credits badge
* remove team check from update.handler
* clean up inlcude statements
* fix credit-service tests
* add tests
* fix type errors
* fix type errors
* fix and add tests
* imrove badge
* code clean up
* add reminderScheduler test
* add additional credits as title
* fixes for warningSentAt and limitReachedAt
* mock stripe
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: hbjORbj <sldisek783@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Add translations in respective files
* implement multilingual support for email templates
* fix: indentation in common.js & typos in common.js and update.handler.ts
* Add akismet package to tasker
* Create scanWorkflowBody task
* Schedule workflow body scan
* Add AKISMET_API_KEY .env
* Auto lock user if spam is detected
* Uncommit key
* Add safe param to workflow step
* Migration for safe field
* Do not process workflow steps is `safe` is false
* Update migration to set previous records to true
* Address comments
* Refactor `scheduleWorkflowNotifications` to accept an object
* If new steps or editing old ones send to tasker
* Call `scheduleWorkflowNotifications` in task
* Fix `IS_SELF_HOSTED`
* Remove unused function
* Make `safe` optional in schema
* Type fix
* Revert "Make `safe` optional in schema"
This reverts commit d0964702affa87c35562300301473d25635c565b.
* Revert "Type fix"
This reverts commit d9a031303269a2994ae46f576ab2a3d31e4d977b.
* Type fixes
* Type fixes
* Address comments
* Fix tests
* Add tests
* Update tests
* Typo fix
* Update `safe` to `verifiedAt`
* feat: Compare workflow reminder bodies to default template (#19060)
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* refactor: `emailReminderTemplate` to accept object as param (#19288)
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* Refactor `scheduleEmailReminders`
* Refactor `create.handler` for new workflows
* Refactor `emailReminderManager`
* Refactor `getEmailTemplateText`
* Fix typo
* Type fix - whatsapp plain text template imports
* Type fix - no template found
* Type fix - add `isBrandingDisabled` to `emailReminderTemplate`
* Add workflow and user to prisma mock
* Fix imports for akismet dependencies
* Record user lock reason
* Undo linting changes
* Fix tests
* New workflow, at verify created step
* Handle if `SCANNING_WORKFLOW_STEPS` is toggled
* Move `verifiedAt` checks to specific schedule functions
- `scheduleWhatsappReminder`
- `scheduleEmailReminder`
- `scheduleSMSReminder`
* Update logic
* Do not fallback verifiedAt
* Add comment to next.config.js
* chore: decouple ui dialog from AppRouter and Atoms
* fix type e2e test
* fix: import dialog from @calcom/ui/components/dialog
* fix: remove log
* fix unit test
* fix
* fix and move data-override-list test to features package
---------
Co-authored-by: hbjORbj <sldisek783@gmail.com>
* perf: Slim down loggedInViewer tRPC router
* Fixed trpc client calls for new routes
* Moved bookingUnconfirmedCount
* Moved getUserTopBanners to me router
* Moved shouldVerifyEmail to me router
* Moved i18n from public to its own router
* fix ssrInit
* fix ssrInit usage
* fix type check
* better naming
* fix
* fix
* Fix types
* Removed used of importHandler
---------
Co-authored-by: hbjORbj <sldisek783@gmail.com>
* ui playground
* add types to ui
* push avatar ignore ts and eslint errors
* feat: V3 UI avatar (#18997)
* avatar playground
* add overflow-hidden back for loading indicator
* update lock
* feat: v3/badge (#18999)
* badge intro
* fix text on small badge
* add dark mode warning
* feat: v3/button (#19014)
* TOC
* wip buttons
* shadows
* secondary
* semantic colours
* minimal buttons
* update disabled states
* checkbox
* dropdown v3
* load icons
* fix design sections
* fix icon gap
* fix
* remove client component from rsc
* use peer as avatar
* gif
* fix button gap - dropdown iocn
* support start icon in dropdowns
* add alert demo + v3 component + darken semantic text
* base inputs and text field
* wip input
* input field addon/suffix
* toast page
* wip select
* match designs for input and select rounded
* fix
* fix select isloading transform
* fix multi icons transition rotation
* fix group heading
* range slider demo + range slider
* range slider popover design
* v3 dialog
* fix slider thumb size
* wrap in suspense for useSearchParam difference in next14+
* base of tabs + horizontal tabs
* fix select sizing to match input 36px
* fix dark mode hover on button
* target domState class for light/dark so we work on portal elements
* fix default bg on popover
* lightmode toasts + eleveation token
* empty screen
* intro to split button concept
* mass colour updates
* intro to themes
* remove i18n from label with name
* bouncy buttons
* feat: small select
* nav item dumb component
* full demo
* settings demo
* fix tabs
* fix mt
* fix dropdown feedback from loom
* alert fixes mentioned in loom
* push font-cal
* move to fumadocs
* fix avatar
* colors table
* add typeography
* icon + spacing guide
* add border radius and shadow tables
* fix colours and border radius
* remove prose undline via fumas fork
* fix icon buttons sizes
* button group component
* fix horizontal tabs
* tab fixes
* switches
* pagination component
* show toasts components raw
* sync with airtable
* add use client
* 10px on input again
* 10px in select also
* fix input height
* fix files merge
* fix loading state for icon buttons
* fix button fab
* Enable addon to now overflow to next line in DS
* use cal font for dialog text
* add avatar square variant
* fix select padding and menu size
* fix type errors
* fix type errors
* add switch small size and fix type errors
* fix ref types on input
* update web styles
* remove addonFilled to fix type errors
* push dialog fixes
* fix checkbox display
* remove prose from alert examples
* remove prose from all our component examples
* badge rounded-lg on lg size
* update colors
* force w/h on icon buttons instead of inheriting
* remove border-focus
* remove border-focus from tailwind config
* update tokens to match new colours
* add new border subtle tokens and add to toasts
* fix lg button padding
* fix and drastically improve rtl rests
* multi select use badges
* use badge design for select pills
* fix avatar alignment
* fix tests and remove redudant ones
* fix tests and remove redudant ones
* update atoms globals css
* extract tokens.css
* extract app.css
* force flex for atoms
* add @calcom/ui/css
* revert ui playground styles abstraction
* fix input focus states
* fix focus states for buttons
* feat: v3/app work (#19233)
* globals.css for app + event types listing search
* few app wide NITS
* fix select foucs within styling
* fix formbuilder switch styles
* fix disabled state of nested inputs
* workflow fixes
* webhook form fixes
* i18n on tabs info
* booking filters + tab
* fix filters spacing
* make first item so we get correct border radius if not default
* round radio group in create event types + make button small
* profile page
* update editor br
* button nits in existing places in the app
* fix timezone select and multilist in guest form
* fix text area on public booking page
* size small event types create
* margin on routing filter
* filters improvments
* routing insights fixes
* fix date filter range
* ooo fixes
* fix teams/members bulk actions
* create team UI
* i18n in useTabs instead of in tab component now
* Add event type setup border to availability
* fix bulk actions on org members table
* onboarding fixes
* fix input types with ref stripe comparision
* i18n fixes for platform
* update globals of atoms
* fix form builder firstname/lastname switch + correct footer useage
* fix select
* Revert "add @calcom/ui/css"
This reverts commit 0dd8f9012907a278cfede4a98f289cb0744c9244.
* revert tokens css
* Revert "extract app.css"
This reverts commit 10b998604816ad3310c24b36a02a638dabc5be24.
* linear nits
* workflow dropdown
* fix page theme heading sizes to match cards
* fix stepper for team creation
* adjust margin to FilterSearchField
* fix ooo icon
* fix booker and dark mode due to darkgray 50
* more dark mode fixes
* add size prop
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* remove ui-playground
* fix grow missing from merge
* add search icon data-test-id back to search
* fix FormAction style
* fix datatestid for apps and tabs
* change selector for team invitation e2e
* fix use data-testid from item instaed of using names
* rename upper case O
* fix unit tests data-testid
* fix unit tests data-testid
* more data-testid changes
* add data-testid to apps tab
* data-testid to installed appPage
* fix embed tests
* fix filter-popover-trigger
* use text-error and use dataId for locator
* more e2e improvment
* pass in single testId as button is now duplicate
* show field-error instead
* add test to eventtype tabs
* Add css vars to embed too\
* add scrollbar and change dialog overlay colour
* fix type
* use attribute instead of class for tab detection
* await promise
* use new tokens for sprite generation
* add correct testing Ids to e2e instead of button:text
* use testIds for creation of orgs
* Webhook receiver wait for 10 seconds
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Morgan Vernay <morgan@cal.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
* Create `checkIfTeamHasActivePlan` method on `stripe-billing-service`
* Add `checkIfTeamPlanIsActive` to `InternalTeamBilling`
* Create `hasActiveTeamPlan` trpc endpoint
* Check for active team plan when updating workflows
* Create `useHasActiveTeamPlan` hook
* Use `useHasActiveTeamPlan` on workflow edit page
* Type fixes
* Type fix
* Add `accepted` to team query
* feat: Workflow — Send Email to Specific Email
* disable button when verifyEmail pending
* add verified emails table and routes
* fix: include teamId in verifyEmailCode
* fix: include email address in activate handler
* fix: check team before adding email
* feat: check verified email, add to team if only users
* remove logs
* fix: if statement
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* change email to verify your email
* fix: show error if saving unverified email
* fix: show email in subject
* verify email when editing steps
* remove double calls from same block
* verify email when creating new step
---------
Co-authored-by: v0ltZzie <161201747+v0ltZzie@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* remove event type requires confirmation
* allow sms sending also for team (frontend)
* allow text to attendee for team (backend)
* add rate limiting for SMS (WIP)
* add functionality to lock and unlock SMS sending (+admin UI view)
* rename to smsLockState
* add ability to lock users and teams
* don't send sms if locked
* add missing imports
* fix rate limit namespace
* add translation
* fix type error
* remove prop from UsersTable
* add smsLockState to buildUser
* code clean up
* create seperate sms rate limit function
* fix type error
* add missing userId and teamId to sendSMS
* code improvements
* add User Team type
* fix marking as reviewed
* check monthly sms limit only for user
* don't lock orgs
* fix type error
* fix avatars
* fix type error
* fix type error
* fix type error
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
* fix: [CAL-3374] Says Number is not Verified, but it is Verified
* clearing error only when verified
* type-checks fixed
* chore: improvement
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Udit Takkar <udit222001@gmail.com>
* add orgs upgrade badge to select
* don't allow updating to if no teams or orgs plan
* make sure only paying users can request verification codes
* add new action helper function
* remove kyc code
* code clean up
* fix verify button UI
* fix type errors
* add eventTypeRequiresConfirmation everywhere
* address feedback
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* create test files
* add first e2e test
* finish first e2e test
* code clean up
* fix event type create button data-testid
* enable sandbox mode for non production environments
* comment out code for testing
* Revert "comment out code for testing"
This reverts commit 5553dacce23cd85c27e41b76f99fc31ce69499b7.
* clean up comments
* prettier
* use NEXT_PUBLIC_IS_E2E
* use todo fn
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alan <alannnc@gmail.com>
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Shivam Kalra <shivamkalra98@gmail.com>
* add tooltip on info icon
* fix text
* fix UI in addActionDialog
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Enabling workflows for managed events
* Disabling fields for workflow when readonly
* Disabling event type workflows if readonly
* Installing auth app
* Reverting yarn.lock
* Again reverting yarn
* Showing user workflows in managed event type
* Reusing existing code to show all workflows
* Further extending workflow support
* Added unit test
* Fixing workflow assignment
* Fixing locked workflows for children MET
* Update packages/features/ee/workflows/components/EventWorkflowsTab.tsx
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* Personal workflows fix, matching count numbers
* Fixing menu items for managed event types
* Fixing type checks
* Fixing empty activeOn select
* Fixing unit test
* handling active workflows for MET
* Fixing MET slug nit
* Embed option in action restored for non-MET
* Correcting mobile view when hidden
* More adjustments
* fix sms reminder field for children
* remove console.log
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* add event end time as variable
* add timezone as new variable
* add first version of template prefill
* set template body when template is updated
* set reminder template body and subject when creating workflow
* set email subject when changes templates
* save emailBody and emailsubject for all templates + fix duplicate template text
* add more flexibility for templates
* remove console.log
* fix {ORAGANIZER} and {ATTENDEE} variable
* make sure to always send reminder body and not default template
* fix import
* remove email body text and match variables in templates
* handle translations of formatted variables
* fix email reminder template
* add cancel and reschedule link as variable
* add cancel and reschedule link for scheduled emails/sms
* make sure empty empty body and subject are set for reminder template
* add info message for testing workflow
* fix typo
* add sms template
* add migration to remove reminderBody and emailSubject
* add branding
* code clean up
* add hide branding everywhere
* fix sms reminder template
* set sms reminder template if sms body is empty
* fix custom inputs variables everywhere
* fix variable translations + other small fixes
* fix some type errors
* fix more type errors
* fix everything missing around cron job scheduling
* make sure to always use custom template for sms messages
* fix type error
* code clean up
* rename link to url
* Add debug logs
* Update handleNewBooking.ts
* Add debug logs
* removed unneded responses
* fix booking questions + UI improvements
* remove html email body when changing to sms action
* code clean up + comments
* code clean up
* code clean up
* remove comment
* more clear info message for timezone variable
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: alannnc <alannnc@gmail.com>
* migrate from react-icons to lucide-react
* replace react-icon with lucide-dev: Webhook Icon
* add lucide transformer
* Fix LinkIcon import
* Update yarn.lock to include monorepo deps
* Migrated icons in ChargeCardDialog
* Port Storybook to new icons as well
* Adjust Info & Globe icons size to match react-icons size
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* show already verified numbers as verified
* delete old batch_ids from scheduled sends
* only delete cancelled ones
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* WIP
* Create Booking Questions builder
* Renaming things
* wip
* wip
* Implement Add Guests and other fixes
* Fixes after testing
* Fix wrong status code 404
* Fixes
* Lint fixes
* Self review comments addressed
* More self review comments addressed
* Feedback from zomars
* BugFixes after testing
* More fixes discovered during review
* Update packages/lib/hooks/useHasPaidPlan.ts
Co-authored-by: Omar López <zomars@me.com>
* More fixes discovered during review
* Update packages/ui/components/form/inputs/Input.tsx
Co-authored-by: Omar López <zomars@me.com>
* More fixes discovered during review
* Update packages/features/bookings/lib/getBookingFields.ts
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* More PR review fixes
* Hide label using labelSrOnly
* Fix Carinas feedback and implement 2 workflows thingy
* Misc fixes
* Fixes from Loom comments and PR
* Fix a lint errr
* Fix cancellation reason
* Fix regression in edit due to name conflict check
* Update packages/features/form-builder/FormBuilder.tsx
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
* Fix options not set when default value is used
* Restoring reqBody to avoid uneeded conflicts with main
* Type fix
* Update apps/web/components/booking/pages/BookingPage.tsx
Co-authored-by: Omar López <zomars@me.com>
* Update packages/features/form-builder/FormBuilder.tsx
Co-authored-by: Omar López <zomars@me.com>
* Update apps/web/components/booking/pages/BookingPage.tsx
Co-authored-by: Omar López <zomars@me.com>
* Apply suggestions from code review
Co-authored-by: Omar López <zomars@me.com>
* Show fields but mark them disabled
* Apply suggestions from code review
Co-authored-by: Omar López <zomars@me.com>
* More comments
* Fix booking success page crash when a booking doesnt have newly added required fields response
* Dark theme asterisk not visible
* Make location required in zodSchema as was there in production
* Linting
* Remove _metadata.ts files for apps that have config.json
* Revert "Remove _metadata.ts files for apps that have config.json"
This reverts commit d79bdd336cf312a30a8943af94c059947bd91ccd.
* Fix lint error
* Fix missing condition for samlSPConfig
* Delete unexpectedly added file
* yarn.lock change not required
* fix types
* Make checkboxes rounded
* Fix defaultLabel being stored as label due to SSR rendering
* Shaved 16kb from booking page
* Explicit types for profile
* Show payment value only if price is greater than 0
* Fix type error
* Add back inferred types as they are failing
* Fix duplicate label on number
---------
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Efraín Rochín <roae.85@gmail.com>