{ "name": "twenty-front", "version": "0.2.1", "private": true, "type": "module", "scripts": { "start": "vite --host", "start:clean": "yarn start --force", "build": "tsc && vite build && yarn build:inject-runtime-env", "build:inject-runtime-env": "sh ./scripts/inject-runtime-env.sh", "tsc": "tsc --watch", "preview": "vite preview", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "lint:ci": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0 --config .eslintrc-ci.cjs", "fmt:fix": "prettier --cache --write \"src/**/*.ts\" \"src/**/*.tsx\"", "fmt": "prettier --check \"src/**/*.ts\" \"src/**/*.tsx\"", "test": "jest", "tsup": "tsup", "coverage": "jest --coverage", "storybook:modules:dev": "STORYBOOK_SCOPE=modules yarn storybook:dev", "storybook:dev": "storybook dev -p 6006 --no-open", "storybook:pages:dev": "STORYBOOK_SCOPE=pages yarn storybook:dev", "storybook:docs:dev": "STORYBOOK_SCOPE=ui-docs yarn storybook:dev", "storybook:build": "storybook build", "storybook:modules:build": "STORYBOOK_SCOPE=modules yarn storybook:build", "storybook:pages:build": "STORYBOOK_SCOPE=pages yarn storybook:build", "storybook:docs:build": "STORYBOOK_SCOPE=ui-docs yarn storybook:build", "storybook:test": "test-storybook", "storybook:test-slow": "test-storybook --maxWorkers=3", "storybook:coverage": "yarn storybook:test-slow --coverage && npx nyc report --reporter=lcov -t coverage/storybook --report-dir coverage/storybook --check-coverage", "storybook:modules:coverage": "STORYBOOK_SCOPE=modules yarn storybook:coverage", "storybook:pages:coverage": "STORYBOOK_SCOPE=pages yarn storybook:coverage", "graphql:data:generate": "dotenv cross-var graphql-codegen -- --config codegen.cjs", "graphql:metadata:generate": "dotenv cross-var graphql-codegen -- --config codegen-metadata.cjs", "chromatic": "dotenv cross-var npx chromatic --project-token=$CHROMATIC_PROJECT_TOKEN" }, "dependencies": { "@air/react-drag-to-select": "^5.0.8", "@apollo/client": "^3.7.17", "@blocknote/core": "^0.10.1", "@blocknote/react": "^0.10.1", "@chakra-ui/accordion": "^2.3.0", "@chakra-ui/system": "^2.6.0", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.5", "@floating-ui/react": "^0.24.3", "@hello-pangea/dnd": "^16.2.0", "@hookform/resolvers": "^3.1.1", "@sniptt/guards": "^0.2.0", "@swc/core": "^1.3.100", "@swc/jest": "^0.2.29", "@tabler/icons-react": "^2.30.0", "afterframe": "^1.0.2", "apollo-upload-client": "^17.0.0", "date-fns": "^2.30.0", "deep-equal": "^2.2.2", "esbuild-plugin-svgr": "^2.1.0", "framer-motion": "^10.12.17", "graphql": "^16.6.0", "hex-rgb": "^5.0.0", "immer": "^10.0.2", "js-cookie": "^3.0.5", "js-levenshtein": "^1.1.6", "libphonenumber-js": "^1.10.26", "lodash.camelcase": "^4.3.0", "lodash.debounce": "^4.0.8", "lodash.kebabcase": "^4.1.1", "lodash.snakecase": "^4.1.1", "luxon": "^3.3.0", "nx": "17.2.3", "react": "^18.2.0", "react-data-grid": "7.0.0-beta.13", "react-datepicker": "^4.11.0", "react-dom": "^18.2.0", "react-dropzone": "^14.2.3", "react-error-boundary": "^4.0.11", "react-helmet-async": "^1.3.0", "react-hook-form": "^7.45.1", "react-hotkeys-hook": "^4.4.0", "react-intersection-observer": "^9.5.2", "react-loading-skeleton": "^3.3.1", "react-phone-number-input": "^3.3.4", "react-responsive": "^9.0.2", "react-router-dom": "^6.4.4", "react-textarea-autosize": "^8.4.1", "react-tooltip": "^5.13.1", "recoil": "^0.7.7", "scroll-into-view": "^1.16.2", "ts-key-enum": "^2.0.12", "tsup": "^8.0.1", "type-fest": "^4.1.0", "uuid": "^9.0.0", "vite-tsconfig-paths": "^4.2.1", "xlsx-ugnis": "^0.19.3", "zod": "^3.22.2" }, "devDependencies": { "@graphql-codegen/cli": "^3.3.1", "@graphql-codegen/client-preset": "^4.1.0", "@graphql-codegen/typescript": "^3.0.4", "@graphql-codegen/typescript-operations": "^3.0.4", "@graphql-codegen/typescript-react-apollo": "^3.3.7", "@storybook/addon-actions": "^7.6.3", "@storybook/addon-coverage": "^1.0.0", "@storybook/addon-essentials": "^7.6.3", "@storybook/addon-interactions": "^7.6.3", "@storybook/addon-links": "^7.6.3", "@storybook/addon-onboarding": "^1.0.9", "@storybook/addon-themes": "^7.6.3", "@storybook/blocks": "^7.6.3", "@storybook/react": "^7.6.3", "@storybook/react-vite": "^7.6.3", "@storybook/test": "^7.6.3", "@storybook/test-runner": "^0.16.0", "@testing-library/jest-dom": "^6.1.5", "@testing-library/react": "^13.4.0", "@types/apollo-upload-client": "^17.0.2", "@types/deep-equal": "^1.0.1", "@types/jest": "^29.5.10", "@types/js-cookie": "^3.0.3", "@types/lodash.camelcase": "^4.3.7", "@types/lodash.debounce": "^4.0.7", "@types/lodash.kebabcase": "^4.1.7", "@types/lodash.snakecase": "^4.1.9", "@types/luxon": "^3.3.0", "@types/node": "^20.10.0", "@types/react": "^18.2.39", "@types/react-datepicker": "^4.11.2", "@types/react-dom": "^18.2.15", "@types/scroll-into-view": "^1.16.0", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^6.10.0", "@typescript-eslint/parser": "^6.10.0", "@vitejs/plugin-react-swc": "^3.5.0", "chromatic": "^6.18.0", "concurrently": "^8.0.1", "cross-var": "^1.1.0", "dotenv-cli": "^7.2.1", "eslint": "^8.53.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.4", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-storybook": "^0.6.15", "eslint-plugin-twenty": "file:../eslint-plugin-twenty/eslint-plugin-twenty.tgz", "eslint-plugin-unused-imports": "^3.0.0", "http-server": "^14.1.1", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "msw": "^2.0.11", "msw-storybook-addon": "2.0.0--canary.122.b3ed3b1.0", "prettier": "^3.1.0", "storybook": "^7.6.3", "storybook-addon-cookie": "^3.1.0", "storybook-addon-pseudo-states": "^2.1.2", "typescript": "^5.2.2", "vite": "^5.0.0", "vite-plugin-svgr": "^4.2.0" }, "engines": { "node": "^18.16.0", "npm": "please-use-yarn", "yarn": "^4.0.2" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "msw": { "workerDirectory": "public" } }