Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
233 commits
Select commit Hold shift + click to select a range
0ac9320
chore: upgrade SvelteKit and Vite+ to their latest stable releases
voltcrash Oct 2, 2026
381f85b
chore: ignore Vitest output
voltcrash Oct 2, 2026
10ba0a1
chore: use native library imports for shadcn components
voltcrash Oct 2, 2026
6ba6225
fix: include SvelteKit 3 types in data scripts
voltcrash Oct 2, 2026
dbabb63
refactor: use #lib imports in app.d
voltcrash Oct 2, 2026
c0b01fe
feat: declare optional private environment variables
voltcrash Oct 2, 2026
fbbb539
fix: use SvelteKit 3 environment and hook modules
voltcrash Oct 2, 2026
87251c4
refactor: use #lib imports in atlas atlas chart
voltcrash Oct 2, 2026
b4c5c37
refactor: use #lib imports in compare stat comparison
voltcrash Oct 2, 2026
b77bc7c
refactor: use #lib imports in daily guess input
voltcrash Oct 2, 2026
f5ed483
refactor: use #lib imports in dex dex table
voltcrash Oct 2, 2026
6c2e3c5
refactor: use #lib imports in dex dex tile
voltcrash Oct 2, 2026
b613a23
refactor: use #lib imports in dex dex wall
voltcrash Oct 2, 2026
c6c1b7a
refactor: use #lib imports in dex filter controls
voltcrash Oct 2, 2026
ed3909e
refactor: use #lib imports in dex search filters
voltcrash Oct 2, 2026
6d788fa
refactor: use #lib imports in dex search tips
voltcrash Oct 2, 2026
a1a6ffe
refactor: use #lib imports in dex type filter
voltcrash Oct 2, 2026
a6ad54b
refactor: use #lib imports in pokemon collection buttons
voltcrash Oct 2, 2026
f8be0b2
refactor: use #lib imports in pokemon counter list
voltcrash Oct 2, 2026
0b845bb
refactor: use #lib imports in pokemon cry button
voltcrash Oct 2, 2026
d37aa68
refactor: use #lib imports in pokemon damage class icon
voltcrash Oct 2, 2026
fd9a497
refactor: use #lib imports in pokemon evolution chain
voltcrash Oct 2, 2026
e671e83
refactor: use #lib imports in pokemon fitted name
voltcrash Oct 2, 2026
34bf544
refactor: use #lib imports in pokemon flavor text
voltcrash Oct 2, 2026
0183ca8
refactor: use #lib imports in pokemon form list
voltcrash Oct 2, 2026
8b8e986
refactor: use #lib imports in pokemon gender ratio
voltcrash Oct 2, 2026
0f4f589
refactor: use #lib imports in pokemon learnset table
voltcrash Oct 2, 2026
eaa40c4
refactor: use #lib imports in pokemon pokemon about
voltcrash Oct 2, 2026
52da3d3
refactor: use #lib imports in pokemon pokemon art
voltcrash Oct 2, 2026
b3a7c45
refactor: use #lib imports in pokemon pokemon hero
voltcrash Oct 2, 2026
3446338
refactor: use #lib imports in pokemon pokemon peek
voltcrash Oct 2, 2026
a6b978b
refactor: use #lib imports in pokemon pokemon picker
voltcrash Oct 2, 2026
595a388
refactor: use #lib imports in pokemon shape portrait
voltcrash Oct 2, 2026
a6b7638
refactor: use #lib imports in pokemon size comparison
voltcrash Oct 2, 2026
c2094df
refactor: use #lib imports in pokemon stat bars
voltcrash Oct 2, 2026
f43c434
refactor: use #lib imports in pokemon stat shape
voltcrash Oct 2, 2026
2bc29a2
refactor: use #lib imports in pokemon training breeding
voltcrash Oct 2, 2026
7e89ea4
refactor: use #lib imports in pokemon twin list
voltcrash Oct 2, 2026
1d3ae2b
refactor: use #lib imports in pokemon type badge
voltcrash Oct 2, 2026
84d95bd
refactor: use #lib imports in pokemon type matchups
voltcrash Oct 2, 2026
0b0b271
refactor: use #lib imports in site collection sync
voltcrash Oct 2, 2026
a1e4bbb
refactor: use #lib imports in site command palette
voltcrash Oct 2, 2026
4b99952
refactor: use #lib imports in site logo
voltcrash Oct 2, 2026
24e2e38
refactor: use #lib imports in site search trigger
voltcrash Oct 2, 2026
4edad3d
refactor: use #lib imports in site site header
voltcrash Oct 2, 2026
d11baaf
refactor: use #lib imports in site theme toggle
voltcrash Oct 2, 2026
182023e
fix: refresh session data after signing out
voltcrash Oct 2, 2026
43d6390
refactor: use #lib imports in team defense table
voltcrash Oct 2, 2026
9c59cbf
refactor: use #lib imports in team saved teams
voltcrash Oct 2, 2026
a0e0e83
refactor: use #lib imports in team suggested teammates
voltcrash Oct 2, 2026
206f7df
refactor: use #lib imports in team team slot
voltcrash Oct 2, 2026
5437d47
refactor: use #lib imports in types type chart
voltcrash Oct 2, 2026
34014e1
refactor: use #lib imports in ui alert dialog action
voltcrash Oct 2, 2026
fc6f2cf
refactor: use #lib imports in ui alert dialog cancel
voltcrash Oct 2, 2026
82fb7d9
refactor: use #lib imports in ui alert dialog content
voltcrash Oct 2, 2026
0398d35
refactor: use #lib imports in ui alert dialog description
voltcrash Oct 2, 2026
1d02826
refactor: use #lib imports in ui alert dialog footer
voltcrash Oct 2, 2026
f08cbba
refactor: use #lib imports in ui alert dialog header
voltcrash Oct 2, 2026
ffa2b93
refactor: use #lib imports in ui alert dialog media
voltcrash Oct 2, 2026
b2a3e6e
refactor: use #lib imports in ui alert dialog overlay
voltcrash Oct 2, 2026
eb990a4
refactor: use #lib imports in ui alert dialog title
voltcrash Oct 2, 2026
b2d94df
refactor: use #lib imports in ui avatar badge
voltcrash Oct 2, 2026
f42fd74
refactor: use #lib imports in ui avatar fallback
voltcrash Oct 2, 2026
2ae9c66
refactor: use #lib imports in ui avatar group count
voltcrash Oct 2, 2026
001c4c5
refactor: use #lib imports in ui avatar group
voltcrash Oct 2, 2026
004823d
refactor: use #lib imports in ui avatar image
voltcrash Oct 2, 2026
e835d92
refactor: use #lib imports in ui avatar
voltcrash Oct 2, 2026
5c6c9fe
refactor: use #lib imports in ui badge
voltcrash Oct 2, 2026
63d0453
refactor: use #lib imports in ui button
voltcrash Oct 2, 2026
2a65240
refactor: use #lib imports in ui variants
voltcrash Oct 2, 2026
27217aa
refactor: use #lib imports in ui command dialog
voltcrash Oct 2, 2026
c71e31c
refactor: use #lib imports in ui command empty
voltcrash Oct 2, 2026
8d4506a
refactor: use #lib imports in ui command group
voltcrash Oct 2, 2026
e7273c7
refactor: use #lib imports in ui command input
voltcrash Oct 2, 2026
02eef16
refactor: use #lib imports in ui command item
voltcrash Oct 2, 2026
f0e73c3
refactor: use #lib imports in ui command link item
voltcrash Oct 2, 2026
f75f5ae
refactor: use #lib imports in ui command list
voltcrash Oct 2, 2026
33a1539
refactor: use #lib imports in ui command separator
voltcrash Oct 2, 2026
fff1a49
refactor: use #lib imports in ui command shortcut
voltcrash Oct 2, 2026
ef610b0
refactor: use #lib imports in ui command
voltcrash Oct 2, 2026
f5deedf
refactor: use #lib imports in ui dialog content
voltcrash Oct 2, 2026
67d7c06
refactor: use #lib imports in ui dialog description
voltcrash Oct 2, 2026
b860bc8
refactor: use #lib imports in ui dialog footer
voltcrash Oct 2, 2026
ff745f9
refactor: use #lib imports in ui dialog header
voltcrash Oct 2, 2026
0c754ef
refactor: use #lib imports in ui dialog overlay
voltcrash Oct 2, 2026
6e2781e
refactor: use #lib imports in ui dialog title
voltcrash Oct 2, 2026
70baa04
refactor: use #lib imports in ui dropdown menu checkbox item
voltcrash Oct 2, 2026
140a5ed
refactor: use #lib imports in ui dropdown menu content
voltcrash Oct 2, 2026
f6c3b9a
refactor: use #lib imports in ui dropdown menu group heading
voltcrash Oct 2, 2026
3d2706c
refactor: use #lib imports in ui dropdown menu item
voltcrash Oct 2, 2026
25fd3a2
refactor: use #lib imports in ui dropdown menu label
voltcrash Oct 2, 2026
21369f9
refactor: use #lib imports in ui dropdown menu radio item
voltcrash Oct 2, 2026
0bd81d8
refactor: use #lib imports in ui dropdown menu separator
voltcrash Oct 2, 2026
91c6fcd
refactor: use #lib imports in ui dropdown menu shortcut
voltcrash Oct 2, 2026
13ca7dd
refactor: use #lib imports in ui dropdown menu sub content
voltcrash Oct 2, 2026
dde241a
refactor: use #lib imports in ui dropdown menu sub trigger
voltcrash Oct 2, 2026
d9a1e8b
refactor: use #lib imports in ui empty content
voltcrash Oct 2, 2026
e007cc4
refactor: use #lib imports in ui empty description
voltcrash Oct 2, 2026
4832092
refactor: use #lib imports in ui empty header
voltcrash Oct 2, 2026
7b9a83c
refactor: use #lib imports in ui empty media
voltcrash Oct 2, 2026
eb9587e
refactor: use #lib imports in ui empty title
voltcrash Oct 2, 2026
a5ada0d
refactor: use #lib imports in ui empty
voltcrash Oct 2, 2026
4f44394
refactor: use #lib imports in ui field content
voltcrash Oct 2, 2026
f936979
refactor: use #lib imports in ui field description
voltcrash Oct 2, 2026
1de39db
refactor: use #lib imports in ui field error
voltcrash Oct 2, 2026
f345387
refactor: use #lib imports in ui field group
voltcrash Oct 2, 2026
17bd55d
refactor: use #lib imports in ui field label
voltcrash Oct 2, 2026
bb144d0
refactor: use #lib imports in ui field legend
voltcrash Oct 2, 2026
e6e0970
refactor: use #lib imports in ui field separator
voltcrash Oct 2, 2026
95c55df
refactor: use #lib imports in ui field set
voltcrash Oct 2, 2026
997cd30
refactor: use #lib imports in ui field title
voltcrash Oct 2, 2026
6b726bf
refactor: use #lib imports in ui field
voltcrash Oct 2, 2026
087c1a2
refactor: use #lib imports in ui input group addon
voltcrash Oct 2, 2026
4524312
refactor: use #lib imports in ui input group button
voltcrash Oct 2, 2026
12109df
refactor: use #lib imports in ui input group input
voltcrash Oct 2, 2026
803405c
refactor: use #lib imports in ui input group text
voltcrash Oct 2, 2026
e821d2f
refactor: use #lib imports in ui input group textarea
voltcrash Oct 2, 2026
1a7b32e
refactor: use #lib imports in ui input group
voltcrash Oct 2, 2026
4810034
refactor: use #lib imports in ui input
voltcrash Oct 2, 2026
f4a7311
refactor: use #lib imports in ui kbd group
voltcrash Oct 2, 2026
01d917c
refactor: use #lib imports in ui kbd
voltcrash Oct 2, 2026
898ecf2
refactor: use #lib imports in ui label
voltcrash Oct 2, 2026
4d44b4a
refactor: use #lib imports in ui popover content
voltcrash Oct 2, 2026
29d8d46
refactor: use #lib imports in ui popover description
voltcrash Oct 2, 2026
3f00067
refactor: use #lib imports in ui popover header
voltcrash Oct 2, 2026
864eaab
refactor: use #lib imports in ui popover title
voltcrash Oct 2, 2026
2f3a5e9
refactor: use #lib imports in ui popover trigger
voltcrash Oct 2, 2026
ef86363
refactor: use #lib imports in ui progress
voltcrash Oct 2, 2026
36943a9
refactor: use #lib imports in ui scroll area scrollbar
voltcrash Oct 2, 2026
05f8812
refactor: use #lib imports in ui scroll area
voltcrash Oct 2, 2026
2bff50c
refactor: use #lib imports in ui select content
voltcrash Oct 2, 2026
14c7280
refactor: use #lib imports in ui select group heading
voltcrash Oct 2, 2026
63a14fe
refactor: use #lib imports in ui select group
voltcrash Oct 2, 2026
20666b4
refactor: use #lib imports in ui select item
voltcrash Oct 2, 2026
e15c961
refactor: use #lib imports in ui select label
voltcrash Oct 2, 2026
add2ad5
refactor: use #lib imports in ui select scroll down button
voltcrash Oct 2, 2026
07e8b93
refactor: use #lib imports in ui select scroll up button
voltcrash Oct 2, 2026
a35e166
refactor: use #lib imports in ui select separator
voltcrash Oct 2, 2026
000ddf4
refactor: use #lib imports in ui select trigger
voltcrash Oct 2, 2026
02cd997
refactor: use #lib imports in ui separator
voltcrash Oct 2, 2026
4a7894a
refactor: use #lib imports in ui sheet content
voltcrash Oct 2, 2026
e2d2b5b
refactor: use #lib imports in ui sheet description
voltcrash Oct 2, 2026
9527f93
refactor: use #lib imports in ui sheet footer
voltcrash Oct 2, 2026
ca70032
refactor: use #lib imports in ui sheet header
voltcrash Oct 2, 2026
dbadc15
refactor: use #lib imports in ui sheet overlay
voltcrash Oct 2, 2026
d4a535b
refactor: use #lib imports in ui sheet title
voltcrash Oct 2, 2026
03d9a70
refactor: use #lib imports in ui skeleton
voltcrash Oct 2, 2026
2715e4e
refactor: use #lib imports in ui slider
voltcrash Oct 2, 2026
3e2c45e
refactor: use #lib imports in ui spinner
voltcrash Oct 2, 2026
95b29e6
refactor: use #lib imports in ui switch
voltcrash Oct 2, 2026
504340a
refactor: use #lib imports in ui table body
voltcrash Oct 2, 2026
56cd30b
refactor: use #lib imports in ui table caption
voltcrash Oct 2, 2026
5776c61
refactor: use #lib imports in ui table cell
voltcrash Oct 2, 2026
887b8dc
refactor: use #lib imports in ui table footer
voltcrash Oct 2, 2026
0963eb3
refactor: use #lib imports in ui table head
voltcrash Oct 2, 2026
8dfd187
refactor: use #lib imports in ui table header
voltcrash Oct 2, 2026
26c0615
refactor: use #lib imports in ui table row
voltcrash Oct 2, 2026
3bccc4d
refactor: use #lib imports in ui table
voltcrash Oct 2, 2026
00f22ac
refactor: use #lib imports in ui tabs content
voltcrash Oct 2, 2026
c4016ff
refactor: use #lib imports in ui tabs list
voltcrash Oct 2, 2026
c9a1151
refactor: use #lib imports in ui tabs trigger
voltcrash Oct 2, 2026
b60dc3e
refactor: use #lib imports in ui tabs
voltcrash Oct 2, 2026
7427596
refactor: use #lib imports in ui textarea
voltcrash Oct 2, 2026
2092ea4
refactor: use #lib imports in ui toggle group item
voltcrash Oct 2, 2026
20ea6cc
refactor: use #lib imports in ui toggle group
voltcrash Oct 2, 2026
3003ebb
refactor: use #lib imports in ui toggle
voltcrash Oct 2, 2026
ae7dca7
refactor: use #lib imports in ui tooltip content
voltcrash Oct 2, 2026
32c8789
refactor: use #lib imports in daily game tests
voltcrash Oct 2, 2026
20723ec
refactor: use #lib imports in daily game
voltcrash Oct 2, 2026
fc481a4
refactor: use #lib imports in data transform tests
voltcrash Oct 2, 2026
a58e1b0
refactor: use #lib imports in data transform
voltcrash Oct 2, 2026
f61edce
refactor: use #lib imports in data types
voltcrash Oct 2, 2026
2ad6d6c
refactor: use #lib imports in dex atlas
voltcrash Oct 2, 2026
7b0503a
refactor: use #lib imports in dex filters
voltcrash Oct 2, 2026
189426c
refactor: use #lib imports in dex list
voltcrash Oct 2, 2026
1ba37de
refactor: use #lib imports in dex wall
voltcrash Oct 2, 2026
d1bda3c
test: cover readonly move filters with invalid values
voltcrash Oct 2, 2026
22fc490
fix: accept readonly move search parameters
voltcrash Oct 2, 2026
143ab7c
refactor: use #lib imports in pokemon detail
voltcrash Oct 2, 2026
332a0e5
refactor: use #lib imports in pokemon evolution tree
voltcrash Oct 2, 2026
33e415c
refactor: use #lib imports in pokemon evolution tests
voltcrash Oct 2, 2026
989129e
refactor: use #lib imports in pokemon evolution
voltcrash Oct 2, 2026
a7f8acf
refactor: use #lib imports in pokemon format
voltcrash Oct 2, 2026
332fe9c
refactor: use #lib imports in pokemon insights
voltcrash Oct 2, 2026
7766a16
refactor: use #lib imports in pokemon learnset tests
voltcrash Oct 2, 2026
b02e49d
refactor: use #lib imports in pokemon learnset
voltcrash Oct 2, 2026
b9304cb
refactor: use #lib imports in pokemon role
voltcrash Oct 2, 2026
5b1ef29
refactor: use #lib imports in quiz game
voltcrash Oct 2, 2026
89ecfd4
fix: read auth credentials from SvelteKit 3 environment variables
voltcrash Oct 2, 2026
134b2b9
refactor: use #lib imports in server collection
voltcrash Oct 2, 2026
f6a045e
fix: read the database URL from SvelteKit 3 environment variables
voltcrash Oct 2, 2026
c992bc6
refactor: use #lib imports in server dex
voltcrash Oct 2, 2026
b7f717d
refactor: use #lib imports in server moves
voltcrash Oct 2, 2026
82aeb16
refactor: use #lib imports in server pokemon
voltcrash Oct 2, 2026
99a5291
refactor: use #lib imports in server teams
voltcrash Oct 2, 2026
e3e874b
refactor: use #lib imports in team analysis
voltcrash Oct 2, 2026
74ac042
refactor: use #lib imports in routes error
voltcrash Oct 2, 2026
1dbf688
refactor: use #lib imports in routes layout server
voltcrash Oct 2, 2026
291fe30
refactor: use #lib imports in routes layout
voltcrash Oct 2, 2026
b9a0df9
refactor: use #lib imports in routes page server
voltcrash Oct 2, 2026
c40803b
fix: migrate Pokedex filters to shallow navigation
voltcrash Oct 2, 2026
6a5d1c4
refactor: use #lib imports in routes abilities page server
voltcrash Oct 2, 2026
f58381f
fix: migrate ability search to shallow navigation
voltcrash Oct 2, 2026
199f001
refactor: use #lib imports in routes abilities detail page server
voltcrash Oct 2, 2026
07c35bf
refactor: use #lib imports in routes abilities detail page
voltcrash Oct 2, 2026
146a0e3
refactor: use native JSON responses for collection
voltcrash Oct 2, 2026
df40960
refactor: use native JSON responses for collection items
voltcrash Oct 2, 2026
fa247f8
refactor: use native JSON responses for dex data
voltcrash Oct 2, 2026
47414a0
refactor: use native JSON responses for pokemon details moves
voltcrash Oct 2, 2026
17367de
refactor: use native JSON responses for teams
voltcrash Oct 2, 2026
c7df98d
refactor: use native JSON responses for teams items
voltcrash Oct 2, 2026
58004b0
refactor: use #lib imports in routes atlas page server
voltcrash Oct 2, 2026
c67ba0a
fix: migrate Atlas controls to shallow navigation
voltcrash Oct 2, 2026
d0efb6c
refactor: use #lib imports in routes collection page server
voltcrash Oct 2, 2026
f0c773c
refactor: use #lib imports in routes collection page
voltcrash Oct 2, 2026
f35b270
refactor: use #lib imports in routes compare page server
voltcrash Oct 2, 2026
6ac0933
fix: preserve focus and scroll with SvelteKit 3 navigation
voltcrash Oct 2, 2026
facd58c
refactor: use #lib imports in routes daily page
voltcrash Oct 2, 2026
440f3f4
refactor: use #lib imports in routes login page server
voltcrash Oct 2, 2026
1600d11
fix: refresh login data with SvelteKit 3 navigation
voltcrash Oct 2, 2026
4ce7bab
refactor: use #lib imports in routes moves page server
voltcrash Oct 2, 2026
86226f2
fix: migrate move filters to shallow navigation
voltcrash Oct 2, 2026
e2b769e
refactor: use #lib imports in routes moves detail page server
voltcrash Oct 2, 2026
588bded
refactor: use #lib imports in routes moves detail page
voltcrash Oct 2, 2026
1b783d1
refactor: use #lib imports in routes pokemon detail page server
voltcrash Oct 2, 2026
9b7624d
refactor: use #lib imports in routes pokemon detail page
voltcrash Oct 2, 2026
9da21f0
refactor: use #lib imports in routes quiz page
voltcrash Oct 2, 2026
5c7e803
refactor: use #lib imports in routes sitemap.xml server
voltcrash Oct 2, 2026
f5ecd42
refactor: use #lib imports in routes team page server
voltcrash Oct 2, 2026
3a6df8e
fix: migrate team links to shallow navigation
voltcrash Oct 2, 2026
532fd2b
fix: migrate type filters to shallow navigation
voltcrash Oct 2, 2026
5555325
chore: extend the SvelteKit 3 TypeScript configuration
voltcrash Oct 2, 2026
f7c086f
docs: describe SvelteKit 3 runtime and environment setup
voltcrash Oct 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,4 @@ vite.config.ts.timestamp-*

# PokéAPI response cache for scripts/sync-pokedex.ts
/.cache
.vitest/
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

The last Pokédex you will ever need.

Built with SvelteKit, Tailwind CSS, shadcn-svelte, and data from [PokéAPI](https://pokeapi.co). Deployed on Vercel.
Built with SvelteKit 3, Tailwind CSS, shadcn-svelte, and data from [PokéAPI](https://pokeapi.co). Deployed on Vercel.

## Getting started

This project uses [Vite+](https://viteplus.dev) (`vp`) with bun as the package manager.
Node.js 22.17 or newer is required; CI and Vercel use Node.js 24.

```sh
vp install
Expand All @@ -16,6 +17,7 @@ vp dev
## Database

Accounts, collections and saved teams are stored in [Neon](https://neon.tech) Postgres through Drizzle ORM. Everything else works without a database.
Server environment variables are declared in `src/env.ts` and read at runtime through `$app/env/private`. They remain optional so the public Pokédex can run without account credentials.

1. Create a Neon project and copy its pooled connection string.
2. `cp .env.example .env` and set `DATABASE_URL`.
Expand Down
300 changes: 151 additions & 149 deletions bun.lock

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions components.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
"baseColor": "slate"
},
"aliases": {
"components": "$lib/components",
"utils": "$lib/utils",
"ui": "$lib/components/ui",
"hooks": "$lib/hooks",
"lib": "$lib"
"components": "#lib/components",
"utils": "#lib/utils",
"ui": "#lib/components/ui",
"hooks": "#lib/hooks",
"lib": "#lib"
},
"typescript": true,
"registry": "https://shadcn-svelte.com/registry"
Expand Down
20 changes: 12 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
"version": "0.0.1",
"private": true,
"type": "module",
"imports": {
"#lib": "./src/lib/index.js",
"#lib/*": "./src/lib/*"
},
"scripts": {
"dev": "vp dev",
"build": "vp build",
Expand All @@ -26,28 +30,28 @@
"@fontsource-variable/archivo": "^5.3.0",
"@internationalized/date": "^3.12.4",
"@lucide/svelte": "^1.48.0",
"@sveltejs/adapter-vercel": "^6.3.4",
"@sveltejs/kit": "^2.63.0",
"@sveltejs/vite-plugin-svelte": "^7.1.2",
"@sveltejs/adapter-vercel": "^7.0.0",
"@sveltejs/kit": "^3.0.0",
"@sveltejs/vite-plugin-svelte": "^7.3.1",
"@tailwindcss/vite": "^4.3.3",
"@types/node": "^26.6.2",
"bits-ui": "^2.19.3",
"cn": "^0.4.0",
"drizzle-kit": "^0.31.11",
"mode-watcher": "^1.1.0",
"shadcn-svelte": "^1.7.0",
"svelte": "^5.56.1",
"svelte-check": "^4.6.0",
"svelte": "^5.57.1",
"svelte-check": "^4.7.6",
"svelte-sonner": "^1.2.1",
"tailwind-variants": "^3.3.1",
"tailwindcss": "^4.3.3",
"tw-animate-css": "^1.4.0",
"typescript": "^6.0.3",
"vite": "npm:@voidzero-dev/vite-plus-core@0.3.1",
"vite-plus": "0.3.1"
"vite": "npm:@voidzero-dev/vite-plus-core@1.0.0",
"vite-plus": "1.0.0"
},
"overrides": {
"vite": "npm:@voidzero-dev/vite-plus-core@0.3.1"
"vite": "npm:@voidzero-dev/vite-plus-core@1.0.0"
},
"devEngines": {
"packageManager": {
Expand Down
4 changes: 2 additions & 2 deletions scripts/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"types": ["node"]
"types": ["node", "$app/types"]
},
"include": ["./**/*.ts", "../src/lib/**/*.ts", "../.svelte-kit/ambient.d.ts"]
"include": ["./**/*.ts", "../src/lib/**/*.ts", "../src/app.d.ts"]
}
2 changes: 1 addition & 1 deletion src/app.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// See https://svelte.dev/docs/kit/types#app.d.ts
// for information about these interfaces
import type { Auth } from "$lib/server/auth.js";
import type { Auth } from "#lib/server/auth.js";

type SessionResult = NonNullable<Awaited<ReturnType<Auth["api"]["getSession"]>>>;

Expand Down
9 changes: 9 additions & 0 deletions src/env.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { defineEnvVars } from "@sveltejs/kit/env";

export const variables = defineEnvVars({
DATABASE_URL: { schema: (input) => input },
BETTER_AUTH_SECRET: { schema: (input) => input },
BETTER_AUTH_URL: { schema: (input) => input },
GITHUB_CLIENT_ID: { schema: (input) => input },
GITHUB_CLIENT_SECRET: { schema: (input) => input },
});
6 changes: 3 additions & 3 deletions src/hooks.server.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { Handle } from "@sveltejs/kit";
import type { Handle } from "@sveltejs/kit/hooks";
import { svelteKitHandler } from "better-auth/svelte-kit";
import { building } from "$app/environment";
import { getAuth, isAuthConfigured } from "$lib/server/auth.js";
import { building } from "$app/env";
import { getAuth, isAuthConfigured } from "#lib/server/auth.js";

export const handle: Handle = async ({ event, resolve }) => {
event.locals.user = null;
Expand Down
8 changes: 4 additions & 4 deletions src/lib/components/atlas/atlas-chart.svelte
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<script lang="ts">
import PokemonPeek from "$lib/components/pokemon/pokemon-peek.svelte";
import { AXIS_LABELS, axisValue, isLog, makeScale, type Axis } from "$lib/dex/atlas.js";
import type { DexListEntry } from "$lib/dex/list.js";
import { STAT_KEYS } from "$lib/pokemon/types.js";
import PokemonPeek from "#lib/components/pokemon/pokemon-peek.svelte";
import { AXIS_LABELS, axisValue, isLog, makeScale, type Axis } from "#lib/dex/atlas.js";
import type { DexListEntry } from "#lib/dex/list.js";
import { STAT_KEYS } from "#lib/pokemon/types.js";

let {
entries,
Expand Down
4 changes: 2 additions & 2 deletions src/lib/components/compare/stat-comparison.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
import { MAX_BASE_STAT } from "$lib/pokemon/stats.js";
import { STAT_KEYS, STAT_LABELS, type BaseStats } from "$lib/pokemon/types.js";
import { MAX_BASE_STAT } from "#lib/pokemon/stats.js";
import { STAT_KEYS, STAT_LABELS, type BaseStats } from "#lib/pokemon/types.js";

let { series }: { series: { name: string; stats: BaseStats; color: string }[] } = $props();

Expand Down
6 changes: 3 additions & 3 deletions src/lib/components/daily/guess-input.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script lang="ts">
import { Input } from "$lib/components/ui/input/index.js";
import { DEFAULT_QUERY, queryDex, type DexListEntry } from "$lib/dex/list.js";
import { cn } from "$lib/utils.js";
import { Input } from "#lib/components/ui/input/index.js";
import { DEFAULT_QUERY, queryDex, type DexListEntry } from "#lib/dex/list.js";
import { cn } from "#lib/utils.js";

let {
pool,
Expand Down
14 changes: 7 additions & 7 deletions src/lib/components/dex/dex-table.svelte
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<script lang="ts">
import ArrowDownIcon from "@lucide/svelte/icons/arrow-down";
import ArrowUpIcon from "@lucide/svelte/icons/arrow-up";
import PokemonArt from "$lib/components/pokemon/pokemon-art.svelte";
import StatShape from "$lib/components/pokemon/stat-shape.svelte";
import TypeBadge from "$lib/components/pokemon/type-badge.svelte";
import { statTotal, type DexListEntry, type DexQuery, type SortKey } from "$lib/dex/list.js";
import { dexNumber } from "$lib/pokemon/format.js";
import { STAT_KEYS, STAT_LABELS, type StatKey } from "$lib/pokemon/types.js";
import { cn } from "$lib/utils.js";
import PokemonArt from "#lib/components/pokemon/pokemon-art.svelte";
import StatShape from "#lib/components/pokemon/stat-shape.svelte";
import TypeBadge from "#lib/components/pokemon/type-badge.svelte";
import { statTotal, type DexListEntry, type DexQuery, type SortKey } from "#lib/dex/list.js";
import { dexNumber } from "#lib/pokemon/format.js";
import { STAT_KEYS, STAT_LABELS, type StatKey } from "#lib/pokemon/types.js";
import { cn } from "#lib/utils.js";

let {
entries,
Expand Down
10 changes: 5 additions & 5 deletions src/lib/components/dex/dex-tile.svelte
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<script lang="ts">
import PokemonArt from "$lib/components/pokemon/pokemon-art.svelte";
import StatShape from "$lib/components/pokemon/stat-shape.svelte";
import TypeBadge from "$lib/components/pokemon/type-badge.svelte";
import type { DexListEntry } from "$lib/dex/list.js";
import { dexNumber } from "$lib/pokemon/format.js";
import PokemonArt from "#lib/components/pokemon/pokemon-art.svelte";
import StatShape from "#lib/components/pokemon/stat-shape.svelte";
import TypeBadge from "#lib/components/pokemon/type-badge.svelte";
import type { DexListEntry } from "#lib/dex/list.js";
import { dexNumber } from "#lib/pokemon/format.js";

let {
entry,
Expand Down
14 changes: 7 additions & 7 deletions src/lib/components/dex/dex-wall.svelte
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<script lang="ts">
import { goto } from "$app/navigation";
import PokemonPeek from "$lib/components/pokemon/pokemon-peek.svelte";
import type { DexListEntry } from "$lib/dex/list.js";
import { heatBand, type WallColor } from "$lib/dex/wall.js";
import { dexNumber, titleCase } from "$lib/pokemon/format.js";
import { GENERATIONS } from "$lib/pokemon/generations.js";
import type { TypeName } from "$lib/pokemon/types.js";
import { cn } from "$lib/utils.js";
import PokemonPeek from "#lib/components/pokemon/pokemon-peek.svelte";
import type { DexListEntry } from "#lib/dex/list.js";
import { heatBand, type WallColor } from "#lib/dex/wall.js";
import { dexNumber, titleCase } from "#lib/pokemon/format.js";
import { GENERATIONS } from "#lib/pokemon/generations.js";
import type { TypeName } from "#lib/pokemon/types.js";
import { cn } from "#lib/utils.js";

let {
types,
Expand Down
18 changes: 9 additions & 9 deletions src/lib/components/dex/filter-controls.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
import ArrowDownWideNarrowIcon from "@lucide/svelte/icons/arrow-down-wide-narrow";
import ArrowUpNarrowWideIcon from "@lucide/svelte/icons/arrow-up-narrow-wide";
import SlidersHorizontalIcon from "@lucide/svelte/icons/sliders-horizontal";
import { Button } from "$lib/components/ui/button/index.js";
import { Label } from "$lib/components/ui/label/index.js";
import * as Popover from "$lib/components/ui/popover/index.js";
import * as Select from "$lib/components/ui/select/index.js";
import { Switch } from "$lib/components/ui/switch/index.js";
import * as ToggleGroup from "$lib/components/ui/toggle-group/index.js";
import { SORT_KEYS, TAGS, TAG_LABELS, type DexQuery, type SortKey, type Tag } from "$lib/dex/list.js";
import { GENERATIONS } from "$lib/pokemon/generations.js";
import { STAT_LABELS, type StatKey } from "$lib/pokemon/types.js";
import { Button } from "#lib/components/ui/button/index.js";
import { Label } from "#lib/components/ui/label/index.js";
import * as Popover from "#lib/components/ui/popover/index.js";
import * as Select from "#lib/components/ui/select/index.js";
import { Switch } from "#lib/components/ui/switch/index.js";
import * as ToggleGroup from "#lib/components/ui/toggle-group/index.js";
import { SORT_KEYS, TAGS, TAG_LABELS, type DexQuery, type SortKey, type Tag } from "#lib/dex/list.js";
import { GENERATIONS } from "#lib/pokemon/generations.js";
import { STAT_LABELS, type StatKey } from "#lib/pokemon/types.js";

let { query, onchange }: { query: DexQuery; onchange: (next: Partial<DexQuery>) => void } =
$props();
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/dex/search-filters.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
import XIcon from "@lucide/svelte/icons/x";
import { describeFilter, parseSearch, removeToken } from "$lib/dex/filters.js";
import { describeFilter, parseSearch, removeToken } from "#lib/dex/filters.js";

let { q, onchange }: { q: string; onchange: (q: string) => void } = $props();

Expand Down
6 changes: 3 additions & 3 deletions src/lib/components/dex/search-tips.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script lang="ts">
import { Button } from "$lib/components/ui/button/index.js";
import * as Popover from "$lib/components/ui/popover/index.js";
import { SEARCH_EXAMPLES } from "$lib/dex/filters.js";
import { Button } from "#lib/components/ui/button/index.js";
import * as Popover from "#lib/components/ui/popover/index.js";
import { SEARCH_EXAMPLES } from "#lib/dex/filters.js";

let { onpick }: { onpick: (query: string) => void } = $props();

Expand Down
6 changes: 3 additions & 3 deletions src/lib/components/dex/type-filter.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script lang="ts">
import { titleCase } from "$lib/pokemon/format.js";
import { TYPES, typeTextClass, type TypeName } from "$lib/pokemon/types.js";
import { cn } from "$lib/utils.js";
import { titleCase } from "#lib/pokemon/format.js";
import { TYPES, typeTextClass, type TypeName } from "#lib/pokemon/types.js";
import { cn } from "#lib/utils.js";

let { selected, onchange }: { selected: TypeName[]; onchange: (types: TypeName[]) => void } =
$props();
Expand Down
8 changes: 4 additions & 4 deletions src/lib/components/pokemon/collection-buttons.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
import HeartIcon from "@lucide/svelte/icons/heart";
import SparklesIcon from "@lucide/svelte/icons/sparkles";
import { page } from "$app/state";
import { collection } from "$lib/collection/store.svelte.js";
import type { CollectionFlag } from "$lib/collection/types.js";
import { Button } from "$lib/components/ui/button/index.js";
import { cn } from "$lib/utils.js";
import { collection } from "#lib/collection/store.svelte.js";
import type { CollectionFlag } from "#lib/collection/types.js";
import { Button } from "#lib/components/ui/button/index.js";
import { cn } from "#lib/utils.js";

let { pokemonId, name }: { pokemonId: number; name: string } = $props();

Expand Down
10 changes: 5 additions & 5 deletions src/lib/components/pokemon/counter-list.svelte
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<script lang="ts">
import type { DexListEntry } from "$lib/dex/list.js";
import { titleCase } from "$lib/pokemon/format.js";
import type { Counter } from "$lib/pokemon/insights.js";
import { formatMultiplier } from "$lib/pokemon/matchups.js";
import type { TypeName } from "$lib/pokemon/types.js";
import type { DexListEntry } from "#lib/dex/list.js";
import { titleCase } from "#lib/pokemon/format.js";
import type { Counter } from "#lib/pokemon/insights.js";
import { formatMultiplier } from "#lib/pokemon/matchups.js";
import type { TypeName } from "#lib/pokemon/types.js";
import PokemonArt from "./pokemon-art.svelte";
import TypeBadge from "./type-badge.svelte";

Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/pokemon/cry-button.svelte
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<script lang="ts">
import Volume2Icon from "@lucide/svelte/icons/volume-2";
import { toast } from "svelte-sonner";
import { Button } from "$lib/components/ui/button/index.js";
import { Button } from "#lib/components/ui/button/index.js";

let { url, name }: { url: string | null; name: string } = $props();

Expand Down
4 changes: 2 additions & 2 deletions src/lib/components/pokemon/damage-class-icon.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
import type { DamageClass } from "$lib/data/types.js";
import { cn } from "$lib/utils.js";
import type { DamageClass } from "#lib/data/types.js";
import { cn } from "#lib/utils.js";

let { value, class: className }: { value: DamageClass; class?: string } = $props();

Expand Down
6 changes: 3 additions & 3 deletions src/lib/components/pokemon/evolution-chain.svelte
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<script lang="ts">
import ArrowRightIcon from "@lucide/svelte/icons/arrow-right";
import type { EvolutionNode } from "$lib/pokemon/evolution-tree.js";
import { dexNumber } from "$lib/pokemon/format.js";
import { cn } from "$lib/utils.js";
import type { EvolutionNode } from "#lib/pokemon/evolution-tree.js";
import { dexNumber } from "#lib/pokemon/format.js";
import { cn } from "#lib/utils.js";
import PokemonArt from "./pokemon-art.svelte";
import TypeBadge from "./type-badge.svelte";

Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/pokemon/fitted-name.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts">
import { nameFit } from "$lib/pokemon/name-fit.js";
import { nameFit } from "#lib/pokemon/name-fit.js";

let { name }: { name: string } = $props();

Expand Down
4 changes: 2 additions & 2 deletions src/lib/components/pokemon/flavor-text.svelte
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<script lang="ts">
import ChevronLeftIcon from "@lucide/svelte/icons/chevron-left";
import ChevronRightIcon from "@lucide/svelte/icons/chevron-right";
import { Button } from "$lib/components/ui/button/index.js";
import type { FlavorEntry } from "$lib/pokemon/detail.js";
import { Button } from "#lib/components/ui/button/index.js";
import type { FlavorEntry } from "#lib/pokemon/detail.js";

let { entries }: { entries: FlavorEntry[] } = $props();

Expand Down
4 changes: 2 additions & 2 deletions src/lib/components/pokemon/form-list.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
import type { DexListEntry } from "$lib/dex/list.js";
import { cn } from "$lib/utils.js";
import type { DexListEntry } from "#lib/dex/list.js";
import { cn } from "#lib/utils.js";
import PokemonArt from "./pokemon-art.svelte";
import TypeBadge from "./type-badge.svelte";

Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/pokemon/gender-ratio.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts">
import { formatPercent, genderRatio } from "$lib/pokemon/format.js";
import { formatPercent, genderRatio } from "#lib/pokemon/format.js";

let { rate }: { rate: number } = $props();
const ratio = $derived(genderRatio(rate));
Expand Down
10 changes: 5 additions & 5 deletions src/lib/components/pokemon/learnset-table.svelte
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<script lang="ts">
import { toast } from "svelte-sonner";
import * as Select from "$lib/components/ui/select/index.js";
import { Spinner } from "$lib/components/ui/spinner/index.js";
import * as Tabs from "$lib/components/ui/tabs/index.js";
import * as Select from "#lib/components/ui/select/index.js";
import { Spinner } from "#lib/components/ui/spinner/index.js";
import * as Tabs from "#lib/components/ui/tabs/index.js";
import {
LEARN_METHOD_LABELS,
type LearnMethod,
type Learnset,
type LearnsetMove,
} from "$lib/pokemon/learnset.js";
import type { TypeName } from "$lib/pokemon/types.js";
} from "#lib/pokemon/learnset.js";
import type { TypeName } from "#lib/pokemon/types.js";
import DamageClassIcon from "./damage-class-icon.svelte";
import TypeBadge from "./type-badge.svelte";

Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/pokemon/pokemon-about.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts">
import type { PokemonDetail } from "$lib/pokemon/detail.js";
import type { PokemonDetail } from "#lib/pokemon/detail.js";
import FlavorText from "./flavor-text.svelte";
import GenderRatio from "./gender-ratio.svelte";
import SizeComparison from "./size-comparison.svelte";
Expand Down
Loading
Loading