* react compiler * remove compilation mode 'all', it will use infer by default * feat(companion): add theme tokens, path aliases, and component improvements - Extend tailwind.config.js with Cal.com brand color tokens (cal.text, cal.bg, cal.border, cal.accent, cal.brand) - Create theme/colors.ts for JS usage where Tailwind classes can't be used - Configure path aliases in tsconfig.json (@/components, @/hooks, @/utils, etc.) - Add expo-image and expo-haptics dependencies - Enhance AppPressable with Reanimated animations (opacity + scale) and haptic feedback - Extract shared logic from BookingListItem into useBookingListItemData hook and BookingListItemParts - Extract shared logic from EventTypeListItem into useEventTypeListItemData hook and EventTypeListItemParts - Extract shared logic from AvailabilityListItem into AvailabilityListItemParts - Update all list item components to use new theme tokens instead of hardcoded hex values * fix react compiler non memo issue * feat(companion): migrate to path aliases and expo-image - Remove theme/colors.ts and theme/index.ts (defer dark mode to future PR) - Replace colors import with hardcoded hex values in components - Migrate all files to use path aliases (@/components/*, @/hooks/*, etc.) - Migrate SvgImage to use expo-image for better performance - Update tsconfig.json to remove @/theme/* alias * fix(companion): add path aliases to extension tsconfig Add baseUrl and paths configuration to tsconfig.extension.json to support path aliases in shared types used by the extension build.
112 lines
5.2 KiB
JSON
112 lines
5.2 KiB
JSON
{
|
|
"name": "cal-companion",
|
|
"displayName": "Cal.com Companion",
|
|
"version": "1.7.5",
|
|
"main": "index.js",
|
|
"scripts": {
|
|
"start": "expo start",
|
|
"android": "expo run:android",
|
|
"ios": "expo run:ios",
|
|
"web": "expo start --web",
|
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
"typecheck:extension": "tsc -p tsconfig.extension.json --noEmit",
|
|
"typecheck:all": "npm run typecheck && npm run typecheck:extension",
|
|
"export": "expo export",
|
|
"export:ios": "expo export --platform ios",
|
|
"export:android": "expo export --platform android",
|
|
"export:optimized": "EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH=1 EXPO_UNSTABLE_TREE_SHAKING=1 expo export",
|
|
"export:optimized:ios": "EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH=1 EXPO_UNSTABLE_TREE_SHAKING=1 expo export --platform ios",
|
|
"export:optimized:android": "EXPO_UNSTABLE_METRO_OPTIMIZE_GRAPH=1 EXPO_UNSTABLE_TREE_SHAKING=1 expo export --platform android",
|
|
"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",
|
|
"lint": "biome lint .",
|
|
"lint:react-compiler": "eslint .",
|
|
"lint:all": "bun run lint && bun run lint:react-compiler",
|
|
"format": "biome format --write .",
|
|
"format:check": "biome format .",
|
|
"check": "biome check --write .",
|
|
"check:ci": "biome ci .",
|
|
"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-haptics": "^15.0.8",
|
|
"expo-image": "^3.0.11",
|
|
"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": {
|
|
"@biomejs/biome": "2.3.10",
|
|
"@types/chrome": "^0.1.31",
|
|
"@types/react": "19.2.3",
|
|
"@types/react-dom": "19.2.3",
|
|
"babel-plugin-react-compiler": "^19.0.0-beta-af1b7da-20250417",
|
|
"babel-preset-expo": "^54.0.7",
|
|
"eslint": "9",
|
|
"eslint-plugin-react-compiler": "^19.0.0-beta-af1b7da-20250417",
|
|
"husky": "^9.0.11",
|
|
"lint-staged": "^15.2.0",
|
|
"tailwindcss": "^3.4.17",
|
|
"typescript": "^5.9.3",
|
|
"typescript-eslint": "^8.50.1",
|
|
"wxt": "^0.20.11"
|
|
},
|
|
"lint-staged": {
|
|
"**/*.{js,jsx,ts,tsx,json}": [
|
|
"biome check --write --error-on-warnings --no-errors-on-unmatched"
|
|
]
|
|
}
|
|
}
|