Files
chitai/frontend
patrick d4bdb5ed42 feat: accept files and folders when uploading books
The picker could only choose folders: webkitdirectory switches the OS dialog
into folder mode rather than filtering, so one input cannot offer both. Adds
a drop zone with two browse buttons behind two inputs.

Dropping a folder never worked either — dataTransfer.files does not descend
into directories, so it arrived as one typeless entry and was rejected. Walks
dataTransfer.items instead.

Also collects skipped files into one expandable line rather than a toast each,
which a folder of covers and notes made unusable, and shows the file count and
total size before uploading.
2026-08-12 12:04:14 -04:00
..
2026-08-11 21:59:33 -04:00
2025-12-04 00:33:37 -05:00
2025-12-04 00:33:37 -05:00
2025-12-04 00:33:37 -05:00
2025-12-04 00:33:37 -05:00
2026-08-11 21:59:33 -04:00
2025-12-04 00:33:37 -05:00
2026-08-12 01:37:19 -04:00
2025-12-04 00:33:37 -05:00
2025-12-04 00:33:37 -05:00
2025-12-04 00:33:37 -05:00
2026-08-11 23:15:39 -04:00
2026-08-11 23:15:39 -04:00
2025-12-04 00:33:37 -05:00
2025-12-04 00:33:37 -05:00

sv

Everything you need to build a Svelte project, powered by sv.

Creating a project

If you're seeing this, you've probably already done this step. Congrats!

# create a new project in the current directory
npx sv create

# create a new project in my-app
npx sv create my-app

Developing

Once you've created a project and installed dependencies with npm install (or pnpm install or yarn), start a development server:

npm run dev

# or start the server and open the app in a new browser tab
npm run dev -- --open

Building

To create a production version of your app:

npm run build

You can preview the production build with npm run preview.

To deploy your app, you may need to install an adapter for your target environment.