diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 000000000..5fb7262b9 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,10 @@ +# Dependencies +node_modules/ + +# macOS +.DS_Store + +# VitePress' dev server cache +docs/.vitepress/cache +# VitePress' production build +docs/.vitepress/dist diff --git a/docs/.prettierrc.json b/docs/.prettierrc.json new file mode 100644 index 000000000..8af31cded --- /dev/null +++ b/docs/.prettierrc.json @@ -0,0 +1,4 @@ +{ + "tabWidth": 4, + "proseWrap": "always" +} diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..7af229177 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,49 @@ +# Docs + +Help and documentation for Ente's products + +> [!CAUTION] +> +> **Currently not published**. There are bits we need to clean up before +> publishing these docs. They'll likely be available at help.ente.io once we +> wrap those loose ends up. + +## Running + +Install dependencies + +```sh +yarn install +``` + +Then start a local server + +```sh +yarn dev +``` + +## Workflow + +You can edit these files directly on GitHub and open a pull request. That is the +easiest workflow to get started without needing to install anything on your +local machine. + +If you plan on contributing frequently, we recommend using an editor. VSCode is +a good choice. Also install the Prettier extension for VSCode, and set VSCode to +format on save. This way the editor will automatically format and wrap the text +using the project's standard, so you can just focus on the content. + +Note that we currently don't enforce these formatting standards to make it easy +for people unfamiliar with programming to also be able to make edits from GitHub +directly. + +This is a common theme - unlike the rest of the codebase where we expect some +baseline understanding of the tools involved, the docs are meant to be a place +for non-technical people to also provide their input. The reason for this is not +to increase the number of docs, but to bring more diversity to them. Such +diversity of viewpoints is essential for evolving documents that can be of help +to people of varying level of familiarity with tech. + +If you're unsure about how to do something, just look around in the other files +and copy paste whatever seems to match the look of what you're trying to do. And +remember, writing docs should not be a chore, have fun! diff --git a/docs/docs/.vitepress/config.ts b/docs/docs/.vitepress/config.ts new file mode 100644 index 000000000..460dacc8a --- /dev/null +++ b/docs/docs/.vitepress/config.ts @@ -0,0 +1,38 @@ +import { defineConfig } from "vitepress"; +import { sidebar } from "./sidebar"; + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "Ente Help", + description: "Documentation and help for Ente's products", + head: [["link", { rel: "icon", type: "image/png", href: "/favicon.png" }]], + cleanUrls: true, + themeConfig: { + // We use the default theme (with some CSS color overrides). This + // themeConfig block can be used to further customize the default theme. + // + // https://vitepress.dev/reference/default-theme-config + logo: "/logo.png", + externalLinkIcon: true, + editLink: { + pattern: + "https://github.com/ente-io/ente/edit/main/docs/docs/:path", + }, + // nav: [ + // { text: "Photos", link: "/photos/index" }, + // { text: "Authenticator", link: "/authenticator/index" }, + // ], + search: { + provider: "local", + options: { + detailedView: true, + }, + }, + sidebar: sidebar, + socialLinks: [ + { icon: "github", link: "https://github.com/ente-io/ente/" }, + { icon: "twitter", link: "https://twitter.com/enteio" }, + { icon: "discord", link: "https://discord.gg/z2YVKkycX3" }, + ], + }, +}); diff --git a/docs/docs/.vitepress/sidebar.ts b/docs/docs/.vitepress/sidebar.ts new file mode 100644 index 000000000..8f2d556f4 --- /dev/null +++ b/docs/docs/.vitepress/sidebar.ts @@ -0,0 +1,95 @@ +// When adding new pages, they need to manually inserted into their appropriate +// place here if you wish them to also appear in the sidebar. + +export const sidebar = []; + +function sidebarOld() { + return [ + { + text: "Welcome", + items: [ + { + text: "About", + collapsed: true, + link: "/about/company", + items: [ + { text: "Company", link: "/about/company" }, + { text: "Products", link: "/about/products" }, + { text: "Plans", link: "/about/plans" }, + { text: "Support", link: "/about/support" }, + { text: "Community", link: "/about/community" }, + { text: "Open source", link: "/about/open-source" }, + { text: "Contribute", link: "/about/contribute" }, + ], + }, + { + text: "Features", + collapsed: true, + items: [ + { + text: "Family Plan", + link: "/photos/features/family-plan", + }, + { text: "Albums", link: "/photos/features/albums" }, + { text: "Archive", link: "/photos/features/archive" }, + { text: "Hidden", link: "/photos/features/hidden" }, + { text: "Map", link: "/photos/features/map" }, + { + text: "Location Tags", + link: "/photos/features/location", + }, + { + text: "Collect Photos", + link: "/photos/features/collect", + }, + { + text: "Public links", + link: "/photos/features/public-links", + }, + { + text: "Quick link", + link: "/photos/features/quick-link", + }, + { + text: "Watch folder", + link: "/photos/features/watch-folder", + }, + { text: "Trash", link: "/photos/features/trash" }, + { + text: "Uncategorized", + link: "/photos/features/uncategorized", + }, + { + text: "Referral Plan", + link: "/photos/features/referral", + }, + { + text: "Live & Motion Photos", + link: "/photos/features/live-photos", + }, + { text: "Cast", link: "/photos/features/cast" }, + ], + }, + { + text: "Troubleshoot", + collapsed: true, + link: "/photos/troubleshooting/files-not-uploading", + items: [ + { + text: "Files not uploading", + link: "/photos/troubleshooting/files-not-uploading", + }, + { + text: "Failed to play video", + link: "/photos/troubleshooting/video-not-playing", + }, + { + text: "Report bug", + link: "/photos/troubleshooting/report-bug", + }, + ], + }, + ], + }, + ]; +} diff --git a/docs/docs/.vitepress/theme/custom.css b/docs/docs/.vitepress/theme/custom.css new file mode 100644 index 000000000..41132ee64 --- /dev/null +++ b/docs/docs/.vitepress/theme/custom.css @@ -0,0 +1,19 @@ +:root { + --ente-theme-color: #1db954; + --ente-theme-color-alt: #00b33c; + + --vp-theme-color: var(--ente-theme-color); + --vp-c-brand: var(--ente-theme-color); + --vp-c-brand-1: var(--ente-theme-color); + --vp-c-brand-2: var(--ente-theme-color-alt); + --vp-home-hero-name-color: var(--ente-theme-color); + --vp-c-brand-light: var(--ente-theme-color); + --vp-button-brand-border: var(--ente-theme-color); + --vp-button-brand-bg: var(--ente-theme-color); + --vp-button-brand-text: #191919; + --vp-button-brand-hover-border: var(--ente-theme-color-alt); + --vp-button-brand-hover-bg: #191919; + --vp-button-brand-hover-text: #e5e5e5; + --vp-local-search-highlight-bg: var(--ente-theme-color); + --docsearch-hit-active-color: #191919; +} diff --git a/docs/docs/.vitepress/theme/index.js b/docs/docs/.vitepress/theme/index.js new file mode 100644 index 000000000..c495bc1b8 --- /dev/null +++ b/docs/docs/.vitepress/theme/index.js @@ -0,0 +1,4 @@ +import DefaultTheme from "vitepress/theme"; +import "./custom.css"; + +export default DefaultTheme; diff --git a/docs/docs/about/ducky.png b/docs/docs/about/ducky.png new file mode 100644 index 000000000..991252998 Binary files /dev/null and b/docs/docs/about/ducky.png differ diff --git a/docs/docs/about/index.md b/docs/docs/about/index.md new file mode 100644 index 000000000..d52fbf1c9 --- /dev/null +++ b/docs/docs/about/index.md @@ -0,0 +1,122 @@ +--- +title: About Ente +description: > + An overview of Ente: the company, and the people behind it, and the products + that we make. +--- + +Ente is a platform for privately, reliably, and securely storing your data on +the cloud. On top of this platform, Ente offers two products currently: + +* Ente Photos - An alternative to Google Photos and Apple Photos + +* Ente Auth - A (free!) app for storing your 2FA codes. + +and more products are in the pipeline. + +## History + +Ente was the founded by Vishnu Mohandas, who is also the Ente's CEO, in response +to privacy concerns with major tech companies. The underlying motivation was the +understanding that big tech had no incentive to fix their act, but with +end-to-end encrypted cross platform apps, there was a way for people to take +back control over their own data without sacrificing on features. + +### What does Ente mean? + +In Malayalam, Vishnu's native language, "ente" means "mine". Thus "Ente Photos" +has the literal meaning "my photos". + +This was a good name, but still Vishnu looked around for better ones. But one +day, he discovered that "ente" means "duck" in German. This unexpected +connection sealed the deal! We should ask him why he likes ducks so much, but +apparently he does, so this dual meaning ("mine" / "duck") led him to finalize +the name, and also led to the adoption of the duck as Ente's mascot, "Ducky": + +
+ +![Ente's mascot, Ducky](ducky.png){width=200px} + +
+ +### How do I pronounce Ente? + +en-_tay_. Like cafe. + +--- + +# Products + +Ente currently offers Photo and Auth. Additionally, there are some other +products (Lockers and Legacy) that are being considered. + +## Ente Photos + +Ente Photos goes beyond traditional cloud storage, prioritizing your privacy and +the safety of your cherished memories. All your photos, along with their +metadata, are stored end-to-end encrypted, ensuring that only you have access to +your data. + +Ente preserves your encrypted photos across three different clouds in three +separate locations, including an underground fallout shelter. This multi-layered +backup strategy provides a high level of reliability. + +Ente photos is available for Android, iOS, Linux, Mac, Windows and the web. + +# Ente Auth + +Ente auth is ust an authenticator app; it's an open-source initiative +dedicated to securing your 2FA secrets. Now, you can backup and view your +two-factor authentication secrets seamlessly. find more information about the +project on GitHub at github.com/ente-io/auth. + +As a token of gratitude to the community that has supported us, Ente Auth is +offered as a free service. If in the future we convert this to a paid service, +existing users will be grandfathered in. + +Ente auth is available on Android, iOS, and the web + +# Connect with Ente + +## Customer support + +Connect with our support team for swift assistance and expert guidance email us +@support@ente.io. +Reach out to our dev team @team@ente.io, even our CEO and CTO personally +responds here. + +## Blog + +As Ente continues to evolve, So does our story. Follow our blog @ +https://ente.io/blog As Ente undergoes continuous growth and development, our +narrative unfolds. Explore our blog for exclusive company updates that offer an +insider's perspective. Regularly visit the Ente blog to maintain your +connection, stay well informed, and draw insipration. + +## Roadmap + +You plays a pivotal role in shaping the future direction of Ente's product, and +we invite you to be an integral part of it. + +Take a look at our roadmap to see where we're headed +https://roadmap.ente.io/roadmap/ + +# Community + +#### Join our vibrant community and stay updated on all things on Ente! Follow us on various platforms for the latest news, updates, and engaging content + +#### Discord + +Join our Discord for real-time discussions, solutions to queries, and a thriving +camaraderie. Stay updated on all things on Ente! + +🐦 Twitter: https://twitter.com/enteio + +🔗 Reddit: https://www.reddit.com/r/enteio + +📸 Instagram: https://www.instagram.com/ente.app/ + +🐘 Mastodon: https://mstdn.social/@ente + +🔗 LinkedIn: https://www.linkedin.com/company/ente-io/ + diff --git a/docs/docs/auth/index.md b/docs/docs/auth/index.md new file mode 100644 index 000000000..491d1d11c --- /dev/null +++ b/docs/docs/auth/index.md @@ -0,0 +1,15 @@ +--- +title: Ente Auth +description: User guide for Ente Auth +--- + +# Welcome to the Ente Auth's User Guide! + +Ente Auth is a free, cross-platform, end-to-end encrypted authenticator app for +everyone. You can use it to safely store your 2FA codes (second-factor +authentication codes). + +> [!CAUTION] +> +> These docs are still incomplete. If you feel like contributing though, help us +> [fill them in](https://github.com/ente-io/ente/docs). diff --git a/docs/docs/auth/support/contribute.md b/docs/docs/auth/support/contribute.md new file mode 100644 index 000000000..dd208e1f3 --- /dev/null +++ b/docs/docs/auth/support/contribute.md @@ -0,0 +1,8 @@ +## Translation + +## Icons + +## Support Development + +If you wish to support the development of the project, please consider switching +to paid plan of [Ente Photos](https://ente.io) diff --git a/docs/docs/de/auth/index.md b/docs/docs/de/auth/index.md new file mode 100644 index 000000000..3dfee073d --- /dev/null +++ b/docs/docs/de/auth/index.md @@ -0,0 +1,13 @@ +--- +title: Ente Auth +description: Ente Auth-Benutzerhandbuch +--- + +# Willkommen beim Ente Auth-Benutzerhandbuch! + +Ente Authenticator ist eine kostenlose, plattformübergreifende, +Ende-zu-Ende-verschlüsselte Authenticator-App für jedermann. Wir sind froh, dass +du hier bist! + +**Please note that this German translation is currently just a placeholder.** +Know German? [Help us fill this in!](https://github.com/ente-io/ente/docs). diff --git a/docs/docs/photos/faq/faq.md b/docs/docs/photos/faq/faq.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/photos/features/albums.md b/docs/docs/photos/features/albums.md new file mode 100644 index 000000000..18d9b4722 --- /dev/null +++ b/docs/docs/photos/features/albums.md @@ -0,0 +1,67 @@ +# Albums + +This guide will show you how to make the most of your albums with simple yet +effective features. Below are the features that allow you to personailze your +albums according to your preferences: + +## 1. Rename album: Personalize your albums by giving them a meaningful name + +### How to Rename an album on your mobile? + +- Open the album +- Tap the three dots button in the top right corner of the screen +- Tap rename album, then type in a new name +- Tap on Rename button + +### How to Rename an album on your Desktop? + +- Open the album +- Click on the overflow menu in the top right corner +- Click the Rename album +- Type in a new name +- Click on Rename or Press enter + +## 2. Set cover: Select any photo you want to use as the cover for your album. + +### How to set an album cover on mobile? + +- Open the album you want to change +- Tap the three dots button in the top right corner +- From the menu options, select Set cover +- A new screen will appear, propmpting you to select the cover photo +- Browse through your photos and tap on the image you want to set as the album + cover +- Then tap on Use selected photo + +## 3. Map: Explore the memories based on their location + +### How to explore the album's photo in map view? + +- Open the album +- Tap on the three dots button in the top right corner +- Select map +- View all photos of the album in map view + +## 4. Sort by: Maintain order in your albums by arranging them from the newest to the oldest + +### How to sort by on mobile? + +- Open the album +- Tap on the three dots button in the top right corner +- Select sort by +- Tap on the Newst first for the latest, Or Oldest first for the oldest + +### How to sort by on desktop? + +- Open the album +- Click on the three dots button in the top right corner +- Click sort by +- Click on the Newest first for the latest, Or oldest first for the oldest + +## 5. Pin album: Keep your favorite album at the top by pinning them for quick access. + +### How to Pin/Unpin an album on Mobile? + +- Open the album +- Tap on the three dots button in the top right corner +- Tap on Pin album/Unpin album diff --git a/docs/docs/photos/features/archive.md b/docs/docs/photos/features/archive.md new file mode 100644 index 000000000..5464bf15a --- /dev/null +++ b/docs/docs/photos/features/archive.md @@ -0,0 +1,46 @@ +# Archive + +You can remove a photo (owned by you) or an album from your **home timeline** by +archiving it. Archived photos won't be included in the memories section on the +mobile app. + +- All photos within a archived album will be removed from home timeline, even + when some of the photos are also present in a non-archived album. +- You can archive albums that are owned by you or shared with you. +- Search results will include archived photos. If you want to hide photos from + search result, use [Hide](./hidden.md) feature. + +### How to + +#### Archive Album + +- Open the album +- Click on the overflow menu +- Click on Archive album + +#### Archive Photo + +- Long press to select the photo +- Select Archive option from the bottom menu. + +#### View Archived Photos and Albums + +**Mobile** + +- Go to Albums tab +- Scroll down to bottom +- Click on Archive button. + +**Desktop** + +- Click on the topleft hamburger menu +- Click on Archive + +### Metadata Privacy + +Both Ente and the person with whom you are sharing an album or photo have no +information about whether you have + +- Archived a photo +- Archived an album +- Archived a shared album. diff --git a/docs/docs/photos/features/cast.md b/docs/docs/photos/features/cast.md new file mode 100644 index 000000000..faec1c9db --- /dev/null +++ b/docs/docs/photos/features/cast.md @@ -0,0 +1,36 @@ +# Cast + +With ente Cast, you can play a slideshow of your favourite albums on your Google +Chromecast TVs or other Internet-connected large screen devices. + +## Get Started + +1. Open ente on the web or on your mobile device. +2. Select the album you want to play on your large screen device. +3. Click "Play album on TV" in the album menu. + +On the web, you can find this menu in the balls menu on the right hand side. +![Balls menu](/assets/cast/web-play-album-on-tv.webp) + +4. Choose how you want to pair your device with your large screen device. + ![Pairing options](/assets/cast/web-pairing-options.webp) + +On Chromium browsers, you will see a button labeled "Auto Pair". This option +will prompt you to select a Chromecast supported device on your local network. +Note: this option requires connecting to Google servers to load necessary +dependencies. This option does not transmit any sensitive data through Google +servers, such as your photos. Once your Chromecast device is connected, you're +all set. + +On all browsers, you'll see the option to "Pair with PIN". This option works +with all devices, Chromecast-enabled or not. You'll be required to load up +[cast.ente.io](https://cast.ente.io) on your large screen device. + +5. Enter the PIN displayed on your large screen device into the input field on + your mobile or web device. + +On your large screen device, you'll see the following screen. +![Pairing screen](/assets/cast/tv-pairing-screen.webp) + +6. If you entered your PIN correctly, you'll see a screen on your TV with a + green checkmark confirming the connection. diff --git a/docs/docs/photos/features/collect.md b/docs/docs/photos/features/collect.md new file mode 100644 index 000000000..829775043 --- /dev/null +++ b/docs/docs/photos/features/collect.md @@ -0,0 +1,28 @@ +# Collect photos: Collecting memories from events is now a breeze! + +- Whether it's a birthday party, vacation trip or wedding, easily share your + album using a unique, secure, end-to-end encrypted link. +- Introduce the 'collect photos' feature to your friends and family who can + contribute without an ente account. +- This allows them to effortlessly add, view, and download photos from the + link without an ente account. +- Also preserves metadata and photo quality + +## How to Collect photos on mobile? + +- Open the album you want to share with +- Tap on the Share album icon in the top right corner of the screen +- Select 'Collect photos' +- Tap 'Copy link' +- The link has been copied to your clipboard. Now, feel free to share it + +## How to Collect photos on Web/Desktop? + +To collect photos on the web/desktop: + +- Open the album +- Click on the share album icon +- Select Collect photos +- Click on Copy link +- The link has been copied to your clipboard. Share it effortlessly with + others! diff --git a/docs/docs/photos/features/family-plan.md b/docs/docs/photos/features/family-plan.md new file mode 100644 index 000000000..cda8382aa --- /dev/null +++ b/docs/docs/photos/features/family-plan.md @@ -0,0 +1,18 @@ +# Family plans + +Paid subscribers of Ente can share the storage with their family, **at no +additional cost** as you have already paid for the storage. + +In breif, + +- Your family members can use storage space from your plan without paying + extra. + +- Ask them to sign up for Ente, and then just add them to your existing plan + using the "Manage family" option within your Subscription settings. + +- Each member gets their own private space, and cannot see each other's files + unless they're shared. + +- You can invite 5 family members. So including yourself, it will be 6 people + who can share a single subscription, paying only once. diff --git a/docs/docs/photos/features/hidden.md b/docs/docs/photos/features/hidden.md new file mode 100644 index 000000000..46a99ec96 --- /dev/null +++ b/docs/docs/photos/features/hidden.md @@ -0,0 +1,59 @@ +# Hidden + +You can further protect extra sensitive photos or albums by hiding them. Hidden +photos or albums will **only be viewable** after an extra layer of +authentication inside the app. Hidden differs from [Archive](./archive.md) in +the fact that hidden photos won't be surfaced anywhere in the app without +explicit authentication, whereas Archive only removes them from the home +timeline and memories sections. + +- Hidden photos and albums will be removed from home timelines, memories, + albums tab, search results, and any other visable place in the app. +- Hidden photos will be removed from all regular albums. If you want to unhide + again you will have to specify the album to move it to. +- You cannot hide photos or albums shared with you. You can archive shared + albums instead. + +### How to + +#### Hide album + +- Open the album +- Click on the overflow menu +- Click on Hide album + +#### Hide photo + +- Select the photo +- Click on Hide option from the select menu + +#### View hidden photos and albums + +_Mobile_: + +- Go to Albums tab +- Scroll down to bottom +- Click on Hidden button +- Authenticate in app + +_Desktop_: + +- Click on the topleft hamburger menu +- Click on Hidden +- Authenticate in app + +#### Unhide album + +- Open the hidden album +- Click on the overflow menu +- Click on Unhide album + +#### Unhide photo + +- Select the hidden photo +- Click on Unhide option from the select menu +- Click on the album the photo should be restored to + +### Metadata Privacy + +Ente has no information about whether you have hidden a photo or album. diff --git a/docs/docs/photos/features/live-photos.md b/docs/docs/photos/features/live-photos.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/photos/features/location.md b/docs/docs/photos/features/location.md new file mode 100644 index 000000000..9dfcfbdd7 --- /dev/null +++ b/docs/docs/photos/features/location.md @@ -0,0 +1,35 @@ +# Location Tags: Search and Organize Your Photos + +## Overview: + +The Location Tags feature allows you to efficiently search and organize your +photos based on their geographical location. Instead of sending your queries to +our servers, we've implemented a privacy-friendly solution that runs searches +locally on your device. + +## How to Use Location Tags: + +### Method 1: Adding Location Tags from a Photo + +1. Open a photo. +2. Click on "Info." +3. Select "Add Location." +4. Enter the location name and define a radius. + +### Method 2: Adding Location Tags from the Search Tab + +1. Go to the search tab. +2. Click on "Add new" at the end of the location tags section. +3. Select a photo as the center point for the location tag. +4. Enter the location name and define a radius. + +## Note: + +- The app will automatically cluster photos falling within a radius under a + specified location. +- Location Tags provide a seamless way to filter photos without compromising + your privacy. +- Location tags are stored end-to-end encrypted, ensuring the security of your + data. +- Enjoy a more organized photo library by tagging important places like home, + office, and vacation spots. diff --git a/docs/docs/photos/features/map.md b/docs/docs/photos/features/map.md new file mode 100644 index 000000000..3890b1c47 --- /dev/null +++ b/docs/docs/photos/features/map.md @@ -0,0 +1,34 @@ +# Map : View and explore your photos on the map + +## How can I view photos on the map on mobile? + +- Step 1. Find the search icon located at the bottom right corner of your + screen. +- Step 2. Tap on the globe icon (Your map) withing the location +- Step 3. Enter the map view and start exploring your photos from around the + world. + +## How to enable map on your mobile app? + +- Step 1. Tap the three horizontal lines located at the top left corner of + your home screen or swipe left on the home screen. +- Step 2. Select "General" settings. +- Step 3. Enter the "Advanced" settings. +- Step 4. Use the toggle switch to turn the map feature on or off + +## How to view Album photos on the map? + +- Step 1. Open the album containing the photos you want to view +- Step 2. Tap on the three horizontal lines located in the top right corner of + the screen. +- Step 3. Select "Map" from the options. +- Step 4. View and explore your photos on the map. + +## How to enable map on desktop? + +- Step 1. Click on the three horizontal lines located in the top left corner + of the app. +- Step 2. Navigate to "preferences" from the menu. +- Step 3. Select "Advanced" in the preference menu. +- Step 4. Click on "Map" to access map settings. +- Step 5. Toggle the map settings on and off based on your preferences. diff --git a/docs/docs/photos/features/public-links.md b/docs/docs/photos/features/public-links.md new file mode 100644 index 000000000..2afce455e --- /dev/null +++ b/docs/docs/photos/features/public-links.md @@ -0,0 +1,20 @@ +# Public Links + +Ente lets you share your photos via links, that can be accessed by anyone, +without an app or account. + +The contents within these links are also end-to-end encrypted. + +> Implementation details have been documented +> [here](https://ente.io/blog/building-shareable-links/). + +You can also use these links to collect photos from your friends after a party +or event. Everything they add also remains end-to-end encrypted. + +In addition to this, links support the following features: + +- Link expiry (so the links go poof after a duration you define) +- Device limits (in case you don't want someone to forwarding your link) +- Password lock (to add an additional level of protection to your photos) +- Prevent downloads (while we can't prevent screenshots, we can disable the + option to download your original photos) diff --git a/docs/docs/photos/features/quick-link.md b/docs/docs/photos/features/quick-link.md new file mode 100644 index 000000000..286b6d282 --- /dev/null +++ b/docs/docs/photos/features/quick-link.md @@ -0,0 +1,12 @@ +# Quick Links + +Quick links allows you to select single or multiple photos & create a link. +Behind the scene, ente creates a special album and put all the selected files in +that special album. + +- You can view all quick links created by you in the sharing tab, under Quick + links section. +- Quick links can be converted to regular album. +- Remove link will not delete the photos that are present in that link. +- Similar to [public-links](./public-links.md), you can set link expirty, set + passwords or device limits. diff --git a/docs/docs/photos/features/referral.md b/docs/docs/photos/features/referral.md new file mode 100644 index 000000000..f0818bb9b --- /dev/null +++ b/docs/docs/photos/features/referral.md @@ -0,0 +1,41 @@ +# Referral plan: Earn and Expand Your Storage + +## Overview: + +Did you know you can boost your storage on Ente simply by referring your +friends? Our referral program lets you earn 10 GB of free storage for each +friend who upgrades to a paid plan, and your referred friends receive an +additional 10 GB with their subscription. + +## How to Refer a friend? + +On the Home Page: + +- Click on the hamburger menu in the top left corner +- Open the sidebar +- Tap on 'General' +- Select Referrals +- Share the code with your friend or family + +Note: + +- Once your friend upgrades to a paid plan, both you and your friend receive + an additional 10 GB of storage +- Keep track of your earned storage and referral details on Claim free storage + screen +- If you refer more friends than your plan allows, the extra storage earned + will be reserved until you upgrade your plan +- Earned storage remains accessible as long as your subscription is active + +## How to apply Refferal code of a friend? + +On the Home Page: + +- Click on the hamburger menu inthe top left corner +- Tap on 'General' from the options +- Select 'Referrals' from the menu +- Find and tap on 'Apply Code.' +- Enter the referral code provided by your friend. + +Note: Please note that referral codes should be applied within one month of +account creation to claim free storage. diff --git a/docs/docs/photos/features/trash.md b/docs/docs/photos/features/trash.md new file mode 100644 index 000000000..f52ed676d --- /dev/null +++ b/docs/docs/photos/features/trash.md @@ -0,0 +1,7 @@ +# Trash + +Whenever you delete an item from ente, it is moved to Trash. These items will be +automatically deleted from Trash after 30 days. You can manaully select or +completely empty the trash, if you wish. + +Items in trash are included in your used storage calculation. diff --git a/docs/docs/photos/features/uncategorized.md b/docs/docs/photos/features/uncategorized.md new file mode 100644 index 000000000..e73333c9a --- /dev/null +++ b/docs/docs/photos/features/uncategorized.md @@ -0,0 +1,18 @@ +## Uncategoried + +"Uncategorized" is a special album type where photos are automatically added +under the following circumstances: + +- When you remove a photo from the last album, it is relocated to + "Uncategorized." +- During album deletion, if you choose to keep photos but delete the album, + all photos exclusive to the current album are moved to the "Uncategorized" + section. + +Note: This does not include photos uploaded by others. + +### Clean up Uncategorized + +In the mobile app, you can click on the overflow menu and click +`Clean Uncategorized` option. All files that are also present in another album, +that is owned by the user, will be removed from the Uncategorized section. diff --git a/docs/docs/photos/features/watch-folder.md b/docs/docs/photos/features/watch-folder.md new file mode 100644 index 000000000..52a33bd52 --- /dev/null +++ b/docs/docs/photos/features/watch-folder.md @@ -0,0 +1,30 @@ +# Watched Folders: Effortless Syncing + +## Overview: + +The ente desktop app now allows you to "watch" a folder on your computer for any +changes, creating a one-way sync from your device to the Ente cloud. This will +make photo management and backup a breeze. + +## How to add Watch folders? + +- Click on the hamburger menu in the top left corner +- Open the sidebar +- Select "Watch Folders" +- Choose "Add Watch Folders" +- Pick the folder from your system that you want to add as Watch folder + +## How to remove Watch folders? + +- Click on the hamburger menu in the top left corner +- Open the sidebar +- Select "Watch Folders" +- Click on the three dots menu next to the folders on the right side +- Choose "Stop Watching" from the menu + +# Note: + +- Option to choose whether to sync nested folders to a single album or + separate albums. +- The app continuously monitors changes in the watched folder, such as the + addition or removal of files diff --git a/docs/docs/photos/getting-started/index.md b/docs/docs/photos/getting-started/index.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/photos/index.md b/docs/docs/photos/index.md new file mode 100644 index 000000000..7fd7214a1 --- /dev/null +++ b/docs/docs/photos/index.md @@ -0,0 +1,42 @@ +# Welcome to Help! + +Welcome to Ente Photos Help! If you're new to Ente Photos, our +[Quick Start](./getting-started/index.md) and [FAQs](./faq/faq.md) are great +places to begin. + +If you can’t find an answer, please [ask the community](https://ente.io/discord) +or write to **support@ente.io**. + +To send a bug report or a feature suggestion, you can use +[Github Issues](https://github.com/ente-io/photos-app/issues). + +Feedback about this documentation can be shared on our +[Discord Server](https://ente.io/discord) in the **\#docs** channel. We would +love to hear your thoughts on anything we can fix or improve. + +## About Ente Photos + +[Ente Photos](https://ente.io) is a safe home for your photos and videos. + +You can store, share, and re-discover your moments with absolute privacy. + +## About Ente Auth + +[Ente Auth](https://ente.io/auth) is a secure, end-to-end encrypted 2FA app with +multi-platform sync. + +Learn more about Auth [here](../authenticator/). + +## Contributing + +The source for this documentation is available at +[github.com/ente-io/docs](https://github.com/ente-io/docs). + +Please see our +[contribution guide](https://github.com/ente-io/docs#contributing). We'd be +grateful for any fixes and improvements! + +Once your contributions are accepted, please add yourself to the list of +[Contributors](./misc/contributors.md). + +Thank you! diff --git a/docs/docs/photos/misc/contributors.md b/docs/docs/photos/misc/contributors.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/photos/troubleshooting/files-not-uploading.md b/docs/docs/photos/troubleshooting/files-not-uploading.md new file mode 100644 index 000000000..c3f538b4a --- /dev/null +++ b/docs/docs/photos/troubleshooting/files-not-uploading.md @@ -0,0 +1,13 @@ +## Network Issue + +If you are using VPN, please try disabling the VPN or switching provider. + +## Web/Desktop + +**Certain file types are not uploading** + +The desktop/web app tries to detect if a particular file is video or image. If +the detection fails, then the app skips the upload. Please share either the +sample file or logs with us @support.ente.io + +## Mobile diff --git a/docs/docs/photos/troubleshooting/report-bug.md b/docs/docs/photos/troubleshooting/report-bug.md new file mode 100644 index 000000000..239cb30d9 --- /dev/null +++ b/docs/docs/photos/troubleshooting/report-bug.md @@ -0,0 +1,15 @@ +## Report Bug + +Guide to help the user in sharing logs. + +### Mobile + +Placeholder + +### Desktop + +Placeholder + +### Web + +Placeholder diff --git a/docs/docs/photos/troubleshooting/video-not-playing.md b/docs/docs/photos/troubleshooting/video-not-playing.md new file mode 100644 index 000000000..ff0251043 --- /dev/null +++ b/docs/docs/photos/troubleshooting/video-not-playing.md @@ -0,0 +1,5 @@ +## Video Playback Issue + +### Web + +### Desktop / Mobile diff --git a/docs/docs/public/assets/cast/tv-pairing-screen.webp b/docs/docs/public/assets/cast/tv-pairing-screen.webp new file mode 100644 index 000000000..201fc088b Binary files /dev/null and b/docs/docs/public/assets/cast/tv-pairing-screen.webp differ diff --git a/docs/docs/public/assets/cast/web-pairing-options.webp b/docs/docs/public/assets/cast/web-pairing-options.webp new file mode 100644 index 000000000..586b887bc Binary files /dev/null and b/docs/docs/public/assets/cast/web-pairing-options.webp differ diff --git a/docs/docs/public/assets/cast/web-play-album-on-tv.webp b/docs/docs/public/assets/cast/web-play-album-on-tv.webp new file mode 100644 index 000000000..26c9191cd Binary files /dev/null and b/docs/docs/public/assets/cast/web-play-album-on-tv.webp differ diff --git a/docs/docs/public/favicon.png b/docs/docs/public/favicon.png new file mode 100644 index 000000000..334abda0d Binary files /dev/null and b/docs/docs/public/favicon.png differ diff --git a/docs/docs/public/logo.png b/docs/docs/public/logo.png new file mode 100644 index 000000000..8a84dfb18 Binary files /dev/null and b/docs/docs/public/logo.png differ diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 000000000..d6b4b8a3b --- /dev/null +++ b/docs/package.json @@ -0,0 +1,14 @@ +{ + "type": "module", + "private": true, + "scripts": { + "dev": "vitepress dev docs", + "build": "vitepress build docs", + "preview": "vitepress preview docs", + "pretty": "prettier --write ." + }, + "devDependencies": { + "prettier": "^3", + "vitepress": "^1.0.0-rc.44" + } +} diff --git a/docs/yarn.lock b/docs/yarn.lock new file mode 100644 index 000000000..5f12adede --- /dev/null +++ b/docs/yarn.lock @@ -0,0 +1,761 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@algolia/autocomplete-core@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" + integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-plugin-algolia-insights@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587" + integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-preset-algolia@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da" + integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-shared@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" + integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== + +"@algolia/cache-browser-local-storage@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz#14b6dc9abc9e3a304a5fffb063d15f30af1032d1" + integrity sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g== + dependencies: + "@algolia/cache-common" "4.22.1" + +"@algolia/cache-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.22.1.tgz#c625dff4bc2a74e79f9aed67b4e053b0ef1b3ec1" + integrity sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA== + +"@algolia/cache-in-memory@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz#858a3d887f521362e87d04f3943e2810226a0d71" + integrity sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw== + dependencies: + "@algolia/cache-common" "4.22.1" + +"@algolia/client-account@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.22.1.tgz#a7fb8b66b9a4f0a428e1426b2561144267d76d43" + integrity sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-analytics@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.22.1.tgz#506558740b4d49b1b1e3393861f729a8ce921851" + integrity sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.22.1.tgz#042b19c1b6157c485fa1b551349ab313944d2b05" + integrity sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ== + dependencies: + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-personalization@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.22.1.tgz#ff088d797648224fb582e9fe5828f8087835fa3d" + integrity sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-search@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.22.1.tgz#508cc6ab3d1f4e9c02735a630d4dff6fbb8514a2" + integrity sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/logger-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.22.1.tgz#79cf4cd295de0377a94582c6aaac59b1ded731d9" + integrity sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg== + +"@algolia/logger-console@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.22.1.tgz#0355345f6940f67aaa78ae9b81c06e44e49f2336" + integrity sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA== + dependencies: + "@algolia/logger-common" "4.22.1" + +"@algolia/requester-browser-xhr@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz#f04df6fe9690a071b267c77d26b83a3be9280361" + integrity sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw== + dependencies: + "@algolia/requester-common" "4.22.1" + +"@algolia/requester-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.22.1.tgz#27be35f3718aafcb6b388ff9c3aa2defabd559ff" + integrity sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg== + +"@algolia/requester-node-http@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz#589a6fa828ad0f325e727a6fcaf4e1a2343cc62b" + integrity sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA== + dependencies: + "@algolia/requester-common" "4.22.1" + +"@algolia/transporter@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.22.1.tgz#8843841b857dc021668f31647aa557ff19cd9cb1" + integrity sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ== + dependencies: + "@algolia/cache-common" "4.22.1" + "@algolia/logger-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + +"@babel/parser@^7.23.9": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" + integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== + +"@docsearch/css@3.5.2", "@docsearch/css@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.5.2.tgz#610f47b48814ca94041df969d9fcc47b91fc5aac" + integrity sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA== + +"@docsearch/js@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/js/-/js-3.5.2.tgz#a11cb2e7e62890e9e940283fed6972ecf632629d" + integrity sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg== + dependencies: + "@docsearch/react" "3.5.2" + preact "^10.0.0" + +"@docsearch/react@3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.5.2.tgz#2e6bbee00eb67333b64906352734da6aef1232b9" + integrity sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng== + dependencies: + "@algolia/autocomplete-core" "1.9.3" + "@algolia/autocomplete-preset-algolia" "1.9.3" + "@docsearch/css" "3.5.2" + algoliasearch "^4.19.1" + +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@rollup/rollup-android-arm-eabi@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz#38c3abd1955a3c21d492af6b1a1dca4bb1d894d6" + integrity sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w== + +"@rollup/rollup-android-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz#3822e929f415627609e53b11cec9a4be806de0e2" + integrity sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ== + +"@rollup/rollup-darwin-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz#6c082de71f481f57df6cfa3701ab2a7afde96f69" + integrity sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ== + +"@rollup/rollup-darwin-x64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz#c34ca0d31f3c46a22c9afa0e944403eea0edcfd8" + integrity sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg== + +"@rollup/rollup-linux-arm-gnueabihf@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz#48e899c1e438629c072889b824a98787a7c2362d" + integrity sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA== + +"@rollup/rollup-linux-arm64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz#788c2698a119dc229062d40da6ada8a090a73a68" + integrity sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA== + +"@rollup/rollup-linux-arm64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz#3882a4e3a564af9e55804beeb67076857b035ab7" + integrity sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ== + +"@rollup/rollup-linux-riscv64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz#0c6ad792e1195c12bfae634425a3d2aa0fe93ab7" + integrity sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw== + +"@rollup/rollup-linux-x64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz#9d62485ea0f18d8674033b57aa14fb758f6ec6e3" + integrity sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA== + +"@rollup/rollup-linux-x64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz#50e8167e28b33c977c1f813def2b2074d1435e05" + integrity sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw== + +"@rollup/rollup-win32-arm64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz#68d233272a2004429124494121a42c4aebdc5b8e" + integrity sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw== + +"@rollup/rollup-win32-ia32-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz#366ca62221d1689e3b55a03f4ae12ae9ba595d40" + integrity sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA== + +"@rollup/rollup-win32-x64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz#9ffdf9ed133a7464f4ae187eb9e1294413fab235" + integrity sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg== + +"@shikijs/core@1.1.7", "@shikijs/core@^1.1.5": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.1.7.tgz#560de8d503ace894e36934f1e680762ed51ea394" + integrity sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg== + +"@shikijs/transformers@^1.1.5": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@shikijs/transformers/-/transformers-1.1.7.tgz#aee9df395aed77ff94fa95e02297aa0e5267802d" + integrity sha512-lXz011ao4+rvweps/9h3CchBfzb1U5OtP5D51Tqc9lQYdLblWMIxQxH6Ybe1GeGINcEVM4goMyPrI0JvlIp4UQ== + dependencies: + shiki "1.1.7" + +"@types/estree@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/linkify-it@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.5.tgz#1e78a3ac2428e6d7e6c05c1665c242023a4601d8" + integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw== + +"@types/markdown-it@^13.0.7": + version "13.0.7" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-13.0.7.tgz#4a495115f470075bd4434a0438ac477a49c2e152" + integrity sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA== + dependencies: + "@types/linkify-it" "*" + "@types/mdurl" "*" + +"@types/mdurl@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.5.tgz#3e0d2db570e9fb6ccb2dc8fde0be1d79ac810d39" + integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA== + +"@types/web-bluetooth@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" + integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== + +"@vitejs/plugin-vue@^5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37" + integrity sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ== + +"@vue/compiler-core@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz#868b7085378fc24e58c9aed14c8d62110a62be1a" + integrity sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og== + dependencies: + "@babel/parser" "^7.23.9" + "@vue/shared" "3.4.21" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-dom@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz#0077c355e2008207283a5a87d510330d22546803" + integrity sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA== + dependencies: + "@vue/compiler-core" "3.4.21" + "@vue/shared" "3.4.21" + +"@vue/compiler-sfc@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz#4af920dc31ab99e1ff5d152b5fe0ad12181145b2" + integrity sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ== + dependencies: + "@babel/parser" "^7.23.9" + "@vue/compiler-core" "3.4.21" + "@vue/compiler-dom" "3.4.21" + "@vue/compiler-ssr" "3.4.21" + "@vue/shared" "3.4.21" + estree-walker "^2.0.2" + magic-string "^0.30.7" + postcss "^8.4.35" + source-map-js "^1.0.2" + +"@vue/compiler-ssr@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz#b84ae64fb9c265df21fc67f7624587673d324fef" + integrity sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q== + dependencies: + "@vue/compiler-dom" "3.4.21" + "@vue/shared" "3.4.21" + +"@vue/devtools-api@^7.0.14": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-7.0.15.tgz#875a228fb5154fa4a6678e8cbc4c894089d87cde" + integrity sha512-kgEYWosDyWpS1vFSuJNNWUnHkP+VkL3Y+9mw+rf7ex41SwbYL/WdC3KXqAtjiSrEs7r/FrHmUTh0BkINJPFkbA== + dependencies: + "@vue/devtools-kit" "^7.0.15" + +"@vue/devtools-kit@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@vue/devtools-kit/-/devtools-kit-7.0.15.tgz#d6f5d527358ad6c707cb13ccbbc4260a9c6dcae5" + integrity sha512-dT7OeCe1LUCIhHIb/yRR6Hn+XHh73r1o78onqCrxEKHdoZwBItiIeVnmJZPEUDFstIxfs+tJL231mySk3laTow== + dependencies: + "@vue/devtools-shared" "^7.0.15" + hookable "^5.5.3" + mitt "^3.0.1" + perfect-debounce "^1.0.0" + speakingurl "^14.0.1" + +"@vue/devtools-shared@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@vue/devtools-shared/-/devtools-shared-7.0.15.tgz#a179552dab23b7c7e4bb22726a82a268eef7239b" + integrity sha512-fpfvMVvS7aDgO7x2JPFiTQ1MHcCc63/bE7yTgs278gMBybuO9b3hdiZ/k0Pw1rN+RefaU9yQiFA+5CCFc1D+6w== + dependencies: + rfdc "^1.3.1" + +"@vue/reactivity@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.21.tgz#affd3415115b8ebf4927c8d2a0d6a24bccfa9f02" + integrity sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw== + dependencies: + "@vue/shared" "3.4.21" + +"@vue/runtime-core@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.21.tgz#3749c3f024a64c4c27ecd75aea4ca35634db0062" + integrity sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA== + dependencies: + "@vue/reactivity" "3.4.21" + "@vue/shared" "3.4.21" + +"@vue/runtime-dom@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz#91f867ef64eff232cac45095ab28ebc93ac74588" + integrity sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw== + dependencies: + "@vue/runtime-core" "3.4.21" + "@vue/shared" "3.4.21" + csstype "^3.1.3" + +"@vue/server-renderer@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.21.tgz#150751579d26661ee3ed26a28604667fa4222a97" + integrity sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg== + dependencies: + "@vue/compiler-ssr" "3.4.21" + "@vue/shared" "3.4.21" + +"@vue/shared@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.21.tgz#de526a9059d0a599f0b429af7037cd0c3ed7d5a1" + integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g== + +"@vueuse/core@10.9.0", "@vueuse/core@^10.7.2": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.9.0.tgz#7d779a95cf0189de176fee63cee4ba44b3c85d64" + integrity sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg== + dependencies: + "@types/web-bluetooth" "^0.0.20" + "@vueuse/metadata" "10.9.0" + "@vueuse/shared" "10.9.0" + vue-demi ">=0.14.7" + +"@vueuse/integrations@^10.7.2": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-10.9.0.tgz#2b1a9556215ad3c1f96d39cbfbef102cf6e0ec05" + integrity sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q== + dependencies: + "@vueuse/core" "10.9.0" + "@vueuse/shared" "10.9.0" + vue-demi ">=0.14.7" + +"@vueuse/metadata@10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.9.0.tgz#769a1a9db65daac15cf98084cbf7819ed3758620" + integrity sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA== + +"@vueuse/shared@10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.9.0.tgz#13af2a348de15d07b7be2fd0c7fc9853a69d8fe0" + integrity sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw== + dependencies: + vue-demi ">=0.14.7" + +algoliasearch@^4.19.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.22.1.tgz#f10fbecdc7654639ec20d62f109c1b3a46bc6afc" + integrity sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg== + dependencies: + "@algolia/cache-browser-local-storage" "4.22.1" + "@algolia/cache-common" "4.22.1" + "@algolia/cache-in-memory" "4.22.1" + "@algolia/client-account" "4.22.1" + "@algolia/client-analytics" "4.22.1" + "@algolia/client-common" "4.22.1" + "@algolia/client-personalization" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/logger-common" "4.22.1" + "@algolia/logger-console" "4.22.1" + "@algolia/requester-browser-xhr" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/requester-node-http" "4.22.1" + "@algolia/transporter" "4.22.1" + +csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +entities@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +esbuild@^0.19.3: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +focus-trap@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.5.4.tgz#6c4e342fe1dae6add9c2aa332a6e7a0bbd495ba2" + integrity sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w== + dependencies: + tabbable "^6.2.0" + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +hookable@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" + integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== + +magic-string@^0.30.7: + version "0.30.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.7.tgz#0cecd0527d473298679da95a2d7aeb8c64048505" + integrity sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +mark.js@8.11.1: + version "8.11.1" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== + +minisearch@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.3.0.tgz#985a2f1ca3c73c2d65af94f0616bfe57164b0b6b" + integrity sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ== + +mitt@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" + integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +perfect-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a" + integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +postcss@^8.4.35: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +preact@^10.0.0: + version "10.19.6" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.19.6.tgz#66007b67aad4d11899f583df1b0116d94a89b8f5" + integrity sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw== + +prettier@^3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + +rfdc@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== + +rollup@^4.2.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.12.0.tgz#0b6d1e5f3d46bbcf244deec41a7421dc54cc45b5" + integrity sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.12.0" + "@rollup/rollup-android-arm64" "4.12.0" + "@rollup/rollup-darwin-arm64" "4.12.0" + "@rollup/rollup-darwin-x64" "4.12.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.12.0" + "@rollup/rollup-linux-arm64-gnu" "4.12.0" + "@rollup/rollup-linux-arm64-musl" "4.12.0" + "@rollup/rollup-linux-riscv64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-musl" "4.12.0" + "@rollup/rollup-win32-arm64-msvc" "4.12.0" + "@rollup/rollup-win32-ia32-msvc" "4.12.0" + "@rollup/rollup-win32-x64-msvc" "4.12.0" + fsevents "~2.3.2" + +shiki@1.1.7, shiki@^1.1.5: + version "1.1.7" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.1.7.tgz#270f7830b4d08bdf6b63eb97ef93e06c7af604de" + integrity sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw== + dependencies: + "@shikijs/core" "1.1.7" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +speakingurl@^14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53" + integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ== + +tabbable@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" + integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== + +vite@^5.1.3: + version "5.1.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.4.tgz#14e9d3e7a6e488f36284ef13cebe149f060bcfb6" + integrity sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg== + dependencies: + esbuild "^0.19.3" + postcss "^8.4.35" + rollup "^4.2.0" + optionalDependencies: + fsevents "~2.3.3" + +vitepress@^1.0.0-rc.44: + version "1.0.0-rc.44" + resolved "https://registry.yarnpkg.com/vitepress/-/vitepress-1.0.0-rc.44.tgz#01bce883761c22de42b9869a95f04bd02cbb8cdb" + integrity sha512-tO5taxGI7fSpBK1D8zrZTyJJERlyU9nnt0jHSt3fywfq3VKn977Hg0wUuTkEmwXlFYwuW26+6+3xorf4nD3XvA== + dependencies: + "@docsearch/css" "^3.5.2" + "@docsearch/js" "^3.5.2" + "@shikijs/core" "^1.1.5" + "@shikijs/transformers" "^1.1.5" + "@types/markdown-it" "^13.0.7" + "@vitejs/plugin-vue" "^5.0.4" + "@vue/devtools-api" "^7.0.14" + "@vueuse/core" "^10.7.2" + "@vueuse/integrations" "^10.7.2" + focus-trap "^7.5.4" + mark.js "8.11.1" + minisearch "^6.3.0" + shiki "^1.1.5" + vite "^5.1.3" + vue "^3.4.19" + +vue-demi@>=0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.7.tgz#8317536b3ef74c5b09f268f7782e70194567d8f2" + integrity sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA== + +vue@^3.4.19: + version "3.4.21" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.21.tgz#69ec30e267d358ee3a0ce16612ba89e00aaeb731" + integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA== + dependencies: + "@vue/compiler-dom" "3.4.21" + "@vue/compiler-sfc" "3.4.21" + "@vue/runtime-dom" "3.4.21" + "@vue/server-renderer" "3.4.21" + "@vue/shared" "3.4.21"