- Add multi-language support with i18next and react-i18next - Implement user-selectable date format preferences (5 formats) - Add time format preferences (12-hour/24-hour) - Implement RTL (right-to-left) support for Arabic, Hebrew, Persian, Urdu - Add first day of week preference - Create LocalizationContext for managing i18n settings - Add LocalizationSettings component to Settings page - Include sample translations: English, Spanish, Arabic - Configure 10 languages: en, es, fr, de, ar, he, zh, ja, pt, ru - Add translation management documentation and Crowdin config - Create date formatting utilities that respect user preferences - Add RTL CSS styles for proper layout mirroring - Update Settings and ThemeToggle components to use translations - Add comprehensive documentation (implementation guide, quick reference, translation guide) All user preferences are persisted to localStorage and apply throughout the app.
125 lines
4.8 KiB
JSON
125 lines
4.8 KiB
JSON
{
|
|
"name": "donetick",
|
|
"private": true,
|
|
"version": "1.2.0",
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=20.0.0",
|
|
"npm": ">=9.0.0"
|
|
},
|
|
"lint-staged": {
|
|
"*.{js,jsx,ts,tsx}": [
|
|
"eslint --fix",
|
|
"prettier --write"
|
|
]
|
|
},
|
|
"scripts": {
|
|
"start": "vite --host",
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"build-cf": "rm -rf package-lock.json && npm install && npm install --force @rollup/rollup-linux-x64-gnu@4.34.9 @swc/core-linux-x64-gnu && vite build",
|
|
"build-selfhosted": "rm -rf package-lock.json && npm install && npm install --force @rollup/rollup-linux-x64-gnu@4.34.9 @swc/core-linux-x64-gnu && vite build --mode selfhosted",
|
|
"build-win": "del package-lock.json && npm install && npm install --force @rollup/rollup-win32-x64-msvc @swc/core-win32-x64-msvc && vite build --mode selfhosted",
|
|
"lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
|
|
"preview": "vite preview",
|
|
"setup-m1": "rm -rf node_modules package-lock.json && npm install && npm install --force @rollup/rollup-darwin-arm64 @swc/core-darwin-arm64",
|
|
"setup-apple-silicon": "npm install --no-optional && npm install --force @rollup/rollup-darwin-arm64 @swc/core-darwin-arm64",
|
|
"test-cloudflare-build": "rm -rf node_modules package-lock.json && npm install && npm install --force @rollup/rollup-linux-x64-gnu@4.34.9 @swc/core-linux-x64-gnu && vite build",
|
|
"release": "npm version patch && npm run build && git push origin develop --tags",
|
|
"merge": "git checkout main && git merge develop && git push origin main && git checkout develop",
|
|
"ionic:build": "npm run build",
|
|
"ionic:serve": "npm run start",
|
|
"android": "npm run build && npx cap sync android",
|
|
"bump": "node bump-version.js",
|
|
"bump:minor": "node bump-version.js minor",
|
|
"bump:major": "node bump-version.js major"
|
|
},
|
|
"dependencies": {
|
|
"@capacitor-community/sqlite": "^7.0.0",
|
|
"@capacitor/android": "^7.0.0",
|
|
"@capacitor/app": "^7.0.0",
|
|
"@capacitor/browser": "^7.0.2",
|
|
"@capacitor/core": "^7.0.0",
|
|
"@capacitor/device": "^7.0.0",
|
|
"@capacitor/ios": "^7.0.0",
|
|
"@capacitor/local-notifications": "^7.0.0",
|
|
"@capacitor/network": "^7.0.1",
|
|
"@capacitor/preferences": "^7.0.0",
|
|
"@capacitor/push-notifications": "^7.0.0",
|
|
"@capacitor/status-bar": "^7.0.0",
|
|
"@capgo/capacitor-social-login": "^7.5.3",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@emotion/react": "^11.11.3",
|
|
"@emotion/styled": "^11.11.0",
|
|
"@hello-pangea/dnd": "^18.0.1",
|
|
"@meauxt/react-swipeable-list": "^1.0.0",
|
|
"@mui/icons-material": "^5.16.13",
|
|
"@mui/joy": "^5.0.0-beta.20",
|
|
"@mui/material": "^5.15.2",
|
|
"@openreplay/tracker": "^14.0.4",
|
|
"@revenuecat/purchases-capacitor": "^11.1.0",
|
|
"@revenuecat/purchases-capacitor-ui": "^11.1.0",
|
|
"@swc/core": "^1.12.5",
|
|
"@tanstack/react-query": "^5.17.0",
|
|
"aos": "^2.3.4",
|
|
"browser-image-compression": "^2.0.2",
|
|
"caniuse-lite": "^1.0.30001769",
|
|
"capacitor-plugin-safe-area": "^4.0.0",
|
|
"chrono-node": "^2.7.7",
|
|
"dotenv": "^16.4.5",
|
|
"esm": "^3.2.25",
|
|
"event-source-polyfill": "^1.0.31",
|
|
"fuse.js": "^7.0.0",
|
|
"i18next": "^25.8.14",
|
|
"i18next-browser-languagedetector": "^8.2.1",
|
|
"i18next-http-backend": "^3.0.2",
|
|
"js-cookie": "^3.0.5",
|
|
"moment": "^2.30.1",
|
|
"murmurhash": "^2.0.1",
|
|
"prop-types": "^15.8.1",
|
|
"qrcode": "^1.5.4",
|
|
"quill": "^2.0.3",
|
|
"quilljs-markdown": "^1.2.0",
|
|
"react": "^18.2.0",
|
|
"react-calendar": "^5.1.0",
|
|
"react-dom": "^18.2.0",
|
|
"react-easy-crop": "^5.4.2",
|
|
"react-i18next": "^16.5.6",
|
|
"react-router-dom": "^6.21.1",
|
|
"react-transition-group": "^4.4.5",
|
|
"reactjs-social-login": "^2.6.3",
|
|
"recharts": "^2.15.0",
|
|
"reusify": "^1.0.4",
|
|
"vite-plugin-pwa": "^0.20.0"
|
|
},
|
|
"devDependencies": {
|
|
"@capacitor/assets": "^3.0.5",
|
|
"@capacitor/cli": "^7.0.0",
|
|
"@tanstack/eslint-plugin-query": "^5.14.6",
|
|
"@types/react": "^18.2.43",
|
|
"@types/react-dom": "^18.2.17",
|
|
"@vite-pwa/assets-generator": "^0.2.4",
|
|
"@vitejs/plugin-react-swc": "^3.5.0",
|
|
"autoprefixer": "^10.4.16",
|
|
"baseline-browser-mapping": "^2.9.19",
|
|
"eslint": "^8.56.0",
|
|
"eslint-config-prettier": "^9.1.0",
|
|
"eslint-plugin-prettier": "^5.1.2",
|
|
"eslint-plugin-react": "^7.33.2",
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
"eslint-plugin-react-refresh": "^0.4.5",
|
|
"eslint-plugin-simple-import-sort": "^10.0.0",
|
|
"eslint-plugin-sort-destructure-keys": "^1.5.0",
|
|
"eslint-plugin-sort-keys-fix": "^1.1.2",
|
|
"eslint-plugin-tailwindcss": "^3.13.1",
|
|
"husky": "^8.0.3",
|
|
"postcss": "^8.4.32",
|
|
"prettier": "^3.1.1",
|
|
"prettier-plugin-tailwindcss": "^0.5.10",
|
|
"tailwindcss": "^3.4.0",
|
|
"vite": "^5.2.13"
|
|
}
|
|
}
|