diff --git a/deprecated/tools/+page.svelte b/deprecated/tools/+page.svelte deleted file mode 100644 index 8c8e891..0000000 --- a/deprecated/tools/+page.svelte +++ /dev/null @@ -1,56 +0,0 @@ - - -
- -
-

- Tools (NOT FINISHED. come back in the future.) -

- These are the tools collected from different places of the internet - - -
- -
-

MPUs/SoCs

- Whatever acronym you want lol -
- - -
-
- -
- I if you have tool suggestions, then either create an issue, create a - pull request, or send an email. I probably wont add it though, since - this is free work lol. -
-
-
-
diff --git a/deprecated/tools/battery-life-calculator/+page.svelte b/deprecated/tools/battery-life-calculator/+page.svelte deleted file mode 100644 index ab35b3c..0000000 --- a/deprecated/tools/battery-life-calculator/+page.svelte +++ /dev/null @@ -1,183 +0,0 @@ - - -
- -
-

Battery life calculator

- - Calculates the time a battery will last. Too lazy to explain - more. - - - -
- -
-

Software

-
-
- Duration of code execution -
- -
- sec -
-
-
-
- sleep time -
- -
- sec -
-
-
- -
-

Hardware

-
-
- Use custom values -
- -
-
- - {#if !useCustom} -
- - - {#if selectedMcu != undefined && selectedMcu?.wifi != undefined} -

- wifi -

- {/if} - {#if selectedMcu != undefined && selectedMcu?.wifi != undefined} -

- ble -

- {/if} -
- {:else} -
- Duration of code execution -
- -
- sec -
-
-
-
- sleep time -
- -
- sec -
-
-
- {/if} -
-
- -
- Source for the calculations is at this - github - and the - original website. - I just mearly made additions. -
-
-
-
- - diff --git a/deprecated/tools/battery-life-calculator/pageSrc/BatteryCalc.ts b/deprecated/tools/battery-life-calculator/pageSrc/BatteryCalc.ts deleted file mode 100644 index 2d05ee8..0000000 --- a/deprecated/tools/battery-life-calculator/pageSrc/BatteryCalc.ts +++ /dev/null @@ -1,123 +0,0 @@ -export class BatteryLifeCalculator { - timeRunSeconds: number; - timeSleepSeconds: number; - consumptionActiveMilliAmpHours: number; - consumptionSleepMilliAmpHours: number; - powerBatteryTotalMilliAmpHours: number; - powerBatteryBufferBeforeEmptyPercent: number; - - constructor( - timeRunSeconds: number, - timeSleepSeconds: number, - consumptionActiveMilliAmpHours: number, - consumptionSleepMilliAmpHours: number, - powerBatteryTotalMilliAmpHours: number, - powerBatteryBufferBeforeEmptyPercent: number = 20 - ) { - this.timeRunSeconds = timeRunSeconds; - this.timeSleepSeconds = timeSleepSeconds; - this.consumptionActiveMilliAmpHours = consumptionActiveMilliAmpHours; - this.consumptionSleepMilliAmpHours = consumptionSleepMilliAmpHours; - this.powerBatteryTotalMilliAmpHours = powerBatteryTotalMilliAmpHours; - this.powerBatteryBufferBeforeEmptyPercent = powerBatteryBufferBeforeEmptyPercent; - - console.log( - "The source of this battery calc is here: https://github.com/simonneutert/batterylife-calculator\nI was too lazy to make the math myself." - ); - } - - // public API - - milliAmpToMicroAmp(milliAmps: number): number { - return milliAmps * 1000; - } - - microAmpToMilliAmp(milliAmps: number): number { - return milliAmps * 0.001; - } - - calculate(): { - powerAveragePerHour: number; - runtimeHoursEstimated: number; - runtimeDaysEstimated: number; - runtimeDaysRemainingHoursEstimated: number; - } { - return { - powerAveragePerHour: this.powerEstimatedHourly(), - runtimeHoursEstimated: this.runtimeHoursEstimated(), - runtimeDaysEstimated: this.runtimeDaysEstimated(), - runtimeDaysRemainingHoursEstimated: this.runtimeDaysRemainingHoursEstimated(), - }; - } - - powerEstimatedHourly(): number { - return this.calcPowerEst( - this.powerRun(), - this.consumptionActiveMilliAmpHours, - this.powerSleep(), - this.consumptionSleepMilliAmpHours - ); - } - - runtimeHoursEstimated(): number { - return parseInt((this.powerLipo() / this.powerEstimatedHourly()).toString(), 10); - } - - runtimeDaysEstimated(): number { - return parseInt((this.runtimeHoursEstimated() / 24).toString(), 10); - } - - runtimeDaysRemainingHoursEstimated(): number { - return parseInt((this.runtimeHoursEstimated() % 24).toString(), 10); - } - - // private methods - - private roundOff(x: number): number { - return Math.round(x * 100.0) / 100.0; - } - - private calcPowerLipo(x: number, y: number): number { - return parseFloat(((x * (100 - y)) / 100).toString()); - } - - private calcRuns(x: number, y: number): number { - return parseFloat((60 / (x + y)).toString()); - } - - private calcRunsHour(x: number, y: number): number { - return parseFloat((3600 / (x + y)).toString()); - } - - private calcPowerRun(x: number, y: number): number { - return parseFloat(((x / (x + y)) * 3600).toString()); - } - - private calcPowerSleep(x: number, y: number): number { - return parseFloat(((y / (x + y)) * 3600).toString()); - } - - powerLipo(): number { - return this.calcPowerLipo(this.powerBatteryTotalMilliAmpHours, this.powerBatteryBufferBeforeEmptyPercent); - } - - runs(): number { - return this.calcRuns(this.timeRunSeconds, this.timeSleepSeconds); - } - - runsHour(): number { - return this.calcRunsHour(this.timeRunSeconds, this.timeSleepSeconds); - } - - powerRun(): number { - return this.calcPowerRun(this.timeRunSeconds, this.timeSleepSeconds); - } - - powerSleep(): number { - return this.calcPowerSleep(this.timeRunSeconds, this.timeSleepSeconds); - } - - private calcPowerEst(a: number, b: number, c: number, d: number): number { - return parseFloat(((a / 3600) * b + (c / 3600) * d).toString()); - } -} diff --git a/deprecated/tools/battery-life-calculator/pageSrc/MCU_defs.ts b/deprecated/tools/battery-life-calculator/pageSrc/MCU_defs.ts deleted file mode 100644 index d4372f2..0000000 --- a/deprecated/tools/battery-life-calculator/pageSrc/MCU_defs.ts +++ /dev/null @@ -1,63 +0,0 @@ -export interface MCU_Type { - name: string; - cpu: { [key: string]: Number }; // state: power consumption - sleep: { [key: string]: Number }; - wifi?: { [key: string]: Number }; - bluetooth?: { [key: string]: Number }; -} - -const MCUs: MCU_Type[] = [ - { - name: "esp32-s3", - cpu: { // mili amps - single_core_40MHz: 21.8, - dual_core_40MHz: 24.4, - single_core_80MHz: 42.6, - dual_core_80MHz: 47.3, - single_core_160MHz: 54.6, - dual_core_160MHz: 54.1, - single_core_240MHz: 65.9, - dual_core_240MHz: 81.3, - }, - sleep: { - - }, - wifi: { // - dBm_21: 318.2, - sleep: 10 - }, - bluetooth: { - active: 100, - sleep: 5 - } - }, - - { - name: "esp32-c3", - cpu: { - single_core_80MHz: 22, - single_core_160MHz: 54.6, - }, - sleep: { - - }, - wifi: { - active: 110, - sleep: 9 - }, - bluetooth: { - active: 90, - sleep: 4 - } - } -]; - -export function getMCU(name: string): MCU_Type | undefined{ - for (let i = 0; i < MCUs.length; i++) { - const element = MCUs[i]; - if (element.name == name) - return element - } - - return undefined; -} \ No newline at end of file diff --git a/deprecated/tools/comps/ToolButton.svelte b/deprecated/tools/comps/ToolButton.svelte deleted file mode 100644 index 8c369c6..0000000 --- a/deprecated/tools/comps/ToolButton.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - -
-
-
-
{title}
- -
-
{desc}
- -
- {#if toolIcon != undefined} - - {/if} - {btnText} -
-
-
\ No newline at end of file diff --git a/deprecated/zhen/Comps/AboutMe.svelte b/deprecated/zhen/Comps/AboutMe.svelte deleted file mode 100644 index 240d33a..0000000 --- a/deprecated/zhen/Comps/AboutMe.svelte +++ /dev/null @@ -1,18 +0,0 @@ -
-

Public CVs

-
- Rev1: Rev1.pdf -
-
- - \ No newline at end of file diff --git a/deprecated/zhen/Comps/TopNameTextPlate.svelte b/deprecated/zhen/Comps/TopNameTextPlate.svelte deleted file mode 100644 index 0373a2a..0000000 --- a/deprecated/zhen/Comps/TopNameTextPlate.svelte +++ /dev/null @@ -1,57 +0,0 @@ - - -
-
-
- - Zhentao Wei -
-

Alex

-
-
-
-
- - \ No newline at end of file diff --git a/deprecated/zhen/Comps/ZhenInformatikTimeline.svelte b/deprecated/zhen/Comps/ZhenInformatikTimeline.svelte deleted file mode 100644 index c1944be..0000000 --- a/deprecated/zhen/Comps/ZhenInformatikTimeline.svelte +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/deprecated/zhen/Utils/Vector2.ts b/deprecated/zhen/Utils/Vector2.ts deleted file mode 100644 index b455320..0000000 --- a/deprecated/zhen/Utils/Vector2.ts +++ /dev/null @@ -1,21 +0,0 @@ -export class Vector2 { - x: number; - y: number; - - constructor(x: number, y: number) { - this.x = x; - this.y = y; - } - - Add(vec2: Vector2) { - return new Vector2(this.x + vec2.x, this.y + vec2.y); - } - - Sub(vec2: Vector2) { - return new Vector2(this.x - vec2.x, this.y - vec2.y); - } - - Scale(mult: number) { - return new Vector2(this.x * mult, this.y * mult);; - } -} diff --git a/deprecated/zhen/cv/CompsRev3/AlexWatermark.svelte b/deprecated/zhen/cv/CompsRev3/AlexWatermark.svelte deleted file mode 100644 index 1f040f3..0000000 --- a/deprecated/zhen/cv/CompsRev3/AlexWatermark.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ALEX -
- - diff --git a/deprecated/zhen/cv/CompsRev3/BiggestFlex.svelte b/deprecated/zhen/cv/CompsRev3/BiggestFlex.svelte deleted file mode 100644 index 0fa5cc4..0000000 --- a/deprecated/zhen/cv/CompsRev3/BiggestFlex.svelte +++ /dev/null @@ -1,25 +0,0 @@ -
-
- - Biggest flex - -

*Gamejams that had competitions.

-
-
- The deprived devs has won every gamejam, we've participated.
-
- -
- - diff --git a/deprecated/zhen/cv/CompsRev3/BottomRightDecor.svelte b/deprecated/zhen/cv/CompsRev3/BottomRightDecor.svelte deleted file mode 100644 index d777cf8..0000000 --- a/deprecated/zhen/cv/CompsRev3/BottomRightDecor.svelte +++ /dev/null @@ -1,53 +0,0 @@ - - -
-
-
-
-
- - - diff --git a/deprecated/zhen/cv/CompsRev3/CombinedContacts.svelte b/deprecated/zhen/cv/CompsRev3/CombinedContacts.svelte deleted file mode 100644 index 5c1dba2..0000000 --- a/deprecated/zhen/cv/CompsRev3/CombinedContacts.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/deprecated/zhen/cv/CompsRev3/Contact.svelte b/deprecated/zhen/cv/CompsRev3/Contact.svelte deleted file mode 100644 index ac17410..0000000 --- a/deprecated/zhen/cv/CompsRev3/Contact.svelte +++ /dev/null @@ -1,75 +0,0 @@ -
-
- - Contact - -
-
-
-
Email
-
Zhen@deprived.dev
-
-
-
Phone
-
+45 42535723
-
-
-
LinkedIn
- Zhentao-Wei -
-
-
- - diff --git a/deprecated/zhen/cv/CompsRev3/Education.svelte b/deprecated/zhen/cv/CompsRev3/Education.svelte deleted file mode 100644 index d4d14e0..0000000 --- a/deprecated/zhen/cv/CompsRev3/Education.svelte +++ /dev/null @@ -1,47 +0,0 @@ - - -
-
- Education -
-
- - DTU
-

AI and data

-
- - Next
-

Computer science

-
- - Master class
-

SAS Programming

-
- - Emphasys center
-

VR development

-
-
-
- - - diff --git a/deprecated/zhen/cv/CompsRev3/Experience.svelte b/deprecated/zhen/cv/CompsRev3/Experience.svelte deleted file mode 100644 index 6dcaf8e..0000000 --- a/deprecated/zhen/cv/CompsRev3/Experience.svelte +++ /dev/null @@ -1,78 +0,0 @@ - - -
-
- Experience -
-
-
- - Full-stack
- Yaaumma
- Feb 2025 - Now -
-
-
- - Data annotator
- GrazperAI
- Jul 2024 - Now -
-
-
- - 3D printer manager - Volunteer
- Makerspace - kildevæld Kulturcenter
- Nov 2023 - Now -
-
-
- - Machine Learning Engineer - Short term intern
- Product design department - Epos
- Apr 2024 - Apr 2024 -
-
-
- - Assistant - Short term intern
- Khora Virtual Reality
- Oct 2020 - Oct 2020 -
-
-
-
- - diff --git a/deprecated/zhen/cv/CompsRev3/IconAndText.svelte b/deprecated/zhen/cv/CompsRev3/IconAndText.svelte deleted file mode 100644 index e2b2463..0000000 --- a/deprecated/zhen/cv/CompsRev3/IconAndText.svelte +++ /dev/null @@ -1,43 +0,0 @@ - - -
- {imageCaption} -
- - - -
-
- - - diff --git a/deprecated/zhen/cv/CompsRev3/IconAndText2.svelte b/deprecated/zhen/cv/CompsRev3/IconAndText2.svelte deleted file mode 100644 index b2e0c94..0000000 --- a/deprecated/zhen/cv/CompsRev3/IconAndText2.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - -
-
- {imageCaption} -
-
- - - -
-
- - - diff --git a/deprecated/zhen/cv/CompsRev3/LeftTopDecor.svelte b/deprecated/zhen/cv/CompsRev3/LeftTopDecor.svelte deleted file mode 100644 index 741fe6a..0000000 --- a/deprecated/zhen/cv/CompsRev3/LeftTopDecor.svelte +++ /dev/null @@ -1,66 +0,0 @@ - - -
-
- -
-
-
-
- -
-
-
- - diff --git a/deprecated/zhen/cv/CompsRev3/LinkToSource.svelte b/deprecated/zhen/cv/CompsRev3/LinkToSource.svelte deleted file mode 100644 index a58cf61..0000000 --- a/deprecated/zhen/cv/CompsRev3/LinkToSource.svelte +++ /dev/null @@ -1,106 +0,0 @@ - - -
-
-
-
- This CV was made using html, css and SvelteKit logo -
- Sources: - CV source code - and - My Website -
-
-
- - diff --git a/deprecated/zhen/cv/CompsRev3/LinkedInQR.svelte b/deprecated/zhen/cv/CompsRev3/LinkedInQR.svelte deleted file mode 100644 index 0e9d2f8..0000000 --- a/deprecated/zhen/cv/CompsRev3/LinkedInQR.svelte +++ /dev/null @@ -1,58 +0,0 @@ - - -
-
LinkedIn
-
{@html QRCode}
-
- - diff --git a/deprecated/zhen/cv/CompsRev3/NameAndImage.svelte b/deprecated/zhen/cv/CompsRev3/NameAndImage.svelte deleted file mode 100644 index 2d4ec7a..0000000 --- a/deprecated/zhen/cv/CompsRev3/NameAndImage.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - -
- -
- Zhentao Wei - -
-
- - diff --git a/deprecated/zhen/cv/CompsRev3/NamePlate.svelte b/deprecated/zhen/cv/CompsRev3/NamePlate.svelte deleted file mode 100644 index b752996..0000000 --- a/deprecated/zhen/cv/CompsRev3/NamePlate.svelte +++ /dev/null @@ -1,21 +0,0 @@ -
- - - Zhentao Wei -
- (He/Him) - -
- -
- - diff --git a/deprecated/zhen/cv/CompsRev3/OtherContact.svelte b/deprecated/zhen/cv/CompsRev3/OtherContact.svelte deleted file mode 100644 index 96bb5d5..0000000 --- a/deprecated/zhen/cv/CompsRev3/OtherContact.svelte +++ /dev/null @@ -1,70 +0,0 @@ -
-
- - Other - -
-
-
-
Itch.io
- botalex.itch.io -
-
-
Github
- @MagicBOTAlex -
-
-
- - diff --git a/deprecated/zhen/cv/CompsRev3/Profile.svelte b/deprecated/zhen/cv/CompsRev3/Profile.svelte deleted file mode 100644 index 5677009..0000000 --- a/deprecated/zhen/cv/CompsRev3/Profile.svelte +++ /dev/null @@ -1,34 +0,0 @@ -
-
- - About me - -
- I know the languages listed above in the decor! -
-
- - I love learning on my own. I've placed my education at the bottom of my CV. - This is because everything I've learnt is on my own, and I refuse to give too much credit to my education. - I encurage you to checkout which Open-source projects I've worked on, on my github. -
-
- Other than my github, I've listed some projectss highlighted below. :) -
- -
- - diff --git a/deprecated/zhen/cv/CompsRev3/RepeatedSkills.svelte b/deprecated/zhen/cv/CompsRev3/RepeatedSkills.svelte deleted file mode 100644 index acc7e7e..0000000 --- a/deprecated/zhen/cv/CompsRev3/RepeatedSkills.svelte +++ /dev/null @@ -1,62 +0,0 @@ - - -
- {#each { length: targetTextHeight } as _, i} - - {GrabRandomString()} - - {/each} -
- - \ No newline at end of file diff --git a/deprecated/zhen/cv/CompsRev3/ShortProfile.svelte b/deprecated/zhen/cv/CompsRev3/ShortProfile.svelte deleted file mode 100644 index 6773bd2..0000000 --- a/deprecated/zhen/cv/CompsRev3/ShortProfile.svelte +++ /dev/null @@ -1,29 +0,0 @@ -
-
- - Short profile - -
-
- ◾ Full-stack at Yaaumma
- ◾ "AI and data" at DTU.
- ◾ Working at GrazperAI
- ◾ Volunteer at Kildevæld Makerspace. -
- -
- - diff --git a/deprecated/zhen/cv/CompsRev3/TableOfProjects.svelte b/deprecated/zhen/cv/CompsRev3/TableOfProjects.svelte deleted file mode 100644 index b2f470d..0000000 --- a/deprecated/zhen/cv/CompsRev3/TableOfProjects.svelte +++ /dev/null @@ -1,88 +0,0 @@ -
-
- - List of big projects - -
- It is likely I'm working on something new, as you're reading this. -
- Contact me if you're curious! :D -
-
-
-
-
Computer vision
-
Implimented YoloV1 from scratch. (object detection)
-
-
-
Arduino
-
Built my own claw machine from scratch.
-
-
-
App dev
-
Made an Doulingo'ish app for learning chinese.
-
-
-
Open-source
-
I contribute often to Open-source
-
-
-
PCB designing
-
I am currently designing my own circuit board
-
-
-
- - diff --git a/deprecated/zhen/cv/cv.zip b/deprecated/zhen/cv/cv.zip deleted file mode 100644 index 469b296..0000000 Binary files a/deprecated/zhen/cv/cv.zip and /dev/null differ diff --git a/deprecated/zhen/cv/rev3/+page.svelte b/deprecated/zhen/cv/rev3/+page.svelte deleted file mode 100644 index ad1757b..0000000 --- a/deprecated/zhen/cv/rev3/+page.svelte +++ /dev/null @@ -1,306 +0,0 @@ - - -Zhentao Wei's CV {getFormattedDate()} - - - - - -
-
- Under here is my CV rev1 for an application made entirely in HTML and CSS. - The page is designed to be saved as PDF. This can be done by pressing
- P -
- + -
CTRL
- , then set scaling to 100% and no margins. Lastly, select save to PDF or print. -
-
- I have to sadly recommend chrome for this process. Firefox somehow messes with - the quality of the PDF :( -
-
- -
-
-
- - -
-
-
- -
- -
- -
- -
-
-
-
-
- -
- -
-
- - - - - -
-
-
-
- - diff --git a/deprecated/zhen/notes/physics/sharedComps/A4.svelte b/deprecated/zhen/notes/physics/sharedComps/A4.svelte deleted file mode 100644 index f7ab836..0000000 --- a/deprecated/zhen/notes/physics/sharedComps/A4.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
-
-
- -
- - {#if bottomBorder} -
- {/if} -
-
\ No newline at end of file diff --git a/jsconfig.json b/jsconfig.json index b3052b0..fd81206 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -35,6 +35,9 @@ ], "@e/*": [ "./src/optimizers/*" + ], + "$paraglide/*": [ + "./src/paraglide/*" ] } } diff --git a/messages/dk.json b/messages/dk.json new file mode 100644 index 0000000..19134b3 --- /dev/null +++ b/messages/dk.json @@ -0,0 +1,28 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "example_message": "Guten Tag {username}", + "zhen": { + "cv": { + "profile": { + "title": "Om mig", + "tooltip": "Jeg kender de sprog I baggrunden!", + "long": "Jeg elsker at lære på egen hånd, og jeg prøver altid at være ærlig. eg er meget selvmotiveret og fuldfører som regel de opgaver, jeg sætter mig for. Det giver mig overskud til utallige hobbyer såsom 3D-print, lodning, programmering, og VR.\n\nUdover min GitHub har jeg fremhævet nogle projekter nedenfor. :)" + }, + "flex": { + "title": "Størreste bedrift", + "tooltip": "*Gamejams der havde konkurancer", + "body": "Mit hold The deprived devs har vundet alle Game Jams, som vi har deltaget!" + }, + "projects": { + "title": "Fremhævet projekter", + "tooltip": "Jeg arbejder sikkert på noget nyt. Du er altid velkommen til at spørge!", + "cv": "Denne CV er lavet fuldstændig I HTML, CSS, og Svelte", + "CV": "Implimenteret YoloV1 fra bunden (Objekt genkendelse)", + "embedded": "Designet og bygget en CN Maskine", + "open": "Bidrager ofte til open-source", + "pcb": "Har designet flere printed circuit boards (PCB'er)", + "kube": "Multi node HA kube cluster med venner" + } + } + } +} diff --git a/messages/en.json b/messages/en.json new file mode 100644 index 0000000..ddf9f08 --- /dev/null +++ b/messages/en.json @@ -0,0 +1,27 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "example_message": "Guten Tag {username}", + "zhen": { + "cv": { + "profile": { + "title": "About me", + "tooltip": "I know the languages in the decor!", + "long": "I love learning on my own, and I try to be honest. I am highly self-motivated and I usually archive any task I put my mind to. This enables me to have countless hobbies, such as 3D printing, soldering, programming, and VR.\n\nOther than my github, I've listed some projects highlighted below. :)" + }, + "flex": { + "title": "Key Achievement", + "body": "The The deprived devs has won every gamejam we've participated in!" + }, + "projects": { + "title": "Big projects", + "tooltip": "Contact me if you're curious! :D", + "cv": "This CV is made with HTML, CSS, and Svelte", + "CV": "Implimented YoloV1 from scratch. (object detection)", + "embedded": "Built custom CNC machine", + "open": "Often contribute to Open-source", + "pcb": "I have designed multiple Printed Circuit Boards (PCBs)", + "kube": "Multi node HA Kubernetes cluster with my friends" + } + } + } +} diff --git a/package-lock.json b/package-lock.json index 501db8a..4f4fc0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,15 +10,19 @@ "dependencies": { "@lucide/svelte": "^0.487.0", "@tailwindcss/vite": "^4.1.3", + "i18n": "^0.15.3", "lucide-svelte": "^0.475.0", "marked": "^16.2.0", "pocketbase": "^0.26.2", + "svelte-i18n": "^4.0.1", "svelte-katex": "^0.1.2", "svelte-media-queries": "^1.6.2", "theme-change": "^2.5.0", "zod": "^4.1.11" }, "devDependencies": { + "@inlang/cli": "^3.0.0", + "@inlang/paraglide-js": "^2.9.1", "@sveltejs/adapter-auto": "^3.0.0", "@sveltejs/adapter-static": "^3.0.1", "@sveltejs/kit": "^2.20.4", @@ -78,6 +82,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -619,6 +624,130 @@ "node": ">=12" } }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.6.tgz", + "integrity": "sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==", + "license": "MIT", + "dependencies": { + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/intl-localematcher": "0.6.2", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", + "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.4.tgz", + "integrity": "sha512-7kR78cRrPNB4fjGFZg3Rmj5aah8rQj9KPzuLsmcSn4ipLXQvC04keycTI1F7kJYDwIXtT2+7IDEto842CfZBtw==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.6", + "@formatjs/icu-skeleton-parser": "1.8.16", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.16", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.16.tgz", + "integrity": "sha512-H13E9Xl+PxBd8D5/6TVUluSpxGNvFSlN/b3coUp0e0JpuWXXnQDiavIpY3NnvSp4xhEMoXyyBvVfdFX8jglOHQ==", + "license": "MIT", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.6", + "tslib": "^2.8.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.2.tgz", + "integrity": "sha512-XOMO2Hupl0wdd172Y06h6kLpBz6Dv+J4okPLl4LPtzbr8f66WbIoy4ev98EBuZ6ZK4h5ydTN6XneT4QVpD7cdA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@inlang/cli": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@inlang/cli/-/cli-3.1.4.tgz", + "integrity": "sha512-nVW1fzJVoNNX1EdBcfrg7TO7kpzKgo+lxWBwSPBNUrU3Z9Yv4QXeJCpEYJ5spR69L2O7jujMMQkxbYaOVEldZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@inlang/sdk": "2.6.2", + "esbuild-wasm": "^0.19.2" + }, + "bin": { + "inlang": "bin/run.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@inlang/paraglide-js": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@inlang/paraglide-js/-/paraglide-js-2.9.1.tgz", + "integrity": "sha512-hciFnOKGVA10BmLixmFFIOZwNFqlyhKwvC8V+mEh/XP1WaEUtwijBlcIn2odwN9obuGxI8Fu05KHOUuETrpj+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inlang/recommend-sherlock": "^0.2.1", + "@inlang/sdk": "2.6.2", + "commander": "11.1.0", + "consola": "3.4.0", + "json5": "2.2.3", + "unplugin": "^2.1.2", + "urlpattern-polyfill": "^10.0.0" + }, + "bin": { + "paraglide-js": "bin/run.js" + } + }, + "node_modules/@inlang/paraglide-js/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@inlang/recommend-sherlock": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@inlang/recommend-sherlock/-/recommend-sherlock-0.2.1.tgz", + "integrity": "sha512-ckv8HvHy/iTqaVAEKrr+gnl+p3XFNwe5D2+6w6wJk2ORV2XkcRkKOJ/XsTUJbPSiyi4PI+p+T3bqbmNx/rDUlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "comment-json": "^4.2.3" + } + }, + "node_modules/@inlang/sdk": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@inlang/sdk/-/sdk-2.6.2.tgz", + "integrity": "sha512-eOgAX+eQpHvD/H4BMILc4tZ85XviTlwr/51RKkKUHozVVthj5avUPKP+4N4vcTUrqSscl2atTh9NbNTuvoBN0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lix-js/sdk": "0.4.7", + "@sinclair/typebox": "^0.31.17", + "kysely": "^0.27.4", + "sqlite-wasm-kysely": "0.3.0", + "uuid": "^13.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", @@ -639,6 +768,17 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -661,6 +801,46 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@lix-js/sdk": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/@lix-js/sdk/-/sdk-0.4.7.tgz", + "integrity": "sha512-pRbW+joG12L0ULfMiWYosIW0plmW4AsUdiPCp+Z8rAsElJ+wJ6in58zhD3UwUcd4BNcpldEGjg6PdA7e0RgsDQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@lix-js/server-protocol-schema": "0.1.1", + "dedent": "1.5.1", + "human-id": "^4.1.1", + "js-sha256": "^0.11.0", + "kysely": "^0.27.4", + "sqlite-wasm-kysely": "0.3.0", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@lix-js/sdk/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@lix-js/server-protocol-schema": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@lix-js/server-protocol-schema/-/server-protocol-schema-0.1.1.tgz", + "integrity": "sha512-jBeALB6prAbtr5q4vTuxnRZZv1M2rKe8iNqRQhFJ4Tv7150unEa0vKyz0hs8Gl3fUGsWaNJBh3J8++fpbrpRBQ==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/@lucide/svelte": { "version": "0.487.0", "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.487.0.tgz", @@ -669,6 +849,50 @@ "svelte": "^5" } }, + "node_modules/@messageformat/core": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@messageformat/core/-/core-3.4.0.tgz", + "integrity": "sha512-NgCFubFFIdMWJGN5WuQhHCNmzk7QgiVfrViFxcS99j7F5dDS5EP6raR54I+2ydhe4+5/XTn/YIEppFaqqVWHsw==", + "license": "MIT", + "dependencies": { + "@messageformat/date-skeleton": "^1.0.0", + "@messageformat/number-skeleton": "^1.0.0", + "@messageformat/parser": "^5.1.0", + "@messageformat/runtime": "^3.0.1", + "make-plural": "^7.0.0", + "safe-identifier": "^0.4.1" + } + }, + "node_modules/@messageformat/date-skeleton": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@messageformat/date-skeleton/-/date-skeleton-1.1.0.tgz", + "integrity": "sha512-rmGAfB1tIPER+gh3p/RgA+PVeRE/gxuQ2w4snFWPF5xtb5mbWR7Cbw7wCOftcUypbD6HVoxrVdyyghPm3WzP5A==", + "license": "MIT" + }, + "node_modules/@messageformat/number-skeleton": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@messageformat/number-skeleton/-/number-skeleton-1.2.0.tgz", + "integrity": "sha512-xsgwcL7J7WhlHJ3RNbaVgssaIwcEyFkBqxHdcdaiJzwTZAWEOD8BuUFxnxV9k5S0qHN3v/KzUpq0IUpjH1seRg==", + "license": "MIT" + }, + "node_modules/@messageformat/parser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@messageformat/parser/-/parser-5.1.1.tgz", + "integrity": "sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==", + "license": "MIT", + "dependencies": { + "moo": "^0.5.1" + } + }, + "node_modules/@messageformat/runtime": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@messageformat/runtime/-/runtime-3.0.2.tgz", + "integrity": "sha512-dkIPDCjXcfhSHgNE1/qV6TeczQZR59Yx0xXeafVKgK3QVWoxc38ljwpksUpnzCGvN151KUbCJTDZVmahtf1YZw==", + "license": "MIT", + "dependencies": { + "make-plural": "^7.0.0" + } + }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -1243,6 +1467,23 @@ "win32" ] }, + "node_modules/@sinclair/typebox": { + "version": "0.31.28", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.31.28.tgz", + "integrity": "sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sqlite.org/sqlite-wasm": { + "version": "3.48.0-build4", + "resolved": "https://registry.npmjs.org/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.48.0-build4.tgz", + "integrity": "sha512-hI6twvUkzOmyGZhQMza1gpfqErZxXRw6JEsiVjUbo7tFanVD+8Oil0Ih3l2nGzHdxPI41zFmfUQG7GHqhciKZQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "sqlite-wasm": "bin/index.js" + } + }, "node_modules/@sveltejs/acorn-typescript": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", @@ -1277,6 +1518,7 @@ "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.22.2.tgz", "integrity": "sha512-2MvEpSYabUrsJAoq5qCOBGAlkICjfjunrnLcx3YAk2XV7TvAIhomlKsAgR4H/4uns5rAfYmj7Wet5KRtc8dPIg==", "dev": true, + "peer": true, "dependencies": { "@sveltejs/acorn-typescript": "^1.0.5", "@types/cookie": "^0.6.0", @@ -1309,6 +1551,7 @@ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", "dev": true, + "peer": true, "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", "debug": "^4.3.4", @@ -1528,6 +1771,7 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -1865,6 +2109,7 @@ "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1899,6 +2144,13 @@ "node": ">= 0.4" } }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true, + "license": "MIT" + }, "node_modules/autoprefixer": { "version": "10.4.21", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", @@ -2003,6 +2255,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -2089,6 +2342,22 @@ "node": ">=18" } }, + "node_modules/cli-color": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.64", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -2105,12 +2374,37 @@ "node": ">= 12" } }, + "node_modules/comment-json": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", + "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/consola": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz", + "integrity": "sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2126,6 +2420,13 @@ "node": ">= 0.6" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", @@ -2164,6 +2465,19 @@ "node": ">=4" } }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/daisyui": { "version": "5.0.46", "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.0.46.tgz", @@ -2174,10 +2488,10 @@ } }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -2190,11 +2504,31 @@ } } }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" + }, + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2271,12 +2605,64 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, "node_modules/es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", "dev": true }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "license": "ISC", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -2314,6 +2700,19 @@ "@esbuild/win32-x64": "0.21.5" } }, + "node_modules/esbuild-wasm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.19.12.tgz", + "integrity": "sha512-Zmc4hk6FibJZBcTx5/8K/4jT3/oG1vkGTEeKJUQFCUQKimD6Q7+adp/bdVQyYJFolMKaXkQnVZdV4O5ZaTYmyQ==", + "dev": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -2328,6 +2727,35 @@ "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "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/esrap": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.1.0.tgz", @@ -2339,8 +2767,35 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/fast-printf": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/fast-printf/-/fast-printf-1.6.10.tgz", + "integrity": "sha512-GwTgG9O4FVIdShhbVF3JxOgSBY2+ePGsu2V/UONgoCPzF9VY6ZdBMKsHKCYQHZwNk3qNouUolRDsgVxcVA5G1w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=10.0" + } }, "node_modules/fill-range": { "version": "7.1.1", @@ -2428,6 +2883,18 @@ "node": ">= 6" } }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "license": "MIT" + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "license": "MIT" + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -2442,6 +2909,36 @@ "node": ">=12.0.0" } }, + "node_modules/human-id": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.1.3.tgz", + "integrity": "sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==", + "dev": true, + "license": "MIT", + "bin": { + "human-id": "dist/cli.js" + } + }, + "node_modules/i18n": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/i18n/-/i18n-0.15.3.tgz", + "integrity": "sha512-tW/AA5R4lJZLnd60Agcd0PfXB1C2G7UqTrdNewuv/SIYdxcHkCE8w4Zx1SgCjJ+2BLuAAGIG/KXb/xNYF1lO5Q==", + "license": "MIT", + "dependencies": { + "@messageformat/core": "^3.4.0", + "debug": "^4.4.3", + "fast-printf": "^1.6.10", + "make-plural": "^7.4.0", + "math-interval-parser": "^2.0.1", + "mustache": "^4.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/mashpie" + } + }, "node_modules/immutable": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", @@ -2491,6 +2988,18 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/intl-messageformat": { + "version": "10.7.18", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.18.tgz", + "integrity": "sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==", + "license": "BSD-3-Clause", + "dependencies": { + "@formatjs/ecma402-abstract": "2.3.6", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.4", + "tslib": "^2.8.0" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -2539,6 +3048,12 @@ "node": ">=0.12.0" } }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "license": "MIT" + }, "node_modules/is-reference": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", @@ -2555,6 +3070,13 @@ "jiti": "lib/jiti-cli.mjs" } }, + "node_modules/js-sha256": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.11.1.tgz", + "integrity": "sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==", + "dev": true, + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2627,6 +3149,17 @@ "node": ">=6" } }, + "node_modules/kysely": { + "version": "0.27.6", + "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.27.6.tgz", + "integrity": "sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/lightningcss": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", @@ -2897,6 +3430,15 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "license": "MIT", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, "node_modules/lucide-svelte": { "version": "0.475.0", "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.475.0.tgz", @@ -2913,6 +3455,12 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/make-plural": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-7.5.0.tgz", + "integrity": "sha512-0booA+aVYyVFoR67JBHdfVk0U08HmrBH2FrtmBqBa+NldlqXv/G2Z9VQuQq6Wgp2jDWdybEWGfBkk1cq5264WA==", + "license": "Unicode-DFS-2016" + }, "node_modules/marked": { "version": "16.4.2", "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", @@ -2925,6 +3473,34 @@ "node": ">= 20" } }, + "node_modules/math-interval-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/math-interval-parser/-/math-interval-parser-2.0.1.tgz", + "integrity": "sha512-VmlAmb0UJwlvMyx8iPhXUDnVW1F9IrGEd9CIOmv+XL8AErCUUuozoDMrgImvnYt2A+53qVX/tPW6YJurMKYsvA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/memoizee": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "es5-ext": "^0.10.64", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -2999,11 +3575,16 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "license": "BSD-3-Clause" + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, "engines": { "node": ">=4" } @@ -3020,8 +3601,16 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mustache": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "license": "MIT", + "bin": { + "mustache": "bin/mustache" + } }, "node_modules/nanoid": { "version": "3.3.11", @@ -3040,6 +3629,12 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "license": "ISC" + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -3178,6 +3773,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -3212,6 +3808,7 @@ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -3310,7 +3907,6 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, "dependencies": { "mri": "^1.1.0" }, @@ -3318,6 +3914,12 @@ "node": ">=6" } }, + "node_modules/safe-identifier": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", + "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", + "license": "ISC" + }, "node_modules/sander": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", @@ -3335,6 +3937,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", "devOptional": true, + "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -3412,6 +4015,18 @@ "node": ">=0.10.0" } }, + "node_modules/sqlite-wasm-kysely": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/sqlite-wasm-kysely/-/sqlite-wasm-kysely-0.3.0.tgz", + "integrity": "sha512-TzjBNv7KwRw6E3pdKdlRyZiTmUIE0UttT/Sl56MVwVARl/u5gp978KepazCJZewFUnlWHz9i3NQd4kOtP/Afdg==", + "dev": true, + "dependencies": { + "@sqlite.org/sqlite-wasm": "^3.48.0-build2" + }, + "peerDependencies": { + "kysely": "*" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -3428,6 +4043,7 @@ "version": "5.35.2", "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.35.2.tgz", "integrity": "sha512-uW/rRXYrhZ7Dh4UQNZ0t+oVGL1dEM+95GavCO8afAk1IY2cPq9BcZv9C3um5aLIya2y8lIeLPxLII9ASGg9Dzw==", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.3.0", "@jridgewell/sourcemap-codec": "^1.5.0", @@ -3513,6 +4129,436 @@ "highlight.js": "11.11.1" } }, + "node_modules/svelte-i18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-4.0.1.tgz", + "integrity": "sha512-jaykGlGT5PUaaq04JWbJREvivlCnALtT+m87Kbm0fxyYHynkQaxQMnIKHLm2WeIuBRoljzwgyvz0Z6/CMwfdmQ==", + "license": "MIT", + "dependencies": { + "cli-color": "^2.0.3", + "deepmerge": "^4.2.2", + "esbuild": "^0.19.2", + "estree-walker": "^2", + "intl-messageformat": "^10.5.3", + "sade": "^1.8.1", + "tiny-glob": "^0.2.9" + }, + "bin": { + "svelte-i18n": "dist/cli.js" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "svelte": "^3 || ^4 || ^5" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/svelte-i18n/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, "node_modules/svelte-katex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/svelte-katex/-/svelte-katex-0.1.2.tgz", @@ -3597,7 +4643,8 @@ "node_modules/tailwindcss": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz", - "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==" + "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==", + "peer": true }, "node_modules/tapable": { "version": "2.2.2", @@ -3642,6 +4689,29 @@ "resolved": "https://registry.npmjs.org/theme-change/-/theme-change-2.5.0.tgz", "integrity": "sha512-B/UdsgdHAGhSKHTAQnxg/etN0RaMDpehuJmZIjLMDVJ6DGIliRHGD6pODi1CXLQAN9GV0GSyB3G6yCuK05PkPQ==" }, + "node_modules/timers-ext": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "license": "MIT", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -3666,14 +4736,20 @@ "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==", - "devOptional": true + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "license": "ISC" }, "node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3682,6 +4758,35 @@ "node": ">=14.17" } }, + "node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unplugin/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", @@ -3712,16 +4817,38 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", + "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", + "dev": true, + "license": "MIT" + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/uuid": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, "node_modules/vite": { "version": "5.4.19", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -3804,6 +4931,13 @@ } } }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true, + "license": "MIT" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 76f1686..618ad9a 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "build": "vite build", "preview": "vite preview", "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --compiler-warnings \"css-unused-selector:ignore,unused-export-let:ignore\" --threshold error", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch --threshold error" + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch --threshold error", + "machine-translate": "inlang machine translate --project project.inlang" }, "devDependencies": { "@sveltejs/adapter-auto": "^3.0.0", @@ -26,15 +27,19 @@ "tailwindcss": "^4.1.3", "typescript": "^5.0.0", "vite": "^5.0.3", - "vite-plugin-svgr": "^4.2.0" + "vite-plugin-svgr": "^4.2.0", + "@inlang/paraglide-js": "^2.9.1", + "@inlang/cli": "^3.0.0" }, "type": "module", "dependencies": { "@lucide/svelte": "^0.487.0", "@tailwindcss/vite": "^4.1.3", + "i18n": "^0.15.3", "lucide-svelte": "^0.475.0", "marked": "^16.2.0", "pocketbase": "^0.26.2", + "svelte-i18n": "^4.0.1", "svelte-katex": "^0.1.2", "svelte-media-queries": "^1.6.2", "theme-change": "^2.5.0", diff --git a/project.inlang/settings.json b/project.inlang/settings.json new file mode 100644 index 0000000..c56c0e9 --- /dev/null +++ b/project.inlang/settings.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://inlang.com/schema/project-settings", + "baseLocale": "en", + "locales": ["en", "dk"], + "modules": [ + "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2/dist/index.js" + ], + "plugin.inlang.messageFormat": { + "pathPattern": "./messages/{locale}.json" + } +} diff --git a/src/routes/cv/+page.svelte b/src/routes/cv/+page.svelte index 25402a0..e5b1609 100644 --- a/src/routes/cv/+page.svelte +++ b/src/routes/cv/+page.svelte @@ -1,5 +1,7 @@ +
+
+ {m["zhen.cv.flex.title"]()} +

+ {m["zhen.cv.flex.tooltip"]()} +

+
+
+ {@html m["zhen.cv.flex.body"]()} +
diff --git a/src/routes/cv/comps/Profile.svelte b/src/routes/cv/comps/Profile.svelte index 083ce18..556c5c1 100644 --- a/src/routes/cv/comps/Profile.svelte +++ b/src/routes/cv/comps/Profile.svelte @@ -1,17 +1,16 @@ + +
- About me + {m["zhen.cv.profile.title"]()}
- I know the languages listed above in the decor! + {m["zhen.cv.profile.tooltip"]()}
- I love learning on my own, and I try to be honest. I am highly - self-motivated and I usually archive any task I put my mind to. This enables - me to have countless hobbies, such as 3D printing, soldering, programming. -
-
- Other than my github, I've listed some projects highlighted below. :) + {m["zhen.cv.profile.long"]()}
diff --git a/src/routes/cv/comps/TableOfProjects.svelte b/src/routes/cv/comps/TableOfProjects.svelte index 2e9a93b..641ab57 100644 --- a/src/routes/cv/comps/TableOfProjects.svelte +++ b/src/routes/cv/comps/TableOfProjects.svelte @@ -1,24 +1,28 @@ -
+ + +
- List of big projects + + {m["zhen.cv.projects.title"]()} +
- It is likely I'm working on something new, as you're reading this. -
- Contact me if you're curious! :D + {m["zhen.cv.projects.tooltip"]()}
-
+
HTML
-
This CV is made with HTML, CSS, and Svelte
+
{m["zhen.cv.projects.cv"]()}
Computer vision
-
Implimented YoloV1 from scratch. (object detection)
+
{m["zhen.cv.projects.CV"]()}
Arduino/embedded
-
Built custom CNC machine
+
{m["zhen.cv.projects.embedded"]()}
@@ -26,35 +30,30 @@
Open-source
-
I often contribute to Open-source
+
{m["zhen.cv.projects.open"]()}
PCB design
-
I have designed multiple Printed Circuit Boards (PCBs)
+
{m["zhen.cv.projects.pcb"]()}
Kubernetes
-
WIP: Multi node HA Kubernetes cluster with my friends
+
{m["zhen.cv.projects.kube"]()}
diff --git a/src/ts/store.ts b/src/ts/store.ts index 5519f84..860d69e 100644 --- a/src/ts/store.ts +++ b/src/ts/store.ts @@ -1,3 +1,4 @@ import { ApiService } from "./api/api"; +import path from "path"; export let api = ApiService; diff --git a/vite.config.js b/vite.config.js index 8cd8521..e3e10a7 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,3 +1,4 @@ +import { paraglideVitePlugin } from "@inlang/paraglide-js"; import tailwindcss from "@tailwindcss/vite"; import sveltekit from "./src/optimizers/sveltekit.ts"; import path from "path"; @@ -13,7 +14,14 @@ const buildTime = new Intl.DateTimeFormat("da-DK", { }).format(new Date()); export default { - plugins: [tailwindcss(), sveltekit()], + plugins: [ + paraglideVitePlugin({ + project: "./project.inlang", + outdir: "./src/paraglide", + }), + tailwindcss(), + sveltekit(), + ], define: { __BUILD_TIME__: JSON.stringify(buildTime), }, @@ -27,6 +35,7 @@ export default { "@shop": path.resolve("./src/pages/shop"), "@stores": path.resolve("./src/ts/store.ts"), "@e": path.resolve("./src/optimizers"), + $paraglide: path.resolve("src/paraglide"), }, }, server: {