diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..585552e --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,49 @@ +name: Deploy SvelteKit to GitHub Pages + +on: + push: + branches: svelteKit # Change to your default branch if different + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 23 + + - name: Install dependencies + run: npm ci + + - name: Build the SvelteKit site + run: npm run build + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: build/ + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2ca8682..3b462cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,23 @@ -_site/ -.sass-cache/ -.jekyll-cache/ -.jekyll-metadata +node_modules + +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/Gemfile b/Gemfile deleted file mode 100644 index e090c32..0000000 --- a/Gemfile +++ /dev/null @@ -1,6 +0,0 @@ -source 'https://rubygems.org' -gem 'github-pages', group: :jekyll_plugins -gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] -gem "tzinfo", '~> 1.2', platforms: [:mingw, :mswin, :x64_mingw, :jruby] -gem 'wdm', '~> 0.1.1' if Gem.win_platform? -gem 'webrick' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index f8f5189..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,264 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - activesupport (7.0.6) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) - addressable (2.8.4) - public_suffix (>= 2.0.2, < 6.0) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.11.1) - colorator (1.1.0) - commonmarker (0.23.9) - concurrent-ruby (1.2.2) - dnsruby (1.70.0) - simpleidn (~> 0.2.1) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - ethon (0.16.0) - ffi (>= 1.15.0) - eventmachine (1.2.7) - execjs (2.8.1) - faraday (2.7.10) - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) - ffi (1.15.5-x64-mingw-ucrt) - forwardable-extended (2.6.0) - gemoji (3.0.1) - github-pages (228) - github-pages-health-check (= 1.17.9) - jekyll (= 3.9.3) - jekyll-avatar (= 0.7.0) - jekyll-coffeescript (= 1.1.1) - jekyll-commonmark-ghpages (= 0.4.0) - jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.15.1) - jekyll-gist (= 1.5.0) - jekyll-github-metadata (= 2.13.0) - jekyll-include-cache (= 0.2.1) - jekyll-mentions (= 1.6.0) - jekyll-optional-front-matter (= 0.3.2) - jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.3.0) - jekyll-redirect-from (= 0.16.0) - jekyll-relative-links (= 0.6.1) - jekyll-remote-theme (= 0.4.3) - jekyll-sass-converter (= 1.5.2) - jekyll-seo-tag (= 2.8.0) - jekyll-sitemap (= 1.4.0) - jekyll-swiss (= 1.0.0) - jekyll-theme-architect (= 0.2.0) - jekyll-theme-cayman (= 0.2.0) - jekyll-theme-dinky (= 0.2.0) - jekyll-theme-hacker (= 0.2.0) - jekyll-theme-leap-day (= 0.2.0) - jekyll-theme-merlot (= 0.2.0) - jekyll-theme-midnight (= 0.2.0) - jekyll-theme-minimal (= 0.2.0) - jekyll-theme-modernist (= 0.2.0) - jekyll-theme-primer (= 0.6.0) - jekyll-theme-slate (= 0.2.0) - jekyll-theme-tactile (= 0.2.0) - jekyll-theme-time-machine (= 0.2.0) - jekyll-titles-from-headings (= 0.5.3) - jemoji (= 0.12.0) - kramdown (= 2.3.2) - kramdown-parser-gfm (= 1.1.0) - liquid (= 4.0.4) - mercenary (~> 0.3) - minima (= 2.5.1) - nokogiri (>= 1.13.6, < 2.0) - rouge (= 3.26.0) - terminal-table (~> 1.4) - github-pages-health-check (1.17.9) - addressable (~> 2.3) - dnsruby (~> 1.60) - octokit (~> 4.0) - public_suffix (>= 3.0, < 5.0) - typhoeus (~> 1.3) - html-pipeline (2.14.3) - activesupport (>= 2) - nokogiri (>= 1.4) - http_parser.rb (0.8.0) - i18n (1.14.1) - concurrent-ruby (~> 1.0) - jekyll (3.9.3) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (>= 0.7, < 2) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 2.0) - kramdown (>= 1.17, < 3) - liquid (~> 4.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (>= 1.7, < 4) - safe_yaml (~> 1.0) - jekyll-avatar (0.7.0) - jekyll (>= 3.0, < 5.0) - jekyll-coffeescript (1.1.1) - coffee-script (~> 2.2) - coffee-script-source (~> 1.11.1) - jekyll-commonmark (1.4.0) - commonmarker (~> 0.22) - jekyll-commonmark-ghpages (0.4.0) - commonmarker (~> 0.23.7) - jekyll (~> 3.9.0) - jekyll-commonmark (~> 1.4.0) - rouge (>= 2.0, < 5.0) - jekyll-default-layout (0.1.4) - jekyll (~> 3.0) - jekyll-feed (0.15.1) - jekyll (>= 3.7, < 5.0) - jekyll-gist (1.5.0) - octokit (~> 4.2) - jekyll-github-metadata (2.13.0) - jekyll (>= 3.4, < 5.0) - octokit (~> 4.0, != 4.4.0) - jekyll-include-cache (0.2.1) - jekyll (>= 3.7, < 5.0) - jekyll-mentions (1.6.0) - html-pipeline (~> 2.3) - jekyll (>= 3.7, < 5.0) - jekyll-optional-front-matter (0.3.2) - jekyll (>= 3.0, < 5.0) - jekyll-paginate (1.1.0) - jekyll-readme-index (0.3.0) - jekyll (>= 3.0, < 5.0) - jekyll-redirect-from (0.16.0) - jekyll (>= 3.3, < 5.0) - jekyll-relative-links (0.6.1) - jekyll (>= 3.3, < 5.0) - jekyll-remote-theme (0.4.3) - addressable (~> 2.0) - jekyll (>= 3.5, < 5.0) - jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) - rubyzip (>= 1.3.0, < 3.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-swiss (1.0.0) - jekyll-theme-architect (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-cayman (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-dinky (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-hacker (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-leap-day (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-merlot (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-midnight (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-minimal (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-modernist (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-primer (0.6.0) - jekyll (> 3.5, < 5.0) - jekyll-github-metadata (~> 2.9) - jekyll-seo-tag (~> 2.0) - jekyll-theme-slate (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-tactile (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-time-machine (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-titles-from-headings (0.5.3) - jekyll (>= 3.3, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - jemoji (0.12.0) - gemoji (~> 3.0) - html-pipeline (~> 2.2) - jekyll (>= 3.0, < 5.0) - kramdown (2.3.2) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.8.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.3.6) - minima (2.5.1) - jekyll (>= 3.5, < 5.0) - jekyll-feed (~> 0.9) - jekyll-seo-tag (~> 2.1) - minitest (5.19.0) - nokogiri (1.15.3-x64-mingw-ucrt) - racc (~> 1.4) - octokit (4.25.1) - faraday (>= 1, < 3) - sawyer (~> 0.9) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (4.0.7) - racc (1.7.1) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.6) - rouge (3.26.0) - ruby2_keywords (0.0.5) - rubyzip (2.3.2) - safe_yaml (1.0.5) - sass (3.7.4) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.9.2) - addressable (>= 2.3.5) - faraday (>= 0.17.3, < 3) - simpleidn (0.2.1) - unf (~> 0.1.4) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - typhoeus (1.4.0) - ethon (>= 0.9.0) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.8.2-x64-mingw-ucrt) - unicode-display_width (1.8.0) - wdm (0.1.1) - webrick (1.8.1) - -PLATFORMS - x64-mingw-ucrt - -DEPENDENCIES - github-pages - tzinfo (~> 1.2) - tzinfo-data - wdm (~> 0.1.1) - webrick - -BUNDLED WITH - 2.3.7 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d159169..0000000 --- a/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/README.md b/README.md index 7839f79..6d10278 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,38 @@ -# [mRemoteNG.org](https://mRemoteNG.org) -mRemoteNG Website +# sv +! +Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). -## Requirements -- [Ruby](https://www.ruby-lang.org) -- [Bundler](https://bundler.io/) +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npx sv create + +# create a new project in my-app +npx sv create my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` ## Building -1. Run - ```bash - bundle install - bundle exec jekyll serve --incremental --config _config.yaml,_config-dev.yaml - ``` -2. Open http://localhost:4000/ + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/_appcast-prerelease.xml b/_appcast-prerelease.xml deleted file mode 100644 index 02e9e06..0000000 --- a/_appcast-prerelease.xml +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: none -prerelease: true ---- -{% include appcast.xml %} \ No newline at end of file diff --git a/_appcast.xml b/_appcast.xml deleted file mode 100644 index 79c204c..0000000 --- a/_appcast.xml +++ /dev/null @@ -1,5 +0,0 @@ ---- -layout: none -prerelease: false ---- -{% include appcast.xml %} \ No newline at end of file diff --git a/_config-dev.yaml b/_config-dev.yaml deleted file mode 100644 index 8b19839..0000000 --- a/_config-dev.yaml +++ /dev/null @@ -1,5 +0,0 @@ -incremental: false -future: true -show_drafts: true -unpublished: true -url: http://localhost:4000 diff --git a/_config.yaml b/_config.yaml deleted file mode 100644 index b825de8..0000000 --- a/_config.yaml +++ /dev/null @@ -1,47 +0,0 @@ -title: mRemoteNG -description: The next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. -url: https://mremoteng.org -baseurl: -repository: mRemoteNG/mRemoteNG.github.io -exclude: [README.md, CNAME, Gemfile, Gemfile.lock] -permalink: /posts/:categories/:year/:month/:day/:title/ -paginate: 5 -paginate_path: /posts/:num/ -excerpt_separator: -logo: /favicon/256.png -twitter: - username: mRemoteNG -github_alt: - repository_url: https://github.com/mRemoteNG/mRemoteNG - repository_nwo: mRemoteNG/mRemoteNG - releases_url: https://github.com/mRemoteNG/mRemoteNG/releases - issues_url: https://github.com/mRemoteNG/mRemoteNG/issues - wiki_url: https://github.com/mRemoteNG/mRemoteNG/wiki - -defaults: - - - scope: - path: '' - values: - image: /favicon/256.png - - - scope: - path: '' - type: pages - values: - layout: default - - - scope: - path: '' - type: posts - values: - layout: post - -plugins: - - jekyll-avatar - - jekyll-feed - - jekyll-github-metadata - - jekyll-mentions - - jekyll-seo-tag - - jekyll-sitemap - - jemoji diff --git a/_data/authors.yaml b/_data/authors.yaml deleted file mode 100644 index 387b467..0000000 --- a/_data/authors.yaml +++ /dev/null @@ -1,17 +0,0 @@ -dmsparer: - name: David Sparer - github: sparerd - twitter: '' - avatar: https://avatars.githubusercontent.com/u/6999446?v=3 - -rmcardle: - name: Riley McArdle - github: rmcardle - twitter: '' - avatar: https://avatars.githubusercontent.com/u/177442?v=3 - -Kvarkas: - name: Dimitrij Gorodeckij - github: Kvarkas - twitter: '' - avatar: https://avatars.githubusercontent.com/u/3611964?v=4 \ No newline at end of file diff --git a/_data/releases.json b/_data/releases.json deleted file mode 100644 index 60529c3..0000000 --- a/_data/releases.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "stable": { - "name": "v1.76.20", - "published_at": "2019-04-12T14:10:45Z", - "html_url": "https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.76.20", - "assets": { - "installer": { - "browser_download_url": "https://github.com/mRemoteNG/mRemoteNG/releases/download/v1.76.20/mRemoteNG-Installer-1.76.20.24615.msi", - "checksum": "AE7406070F1B4C328C716356A6E1DE3CBA0EAEEAA8F0F490C82073BA511968CF97583D0136B38D69C15EA5C1EF0C41F74A974A7200D13099522867FF6B387338", - "size": 43593728 - }, - "portable": { - "browser_download_url": "https://github.com/mRemoteNG/mRemoteNG/releases/download/v1.76.20/mRemoteNG-Portable-1.76.20.24669.zip", - "checksum": "290DFB1401D7826F5F392CB974047314704703B5352E30F4004E6B1E20F40F6E3783DB40F358576C4B9F3DD309E7C5B8594DCE1BC62D5997BDC37E425478EF01", - "size": 39089649 - } - } - }, - "prerelease": { - "name": "v1.77.1", - "published_at": "2019-09-02T23:06:49Z", - "html_url": "https://github.com/mRemoteNG/mRemoteNG/releases/tag/v1.77.1", - "assets": { - "installer": { - "browser_download_url": "https://github.com/mRemoteNG/mRemoteNG/releases/download/v1.77.1/mRemoteNG-Installer-1.77.1.27654.msi", - "checksum": "D1CB29BA505B59E0CB6729DC4056F482F66D0287FD22286D657A4D827844285921FC589C7E8A1DE694FE862C197DD768ECF657EC713DADA3CBB86EC5CB33AE89", - "size": 43884544 - }, - "portable": { - "browser_download_url": "https://github.com/mRemoteNG/mRemoteNG/releases/download/v1.77.1/mRemoteNG-Portable-1.77.1.27713.zip", - "checksum": "6B506AF18D4F283A431B8C022EA45D49518BFFDE3885D39992C58D6BDD63708F99DF659526F112ECB2503A09F3BD279B4660C8F2D29D7927115ED0BA8E9EA38B", - "size": 39653361 - } - } - }, - "nightlybuild": { - "name": "v1.77.3.1784-NB", - "published_at": "2023-03-16T17:55:29Z", - "html_url": "https://github.com/mRemoteNG/mRemoteNG/releases/tag/2023.03.03-v1.77.3-nb", - "assets": { - "installer": { - "browser_download_url": "https://github.com/mRemoteNG/mRemoteNG/releases/download/2023.03.03-v1.77.3-nb/mRemoteNG-Installer-1.77.3.nb-1784.msi", - "checksum": "DD769DBE8F9D8F7D25637236E8C29BEC1FFA9858FBD1FA30AB72037B1495D703BE0A2AE149B7F459E7001391A82F383FCD560BEAD69D8B76641FB1798E13B3A4", - "size": 12367821 - }, - "portable": { - "browser_download_url": "https://github.com/mRemoteNG/mRemoteNG/releases/download/2022.06.13-v1.77.3-nb/Portable.-.1.77.3.NB.rar", - "checksum": "6B506AF18D4F283A431B8C022EA45D49518BFFDE3885D39992C58D6BDD63708F99DF659526F112ECB2503A09F3BD279B4660C8F2D29D7927115ED0BA8E9EA38B", - "size": 8445952 - } - } - } -} diff --git a/_includes/_appcast.xml b/_includes/_appcast.xml deleted file mode 100644 index 6bd42ca..0000000 --- a/_includes/_appcast.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - mRemoteNG Changelog - Most recent changes with links to updates. - en - {{ site.url }}{{ site.baseurl}}{{ page.url }} - {% for release in site.github.releases limit: 5 %} - {% if release.draft == false and release.prerelease == page.prerelease %} - - {{ release.name | xml_escape }} - - - - {{ release.published_at | date_to_rfc822 }} - {%- assign msi = 'application/x-msdownload|application/x-msi|binary/octet-stream|application/octet-stream' | split: '|' -%} - {% for asset in release.assets %} - {% if msi contains asset.content_type and asset.state == 'uploaded' %} - - {%- break -%} - {%- endif -%} - {%- endfor -%} - - {%- endif -%} - {%- endfor -%} - - diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index 19a2fed..0000000 --- a/_includes/footer.html +++ /dev/null @@ -1,15 +0,0 @@ -
-
-

Copyright © {{ 'now' | date: '%Y' }} mRemoteNG

-
-
-{% if jekyll.environment == 'production' %} - -{%- endif -%} diff --git a/_includes/head.html b/_includes/head.html deleted file mode 100644 index 6d3f84c..0000000 --- a/_includes/head.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - {% seo %} - - - {% for file in site.static_files %} - {% if file.path contains '/favicon/' %} - {%- assign name = file.path | remove: '/favicon/' | remove: file.extname -%} - - {%- endif -%} - {%- endfor -%} - {% feed_meta %} - - - {% include javascript.html %} - diff --git a/_includes/header.html b/_includes/header.html deleted file mode 100644 index 70f0eab..0000000 --- a/_includes/header.html +++ /dev/null @@ -1,44 +0,0 @@ -
- -
diff --git a/_includes/javascript.html b/_includes/javascript.html deleted file mode 100644 index 14e568d..0000000 --- a/_includes/javascript.html +++ /dev/null @@ -1,10 +0,0 @@ - -{% if page.url == "/download" %} - -{%- endif -%} -{% if page.url == "/contribute" %} - -{%- endif -%} - - - \ No newline at end of file diff --git a/_includes/jumbotron.html b/_includes/jumbotron.html deleted file mode 100644 index 280ab00..0000000 --- a/_includes/jumbotron.html +++ /dev/null @@ -1,18 +0,0 @@ -
-

mRemoteNG

-

Multi-Remote Next Generation Connection Manager

-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index 71c978f..0000000 --- a/_layouts/default.html +++ /dev/null @@ -1,12 +0,0 @@ -{% include head.html %} - - {% include header.html %} - {% include jumbotron.html %} -
-
- {{ content }} -
-
- {% include footer.html %} - - diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index 087266f..0000000 --- a/_layouts/post.html +++ /dev/null @@ -1,45 +0,0 @@ -{% include head.html %} - - {% include header.html %} - {% include jumbotron.html %} -
-
- {%- assign author = site.data.authors[page.author] -%} -
- -
-
- {% if page.previous %} - Previous - {%- else -%} - Previous - {%- endif -%} - {% if page.next %} - Next - {%- else -%} - Next - {%- endif -%} -
-
-
- {% include footer.html %} - - diff --git a/_posts/2016-01-27-looking-for-new-leader-for-mremoteng.md b/_posts/2016-01-27-looking-for-new-leader-for-mremoteng.md deleted file mode 100644 index a7e56e9..0000000 --- a/_posts/2016-01-27-looking-for-new-leader-for-mremoteng.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Looking for new leader for mRemoteNG -author: rmcardle ---- - -mRemoteNG has not been in active development for quite some time now. After I lost my job, I had hoped I could make a living maintaining mRemoteNG. However, user contributions and website advertising revenue turned out not to be enough to make that possible and the open source license means there are not many other options for monetization. - -It's time that I either hand the reigns over to someone else or declare the project dead. I feel bad for not doing so sooner. - - - -If I let someone else take over, the question is, how do I find such a person, and how do I make sure they are the right person? It's a lot of work for very little reward. In addition to writing code, you need to triage bug reports in JIRA, reply to emails, reply to forum posts, keep the forum spam free, and countless other things. For mRemoteNG to thrive, you will need help and finding and coordinating those helpers is a lot of work in itself. - -The big question though is, is it worth it? The architecture of mRemoteNG is old and fragile. I made many bug fixes, improvements, and refactored a lot but there's still a ton that needs to be improved. Nearly every seemingly simple bug report or feature request ends up being a huge can of worms due to deep architectural issues or third party dependencies. - -So, what are everyone's thoughts? Do I declare the project dead or find someone to continue it? People have offered to help but how do I make sure they're trustworthy? How do I make sure I don't just hand mRemoteNG over to someone who will just steal all of your passwords or something? diff --git a/_posts/2016-03-22-latest-update-and-plans-for-the-future.md b/_posts/2016-03-22-latest-update-and-plans-for-the-future.md deleted file mode 100644 index 993854a..0000000 --- a/_posts/2016-03-22-latest-update-and-plans-for-the-future.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Latest update and plans for the future -author: dmsparer ---- - -Hello all, - -I figure it's time I made a post about what has been going on and what I have planned for the future. My intention is to have these sorts of posts somewhat often (once or twice a month at least) to give the community a sense of where the project is and where it is going. - -1. I've been working almost daily since announcing my take-over of the project to refactor and decouple the current code base. The current code is so huge and complex that it is suicide to try to get anything done without trying to entangle things. This needs to happen, and for sanity's sake it needs to happen first. The connection/protocol subsystem will be targeted first. - - - -2. I want to convert the code base to C# and more away from VB.net. Actually, the conversion has already happened on my personal fork of the code. I used this to better learn the current code base and learn VB.net syntax. However, I want to have a dialog with the community before deciding whether to move the official project over to a different language. Disclaimer: the conversion did cause a few bugs, which is to be expected. Most are fixed, though minor GUI bugs still exist. -3. Update the supported versions of RDP, along with other protocols (VNC is largely broken, and SSH needs some love). There have been numerous protocol updates since the last mRemoteNG (mRNG) update. The refactoring work being done in point #1 (above) is in direct support of this goal. I intend to have sufficient abstract to allow users to choose whichever specific version of RDP (or ssh/vcn/etc) they would like to use. This should help folks on newer systems (Win10, Server 2012) take advantage of the most recent protocols, while not giving up support for the poor souls who must still use Server 2003. -4. Move away from PuTTY. In support of updating SSH and related command line protocols, the goal is to move away from PuTTY as the default SSH provider in support of SSH.Net. SSH.Net is a native .Net library for managing remote connections which has also recently found a new owner. It has been ported over to GitHub from CodePlex (GitHub repo here: https://github.com/sshnet/SSH.NET). Please note, this does not mean that PuTTY will no longer be supported as an SSH/telnet/RAW/whatever provider. PuTTY will be, at least for now, still be supported as an option for future mRNG versions. The goal with SSH.Net is to not -require- PuTTY. -5. Credential manager. Yes. If you have to manage more than a single domain of servers, you have likely been frustrated with your username/password management options. The goal is to have a single credential manager within mRNG where username/password pairs are stored. Connections can use a stored credential pair from the manager, or use a manually entered pair (similar to how things work now.) Inheritance will not go away - the credential manager will just be one more way to manage credentials. This feature will provide the groundwork for user-specific credentials when utilizing SQL Server for team-sharing your connections files. This also opens up support for KeePass/PasswordSafe/etc integration. Why save your credentials twice? -6. Work spaces. Similar to Linux/Mac virtual desktops, the idea is there for virtual work spaces. This will be especially useful for those of your who manage several external customer environments. Load separate connections files (or SQL) into separate work spaces with optionally separate credential management. - -Now, some of those items are admittedly a long ways off. I don't want to mislead anyone into thinking this is going to happen quickly. However, I'm excited about working on this project and seeing it grow. I intend to communicate that excitement to you over the next few months as the project picks up speed. diff --git a/_posts/2016-04-26-fireside-chat-1-the-story-so-far.md b/_posts/2016-04-26-fireside-chat-1-the-story-so-far.md deleted file mode 100644 index d7fdba0..0000000 --- a/_posts/2016-04-26-fireside-chat-1-the-story-so-far.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: '[Fireside Chat #1] The Story So Far' -author: dmsparer -tags: fireside ---- - -Hello mRemoteNG users! - -I'm a bit overdue for one of these update posts. As mentioned in the last post, I am hoping to provide information to the community about once a month about what we are working on and what we are planning for the future. I'll be calling these the "fireside chats". - - - -The last update was focused largely on long term features and improvements. However, this is not going to be the main focus for the first few releases. Let me start by going through the events since the last update. - -#### What has happened: -* A new developer has joined the team. Please welcome Hayato Iriumi! Hayato has a background in C#/.Net software engineering and release management. He will be working with me to both develop mRemoteNG as well as build an operational platform around the application to support testing and release activities. Hayato will be a great asset to the project and I am glad to have him on the team. -* I have been cleaning up our bug/request tracking system Jira. There is a significant backlog of bug reports and feature/improvement requests that all need to be triaged and validated. We have had to make decisions on what will and will not be worked on for the next release. More on this below. -* I have created a Jenkins instance that will be used in our testing and release management workflows. This will help us to ensure we are releasing quality code while reducing the amount of manual work required to release a working version. -* I am currently creating a virtual testing environment for investigating bug reports and performing smoke testing before a release goes live. Once issue with supporting such a widely used application is that we do not always have the correct environment for replicating bugs seen in very specific scenarios. We are testing out Oracle's Ravello system to virtualize our end user testing environments. That way, we can test issues on Windows 7/8/10 environments without needing to image one of our personal computers. This also allows us to snapshot a particular system configuration in order to test bugs before and after a fix has been implemented. -* I have decided to officially switch the programming language of the project to C#. I know in my last post I mentioned a desire to talk with the community before we made the switch, but this is one item that I think just needs to be done. -* We have been working to stabilize the code after a migration from VB.Net to C#. Specifically, Hayato is currently working on some odd GUI display issues that cropped up as a result of the migration. -* We are working to create unit tests for code as we go through the system. This will help give us the confidence to make some of the larger changes we have planned. Without adequate testing, we cannot always be sure that changes in one portion of the application will not affect others. This is one of the most important things we can do for the long term health of the project - most of our other activities have in some way supported testing and validation. - - -#### What we are planning: -* I can reduce the plan for the near future into one word: stability. mRemoteNG has not had active development (on this fork) for about 2 years now. Because of this, there is a backlog of bugs from previous releases and issues that have cropped up naturally over time as the protocols and environments we use are upgraded. This means that the next few releases are going to be almost exclusively reserved for bug fixes and core functionality improvements. We cannot allow issues such as application crashes, connection errors, and usability bugs to undermine the main purpose of the application. I don't want any to have to say "I love mRemoteNG, but I can't stand using it anymore". -* I have done a significant amount of cleaning of the Jira boards to support to stability work. All improvements/new features that were not in the current develop branch when I took over have unfortunately been pushed out of this release. I have been trying to triage bugs that affect core functionality. I hope to have a solid list of items to be included in version 1.73 soon, though the list may be fluid for this first release. I don't want to delay the first release too long, so I am trying to keep the number of tickets included to a very low number. Better to do some small releases at first to get the ball rolling. -* Documentation. As we redefine the entire development and release process for the app, we will be documenting everything in a way that will be easy to newcomers. I want to make mRemoteNG a project that is as inclusive as possible. If someone wants to program their own feature request, there should be documentation on how to set up their development environment, coding style expectations, test coverage expectations, how pull requests will work, etc. All the way from "I would like to help" to "congratulations, your changes have been accepted!" This will also include non-development ways to contribute, though for the moment that is less of a concern (not trying to discourage anyone, if you'd like to help let us know!). -* We are still unsure of a release date for 1.73. As we cross off items on our to-do list I'm hoping we will be able to announce something. - -That is it for the first(ish) edition of our fireside chats. I'm happy to provide a bit of insight into the development effort and share our thoughts of the near future! diff --git a/_posts/2016-05-31-important-notice-about-security-and-trust.md b/_posts/2016-05-31-important-notice-about-security-and-trust.md deleted file mode 100644 index e26360f..0000000 --- a/_posts/2016-05-31-important-notice-about-security-and-trust.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Important Notice about Security and Trust -author: rmcardle ---- - -Every time you store a password in mRemoteNG, you are placing your trust in it, and by extension me. I deeply appreciate that trust and I hope that I've been worthy of it. - - - -If you haven't heard already, I am stepping away from my involvement in mRemoteNG. I am working with the new maintainer, David Sparer, to slowly transition my responsibilities over to him. He has been building a team and they have been working to move development of mRemoteNG forward. - -Today, they are releasing the first new version of mRemoteNG in over two years. As part of the trust you've placed in me, I feel it is my responsibility to make it clear that this new version has not been checked over by me. - -I have no reason to distrust David and his team, but the decision whether to trust them or not is one that you individually and as a community will need to make for yourselves. diff --git a/_posts/2016-06-21-fireside-chat-2-onward-and-upward.md b/_posts/2016-06-21-fireside-chat-2-onward-and-upward.md deleted file mode 100644 index 7c9d261..0000000 --- a/_posts/2016-06-21-fireside-chat-2-onward-and-upward.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: '[Fireside Chat #2] Onward and Upward' -author: dmsparer -tags: fireside ---- - -Hey mRemoteNG users! - -I'm waaay overdue for a community post, and there's plenty of updates to share. - -#### What has happened: -* I'm happy to announce that in early May, Sean Kaim (owner of the mRemote3G fork) joined the development team! Sean has a background in C/Java/C# development. Sean did great work with mRemote3G, and continues to do so with us. Welcome Sean to the team! (Note: The bug fixes that Sean implemented in mRemote3G have been ported over to mRemoteNG. Active work on mRemote3G has been discontinued.) - - - -* New releases - * A few weeks ago, we released version 1.74 Release Candidate 2, the first new version of mRemoteNG in over two years. It was a large milestone in reviving the project, and a bit of a scary one at that. Thank you to everyone who has tried the new version and provided feedback to us! - * We just released 1.74 RC3 today! (I was writing this post as we were prepping the build for release). RC3 fixes a few issues from RC2, such as: - * Setting LargeAddressAware (this was actually fixed earlier, but for some reason the postbuild action wasn't working correctly) - * Replace XULrunner with GeckoFX (html renderer for Firefox) - * Fixed a few resource-not-found issues in the Help window - * We will give 1.74 RC3 about a week to ensure it is stable. If no major issues are found, we will publish v1.74 as a stable release. -* Here are some of the highlights of v1.74 as a whole: - * The code base was migrated from VB.Net to C#. This has made the code easier to work with for those of us on the dev team. We are hoping that this also helps us attract more development help. - * Due to some serious bugs, some custom keyboard hooks that were introduced in v1.73 beta have been removed. This removed the ability to Alt+Tab between connections tabs. We would like to re-add this functionality once we have a stable way to implement it. - * The installer has been completely redone in WiX (Windows Installer XML). The previous installer was built with NSIS. This gives us a great deal of freedom with the installer. The most prominent change you will notice is that the installer is now a .MSI file, rather than .exe. If there is a desire for it, we can also provide a .exe version of the new installer. - * The RDP protocol has been updated from RDP 6 to RDP 8. This provided some new features and fixes for RDP connections. With this change, we no longer support installation on Windows XP. Windows 7 is supported with update KB2592687. Windows 8/10 are supported out-of-the-box. - * XULrunner (the old browser plugin used by mRemoteNG) has been discontinued. Because of this, we have removed support for XULrunner and replaced it with GeckoFX (an implementation of the Firefox redering engine in .Net). - * We now set the LargeAddressAware flag on the binary. This allows mRemoteNG to use more than 2GB of addressable space. The primary effect of this modification will allow users to open more concurrent connections. This also helps reduce 3334 errors when using RDP in certain situations. -* We now have a code signing certificate! This was not available for the RC2 release, but going forward all exe/dll/msi files that are officially provided by the mRemoteNG dev team will be signed. If you receive an executable file that is not signed, please be very careful and only use the file if you trust its source. - * Executables provided by the mRemoteNG dev team will be signed by David Sparer, with a root CA of StartCom. We may get a class 3 (organization) certificate at some point in the future, but for now the code is signed by myself directly. - * Users with SmartScreen enabled may still receive a notification that the MSI installer is unrecognized. We did not pay for the extended validation (EV) certificate so it will take a bit for our reputation to improve with the Microsoft security engine. I regret not getting the EV now - but hey, what are ya gonna do... Eventually we will become a trusted publisher. - * As always, we will be uploading our official builds to VirusTotal. Feel free to check your own copy before installation/use. - -#### What we are planning -* The next update (v1.75) will be focused on security improvements. If you have experience with security code review, we'd love to hear from you! The more eyes we have on the code, the more secure it will be. - * We want to improve the file encryption used when securing your conConfs.xml file with a password. - * Just as data and presentation should be separate, so too should secure and insecure data be separate. The best way to handle this is to implement a credential manager and save credentials separately from the connections/host data. - * Don't reinvent the wheel. We can implement a built-in way to save credentials, but there are numerous great solutions out there for credential management that do it better than we ever could. As long as implementation of the credential manager doesn't run into any serious issues, I'd also like to include support for loading credentials from KeePass. Other credential providers will probably be supported in the future. (And once the code is set up for it, everyone will be free to add support for their favorite credential manager) - * There are also some very serious security concerns around the integration between mRemoteNG and PuTTY. We want to handle this in 2 ways: - * Fix the integration if possible - * Provide a different option for SSH connection management (SSH.Net is our most likely candidate. They just released a beta and hopefully a stable release is coming in the near future.) We would still support PuTTY, but it would not be the default for new installations. -* Other features/improvements will be targeted if time permits. diff --git a/_posts/2016-07-11-chat.md b/_posts/2016-07-11-chat.md deleted file mode 100644 index 95dec36..0000000 --- a/_posts/2016-07-11-chat.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Chat -author: dmsparer ---- - -Hello all, - -I’d like to announce that we have created a public chat room for mRemoteNG! We are using Gitter, which ties into GitHub nicely (including login). - - - -Feel free to come say ‘hi’. The development team will be in the room a fair amount of the time, though do keep in mind that we may not always be able to answer (we are all in the US). - -Chat room link: [https://gitter.im/mRemoteNG/PublicChat](https://gitter.im/mRemoteNG/PublicChat) diff --git a/_posts/2016-09-29-fireside-chat-3-we-can-rebuild-it-we-have-the-technology.md b/_posts/2016-09-29-fireside-chat-3-we-can-rebuild-it-we-have-the-technology.md deleted file mode 100644 index b1597f7..0000000 --- a/_posts/2016-09-29-fireside-chat-3-we-can-rebuild-it-we-have-the-technology.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: '[Fireside Chat #3] We can rebuild it, we have the technology' -author: dmsparer -tags: fireside ---- - -Hello mRemoteNG users! - -Here is another extrememly overdue update from the dev team. - -We've been hard at work getting v1.75 ready for alpha/beta testing. I think we are getting close(r). This update was slated to be security-focused with many important improvements. While that's still mostly the case, it has been diluted a bit. When we took a look at the areas of the program that we wanted to change over the next few versions, it became clear that the architecture of the application was going to be a significant burden. Much of the code was tightly woven with how things get displayed and how that display should react when data changes. - - - -#### What has happened: -* Large re-write of anything that touched the TreeView displayed. If it dared to talk about TreeNodes, it was rewriten. Unfortunately, this took up most of the last month. - * Everything is now based on our business objects (ConnectionInfo objects and their related decendants). Previously, ConnectionInfo objects were first wrapped in TreeNode objects (which handled display concerns and how the tree was built and ordered). - * Business logic now deals with the business objects directly. We don't have to worry about how the models are displayed, we can focus on what they should do. - * The UI code was so entrenched throughout the rest of the program that almost every class was modified in some way. Some had minor changes, some were completely rewritten. - * As of the time of this writing (and with more work yet to do) here are the stats: 9,215 lines were added and 7,125 lines were deleted across 129 different files across 293 commits. -* On the plus side, the new encryption algorithms (using BouncyCastle) are in place on the develop branch. These are not yet used within the application, though thats the next focus after the re-write mentioned above is finished. There will be a forced upgrade of the encryption used on connections files. If you are encrypting your confCons (you should), there will be a one-time upgrade to use the newer encryption. There will be several options, with AES-GCM being the default. We need folks to check the implementation - if you find any flaws please let us know immediately. -* We've added a bunch of new unit/integration tests. We aren't even close to having the whole project covered, but we've got a start. -* Bennett Blodinger has built out a new website powered by GitHub Pages (thanks Bennett!). In the coming weeks we will re-point the mremoteng.org domain to this new site. You can view the new mock-up here: [https://mremoteng.github.io/mRemoteNG/](https://mremoteng.github.io/mRemoteNG/) -* We are moving all bug/request tracking from Jira to GitHub Issues. Please create new bug/request tickets here: [https://github.com/mRemoteNG/mRemoteNG/issues](https://github.com/mRemoteNG/mRemoteNG/issues). We will still accept Jira tickets for the time being, though the ability to create new tickets will be turned off sometime soon-ish. After that, we will migrate existing tickets from Jira to GitHub. There are a couple of reasons that we decided to make the switch: - * Jira is one more account/system between you and getting your issue addressed. - * GitHub Issues will integrate better with our other solutions (chat/Jenkins/website). - * GitHub Issues will be more visible to the community (because of the previous two reasons). - * Jira is a bit more powerful/complex than we need. - -#### What we are planning: -* Finish the new encryption algorithms. Once this is done, we will do an alpha release for anyone who wants to help bug test. We will run the alpha/beta releases for as long as necessary to ensure no serious bugs escape. With such a significant change to the codebase, I wouldn't be surprised are there are still some odd ones lurking. -* We may sneak a few more bug fixes into v1.75 if time permits. (Some may have been fixed accidentally through the re-write). -* The credential manager functionality has been pushed back to v1.76. This will require some important changes to critical parts of the application. We need to ensure that the application is performing well before tackling something like this. Not to mention that we don't want to delay v1.75 any more than is required. -* The security concerns with the PuTTY integration still need to be addressed. We want to implement a new SSH provider using SSH.Net to be a default replacement for PuTTY. Unsure if this will happen in 1.76 or later. (Note: We will still be supporting the PuTTY integration for the forseeable future.) diff --git a/_posts/2016-10-17-goodbye-jira-bug-request-tickets.md b/_posts/2016-10-17-goodbye-jira-bug-request-tickets.md deleted file mode 100644 index f3ae363..0000000 --- a/_posts/2016-10-17-goodbye-jira-bug-request-tickets.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Goodbye Jira (Bug/Request tickets) -author: dmsparer ---- - -All, - -New user registration and new ticket creation has been turned off on Jira. Please create all new bug/request tickets over on our GitHub Issues page: [https://github.com/mRemoteNG/mRemoteNG/issues](https://github.com/mRemoteNG/mRemoteNG/issues) - - - -We will be moving over the current Jira tickets to GitHub in the coming days. Tickets can still be updated in Jira, and will remain that way until they are migrated to GitHub. diff --git a/_posts/2017-01-11-Win10-Insider-Preview-build-15002-unstable.md b/_posts/2017-01-11-Win10-Insider-Preview-build-15002-unstable.md deleted file mode 100644 index 8bd7d36..0000000 --- a/_posts/2017-01-11-Win10-Insider-Preview-build-15002-unstable.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Win10 Insider Preview build 15002 unstable -author: dmsparer ---- - -We've been getting a few reports that the Win10 Insider Preview build 15002 is unstable when used with mRemoteNG (among other programs). So far, this appears to be an issue with the OS update and will need to be resolved by Microsoft. We are doing a bit of testing on our end too, just to be sure. - - - -If you are running this OS build, you will likely receive a green-screen-of-death when starting mRemoteNG. If you can, provide data to Microsoft on any errors you see. Otherwise, we have provided a link below on how to potentially roll back the update. - -If you would like to receive updates on this issue, consider watching the issue linked below. - -Relevant links: - -- [mRemoteNG ticket for tracking this issue](https://github.com/mRemoteNG/mRemoteNG/issues/337) -- [How to roll back an update/build](http://www.howtogeek.com/235474/how-to-roll-back-builds-and-uninstall-updates-on-windows-10/) -- [Announcement for build 15002](https://blogs.windows.com/windowsexperience/2017/01/09/announcing-windows-10-insider-preview-build-15002-pc/#atCs8UReDLTCjJ3f.97) diff --git a/_posts/2021-06-19-Is-that-it.md b/_posts/2021-06-19-Is-that-it.md deleted file mode 100644 index 3b7e47f..0000000 --- a/_posts/2021-06-19-Is-that-it.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Is that it? -author: Kvarkas ---- - -Hello all, - -I’d like to announce that I got access to manage issues/PRs and push to the repo! - - - -I like this project, and it’s too good to be abandoned, so I was offered myself to David and as you see, I am already pushed some PR and did some changes :) -It will take some time to receive all needed access, and I hope I have enough energy to lead it to the glory! :) -So, stay tuned, changes are coming! diff --git a/_posts/2021-06-23-Nightly-Builds.md b/_posts/2021-06-23-Nightly-Builds.md deleted file mode 100644 index c562b21..0000000 --- a/_posts/2021-06-23-Nightly-Builds.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Nightly Builds -author: Kvarkas ---- -![Hello](https://reklama-no.ru/smiles/hi.gif) - -Hello all, - -Recently I added link to release of Nightly Builds. - - - -Dont be expecting to be it regular (e.g. every night), but once I fix or implement something or merge with PR (yes you are welcome to help me too!!) it no need to wait till release day and have in touch of it almost imedeatlt and hope that not only help to avoid new bugs in release, but also let you see that we keep moving! -So stay turned and do PR! :) diff --git a/_posts/2021-06-26-Windows 11.md b/_posts/2021-06-26-Windows 11.md deleted file mode 100644 index caa3de4..0000000 --- a/_posts/2021-06-26-Windows 11.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Windows 11 -author: Kvarkas ---- -![Windows 11](https://www.cnet.com/a/img/I7KGm5Rxmjsn89_SApZQXC82Vjo=/196x110/2021/06/25/6643c0a5-df79-4502-8cc8-4910bac853a1/yt-windows-11-first-impressions-3.jpg) -{: .entry-content} - -Hello all, - -Yesterday as member of Microsoft Insider program I installed on my dev machine new Windows 11! Oh... - - - -And I may say its OSM! -And that is more important for us - mRemoteNG on Windows 11 with all its bugs and features - working same way as in Windows 10! ![cool](https://reklama-no.ru/smiles/cool.gif) - -So I may say technicaly mRemoteNG is Windows 11 compatible, so you dont need to worry about will it work once you update - yes, it will!!! -![Hi5](https://reklama-no.ru/smiles/high-five.gif) \ No newline at end of file diff --git a/_posts/2022-06-13-v1.77.3 Nightly Build.md b/_posts/2022-06-13-v1.77.3 Nightly Build.md deleted file mode 100644 index 03e232b..0000000 --- a/_posts/2022-06-13-v1.77.3 Nightly Build.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: v1.77.3 Nightly Build -author: Kvarkas ---- -![NB](https://img001.prntscr.com/file/img001/4PyoZdJ4Qx2uIj2iosG8iQ.png) -{: .thumbnail} - -Hello all, ![Hello](https://reklama-no.ru/smiles/hi.gif) - - -I am releasing this NB as requested by our lovely community... - - - -But first let me say: - -#### BIG THANKS for yours [donations](https://mremoteng.org/contribute)! - -Its really important for me, to see that you like this project and aware of ongoing development! - -Now Topics details. -Currently where its an ongoing changes in visual UI even if they not very spottable for regular user, no changes in logic (yet) some fixes and please don't rise issues for NB but you are more than welcome to leave you comments [there](https://github.com/mRemoteNG/mRemoteNG/issues/2245) - I know, its have some weak parts what is not functional well - don't forget NB its a workable, but not for work version - just for check that project is still alive and don't smell stinky :D and yes, for this version don't expect backup works correctly - its a mess that I am working now to sort in better manner than we have before. - -![Options-Backup_ACL](https://img001.prntscr.com/file/img001/Ke3SQeQSSZGCHdOm6ICdnQ.png) -{: .entry-content} - -Some changes you may see in Options (yes I know its still slow opening, but I am reworking this part, should be faster soon) Backup section - its a demo implementation as part of preparation for profile enabling - admin user of mRemoteNG will be able to set that Options user will able to see and that to change (or read only) just to demonstrate how I see this can be implemented. - -![splash](https://img001.prntscr.com/file/img001/1lKfrcukQk2PZeuAmRJ2Uw.png) -{: .entry-content} - -Also its a try to make multimonitor work better, so as per now it hardcoded at the moment: if you have more than 1 monitor - splash will be show on second one (now its WPF based not WinForm anymore!) and should be better look for non standard DPI scaling and 4k monitors - welcome to comment how its looks on you side with screen shots (I like to use app.prntscr.com) - -So, thanks to read, hope you enjoy it, and that is a link to [portable NB version 1.77.3](https://github.com/mRemoteNG/mRemoteNG/releases/download/v1.77.3-nb/Portable.-.1.77.3.NB.rar) -![Hi5](https://reklama-no.ru/smiles/high-five.gif) \ No newline at end of file diff --git a/_posts/2023-02-21-Thanks for contribute.md b/_posts/2023-02-21-Thanks for contribute.md deleted file mode 100644 index 3833c7f..0000000 --- a/_posts/2023-02-21-Thanks for contribute.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Thanks for contribute! -author: Kvarkas ---- -![NB](https://img001.prntscr.com/file/img001/miGH6Pv6T0yNDztKjaXw1A.png) -{: .thumbnail} - -Hello all, ![Hello](https://reklama-no.ru/smiles/hi.gif) - -I am working hard to do releasing of NB soon... - - - -But first let me say: - -#### BIG THANKS for yours [donations](https://mremoteng.org/contribute)! - -Its really important for mRemoteNG, and realy helps on development! - -Glad to see not only personal contribution, but also companies! - -And special gratitude who do donations on regular basis (marked bold). - -Sylvain Pepoli - you're rock! ![skel](https://profi-kom.lt/smiles/drinks.gif) - -You may see names under our Contribute [page](https://mremoteng.org/contribute) and if you wish be there as well - please donate, every little helps! - -I am back to work on Nightly build preparation, will post about it soon, stay tuned! - -![Hi5](https://reklama-no.ru/smiles/high-five.gif) \ No newline at end of file diff --git a/beta-update-portable.txt b/beta-update-portable.txt deleted file mode 100644 index 8d6d90f..0000000 --- a/beta-update-portable.txt +++ /dev/null @@ -1,4 +0,0 @@ -Version: 1.76.12.38568 -dURL: https://github.com/mRemoteNG/mRemoteNG/releases/download/v1.76.12/mRemoteNG-Portable-1.76.12.38568.zip -clURL: https://raw.githubusercontent.com/mRemoteNG/mRemoteNG/v1.76.12/CHANGELOG.TXT -Checksum: 781962046D969B71D23CEE4DB0A6FAE944A13D70CAA7B9DECD728B4B65D0B847474B1005D58CF6EEDF9C3DCF21659FEB5870062ADD4059873D75F089C4101D69 diff --git a/contact.md b/contact.md deleted file mode 100644 index 940f8a7..0000000 --- a/contact.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Contact -permalink: /contact ---- -If you have any kind of inquiry or you have found a security vulnerability that you don't want to post publicly, we'd love for you to report it to us directly. Please perform the following: -- E-mail [security@mremoteng.org](mailto:security@mremoteng.org) - - we will work together to determine public disclosure -- If you do not recieve a response within 48 hours to the e-mail - - file an issue on the [Issue Tracker]({{ site.github_alt.issues_url }}) - - tag @sparerd, @kmscode, @kvarkas and @farosch within the issue diff --git a/contribute.md b/contribute.md deleted file mode 100644 index 5fea4b0..0000000 --- a/contribute.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Contribute -permalink: /contribute ---- - - -## Donate -If you find mRemoteNG useful and would like to contribute, it would be greatly appreciated. When you contribute, you make it possible for the team to cover the costs of producing mRemoteNG. -
-
-
-

PayPal

- -
-
-
-
-

btcBitcoin

-

You may also make a contribution by sending Bitcoins to 3GzzNcMnkMpRREhvP6SxgWWzq58Q7zHk7p.

-

Bitcoin QR Code

-

ethEthereum

-

You may also make a contribution by sending Ethereum to 0xdf4151f161ff33d6bfd846ce29032fb325969f9b.

-

Ethereum QR Code

-

usdtTether

-

You may also make a contribution by sending Tether to TSBpMwkon1XUm6gLHpPWQ9NpELpnpx9bNn.

-

USDT QR Code

-
-
-
-
-

BIG thanks!

-
    -
  • Paweł Iżykowski
  • -
  • Matteo Menozzi
  • -
  • Marlon Diering
  • -
  • Ivan Vaselli
  • -
  • Joel Grimes
  • -
  • Jürgen Busch
  • -
  • Łukasz Milata
  • -
  • Charles Fletcher
  • -
  • Frank Mandrell
  • -
  • Michal Krupa
  • -
  • Tianpeng Wang
  • -
  • Dylan Giovanni Gambino
  • -
  • Michael Gaul
  • -
  • Andrew Warham
  • -
  • Sergei Shir
  • -
  • Magnus Fagertun
  • -
  • Loeper Matthias
  • -
  • Dosinas.net WEb creations
  • -
  • Cristina Guevarra
  • -
  • Ziga Jenko
  • -
  • Sylvain Pepoli
  • -
  • Bart De Boeck
  • -
  • Charles Veillon
  • -
  • Christopher Letcher
  • -
  • Pietro Luca Savorosi
  • -
  • Marc Gutt
  • -
  • Richard Abogado
  • -
  • Marcelo Ferreira da Costa
  • -
  • David Teske
  • -
  • Kilian Rauner
  • -
  • Eckard Wille
  • -
  • Marlon Diering
  • -
  • Elliott Marvin
  • -
  • Benjamin Truninger
  • -
  • James Hart
  • -
  • Kai Ulrich
  • -
  • Sean Nelson
  • -
  • Guy Lincoln
  • -
  • Stephen Friedl
  • -
  • Jeremy Holder
  • -
  • Daniel Khumalo
  • -
  • Danatas Gervi
  • -
  • John Harrison
  • -
  • Neilhighley.com ltd.
  • -
  • Rafał Kurc
  • -
  • Sebastian Ulrich
  • -
  • Profi-KOM ltd.
  • -
-
-
-
- -The mRemoteNG Project is **NOT** considered a non-profit organization and contributions are **NOT** tax deductible. - -## Submit code -Check out our [source code]({{ site.github_alt.repository_url }}) and submit a pull request or two. - -## Translate -Check out the [Wiki page]({{ site.github_alt.wiki_url }}/Translate) on how to help make mRemoteNG a polyglot. - -## Other -If you are a technical writer, translator or just feel like there is something you can contribute to mRemoteNG, please feel free to contact us. diff --git a/css/fonts/8eea7efc212b74ac89dcf5cd3d0e0572.eot b/css/fonts/8eea7efc212b74ac89dcf5cd3d0e0572.eot deleted file mode 100644 index 74809c2..0000000 Binary files a/css/fonts/8eea7efc212b74ac89dcf5cd3d0e0572.eot and /dev/null differ diff --git a/css/fonts/8eea7efc212b74ac89dcf5cd3d0e0572.svg b/css/fonts/8eea7efc212b74ac89dcf5cd3d0e0572.svg deleted file mode 100644 index 9cdf75c..0000000 --- a/css/fonts/8eea7efc212b74ac89dcf5cd3d0e0572.svg +++ /dev/null @@ -1,1705 +0,0 @@ - - - - -Created by FontForge 20200427 at Tue Apr 12 22:27:42 1994 - By www -URW Software, Copyright 1994 by URW - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/css/fonts/hinted-subset-HandelGothic-Regular.woff b/css/fonts/hinted-subset-HandelGothic-Regular.woff deleted file mode 100644 index c4cef31..0000000 Binary files a/css/fonts/hinted-subset-HandelGothic-Regular.woff and /dev/null differ diff --git a/css/fonts/hinted-subset-HandelGothic-Regular.woff2 b/css/fonts/hinted-subset-HandelGothic-Regular.woff2 deleted file mode 100644 index 6031183..0000000 Binary files a/css/fonts/hinted-subset-HandelGothic-Regular.woff2 and /dev/null differ diff --git a/css/style.css b/css/style.css deleted file mode 100644 index 0e3e9a7..0000000 --- a/css/style.css +++ /dev/null @@ -1,23 +0,0 @@ -/* @import url(//db.onlinewebfonts.com/c/8eea7efc212b74ac89dcf5cd3d0e0572?family=HandelGotDBol); */ -@font-face {font-family: "HandelGotDBol"; - src: url("fonts/8eea7efc212b74ac89dcf5cd3d0e0572.eot"); /* IE9*/ - src: url("fonts/8eea7efc212b74ac89dcf5cd3d0e0572.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ - url("fonts/8eea7efc212b74ac89dcf5cd3d0e0572.woff2") format("woff2"), /* chrome firefox */ - url("fonts/8eea7efc212b74ac89dcf5cd3d0e0572.woff") format("woff"), /* chrome firefox */ - url("fonts/8eea7efc212b74ac89dcf5cd3d0e0572.ttf") format("truetype"), /* chrome firefox opera Safari, Android, iOS 4.2+*/ - url("fonts/8eea7efc212b74ac89dcf5cd3d0e0572.svg#HandelGotDBol") format("svg"); /* iOS 4.1- */ - font-weight: normal; - font-style: normal; -} - -.jumbotron > h1, .navbar-brand { - font-family: 'HandelGotDBol'; -} -.jumbotron > h1:first-letter, .navbar-brand:first-letter { - color: #4f8aff; -} -.avatar { - height: 1rem; - width: 1rem; -} - diff --git a/download.html b/download.html deleted file mode 100644 index 70e60b2..0000000 --- a/download.html +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Download -permalink: /download ---- - - -
-
-
-

Stable

-

{{ site.data.releases.stable.name }}

-

{{ site.data.releases.stable.published_at | date: '%a, %b %d, %Y' }}

-
- MSI - ZIP -
- Changelog -
-
-
-
- {% if site.data.releases.stable.published_at > site.data.releases.prerelease.published_at %} -
-

Stable is newer

-
- {%- endif -%} -

Preview

-

{{ site.data.releases.prerelease.name }}

-

{{ site.data.releases.prerelease.published_at | date: '%a, %b %d, %Y' }}

-
- MSI - ZIP -
- Changelog -
-
-
-
-

Nightly

-

{{ site.data.releases.nightlybuild.name }}

-

{{ site.data.releases.nightlybuild.published_at | date: '%a, %b %d, %Y' }}

-
- MSI - ZIP -
- Changelog -
-
-
-

View installation requirements

diff --git a/favicon/16.png b/favicon/16.png deleted file mode 100644 index 5a7455e..0000000 Binary files a/favicon/16.png and /dev/null differ diff --git a/favicon/24.png b/favicon/24.png deleted file mode 100644 index c4c8938..0000000 Binary files a/favicon/24.png and /dev/null differ diff --git a/favicon/256.png b/favicon/256.png deleted file mode 100644 index 0c6190b..0000000 Binary files a/favicon/256.png and /dev/null differ diff --git a/favicon/32.png b/favicon/32.png deleted file mode 100644 index 32abff3..0000000 Binary files a/favicon/32.png and /dev/null differ diff --git a/favicon/48.png b/favicon/48.png deleted file mode 100644 index 8232989..0000000 Binary files a/favicon/48.png and /dev/null differ diff --git a/images/donations/BTC QR Code.jpg b/images/donations/BTC QR Code.jpg deleted file mode 100644 index 5b5c6d5..0000000 Binary files a/images/donations/BTC QR Code.jpg and /dev/null differ diff --git a/images/donations/ETH QR Code.jpg b/images/donations/ETH QR Code.jpg deleted file mode 100644 index e214db0..0000000 Binary files a/images/donations/ETH QR Code.jpg and /dev/null differ diff --git a/images/donations/PayPal QR Code (1).png b/images/donations/PayPal QR Code (1).png deleted file mode 100644 index 653a1a9..0000000 Binary files a/images/donations/PayPal QR Code (1).png and /dev/null differ diff --git a/images/donations/PayPal QR Code (2).png b/images/donations/PayPal QR Code (2).png deleted file mode 100644 index bdc6af7..0000000 Binary files a/images/donations/PayPal QR Code (2).png and /dev/null differ diff --git a/images/donations/PayPal QR Code (3).png b/images/donations/PayPal QR Code (3).png deleted file mode 100644 index a02eb69..0000000 Binary files a/images/donations/PayPal QR Code (3).png and /dev/null differ diff --git a/images/donations/PayPal QR Code (4).png b/images/donations/PayPal QR Code (4).png deleted file mode 100644 index 2799dde..0000000 Binary files a/images/donations/PayPal QR Code (4).png and /dev/null differ diff --git a/images/donations/USDT QR Code.jpg b/images/donations/USDT QR Code.jpg deleted file mode 100644 index 9273191..0000000 Binary files a/images/donations/USDT QR Code.jpg and /dev/null differ diff --git a/images/donations/btc.png b/images/donations/btc.png deleted file mode 100644 index 8b1d575..0000000 Binary files a/images/donations/btc.png and /dev/null differ diff --git a/images/donations/eth.png b/images/donations/eth.png deleted file mode 100644 index dfc7257..0000000 Binary files a/images/donations/eth.png and /dev/null differ diff --git a/images/donations/tether-usdt.png b/images/donations/tether-usdt.png deleted file mode 100644 index 24d44c5..0000000 Binary files a/images/donations/tether-usdt.png and /dev/null differ diff --git a/index.md b/index.md deleted file mode 100644 index 641718c..0000000 --- a/index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Home -permalink: / ---- -mRemoteNG is a fork of mRemote: an open source, tabbed, multi-protocol, remote connections manager for Windows. mRemoteNG adds bug fixes and new features to mRemote and allows you to view all of your remote connections in a simple yet powerful tabbed interface. - - - -mRemoteNG is open source software and is released under the terms of the [GNU General Public License Version 2](https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html). - -**Supported protocols:** - -* RDP (Remote Desktop Protocol) -* VNC (Virtual Network Computing) -* SSH (Secure Shell) -* Telnet (TELecommunication NETwork) -* HTTP/HTTPS (Hypertext Transfer Protocol) -* rlogin (Remote Login) -* Raw Socket Connections -* Powershell remoting - -**Supported languages:** -
    -
  • English
  • -
  • 中文
  • -
  • Nederlands
  • -
  • Français
  • -
  • Deutsch
  • -
  • Ελληνικά
  • -
  • Magyar
  • -
  • Italiano
  • -
  • Norsk
  • -
  • Polski
  • -
  • Português
  • -
  • Русский
  • -
  • Español
  • -
  • Українська
  • -
diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..52c99bd --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2661 @@ +{ + "name": "mR website", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "mR website", + "version": "0.1.0", + "dependencies": { + "bootstrap-icons": "^1.13.1", + "cookie": "^1.0.2" + }, + "devDependencies": { + "@fontsource/fira-mono": "^5.2.6", + "@neoconfetti/svelte": "^2.2.2", + "@sveltejs/adapter-static": "^3.0.8", + "@sveltejs/kit": "^2.21.1", + "@sveltejs/vite-plugin-svelte": "^5.0.3", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.16", + "@tailwindcss/vite": "^4.1.7", + "svelte": "^5.33.1", + "svelte-check": "^4.2.1", + "tailwindcss": "^4.1.7", + "typescript": "^5.8.3", + "vite": "^6.3.5", + "vite-plugin-static-copy": "^3.1.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", + "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", + "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", + "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", + "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", + "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", + "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", + "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", + "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", + "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", + "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", + "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", + "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", + "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", + "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", + "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", + "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", + "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", + "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", + "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", + "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", + "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", + "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", + "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", + "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", + "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", + "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@fontsource/fira-mono": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@fontsource/fira-mono/-/fira-mono-5.2.6.tgz", + "integrity": "sha512-6pyiGeFH+5DP5sICSwx5wu+9BlTEMTKki7bTppsEqXJysi1MiK82n6oSUaYkQWRLH51+DK7zv2JJsi82cOIS3g==", + "dev": true, + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@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", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@neoconfetti/svelte": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@neoconfetti/svelte/-/svelte-2.2.2.tgz", + "integrity": "sha512-E7xCFVEEm5Ctnj2udTJy1b9oaTvjz1zi1mYdEtE8rB5BVwq6kHisosDS+zdWN5PMfEMjtbsOV9Cl6tsNSAD1sA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "svelte": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.2.tgz", + "integrity": "sha512-g0dF8P1e2QYPOj1gu7s/3LVP6kze9A7m6x0BZ9iTdXK8N5c2V7cpBKHV3/9A4Zd8xxavdhK0t4PnqjkqVmUc9Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.2.tgz", + "integrity": "sha512-Yt5MKrOosSbSaAK5Y4J+vSiID57sOvpBNBR6K7xAaQvk3MkcNVV0f9fE20T+41WYN8hDn6SGFlFrKudtx4EoxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.2.tgz", + "integrity": "sha512-EsnFot9ZieM35YNA26nhbLTJBHD0jTwWpPwmRVDzjylQT6gkar+zenfb8mHxWpRrbn+WytRRjE0WKsfaxBkVUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.2.tgz", + "integrity": "sha512-dv/t1t1RkCvJdWWxQ2lWOO+b7cMsVw5YFaS04oHpZRWehI1h0fV1gF4wgGCTyQHHjJDfbNpwOi6PXEafRBBezw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.2.tgz", + "integrity": "sha512-W4tt4BLorKND4qeHElxDoim0+BsprFTwb+vriVQnFFtT/P6v/xO5I99xvYnVzKWrK6j7Hb0yp3x7V5LUbaeOMg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.2.tgz", + "integrity": "sha512-tdT1PHopokkuBVyHjvYehnIe20fxibxFCEhQP/96MDSOcyjM/shlTkZZLOufV3qO6/FQOSiJTBebhVc12JyPTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.2.tgz", + "integrity": "sha512-+xmiDGGaSfIIOXMzkhJ++Oa0Gwvl9oXUeIiwarsdRXSe27HUIvjbSIpPxvnNsRebsNdUo7uAiQVgBD1hVriwSQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.2.tgz", + "integrity": "sha512-bDHvhzOfORk3wt8yxIra8N4k/N0MnKInCW5OGZaeDYa/hMrdPaJzo7CSkjKZqX4JFUWjUGm88lI6QJLCM7lDrA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.2.tgz", + "integrity": "sha512-NMsDEsDiYghTbeZWEGnNi4F0hSbGnsuOG+VnNvxkKg0IGDvFh7UVpM/14mnMwxRxUf9AdAVJgHPvKXf6FpMB7A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.2.tgz", + "integrity": "sha512-lb5bxXnxXglVq+7imxykIp5xMq+idehfl+wOgiiix0191av84OqbjUED+PRC5OA8eFJYj5xAGcpAZ0pF2MnW+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.2.tgz", + "integrity": "sha512-Yl5Rdpf9pIc4GW1PmkUGHdMtbx0fBLE1//SxDmuf3X0dUC57+zMepow2LK0V21661cjXdTn8hO2tXDdAWAqE5g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.2.tgz", + "integrity": "sha512-03vUDH+w55s680YYryyr78jsO1RWU9ocRMaeV2vMniJJW/6HhoTBwyyiiTPVHNWLnhsnwcQ0oH3S9JSBEKuyqw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.2.tgz", + "integrity": "sha512-iYtAqBg5eEMG4dEfVlkqo05xMOk6y/JXIToRca2bAWuqjrJYJlx/I7+Z+4hSrsWU8GdJDFPL4ktV3dy4yBSrzg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.2.tgz", + "integrity": "sha512-e6vEbgaaqz2yEHqtkPXa28fFuBGmUJ0N2dOJK8YUfijejInt9gfCSA7YDdJ4nYlv67JfP3+PSWFX4IVw/xRIPg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.2.tgz", + "integrity": "sha512-evFOtkmVdY3udE+0QKrV5wBx7bKI0iHz5yEVx5WqDJkxp9YQefy4Mpx3RajIVcM6o7jxTvVd/qpC1IXUhGc1Mw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.2.tgz", + "integrity": "sha512-/bXb0bEsWMyEkIsUL2Yt5nFB5naLAwyOWMEviQfQY1x3l5WsLKgvZf66TM7UTfED6erckUVUJQ/jJ1FSpm3pRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.2.tgz", + "integrity": "sha512-3D3OB1vSSBXmkGEZR27uiMRNiwN08/RVAcBKwhUYPaiZ8bcvdeEwWPvbnXvvXHY+A/7xluzcN+kaiOFNiOZwWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.2.tgz", + "integrity": "sha512-VfU0fsMK+rwdK8mwODqYeM2hDrF2WiHaSmCBrS7gColkQft95/8tphyzv2EupVxn3iE0FI78wzffoULH1G+dkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.2.tgz", + "integrity": "sha512-+qMUrkbUurpE6DVRjiJCNGZBGo9xM4Y0FXU5cjgudWqIBWbcLkjE3XprJUsOFgC6xjBClwVa9k6O3A7K3vxb5Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.2.tgz", + "integrity": "sha512-3+QZROYfJ25PDcxFF66UEk8jGWigHJeecZILvkPkyQN7oc5BvFo4YEXFkOs154j3FTMp9mn9Ky8RCOwastduEA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", + "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/adapter-static": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.8.tgz", + "integrity": "sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.22.2.tgz", + "integrity": "sha512-2MvEpSYabUrsJAoq5qCOBGAlkICjfjunrnLcx3YAk2XV7TvAIhomlKsAgR4H/4uns5rAfYmj7Wet5KRtc8dPIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.14.1", + "cookie": "^0.6.0", + "devalue": "^5.1.0", + "esm-env": "^1.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^3.0.0", + "vitefu": "^1.0.6" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.1.0.tgz", + "integrity": "sha512-wojIS/7GYnJDYIg1higWj2ROA6sSRWvcR1PO/bqEyFr/5UZah26c8Cz4u0NaqjPeVltzsVpt2Tm8d2io0V+4Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", + "debug": "^4.4.1", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.17", + "vitefu": "^1.0.6" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz", + "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.7" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", + "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.11.tgz", + "integrity": "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.11.tgz", + "integrity": "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-x64": "4.1.11", + "@tailwindcss/oxide-freebsd-x64": "4.1.11", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-x64-musl": "4.1.11", + "@tailwindcss/oxide-wasm32-wasi": "4.1.11", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.11.tgz", + "integrity": "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.11.tgz", + "integrity": "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.11.tgz", + "integrity": "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.11.tgz", + "integrity": "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.11.tgz", + "integrity": "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.11.tgz", + "integrity": "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.11.tgz", + "integrity": "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.11.tgz", + "integrity": "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.11.tgz", + "integrity": "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.11.tgz", + "integrity": "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.11", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.4.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.4.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/tslib": { + "version": "2.8.0", + "dev": true, + "inBundle": true, + "license": "0BSD", + "optional": true + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.11.tgz", + "integrity": "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.11.tgz", + "integrity": "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.11.tgz", + "integrity": "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.11", + "@tailwindcss/oxide": "4.1.11", + "tailwindcss": "4.1.11" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bootstrap-icons": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.13.1.tgz", + "integrity": "sha512-ijombt4v6bv5CLeXvRWKy7CuM3TRTuPEuGaGKvTV5cz65rQSY8RQ2JcHt6b90cBBAC7s8fsf2EkQDldzCoXUjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esbuild": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", + "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.6", + "@esbuild/android-arm": "0.25.6", + "@esbuild/android-arm64": "0.25.6", + "@esbuild/android-x64": "0.25.6", + "@esbuild/darwin-arm64": "0.25.6", + "@esbuild/darwin-x64": "0.25.6", + "@esbuild/freebsd-arm64": "0.25.6", + "@esbuild/freebsd-x64": "0.25.6", + "@esbuild/linux-arm": "0.25.6", + "@esbuild/linux-arm64": "0.25.6", + "@esbuild/linux-ia32": "0.25.6", + "@esbuild/linux-loong64": "0.25.6", + "@esbuild/linux-mips64el": "0.25.6", + "@esbuild/linux-ppc64": "0.25.6", + "@esbuild/linux-riscv64": "0.25.6", + "@esbuild/linux-s390x": "0.25.6", + "@esbuild/linux-x64": "0.25.6", + "@esbuild/netbsd-arm64": "0.25.6", + "@esbuild/netbsd-x64": "0.25.6", + "@esbuild/openbsd-arm64": "0.25.6", + "@esbuild/openbsd-x64": "0.25.6", + "@esbuild/openharmony-arm64": "0.25.6", + "@esbuild/sunos-x64": "0.25.6", + "@esbuild/win32-arm64": "0.25.6", + "@esbuild/win32-ia32": "0.25.6", + "@esbuild/win32-x64": "0.25.6" + } + }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esrap": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.1.0.tgz", + "integrity": "sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "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" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dev": true, + "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-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "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, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rollup": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.2.tgz", + "integrity": "sha512-PVoapzTwSEcelaWGth3uR66u7ZRo6qhPHc0f2uRO9fX6XDVNrIiGYS0Pj9+R8yIIYSD/mCx2b16Ws9itljKSPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.44.2", + "@rollup/rollup-android-arm64": "4.44.2", + "@rollup/rollup-darwin-arm64": "4.44.2", + "@rollup/rollup-darwin-x64": "4.44.2", + "@rollup/rollup-freebsd-arm64": "4.44.2", + "@rollup/rollup-freebsd-x64": "4.44.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.44.2", + "@rollup/rollup-linux-arm-musleabihf": "4.44.2", + "@rollup/rollup-linux-arm64-gnu": "4.44.2", + "@rollup/rollup-linux-arm64-musl": "4.44.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.44.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.44.2", + "@rollup/rollup-linux-riscv64-gnu": "4.44.2", + "@rollup/rollup-linux-riscv64-musl": "4.44.2", + "@rollup/rollup-linux-s390x-gnu": "4.44.2", + "@rollup/rollup-linux-x64-gnu": "4.44.2", + "@rollup/rollup-linux-x64-musl": "4.44.2", + "@rollup/rollup-win32-arm64-msvc": "4.44.2", + "@rollup/rollup-win32-ia32-msvc": "4.44.2", + "@rollup/rollup-win32-x64-msvc": "4.44.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/sade": { + "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, + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/sirv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svelte": { + "version": "5.35.4", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.35.4.tgz", + "integrity": "sha512-NUUD+GcV/uvLBANoFwPNtnlkJM77PEkYYH6TChRZnGI1a5UHc9k2Glq7jxGtClfVz2ZhEvpg+c4yS577qM1c6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "esm-env": "^1.2.1", + "esrap": "^2.1.0", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/svelte-check": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.2.2.tgz", + "integrity": "sha512-1+31EOYZ7NKN0YDMKusav2hhEoA51GD9Ws6o//0SphMT0ve9mBTsTUEX7OmDMadUP3KjNHsSKtJrqdSaD8CrGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "chokidar": "^4.0.1", + "fdir": "^6.2.0", + "picocolors": "^1.0.0", + "sade": "^1.7.4" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": ">=5.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "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, + "license": "MIT" + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "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" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-plugin-static-copy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-3.1.2.tgz", + "integrity": "sha512-aVmYOzptLVOI2b1jL+cmkF7O6uhRv1u5fvOkQgbohWZp2CbR22kn9ZqkCUIt9umKF7UhdbsEpshn1rf4720QFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.6.0", + "fs-extra": "^11.3.0", + "p-map": "^7.0.3", + "picocolors": "^1.1.1", + "tinyglobby": "^0.2.14" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/vite-plugin-static-copy/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vite-plugin-static-copy/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vite-plugin-static-copy/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/vitefu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "dev": true, + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..31ac7de --- /dev/null +++ b/package.json @@ -0,0 +1,37 @@ +{ + "name": "mr-website", + "private": true, + "version": "0.1.0", + "type": "module", + "overrides": { + "cookie": "^1.0.2" + }, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "prepare": "svelte-kit sync || echo ''", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" + }, + "devDependencies": { + "@fontsource/fira-mono": "^5.2.6", + "@neoconfetti/svelte": "^2.2.2", + "@sveltejs/adapter-static": "^3.0.8", + "@sveltejs/kit": "^2.21.1", + "@sveltejs/vite-plugin-svelte": "^5.0.3", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/typography": "^0.5.16", + "@tailwindcss/vite": "^4.1.7", + "svelte": "^5.33.1", + "svelte-check": "^4.2.1", + "tailwindcss": "^4.1.7", + "typescript": "^5.8.3", + "vite": "^6.3.5", + "vite-plugin-static-copy": "^3.1.2" + }, + "dependencies": { + "bootstrap-icons": "^1.13.1", + "cookie": "^1.0.2" + } +} diff --git a/posts/index.html b/posts/index.html deleted file mode 100644 index df5b6ba..0000000 --- a/posts/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Posts ---- -{% for post in paginator.posts %} -{%- assign author = site.data.authors[post.author] -%} -
-
-

{{ post.title }}

- -
- {{ post.excerpt }} - Read more… -
-
-
-{%- unless forloop.last -%} -
-{%- endunless -%} -{%- endfor -%} -{% if paginator.total_pages > 1 %} - -{%- endif -%} diff --git a/robots.txt b/robots.txt deleted file mode 100644 index eb05362..0000000 --- a/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/src/app.css b/src/app.css new file mode 100644 index 0000000..ee6102a --- /dev/null +++ b/src/app.css @@ -0,0 +1,88 @@ + +@font-face { + font-family: "HandelGotDBol"; + src: url("/fonts/HandelGotDBol/HandelGotDBol.woff2") format("woff2"), + url("/fonts/HandelGotDBol/HandelGotDBol.woff") format("woff"), + url("/fonts/HandelGotDBol/HandelGotDBol.ttf") format("truetype"); + font-weight: normal; + font-style: normal; + font-display: swap; +} + + +body { + font-family: 'HandelGotDBol', sans-serif; + background: #f0f0f0; + font-family: 'Open Sans', sans-serif; + margin: 0; + padding: 0; + margin: 0; + color: #fff; +} + + +#ssl-seal img { + cursor: pointer; + width: 211px; + height: 64px; +} + +.navbar-brand { + font-family: 'HandelGotDBol'; +} + +.navbar-brand:first-letter { + color: #4f8aff; +} + +li:hover{ + cursor:pointer; +} + +ul { + width:100%; + margin-left: 0; + margin-bottom: 0 +} + +li { + list-style-type: none; + display: inline-block; + margin-right: 20px; +} + +section { + max-height: 100%; + overflow-y: auto; +} + +section.d-flex { + min-height: 100vh; +} + + + .dropdown-menu { + position: absolute; + z-index: 1000; + background: white; + border: 1px solid rgba(0,0,0,.15); + border-radius: 0.25rem; + padding: 0.5rem 0; + list-style: none; + } + + .dropdown-item { + display: flex; + align-items: center; + padding: 0.25rem 1.5rem; + color: #212529; + text-decoration: none; + } + + .dropdown-item:hover { + background-color: #f8f9fa; + } + + .show { + display: block; + } diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 0000000..da08e6d --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://svelte.dev/docs/kit/types#app.d.ts +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 0000000..de43f59 --- /dev/null +++ b/src/app.html @@ -0,0 +1,9 @@ + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + \ No newline at end of file diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte new file mode 100644 index 0000000..6b0c0bb --- /dev/null +++ b/src/lib/components/Footer.svelte @@ -0,0 +1,18 @@ + + + + diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte new file mode 100644 index 0000000..e44f7ae --- /dev/null +++ b/src/lib/components/Header.svelte @@ -0,0 +1,137 @@ + + + \ No newline at end of file diff --git a/src/lib/components/LanguageSwitcher.svelte b/src/lib/components/LanguageSwitcher.svelte new file mode 100644 index 0000000..b3b8584 --- /dev/null +++ b/src/lib/components/LanguageSwitcher.svelte @@ -0,0 +1,63 @@ + + + \ No newline at end of file diff --git a/src/lib/components/ThemeSwitcher.svelte b/src/lib/components/ThemeSwitcher.svelte new file mode 100644 index 0000000..a0d36cf --- /dev/null +++ b/src/lib/components/ThemeSwitcher.svelte @@ -0,0 +1,180 @@ + + + + +
+ + +
+ + + + + + \ No newline at end of file diff --git a/src/lib/i18n/flags/flag_germany.png b/src/lib/i18n/flags/flag_germany.png new file mode 100644 index 0000000..dc23b6d Binary files /dev/null and b/src/lib/i18n/flags/flag_germany.png differ diff --git a/src/lib/i18n/flags/flag_great_britain.png b/src/lib/i18n/flags/flag_great_britain.png new file mode 100644 index 0000000..b52c9b5 Binary files /dev/null and b/src/lib/i18n/flags/flag_great_britain.png differ diff --git a/src/lib/i18n/flags/flag_lithuania.png b/src/lib/i18n/flags/flag_lithuania.png new file mode 100644 index 0000000..8994288 Binary files /dev/null and b/src/lib/i18n/flags/flag_lithuania.png differ diff --git a/src/lib/i18n/flags/flag_russia.png b/src/lib/i18n/flags/flag_russia.png new file mode 100644 index 0000000..f19fb12 Binary files /dev/null and b/src/lib/i18n/flags/flag_russia.png differ diff --git a/src/lib/i18n/locales/de.json b/src/lib/i18n/locales/de.json new file mode 100644 index 0000000..2e95363 --- /dev/null +++ b/src/lib/i18n/locales/de.json @@ -0,0 +1,74 @@ +{ + "localeFlag": "../flags/flag_germany.png", + "siteTitle": "mRemoteNG", + "header": { + "about": "Über uns", + "feed": "Newsfeed", + "contribute": "Beitragen", + "contact": "Kontakt", + "downloads": "Downloads", + "github": "GitHub", + "x": "X", + "documentation": "Dokumentation" + }, + "footer": { + "rights": "Alle Rechte vorbehalten. Betreuer Dimitrij Gorodeckij" + }, + "homepage": { + "title": "Startseite", + "welcome": "Willkommen auf Meiner SvelteKit Seite!", + "intro": "Dies ist eine einfache Website, die mit SvelteKit erstellt wurde und einige coole Funktionen demonstriert:", + "feature1": "Dunkel-/Hell-Theme-Umschalter", + "feature2": "Mehrsprachige Unterstützung (EN, RU, DE)", + "feature3": "Responsiver Header mit Navigation", + "feature4": "Sticky Footer", + "feature5": "Bereit für die Bereitstellung auf GitHub Pages", + "placeholderTitle": "Platzhalterinhalt", + "placeholderText": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "scrollNote": "Scrollen Sie nach unten, um den Sticky Footer in Aktion zu sehen, wenn der Inhalt nicht lang genug ist.", + "moreContent": "Weiterer Platzhalterabsatz {count}, um die Seite scrollbar zu machen. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.", + "genericButton": "Ein Generischer Knopf" + }, + "aboutPage": { + "title": "Über uns", + "heading": "Über uns", + "text1": "Dies ist die Über-uns-Seite. Wir sind ein fiktives Unternehmen, das fiktive Dinge tut.", + "text2": "Unsere Mission ist es, exzellenten Platzhalterinhalt für Demo-Websites bereitzustellen." + }, + "servicesPage": { + "title": "Dienste", + "heading": "Unsere Dienste", + "intro": "Wir bieten eine breite Palette fiktiver Dienstleistungen an, darunter:", + "service1": "Platzhaltertextgenerierung", + "service2": "Imaginäre Produktentwicklung", + "service3": "Konzeptionelle Designlösungen" + }, + "portfolioPage": { + "title": "Portfolio", + "heading": "Portfolio", + "intro": "Hier sind einige unserer erstaunlichen fiktiven Projekte:", + "projectAlpha": "Projekt Alpha (Konzeptionell)", + "projectBeta": "Projekt Beta (Imaginär)", + "projectGamma": "Projekt Gamma (Platzhalter)" + }, + "contactPage": { + "title": "Kontaktieren Sie uns", + "heading": "Kontaktieren Sie uns", + "intro": "Sie können uns nicht wirklich kontaktieren, da dies eine Demo ist. Aber wenn Sie könnten, wären hier das Kontaktformular oder die Details!", + "formName": "Name:", + "formEmail": "Email:", + "formMessage": "Nachricht:", + "formSend": "Nachricht senden", + "formAlert": "Formular gesendet (nicht wirklich!)" + }, + "languages": { + "en": "English", + "ru": "Русский", + "de": "Deutsch" + }, + "themeSwitcher": { + "toggleLabel": "Theme wechseln", + "dark": "Dunkel", + "light": "Hell" + } +} \ No newline at end of file diff --git a/src/lib/i18n/locales/en.json b/src/lib/i18n/locales/en.json new file mode 100644 index 0000000..e3262f6 --- /dev/null +++ b/src/lib/i18n/locales/en.json @@ -0,0 +1,74 @@ +{ + "localeFlag": "../flags/flag_great_britain.png", + "siteTitle": "mRemoteNG", + "header": { + "about": "About", + "feed": "Feed", + "contribute": "Contribute", + "contact": "Contact", + "downloads": "Downloads", + "github": "GitHub", + "x": "X", + "documentation": "Documentation" + }, + "footer": { + "rights": "All rights reserved. Maintainer Dimitrij Gorodeckij" + }, + "homepage": { + "title": "Home", + "welcome": "Welcome to My SvelteKit Site!", + "intro": "This is a simple website built with SvelteKit, demonstrating a few cool features:", + "feature1": "Dark/Light Theme Switcher", + "feature2": "Multilingual Support (EN, RU, DE)", + "feature3": "Responsive Header with Navigation", + "feature4": "Sticky Footer", + "feature5": "Ready for GitHub Pages deployment", + "placeholderTitle": "Placeholder Content", + "placeholderText": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "scrollNote": "Scroll down to see the sticky footer in action if the content isn't long enough to fill the page.", + "moreContent": "More placeholder content paragraph {count} to make the page scrollable. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.", + "genericButton": "A Generic Button" + }, + "aboutPage": { + "title": "About Us", + "heading": "About Us", + "text1": "This is the about page. We are a fictional company doing fictional things.", + "text2": "Our mission is to provide excellent placeholder content for demo websites." + }, + "servicesPage": { + "title": "Services", + "heading": "Our Services", + "intro": "We offer a wide range of fictional services, including:", + "service1": "Placeholder Text Generation", + "service2": "Imaginary Product Development", + "service3": "Conceptual Design Solutions" + }, + "portfolioPage": { + "title": "Portfolio", + "heading": "Portfolio", + "intro": "Here are some of our amazing fictional projects:", + "projectAlpha": "Project Alpha (Conceptual)", + "projectBeta": "Project Beta (Imaginary)", + "projectGamma": "Project Gamma (Placeholder)" + }, + "contactPage": { + "title": "Contact Us", + "heading": "Contact Us", + "intro": "You can't really contact us, because this is a demo. But if you could, this is where the contact form or details would go!", + "formName": "Name:", + "formEmail": "Email:", + "formMessage": "Message:", + "formSend": "Send Message", + "formAlert": "Form submitted (not really!)" + }, + "languages": { + "en": "English", + "ru": "Русский", + "de": "Deutsch" + }, + "themeSwitcher": { + "toggleLabel": "Toggle theme", + "dark": "Dark", + "light": "Light" + } +} \ No newline at end of file diff --git a/src/lib/i18n/locales/ru.json b/src/lib/i18n/locales/ru.json new file mode 100644 index 0000000..fd5f649 --- /dev/null +++ b/src/lib/i18n/locales/ru.json @@ -0,0 +1,74 @@ +{ + "localeFlag": "../flags/flag_russia.png", + "siteTitle": "mRemoteNG", + "header": { + "about": "О проекте", + "feed": "Новости", + "contribute": "Помощь проекту", + "contact": "Контакты", + "downloads": "Скачивания", + "github": "ГитХаб", + "x" : "Х", + "documentation": "Документация" + }, + "footer": { + "rights": "Все права защищены. Куратор Димитрий Городецкий" + }, + "homepage": { + "title": "Главная", + "welcome": "Добро пожаловать на Мой Сайт на SvelteKit!", + "intro": "Это простой сайт, созданный с помощью SvelteKit, демонстрирующий несколько интересных функций:", + "feature1": "Переключатель темной/светлой темы", + "feature2": "Многоязычная поддержка (EN, RU, DE)", + "feature3": "Адаптивный заголовок с навигацией", + "feature4": "Прилипающий футер", + "feature5": "Готов к развертыванию на GitHub Pages", + "placeholderTitle": "Пример содержимого", + "placeholderText": "Лорем ипсум долор сит амет, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + "scrollNote": "Прокрутите вниз, чтобы увидеть прилипающий футер в действии, если содержимое недостаточно длинное.", + "moreContent": "Еще один абзац {count} для прокрутки страницы. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.", + "genericButton": "Обычная Кнопка" + }, + "aboutPage": { + "title": "О нас", + "heading": "О нас", + "text1": "Это страница о нас. Мы вымышленная компания, занимающаяся вымышленными вещами.", + "text2": "Наша миссия - предоставлять отличный пример содержимого для демонстрационных сайтов." + }, + "servicesPage": { + "title": "Услуги", + "heading": "Наши Услуги", + "intro": "Мы предлагаем широкий спектр вымышленных услуг, включая:", + "service1": "Генерация текста-заполнителя", + "service2": "Разработка воображаемых продуктов", + "service3": "Концептуальные дизайнерские решения" + }, + "portfolioPage": { + "title": "Портфолио", + "heading": "Портфолио", + "intro": "Вот некоторые из наших потрясающих вымышленных проектов:", + "projectAlpha": "Проект Альфа (Концептуальный)", + "projectBeta": "Проект Бета (Воображаемый)", + "projectGamma": "Проект Гамма (Пример)" + }, + "contactPage": { + "title": "Свяжитесь с нами", + "heading": "Свяжитесь с нами", + "intro": "Вы не можете связаться с нами, потому что это демо. Но если бы могли, здесь была бы контактная форма или данные!", + "formName": "Имя:", + "formEmail": "Эл. почта:", + "formMessage": "Сообщение:", + "formSend": "Отправить сообщение", + "formAlert": "Форма отправлена (не по-настоящему!)" + }, + "languages": { + "en": "English", + "ru": "Русский", + "de": "Deutsch" + }, + "themeSwitcher": { + "toggleLabel": "Переключить тему", + "dark": "Темная", + "light": "Светлая" + } +} \ No newline at end of file diff --git a/src/lib/i18n/store.ts b/src/lib/i18n/store.ts new file mode 100644 index 0000000..4954bc6 --- /dev/null +++ b/src/lib/i18n/store.ts @@ -0,0 +1,67 @@ +import { writable, derived } from 'svelte/store'; +import { browser } from '$app/environment'; + +// Import translations +import en from './locales/en.json'; +import ru from './locales/ru.json'; +import de from './locales/de.json'; + +// Add an index signature to allow string keys for locales +export const locales: Record = { en, ru, de }; +export const availableLocales = Object.keys(locales); // ['en', 'ru', 'de'] + +function getInitialLang() { + if (!browser) return 'en'; // Default for SSR + const storedLang = localStorage.getItem('lang'); + if (storedLang && availableLocales.includes(storedLang)) { + return storedLang; + } + // Basic browser language detection (can be expanded) + const browserLang = navigator.language.split('-')[0]; + if (availableLocales.includes(browserLang)) { + return browserLang; + } + return 'en'; // Default +} + +export const currentLocale = writable(getInitialLang()); + +if (browser) { + currentLocale.subscribe((value) => { + localStorage.setItem('lang', value); + document.documentElement.lang = value; // Set lang attribute on HTML element + }); +} + +export function setLocale(locale: string) { + if (availableLocales.includes(locale)) { + currentLocale.set(locale); + } +} + +// Derived store for translations +export const t = derived(currentLocale, ($currentLocale) => { + const currentTranslations = locales[$currentLocale] || locales.en; + + // Helper function to get nested keys like "header.home" + return (key: string, replacements: Record = {}) => { + let text = key.split('.').reduce((obj: any, k) => obj && obj[k], currentTranslations); + if (text === undefined) { + console.warn(`Translation key "${key}" not found for locale "${$currentLocale}".`); + return key; // Return the key itself if not found + } + // Handle replacements like {count} + Object.keys(replacements).forEach(placeholder => { + const regex = new RegExp(`{${placeholder}}`, 'g'); + text = text.replace(regex, replacements[placeholder]); + }); + return text; + }; +}); + +// Store for language names, translated by current locale +export const languageNames = derived(t, ($t) => ({ + en: $t('languages.en'), + ru: $t('languages.ru'), + de: $t('languages.de'), +})); \ No newline at end of file diff --git a/src/lib/stores/theme.js b/src/lib/stores/theme.js new file mode 100644 index 0000000..7c54cf3 --- /dev/null +++ b/src/lib/stores/theme.js @@ -0,0 +1,32 @@ +import { writable } from 'svelte/store'; + +// Функция для безопасного доступа к localStorage +const getInitialTheme = () => { + if (typeof window === 'undefined') return 'light'; // Для SSR + + const storedTheme = localStorage.getItem('theme'); + const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; + return storedTheme || (systemPrefersDark ? 'dark' : 'light'); +}; + +export const theme = writable(getInitialTheme()); + +export function toggleTheme() { + theme.update(current => { + const newTheme = current === 'light' ? 'dark' : 'light'; + + if (typeof window !== 'undefined') { + localStorage.setItem('theme', newTheme); + document.documentElement.classList.toggle('dark', newTheme === 'dark'); + } + + return newTheme; + }); +} + +// Инициализация только на клиенте +if (typeof window !== 'undefined') { + theme.subscribe($theme => { + document.documentElement.classList.toggle('dark', $theme === 'dark'); + }); +} \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 0000000..375c227 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,118 @@ + + + + {$t('siteTitle')} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ {@render children()} +
+
+ +