* chore: refactor config files to prevent migration tool errors
* refactor: upgrade with the tailwind migration tool
* chore: restore pre-commit command + mc
* refactor(wip): update dependencies and migrate to Tailwind CSS v4 (mainly web)
* chore: resolve Tailwind v4 migration conflicts from merging main
* chore: remove unused Tailwind packages from config and update dependencies for v4 migration
* chore: uncomment Tailwind CSS utility classes in globals.css
* fix: resolve token conflicts between calcom and coss ui
* fix: textarea scrollbar
* Fix CUI-16
* fix: added @tailwindcss/forms plugin and cleaned up CSS classes in various components to remove unnecessary dark mode styles
* fix: selects and inputs of different sizes
* fix: remove unnecessary leading-20 class from modal titles in various components
* fix: update Checkbox component styles to remove unnecessary border on checked state
* fix: clean up styles in RequiresConfirmationController, Checkbox, and Radio components to enhance consistency
* fix: update button and filter component styles to remove unnecessary rounded classes for consistency
* fix: calendar
* fix: update KBarSearch
* fix: refine styles in Empty and Checkbox components for improved consistency
* Fix focus state email input
* fix: update button hover and active states to use 'not-disabled' instead of 'enabled'
* fix: line-height issues
* fix: update class name for muted background in BookingListItem component
* fix: sidebar spacing
* chore: update class names to use new Tailwind CSS color utilities
* fix embed
* chore: upgrade Tailwind CSS to version 4.1.16 and update related dependencies
* Map css variables and add a playground test for heavy css customization
* suggestion for coss-ui
* refactor: update CSS variable usage and clean up styles
- Replace instances of `--cal-brand-color` with `--cal-brand` in embed-related HTML files.
- Remove the now-unnecessary `addAppCssVars` function from the embed core.
- Import theme tokens in the embed core styles for better consistency.
- Clean up whitespace and formatting in CSS files for improved readability.
- Add a comment in `tokens.css` regarding its usage in both embed and webapp contexts.
* Handle within tokens.css instead of fixing coss-ui
* Remove initial, not needed. Also, remove tailwind.config.js as tailwidn scans the html automaically
* fix: examples app breaking
* fix: modal not resizing correctly
* feat: upgrade atoms to tailwind v4
* fix: atoms build breaking
* fix: atoms build breaking
* chore: upgrate examples/base to tailwind 4
* chore: update globals.css
* fix: add missing scheduler css variables
* fix: PlatformAdditionalCalendarSelector
* chore: update global styles
* chore: update tailwindcss and postcss dependencies to stable versions
* chore: remove unneeded class
* fix: dialog and toast animation
* fix: replace flex-shrink-0 with shrink-0 for consistent styling in various components
* fix: dialog modal for Apple connect
* add margin in SaveFilterSegmentButton
* Fix radix button nested states
* add cursor pointer to buttons but keep dsabled state
* Fix commandK selectors and adds cursor pointer
* Fix teams filter
* fix - round checkboxes
* fix filter checkbox
* fix select indicator's margin
* command group font size
* style: fix badge and tooltip radius
* chore: remove unneeded files
* Delete PR_REVIEW_MANAGED_EVENT_REASSIGNMENT.md
* remove ui-playground leftover
* fix: add missing react phone input styles in atoms
* Delete managed-event-reassignment-flow-and-architecture.mermaid
* fix: inter font not loading
* Add theme to skeleton container so that it can support dark mode
* fix: create custom stack-y-* utilities post tw4 upgrade
* fix: typo
* fix: atoms stack class + remove unused css file
* fix default radius valiue
* fix space-y in embed
* fix skeleton background
* Hardcode radius values to match production
* fix border in embed
* add missing externalThemeClass
* feat: create a custom stack-y-* utility
* fix: add stack utility to atom global css
* fix: Skeleton loader class modalbox
* Add stack-y utility in embed
* fix: add missing stack utilities in atoms globals.css
* update yarn.lock
* add popover portla
* update
---------
Co-authored-by: Sean Brydon <sean@cal.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Ryukemeister <sahalrajiv6900@gmail.com>
Co-authored-by: cal.com <morgan@cal.com>
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
Co-authored-by: Anik Dhabal Babu <adhabal2002@gmail.com>
## Problem
When users clicked on a plan card in the Cal.com Platform pricing UI, the loading
spinner would appear on ALL plan cards simultaneously instead of just the selected one.
This gave a confusing UX impression that all plans were being processed at the same time.
## Solution
Track the currently loading plan using a `loadingPlan` state variable that stores
which plan the user clicked on, rather than relying solely on the pending state from
the mutation hook.
## Changes
- Added `loadingPlan` state to track which specific plan is loading
- Update `loadingPlan` when a plan subscription is initiated
- Reset `loadingPlan` on error to ensure UI returns to normal state
- Modified `isLoading` prop condition to check if the current plan matches
the `loadingPlan` before showing the spinner
This ensures that only the plan card the user clicked on displays the loading indicator,
while other plans remain in their normal state.
sean-brydonGitHubDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* feat: implement recent impersonations list with localStorage storage
- Add RecentImpersonationsList component with quick action buttons
- Store up to 5 recent impersonations in localStorage using existing webstorage utility
- Integrate component into admin impersonation page above existing form
- Add translation keys for recent impersonations UI elements
- Update impersonation flow to save successful impersonations locally
- Follow existing List component patterns and button styling
Co-Authored-By: sean@cal.com <Sean@brydon.io>
* refactor: optimize RecentImpersonationsList to use lazy initial state
- Replace useEffect with useState lazy initializer for better performance
- Removes unnecessary re-render on component mount
- Remove unused setRecentImpersonations variable to fix ESLint warning
- Follows React best practices for initial state computation
Co-Authored-By: sean@cal.com <Sean@brydon.io>
* Add styling to match v3 and newer designs
* Update packages/lib/recentImpersonations.ts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-09-06 19:56:08 +05:30
Peer RichelsenGitHubDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* feat: conditionally show contact us or report issue based on plan
Co-Authored-By: peer@cal.com <peer@cal.com>
* fix: update icon name to triangle-alert to fix type error
Co-Authored-By: peer@cal.com <peer@cal.com>
* fix: check specific plan type instead of isPaidUser flag
Co-Authored-By: peer@cal.com <peer@cal.com>
* fix: check userBillingData.valid to ensure billing plan is active
Co-Authored-By: peer@cal.com <peer@cal.com>
* fix: convert plan to lowercase before comparison
Co-Authored-By: peer@cal.com <peer@cal.com>
* fixup: dont show contact card for free platform users
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: peer@cal.com <peer@cal.com>
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: Ryukemeister <sahalrajiv6900@gmail.com>
2025-04-14 11:13:05 +00:00
devin-ai-integration[bot]GitHubDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>benny@cal.com <benny@cal.com>
* 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>
* remove create button for teams from calcom ui
* migrate timezone select to features
* remove trpc from phone and storybook provider
* new-yarn.lock
* fix imports + test file for select
* fix platform timezone select to use Raw timezone select
* fix timezone type import
* use correct select in timezone-select.tsx - needs trpc version
* fix lock and remove test-utils
* fix log file
* Updated yarn.lock
* Fixed types
* Fixed tests
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* feat: add areDefaultEventTypesEnabled to PlatformOAuthClient
* feat: specify areDefaultEventTypesEnabled when creating OAuth client
* feat: specify areDefaultEventTypesEnabled when updating OAuth client
* feat: display areDefaultEventTypesEnabled in OAuth clients list
* refactor: set areDefaultEventTypesEnabled by default to false on API level
* feat: v2 API CREATE managed user toggle default event types
* refactor: centralize OAuth inputs and outputs in platform/types
* fix: correct response types for OAuth hooks
* refactor: web/lib/hooks/settings/platform/oauth-clients/useOAuthClients.ts
* refactor: web/lib/hooks/settings/platform/oauth-clients/useOAuthClients.ts
* refactor: split web OAuth hooks into separate files
* refactor: split web OAuth hooks into separate files
* docs: v2 OAuth client inputs and outputs
* refactor: update and create oauth client inputs
* fix: Issues with scheduling timezone change without end time
* test: remove DatePicker component tests
* feat: implement DatePicker component with tests and update button data-testid
* fix: shadow after email and before the primary label
* fix: autofill input shadow in impersonation view
* fix: improve spacing and layout in EditUserForm
* fix: error due to getRight
---------
Co-authored-by: Peer Richelsen <peeroke@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>
* init members page for platform
* add missing icon
* add members tab to sidebar
* use data from useMe query instead of useSession
* return user profiles since platform users are stored there
* small refactor
* fixup
* remove unused logs from console
* fixup
* resolve merge conflicts
* add missing tabs for members and billing
* update schema
* fixup
* memoise selection options for org and platform
* update onSubmit handler
* resolve merge conflicts
* add members tab
* improve team billing view when user not subscribed
* update members tab
* add function to find if user is admin of team
* update invite members handler to handle platform user as well
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* modules for platform plans and billing pages
* add platform billing and plans related pages
* update platform navigation to include billing tab
* custom hook to upgrade team subscription
* refactors
* export cta row component
* fixup
* only pass in subscription id instead of whole subscription
* refactor :teamId/subscribe endpoint logic, add endpoint for upgrading stripe and shift all webhooks logic into services
* refactor team subscription logic, add logic for upgrading stripe and webhooks logic from billing controller
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* added lockedSMS to future routes
* add orgMigrations routes to future
* correct metadata
* small fix
* add orgMigrations to future
* Move components to client components
* Remove tRPC element from edit user RSC
* Get username for meta
* Remove suspense query
* Remove orgMigrations from app router
* Type fix
* Revert "Remove suspense query"
This reverts commit eadd814f6e4a5d6856d9218342b7909c22fe62c6.
* Handle suspenseQuery in app router
* User edit page, fetch data server side
* Update yarn.lock
* Export getFixedT
* Set PageWrapper as root layout for settings
* Settings Layout accepts strings for shell heading
* Add OOO to app router settings
* Refactor layout for my-account pages
* Remove instances of pages router from my-account
* Refactor security pages
* Add billing to app router
* Add admin API link to layout
* Add api keys page
* Webhooks WIP
* Refactor SettingsHeader to client component
* Add webhook pages
* Refactor API keys page
* Add admin app page
* Type fix
* fix types
* fix developer/webhooks/[id] param value type error
* remove unnecessary code
* do not pass t prop to CreateNewWebhookButton
* fix type errors in webhook-edit-view
* fix the remaining type errors
* do not use prisma directly in generateMetadata
* remove use client if unnecessary
* Remove unused shell heading from SettingsLayoutAppDir
* improve metadata
* fix billing page
* fix import in settings/teams
* Use next `notFound()`
* fix type check
* fix type check
* remove unused code
* Fix calendar setting page
* Separate settings pages into route groups
* Refactor admin settings pages
* Remove meta instance from billing page route
* Update settings layoutAppDir
* Refactor developer settings pages
* Refactor out of office
* Refactor my account settings
* Refactor admin api page
* Refactor security pages
* Type fix
* fix styling in settings layout
---------
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* fix: dont check OrganizationSettings.orgAutoAcceptEmail uniqueness for platform teams
* feat: display organizationId in OAuthClientCard
* feat: ApiAuthStrategy handle oauth credentials
* refactor: clean up ApiAuthStrategy test
* refactor: use ApiAuthGuard in OauthClientsUsersController and OAuthFlowController
* fix: copying org id
* refactor: more specific error message when api auth
* refactor: auto accept team creator membership
* feat: useTeamEventType and useTeamEventTypes hooks
* refactor: make team event-types public & searchable by eventSlug
* feat: include host name in team event-types hosts response
* fix: isFixed=true by default for COLLECTIVE event hosts
* fix: useTeamEventType eventSlug access
* feat: BookerPlatformWrapper enable team events by exposting orgId and teamId props
* refactor: provide orgId in atoms context
* refactor: use orgId from context in team event-types hooks
* refactor: return teams in useMe
* chore: examples app teams setup
* Revert "refactor: return teams in useMe"
This reverts commit de992ddc9af6ee9a2111938069f5b9c34cc2d8ea.
* Revert "chore: examples app teams setup"
This reverts commit 0766aa21acc25efa2361d38c3f87ddba773a0245.
* feat: useTeams hook
* chore: setup examples app with team event-type
* fix: small fixes
* swagger
* Revert "refactor: provide orgId in atoms context"
This reverts commit f053a498ee6f8fa8ece5ec8d8630c59eda8873e3.
* feat: orgId in atoms context
* feat: PlatformBilling guard
* chore: delete test of the deleted oauth-client-credentials.guard
* refactor: org event-types collective events isFixed always true and priority medium
* refactor: org event-types COLLECTIVE response ignore isFixed and priority as they are same
* fix: organizations event-types e2e
* fix: billing guard
* refactor: tests cleanup
* fix: platform plan guard spec
* refactor: e2e test cleanup
* seed error if not team
* refactor: rename authenticateApiKey to authenticateBearerToken
* refactor: transforming response hosts
* refactor: rename findUniqueByMatchingAutoAcceptEmail to findUniqueNonPlatformOrgsByMatchingAutoAcceptEmail
* refactor: rename findUniqueByMatchingAutoAcceptEmail to findUniqueNonPlatformOrgsByMatchingAutoAcceptEmail
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>