Files
calendar/companion/package.json
T
Dhairyashil ShindeandGitHub 69a857ad98 feat(companion): Multi-browser extension support (Chrome, Firefox, Safari, Edge, Brave) and fix text node errors (#26063)
* feat(companion): add multi-browser OAuth support for extension

- Add browser-specific OAuth client ID and redirect URI configuration
- Support Chrome, Firefox, Safari, Edge, and Brave browsers
- Add build scripts for each browser target (ext:build-{browser})
- Fix Brave Shields compatibility for production builds
- Add EXTENSION_SETUP.md documentation

BREAKING CHANGE: None - backward compatible with existing Chrome config

* fix(companion): replace && conditional rendering with ternary operators

Replace all `{condition && (<Component />)}` patterns with explicit
`{condition ? (<Component />) : null}` syntax across the companion app.

This fixes "Unexpected text node: . A text node cannot be a child of
a <View>" errors that occur with react-native-css-interop when using
&& conditional rendering in React Native web builds.

Files updated:
- app/event-type-detail.tsx (16)
- app/booking-detail.tsx (10)
- app/(tabs)/bookings.tsx (8)
- app/(tabs)/availability.tsx (6)
- app/availability-detail.tsx (5)
- app/(tabs)/(event-types)/index.tsx (4)
- components/event-type-detail/tabs/LimitsTab.tsx (9)
- components/event-type-detail/tabs/BasicsTab.tsx (3)
- components/event-type-detail/tabs/AdvancedTab.tsx (3)
- components/event-type-detail/tabs/RecurringTab.tsx (1)
- components/event-type-detail/tabs/AvailabilityTab.tsx (1)
- components/event-type-list-item/EventTypeListItem.ios.tsx (3)
- components/BookingActionsModal.tsx (2)
- components/Tooltip.tsx (1)
- components/LocationsList.tsx (1)
- components/Header.tsx (1)
- components/EmptyScreen.tsx (1)

* correct command for edge

* dont break ci

* deslop ai
2025-12-19 23:50:20 +05:30

94 lines
4.1 KiB
JSON

{
"name": "cal-companion",
"displayName": "Cal.com Companion",
"version": "1.7.4",
"main": "index.js",
"scripts": {
"start": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"ext": "wxt",
"ext:build": "wxt build",
"ext:build-prod": "BUILD_FOR_STORE=true wxt build",
"ext:zip": "wxt zip",
"ext:zip-prod": "BUILD_FOR_STORE=true wxt zip",
"ext:build-chrome": "BROWSER_TARGET=chrome wxt build -b chrome",
"ext:build-chrome-prod": "BUILD_FOR_STORE=true BROWSER_TARGET=chrome wxt build -b chrome",
"ext:zip-chrome": "BROWSER_TARGET=chrome wxt zip -b chrome",
"ext:zip-chrome-prod": "BUILD_FOR_STORE=true BROWSER_TARGET=chrome wxt zip -b chrome",
"ext:build-firefox": "BROWSER_TARGET=firefox wxt build -b firefox",
"ext:build-firefox-prod": "BUILD_FOR_STORE=true BROWSER_TARGET=firefox wxt build -b firefox",
"ext:zip-firefox": "BROWSER_TARGET=firefox wxt zip -b firefox",
"ext:zip-firefox-prod": "BUILD_FOR_STORE=true BROWSER_TARGET=firefox wxt zip -b firefox",
"ext:build-safari": "BROWSER_TARGET=safari wxt build -b safari",
"ext:build-safari-prod": "BUILD_FOR_STORE=true BROWSER_TARGET=safari wxt build -b safari",
"ext:zip-safari": "BROWSER_TARGET=safari wxt zip -b safari",
"ext:zip-safari-prod": "BUILD_FOR_STORE=true BROWSER_TARGET=safari wxt zip -b safari",
"ext:build-edge": "BROWSER_TARGET=edge wxt build -b edge",
"ext:build-edge-prod": "BUILD_FOR_STORE=true BROWSER_TARGET=edge wxt build -b edge",
"ext:zip-edge": "BROWSER_TARGET=edge wxt zip -b edge",
"ext:zip-edge-prod": "BUILD_FOR_STORE=true BROWSER_TARGET=edge wxt zip -b edge",
"ext:build-all": "npm run ext:build && npm run ext:build-firefox && npm run ext:build-safari && npm run ext:build-edge",
"ext:build-all-prod": "npm run ext:build-prod && npm run ext:build-firefox-prod && npm run ext:build-safari-prod && npm run ext:build-edge-prod",
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,md}\"",
"format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,css,md}\"",
"prepare": "cd .. && husky companion/.husky"
},
"dependencies": {
"@expo/ui": "0.2.0-canary-20251216-3f01dbf",
"@expo/vector-icons": "^15.0.3",
"@react-native-async-storage/async-storage": "^2.1.0",
"@react-native-community/netinfo": "^11.4.1",
"@react-native-segmented-control/segmented-control": "^2.5.7",
"@tanstack/react-query": "^5.62.0",
"@tanstack/react-query-persist-client": "^5.62.0",
"base64-js": "^1.5.1",
"expo": "^55.0.0-canary-20251216-3f01dbf",
"expo-auth-session": "7.0.11-canary-20251216-3f01dbf",
"expo-clipboard": "8.0.9-canary-20251216-3f01dbf",
"expo-constants": "18.1.0-canary-20251216-3f01dbf",
"expo-crypto": "15.0.9-canary-20251216-3f01dbf",
"expo-dev-client": "6.1.0-canary-20251216-3f01dbf",
"expo-device": "8.0.11-canary-20251216-3f01dbf",
"expo-glass-effect": "0.2.0-canary-20251216-3f01dbf",
"expo-linking": "8.0.11-canary-20251216-3f01dbf",
"expo-router": "7.0.0-canary-20251216-3f01dbf",
"expo-secure-store": "15.0.9-canary-20251216-3f01dbf",
"expo-status-bar": "3.0.10-canary-20251216-3f01dbf",
"expo-web-browser": "15.0.11-canary-20251216-3f01dbf",
"nativewind": "^4.2.1",
"react": "19.2.0",
"react-dom": "19.2.0",
"react-native": "^0.83.0",
"react-native-context-menu-view": "^1.20.0",
"react-native-gesture-handler": "~2.28.0",
"react-native-reanimated": "~4.2.0",
"react-native-safe-area-context": "~5.6.0",
"react-native-screens": "^4.19.0",
"react-native-svg": "15.12.1",
"react-native-web": "^0.21.2",
"react-native-worklets": "0.7.1"
},
"private": true,
"devDependencies": {
"@types/chrome": "^0.1.31",
"glob": "10.3.10",
"@types/react": "19.2.3",
"@types/react-dom": "19.2.3",
"babel-preset-expo": "^54.0.7",
"husky": "^9.0.11",
"lint-staged": "^15.2.0",
"prettier": "^3.2.5",
"prettier-plugin-tailwindcss": "^0.5.11",
"tailwindcss": "^3.4.17",
"typescript": "^5.9.3",
"wxt": "^0.20.11"
},
"lint-staged": {
"**/*.{js,jsx,ts,tsx,json,css,md}": [
"prettier --write"
]
}
}