* feat: Cal.diy — community-driven MIT-licensed fork of Cal.com This squashed commit contains all Cal.diy changes applied on top of calcom/cal.com main: - Rebrand Cal.com to Cal.diy across the entire codebase - Remove Enterprise Edition (EE) features, license checks, and AGPL restrictions - Switch license from AGPL-3.0 to MIT - Remove docs/ directory (migrated to Nextra at cal.diy) - Remove dead code: org tests, EE tips, platform nav, premium username, SAML/SSO, etc. - Clean up .env.example for self-hosted Cal.diy - Update Docker image references to calcom/cal.diy - Update README, CONTRIBUTING.md, and issue templates for Cal.diy community fork - Add PR welcome bot for Cal.diy contributors - Fix API v2 breaking changes oasdiff ignore entries - Replace Blacksmith CI runners with default GitHub Actions 3893 files changed, 20789 insertions(+), 411020 deletions(-) Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * refactor: remove org-specific /organizations/:orgId endpoints from API v2 atoms controllers (#1701) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix: revert Cal.diy Inc to Cal.com, Inc. in license files, copyright notices, and package metadata (#1702) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * rip out org related comments in api v2 --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1.8 KiB
1.8 KiB
- We use next-themes
- It provides useNextTheme hook which does the job of applying a theme for the app reliably. It persists the preference in localStorage and then ensures that the theme is reliably and instantly applied on next page load through its JS snippet.
- It also provides the support for system theme that allows theme to change automatically when user changes their system theme preference.
- Different Cal.diy circumstances
- Standalone/Direct Booking Pages
- Here user have the option to force a certain theme(light/dark) or choose system theme.
- StorageKey: booking-theme${appearanceIdSuffix}
- appearanceIdSuffix -> :${themeBasis} // themeBasis is usually the username of the organizer.
- Embeds
- There could be many embeds on the same origin(https://acme.cal.com) using different themes. e.g. for demo page someone wants to force light theme(as that page doesn't have dark mode) and for landing page someone wants to adapt to system theme as that page supports both modes.
- Remember that embed theme if provided will take precedence over bookingConfiguredTheme(i.e. theme configured in appearance for booking pages)
- StorageKey:
embed-theme-${embedNamespace}${appearanceIdSuffix}${embedExplicitlySetThemeSuffix}- (Same Namespace, Same Organizer but different themes would still work seamless and not cause theme flicker)
embedExplicitlySetThemeSuffix->:${embedTheme}//embedThemeis the theme explicitly configured for the embed)
- Non Booking Pages(which would be all dashboard pages)
- Here also, user has the option to force a certain theme(light/dark) or choose system theme.
- StorageKey: app-theme
- Standalone/Direct Booking Pages
Also, see inline comments in getThemeProviderProps.ts for more details.