diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..d033ad9 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,54 @@ +# AGENTS.md + +Monorepo for **Known** (知学情), an exam-score analysis app for students. Three independent platform apps that share no +code: + +- `Web/` — marketing/landing site (Vite, plain HTML/CSS/JS, no framework). Most active work. +- `Android/` — Kotlin + Jetpack Compose (Material 3), Gradle Kotlin DSL, `mobile` + `wear` modules. +- `HarmonyOS/` — ArkTS app for DevEco Studio (hvigor build). + +## Git workflow + +- Default branch is `main`. Feature work happens on per-platform branches: `dev_web`, `dev_android`, `dev_harmony`, + `dev_wear`. Currently checked out: `dev_web`. +- All Git commits require explicit human confirmation before running. +- Pushes to `main` touching `Web/**` trigger `.github/workflows/static.yml`, which deploys the **raw `Web/` directory** + to GitHub Pages — there is no build step, so `src/`/`css/` edits go live as-is after the push. `vite build` output + (`dist/`) is not deployed. + +## Web (`Web/`) + +Commands (run in `Web/`): + +- `npm run dev` — Vite dev server. Vite is only a dev server/build tool here; the site itself is static HTML. +- `npm run build` / `npm run preview` +- No tests, no lint, no typecheck. Only Prettier for formatting (`.prettierrc`: single quotes, printWidth 80, tabWidth + 2). + +Gotchas: + +- `src/script.js` is the real UI logic (theme, language, particles, changelog timeline). +- `src/main.js` is leftover WebStorm counter boilerplate. Its top-level + `setupCounter(document.getElementById('counter-value'))` throws at load because no `#counter-value` element exists, + which also prevents its `DOMContentLoaded` handler from registering. Don't build on it. +- All UI strings are in `assets/values/translations.json` (locales `zh`, `zh-tw`, `en`, `en-GB`), applied via + `data-i18n` attributes. Theme/lang dropdown state persists in `localStorage`. +- The changelog section is fetched live from the GitHub API (`Melendez1209/Known`: releases, then commits fallback) — it + is not stored in the repo. +- `404.html` also loads `src/i18n.js` and shares the same translations file. + +## Android (`Android/`) + +- Jetpack Compose + Material 3, Gradle Kotlin DSL, modules `mobile` and `wear`. Build with `gradlew.bat`/`./gradlew`; + developed in Android Studio. + +## HarmonyOS (`HarmonyOS/`) + +- DevEco Studio project (ArkTS, hvigor). Requires the DevEco toolchain. + +## Project conventions (from `CONTRIBUTING.md`) + +- Audience is minors — never add porn/violence/gambling/drugs content anywhere in the repo. +- Use **CRLF** line endings and leave a blank line at the end of every file. +- Code comments in standard English; a space before and after `//`, no trailing full stop. +- Android: run Android Studio's code cleanup on changed files before committing. diff --git a/Web/assets/svg/download.svg b/Web/assets/svg/download.svg new file mode 100644 index 0000000..659e516 --- /dev/null +++ b/Web/assets/svg/download.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Web/assets/svg/opensource.svg b/Web/assets/svg/opensource.svg new file mode 100644 index 0000000..8fb2247 --- /dev/null +++ b/Web/assets/svg/opensource.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + </> opensource.js + + // free for everyone + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Web/assets/values/translations.json b/Web/assets/values/translations.json index bdf0421..e6b20a6 100644 --- a/Web/assets/values/translations.json +++ b/Web/assets/values/translations.json @@ -9,6 +9,7 @@ "nav.download": "下载", "nav.changelog": "更新日志", "nav.about": "关于", + "nav.openSource": "开源地址", "theme.light": "浅色模式", "theme.dark": "深色模式", "theme.system": "跟随系统", @@ -58,6 +59,7 @@ "nav.download": "下載", "nav.changelog": "更新日誌", "nav.about": "關於", + "nav.openSource": "開源地址", "theme.light": "淺色模式", "theme.dark": "深色模式", "theme.system": "跟隨系統", @@ -107,6 +109,7 @@ "nav.download": "Download", "nav.changelog": "Changelog", "nav.about": "About", + "nav.openSource": "Open Source", "theme.light": "Light Mode", "theme.dark": "Dark Mode", "theme.system": "Follow System", @@ -156,6 +159,7 @@ "nav.download": "Download", "nav.changelog": "Changelog", "nav.about": "About", + "nav.openSource": "Open Source", "theme.light": "Light Mode", "theme.dark": "Dark Mode", "theme.system": "Follow System", @@ -195,4 +199,4 @@ "about.description": "Known is an app developed by a middle school student (now a freshman in high school) in Beijing to help students better analyse their test scores and stay motivated. We hope Known can be your right-hand man on your way to learning.", "footer.copyright": "Open-sourced under MIT License." } -} \ No newline at end of file +} diff --git a/Web/css/index.css b/Web/css/index.css index d713263..14d8282 100644 --- a/Web/css/index.css +++ b/Web/css/index.css @@ -1,9 +1,9 @@ :root { - --primary-color: #A54BCF; - --secondary-color: #006E2B; + --primary-color: #a54bcf; + --secondary-color: #006e2b; --background-color: #f8f5fb; --text-color: #2c3e50; - --gradient-secondary: #C78AE6; + --gradient-secondary: #c78ae6; --card-background: white; --nav-background: white; --shadow-color: rgba(165, 75, 207, 0.1); @@ -13,7 +13,7 @@ --border-color: #ddd; } -[data-theme="dark"] { +[data-theme='dark'] { --background-color: #1a1a2e; --text-color: #e0e0e0; --card-background: #16213e; @@ -33,10 +33,11 @@ html { scroll-behavior: smooth; + scroll-snap-type: y mandatory; } body { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; color: var(--text-color); background-color: var(--background-color); @@ -46,28 +47,53 @@ body { /* ===== Navigation ===== */ nav { position: fixed; - top: 0; + top: 1rem; left: 0; right: 0; + margin: 0 auto; z-index: 1000; + width: calc(100% - 2rem); + max-width: 1100px; background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); - border-bottom: 1px solid rgba(165, 75, 207, 0.1); - padding: 0.5rem 2rem; + border: 1px solid rgba(165, 75, 207, 0.1); + border-radius: 999px; + padding: 0.5rem 1.5rem; display: flex; justify-content: space-between; align-items: center; height: 60px; + box-shadow: 0 8px 30px var(--shadow-color); transition: all 0.3s ease; } -[data-theme="dark"] nav { +[data-theme='dark'] nav { background: rgba(22, 33, 62, 0.85); } nav.scrolled { - box-shadow: 0 2px 20px rgba(165, 75, 207, 0.15); + box-shadow: 0 10px 40px var(--shadow-color-hover); +} + +nav.about-active { + max-width: 780px; +} + +nav.about-active ul { + position: static; + transform: none; +} + +.logo.logo-fixed { + position: fixed; + z-index: 1001; + margin: 0; + transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1); +} + +.logo.logo-about-large { + transform: scale(3); } .logo img { @@ -75,7 +101,18 @@ nav.scrolled { vertical-align: middle; } +.nav-controls { + display: flex; + align-items: center; + gap: 0.5rem; + height: 100%; +} + nav ul { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); display: flex; list-style: none; gap: 2rem; @@ -134,7 +171,30 @@ nav a.active { .theme-dropdown, .lang-dropdown { + position: absolute; top: calc(100% + 0.5rem); + right: 0; + z-index: 1000; + min-width: 180px; + padding: 0.5rem; + gap: 0.2rem; + display: flex; + flex-direction: column; + border-radius: 12px; + background: rgba(255, 255, 255, 0.85); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid rgba(165, 75, 207, 0.1); + box-shadow: 0 8px 30px var(--shadow-color); + opacity: 0; + visibility: hidden; + transform: translateY(-10px) scale(0.95); + transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1); +} + +[data-theme='dark'] .theme-dropdown, +[data-theme='dark'] .lang-dropdown { + background: rgba(22, 33, 62, 0.85); } .theme-selector, @@ -146,13 +206,15 @@ nav a.active { } /* ===== Main Content ===== */ -main { - margin-top: 60px; -} - -section { +main section { + min-height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; padding: 5rem 10%; position: relative; + scroll-snap-align: start; + scroll-snap-stop: always; } /* ===== Hero Section ===== */ @@ -160,7 +222,11 @@ section { text-align: center; padding-top: 6rem; padding-bottom: 10rem; - background: linear-gradient(135deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); color: white; min-height: 100vh; display: flex; @@ -385,7 +451,11 @@ section { text-align: center; font-size: 2.8rem; margin-bottom: 1rem; - background: linear-gradient(135deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -399,7 +469,11 @@ section { transform: translateX(-50%); width: 80px; height: 4px; - background: linear-gradient(135deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); border-radius: 2px; } @@ -430,7 +504,11 @@ section { left: 0; width: 100%; height: 3px; - background: linear-gradient(90deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 90deg, + var(--primary-color), + var(--gradient-secondary) + ); transform: scaleX(0); transform-origin: left; transition: transform 0.4s ease; @@ -449,7 +527,11 @@ section { width: 70px; height: 70px; margin: 0 auto 1.5rem; - background: linear-gradient(135deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); border-radius: 20px; display: flex; align-items: center; @@ -481,25 +563,62 @@ section { /* ===== Download Section ===== */ #download { text-align: center; - background: linear-gradient(180deg, var(--background-color), rgba(165, 75, 207, 0.05)); + background: linear-gradient( + 180deg, + var(--background-color), + rgba(165, 75, 207, 0.05) + ); position: relative; } #download h2 { font-size: 2.8rem; margin-bottom: 1rem; - background: linear-gradient(135deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } +.download-container { + display: flex; + align-items: center; + justify-content: center; + gap: clamp(2rem, 5vw, 4rem); + width: 100%; + max-width: 1000px; + margin: 0 auto; + flex-wrap: wrap; +} + +.download-content { + flex: 1 1 320px; + max-width: 440px; + text-align: left; +} + +.download-art { + flex: 1 1 320px; + max-width: 460px; + min-width: 280px; +} + +.download-art svg { + width: 100%; + height: auto; + display: block; +} + .download-options { display: flex; gap: 2rem; - justify-content: center; + justify-content: flex-start; flex-wrap: wrap; - margin: 3rem 0; + margin: 2rem 0 0; } .download-button { @@ -526,7 +645,11 @@ section { left: 0; width: 100%; height: 100%; - background: linear-gradient(135deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); opacity: 0; transition: opacity 0.4s ease; z-index: 0; @@ -567,18 +690,20 @@ section { .download-button .version-text { position: absolute; - left: 50%; - transform: translateX(-50%); - top: calc(50% - 0.5em - 0.5em); - font-size: 0.9rem; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + font-size: 1.1rem; opacity: 0; + transform: translateY(10px); transition: all 0.3s ease; color: white; } .download-button:hover .version-text { - top: calc(50% - 0.5em); opacity: 1; + transform: translateY(0); } .download-button:hover span:not(.version-text) { @@ -586,10 +711,52 @@ section { } /* ===== Open Source Section ===== */ +.open-source-container { + display: flex; + align-items: center; + justify-content: center; + gap: clamp(2rem, 5vw, 4rem); + width: 100%; + max-width: 1000px; + margin: 0 auto; + flex-wrap: wrap; +} + +.open-source-content { + flex: 1 1 320px; + max-width: 440px; + text-align: left; +} + +.open-source-content h2 { + font-size: 2.8rem; + margin-bottom: 1.5rem; + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.open-source-art { + flex: 1 1 320px; + max-width: 460px; + min-width: 280px; +} + +.open-source-art svg { + width: 100%; + height: auto; + display: block; +} + .open-source-link { display: flex; gap: 1.5rem; - justify-content: center; + justify-content: flex-start; margin-top: 2rem; } @@ -627,7 +794,11 @@ section { text-align: center; font-size: 2.8rem; margin-bottom: 2rem; - background: linear-gradient(135deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -654,7 +825,11 @@ section { position: absolute; top: 16px; height: 2px; - background: linear-gradient(90deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 90deg, + var(--primary-color), + var(--gradient-secondary) + ); border-radius: 1px; opacity: 0.3; z-index: 0; @@ -737,7 +912,11 @@ section { .timeline-version { display: inline-block; padding: 0.25rem 0.75rem; - background: linear-gradient(135deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); color: white; border-radius: 20px; font-size: 0.85rem; @@ -836,15 +1015,45 @@ section { /* ===== About Section ===== */ #about { - text-align: center; position: relative; overflow: hidden; + padding-bottom: 12rem; +} + +.about-container { + display: flex; + align-items: stretch; + justify-content: center; + gap: clamp(2rem, 5vw, 4rem); + width: 100%; + max-width: 1000px; + margin: 0 auto; + flex-wrap: wrap; +} + +.about-logo-column { + flex: 1 1 320px; + max-width: 460px; + min-width: 280px; + display: flex; + align-items: center; + justify-content: center; +} + +.about-content { + flex: 1 1 320px; + max-width: 440px; + text-align: left; } #about h2 { font-size: 2.8rem; margin-bottom: 1.5rem; - background: linear-gradient(135deg, var(--primary-color), var(--gradient-secondary)); + background: linear-gradient( + 135deg, + var(--primary-color), + var(--gradient-secondary) + ); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -854,7 +1063,7 @@ section { font-size: 1.15rem; line-height: 1.9; max-width: 700px; - margin: 0 auto 2rem; + margin: 0; color: var(--text-color); opacity: 0.85; } @@ -867,6 +1076,7 @@ footer { color: var(--text-color); opacity: 0.7; font-size: 0.9rem; + scroll-snap-align: end; } /* ===== Theme Selector ===== */ @@ -874,32 +1084,14 @@ footer { position: relative; } -.theme-dropdown { - position: absolute; - top: 100%; - right: 0; - background: var(--card-background); - border-radius: 12px; - box-shadow: 0 8px 30px var(--shadow-color); - padding: 0.5rem; - z-index: 1000; - min-width: 180px; - gap: 0.2rem; - display: flex; - flex-direction: column; - opacity: 0; - visibility: hidden; - transform: translateY(-10px) scale(0.95); - transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1); -} - .theme-selector:hover .theme-dropdown { opacity: 1; visibility: visible; transform: translateY(0) scale(1); } -.theme-dropdown button { +.theme-dropdown button, +.lang-dropdown button { display: flex; align-items: center; gap: 0.8rem; @@ -912,26 +1104,50 @@ footer { transition: all 0.2s ease; border-radius: 8px; font-size: 0.9rem; + line-height: 1.4; + text-align: left; white-space: nowrap; } -.theme-dropdown button:hover { +.theme-dropdown button:hover, +.lang-dropdown button:hover { background: var(--shadow-color); } .theme-dropdown button i { + display: inline-flex; + align-items: center; + justify-content: center; + width: 1.2rem; + height: 1.2rem; + font-size: 0.9rem; + line-height: 1; + flex-shrink: 0; +} + +.lang-dropdown button::before { + content: ''; width: 1.2rem; text-align: center; + line-height: 1; flex-shrink: 0; } -.theme-dropdown button[data-selected="true"] { +.theme-dropdown button[data-selected='true'], +.lang-dropdown button[data-selected='true'] { color: var(--primary-color); background: var(--shadow-color); font-weight: 600; } -.theme-selector button { +.lang-dropdown button[data-selected='true']::before { + content: '\f00c'; + font-family: 'Font Awesome 6 Free', serif; + font-weight: 900; + color: var(--primary-color); +} + +.theme-toggle { background: none; border: none; color: var(--text-color); @@ -941,7 +1157,7 @@ footer { transition: color 0.3s ease; } -.theme-selector button:hover { +.theme-toggle:hover { color: var(--primary-color); } @@ -949,20 +1165,20 @@ footer { display: none; } -[data-theme="system"] .system-icon { +[data-theme='system'] .system-icon { display: inline-block; } -[data-theme="system"] .light-icon, -[data-theme="system"] .dark-icon { +[data-theme='system'] .light-icon, +[data-theme='system'] .dark-icon { display: none; } -[data-theme="dark"] .dark-icon { +[data-theme='dark'] .dark-icon { display: none; } -[data-theme="light"] .light-icon { +[data-theme='light'] .light-icon { display: none; } @@ -971,71 +1187,12 @@ footer { position: relative; } -.lang-dropdown { - position: absolute; - top: 100%; - right: 0; - background: var(--card-background); - border-radius: 12px; - box-shadow: 0 8px 30px var(--shadow-color); - padding: 0.5rem; - z-index: 1000; - min-width: 180px; - gap: 0.2rem; - display: flex; - flex-direction: column; - opacity: 0; - visibility: hidden; - transform: translateY(-10px) scale(0.95); - transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1); -} - .lang-selector:hover .lang-dropdown { opacity: 1; visibility: visible; transform: translateY(0) scale(1); } -.lang-dropdown button { - display: flex; - align-items: center; - gap: 0.8rem; - width: 100%; - padding: 0.7rem 1rem; - border: none; - background: none; - color: var(--text-color); - cursor: pointer; - transition: all 0.2s ease; - border-radius: 8px; - font-size: 0.9rem; - white-space: nowrap; -} - -.lang-dropdown button:hover { - background: var(--shadow-color); -} - -.lang-dropdown button::before { - content: ''; - width: 1.2rem; - text-align: center; - flex-shrink: 0; -} - -.lang-dropdown button[data-selected="true"]::before { - content: '\f00c'; - font-family: 'Font Awesome 6 Free', serif; - font-weight: 900; - color: var(--primary-color); -} - -.lang-dropdown button[data-selected="true"] { - color: var(--primary-color); - background: var(--shadow-color); - font-weight: 600; -} - .lang-toggle { background: none; border: none; @@ -1052,6 +1209,10 @@ footer { /* ===== Responsive ===== */ @media (max-width: 768px) { + nav { + width: calc(100% - 1rem); + } + nav ul { display: none; } @@ -1075,6 +1236,20 @@ footer { gap: 1rem; } + .download-container { + flex-direction: column; + gap: 2rem; + } + + .download-content { + max-width: none; + text-align: center; + } + + .download-art { + max-width: 340px; + } + .download-button { width: 100%; max-width: 300px; @@ -1093,6 +1268,34 @@ footer { padding: 1rem; } + .open-source-container { + flex-direction: column; + gap: 2rem; + } + + .about-container { + flex-direction: column; + gap: 2rem; + } + + .about-content { + max-width: none; + text-align: center; + } + + .open-source-content { + max-width: none; + text-align: center; + } + + .open-source-link { + justify-content: center; + } + + .open-source-art { + max-width: 380px; + } + section { padding: 3rem 5%; } @@ -1100,6 +1303,7 @@ footer { #features h2, #download h2, #changelog h2, + .open-source-content h2, #about h2 { font-size: 2rem; } diff --git a/Web/index.html b/Web/index.html index 5e86bbc..c07fc10 100644 --- a/Web/index.html +++ b/Web/index.html @@ -1,19 +1,25 @@ - + - - + + Known - - - + + + @@ -23,15 +29,30 @@
@@ -80,10 +101,16 @@

Known

-

Your Intelligent Learning Assistant

+

+ Your Intelligent Learning Assistant +

- Download Now - Learn More + Download Now + Learn More
@@ -102,66 +129,42 @@

Key Features

Grade Analysis

-

Intelligent analysis of test scores and tracking of learning progress.

+

+ Intelligent analysis of test scores and tracking of learning + progress. +

Learning Motivation

-

Personalized incentive system for more motivated learning.

+

+ Personalized incentive system for more motivated learning. +

Data Statistics

-

Intuitive learning visualization for clear demonstration of learning - outcomes.

+

+ Intuitive learning visualization for clear demonstration of + learning outcomes. +

Intelligent Planning

-

AI-based study plan development to rationalize scheduling.

+

+ AI-based study plan development to rationalize scheduling. +

-
-

Download App

-
- - Android - Android - v1.0.0 - - - HarmonyOS - HarmonyOS - v1.0.0 - -
-
- -
-

Open Source

- -
-

Changelog

@@ -173,17 +176,104 @@

Changelog

+
+
+
+ +
+
+ +
+
+
+

+ Open Source +

+ +
+
+
+
+
-

About Known

-

Known is an app developed by a junior high - school student (now a senior in high - school) in Beijing to help students better analyze their test scores and stay motivated. We hope Known can - be your right hand on your study journey.

+
+
+
+

About Known

+

+ Known is an app developed by a junior high school student (now a + senior in high school) in Beijing to help students better analyze + their test scores and stay motivated. We hope Known can be your + right hand on your study journey. +

+
+
diff --git a/Web/package-lock.json b/Web/package-lock.json index 13fc49e..5bae81a 100644 --- a/Web/package-lock.json +++ b/Web/package-lock.json @@ -1,89 +1,87 @@ { - "name": "Web", + "name": "Known", "version": "1.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "Web", + "name": "Known", "version": "1.2.2", "devDependencies": { "prettier": "^3.3.1", - "vite": "^6.4.3" + "vite": "8.0.16" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", - "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", - "cpu": [ - "ppc64" - ], + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", - "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", - "cpu": [ - "arm" - ], + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", - "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", - "cpu": [ - "arm64" - ], + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", - "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", - "cpu": [ - "x64" - ], + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz", + "integrity": "sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "android" - ], + "dependencies": { + "@tybys/wasm-util": "^0.10.3" + }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.13.0 || >=23.5.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.3", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.3" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", - "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "node_modules/@oxc-project/types": { + "version": "0.133.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz", + "integrity": "sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz", + "integrity": "sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==", "cpu": [ "arm64" ], @@ -91,18 +89,18 @@ "license": "MIT", "optional": true, "os": [ - "darwin" + "android" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", - "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz", + "integrity": "sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==", "cpu": [ - "x64" + "arm64" ], "dev": true, "license": "MIT", @@ -111,30 +109,30 @@ "darwin" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", - "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz", + "integrity": "sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==", "cpu": [ - "arm64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "freebsd" + "darwin" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", - "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz", + "integrity": "sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==", "cpu": [ "x64" ], @@ -145,13 +143,13 @@ "freebsd" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", - "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz", + "integrity": "sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==", "cpu": [ "arm" ], @@ -162,149 +160,133 @@ "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", - "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz", + "integrity": "sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", - "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", - "cpu": [ - "ia32" + "libc": [ + "glibc" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", - "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz", + "integrity": "sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==", "cpu": [ - "loong64" + "arm64" ], "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", - "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", - "cpu": [ - "mips64el" + "libc": [ + "musl" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", - "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz", + "integrity": "sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", - "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz", + "integrity": "sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==", "cpu": [ - "riscv64" + "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", - "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz", + "integrity": "sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==", "cpu": [ - "s390x" + "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", - "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz", + "integrity": "sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", - "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz", + "integrity": "sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==", "cpu": [ "arm64" ], @@ -312,33 +294,35 @@ "license": "MIT", "optional": true, "os": [ - "netbsd" + "openharmony" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", - "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz", + "integrity": "sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==", "cpu": [ - "x64" + "wasm32" ], "dev": true, "license": "MIT", "optional": true, - "os": [ - "netbsd" - ], + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", - "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz", + "integrity": "sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==", "cpu": [ "arm64" ], @@ -346,16 +330,16 @@ "license": "MIT", "optional": true, "os": [ - "openbsd" + "win32" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", - "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz", + "integrity": "sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==", "cpu": [ "x64" ], @@ -363,355 +347,260 @@ "license": "MIT", "optional": true, "os": [ - "openbsd" + "win32" ], "engines": { - "node": ">=18" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", - "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", - "cpu": [ - "x64" - ], + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", - "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", - "cpu": [ - "arm64" - ], + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", - "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", - "cpu": [ - "ia32" - ], + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=18" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", - "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", - "cpu": [ - "x64" - ], + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ - "win32" + "darwin" ], "engines": { - "node": ">=18" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", - "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", - "cpu": [ - "arm" - ], + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", - "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", - "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", - "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", - "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", - "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", - "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", - "cpu": [ - "arm" - ], - "dev": true, - "libc": [ - "glibc" ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", - "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", - "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", - "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", - "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", - "cpu": [ - "loong64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", - "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", - "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", - "cpu": [ - "ppc64" - ], - "dev": true, "libc": [ "glibc" ], - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", - "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "libc": [ - "musl" ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", - "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", - "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ - "riscv64" + "arm64" ], "dev": true, "libc": [ "musl" ], - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", - "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", - "cpu": [ - "s390x" ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", - "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], @@ -719,16 +608,23 @@ "libc": [ "glibc" ], - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", - "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], @@ -736,175 +632,59 @@ "libc": [ "musl" ], - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", - "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", - "cpu": [ - "x64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", - "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", - "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", - "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", - "cpu": [ - "ia32" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", - "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", - "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", - "cpu": [ - "x64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", - "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, "engines": { - "node": ">=18" + "node": ">= 12.0.0" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.2", - "@esbuild/android-arm": "0.25.2", - "@esbuild/android-arm64": "0.25.2", - "@esbuild/android-x64": "0.25.2", - "@esbuild/darwin-arm64": "0.25.2", - "@esbuild/darwin-x64": "0.25.2", - "@esbuild/freebsd-arm64": "0.25.2", - "@esbuild/freebsd-x64": "0.25.2", - "@esbuild/linux-arm": "0.25.2", - "@esbuild/linux-arm64": "0.25.2", - "@esbuild/linux-ia32": "0.25.2", - "@esbuild/linux-loong64": "0.25.2", - "@esbuild/linux-mips64el": "0.25.2", - "@esbuild/linux-ppc64": "0.25.2", - "@esbuild/linux-riscv64": "0.25.2", - "@esbuild/linux-s390x": "0.25.2", - "@esbuild/linux-x64": "0.25.2", - "@esbuild/netbsd-arm64": "0.25.2", - "@esbuild/netbsd-x64": "0.25.2", - "@esbuild/openbsd-arm64": "0.25.2", - "@esbuild/openbsd-x64": "0.25.2", - "@esbuild/sunos-x64": "0.25.2", - "@esbuild/win32-arm64": "0.25.2", - "@esbuild/win32-ia32": "0.25.2", - "@esbuild/win32-x64": "0.25.2" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/nanoid": { @@ -947,9 +727,9 @@ } }, "node_modules/postcss": { - "version": "8.5.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.23.tgz", - "integrity": "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==", + "version": "8.5.25", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.25.tgz", + "integrity": "sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==", "dev": true, "funding": [ { @@ -991,49 +771,38 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/rollup": { - "version": "4.62.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", - "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", + "node_modules/rolldown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz", + "integrity": "sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.9" + "@oxc-project/types": "=0.133.0", + "@rolldown/pluginutils": "^1.0.0" }, "bin": { - "rollup": "dist/bin/rollup" + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.62.2", - "@rollup/rollup-android-arm64": "4.62.2", - "@rollup/rollup-darwin-arm64": "4.62.2", - "@rollup/rollup-darwin-x64": "4.62.2", - "@rollup/rollup-freebsd-arm64": "4.62.2", - "@rollup/rollup-freebsd-x64": "4.62.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", - "@rollup/rollup-linux-arm-musleabihf": "4.62.2", - "@rollup/rollup-linux-arm64-gnu": "4.62.2", - "@rollup/rollup-linux-arm64-musl": "4.62.2", - "@rollup/rollup-linux-loong64-gnu": "4.62.2", - "@rollup/rollup-linux-loong64-musl": "4.62.2", - "@rollup/rollup-linux-ppc64-gnu": "4.62.2", - "@rollup/rollup-linux-ppc64-musl": "4.62.2", - "@rollup/rollup-linux-riscv64-gnu": "4.62.2", - "@rollup/rollup-linux-riscv64-musl": "4.62.2", - "@rollup/rollup-linux-s390x-gnu": "4.62.2", - "@rollup/rollup-linux-x64-gnu": "4.62.2", - "@rollup/rollup-linux-x64-musl": "4.62.2", - "@rollup/rollup-openbsd-x64": "4.62.2", - "@rollup/rollup-openharmony-arm64": "4.62.2", - "@rollup/rollup-win32-arm64-msvc": "4.62.2", - "@rollup/rollup-win32-ia32-msvc": "4.62.2", - "@rollup/rollup-win32-x64-gnu": "4.62.2", - "@rollup/rollup-win32-x64-msvc": "4.62.2", - "fsevents": "~2.3.2" + "@rolldown/binding-android-arm64": "1.0.3", + "@rolldown/binding-darwin-arm64": "1.0.3", + "@rolldown/binding-darwin-x64": "1.0.3", + "@rolldown/binding-freebsd-x64": "1.0.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.3", + "@rolldown/binding-linux-arm64-gnu": "1.0.3", + "@rolldown/binding-linux-arm64-musl": "1.0.3", + "@rolldown/binding-linux-ppc64-gnu": "1.0.3", + "@rolldown/binding-linux-s390x-gnu": "1.0.3", + "@rolldown/binding-linux-x64-gnu": "1.0.3", + "@rolldown/binding-linux-x64-musl": "1.0.3", + "@rolldown/binding-openharmony-arm64": "1.0.3", + "@rolldown/binding-wasm32-wasi": "1.0.3", + "@rolldown/binding-win32-arm64-msvc": "1.0.3", + "@rolldown/binding-win32-x64-msvc": "1.0.3" } }, "node_modules/source-map-js": { @@ -1047,14 +816,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -1063,25 +832,32 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, "node_modules/vite": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz", - "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==", + "version": "8.0.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.16.tgz", + "integrity": "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.15", + "rolldown": "1.0.3", + "tinyglobby": "^0.2.17" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -1090,14 +866,15 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" @@ -1106,13 +883,16 @@ "@types/node": { "optional": true }, - "jiti": { + "@vitejs/devtools": { "optional": true }, - "less": { + "esbuild": { + "optional": true + }, + "jiti": { "optional": true }, - "lightningcss": { + "less": { "optional": true }, "sass": { diff --git a/Web/package.json b/Web/package.json index b3334a3..5d2a017 100644 --- a/Web/package.json +++ b/Web/package.json @@ -10,6 +10,6 @@ }, "devDependencies": { "prettier": "^3.3.1", - "vite": "^6.4.3" + "vite": "8.0.16" } } diff --git a/Web/src/script.js b/Web/src/script.js index 6b57e0e..d94355f 100644 --- a/Web/src/script.js +++ b/Web/src/script.js @@ -105,6 +105,19 @@ document.addEventListener('DOMContentLoaded', () => { } createParticles(); + // ===== SVG Illustrations (loaded inline to inherit theme variables) ===== + document.querySelectorAll('[data-svg]').forEach((container) => { + fetch(container.dataset.svg) + .then((res) => { + if (!res.ok) throw new Error(`Failed to load ${container.dataset.svg}`); + return res.text(); + }) + .then((svgText) => { + container.innerHTML = svgText; + }) + .catch((err) => console.error('Failed to load SVG:', err)); + }); + // ===== Scroll Reveal (Intersection Observer) ===== const revealElements = document.querySelectorAll('.scroll-reveal'); @@ -162,6 +175,123 @@ document.addEventListener('DOMContentLoaded', () => { } } + // ===== Floating Logo: Fly to About description ===== + const aboutSection = document.getElementById('about'); + const aboutLogoColumn = + aboutSection && aboutSection.querySelector('.about-logo-column'); + const aboutContent = + aboutSection && aboutSection.querySelector('.about-content'); + const logo = document.querySelector('.logo'); + const LOGO_FLY_DURATION = 600; + let logoFlying = false; + let logoTrackReady = false; + + function isAboutActive() { + if (!aboutSection) return false; + const scrollY = window.scrollY + 100; + const top = aboutSection.offsetTop; + return scrollY >= top && scrollY < top + aboutSection.offsetHeight; + } + + function aboutTargetViewport() { + const colRect = aboutLogoColumn.getBoundingClientRect(); + const contentRect = aboutContent.getBoundingClientRect(); + return { + left: colRect.left + colRect.width / 2 - logo.offsetWidth / 2, + top: contentRect.top + contentRect.height / 2 - logo.offsetHeight / 2, + }; + } + + function logoSlotViewport() { + const navRect = nav.getBoundingClientRect(); + const padLeft = parseFloat(getComputedStyle(nav).paddingLeft) || 0; + return { + left: navRect.left + padLeft, + top: navRect.top + (navRect.height - logo.offsetHeight) / 2, + }; + } + + function cancelLogoAnimations() { + logo.getAnimations().forEach((anim) => anim.cancel()); + } + + function flyLogoToAbout() { + if (!logo || logoFlying) return; + cancelLogoAnimations(); + logoFlying = true; + logoTrackReady = false; + nav.classList.add('about-active'); + document.body.appendChild(logo); + logo.classList.add('logo-fixed'); + logo.classList.add('logo-about-large'); + const slot = logoSlotViewport(); + const target = aboutTargetViewport(); + logo.style.left = slot.left + 'px'; + logo.style.top = slot.top + 'px'; + const anim = logo.animate( + [ + { left: slot.left + 'px', top: slot.top + 'px' }, + { left: target.left + 'px', top: target.top + 'px' }, + ], + { + duration: LOGO_FLY_DURATION, + easing: 'cubic-bezier(0.16, 1, 0.3, 1)', + fill: 'both', + }, + ); + anim.onfinish = () => { + anim.cancel(); + logoTrackReady = true; + logo.style.left = target.left + 'px'; + logo.style.top = target.top + 'px'; + }; + } + + function flyLogoBack() { + if (!logo || !logoFlying) return; + cancelLogoAnimations(); + logoFlying = false; + logoTrackReady = false; + logo.classList.remove('logo-about-large'); + const currentLeft = parseFloat(logo.style.left) || 0; + const currentTop = parseFloat(logo.style.top) || 0; + const slot = logoSlotViewport(); + const anim = logo.animate( + [ + { left: currentLeft + 'px', top: currentTop + 'px' }, + { left: slot.left + 'px', top: slot.top + 'px' }, + ], + { + duration: LOGO_FLY_DURATION, + easing: 'cubic-bezier(0.16, 1, 0.3, 1)', + fill: 'both', + }, + ); + anim.onfinish = () => { + anim.cancel(); + nav.prepend(logo); + nav.classList.remove('about-active'); + logo.classList.remove('logo-fixed'); + logo.style.left = ''; + logo.style.top = ''; + }; + } + + function updateAboutLogo() { + if (!aboutSection || !aboutLogoColumn || !aboutContent || !logo) return; + if (isAboutActive()) { + if (!logoFlying) { + flyLogoToAbout(); + } else if (logoTrackReady) { + const target = aboutTargetViewport(); + logo.style.left = target.left + 'px'; + logo.style.top = target.top + 'px'; + } + } else if (logoFlying) { + flyLogoBack(); + } + } + // ===== Parallax Effect for Hero ===== const hero = document.querySelector('.hero'); @@ -186,9 +316,8 @@ document.addEventListener('DOMContentLoaded', () => { const targetId = link.getAttribute('href'); const targetSection = document.querySelector(targetId); if (targetSection) { - const offsetTop = targetSection.offsetTop - 60; window.scrollTo({ - top: offsetTop, + top: targetSection.offsetTop, behavior: 'smooth', }); } @@ -202,9 +331,8 @@ document.addEventListener('DOMContentLoaded', () => { const targetId = btn.getAttribute('href'); const targetSection = document.querySelector(targetId); if (targetSection) { - const offsetTop = targetSection.offsetTop - 60; window.scrollTo({ - top: offsetTop, + top: targetSection.offsetTop, behavior: 'smooth', }); } @@ -220,6 +348,7 @@ document.addEventListener('DOMContentLoaded', () => { updateActiveNav(); updateNavStyle(); updateParallax(); + updateAboutLogo(); ticking = false; }); ticking = true; @@ -229,6 +358,17 @@ document.addEventListener('DOMContentLoaded', () => { // Initial calls updateActiveNav(); updateNavStyle(); + updateAboutLogo(); + + window.addEventListener('resize', () => { + if (logoFlying) { + cancelLogoAnimations(); + logoTrackReady = true; + const target = aboutTargetViewport(); + logo.style.left = target.left + 'px'; + logo.style.top = target.top + 'px'; + } + }); // ===== Changelog: Fetch from GitHub ===== const GITHUB_REPO = 'Melendez1209/Known'; @@ -364,7 +504,7 @@ document.addEventListener('DOMContentLoaded', () => { } }); }, - { threshold: 0.15 } + { threshold: 0.15 }, ); sectionObserver.observe(changelogSection); }