* Website

Website, written in Typescript.

* Usage

** Setup

Install dependencies:

#+BEGIN_SRC sh
$ npm install
#+END_SRC

** Development Server

Start the development server on =http://localhost:3000=:

#+BEGIN_SRC sh
$ npm run dev
$ npm run dev -- -o  # automatically open in the browser
#+END_SRC

** Production

Build for production:

#+BEGIN_SRC sh
$ npm run build     # for server-side rendering or hybrid
$ npm run generate  # for static site generation
#+END_SRC

Locally preview production build:

#+BEGIN_SRC sh
$ npm run preview  # requires building first!
#+END_SRC

Reference: [[https://nuxt.com/docs/getting-started/deployment#client-side-only-rendering][nuxt/docs/deployment#client-side-only-rendering]]

* Libraries

- [[https://github.com/vuejs/core][Vue3]] JavaScript framework
- [[https://github.com/nuxt/nuxt][Nuxt]] Vue framework
- [[https://github.com/vuejs/pinia][Pinia]] State management
- [[https://github.com/twbs/bootstrap][Bootstrap5]] CSS library
- [[https://github.com/colinhacks/zod][Zod]] Schema validation
- [[https://github.com/microsoft/TypeScript][Typescript]] Static types in JavaScript
- [[https://github.com/eslint/eslint][ESLint]] Code analyses tool

* Todo

- [X] dark-mode
  - [X] persistence in localstorage
- [X] <h> tag scroll fix
  - [ ] pull request? https://github.com/nuxt-modules/mdc/tree/main/src/runtime/components/prose
- [X] table of contents: https://github.com/hanyujie2002/nuxt-toc/blob/main/src/runtime/components/TableOfContents.vue
  - [ ] for mobile via dropdown?
- [X] nuke: bootstrap-vue-next
- [X] update readme: bun -> npm, primevue -> bootstrap
- [X] better popup code copy button
- [ ] sitemap.xml
