From 2af6b7ebe7d1775324495094e8e015f7f3b278d0 Mon Sep 17 00:00:00 2001
From: Your Name
Date: Sat, 14 Feb 2026 11:53:55 +0200
Subject: [PATCH] Add polished UX: tabs, kinetic scroll, animations, search,
typography
- Tabbed interface with duplicate detection, overflow scroll arrows,
mouse wheel support, and animated enter/exit transitions
- Kinetic scrolling on right-mouse drag with iOS-style rubber band
overscroll and damped spring snapback (content area and sidebar)
- Framer Motion animations on sidebar, context menu, drop zone,
focus mode, tabs, and all modals
- Full-text search with real-time DOM highlighting and match navigation
- Custom OverlayScrollbars replacing native scrollbars
- Tauri native drag-and-drop replacing broken browser drag events
- UI scale control (View menu spinner) persisted to localStorage
- Content zoom (Ctrl+Scroll) and width adjustment (Shift+Scroll)
- Right-click context menu with copy, zoom-adjusted positioning,
and boundary clamping
- Text selection preserved on right-click via visual overlay
- Focus mode hides title/menu bars with animated transitions
- Premium editorial typography: progressive heading color cascade,
gradient-fade horizontal rules, accent-colored list markers,
subtle persistent link underlines, refined blockquotes and code blocks
- Sidebar table of contents with "No headings" empty state
- Markdown breaks and typographer enabled
- New app icons and updated README with full feature documentation
---
.gitignore | 7 +
README.md | 234 ++--
package-lock.json | 1619 ++++++++++++++++++++++++-
package.json | 43 +-
src-tauri/Cargo.lock | 28 +-
src-tauri/Cargo.toml | 4 +-
src-tauri/icons/128x128.png | Bin 3512 -> 22066 bytes
src-tauri/icons/128x128@2x.png | Bin 7012 -> 64172 bytes
src-tauri/icons/32x32.png | Bin 974 -> 2899 bytes
src-tauri/icons/Square107x107Logo.png | Bin 2863 -> 17102 bytes
src-tauri/icons/Square142x142Logo.png | Bin 3858 -> 25956 bytes
src-tauri/icons/Square150x150Logo.png | Bin 3966 -> 27585 bytes
src-tauri/icons/Square284x284Logo.png | Bin 7737 -> 76281 bytes
src-tauri/icons/Square30x30Logo.png | Bin 903 -> 2579 bytes
src-tauri/icons/Square310x310Logo.png | Bin 8591 -> 87033 bytes
src-tauri/icons/Square44x44Logo.png | Bin 1299 -> 4584 bytes
src-tauri/icons/Square71x71Logo.png | Bin 2011 -> 9283 bytes
src-tauri/icons/Square89x89Logo.png | Bin 2468 -> 12966 bytes
src-tauri/icons/StoreLogo.png | Bin 1523 -> 5521 bytes
src-tauri/icons/icon.ico | Bin 86642 -> 285478 bytes
src-tauri/icons/icon.png | Bin 14183 -> 203202 bytes
src-tauri/src/main.rs | 2 +-
src-tauri/tauri.conf.json | 2 +-
src/App.tsx | 893 ++++++++++----
src/main.tsx | 17 +-
src/styles.css | 386 +++++-
vite.config.ts | 3 +
27 files changed, 2769 insertions(+), 469 deletions(-)
diff --git a/.gitignore b/.gitignore
index a547bf3..d78d1aa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,13 @@ dist
dist-ssr
*.local
+# Tauri build artifacts
+src-tauri/target/
+
+# Dev tool files
+icon-*.html
+nul
+
# Editor directories and files
.vscode/*
!.vscode/extensions.json
diff --git a/README.md b/README.md
index c1f7803..4a1dda5 100644
--- a/README.md
+++ b/README.md
@@ -7,78 +7,119 @@
-A beautiful, distraction-free markdown reader for Windows. Vesper renders your markdown files with elegant typography and a refined dark aesthetic inspired by iA Writer, giving you the ultimate reading experience.
+A beautiful, distraction-free markdown reader for Windows. Vesper renders your markdown files with premium editorial typography and a refined dark aesthetic, giving you the ultimate reading experience.
---
## Features
-### File Management
-- **Open Files** - Use the File menu or drag-and-drop markdown files directly onto the window
-- **Tabbed Interface** - Open multiple files in tabs and switch between them seamlessly
-- **Recent Files** - Files open in new tabs automatically
-- **Supported Formats** - `.md`, `.markdown`, and `.txt` files
+### Markdown Rendering
-### Reading Experience
-- **Premium Typography** - Carefully tuned typography with Inter font family for optimal readability
-- **Syntax Highlighting** - Code blocks are beautifully highlighted using highlight.js with a matching dark theme
-- **Markdown Extensions** - Full support for:
+- Full CommonMark support via **markdown-it** with extensions:
+ - Syntax highlighting for 190+ languages (highlight.js)
- Task lists (checkboxes)
- - Superscript and subscript
- - Strikethrough and highlighting
- - Tables with elegant styling
- - Blockquotes with visual depth
+ - Superscript and subscript (`^text^`, `~text~`)
+ - ==Highlighted text== via `mark`
+ - Smart quotes, em-dashes, and ellipses (typographer)
+ - Line break preservation
+ - Auto-linking of URLs
+ - HTML passthrough
+- Premium dark-mode typography tuned for long-form reading:
+ - Inter Variable at 17px with 1.7 line-height
+ - ~65 character measure (680px max-width) for optimal readability
+ - Progressive heading color cascade (H1 near-white through H6 muted)
+ - Accent-colored list markers
+ - Gradient-fade horizontal rules
+ - Subtle persistent link underlines that intensify on hover
+ - Refined blockquote, table, and code block styling
+ - JetBrains Mono Variable for code at 14px with ligature support
+
+### Tabbed Interface
+
+- Open multiple documents in tabs
+- Duplicate detection: re-opening an already-open file switches to its existing tab instead of creating a duplicate
+- Animated tab enter/exit with layout transitions
+- Scroll arrows appear when tabs overflow the bar, with hold-to-scroll
+- Mouse wheel scrolling over the tab bar
+- New tabs automatically scroll into view
+- Close individual tabs with the X button or `Ctrl+W`
### Navigation
-- **Table of Contents Sidebar** - Automatically generated from markdown headings (H1-H6)
-- **Click-to-Navigate** - Click any heading in the sidebar to jump to that section
-- **Resizable Sidebar** - Drag the sidebar edge to resize it to your preference
-### Search
-- **In-Document Search** - Press `Ctrl+F` to search within the current document
-- **Match Navigation** - Navigate between matches with previous/next buttons
-- **Match Counter** - See how many matches were found
+- **Table of Contents sidebar** auto-generated from document headings (H1-H6), with indentation by level
+- Click any heading in the sidebar to smooth-scroll to that section
+- Sidebar opens even when a document has no headings (shows "No headings" message)
+- Resizable sidebar via drag handle
+- **Full-text search** (`Ctrl+F`) with real-time DOM highlighting, match counter, and Enter to cycle through matches
-### Window Controls
-- **Custom Frameless Window** - Sleek title bar with custom controls
-- **Window Controls** - Minimize, maximize/restore, and close buttons
-- **Draggable Title Area** - Drag the window by clicking the title bar
-- **Focus Mode** - Press `F11` to hide all UI chrome and focus purely on content
+### Reading Experience
-### Keyboard Shortcuts
+- **Focus Mode** (`F11`) hides the title bar and menu bar for immersive reading
+- **Content zoom** via `Ctrl+Scroll` (50%--200%)
+- **Content width** adjustment via `Shift+Scroll` (400px--1200px)
+- **UI scale** (50%--200%) with a spinner in the View menu, persisted across sessions via localStorage
+- **Kinetic scrolling** on right-mouse-button drag with iOS-style rubber band overscroll and damped spring snapback
+- **Custom scrollbars** via OverlayScrollbars -- thin, auto-hiding after 800ms, accent-colored on hover
+- Window state (size, position, maximized) remembered between sessions via `tauri-plugin-window-state`
+
+### File Handling
+
+- Open files via the File menu, `Ctrl+O` dialog, or drag-and-drop from Explorer
+- Supports `.md`, `.markdown`, and `.txt` files
+- Native Tauri drag-and-drop integration (receives real file system paths)
+
+### UI Details
+
+- Custom frameless title bar with minimize, maximize/restore, and close buttons
+- Draggable title area for window repositioning
+- Menu bar with File, View, and Help menus
+- Right-click context menu with: Copy (when text is selected), Open File, Toggle Search, Toggle Sidebar, Focus Mode, Keyboard Shortcuts, About, Exit
+- Text selection preserved visually on right-click via overlay rendering
+- Context menu stays within window bounds and respects UI zoom
+- All panels, modals, tabs, and menus animate with Framer Motion (slide, fade, scale)
+- Subtle noise texture overlay on the app background
+- Keyboard shortcuts modal listing all bindings
+
+---
+
+## Keyboard Shortcuts
| Shortcut | Action |
-|----------|--------|
+|---|---|
| `Ctrl+O` | Open file |
| `Ctrl+W` | Close current tab |
| `Ctrl+Q` | Exit application |
| `Ctrl+F` | Toggle search |
| `Ctrl+Shift+S` | Toggle sidebar |
| `F11` | Toggle focus mode |
-| `Escape` | Close search or sidebar |
-
-### Context Menu
-Right-click anywhere in the content area for quick access to:
-- Open File
-- Find (search)
-- Toggle Sidebar
-- Focus Mode
-- Keyboard Shortcuts
-- About
+| `Escape` | Close search / sidebar |
+| `Ctrl+Scroll` | Zoom content in / out |
+| `Shift+Scroll` | Adjust content width |
---
## Installation
### Prerequisites
+
- Windows 10 or later
-- WebView2 Runtime (usually pre-installed on Windows 10/11)
+- WebView2 Runtime (pre-installed on Windows 10/11)
### Download
-Download the latest release from the [Releases](https://github.com/yourusername/vesper/releases) page.
+
+Download the latest installer from the [Releases](https://github.com/yourusername/vesper/releases) page:
+
+- **NSIS installer** (`.exe`) -- recommended, includes uninstaller
+- **MSI installer** (`.msi`) -- alternative for enterprise/group policy deployment
+- **Portable exe** -- standalone `vesper.exe` with no installation required
### Build from Source
+**Prerequisites:**
+- [Node.js](https://nodejs.org/) v18+
+- [Rust](https://www.rust-lang.org/tools/install) (stable toolchain)
+- [Tauri v2 prerequisites](https://v2.tauri.app/start/prerequisites/)
+
```bash
# Clone the repository
git clone https://github.com/yourusername/vesper.git
@@ -87,98 +128,95 @@ cd vesper
# Install dependencies
npm install
-# Run in development mode
+# Run in development mode (hot-reload on localhost:1420)
npm run tauri dev
# Build for production
npm run tauri build
```
+Build outputs:
+- `src-tauri/target/release/vesper.exe` -- portable executable
+- `src-tauri/target/release/bundle/msi/Vesper_1.0.0_x64_en-US.msi` -- MSI installer
+- `src-tauri/target/release/bundle/nsis/Vesper_1.0.0_x64-setup.exe` -- NSIS installer
+
---
## Technology Stack
-- **Framework**: [Tauri 2.0](https://tauri.app/) - Lightweight, secure desktop framework
-- **Frontend**: React 19 + TypeScript + Vite
-- **Styling**: Tailwind CSS v4 + daisyUI v5
-- **Markdown**: [markdown-it](https://github.com/markdown-it/markdown-it) with plugins
-- **Syntax Highlighting**: [highlight.js](https://highlightjs.org/)
-- **Animations**: [Framer Motion](https://www.framer.com/motion/)
-- **Icons**: [Lucide React](https://lucide.dev/)
+| Layer | Technology |
+|---|---|
+| Runtime | [Tauri v2](https://tauri.app/) (Rust + WebView2) |
+| Frontend | React 19, TypeScript, Vite 7 |
+| Styling | Tailwind CSS 4, DaisyUI 5, custom CSS |
+| Markdown | [markdown-it](https://github.com/markdown-it/markdown-it) with plugins (task-lists, sup, sub, mark) |
+| Syntax Highlighting | [highlight.js](https://highlightjs.org/) |
+| Animation | [Framer Motion](https://www.framer.com/motion/) |
+| Fonts | [Inter Variable](https://rsms.me/inter/), [JetBrains Mono Variable](https://www.jetbrains.com/lp/mono/) |
+| Icons | [Lucide React](https://lucide.dev/) |
+| Scrollbars | [OverlayScrollbars](https://kingsora.github.io/OverlayScrollbars/) |
+
+### Tauri Plugins
+
+- `tauri-plugin-dialog` -- native file open dialog
+- `tauri-plugin-fs` -- file system read access
+- `tauri-plugin-window-state` -- persist and restore window size, position, and maximized state
+- `tauri-plugin-opener` -- system default app launcher
---
## Design Philosophy
-Vesper was designed with these principles in mind:
-
-1. **Content First** - The reader is the primary focus. All UI elements can be hidden.
-2. **Typography Matters** - Reading should be comfortable. We use Inter with carefully tuned line heights (1.7), optimal line width (~65 characters), and generous whitespace.
-3. **Dark by Default** - The deep onyx base color (#282C33) reduces eye strain and looks professional.
-4. **Keyboard Driven** - Power users can do everything with keyboard shortcuts.
-5. **Minimalist Chrome** - The interface gets out of your way.
+1. **Content First** -- the reader is the primary focus; all UI chrome can be hidden
+2. **Typography Matters** -- Inter Variable at 17px, 1.7 line-height, ~65 character measure, generous whitespace
+3. **Dark by Default** -- deep onyx base color (#282C33) reduces eye strain
+4. **Keyboard Driven** -- every feature accessible via keyboard shortcuts
+5. **Minimalist Chrome** -- the interface gets out of your way
---
## Color Palette
| Color | Hex | Usage |
-|-------|-----|-------|
+|---|---|---|
| Base | `#282C33` | Main window background |
-| Surface | `#2D323B` | Elevated elements, cards |
-| Overlay | `#333942` | Dropdowns, modals |
+| Surface | `#252A31` | Title bar, sidebar |
+| Elevated | `#2D333C` | Active tab, modals |
+| Overlay | `#333942` | Dropdowns, context menu |
| Text Primary | `#E4E6EB` | Main content |
-| Text Secondary | `#ABB0B8` | UI labels |
-| Accent | `#6B8AFF` | Links, highlights |
+| Text Secondary | `#ABB0B8` | UI labels, muted text |
+| Text Tertiary | `#6B7280` | Placeholders, hints |
+| Accent | `#6B8AFF` | Interactive elements, highlights |
+| Link | `#7CA9F7` | Hyperlinks |
---
## Project Structure
```
-vesper/
-├── src/
-│ ├── App.tsx # Main application component
-│ ├── main.tsx # Entry point
-│ └── styles.css # All styling
-├── src-tauri/
-│ ├── src/
-│ │ └── main.rs # Rust backend
-│ ├── Cargo.toml
-│ └── tauri.conf.json # Tauri configuration
-├── index.html
-├── package.json
-└── README.md
+md-reader/
+ src/
+ App.tsx # Main application component (all UI logic)
+ main.tsx # React entry point
+ styles.css # All styles -- variables, UI components, markdown typography
+ src-tauri/
+ src/
+ main.rs # Rust entry point
+ lib.rs # Tauri builder and plugin registration
+ tauri.conf.json # Tauri window, bundle, and build configuration
+ Cargo.toml # Rust dependencies
+ icons/ # App icons (ICO, PNG, ICNS)
+ index.html
+ package.json
+ vite.config.ts
+ tsconfig.json
```
---
-## Keyboard Accessibility
-
-Vesper is fully keyboard accessible. Every feature can be accessed without a mouse:
-
-- **Menu Navigation** - Use the menu bar with keyboard
-- **Tab Switching** - Close tabs with `Ctrl+W`
-- **Search** - Find text with `Ctrl+F`
-- **Focus Mode** - Immerse yourself with `F11`
-
----
-
-## Contributing
-
-Contributions are welcome! Please feel free to submit a Pull Request.
-
-1. Fork the repository
-2. Create your feature branch (`git checkout -b feature/amazing-feature`)
-3. Commit your changes (`git commit -m 'Add some amazing feature'`)
-4. Push to the branch (`git push origin feature/amazing-feature`)
-5. Open a Pull Request
-
----
-
## License
-This project is dedicated to the public domain under the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication - see the [LICENSE](LICENSE) file for details.
+This project is dedicated to the public domain under the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication -- see the [LICENSE](LICENSE) file for details.
---
@@ -187,4 +225,4 @@ This project is dedicated to the public domain under the CC0 1.0 Universal (CC0
- [iA Writer](https://ia.net/writer) for design inspiration
- [Tauri](https://tauri.app/) for the excellent desktop framework
- [markdown-it](https://github.com/markdown-it/markdown-it) for robust markdown parsing
-- [highlight.js](https://highlightjs.org/) for beautiful code syntax
+- [highlight.js](https://highlightjs.org/) for syntax highlighting
diff --git a/package-lock.json b/package-lock.json
index fc99de5..541761e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,13 +1,15 @@
{
- "name": "DarkMark",
- "version": "0.1.0",
+ "name": "vesper",
+ "version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "DarkMark",
- "version": "0.1.0",
+ "name": "vesper",
+ "version": "1.0.0",
"dependencies": {
+ "@fontsource-variable/inter": "^5.2.8",
+ "@fontsource-variable/jetbrains-mono": "^5.2.8",
"@tailwindcss/typography": "^0.5.19",
"@tailwindcss/vite": "^4.1.18",
"@tauri-apps/api": "^2",
@@ -18,13 +20,14 @@
"daisyui": "^5.5.18",
"framer-motion": "^12.34.0",
"highlight.js": "^11.11.1",
- "lenis": "^1.3.17",
"lucide-react": "^0.564.0",
"markdown-it": "^14.1.1",
"markdown-it-mark": "^4.0.0",
"markdown-it-sub": "^2.0.0",
"markdown-it-sup": "^2.0.0",
"markdown-it-task-lists": "^2.1.1",
+ "overlayscrollbars": "^2.14.0",
+ "overlayscrollbars-react": "^0.5.6",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"tailwindcss": "^4.1.18"
@@ -35,6 +38,9 @@
"@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6",
"@vitejs/plugin-react": "^4.6.0",
+ "png-to-ico": "^3.0.1",
+ "puppeteer-core": "^24.37.3",
+ "sharp": "^0.34.5",
"typescript": "~5.8.3",
"vite": "^7.0.4"
}
@@ -321,6 +327,16 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@emnapi/runtime": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz",
+ "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@esbuild/aix-ppc64": {
"version": "0.27.3",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz",
@@ -737,6 +753,514 @@
"node": ">=18"
}
},
+ "node_modules/@fontsource-variable/inter": {
+ "version": "5.2.8",
+ "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.8.tgz",
+ "integrity": "sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==",
+ "license": "OFL-1.1",
+ "funding": {
+ "url": "https://github.com/sponsors/ayuhito"
+ }
+ },
+ "node_modules/@fontsource-variable/jetbrains-mono": {
+ "version": "5.2.8",
+ "resolved": "https://registry.npmjs.org/@fontsource-variable/jetbrains-mono/-/jetbrains-mono-5.2.8.tgz",
+ "integrity": "sha512-WBA9elru6Jdp5df2mES55wuOO0WIrn3kpXnI4+W2ek5u3ZgLS9XS4gmIlcQhiZOWEKl95meYdvK7xI+ETLCq/Q==",
+ "license": "OFL-1.1",
+ "funding": {
+ "url": "https://github.com/sponsors/ayuhito"
+ }
+ },
+ "node_modules/@img/colour": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz",
+ "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz",
+ "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz",
+ "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz",
+ "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz",
+ "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz",
+ "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz",
+ "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz",
+ "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-riscv64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz",
+ "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz",
+ "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz",
+ "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz",
+ "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz",
+ "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz",
+ "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz",
+ "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-ppc64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz",
+ "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-ppc64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-riscv64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz",
+ "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-riscv64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz",
+ "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz",
+ "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz",
+ "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz",
+ "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz",
+ "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==",
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.7.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-arm64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz",
+ "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz",
+ "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz",
+ "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
@@ -782,6 +1306,41 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@puppeteer/browsers": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.12.1.tgz",
+ "integrity": "sha512-fXa6uXLxfslBlus3MEpW8S6S9fe5RwmAE5Gd8u3krqOwnkZJV3/lQJiY3LaFdTctLLqJtyMgEUGkbDnRNf6vbQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "debug": "^4.4.3",
+ "extract-zip": "^2.0.1",
+ "progress": "^2.0.3",
+ "proxy-agent": "^6.5.0",
+ "semver": "^7.7.4",
+ "tar-fs": "^3.1.1",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@puppeteer/browsers/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@rolldown/pluginutils": {
"version": "1.0.0-beta.27",
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
@@ -1646,6 +2205,13 @@
"@tauri-apps/api": "^2.8.0"
}
},
+ "node_modules/@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/babel__core": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
@@ -1722,6 +2288,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/node": {
+ "version": "22.19.11",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz",
+ "integrity": "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
"node_modules/@types/react": {
"version": "19.2.14",
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
@@ -1742,6 +2318,17 @@
"@types/react": "^19.2.0"
}
},
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@vitejs/plugin-react": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
@@ -1763,12 +2350,173 @@
"vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
}
},
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"license": "Python-2.0"
},
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/b4a": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.4.tgz",
+ "integrity": "sha512-u20zJLDaSWpxaZ+zaAkEIB2dZZ1o+DF4T/MRbmsvGp9nletHOyiai19OzX1fF8xUBYsO1bPXxODvcd0978pnug==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-events": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz",
+ "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "bare-abort-controller": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-fs": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.4.tgz",
+ "integrity": "sha512-POK4oplfA7P7gqvetNmCs4CNtm9fNsx+IAh7jH7GgU0OJdge2rso0R20TNWVq6VoWcCvsTdlNDaleLHGaKx8CA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-events": "^2.5.4",
+ "bare-path": "^3.0.0",
+ "bare-stream": "^2.6.4",
+ "bare-url": "^2.2.2",
+ "fast-fifo": "^1.3.2"
+ },
+ "engines": {
+ "bare": ">=1.16.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-os": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz",
+ "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "bare": ">=1.14.0"
+ }
+ },
+ "node_modules/bare-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-os": "^3.0.1"
+ }
+ },
+ "node_modules/bare-stream": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz",
+ "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "streamx": "^2.21.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*",
+ "bare-events": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ },
+ "bare-events": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-url": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz",
+ "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-path": "^3.0.0"
+ }
+ },
"node_modules/baseline-browser-mapping": {
"version": "2.9.19",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
@@ -1779,6 +2527,16 @@
"baseline-browser-mapping": "dist/cli.js"
}
},
+ "node_modules/basic-ftp": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz",
+ "integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/browserslist": {
"version": "4.28.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
@@ -1813,6 +2571,16 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/caniuse-lite": {
"version": "1.0.30001769",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz",
@@ -1834,6 +2602,55 @@
],
"license": "CC-BY-4.0"
},
+ "node_modules/chromium-bidi": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz",
+ "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mitt": "^3.0.1",
+ "zod": "^3.24.1"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
@@ -1869,6 +2686,16 @@
"url": "https://github.com/saadeghi/daisyui?sponsor=1"
}
},
+ "node_modules/data-uri-to-buffer": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+ "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/debug": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
@@ -1887,6 +2714,21 @@
}
}
},
+ "node_modules/degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
@@ -1896,6 +2738,13 @@
"node": ">=8"
}
},
+ "node_modules/devtools-protocol": {
+ "version": "0.0.1566079",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1566079.tgz",
+ "integrity": "sha512-MJfAEA1UfVhSs7fbSQOG4czavUp1ajfg6prlAN0+cmfa2zNjaIbvq8VneP7do1WAQQIvgNJWSMeP6UyI90gIlQ==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
"node_modules/electron-to-chromium": {
"version": "1.5.286",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz",
@@ -1903,6 +2752,23 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
"node_modules/enhanced-resolve": {
"version": "5.19.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz",
@@ -1979,6 +2845,110 @@
"node": ">=6"
}
},
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/events-universal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-events": "^2.7.0"
+ }
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
"node_modules/fdir": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
@@ -2047,6 +3017,47 @@
"node": ">=6.9.0"
}
},
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-uri": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
+ "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^6.0.2",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -2062,6 +3073,54 @@
"node": ">=12.0.0"
}
},
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ip-address": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/jiti": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
@@ -2104,32 +3163,6 @@
"node": ">=6"
}
},
- "node_modules/lenis": {
- "version": "1.3.17",
- "resolved": "https://registry.npmjs.org/lenis/-/lenis-1.3.17.tgz",
- "integrity": "sha512-k9T9rgcxne49ggJOvXCraWn5dt7u2mO+BNkhyu6yxuEnm9c092kAW5Bus5SO211zUvx7aCCEtzy9UWr0RB+oJw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/darkroomengineering"
- },
- "peerDependencies": {
- "@nuxt/kit": ">=3.0.0",
- "react": ">=17.0.0",
- "vue": ">=3.0.0"
- },
- "peerDependenciesMeta": {
- "@nuxt/kit": {
- "optional": true
- },
- "react": {
- "optional": true
- },
- "vue": {
- "optional": true
- }
- }
- },
"node_modules/lightningcss": {
"version": "1.30.2",
"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz",
@@ -2463,6 +3496,23 @@
"integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
"license": "MIT"
},
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/motion-dom": {
"version": "12.34.0",
"resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.34.0.tgz",
@@ -2503,6 +3553,16 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/netmask": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
"node_modules/node-releases": {
"version": "2.0.27",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
@@ -2510,6 +3570,73 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/overlayscrollbars": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/overlayscrollbars/-/overlayscrollbars-2.14.0.tgz",
+ "integrity": "sha512-RjV0pqc79kYhQLC3vTcLRb5GLpI1n6qh0Oua3g+bGH4EgNOJHVBGP7u0zZtxoAa0dkHlAqTTSYRb9MMmxNLjig==",
+ "license": "MIT"
+ },
+ "node_modules/overlayscrollbars-react": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/overlayscrollbars-react/-/overlayscrollbars-react-0.5.6.tgz",
+ "integrity": "sha512-E5To04bL5brn9GVCZ36SnfGanxa2I2MDkWoa4Cjo5wol7l+diAgi4DBc983V7l2nOk/OLJ6Feg4kySspQEGDBw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "overlayscrollbars": "^2.0.0",
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/pac-proxy-agent": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
+ "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/quickjs-emscripten": "^0.23.0",
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.6",
+ "pac-resolver": "^7.0.1",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-resolver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+ "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "degenerator": "^5.0.0",
+ "netmask": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -2528,6 +3655,34 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/png-to-ico": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/png-to-ico/-/png-to-ico-3.0.1.tgz",
+ "integrity": "sha512-S8BOAoaGd9gT5uaemQ62arIY3Jzco7Uc7LwUTqRyqJDTsKqOAiyfyN4dSdT0D+Zf8XvgztgpRbM5wnQd7EgYwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "^22.10.3",
+ "minimist": "^1.2.8",
+ "pngjs": "^7.0.0"
+ },
+ "bin": {
+ "png-to-ico": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz",
+ "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.19.0"
+ }
+ },
"node_modules/postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
@@ -2569,6 +3724,64 @@
"node": ">=4"
}
},
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/proxy-agent": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
+ "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.6",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.1.0",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/pump": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
"node_modules/punycode.js": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
@@ -2578,6 +3791,25 @@
"node": ">=6"
}
},
+ "node_modules/puppeteer-core": {
+ "version": "24.37.3",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.37.3.tgz",
+ "integrity": "sha512-fokQ8gv+hNgsRWqVuP5rUjGp+wzV5aMTP3fcm8ekNabmLGlJdFHas1OdMscAH9Gzq4Qcf7cfI/Pe6wEcAqQhqg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@puppeteer/browsers": "2.12.1",
+ "chromium-bidi": "14.0.0",
+ "debug": "^4.4.3",
+ "devtools-protocol": "0.0.1566079",
+ "typed-query-selector": "^2.12.0",
+ "webdriver-bidi-protocol": "0.4.1",
+ "ws": "^8.19.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/react": {
"version": "19.2.4",
"resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
@@ -2609,6 +3841,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/rollup": {
"version": "4.57.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz",
@@ -2669,6 +3911,116 @@
"semver": "bin/semver.js"
}
},
+ "node_modules/sharp": {
+ "version": "0.34.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz",
+ "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@img/colour": "^1.0.0",
+ "detect-libc": "^2.1.2",
+ "semver": "^7.7.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.34.5",
+ "@img/sharp-darwin-x64": "0.34.5",
+ "@img/sharp-libvips-darwin-arm64": "1.2.4",
+ "@img/sharp-libvips-darwin-x64": "1.2.4",
+ "@img/sharp-libvips-linux-arm": "1.2.4",
+ "@img/sharp-libvips-linux-arm64": "1.2.4",
+ "@img/sharp-libvips-linux-ppc64": "1.2.4",
+ "@img/sharp-libvips-linux-riscv64": "1.2.4",
+ "@img/sharp-libvips-linux-s390x": "1.2.4",
+ "@img/sharp-libvips-linux-x64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.4",
+ "@img/sharp-linux-arm": "0.34.5",
+ "@img/sharp-linux-arm64": "0.34.5",
+ "@img/sharp-linux-ppc64": "0.34.5",
+ "@img/sharp-linux-riscv64": "0.34.5",
+ "@img/sharp-linux-s390x": "0.34.5",
+ "@img/sharp-linux-x64": "0.34.5",
+ "@img/sharp-linuxmusl-arm64": "0.34.5",
+ "@img/sharp-linuxmusl-x64": "0.34.5",
+ "@img/sharp-wasm32": "0.34.5",
+ "@img/sharp-win32-arm64": "0.34.5",
+ "@img/sharp-win32-ia32": "0.34.5",
+ "@img/sharp-win32-x64": "0.34.5"
+ }
+ },
+ "node_modules/sharp/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -2678,6 +4030,46 @@
"node": ">=0.10.0"
}
},
+ "node_modules/streamx": {
+ "version": "2.23.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz",
+ "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "events-universal": "^1.0.0",
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/tailwindcss": {
"version": "4.1.18",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz",
@@ -2697,6 +4089,43 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/tar-fs": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz",
+ "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ },
+ "optionalDependencies": {
+ "bare-fs": "^4.0.1",
+ "bare-path": "^3.0.0"
+ }
+ },
+ "node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
+ },
+ "node_modules/text-decoder": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.6.tgz",
+ "integrity": "sha512-27FeW5GQFDfw0FpwMQhMagB7BztOOlmjcSRi97t2oplhKVTZtp0DZbSegSaXS5IIC6mxMvBG4AR1Sgc6BX3CQg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
"node_modules/tinyglobby": {
"version": "0.2.15",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
@@ -2719,6 +4148,13 @@
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD"
},
+ "node_modules/typed-query-selector": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz",
+ "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/typescript": {
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
@@ -2739,6 +4175,13 @@
"integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
"license": "MIT"
},
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "devOptional": true,
+ "license": "MIT"
+ },
"node_modules/update-browserslist-db": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
@@ -2850,12 +4293,126 @@
}
}
},
+ "node_modules/webdriver-bidi-protocol": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz",
+ "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ws": {
+ "version": "8.19.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz",
+ "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true,
"license": "ISC"
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
}
}
}
diff --git a/package.json b/package.json
index 2fff988..df6e737 100644
--- a/package.json
+++ b/package.json
@@ -1,42 +1 @@
-{
-"name": "vesper",
- "private": true,
- "version": "1.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "tsc && vite build",
- "preview": "vite preview",
- "tauri": "tauri"
- },
- "dependencies": {
- "@tailwindcss/typography": "^0.5.19",
- "@tailwindcss/vite": "^4.1.18",
- "@tauri-apps/api": "^2",
- "@tauri-apps/plugin-dialog": "^2.6.0",
- "@tauri-apps/plugin-fs": "^2.4.5",
- "@tauri-apps/plugin-opener": "^2",
- "@tauri-apps/plugin-window-state": "^2.4.1",
- "daisyui": "^5.5.18",
- "framer-motion": "^12.34.0",
-"highlight.js": "^11.11.1",
- "lucide-react": "^0.564.0",
- "markdown-it": "^14.1.1",
- "markdown-it-mark": "^4.0.0",
- "markdown-it-sub": "^2.0.0",
- "markdown-it-sup": "^2.0.0",
- "markdown-it-task-lists": "^2.1.1",
- "react": "^19.1.0",
- "react-dom": "^19.1.0",
- "tailwindcss": "^4.1.18"
- },
- "devDependencies": {
- "@tauri-apps/cli": "^2",
- "@types/markdown-it": "^14.1.2",
- "@types/react": "^19.1.8",
- "@types/react-dom": "^19.1.6",
- "@vitejs/plugin-react": "^4.6.0",
- "typescript": "~5.8.3",
- "vite": "^7.0.4"
- }
-}
+{"name":"vesper","private":true,"version":"1.0.0","type":"module","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","tauri":"tauri"},"dependencies":{"@fontsource-variable/inter":"^5.2.8","@fontsource-variable/jetbrains-mono":"^5.2.8","@tailwindcss/typography":"^0.5.19","@tailwindcss/vite":"^4.1.18","@tauri-apps/api":"^2","@tauri-apps/plugin-dialog":"^2.6.0","@tauri-apps/plugin-fs":"^2.4.5","@tauri-apps/plugin-opener":"^2","@tauri-apps/plugin-window-state":"^2.4.1","daisyui":"^5.5.18","framer-motion":"^12.34.0","highlight.js":"^11.11.1","lucide-react":"^0.564.0","markdown-it":"^14.1.1","markdown-it-mark":"^4.0.0","markdown-it-sub":"^2.0.0","markdown-it-sup":"^2.0.0","markdown-it-task-lists":"^2.1.1","overlayscrollbars":"^2.14.0","overlayscrollbars-react":"^0.5.6","react":"^19.1.0","react-dom":"^19.1.0","tailwindcss":"^4.1.18"},"devDependencies":{"@tauri-apps/cli":"^2","@types/markdown-it":"^14.1.2","@types/react":"^19.1.8","@types/react-dom":"^19.1.6","@vitejs/plugin-react":"^4.6.0","png-to-ico":"^3.0.1","puppeteer-core":"^24.37.3","sharp":"^0.34.5","typescript":"~5.8.3","vite":"^7.0.4"}}
\ No newline at end of file
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index 9f1996b..19fc8b7 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -596,20 +596,6 @@ dependencies = [
"syn 2.0.115",
]
-[[package]]
-name = "darkmark"
-version = "0.1.0"
-dependencies = [
- "serde",
- "serde_json",
- "tauri",
- "tauri-build",
- "tauri-plugin-dialog",
- "tauri-plugin-fs",
- "tauri-plugin-opener",
- "tauri-plugin-window-state",
-]
-
[[package]]
name = "darling"
version = "0.21.3"
@@ -4308,6 +4294,20 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+[[package]]
+name = "vesper"
+version = "0.1.0"
+dependencies = [
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-build",
+ "tauri-plugin-dialog",
+ "tauri-plugin-fs",
+ "tauri-plugin-opener",
+ "tauri-plugin-window-state",
+]
+
[[package]]
name = "vswhom"
version = "0.1.0"
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index ef6af5f..a0a138b 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "darkmark"
+name = "vesper"
version = "0.1.0"
description = "A beautiful markdown reader"
authors = ["you"]
@@ -8,7 +8,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
-name = "darkmark_lib"
+name = "vesper_lib"
crate-type = ["staticlib", "cdylib", "rlib"]
[build-dependencies]
diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png
index 6be5e50e9b9ae84d9e2ee433f32ef446495eaf3b..245f83c66a4db49f54aba0c84065d7abee21cab6 100644
GIT binary patch
literal 22066
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
PelWmL&qTLc+Y$d?e#e;>
diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png
index e81becee571e96f76aa5667f9324c05e5e7a4479..2046f1c12e418a0d0a98b0b0d655cb8fa83c9b71 100644
GIT binary patch
literal 64172
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