Compare commits

..

2 Commits

5 changed files with 173 additions and 16 deletions

145
.gitignore vendored Normal file
View File

@ -0,0 +1,145 @@
# Dependencies
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
# Next.js build output
.next/
out/
# Production build files
build/
dist/
# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# Cache directories
.cache/
.parcel-cache/
.npm/
.eslintcache
.stylelintcache
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Editor directories and files
.vscode/
.idea/
*.swp
*.swo
*~
# Logs
logs
*.log
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Coverage directory used by tools like istanbul
coverage/
*.lcov
# nyc test coverage
.nyc_output
# Dependency directories
jspm_packages/
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# parcel-bundler cache (https://parceljs.org/)
.parcel-cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# TypeScript cache
*.tsbuildinfo
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env.test
# Turborepo
.turbo
# Vercel
.vercel
# Package lock files (choose one)
package-lock.json
# yarn.lock
# pnpm-lock.yaml
# Local Netlify folder
.netlify

View File

@ -83,7 +83,12 @@ function distribute(total: number, buckets: number): number[] {
function formatPretty(s: string): string {
try {
const d = fromYMD(s);
return d.toLocaleDateString(undefined, { weekday: "short", month: "short", day: "numeric" });
const weekdays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
const weekday = weekdays[d.getDay()];
const month = months[d.getMonth()];
const day = d.getDate();
return `${weekday}, ${month} ${day}`;
} catch {
return s;
}

2
next-env.d.ts vendored
View File

@ -2,4 +2,4 @@
/// <reference types="next/image-types/global" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.

View File

@ -9,23 +9,23 @@
"lint": "next lint"
},
"dependencies": {
"next": "14.2.3",
"react": "18.2.0",
"react-dom": "18.2.0",
"framer-motion": "^11.0.0",
"recharts": "^2.8.0",
"lucide-react": "^0.441.0",
"next": "^15.4.6",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"recharts": "^2.8.0",
"tailwind-merge": "^2.3.0"
},
"devDependencies": {
"@types/node": "^20.10.6",
"@types/react": "^19.1.9",
"@types/react-dom": "^19.1.7",
"autoprefixer": "^10.4.19",
"eslint": "^8.57.0",
"eslint-config-next": "^15.4.6",
"postcss": "^8.4.38",
"tailwindcss": "^3.4.7",
"typescript": "^5.4.0",
"@types/react": "^18.2.0",
"@types/node": "^20.10.6",
"@types/react-dom": "^18.2.0",
"eslint": "^8.57.0",
"eslint-config-next": "^14.2.3"
"typescript": "^5.4.0"
}
}
}

View File

@ -21,14 +21,21 @@
"@/*": [
"./*"
]
}
},
"incremental": true,
"plugins": [
{
"name": "next"
}
]
},
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx"
"**/*.tsx",
".next/types/**/*.ts"
],
"exclude": [
"node_modules"
]
}
}