From 06638e6e3937cf068586cab60204b1a4fdafac9c Mon Sep 17 00:00:00 2001
From: Nishant Jain <89480234+Nishantjain10@users.noreply.github.com>
Date: Fri, 20 Jun 2025 08:32:40 +0000
Subject: [PATCH 1/8] fix: correct position field attributes, add env config,
and update readme file
---
react/formspree/.env.example | 11 ++++
react/formspree/.gitignore | 4 ++
react/formspree/README.md | 106 ++++++++++++++++++++++++++++++++---
react/formspree/src/App.jsx | 8 +--
4 files changed, 118 insertions(+), 11 deletions(-)
create mode 100644 react/formspree/.env.example
diff --git a/react/formspree/.env.example b/react/formspree/.env.example
new file mode 100644
index 0000000..62ecaa0
--- /dev/null
+++ b/react/formspree/.env.example
@@ -0,0 +1,11 @@
+# Formspree configuration
+# Replace 'xxxxxxxxxxxx' with your actual form ID from formspree.io
+VITE_FORMSPREE_FORM_ID=xxxxxxxxxxxx
+
+# Example:
+# VITE_FORMSPREE_FORM_ID=xrgkpqld
+
+# Instructions:
+# 1. Copy this file and rename it to '.env'
+# 2. Replace the placeholder value with your actual Formspree form ID
+# 4. Restart your development server after making changes to .env
\ No newline at end of file
diff --git a/react/formspree/.gitignore b/react/formspree/.gitignore
index 3c390ac..7dc0276 100644
--- a/react/formspree/.gitignore
+++ b/react/formspree/.gitignore
@@ -22,3 +22,7 @@ dist-ssr
*.njsproj
*.sln
*.sw?
+
+.env
+.env.local
+.env.*.local
\ No newline at end of file
diff --git a/react/formspree/README.md b/react/formspree/README.md
index 7059a96..906fd7e 100644
--- a/react/formspree/README.md
+++ b/react/formspree/README.md
@@ -1,12 +1,104 @@
-# React + Vite
+# Job Application Form with Formspree
-This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
+A modern, responsive job application form built with React, Vite, and Tailwind CSS, integrated with Formspree for form submissions.
-Currently, two official plugins are available:
+## Features
-- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh
-- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
+- 📝 Clean and professional job application form
+- ⚡ Built with Vite for fast development
+- 🔒 Secure form submissions via Formspree
+- ✨ Real-time form validation
-## Expanding the ESLint configuration
+## Prerequisites
-If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project.
+Before you begin, ensure you have the following installed:
+- Node.js (v14 or higher)
+- npm or yarn
+- A Formspree account and form ID
+
+## Quick Start
+
+1. Clone the repository:
+```bash
+git clone https://github.com/yourusername/formspree-job-application-form.git
+cd formspree-job-application-form
+```
+
+2. Install dependencies:
+```bash
+npm install
+# or
+yarn install
+```
+
+3. Configure environment variables:
+ - Copy the example environment file:
+ ```bash
+ cp env.example .env
+ ```
+ - Update the `.env` file with your Formspree form ID:
+ ```env
+ VITE_FORMSPREE_FORM_ID=your_form_id_here
+ ```
+
+4. Start the development server:
+```bash
+npm run dev
+# or
+yarn dev
+```
+
+5. Open your browser and visit `http://localhost:5173`
+
+## Environment Variables
+
+The following environment variables are required:
+
+| Variable | Description | Example |
+|----------|-------------|---------|
+| VITE_FORMSPREE_FORM_ID | Your Formspree form ID | xrgkpqld |
+
+## Project Structure
+
+```
+formspree-job-application-form/
+├── src/
+│ ├── App.jsx # Main application component
+│ ├── App.css # Application styles
+│ ├── main.jsx # Entry point
+│ └── assets/ # Static assets
+├── public/ # Public assets
+├── .env # Environment variables (not in git)
+├── env.example # Example environment variables
+├── package.json # Project dependencies
+└── README.md # Project documentation
+```
+
+## Development
+
+### Available Scripts
+
+- `npm run dev` - Start development server
+- `npm run build` - Build for production
+- `npm run preview` - Preview production build
+- `npm run lint` - Run ESLint
+- `npm run format` - Format code with Prettier
+
+## Contributing
+
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add some amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
+
+## License
+
+This project is licensed under the MIT License
+
+## Acknowledgments
+
+- [React](https://reactjs.org/)
+- [Vite](https://vitejs.dev/)
+- [Tailwind CSS](https://tailwindcss.com/)
+- [Formspree](https://formspree.io/)
diff --git a/react/formspree/src/App.jsx b/react/formspree/src/App.jsx
index 43f24c8..96ae0fc 100644
--- a/react/formspree/src/App.jsx
+++ b/react/formspree/src/App.jsx
@@ -3,7 +3,7 @@ import './App.css'
import { useForm, ValidationError } from "@formspree/react";
function App() {
- const [state, handleSubmit] = useForm("FORM_ID");
+ const [state, handleSubmit] = useForm(import.meta.env.VITE_FORMSPREE_FORM_ID);
if (state.succeeded) {
return (
@@ -223,13 +223,13 @@ function App() {
-
+
Position
Software Engineer
Senior Software Engineer
From 8ce614b0439a5ea3e69c2e5cfc9ab1393e363f98 Mon Sep 17 00:00:00 2001
From: Nishant Jain <89480234+Nishantjain10@users.noreply.github.com>
Date: Fri, 20 Jun 2025 09:17:57 +0000
Subject: [PATCH 2/8] fix: restructured and updated readme with new env configs
---
react/react-admin/README.md | 127 ++++++++++++++++++++++++++++++------
1 file changed, 108 insertions(+), 19 deletions(-)
diff --git a/react/react-admin/README.md b/react/react-admin/README.md
index e3e3638..e3ed839 100644
--- a/react/react-admin/README.md
+++ b/react/react-admin/README.md
@@ -1,33 +1,122 @@
-# React-admin Demo With AppWrite
+# React-admin Demo With Appwrite
-This is a demo of the [AppWrite](https://appwrite.io/) adapter for [react-admin](https://github.com/marmelab/react-admin).
+This is a demo of the [Appwrite](https://appwrite.io/) adapter for [react-admin](https://github.com/marmelab/react-admin), a frontend framework for building B2B applications on top of REST/GraphQL APIs.
-To explore the source code, start with [src/App.tsx](https://github.com/marmelab/ra-appwrite/blob/main/packages/demo/src/App.tsx).
+## Features
-## Requirements
+- ⚡ A complete admin dashboard built with React-admin
+- 💿 Backed by an [Appwrite](https://appwrite.io/) backend
+- ⚙️ Automatic database, collection, and user seeding
+- 🎨 Rich UI components from Material-UI
-To run this demo, you must have configured an **Appwrite project**. You can either use an existing project or create a new one.
+## Prerequisites
-This project comes with a script that will create the necessary **database**, **collections** and **users** for you. This script will be run against the Appwrite project you choose in the `.env.local` file.
+Before you begin, ensure you have the following installed:
+- Node.js (v18 or higher recommended)
+- npm or yarn
+- An Appwrite project
-## How to run
+## Quick Start
-Clone the `ra-appwrite` repository, then copy the `packages/demo/.env.local-example` file to `packages/demo/.env.local` and fill in the appwrite endpoint, project id and API key to use.
+1. Clone the repository:
+```bash
+git clone https://github.com/marmelab/ra-appwrite.git
+cd ra-appwrite/packages/demo
+```
+
+2. Install dependencies:
+```bash
+npm install
+# or
+yarn install
+```
+
+3. Configure environment variables:
+ - Create a `.env.local` file in the `packages/demo` directory.
+ - Add the following environment variables to your `.env.local` file:
+ ```env
+ APPWRITE_SITE_API_ENDPOINT=https://cloud.appwrite.io/v1
+ APPWRITE_SITE_PROJECT_ID=your_project_id_here
+ APPWRITE_SITE_STANDARD_KEY=your_api_key_here
+ ```
+ > To create an API key, go to your Appwrite console, navigate to your project, then "API Keys". Create a new key with `users` and `databases` scopes.
+
+4. Seed the database:
+This command will create the necessary database, collections, and a demo user (`john.doe@marmelab.com`, password: `changeme`).
+```bash
+npm run db-seed
+```
+
+5. Start the development server:
+```bash
+npm run start
+# or
+yarn start
+```
-> To create an API key, go to your Appwrite console, navigate to your project, then "Overview". Scroll down to the "API Keys" section and create a new key with the `users` and `database` scopes.
+Your admin panel will be available at `http://localhost:8000`.
-Then run the following commands at the root of the repository:
+## Environment Variables
-```sh
-# Install dependencies
-make install
+The following environment variables are required:
-# Build the packages
-make build
+| Variable | Description | Example |
+|----------|-------------|---------|
+| APPWRITE_SITE_API_ENDPOINT | Your Appwrite project endpoint. | `https://cloud.appwrite.io/v1` |
+| APPWRITE_SITE_PROJECT_ID | Your Appwrite project ID. | `60b8...` |
+| APPWRITE_SITE_STANDARD_KEY | Your Appwrite project API key. | `a0b1...` |
-# Create the database, collections and users
-make db-seed
-# Start the demo app
-make run
+## Project Structure
+
+```
+react-admin/
+├── src/
+│ ├── App.tsx # Main application component
+│ ├── dashboard/ # Dashboard components
+│ ├── products/ # Product management views
+│ ├── categories/ # Category management views
+│ ├── visitors/ # Customer management views
+│ ├── orders/ # Order management views
+│ ├── invoices/ # Invoice management views
+│ ├── reviews/ # Review management views
+│ ├── layout/ # App layout components
+│ ├── themes/ # Custom themes
+│ └── ...
+├── public/ # Public assets
+├── .env.local # Environment variables (not in git)
+├── setup.ts # Database seeding script
+├── package.json # Project dependencies
+└── README.md # Project documentation
```
+
+## Available Scripts
+
+- `npm run start` - Start development server at `http://localhost:8000`
+- `npm run serve` - Preview production build
+- `npm run build` - Build for production
+- `npm run test` - Run tests
+- `npm run lint` - Run ESLint
+- `npm run db-seed` - Seed the Appwrite database
+
+## Contributing
+
+Contributions are welcome! Please follow these steps:
+
+1. Fork the repository
+2. Create your feature branch (`git checkout -b feature/amazing-feature`)
+3. Commit your changes (`git commit -m 'Add some amazing feature'`)
+4. Push to the branch (`git push origin feature/amazing-feature`)
+5. Open a Pull Request
+
+## License
+
+This project is licensed under the MIT License.
+
+## Acknowledgments
+
+- [React](https://reactjs.org/)
+- [Vite](https://vitejs.dev/)
+- [React-admin](https://marmelab.com/react-admin/)
+- [Appwrite](https://appwrite.io/)
+- [Material-UI](https://mui.com/)
From 895da2c1d160d5a67bd56c7f96137e381061857d Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Kaiser
Date: Fri, 20 Jun 2025 14:10:46 +0200
Subject: [PATCH 3/8] fix project config and readme
---
react/react-admin/.env | 4 +-
react/react-admin/README.md | 49 ++--
react/react-admin/setup.ts | 516 ++++++++++++++++++------------------
3 files changed, 281 insertions(+), 288 deletions(-)
diff --git a/react/react-admin/.env b/react/react-admin/.env
index 5eb4d1f..73f6585 100644
--- a/react/react-admin/.env
+++ b/react/react-admin/.env
@@ -1,4 +1,4 @@
-VITE_APPWRITE_ENDPOINT=${VITE_APPWRITE_ENDPOINT}
-VITE_APPWRITE_PROJECT_ID=${VITE_APPWRITE_PROJECT_ID}
+VITE_APPWRITE_ENDPOINT=${APPWRITE_SITE_API_ENDPOINT}
+VITE_APPWRITE_PROJECT_ID=${APPWRITE_SITE_PROJECT_ID}
VITE_APPWRITE_DATABASE_ID=admin
VITE_APPWRITE_COLLECTION_IDS='{"reviews":"reviews","invoices":"invoices","orders":"orders","products":"products","categories":"categories","customers":"customers"}'
diff --git a/react/react-admin/README.md b/react/react-admin/README.md
index e3ed839..4b94a0d 100644
--- a/react/react-admin/README.md
+++ b/react/react-admin/README.md
@@ -4,7 +4,7 @@ This is a demo of the [Appwrite](https://appwrite.io/) adapter for [react-admin]
## Features
-- ⚡ A complete admin dashboard built with React-admin
+- ⚡ A complete admin dashboard built with [React-admin](https://marmelab.com/react-admin/)
- 💿 Backed by an [Appwrite](https://appwrite.io/) backend
- ⚙️ Automatic database, collection, and user seeding
- 🎨 Rich UI components from Material-UI
@@ -19,20 +19,20 @@ Before you begin, ensure you have the following installed:
## Quick Start
1. Clone the repository:
-```bash
-git clone https://github.com/marmelab/ra-appwrite.git
-cd ra-appwrite/packages/demo
-```
+ ```bash
+ git clone https://github.com/appwrite/templates-for-sites.git
+ cd react/react-admin
+ ```
2. Install dependencies:
-```bash
-npm install
-# or
-yarn install
-```
+ ```bash
+ npm install
+ # or
+ yarn install
+ ```
3. Configure environment variables:
- - Create a `.env.local` file in the `packages/demo` directory.
+ - Create a `.env.local` file in the `react/react-admin` directory.
- Add the following environment variables to your `.env.local` file:
```env
APPWRITE_SITE_API_ENDPOINT=https://cloud.appwrite.io/v1
@@ -42,17 +42,17 @@ yarn install
> To create an API key, go to your Appwrite console, navigate to your project, then "API Keys". Create a new key with `users` and `databases` scopes.
4. Seed the database:
-This command will create the necessary database, collections, and a demo user (`john.doe@marmelab.com`, password: `changeme`).
-```bash
-npm run db-seed
-```
+ This command will create the necessary database, collections, and a demo user (`john.doe@marmelab.com`, password: `changeme`).
+ ```bash
+ npm run db-seed
+ ```
5. Start the development server:
-```bash
-npm run start
-# or
-yarn start
-```
+ ```bash
+ npm run start
+ # or
+ yarn start
+ ```
Your admin panel will be available at `http://localhost:8000`.
@@ -60,11 +60,11 @@ Your admin panel will be available at `http://localhost:8000`.
The following environment variables are required:
-| Variable | Description | Example |
-|----------|-------------|---------|
+| Variable | Description | Example |
+| -------------------------- | ------------------------------- | ------------------------------ |
| APPWRITE_SITE_API_ENDPOINT | Your Appwrite project endpoint. | `https://cloud.appwrite.io/v1` |
-| APPWRITE_SITE_PROJECT_ID | Your Appwrite project ID. | `60b8...` |
-| APPWRITE_SITE_STANDARD_KEY | Your Appwrite project API key. | `a0b1...` |
+| APPWRITE_SITE_PROJECT_ID | Your Appwrite project ID. | `60b8...` |
+| APPWRITE_SITE_STANDARD_KEY | Your Appwrite project API key. | `a0b1...` |
## Project Structure
@@ -95,7 +95,6 @@ react-admin/
- `npm run start` - Start development server at `http://localhost:8000`
- `npm run serve` - Preview production build
- `npm run build` - Build for production
-- `npm run test` - Run tests
- `npm run lint` - Run ESLint
- `npm run db-seed` - Seed the Appwrite database
diff --git a/react/react-admin/setup.ts b/react/react-admin/setup.ts
index b115d5c..a4a2a13 100644
--- a/react/react-admin/setup.ts
+++ b/react/react-admin/setup.ts
@@ -1,325 +1,319 @@
-import generateData from 'data-generator-retail';
-import * as appwrite from 'node-appwrite';
+import generateData from "data-generator-retail";
+import * as appwrite from "node-appwrite";
import {
- ID,
- Permission,
- Role,
- Query,
- RelationshipType,
- RelationMutate,
-} from 'node-appwrite';
-import dotenv from 'dotenv';
-import path from 'path';
+ ID,
+ Permission,
+ Role,
+ Query,
+ RelationshipType,
+ RelationMutate,
+} from "node-appwrite";
+import dotenv from "dotenv";
+import path from "path";
const MAX_ERRORS = 5;
-const forceSeed = process.argv.includes('--force');
+const forceSeed = process.argv.includes("--force");
-dotenv.config({ path: path.resolve(process.cwd(), '.env.local') });
+dotenv.config({ path: path.resolve(process.cwd(), ".env.local") });
-if (!process.env.VITE_APPWRITE_ENDPOINT) {
- throw new Error(
- 'VITE_APPWRITE_ENDPOINT environment variable is not set.'
- );
+if (!process.env.APPWRITE_SITE_API_ENDPOINT) {
+ throw new Error(
+ "APPWRITE_SITE_API_ENDPOINT environment variable is not set."
+ );
}
-if (!process.env.VITE_APPWRITE_PROJECT_ID) {
- throw new Error(
- 'VITE_APPWRITE_PROJECT_ID environment variable is not set.'
- );
+if (!process.env.APPWRITE_SITE_PROJECT_ID) {
+ throw new Error("APPWRITE_SITE_PROJECT_ID environment variable is not set.");
}
-if (!process.env.VITE_APPWRITE_STANDARD_KEY) {
- throw new Error(
- 'VITE_APPWRITE_STANDARD_KEY environment variable is not set.'
- );
+if (!process.env.APPWRITE_SITE_STANDARD_KEY) {
+ throw new Error(
+ "APPWRITE_SITE_STANDARD_KEY environment variable is not set."
+ );
}
const client = new appwrite.Client()
- .setEndpoint(process.env.VITE_APPWRITE_ENDPOINT)
- .setProject(process.env.VITE_APPWRITE_PROJECT_ID)
- .setKey(process.env.VITE_APPWRITE_STANDARD_KEY);
+ .setEndpoint(process.env.APPWRITE_SITE_API_ENDPOINT)
+ .setProject(process.env.APPWRITE_SITE_PROJECT_ID)
+ .setKey(process.env.APPWRITE_SITE_STANDARD_KEY);
const users = new appwrite.Users(client);
let user;
try {
- user = await users.get('johndoe');
+ user = await users.get("johndoe");
} catch {}
if (user) {
- if (forceSeed) {
- console.log(
- 'User "john.doe@marmelab.com" already exists. Deleting user...'
- );
- await users.delete('johndoe');
- } else {
- console.log(
- 'User "john.doe@marmelab.com" already exists. Use --force to recreate it.'
- );
- console.log('Exiting.');
- process.exit(0);
- }
+ if (forceSeed) {
+ console.log(
+ 'User "john.doe@marmelab.com" already exists. Deleting user...'
+ );
+ await users.delete("johndoe");
+ } else {
+ console.log(
+ 'User "john.doe@marmelab.com" already exists. Use --force to recreate it.'
+ );
+ console.log("Exiting.");
+ process.exit(0);
+ }
}
console.log('Creating user "john.doe@marmelab.com"...');
await users.create(
- 'johndoe',
- 'john.doe@marmelab.com',
- undefined,
- 'changeme',
- 'John Doe'
+ "johndoe",
+ "john.doe@marmelab.com",
+ undefined,
+ "changeme",
+ "John Doe"
);
const databases = new appwrite.Databases(client);
-const result = await databases.list([Query.equal('name', ['admin'])]);
+const result = await databases.list([Query.equal("name", ["admin"])]);
if (result.total > 0) {
- if (forceSeed) {
- console.log('Database "admin" already exists. Deleting database...');
- await databases.delete('admin');
- } else {
- console.log(
- 'Database "admin" already exists. Use --force to recreate it.'
- );
- console.log('Exiting.');
- process.exit(0);
- }
+ if (forceSeed) {
+ console.log('Database "admin" already exists. Deleting database...');
+ await databases.delete("admin");
+ } else {
+ console.log('Database "admin" already exists. Use --force to recreate it.');
+ console.log("Exiting.");
+ process.exit(0);
+ }
}
console.log('Creating database "admin"...');
-await databases.create('admin', 'admin');
+await databases.create("admin", "admin");
const collections = [
- 'baskets',
- 'orders',
- 'customers',
- 'categories',
- 'products',
- 'invoices',
- 'reviews',
+ "baskets",
+ "orders",
+ "customers",
+ "categories",
+ "products",
+ "invoices",
+ "reviews",
] as const;
type CollectionName = (typeof collections)[number];
type Attribute = {
- key: string;
- type: 'string' | 'integer' | 'float' | 'boolean' | 'date';
- size?: number;
- required?: boolean;
- array?: boolean;
+ key: string;
+ type: "string" | "integer" | "float" | "boolean" | "date";
+ size?: number;
+ required?: boolean;
+ array?: boolean;
};
const collectionTypes: Record = {
- baskets: [
- { key: 'product_id', type: 'integer' },
- { key: 'quantity', type: 'integer' },
- ],
- customers: [
- { key: 'id', type: 'integer', required: true },
- { key: 'first_name', type: 'string', size: 100 },
- { key: 'last_name', type: 'string', size: 100 },
- { key: 'email', type: 'string', size: 100 },
- { key: 'address', type: 'string', size: 100 },
- { key: 'zipcode', type: 'string', size: 100 },
- { key: 'city', type: 'string', size: 100 },
- { key: 'stateAbbr', type: 'string', size: 100 },
- { key: 'avatar', type: 'string', size: 100 },
- { key: 'birthday', type: 'string', size: 100, required: false },
- { key: 'first_seen', type: 'date' },
- { key: 'last_seen', type: 'date' },
- { key: 'has_ordered', type: 'boolean' },
- { key: 'latest_purchase', type: 'date' },
- { key: 'has_newsletter', type: 'boolean' },
- {
- key: 'groups',
- type: 'string',
- size: 100,
- array: true,
- },
- { key: 'nb_orders', type: 'integer' },
- { key: 'total_spent', type: 'float' },
- ],
- categories: [
- { key: 'id', type: 'integer', required: true },
- { key: 'name', type: 'string', size: 100, required: true },
- ],
- products: [
- { key: 'id', type: 'integer', required: true },
- { key: 'category_id', type: 'integer' },
- { key: 'reference', type: 'string', size: 100, required: true },
- { key: 'width', type: 'float' },
- { key: 'height', type: 'float' },
- { key: 'price', type: 'float' },
- { key: 'thumbnail', type: 'string', size: 100 },
- { key: 'image', type: 'string', size: 100 },
- { key: 'description', type: 'string', size: 5000 },
- { key: 'stock', type: 'integer' },
- { key: 'sales', type: 'float' },
- ],
- orders: [
- { key: 'id', type: 'integer', required: true },
- { key: 'reference', type: 'string', size: 100, required: true },
- { key: 'date', type: 'date' },
- { key: 'customer_id', type: 'integer' },
- { key: 'total_ex_taxes', type: 'float' },
- { key: 'delivery_fees', type: 'float' },
- { key: 'tax_rate', type: 'float' },
- { key: 'taxes', type: 'float' },
- { key: 'total', type: 'float' },
- { key: 'status', type: 'string', size: 100 },
- { key: 'returned', type: 'boolean' },
- ],
- invoices: [
- { key: 'id', type: 'integer', required: true },
- { key: 'date', type: 'date' },
- { key: 'order_id', type: 'integer' },
- { key: 'customer_id', type: 'integer' },
- { key: 'total_ex_taxes', type: 'float' },
- { key: 'delivery_fees', type: 'float' },
- { key: 'tax_rate', type: 'float' },
- { key: 'taxes', type: 'float' },
- { key: 'total', type: 'float' },
- ],
- reviews: [
- { key: 'id', type: 'integer', required: true },
- { key: 'date', type: 'date' },
- { key: 'status', type: 'string', size: 100 },
- { key: 'order_id', type: 'integer' },
- { key: 'product_id', type: 'integer' },
- { key: 'customer_id', type: 'integer' },
- { key: 'rating', type: 'integer' },
- { key: 'comment', type: 'string', size: 2000 },
- ],
+ baskets: [
+ { key: "product_id", type: "integer" },
+ { key: "quantity", type: "integer" },
+ ],
+ customers: [
+ { key: "id", type: "integer", required: true },
+ { key: "first_name", type: "string", size: 100 },
+ { key: "last_name", type: "string", size: 100 },
+ { key: "email", type: "string", size: 100 },
+ { key: "address", type: "string", size: 100 },
+ { key: "zipcode", type: "string", size: 100 },
+ { key: "city", type: "string", size: 100 },
+ { key: "stateAbbr", type: "string", size: 100 },
+ { key: "avatar", type: "string", size: 100 },
+ { key: "birthday", type: "string", size: 100, required: false },
+ { key: "first_seen", type: "date" },
+ { key: "last_seen", type: "date" },
+ { key: "has_ordered", type: "boolean" },
+ { key: "latest_purchase", type: "date" },
+ { key: "has_newsletter", type: "boolean" },
+ {
+ key: "groups",
+ type: "string",
+ size: 100,
+ array: true,
+ },
+ { key: "nb_orders", type: "integer" },
+ { key: "total_spent", type: "float" },
+ ],
+ categories: [
+ { key: "id", type: "integer", required: true },
+ { key: "name", type: "string", size: 100, required: true },
+ ],
+ products: [
+ { key: "id", type: "integer", required: true },
+ { key: "category_id", type: "integer" },
+ { key: "reference", type: "string", size: 100, required: true },
+ { key: "width", type: "float" },
+ { key: "height", type: "float" },
+ { key: "price", type: "float" },
+ { key: "thumbnail", type: "string", size: 100 },
+ { key: "image", type: "string", size: 100 },
+ { key: "description", type: "string", size: 5000 },
+ { key: "stock", type: "integer" },
+ { key: "sales", type: "float" },
+ ],
+ orders: [
+ { key: "id", type: "integer", required: true },
+ { key: "reference", type: "string", size: 100, required: true },
+ { key: "date", type: "date" },
+ { key: "customer_id", type: "integer" },
+ { key: "total_ex_taxes", type: "float" },
+ { key: "delivery_fees", type: "float" },
+ { key: "tax_rate", type: "float" },
+ { key: "taxes", type: "float" },
+ { key: "total", type: "float" },
+ { key: "status", type: "string", size: 100 },
+ { key: "returned", type: "boolean" },
+ ],
+ invoices: [
+ { key: "id", type: "integer", required: true },
+ { key: "date", type: "date" },
+ { key: "order_id", type: "integer" },
+ { key: "customer_id", type: "integer" },
+ { key: "total_ex_taxes", type: "float" },
+ { key: "delivery_fees", type: "float" },
+ { key: "tax_rate", type: "float" },
+ { key: "taxes", type: "float" },
+ { key: "total", type: "float" },
+ ],
+ reviews: [
+ { key: "id", type: "integer", required: true },
+ { key: "date", type: "date" },
+ { key: "status", type: "string", size: 100 },
+ { key: "order_id", type: "integer" },
+ { key: "product_id", type: "integer" },
+ { key: "customer_id", type: "integer" },
+ { key: "rating", type: "integer" },
+ { key: "comment", type: "string", size: 2000 },
+ ],
};
for (const collectionName of collections) {
- console.log(`Creating collection "${collectionName}"...`);
- await databases.createCollection('admin', collectionName, collectionName, [
- Permission.read(Role.users()),
- Permission.write(Role.users()),
- Permission.update(Role.users()),
- Permission.delete(Role.users()),
- ]);
+ console.log(`Creating collection "${collectionName}"...`);
+ await databases.createCollection("admin", collectionName, collectionName, [
+ Permission.read(Role.users()),
+ Permission.write(Role.users()),
+ Permission.update(Role.users()),
+ Permission.delete(Role.users()),
+ ]);
}
for (const [collectionName, attributes] of Object.entries(collectionTypes)) {
- console.log(`Creating attributes for collection "${collectionName}"...`);
- for (const attribute of attributes) {
- switch (attribute.type) {
- case 'string':
- await databases.createStringAttribute(
- 'admin',
- collectionName,
- attribute.key,
- attribute.size || 255,
- attribute.required || false,
- undefined,
- attribute.array || false
- );
- break;
- case 'integer':
- await databases.createIntegerAttribute(
- 'admin',
- collectionName,
- attribute.key,
- attribute.required || false,
- undefined,
- undefined,
- undefined,
- attribute.array || false
- );
- break;
- case 'float':
- await databases.createFloatAttribute(
- 'admin',
- collectionName,
- attribute.key,
- attribute.required || false,
- undefined,
- undefined,
- undefined,
- attribute.array || false
- );
- break;
- case 'boolean':
- await databases.createBooleanAttribute(
- 'admin',
- collectionName,
- attribute.key,
- attribute.required || false,
- undefined,
- attribute.array || false
- );
- break;
- case 'date':
- await databases.createDatetimeAttribute(
- 'admin',
- collectionName,
- attribute.key,
- attribute.required || false,
- undefined,
- attribute.array || false
- );
- break;
- default:
- throw new Error(`Unknown attribute type: ${attribute.type}`);
- }
+ console.log(`Creating attributes for collection "${collectionName}"...`);
+ for (const attribute of attributes) {
+ switch (attribute.type) {
+ case "string":
+ await databases.createStringAttribute(
+ "admin",
+ collectionName,
+ attribute.key,
+ attribute.size || 255,
+ attribute.required || false,
+ undefined,
+ attribute.array || false
+ );
+ break;
+ case "integer":
+ await databases.createIntegerAttribute(
+ "admin",
+ collectionName,
+ attribute.key,
+ attribute.required || false,
+ undefined,
+ undefined,
+ undefined,
+ attribute.array || false
+ );
+ break;
+ case "float":
+ await databases.createFloatAttribute(
+ "admin",
+ collectionName,
+ attribute.key,
+ attribute.required || false,
+ undefined,
+ undefined,
+ undefined,
+ attribute.array || false
+ );
+ break;
+ case "boolean":
+ await databases.createBooleanAttribute(
+ "admin",
+ collectionName,
+ attribute.key,
+ attribute.required || false,
+ undefined,
+ attribute.array || false
+ );
+ break;
+ case "date":
+ await databases.createDatetimeAttribute(
+ "admin",
+ collectionName,
+ attribute.key,
+ attribute.required || false,
+ undefined,
+ attribute.array || false
+ );
+ break;
+ default:
+ throw new Error(`Unknown attribute type: ${attribute.type}`);
}
+ }
}
// Special case for basket
await databases.createRelationshipAttribute(
- 'admin', // databaseId
- 'orders', // collectionId
- 'baskets', // relatedCollectionId
- RelationshipType.OneToMany, // type
- false, // twoWay (optional)
- 'basket', // key (optional)
- undefined, // twoWayKey (optional)
- RelationMutate.Cascade // onDelete (optional)
+ "admin", // databaseId
+ "orders", // collectionId
+ "baskets", // relatedCollectionId
+ RelationshipType.OneToMany, // type
+ false, // twoWay (optional)
+ "basket", // key (optional)
+ undefined, // twoWayKey (optional)
+ RelationMutate.Cascade // onDelete (optional)
);
-console.log('Generating data...');
+console.log("Generating data...");
// @ts-expect-error - Dunno why this is necessary, but the import is not recognized
const data = generateData.default();
// FIXME - Give 10 seconds for the schema to be updated
// Don't know why this is necessary, but yeah...
-await new Promise(resolve => setTimeout(resolve, 10000));
+await new Promise((resolve) => setTimeout(resolve, 10000));
let errors = 0;
for (const collectionName of collections) {
- if (collectionName === 'baskets') {
- continue;
- }
- console.log(`Inserting data into collection "${collectionName}"...`);
- for (const item of data[collectionName]) {
- try {
- await databases.createDocument(
- 'admin',
- collectionName,
- // FIXME: createDocument considers 0 to be an invalid ID
- item.id ? item.id.toString() : ID.unique(),
- item,
- [
- Permission.read(Role.users()),
- Permission.write(Role.users()),
- Permission.update(Role.users()),
- Permission.delete(Role.users()),
- ]
- );
- } catch (error) {
- console.error(
- `Error inserting item into collection "${collectionName}":`,
- { error, item }
- );
- errors++;
- if (errors >= MAX_ERRORS) {
- console.error(
- `Reached maximum error limit of ${MAX_ERRORS}. Exiting.`
- );
- process.exit(1);
- }
- }
+ if (collectionName === "baskets") {
+ continue;
+ }
+ console.log(`Inserting data into collection "${collectionName}"...`);
+ for (const item of data[collectionName]) {
+ try {
+ await databases.createDocument(
+ "admin",
+ collectionName,
+ // FIXME: createDocument considers 0 to be an invalid ID
+ item.id ? item.id.toString() : ID.unique(),
+ item,
+ [
+ Permission.read(Role.users()),
+ Permission.write(Role.users()),
+ Permission.update(Role.users()),
+ Permission.delete(Role.users()),
+ ]
+ );
+ } catch (error) {
+ console.error(
+ `Error inserting item into collection "${collectionName}":`,
+ { error, item }
+ );
+ errors++;
+ if (errors >= MAX_ERRORS) {
+ console.error(`Reached maximum error limit of ${MAX_ERRORS}. Exiting.`);
+ process.exit(1);
+ }
}
+ }
}
-console.log('Database setup completed successfully.');
+console.log("Database setup completed successfully.");
From a6feda087bc24b5c7f3e34a5674ed497d9dffd31 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Kaiser
Date: Fri, 20 Jun 2025 14:26:51 +0200
Subject: [PATCH 4/8] remove welcome banner
---
react/react-admin/src/dashboard/Dashboard.tsx | 232 +++++++++---------
react/react-admin/src/dashboard/Welcome.tsx | 74 ------
.../src/dashboard/welcome_illustration.svg | 1 -
3 files changed, 111 insertions(+), 196 deletions(-)
delete mode 100644 react/react-admin/src/dashboard/Welcome.tsx
delete mode 100644 react/react-admin/src/dashboard/welcome_illustration.svg
diff --git a/react/react-admin/src/dashboard/Dashboard.tsx b/react/react-admin/src/dashboard/Dashboard.tsx
index c258ac7..848c7a3 100644
--- a/react/react-admin/src/dashboard/Dashboard.tsx
+++ b/react/react-admin/src/dashboard/Dashboard.tsx
@@ -3,145 +3,135 @@ import { useGetList } from 'react-admin';
import { useMediaQuery, Theme } from '@mui/material';
import { subDays, startOfDay } from 'date-fns';
-import Welcome from './Welcome';
-import MonthlyRevenue from './MonthlyRevenue';
-import NbNewOrders from './NbNewOrders';
-import PendingOrders from './PendingOrders';
-import PendingReviews from './PendingReviews';
-import NewCustomers from './NewCustomers';
-import OrderChart from './OrderChart';
+import MonthlyRevenue from "./MonthlyRevenue";
+import NbNewOrders from "./NbNewOrders";
+import PendingOrders from "./PendingOrders";
+import PendingReviews from "./PendingReviews";
+import NewCustomers from "./NewCustomers";
+import OrderChart from "./OrderChart";
-import { Order } from '../types';
+import { Order } from "../types";
interface OrderStats {
- revenue: number;
- nbNewOrders: number;
- pendingOrders: Order[];
+ revenue: number;
+ nbNewOrders: number;
+ pendingOrders: Order[];
}
interface State {
- nbNewOrders?: number;
- pendingOrders?: Order[];
- recentOrders?: Order[];
- revenue?: string;
+ nbNewOrders?: number;
+ pendingOrders?: Order[];
+ recentOrders?: Order[];
+ revenue?: string;
}
const styles = {
- flex: { display: 'flex' },
- flexColumn: { display: 'flex', flexDirection: 'column' },
- leftCol: { flex: 1, marginRight: '0.5em' },
- rightCol: { flex: 1, marginLeft: '0.5em' },
- singleCol: { marginTop: '1em', marginBottom: '1em' },
+ flex: { display: "flex", marginTop: "0.5em" },
+ flexColumn: { display: "flex", flexDirection: "column", marginTop: "0.5em" },
+ leftCol: { flex: 1, marginRight: "0.5em" },
+ rightCol: { flex: 1, marginLeft: "0.5em" },
+ singleCol: { marginTop: "1em", marginBottom: "1em" },
};
-const Spacer = () => ;
-const VerticalSpacer = () => ;
+const Spacer = () => ;
+const VerticalSpacer = () => ;
const Dashboard = () => {
- const isXSmall = useMediaQuery((theme: Theme) =>
- theme.breakpoints.down('sm')
- );
- const isSmall = useMediaQuery((theme: Theme) =>
- theme.breakpoints.down('lg')
- );
- const aMonthAgo = useMemo(() => subDays(startOfDay(new Date()), 30), []);
+ const isXSmall = useMediaQuery((theme: Theme) =>
+ theme.breakpoints.down("sm")
+ );
+ const isSmall = useMediaQuery((theme: Theme) => theme.breakpoints.down("lg"));
+ const aMonthAgo = useMemo(() => subDays(startOfDay(new Date()), 30), []);
- const { data: orders } = useGetList('orders', {
- filter: { date_gte: aMonthAgo.toISOString() },
- sort: { field: 'date', order: 'DESC' },
- pagination: { page: 1, perPage: 50 },
- });
+ const { data: orders } = useGetList("orders", {
+ filter: { date_gte: aMonthAgo.toISOString() },
+ sort: { field: "date", order: "DESC" },
+ pagination: { page: 1, perPage: 50 },
+ });
- const aggregation = useMemo(() => {
- if (!orders) return {};
- const aggregations = orders
- .filter(order => order.status !== 'cancelled')
- .reduce(
- (stats: OrderStats, order) => {
- if (order.status !== 'cancelled') {
- stats.revenue += order.total;
- stats.nbNewOrders++;
- }
- if (order.status === 'ordered') {
- stats.pendingOrders.push(order);
- }
- return stats;
- },
- {
- revenue: 0,
- nbNewOrders: 0,
- pendingOrders: [],
- }
- );
- return {
- recentOrders: orders,
- revenue: aggregations.revenue.toLocaleString(undefined, {
- style: 'currency',
- currency: 'USD',
- minimumFractionDigits: 0,
- maximumFractionDigits: 0,
- }),
- nbNewOrders: aggregations.nbNewOrders,
- pendingOrders: aggregations.pendingOrders,
- };
- }, [orders]);
+ const aggregation = useMemo(() => {
+ if (!orders) return {};
+ const aggregations = orders
+ .filter((order) => order.status !== "cancelled")
+ .reduce(
+ (stats: OrderStats, order) => {
+ if (order.status !== "cancelled") {
+ stats.revenue += order.total;
+ stats.nbNewOrders++;
+ }
+ if (order.status === "ordered") {
+ stats.pendingOrders.push(order);
+ }
+ return stats;
+ },
+ {
+ revenue: 0,
+ nbNewOrders: 0,
+ pendingOrders: [],
+ }
+ );
+ return {
+ recentOrders: orders,
+ revenue: aggregations.revenue.toLocaleString(undefined, {
+ style: "currency",
+ currency: "USD",
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 0,
+ }),
+ nbNewOrders: aggregations.nbNewOrders,
+ pendingOrders: aggregations.pendingOrders,
+ };
+ }, [orders]);
- const { nbNewOrders, pendingOrders, revenue, recentOrders } = aggregation;
- return isXSmall ? (
-
-
+ const { nbNewOrders, pendingOrders, revenue, recentOrders } = aggregation;
+ return isXSmall ? (
+
+ ) : isSmall ? (
+
+ ) : (
+
+
+
+
+
+
- ) : isSmall ? (
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
- ) : (
- <>
-
-
- >
- );
+
+
+
+
+ );
};
export default Dashboard;
diff --git a/react/react-admin/src/dashboard/Welcome.tsx b/react/react-admin/src/dashboard/Welcome.tsx
deleted file mode 100644
index f48bc08..0000000
--- a/react/react-admin/src/dashboard/Welcome.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import * as React from 'react';
-import { Box, Card, CardActions, Button, Typography } from '@mui/material';
-import HomeIcon from '@mui/icons-material/Home';
-import CodeIcon from '@mui/icons-material/Code';
-import { useTranslate } from 'react-admin';
-
-import publishArticleImage from './welcome_illustration.svg';
-
-const Welcome = () => {
- const translate = useTranslate();
- return (
-
- `linear-gradient(45deg, ${theme.palette.secondary.dark} 0%, ${theme.palette.secondary.light} 50%, ${theme.palette.primary.dark} 100%)`,
- color: theme => theme.palette.primary.contrastText,
- padding: '20px',
- marginTop: 2,
- marginBottom: '1em',
- }}
- >
-
-
-
- {translate('pos.dashboard.welcome.title')}
-
-
-
- {translate('pos.dashboard.welcome.subtitle')}
-
-
-
- }
- >
- {translate('pos.dashboard.welcome.ra_button')}
-
- }
- >
- {translate('pos.dashboard.welcome.demo_button')}
-
-
-
-
-
-
- );
-};
-
-export default Welcome;
diff --git a/react/react-admin/src/dashboard/welcome_illustration.svg b/react/react-admin/src/dashboard/welcome_illustration.svg
deleted file mode 100644
index a54a602..0000000
--- a/react/react-admin/src/dashboard/welcome_illustration.svg
+++ /dev/null
@@ -1 +0,0 @@
-
work_together
\ No newline at end of file
From 79555d193874d0f6c54803092fe28b9f46be9a1e Mon Sep 17 00:00:00 2001
From: Aditya Oberai
Date: Wed, 3 Dec 2025 15:34:48 +0000
Subject: [PATCH 5/8] Refactor to use common environment variables for seeding
script and app and update database handling to use TablesDB
---
react/react-admin/.env | 4 -
react/react-admin/.env.example | 10 +
react/react-admin/.env.local-example | 3 -
react/react-admin/.gitignore | 282 ++
react/react-admin/README.md | 42 +-
react/react-admin/package.json | 5 +-
react/react-admin/pnpm-lock.yaml | 3748 +++++++++++++++++
react/react-admin/setup.ts | 132 +-
react/react-admin/src/App.tsx | 9 +-
.../src/categories/LinkToRelatedProducts.tsx | 4 +-
.../src/dashboard/PendingReviews.tsx | 4 +-
react/react-admin/src/layout/Login.tsx | 3 -
.../src/segments/LinkToRelatedCustomers.tsx | 4 +-
13 files changed, 4151 insertions(+), 99 deletions(-)
delete mode 100644 react/react-admin/.env
create mode 100644 react/react-admin/.env.example
delete mode 100644 react/react-admin/.env.local-example
create mode 100644 react/react-admin/.gitignore
create mode 100644 react/react-admin/pnpm-lock.yaml
diff --git a/react/react-admin/.env b/react/react-admin/.env
deleted file mode 100644
index 73f6585..0000000
--- a/react/react-admin/.env
+++ /dev/null
@@ -1,4 +0,0 @@
-VITE_APPWRITE_ENDPOINT=${APPWRITE_SITE_API_ENDPOINT}
-VITE_APPWRITE_PROJECT_ID=${APPWRITE_SITE_PROJECT_ID}
-VITE_APPWRITE_DATABASE_ID=admin
-VITE_APPWRITE_COLLECTION_IDS='{"reviews":"reviews","invoices":"invoices","orders":"orders","products":"products","categories":"categories","customers":"customers"}'
diff --git a/react/react-admin/.env.example b/react/react-admin/.env.example
new file mode 100644
index 0000000..9d585cb
--- /dev/null
+++ b/react/react-admin/.env.example
@@ -0,0 +1,10 @@
+VITE_APPWRITE_ENDPOINT=https://.cloud.appwrite.io/v1
+VITE_APPWRITE_PROJECT_ID=YOUR_PROJECT_ID
+VITE_APPWRITE_DATABASE_ID=admin
+VITE_APPWRITE_TABLE_REVIEWS=reviews
+VITE_APPWRITE_TABLE_INVOICES=invoices
+VITE_APPWRITE_TABLE_ORDERS=orders
+VITE_APPWRITE_TABLE_PRODUCTS=products
+VITE_APPWRITE_TABLE_CATEGORIES=categories
+VITE_APPWRITE_TABLE_CUSTOMERS=customers
+APPWRITE_API_KEY=YOUR_API_KEY
\ No newline at end of file
diff --git a/react/react-admin/.env.local-example b/react/react-admin/.env.local-example
deleted file mode 100644
index cbd4882..0000000
--- a/react/react-admin/.env.local-example
+++ /dev/null
@@ -1,3 +0,0 @@
-VITE_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
-VITE_APPWRITE_PROJECT_ID=YOUR_APPWRITE_PROJECT_ID
-VITE_APPWRITE_STANDARD_KEY=YOUR_API_KEY
diff --git a/react/react-admin/.gitignore b/react/react-admin/.gitignore
new file mode 100644
index 0000000..d46a87a
--- /dev/null
+++ b/react/react-admin/.gitignore
@@ -0,0 +1,282 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.*
+!.env.example
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+.output
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+.cache
+
+# Sveltekit cache directory
+.svelte-kit/
+
+# vitepress build output
+**/.vitepress/dist
+
+# vitepress cache directory
+**/.vitepress/cache
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# Firebase cache directory
+.firebase/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v3
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/sdks
+!.yarn/versions
+
+# Vite files
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
+.vite/
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.*
+!.env.example
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+.output
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+.cache
+
+# Sveltekit cache directory
+.svelte-kit/
+
+# vitepress build output
+**/.vitepress/dist
+
+# vitepress cache directory
+**/.vitepress/cache
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# Firebase cache directory
+.firebase/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v3
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/sdks
+!.yarn/versions
+
+# Vite files
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
+.vite/
diff --git a/react/react-admin/README.md b/react/react-admin/README.md
index 4b94a0d..3fc1d11 100644
--- a/react/react-admin/README.md
+++ b/react/react-admin/README.md
@@ -5,8 +5,8 @@ This is a demo of the [Appwrite](https://appwrite.io/) adapter for [react-admin]
## Features
- ⚡ A complete admin dashboard built with [React-admin](https://marmelab.com/react-admin/)
-- 💿 Backed by an [Appwrite](https://appwrite.io/) backend
-- ⚙️ Automatic database, collection, and user seeding
+- 💿 Backed by an [Appwrite](https://appwrite.io/) backend using TablesDB
+- ⚙️ Automatic database, table, and user seeding
- 🎨 Rich UI components from Material-UI
## Prerequisites
@@ -32,17 +32,24 @@ Before you begin, ensure you have the following installed:
```
3. Configure environment variables:
- - Create a `.env.local` file in the `react/react-admin` directory.
- - Add the following environment variables to your `.env.local` file:
+ - Create a `.env` file in the `react/react-admin` directory.
+ - Add the following environment variables to your `.env` file:
```env
- APPWRITE_SITE_API_ENDPOINT=https://cloud.appwrite.io/v1
- APPWRITE_SITE_PROJECT_ID=your_project_id_here
- APPWRITE_SITE_STANDARD_KEY=your_api_key_here
+ VITE_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
+ VITE_APPWRITE_PROJECT_ID=your_project_id_here
+ VITE_APPWRITE_DATABASE_ID=admin
+ VITE_APPWRITE_COLLECTION_REVIEWS=reviews
+ VITE_APPWRITE_COLLECTION_INVOICES=invoices
+ VITE_APPWRITE_COLLECTION_ORDERS=orders
+ VITE_APPWRITE_COLLECTION_PRODUCTS=products
+ VITE_APPWRITE_COLLECTION_CATEGORIES=categories
+ VITE_APPWRITE_COLLECTION_CUSTOMERS=customers
+ APPWRITE_API_KEY=your_api_key_here
```
> To create an API key, go to your Appwrite console, navigate to your project, then "API Keys". Create a new key with `users` and `databases` scopes.
4. Seed the database:
- This command will create the necessary database, collections, and a demo user (`john.doe@marmelab.com`, password: `changeme`).
+ This command will create the necessary database, tables, and a demo user (`john.doe@marmelab.com`, password: `changeme`).
```bash
npm run db-seed
```
@@ -60,11 +67,18 @@ Your admin panel will be available at `http://localhost:8000`.
The following environment variables are required:
-| Variable | Description | Example |
-| -------------------------- | ------------------------------- | ------------------------------ |
-| APPWRITE_SITE_API_ENDPOINT | Your Appwrite project endpoint. | `https://cloud.appwrite.io/v1` |
-| APPWRITE_SITE_PROJECT_ID | Your Appwrite project ID. | `60b8...` |
-| APPWRITE_SITE_STANDARD_KEY | Your Appwrite project API key. | `a0b1...` |
+| Variable | Description | Example |
+| ------------------------------------- | ------------------------------------------ | ------------------------------ |
+| VITE_APPWRITE_ENDPOINT | Your Appwrite project endpoint. | `https://cloud.appwrite.io/v1` |
+| VITE_APPWRITE_PROJECT_ID | Your Appwrite project ID. | `60b8...` |
+| VITE_APPWRITE_DATABASE_ID | Database ID (default: admin). | `admin` |
+| VITE_APPWRITE_COLLECTION_REVIEWS | Collection ID for reviews table. | `reviews` |
+| VITE_APPWRITE_COLLECTION_INVOICES | Collection ID for invoices table. | `invoices` |
+| VITE_APPWRITE_COLLECTION_ORDERS | Collection ID for orders table. | `orders` |
+| VITE_APPWRITE_COLLECTION_PRODUCTS | Collection ID for products table. | `products` |
+| VITE_APPWRITE_COLLECTION_CATEGORIES | Collection ID for categories table. | `categories` |
+| VITE_APPWRITE_COLLECTION_CUSTOMERS | Collection ID for customers table. | `customers` |
+| APPWRITE_API_KEY | Your Appwrite API key (for seeding only). | `a0b1...` |
## Project Structure
@@ -84,7 +98,7 @@ react-admin/
│ ├── themes/ # Custom themes
│ └── ...
├── public/ # Public assets
-├── .env.local # Environment variables (not in git)
+├── .env # Environment variables (not in git)
├── setup.ts # Database seeding script
├── package.json # Project dependencies
└── README.md # Project documentation
diff --git a/react/react-admin/package.json b/react/react-admin/package.json
index 5b05254..2ccb62c 100644
--- a/react/react-admin/package.json
+++ b/react/react-admin/package.json
@@ -6,13 +6,14 @@
"dependencies": {
"@mui/icons-material": "^7.1.1",
"@mui/material": "^7.1.1",
- "appwrite": "^17.0.0",
+ "appwrite": "^17.0.2",
"clsx": "^2.1.1",
"data-generator-retail": "^5.0.0",
"date-fns": "^3.6.0",
"echarts": "^5.6.0",
"faker": "~5.4.0",
"inflection": "^3.0.0",
+ "query-string": "^9.3.1",
"ra-appwrite": "^1.0.0",
"ra-core": "^5.8.0",
"ra-i18n-polyglot": "^5.8.0",
@@ -33,7 +34,7 @@
"@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^4.3.4",
"dotenv": "^16.5.0",
- "node-appwrite": "^17.0.0",
+ "node-appwrite": "^21.0.0",
"rollup-preserve-directives": "^1.1.3",
"source-map-explorer": "^2.0.0",
"tsx": "^4.8.1",
diff --git a/react/react-admin/pnpm-lock.yaml b/react/react-admin/pnpm-lock.yaml
new file mode 100644
index 0000000..cd0e411
--- /dev/null
+++ b/react/react-admin/pnpm-lock.yaml
@@ -0,0 +1,3748 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@mui/icons-material':
+ specifier: ^7.1.1
+ version: 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@mui/material':
+ specifier: ^7.1.1
+ version: 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ appwrite:
+ specifier: ^17.0.2
+ version: 17.0.2
+ clsx:
+ specifier: ^2.1.1
+ version: 2.1.1
+ data-generator-retail:
+ specifier: ^5.0.0
+ version: 5.13.2(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0))
+ date-fns:
+ specifier: ^3.6.0
+ version: 3.6.0
+ echarts:
+ specifier: ^5.6.0
+ version: 5.6.0
+ faker:
+ specifier: ~5.4.0
+ version: 5.4.0
+ inflection:
+ specifier: ^3.0.0
+ version: 3.0.2
+ query-string:
+ specifier: ^9.3.1
+ version: 9.3.1
+ ra-appwrite:
+ specifier: ^1.0.0
+ version: 1.1.0(react-admin@5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0))
+ ra-core:
+ specifier: ^5.8.0
+ version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-i18n-polyglot:
+ specifier: ^5.8.0
+ version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-input-rich-text:
+ specifier: ^5.8.0
+ version: 5.13.2(@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0))(ra-ui-materialui@5.13.2(41b38527c5fae1288bddedfc3b6c2701))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ ra-language-english:
+ specifier: ^5.8.0
+ version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-language-french:
+ specifier: ^5.8.0
+ version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-ui-materialui:
+ specifier: ^5.8.0
+ version: 5.13.2(41b38527c5fae1288bddedfc3b6c2701)
+ react:
+ specifier: ^19.0.0
+ version: 19.2.0
+ react-admin:
+ specifier: ^5.8.0
+ version: 5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)
+ react-dom:
+ specifier: ^19.0.0
+ version: 19.2.0(react@19.2.0)
+ react-router:
+ specifier: ^6.30.1
+ version: 6.30.2(react@19.2.0)
+ react-router-dom:
+ specifier: ^6.30.1
+ version: 6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ devDependencies:
+ '@types/faker':
+ specifier: ~5.1.7
+ version: 5.1.7
+ '@types/node':
+ specifier: ^20.10.7
+ version: 20.19.25
+ '@types/react':
+ specifier: ^19.0.0
+ version: 19.2.7
+ '@types/react-dom':
+ specifier: ^19.0.0
+ version: 19.2.3(@types/react@19.2.7)
+ '@vitejs/plugin-react':
+ specifier: ^4.3.4
+ version: 4.7.0(vite@6.4.1(@types/node@20.19.25)(tsx@4.21.0))
+ dotenv:
+ specifier: ^16.5.0
+ version: 16.6.1
+ node-appwrite:
+ specifier: ^21.0.0
+ version: 21.0.0
+ rollup-preserve-directives:
+ specifier: ^1.1.3
+ version: 1.1.3(rollup@4.53.3)
+ source-map-explorer:
+ specifier: ^2.0.0
+ version: 2.5.3
+ tsx:
+ specifier: ^4.8.1
+ version: 4.21.0
+ typescript:
+ specifier: ^5.1.3
+ version: 5.9.3
+ vite:
+ specifier: ^6.2.6
+ version: 6.4.1(@types/node@20.19.25)(tsx@4.21.0)
+
+packages:
+
+ '@babel/code-frame@7.27.1':
+ resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.28.5':
+ resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.28.5':
+ resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.28.5':
+ resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.27.2':
+ resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-globals@7.28.0':
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.27.1':
+ resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.28.3':
+ resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-plugin-utils@7.27.1':
+ resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.28.5':
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.27.1':
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.28.4':
+ resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.28.5':
+ resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-transform-react-jsx-self@7.27.1':
+ resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx-source@7.27.1':
+ resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/runtime@7.28.4':
+ resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.27.2':
+ resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.28.5':
+ resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.28.5':
+ resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
+ engines: {node: '>=6.9.0'}
+
+ '@emotion/babel-plugin@11.13.5':
+ resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==}
+
+ '@emotion/cache@11.14.0':
+ resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==}
+
+ '@emotion/hash@0.9.2':
+ resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==}
+
+ '@emotion/is-prop-valid@1.4.0':
+ resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==}
+
+ '@emotion/memoize@0.9.0':
+ resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==}
+
+ '@emotion/react@11.14.0':
+ resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@emotion/serialize@1.3.3':
+ resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==}
+
+ '@emotion/sheet@1.4.0':
+ resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==}
+
+ '@emotion/styled@11.14.1':
+ resolution: {integrity: sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==}
+ peerDependencies:
+ '@emotion/react': ^11.0.0-rc.0
+ '@types/react': '*'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@emotion/unitless@0.10.0':
+ resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==}
+
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0':
+ resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==}
+ peerDependencies:
+ react: '>=16.8.0'
+
+ '@emotion/utils@1.4.2':
+ resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==}
+
+ '@emotion/weak-memoize@0.4.0':
+ resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==}
+
+ '@esbuild/aix-ppc64@0.25.12':
+ resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/aix-ppc64@0.27.0':
+ resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.25.12':
+ resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm64@0.27.0':
+ resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.25.12':
+ resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-arm@0.27.0':
+ resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.25.12':
+ resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/android-x64@0.27.0':
+ resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.25.12':
+ resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-arm64@0.27.0':
+ resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.25.12':
+ resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.27.0':
+ resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.25.12':
+ resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-arm64@0.27.0':
+ resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.25.12':
+ resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.27.0':
+ resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.25.12':
+ resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm64@0.27.0':
+ resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.25.12':
+ resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.27.0':
+ resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.25.12':
+ resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.27.0':
+ resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.25.12':
+ resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.27.0':
+ resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.25.12':
+ resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.27.0':
+ resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.25.12':
+ resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.27.0':
+ resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.25.12':
+ resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.27.0':
+ resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.25.12':
+ resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.27.0':
+ resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.25.12':
+ resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.27.0':
+ resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-arm64@0.25.12':
+ resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-arm64@0.27.0':
+ resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.25.12':
+ resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.27.0':
+ resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-arm64@0.25.12':
+ resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-arm64@0.27.0':
+ resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.25.12':
+ resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.27.0':
+ resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openharmony-arm64@0.25.12':
+ resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/openharmony-arm64@0.27.0':
+ resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/sunos-x64@0.25.12':
+ resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/sunos-x64@0.27.0':
+ resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.25.12':
+ resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-arm64@0.27.0':
+ resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.25.12':
+ resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.27.0':
+ resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.25.12':
+ resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.27.0':
+ resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@faker-js/faker@10.1.0':
+ resolution: {integrity: sha512-C3mrr3b5dRVlKPJdfrAXS8+dq+rq8Qm5SNRazca0JKgw1HQERFmrVb0towvMmw5uu8hHKNiQasMaR/tydf3Zsg==}
+ engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@mui/core-downloads-tracker@7.3.6':
+ resolution: {integrity: sha512-QaYtTHlr8kDFN5mE1wbvVARRKH7Fdw1ZuOjBJcFdVpfNfRYKF3QLT4rt+WaB6CKJvpqxRsmEo0kpYinhH5GeHg==}
+
+ '@mui/icons-material@7.3.6':
+ resolution: {integrity: sha512-0FfkXEj22ysIq5pa41A2NbcAhJSvmcZQ/vcTIbjDsd6hlslG82k5BEBqqS0ZJprxwIL3B45qpJ+bPHwJPlF7uQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@mui/material': ^7.3.6
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@mui/material@7.3.6':
+ resolution: {integrity: sha512-R4DaYF3dgCQCUAkr4wW1w26GHXcf5rCmBRHVBuuvJvaGLmZdD8EjatP80Nz5JCw0KxORAzwftnHzXVnjR8HnFw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@emotion/react': ^11.5.0
+ '@emotion/styled': ^11.3.0
+ '@mui/material-pigment-css': ^7.3.6
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@emotion/react':
+ optional: true
+ '@emotion/styled':
+ optional: true
+ '@mui/material-pigment-css':
+ optional: true
+ '@types/react':
+ optional: true
+
+ '@mui/private-theming@7.3.6':
+ resolution: {integrity: sha512-Ws9wZpqM+FlnbZXaY/7yvyvWQo1+02Tbx50mVdNmzWEi51C51y56KAbaDCYyulOOBL6BJxuaqG8rNNuj7ivVyw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@mui/styled-engine@7.3.6':
+ resolution: {integrity: sha512-+wiYbtvj+zyUkmDB+ysH6zRjuQIJ+CM56w0fEXV+VDNdvOuSywG+/8kpjddvvlfMLsaWdQe5oTuYGBcodmqGzQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@emotion/react': ^11.4.1
+ '@emotion/styled': ^11.3.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@emotion/react':
+ optional: true
+ '@emotion/styled':
+ optional: true
+
+ '@mui/system@7.3.6':
+ resolution: {integrity: sha512-8fehAazkHNP1imMrdD2m2hbA9sl7Ur6jfuNweh5o4l9YPty4iaZzRXqYvBCWQNwFaSHmMEj2KPbyXGp7Bt73Rg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@emotion/react': ^11.5.0
+ '@emotion/styled': ^11.3.0
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@emotion/react':
+ optional: true
+ '@emotion/styled':
+ optional: true
+ '@types/react':
+ optional: true
+
+ '@mui/types@7.4.9':
+ resolution: {integrity: sha512-dNO8Z9T2cujkSIaCnWwprfeKmTWh97cnjkgmpFJ2sbfXLx8SMZijCYHOtP/y5nnUb/Rm2omxbDMmtUoSaUtKaw==}
+ peerDependencies:
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@mui/utils@7.3.6':
+ resolution: {integrity: sha512-jn+Ba02O6PiFs7nKva8R2aJJ9kJC+3kQ2R0BbKNY3KQQ36Qng98GnPRFTlbwYTdMD6hLEBKaMLUktyg/rTfd2w==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@popperjs/core@2.11.8':
+ resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
+
+ '@remirror/core-constants@3.0.0':
+ resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==}
+
+ '@remix-run/router@1.23.1':
+ resolution: {integrity: sha512-vDbaOzF7yT2Qs4vO6XV1MHcJv+3dgR1sT+l3B8xxOVhUC336prMvqrvsLL/9Dnw2xr6Qhz4J0dmS0llNAbnUmQ==}
+ engines: {node: '>=14.0.0'}
+
+ '@rolldown/pluginutils@1.0.0-beta.27':
+ resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==}
+
+ '@rollup/rollup-android-arm-eabi@4.53.3':
+ resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.53.3':
+ resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.53.3':
+ resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.53.3':
+ resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.53.3':
+ resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.53.3':
+ resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
+ resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.53.3':
+ resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.53.3':
+ resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.53.3':
+ resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loong64-gnu@4.53.3':
+ resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-gnu@4.53.3':
+ resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.53.3':
+ resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-musl@4.53.3':
+ resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.53.3':
+ resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.53.3':
+ resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.53.3':
+ resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-openharmony-arm64@4.53.3':
+ resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rollup/rollup-win32-arm64-msvc@4.53.3':
+ resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.53.3':
+ resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-gnu@4.53.3':
+ resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.53.3':
+ resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
+ cpu: [x64]
+ os: [win32]
+
+ '@tanstack/query-core@5.90.11':
+ resolution: {integrity: sha512-f9z/nXhCgWDF4lHqgIE30jxLe4sYv15QodfdPDKYAk7nAEjNcndy4dHz3ezhdUaR23BpWa4I2EH4/DZ0//Uf8A==}
+
+ '@tanstack/react-query@5.90.11':
+ resolution: {integrity: sha512-3uyzz01D1fkTLXuxF3JfoJoHQMU2fxsfJwE+6N5hHy0dVNoZOvwKP8Z2k7k1KDeD54N20apcJnG75TBAStIrBA==}
+ peerDependencies:
+ react: ^18 || ^19
+
+ '@tiptap/core@2.27.1':
+ resolution: {integrity: sha512-nkerkl8syHj44ZzAB7oA2GPmmZINKBKCa79FuNvmGJrJ4qyZwlkDzszud23YteFZEytbc87kVd/fP76ROS6sLg==}
+ peerDependencies:
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-blockquote@2.27.1':
+ resolution: {integrity: sha512-QrUX3muElDrNjKM3nqCSAtm3H3pT33c6ON8kwRiQboOAjT/9D57Cs7XEVY7r6rMaJPeKztrRUrNVF9w/w/6B0A==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-bold@2.27.1':
+ resolution: {integrity: sha512-g4l4p892x/r7mhea8syp3fNYODxsDrimgouQ+q4DKXIgQmm5+uNhyuEPexP3I8TFNXqQ4DlMNFoM9yCqk97etQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-bubble-menu@2.27.1':
+ resolution: {integrity: sha512-ki1R27VsSvY2tT9Q2DIlcATwLOoEjf5DsN+5sExarQ8S/ZxT/tvIjRxB8Dx7lb2a818W5f/NER26YchGtmHfpg==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-bullet-list@2.27.1':
+ resolution: {integrity: sha512-5FmnfXkJ76wN4EbJNzBhAlmQxho8yEMIJLchTGmXdsD/n/tsyVVtewnQYaIOj/Z7naaGySTGDmjVtLgTuQ+Sxw==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-code-block@2.27.1':
+ resolution: {integrity: sha512-wCI5VIOfSAdkenCWFvh4m8FFCJ51EOK+CUmOC/PWUjyo2Dgn8QC8HMi015q8XF7886T0KvYVVoqxmxJSUDAYNg==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-code@2.27.1':
+ resolution: {integrity: sha512-i65wUGJevzBTIIUBHBc1ggVa27bgemvGl/tY1/89fEuS/0Xmre+OQjw8rCtSLevoHSiYYLgLRlvjtUSUhE4kgg==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-color@2.27.1':
+ resolution: {integrity: sha512-raYRsdG2tZvVvY1LV/VTZnDG44Y0xRBwo5CZEat0OUqdx34dfvCtYm8HIOTyWBwr7OOW+yR4O1Vc2zFkmfthZw==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/extension-text-style': ^2.7.0
+
+ '@tiptap/extension-document@2.27.1':
+ resolution: {integrity: sha512-NtJzJY7Q/6XWjpOm5OXKrnEaofrcc1XOTYlo/SaTwl8k2bZo918Vl0IDBWhPVDsUN7kx767uHwbtuQZ+9I82hA==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-dropcursor@2.27.1':
+ resolution: {integrity: sha512-3MBQRGHHZ0by3OT0CWbLKS7J3PH9PpobrXjmIR7kr0nde7+bHqxXiVNuuIf501oKU9rnEUSedipSHkLYGkmfsA==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-floating-menu@2.27.1':
+ resolution: {integrity: sha512-nUk/8DbiXO69l6FDwkWso94BTf52IBoWALo+YGWT6o+FO6cI9LbUGghEX2CdmQYXCvSvwvISF2jXeLQWNZvPZQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-gapcursor@2.27.1':
+ resolution: {integrity: sha512-A9e1jr+jGhDWzNSXtIO6PYVYhf5j/udjbZwMja+wCE/3KvZU9V3IrnGKz1xNW+2Q2BDOe1QO7j5uVL9ElR6nTA==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-hard-break@2.27.1':
+ resolution: {integrity: sha512-W4hHa4Io6QCTwpyTlN6UAvqMIQ7t56kIUByZhyY9EWrg/+JpbfpxE1kXFLPB4ZGgwBknFOw+e4bJ1j3oAbTJFw==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-heading@2.27.1':
+ resolution: {integrity: sha512-6xoC7igZlW1EmnQ5WVH9IL7P1nCQb3bBUaIDLvk7LbweEogcTUECI4Xg1vxMOVmj9tlDe1I4BsgfcKpB5KEsZw==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-highlight@2.27.1':
+ resolution: {integrity: sha512-ntuYX09tvHQE/R/8WbTOxbFuQhRr2jhTkKz/gLwDD2o8IhccSy3f0nm+mVmVamKQnbsBBbLohojd5IGOnX9f1A==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-history@2.27.1':
+ resolution: {integrity: sha512-K8PHC9gegSAt0wzSlsd4aUpoEyIJYOmVVeyniHr1P1mIblW1KYEDbRGbDlrLALTyUEfMcBhdIm8zrB9X2Nihvg==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-horizontal-rule@2.27.1':
+ resolution: {integrity: sha512-WxXWGEEsqDmGIF2o9av+3r9Qje4CKrqrpeQY6aRO5bxvWX9AabQCfasepayBok6uwtvNzh3Xpsn9zbbSk09dNA==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-image@2.27.1':
+ resolution: {integrity: sha512-wu3vMKDYWJwKS6Hrw5PPCKBO2RxyHNeFLiA/uDErEV7axzNpievK/U9DyaDXmtK3K/h1XzJAJz19X+2d/pY68w==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-italic@2.27.1':
+ resolution: {integrity: sha512-rcm0GyniWW0UhcNI9+1eIK64GqWQLyIIrWGINslvqSUoBc+WkfocLvv4CMpRkzKlfsAxwVIBuH2eLxHKDtAREA==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-link@2.27.1':
+ resolution: {integrity: sha512-cCwWPZsnVh9MXnGOqSIRXPPuUixRDK8eMN2TvqwbxUBb1TU7b/HtNvfMU4tAOqAuMRJ0aJkFuf3eB0Gi8LVb1g==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-list-item@2.27.1':
+ resolution: {integrity: sha512-dtsxvtzxfwOJP6dKGf0vb2MJAoDF2NxoiWzpq0XTvo7NGGYUHfuHjX07Zp0dYqb4seaDXjwsi5BIQUOp3+WMFQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-ordered-list@2.27.1':
+ resolution: {integrity: sha512-U1/sWxc2TciozQsZjH35temyidYUjvroHj3PUPzPyh19w2fwKh1NSbFybWuoYs6jS3XnMSwnM2vF52tOwvfEmA==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-paragraph@2.27.1':
+ resolution: {integrity: sha512-R3QdrHcUdFAsdsn2UAIvhY0yWyHjqGyP/Rv8RRdN0OyFiTKtwTPqreKMHKJOflgX4sMJl/OpHTpNG1Kaf7Lo2A==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-placeholder@2.27.1':
+ resolution: {integrity: sha512-UbXaibHHFE+lOTlw/vs3jPzBoj1sAfbXuTAhXChjgYIcTTY5Cr6yxwcymLcimbQ79gf04Xkua2FCN3YsJxIFmw==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+
+ '@tiptap/extension-strike@2.27.1':
+ resolution: {integrity: sha512-S9I//K8KPgfFTC5I5lorClzXk0g4lrAv9y5qHzHO5EOWt7AFl0YTg2oN8NKSIBK4bHRnPIrjJJKv+dDFnUp5jQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-text-align@2.27.1':
+ resolution: {integrity: sha512-D7dLPk7y5mDn9ZNANQ4K2gCq4vy+Emm5AdeWOGzNeqJsYrBotiQYXd9rb1QYjdup2kzAoKduMTUXV92ujo5cEg==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-text-style@2.27.1':
+ resolution: {integrity: sha512-NagQ9qLk0Ril83gfrk+C65SvTqPjL3WVnLF2arsEVnCrxcx3uDOvdJW67f/K5HEwEHsoqJ4Zq9Irco/koXrOXA==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-text@2.27.1':
+ resolution: {integrity: sha512-a4GCT+GZ9tUwl82F4CEum9/+WsuW0/De9Be/NqrMmi7eNfAwbUTbLCTFU0gEvv25WMHCoUzaeNk/qGmzeVPJ1Q==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/extension-underline@2.27.1':
+ resolution: {integrity: sha512-fPTmfJFAQWg1O/os1pYSPVdtvly6eW/w5sDofG7pre+bdQUN+8s1cZYelSuj/ltNVioRaB2Ws7tvNgnHL0aAJQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+
+ '@tiptap/pm@2.27.1':
+ resolution: {integrity: sha512-ijKo3+kIjALthYsnBmkRXAuw2Tswd9gd7BUR5OMfIcjGp8v576vKxOxrRfuYiUM78GPt//P0sVc1WV82H5N0PQ==}
+
+ '@tiptap/react@2.27.1':
+ resolution: {integrity: sha512-leJximSjYJuhLJQv9azOP9R7w6zuxVgKOHYT4w83Gte7GhWMpNL6xRWzld280vyq/YW/cSYjPb/8ESEOgKNBdQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.7.0
+ '@tiptap/pm': ^2.7.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ '@tiptap/starter-kit@2.27.1':
+ resolution: {integrity: sha512-uQQlP0Nmn9eq19qm8YoOeloEfmcGbPpB1cujq54Q6nPgxaBozR7rE7tXbFTinxRW2+Hr7XyNWhpjB7DMNkdU2Q==}
+
+ '@types/babel__core@7.20.5':
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+
+ '@types/babel__generator@7.27.0':
+ resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
+
+ '@types/babel__template@7.4.4':
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+
+ '@types/babel__traverse@7.28.0':
+ resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
+
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+
+ '@types/faker@5.1.7':
+ resolution: {integrity: sha512-ByseCEyhb+64fapaFR/yASUfAU+Ia4LpCnHhoNMQJFSIBvbtFoEZQB0elwrSF/idpKL5OZvmZhCCukGV8Zi22w==}
+
+ '@types/linkify-it@5.0.0':
+ resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
+
+ '@types/markdown-it@14.1.2':
+ resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
+
+ '@types/mdurl@2.0.0':
+ resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
+
+ '@types/node@20.19.25':
+ resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==}
+
+ '@types/parse-json@4.0.2':
+ resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
+
+ '@types/prop-types@15.7.15':
+ resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
+
+ '@types/react-dom@19.2.3':
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
+ peerDependencies:
+ '@types/react': ^19.2.0
+
+ '@types/react-transition-group@4.4.12':
+ resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==}
+ peerDependencies:
+ '@types/react': '*'
+
+ '@types/react@19.2.7':
+ resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==}
+
+ '@types/trusted-types@2.0.7':
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+
+ '@types/use-sync-external-store@0.0.6':
+ resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
+
+ '@vitejs/plugin-react@4.7.0':
+ resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ appwrite@17.0.2:
+ resolution: {integrity: sha512-h8frLDRYzFDLS9xA2s8ZSlH/prPFq/ma5477fgQHHLcE/t9RDxNImpq9AleRUb9Oh1YJiP49HCObxgSTGW5AQA==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+ attr-accept@2.2.5:
+ resolution: {integrity: sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==}
+ engines: {node: '>=4'}
+
+ autosuggest-highlight@3.3.4:
+ resolution: {integrity: sha512-j6RETBD2xYnrVcoV1S5R4t3WxOlWZKyDQjkwnggDPSjF5L4jV98ZltBpvPvbkM1HtoSe5o+bNrTHyjPbieGeYA==}
+
+ babel-plugin-macros@3.1.0:
+ resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
+ engines: {node: '>=10', npm: '>=6'}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ baseline-browser-mapping@2.8.32:
+ resolution: {integrity: sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==}
+ hasBin: true
+
+ brace-expansion@1.1.12:
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
+
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+
+ browserslist@4.28.0:
+ resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ btoa@1.2.1:
+ resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==}
+ engines: {node: '>= 0.4.0'}
+ hasBin: true
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bind@1.0.8:
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ caniuse-lite@1.0.30001759:
+ resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ cliui@7.0.4:
+ resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
+
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ convert-source-map@1.9.0:
+ resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cosmiconfig@7.1.0:
+ resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
+ engines: {node: '>=10'}
+
+ crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
+
+ css-mediaquery@0.1.2:
+ resolution: {integrity: sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==}
+
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
+ data-generator-retail@5.13.2:
+ resolution: {integrity: sha512-rbvitKPR8AtFLPgp3m43WIjTQdYnfDvdC3KByEH8IHaRZ41o5XOc2u3hxb90EACs28i4JzhQgbheQXHC35K8aQ==}
+ peerDependencies:
+ ra-core: ^5.0.0
+
+ date-fns@3.6.0:
+ resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==}
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decode-uri-component@0.2.2:
+ resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
+ engines: {node: '>=0.10'}
+
+ decode-uri-component@0.4.1:
+ resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==}
+ engines: {node: '>=14.16'}
+
+ define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+
+ define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+
+ diacritic@0.0.2:
+ resolution: {integrity: sha512-iQCeDkSPwkfwWPr+HZZ49WRrM2FSI9097Q9w7agyRCdLcF9Eh2Ek0sHKcmMWx2oZVBjRBE/sziGFjZu0uf1Jbg==}
+
+ dom-helpers@5.2.1:
+ resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
+
+ dompurify@3.3.0:
+ resolution: {integrity: sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==}
+
+ dotenv@16.6.1:
+ resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
+ engines: {node: '>=12'}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ duplexer@0.1.2:
+ resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
+
+ echarts@5.6.0:
+ resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==}
+
+ ejs@3.1.10:
+ resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+
+ electron-to-chromium@1.5.263:
+ resolution: {integrity: sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ error-ex@1.3.4:
+ resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
+ esbuild@0.25.12:
+ resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ esbuild@0.27.0:
+ resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ eventemitter3@5.0.1:
+ resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
+
+ faker@5.4.0:
+ resolution: {integrity: sha512-Y9n/Ky/xZx/Bj8DePvXspUYRtHl/rGQytoIT5LaxmNwSe3wWyOeOXb3lT6Dpipq240PVpeFaGKzScz/5fvff2g==}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ file-selector@2.1.2:
+ resolution: {integrity: sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==}
+ engines: {node: '>= 12'}
+
+ filelist@1.0.4:
+ resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
+
+ filter-obj@1.1.0:
+ resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
+ engines: {node: '>=0.10.0'}
+
+ filter-obj@5.1.0:
+ resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==}
+ engines: {node: '>=14.16'}
+
+ find-root@1.1.0:
+ resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ get-tsconfig@4.13.0:
+ resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ gzip-size@6.0.0:
+ resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
+ engines: {node: '>=10'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+
+ import-fresh@3.3.1:
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
+
+ inflection@3.0.2:
+ resolution: {integrity: sha512-+Bg3+kg+J6JUWn8J6bzFmOWkTQ6L/NHfDRSYU+EVvuKHDxUDHAXgqixHfVlzuBQaPOTac8hn43aPhMNk6rMe3g==}
+ engines: {node: '>=18.0.0'}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+
+ is-core-module@2.16.1:
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ engines: {node: '>= 0.4'}
+
+ is-docker@2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-wsl@2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+
+ jake@10.9.4:
+ resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonexport@3.2.0:
+ resolution: {integrity: sha512-GbO9ugb0YTZatPd/hqCGR0FSwbr82H6OzG04yzdrG7XOe4QZ0jhQ+kOsB29zqkzoYJLmLxbbrFiuwbQu891XnQ==}
+ hasBin: true
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ linkify-it@5.0.0:
+ resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
+
+ linkifyjs@4.3.2:
+ resolution: {integrity: sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
+ markdown-it@14.1.0:
+ resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
+ hasBin: true
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ mdurl@2.0.0:
+ resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ mkdirp@0.5.6:
+ resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+ hasBin: true
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ node-appwrite@21.0.0:
+ resolution: {integrity: sha512-n5DzqL6QKIvo6mLXA0fRv1K/YmBdrk9a7DJtCO+YdpVCVq3buFpcgwaYfPYtsdlgfXpdFwD6ejV0bMER3+f1nA==}
+
+ node-fetch-native-with-agent@1.7.2:
+ resolution: {integrity: sha512-5MaOOCuJEvcckoz7/tjdx1M6OusOY6Xc5f459IaruGStWnKzlI1qpNgaAwmn4LmFYcsSlj+jBMk84wmmRxfk5g==}
+
+ node-polyglot@2.6.0:
+ resolution: {integrity: sha512-ZZFkaYzIfGfBvSM6QhA9dM8EEaUJOVewzGSRcXWbJELXDj0lajAtKaENCYxvF5yE+TgHg6NQb0CmgYMsMdcNJQ==}
+ engines: {node: '>= 0.4'}
+
+ node-releases@2.0.27:
+ resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+
+ object.entries@1.1.9:
+ resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==}
+ engines: {node: '>= 0.4'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ open@7.4.2:
+ resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==}
+ engines: {node: '>=8'}
+
+ orderedmap@2.1.1:
+ resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+
+ prosemirror-changeset@2.3.1:
+ resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==}
+
+ prosemirror-collab@1.3.1:
+ resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
+
+ prosemirror-commands@1.7.1:
+ resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
+
+ prosemirror-dropcursor@1.8.2:
+ resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==}
+
+ prosemirror-gapcursor@1.4.0:
+ resolution: {integrity: sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==}
+
+ prosemirror-history@1.5.0:
+ resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==}
+
+ prosemirror-inputrules@1.5.1:
+ resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==}
+
+ prosemirror-keymap@1.2.3:
+ resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==}
+
+ prosemirror-markdown@1.13.2:
+ resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==}
+
+ prosemirror-menu@1.2.5:
+ resolution: {integrity: sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==}
+
+ prosemirror-model@1.25.4:
+ resolution: {integrity: sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==}
+
+ prosemirror-schema-basic@1.2.4:
+ resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==}
+
+ prosemirror-schema-list@1.5.1:
+ resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==}
+
+ prosemirror-state@1.4.4:
+ resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==}
+
+ prosemirror-tables@1.8.1:
+ resolution: {integrity: sha512-DAgDoUYHCcc6tOGpLVPSU1k84kCUWTWnfWX3UDy2Delv4ryH0KqTD6RBI6k4yi9j9I8gl3j8MkPpRD/vWPZbug==}
+
+ prosemirror-trailing-node@3.0.0:
+ resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==}
+ peerDependencies:
+ prosemirror-model: ^1.22.1
+ prosemirror-state: ^1.4.2
+ prosemirror-view: ^1.33.8
+
+ prosemirror-transform@1.10.5:
+ resolution: {integrity: sha512-RPDQCxIDhIBb1o36xxwsaeAvivO8VLJcgBtzmOwQ64bMtsVFh5SSuJ6dWSxO1UsHTiTXPCgQm3PDJt7p6IOLbw==}
+
+ prosemirror-view@1.41.4:
+ resolution: {integrity: sha512-WkKgnyjNncri03Gjaz3IFWvCAE94XoiEgvtr0/r2Xw7R8/IjK3sKLSiDoCHWcsXSAinVaKlGRZDvMCsF1kbzjA==}
+
+ punycode.js@2.3.1:
+ resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
+ engines: {node: '>=6'}
+
+ query-string@7.1.3:
+ resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
+ engines: {node: '>=6'}
+
+ query-string@9.3.1:
+ resolution: {integrity: sha512-5fBfMOcDi5SA9qj5jZhWAcTtDfKF5WFdd2uD9nVNlbxVv1baq65aALy6qofpNEGELHvisjjasxQp7BlM9gvMzw==}
+ engines: {node: '>=18'}
+
+ ra-appwrite@1.1.0:
+ resolution: {integrity: sha512-xukDgESakcrLw0azIuzLoVyLoXdZLgIGcpl4KxOgt620UaE6FnS4ql0wlyUZCBkl9uk49NZL7x/BWaKGz4JSZg==}
+ peerDependencies:
+ react-admin: ^5.6.0
+
+ ra-core@5.13.2:
+ resolution: {integrity: sha512-x02gVrawSU5aFdiu/ICvOQXO82JMZwoSMnQMYHewBllU0RTv30k/zTjLYrKflo0aSZZpBR8Cx5MT01joDfitNw==}
+ peerDependencies:
+ '@tanstack/react-query': ^5.83.0
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ react-hook-form: ^7.65.0
+ react-router: ^6.28.1 || ^7.1.1
+ react-router-dom: ^6.28.1 || ^7.1.1
+
+ ra-i18n-polyglot@5.13.2:
+ resolution: {integrity: sha512-k5b+TH/I6G99zUPRZ+piSInlY5rDgjCHLL7lz4EMMLLOXrhRtaclxrs/RdONMWHPEAj8u99Au6LCZ/JBNZ1Z/A==}
+
+ ra-input-rich-text@5.13.2:
+ resolution: {integrity: sha512-nIxsQNK7G/c9A4SosXraqxZcYsucGx1RsZeo65T8KvivYRIhROubfUg/LFr0z4aEKBC0vXyNoXBTWk3sdLWNBA==}
+ peerDependencies:
+ '@mui/icons-material': ^5.16.12 || ^6.0.0 || ^7.0.0
+ '@mui/material': ^5.16.12 || ^6.0.0 || ^7.0.0
+ ra-core: ^5.0.0
+ ra-ui-materialui: ^5.0.0
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+
+ ra-language-english@5.13.2:
+ resolution: {integrity: sha512-jvCQE5zC47btjpQVELPxEsaAGW2fzXHX47v9ONGKz7jZn5MtVh6Wl6LOTIBnSIpzQEZvAi13rcOcKxP7ICMq2A==}
+
+ ra-language-french@5.13.2:
+ resolution: {integrity: sha512-Om9hT5oalEuPvn6yyVI7YyAQctWanzinABvj2AQbFNVUAuUySnHEVNzyvXrLM54wuhoDe8Pq8o1dMrJ7Oa9hlw==}
+
+ ra-ui-materialui@5.13.2:
+ resolution: {integrity: sha512-TfoBhDaaF28ucsS0vlpQuMKpridqdW8sxjsdLL902WT/I6vCppqZ5ZMNuDxmFN7e4z8S5OeLsan7Q2RZAER9Sw==}
+ peerDependencies:
+ '@mui/icons-material': ^5.16.12 || ^6.0.0 || ^7.0.0
+ '@mui/material': ^5.16.12 || ^6.0.0 || ^7.0.0
+ '@mui/system': ^5.15.20 || ^6.0.0 || ^7.0.0
+ '@mui/utils': ^5.15.20 || ^6.0.0 || ^7.0.0
+ '@tanstack/react-query': ^5.83.0
+ csstype: ^3.1.3
+ ra-core: ^5.0.0
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ react-hook-form: '*'
+ react-is: ^18.0.0 || ^19.0.0
+ react-router: ^6.28.1 || ^7.1.1
+ react-router-dom: ^6.28.1 || ^7.1.1
+
+ react-admin@5.13.2:
+ resolution: {integrity: sha512-4T7kVA2qveKZQ8RF1RzygQPRG0GnEdA7YA3v4BAA9kCk0BVg96bbAgOXvRUAnVh77gl8Q1r+MY0jr88q1E+mCQ==}
+ peerDependencies:
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+
+ react-dom@19.2.0:
+ resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==}
+ peerDependencies:
+ react: ^19.2.0
+
+ react-dropzone@14.3.8:
+ resolution: {integrity: sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==}
+ engines: {node: '>= 10.13'}
+ peerDependencies:
+ react: '>= 16.8 || 18.0.0'
+
+ react-error-boundary@4.1.2:
+ resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==}
+ peerDependencies:
+ react: '>=16.13.1'
+
+ react-hook-form@7.67.0:
+ resolution: {integrity: sha512-E55EOwKJHHIT/I6J9DmQbCWToAYSw9nN5R57MZw9rMtjh+YQreMDxRLfdjfxQbiJ3/qbg3Z02wGzBX4M+5fMtQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^16.8.0 || ^17 || ^18 || ^19
+
+ react-hotkeys-hook@5.2.1:
+ resolution: {integrity: sha512-xbKh6zJxd/vJHT4Bw4+0pBD662Fk20V+VFhLqciCg+manTVO4qlqRqiwFOYelfHN9dBvWj9vxaPkSS26ZSIJGg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+
+ react-is@19.2.0:
+ resolution: {integrity: sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==}
+
+ react-refresh@0.17.0:
+ resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==}
+ engines: {node: '>=0.10.0'}
+
+ react-router-dom@6.30.2:
+ resolution: {integrity: sha512-l2OwHn3UUnEVUqc6/1VMmR1cvZryZ3j3NzapC2eUXO1dB0sYp5mvwdjiXhpUbRb21eFow3qSxpP8Yv6oAU824Q==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: '>=16.8'
+ react-dom: '>=16.8'
+
+ react-router@6.30.2:
+ resolution: {integrity: sha512-H2Bm38Zu1bm8KUE5NVWRMzuIyAV8p/JrOaBJAwVmp37AXG72+CZJlEBw6pdn9i5TBgLMhNDgijS4ZlblpHyWTA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: '>=16.8'
+
+ react-transition-group@4.4.5:
+ resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
+ peerDependencies:
+ react: '>=16.6.0'
+ react-dom: '>=16.6.0'
+
+ react@19.2.0:
+ resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==}
+ engines: {node: '>=0.10.0'}
+
+ remove-accents@0.4.4:
+ resolution: {integrity: sha512-EpFcOa/ISetVHEXqu+VwI96KZBmq+a8LJnGkaeFw45epGlxIZz5dhEEnNZMsQXgORu3qaMoLX4qJCzOik6ytAg==}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
+ resolve@1.22.11:
+ resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+
+ rimraf@2.6.3:
+ resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ rollup-preserve-directives@1.1.3:
+ resolution: {integrity: sha512-oXqxd6ZzkoQej8Qt0k+S/yvO2+S4CEVEVv2g85oL15o0cjAKTKEuo2MzyA8FcsBBXbtytBzBMFAbhvQg4YyPUQ==}
+ peerDependencies:
+ rollup: ^2.0.0 || ^3.0.0 || ^4.0.0
+
+ rollup@4.53.3:
+ resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ rope-sequence@1.3.4:
+ resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
+
+ scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+
+ source-map-explorer@2.5.3:
+ resolution: {integrity: sha512-qfUGs7UHsOBE5p/lGfQdaAj/5U/GWYBw2imEpD6UQNkqElYonkow8t+HBL1qqIl3CuGZx7n8/CQo4x1HwSHhsg==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.5.7:
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.7.6:
+ resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
+ engines: {node: '>= 12'}
+
+ split-on-first@1.1.0:
+ resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
+ engines: {node: '>=6'}
+
+ split-on-first@3.0.0:
+ resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==}
+ engines: {node: '>=12'}
+
+ strict-uri-encode@2.0.0:
+ resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
+ engines: {node: '>=4'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ stylis@4.2.0:
+ resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ temp@0.9.4:
+ resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==}
+ engines: {node: '>=6.0.0'}
+
+ tinyglobby@0.2.15:
+ resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
+ engines: {node: '>=12.0.0'}
+
+ tippy.js@6.3.7:
+ resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==}
+
+ tslib@2.3.0:
+ resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ tsx@4.21.0:
+ resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ uc.micro@2.1.0:
+ resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
+
+ undici-types@6.21.0:
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+
+ update-browserslist-db@1.1.4:
+ resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ use-sync-external-store@1.6.0:
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ vite@6.4.1:
+ resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+ 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
+
+ w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+
+ warning@4.0.3:
+ resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yaml@1.10.2:
+ resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
+ engines: {node: '>= 6'}
+
+ yargs-parser@20.2.9:
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
+
+ yargs@16.2.0:
+ resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
+ engines: {node: '>=10'}
+
+ zrender@5.6.1:
+ resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==}
+
+snapshots:
+
+ '@babel/code-frame@7.27.1':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.28.5': {}
+
+ '@babel/core@7.28.5':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
+ '@babel/helpers': 7.28.4
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.28.5':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
+
+ '@babel/helper-compilation-targets@7.27.2':
+ dependencies:
+ '@babel/compat-data': 7.28.5
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.28.0
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-globals@7.28.0': {}
+
+ '@babel/helper-module-imports@7.27.1':
+ dependencies:
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+ '@babel/traverse': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-plugin-utils@7.27.1': {}
+
+ '@babel/helper-string-parser@7.27.1': {}
+
+ '@babel/helper-validator-identifier@7.28.5': {}
+
+ '@babel/helper-validator-option@7.27.1': {}
+
+ '@babel/helpers@7.28.4':
+ dependencies:
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
+
+ '@babel/parser@7.28.5':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/runtime@7.28.4': {}
+
+ '@babel/template@7.27.2':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+
+ '@babel/traverse@7.28.5':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.28.5':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
+ '@emotion/babel-plugin@11.13.5':
+ dependencies:
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/runtime': 7.28.4
+ '@emotion/hash': 0.9.2
+ '@emotion/memoize': 0.9.0
+ '@emotion/serialize': 1.3.3
+ babel-plugin-macros: 3.1.0
+ convert-source-map: 1.9.0
+ escape-string-regexp: 4.0.0
+ find-root: 1.1.0
+ source-map: 0.5.7
+ stylis: 4.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/cache@11.14.0':
+ dependencies:
+ '@emotion/memoize': 0.9.0
+ '@emotion/sheet': 1.4.0
+ '@emotion/utils': 1.4.2
+ '@emotion/weak-memoize': 0.4.0
+ stylis: 4.2.0
+
+ '@emotion/hash@0.9.2': {}
+
+ '@emotion/is-prop-valid@1.4.0':
+ dependencies:
+ '@emotion/memoize': 0.9.0
+
+ '@emotion/memoize@0.9.0': {}
+
+ '@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@emotion/babel-plugin': 11.13.5
+ '@emotion/cache': 11.14.0
+ '@emotion/serialize': 1.3.3
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0)
+ '@emotion/utils': 1.4.2
+ '@emotion/weak-memoize': 0.4.0
+ hoist-non-react-statics: 3.3.2
+ react: 19.2.0
+ optionalDependencies:
+ '@types/react': 19.2.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/serialize@1.3.3':
+ dependencies:
+ '@emotion/hash': 0.9.2
+ '@emotion/memoize': 0.9.0
+ '@emotion/unitless': 0.10.0
+ '@emotion/utils': 1.4.2
+ csstype: 3.2.3
+
+ '@emotion/sheet@1.4.0': {}
+
+ '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@emotion/babel-plugin': 11.13.5
+ '@emotion/is-prop-valid': 1.4.0
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
+ '@emotion/serialize': 1.3.3
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0)
+ '@emotion/utils': 1.4.2
+ react: 19.2.0
+ optionalDependencies:
+ '@types/react': 19.2.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@emotion/unitless@0.10.0': {}
+
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.0)':
+ dependencies:
+ react: 19.2.0
+
+ '@emotion/utils@1.4.2': {}
+
+ '@emotion/weak-memoize@0.4.0': {}
+
+ '@esbuild/aix-ppc64@0.25.12':
+ optional: true
+
+ '@esbuild/aix-ppc64@0.27.0':
+ optional: true
+
+ '@esbuild/android-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/android-arm64@0.27.0':
+ optional: true
+
+ '@esbuild/android-arm@0.25.12':
+ optional: true
+
+ '@esbuild/android-arm@0.27.0':
+ optional: true
+
+ '@esbuild/android-x64@0.25.12':
+ optional: true
+
+ '@esbuild/android-x64@0.27.0':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.27.0':
+ optional: true
+
+ '@esbuild/darwin-x64@0.25.12':
+ optional: true
+
+ '@esbuild/darwin-x64@0.27.0':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.27.0':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.25.12':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.27.0':
+ optional: true
+
+ '@esbuild/linux-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-arm64@0.27.0':
+ optional: true
+
+ '@esbuild/linux-arm@0.25.12':
+ optional: true
+
+ '@esbuild/linux-arm@0.27.0':
+ optional: true
+
+ '@esbuild/linux-ia32@0.25.12':
+ optional: true
+
+ '@esbuild/linux-ia32@0.27.0':
+ optional: true
+
+ '@esbuild/linux-loong64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-loong64@0.27.0':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.25.12':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.27.0':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.27.0':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.27.0':
+ optional: true
+
+ '@esbuild/linux-s390x@0.25.12':
+ optional: true
+
+ '@esbuild/linux-s390x@0.27.0':
+ optional: true
+
+ '@esbuild/linux-x64@0.25.12':
+ optional: true
+
+ '@esbuild/linux-x64@0.27.0':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.27.0':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.25.12':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.27.0':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.27.0':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.25.12':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.27.0':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.27.0':
+ optional: true
+
+ '@esbuild/sunos-x64@0.25.12':
+ optional: true
+
+ '@esbuild/sunos-x64@0.27.0':
+ optional: true
+
+ '@esbuild/win32-arm64@0.25.12':
+ optional: true
+
+ '@esbuild/win32-arm64@0.27.0':
+ optional: true
+
+ '@esbuild/win32-ia32@0.25.12':
+ optional: true
+
+ '@esbuild/win32-ia32@0.27.0':
+ optional: true
+
+ '@esbuild/win32-x64@0.25.12':
+ optional: true
+
+ '@esbuild/win32-x64@0.27.0':
+ optional: true
+
+ '@faker-js/faker@10.1.0': {}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@mui/core-downloads-tracker@7.3.6': {}
+
+ '@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ react: 19.2.0
+ optionalDependencies:
+ '@types/react': 19.2.7
+
+ '@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/core-downloads-tracker': 7.3.6
+ '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@mui/types': 7.4.9(@types/react@19.2.7)
+ '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.0)
+ '@popperjs/core': 2.11.8
+ '@types/react-transition-group': 4.4.12(@types/react@19.2.7)
+ clsx: 2.1.1
+ csstype: 3.2.3
+ prop-types: 15.8.1
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ react-is: 19.2.0
+ react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@types/react': 19.2.7
+
+ '@mui/private-theming@7.3.6(@types/react@19.2.7)(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.0)
+ prop-types: 15.8.1
+ react: 19.2.0
+ optionalDependencies:
+ '@types/react': 19.2.7
+
+ '@mui/styled-engine@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@emotion/cache': 11.14.0
+ '@emotion/serialize': 1.3.3
+ '@emotion/sheet': 1.4.0
+ csstype: 3.2.3
+ prop-types: 15.8.1
+ react: 19.2.0
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+
+ '@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/private-theming': 7.3.6(@types/react@19.2.7)(react@19.2.0)
+ '@mui/styled-engine': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(react@19.2.0)
+ '@mui/types': 7.4.9(@types/react@19.2.7)
+ '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.0)
+ clsx: 2.1.1
+ csstype: 3.2.3
+ prop-types: 15.8.1
+ react: 19.2.0
+ optionalDependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@types/react': 19.2.7
+
+ '@mui/types@7.4.9(@types/react@19.2.7)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ optionalDependencies:
+ '@types/react': 19.2.7
+
+ '@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0)':
+ dependencies:
+ '@babel/runtime': 7.28.4
+ '@mui/types': 7.4.9(@types/react@19.2.7)
+ '@types/prop-types': 15.7.15
+ clsx: 2.1.1
+ prop-types: 15.8.1
+ react: 19.2.0
+ react-is: 19.2.0
+ optionalDependencies:
+ '@types/react': 19.2.7
+
+ '@popperjs/core@2.11.8': {}
+
+ '@remirror/core-constants@3.0.0': {}
+
+ '@remix-run/router@1.23.1': {}
+
+ '@rolldown/pluginutils@1.0.0-beta.27': {}
+
+ '@rollup/rollup-android-arm-eabi@4.53.3':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.53.3':
+ optional: true
+
+ '@rollup/rollup-openharmony-arm64@4.53.3':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.53.3':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.53.3':
+ optional: true
+
+ '@rollup/rollup-win32-x64-gnu@4.53.3':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.53.3':
+ optional: true
+
+ '@tanstack/query-core@5.90.11': {}
+
+ '@tanstack/react-query@5.90.11(react@19.2.0)':
+ dependencies:
+ '@tanstack/query-core': 5.90.11
+ react: 19.2.0
+
+ '@tiptap/core@2.27.1(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/pm': 2.27.1
+
+ '@tiptap/extension-blockquote@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-bold@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-bubble-menu@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+ tippy.js: 6.3.7
+
+ '@tiptap/extension-bullet-list@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-code-block@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+
+ '@tiptap/extension-code@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-color@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/extension-text-style@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/extension-text-style': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+
+ '@tiptap/extension-document@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-dropcursor@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+
+ '@tiptap/extension-floating-menu@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+ tippy.js: 6.3.7
+
+ '@tiptap/extension-gapcursor@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+
+ '@tiptap/extension-hard-break@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-heading@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-highlight@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-history@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+
+ '@tiptap/extension-horizontal-rule@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+
+ '@tiptap/extension-image@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-italic@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-link@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+ linkifyjs: 4.3.2
+
+ '@tiptap/extension-list-item@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-ordered-list@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-paragraph@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-placeholder@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+
+ '@tiptap/extension-strike@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-text-align@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-text-style@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-text@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/extension-underline@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+
+ '@tiptap/pm@2.27.1':
+ dependencies:
+ prosemirror-changeset: 2.3.1
+ prosemirror-collab: 1.3.1
+ prosemirror-commands: 1.7.1
+ prosemirror-dropcursor: 1.8.2
+ prosemirror-gapcursor: 1.4.0
+ prosemirror-history: 1.5.0
+ prosemirror-inputrules: 1.5.1
+ prosemirror-keymap: 1.2.3
+ prosemirror-markdown: 1.13.2
+ prosemirror-menu: 1.2.5
+ prosemirror-model: 1.25.4
+ prosemirror-schema-basic: 1.2.4
+ prosemirror-schema-list: 1.5.1
+ prosemirror-state: 1.4.4
+ prosemirror-tables: 1.8.1
+ prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.4)
+ prosemirror-transform: 1.10.5
+ prosemirror-view: 1.41.4
+
+ '@tiptap/react@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/extension-bubble-menu': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
+ '@tiptap/extension-floating-menu': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
+ '@tiptap/pm': 2.27.1
+ '@types/use-sync-external-store': 0.0.6
+ fast-deep-equal: 3.1.3
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ use-sync-external-store: 1.6.0(react@19.2.0)
+
+ '@tiptap/starter-kit@2.27.1':
+ dependencies:
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/extension-blockquote': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-bold': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-bullet-list': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-code': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-code-block': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
+ '@tiptap/extension-document': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-dropcursor': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
+ '@tiptap/extension-gapcursor': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
+ '@tiptap/extension-hard-break': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-heading': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-history': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
+ '@tiptap/extension-horizontal-rule': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
+ '@tiptap/extension-italic': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-list-item': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-ordered-list': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-paragraph': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-strike': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-text': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-text-style': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/pm': 2.27.1
+
+ '@types/babel__core@7.20.5':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+ '@types/babel__generator': 7.27.0
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.28.0
+
+ '@types/babel__generator@7.27.0':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@types/babel__template@7.4.4':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+
+ '@types/babel__traverse@7.28.0':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@types/estree@1.0.8': {}
+
+ '@types/faker@5.1.7': {}
+
+ '@types/linkify-it@5.0.0': {}
+
+ '@types/markdown-it@14.1.2':
+ dependencies:
+ '@types/linkify-it': 5.0.0
+ '@types/mdurl': 2.0.0
+
+ '@types/mdurl@2.0.0': {}
+
+ '@types/node@20.19.25':
+ dependencies:
+ undici-types: 6.21.0
+
+ '@types/parse-json@4.0.2': {}
+
+ '@types/prop-types@15.7.15': {}
+
+ '@types/react-dom@19.2.3(@types/react@19.2.7)':
+ dependencies:
+ '@types/react': 19.2.7
+
+ '@types/react-transition-group@4.4.12(@types/react@19.2.7)':
+ dependencies:
+ '@types/react': 19.2.7
+
+ '@types/react@19.2.7':
+ dependencies:
+ csstype: 3.2.3
+
+ '@types/trusted-types@2.0.7':
+ optional: true
+
+ '@types/use-sync-external-store@0.0.6': {}
+
+ '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@20.19.25)(tsx@4.21.0))':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5)
+ '@rolldown/pluginutils': 1.0.0-beta.27
+ '@types/babel__core': 7.20.5
+ react-refresh: 0.17.0
+ vite: 6.4.1(@types/node@20.19.25)(tsx@4.21.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ appwrite@17.0.2: {}
+
+ argparse@2.0.1: {}
+
+ async@3.2.6: {}
+
+ attr-accept@2.2.5: {}
+
+ autosuggest-highlight@3.3.4:
+ dependencies:
+ remove-accents: 0.4.4
+
+ babel-plugin-macros@3.1.0:
+ dependencies:
+ '@babel/runtime': 7.28.4
+ cosmiconfig: 7.1.0
+ resolve: 1.22.11
+
+ balanced-match@1.0.2: {}
+
+ baseline-browser-mapping@2.8.32: {}
+
+ brace-expansion@1.1.12:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.2:
+ dependencies:
+ balanced-match: 1.0.2
+
+ browserslist@4.28.0:
+ dependencies:
+ baseline-browser-mapping: 2.8.32
+ caniuse-lite: 1.0.30001759
+ electron-to-chromium: 1.5.263
+ node-releases: 2.0.27
+ update-browserslist-db: 1.1.4(browserslist@4.28.0)
+
+ btoa@1.2.1: {}
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bind@1.0.8:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ callsites@3.1.0: {}
+
+ caniuse-lite@1.0.30001759: {}
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ cliui@7.0.4:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ clsx@2.1.1: {}
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ concat-map@0.0.1: {}
+
+ convert-source-map@1.9.0: {}
+
+ convert-source-map@2.0.0: {}
+
+ cosmiconfig@7.1.0:
+ dependencies:
+ '@types/parse-json': 4.0.2
+ import-fresh: 3.3.1
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+
+ crelt@1.0.6: {}
+
+ css-mediaquery@0.1.2: {}
+
+ csstype@3.2.3: {}
+
+ data-generator-retail@5.13.2(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)):
+ dependencies:
+ '@faker-js/faker': 10.1.0
+ date-fns: 3.6.0
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+
+ date-fns@3.6.0: {}
+
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
+ decode-uri-component@0.2.2: {}
+
+ decode-uri-component@0.4.1: {}
+
+ define-data-property@1.1.4:
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ define-properties@1.2.1:
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+
+ diacritic@0.0.2: {}
+
+ dom-helpers@5.2.1:
+ dependencies:
+ '@babel/runtime': 7.28.4
+ csstype: 3.2.3
+
+ dompurify@3.3.0:
+ optionalDependencies:
+ '@types/trusted-types': 2.0.7
+
+ dotenv@16.6.1: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ duplexer@0.1.2: {}
+
+ echarts@5.6.0:
+ dependencies:
+ tslib: 2.3.0
+ zrender: 5.6.1
+
+ ejs@3.1.10:
+ dependencies:
+ jake: 10.9.4
+
+ electron-to-chromium@1.5.263: {}
+
+ emoji-regex@8.0.0: {}
+
+ entities@4.5.0: {}
+
+ error-ex@1.3.4:
+ dependencies:
+ is-arrayish: 0.2.1
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ esbuild@0.25.12:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.25.12
+ '@esbuild/android-arm': 0.25.12
+ '@esbuild/android-arm64': 0.25.12
+ '@esbuild/android-x64': 0.25.12
+ '@esbuild/darwin-arm64': 0.25.12
+ '@esbuild/darwin-x64': 0.25.12
+ '@esbuild/freebsd-arm64': 0.25.12
+ '@esbuild/freebsd-x64': 0.25.12
+ '@esbuild/linux-arm': 0.25.12
+ '@esbuild/linux-arm64': 0.25.12
+ '@esbuild/linux-ia32': 0.25.12
+ '@esbuild/linux-loong64': 0.25.12
+ '@esbuild/linux-mips64el': 0.25.12
+ '@esbuild/linux-ppc64': 0.25.12
+ '@esbuild/linux-riscv64': 0.25.12
+ '@esbuild/linux-s390x': 0.25.12
+ '@esbuild/linux-x64': 0.25.12
+ '@esbuild/netbsd-arm64': 0.25.12
+ '@esbuild/netbsd-x64': 0.25.12
+ '@esbuild/openbsd-arm64': 0.25.12
+ '@esbuild/openbsd-x64': 0.25.12
+ '@esbuild/openharmony-arm64': 0.25.12
+ '@esbuild/sunos-x64': 0.25.12
+ '@esbuild/win32-arm64': 0.25.12
+ '@esbuild/win32-ia32': 0.25.12
+ '@esbuild/win32-x64': 0.25.12
+
+ esbuild@0.27.0:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.27.0
+ '@esbuild/android-arm': 0.27.0
+ '@esbuild/android-arm64': 0.27.0
+ '@esbuild/android-x64': 0.27.0
+ '@esbuild/darwin-arm64': 0.27.0
+ '@esbuild/darwin-x64': 0.27.0
+ '@esbuild/freebsd-arm64': 0.27.0
+ '@esbuild/freebsd-x64': 0.27.0
+ '@esbuild/linux-arm': 0.27.0
+ '@esbuild/linux-arm64': 0.27.0
+ '@esbuild/linux-ia32': 0.27.0
+ '@esbuild/linux-loong64': 0.27.0
+ '@esbuild/linux-mips64el': 0.27.0
+ '@esbuild/linux-ppc64': 0.27.0
+ '@esbuild/linux-riscv64': 0.27.0
+ '@esbuild/linux-s390x': 0.27.0
+ '@esbuild/linux-x64': 0.27.0
+ '@esbuild/netbsd-arm64': 0.27.0
+ '@esbuild/netbsd-x64': 0.27.0
+ '@esbuild/openbsd-arm64': 0.27.0
+ '@esbuild/openbsd-x64': 0.27.0
+ '@esbuild/openharmony-arm64': 0.27.0
+ '@esbuild/sunos-x64': 0.27.0
+ '@esbuild/win32-arm64': 0.27.0
+ '@esbuild/win32-ia32': 0.27.0
+ '@esbuild/win32-x64': 0.27.0
+
+ escalade@3.2.0: {}
+
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ eventemitter3@5.0.1: {}
+
+ faker@5.4.0: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fdir@6.5.0(picomatch@4.0.3):
+ optionalDependencies:
+ picomatch: 4.0.3
+
+ file-selector@2.1.2:
+ dependencies:
+ tslib: 2.8.1
+
+ filelist@1.0.4:
+ dependencies:
+ minimatch: 5.1.6
+
+ filter-obj@1.1.0: {}
+
+ filter-obj@5.1.0: {}
+
+ find-root@1.1.0: {}
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-caller-file@2.0.5: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
+ get-tsconfig@4.13.0:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ gopd@1.2.0: {}
+
+ gzip-size@6.0.0:
+ dependencies:
+ duplexer: 0.1.2
+
+ has-flag@4.0.0: {}
+
+ has-property-descriptors@1.0.2:
+ dependencies:
+ es-define-property: 1.0.1
+
+ has-symbols@1.1.0: {}
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ hoist-non-react-statics@3.3.2:
+ dependencies:
+ react-is: 16.13.1
+
+ import-fresh@3.3.1:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ inflection@3.0.2: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ is-arrayish@0.2.1: {}
+
+ is-core-module@2.16.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-docker@2.2.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-wsl@2.2.0:
+ dependencies:
+ is-docker: 2.2.1
+
+ jake@10.9.4:
+ dependencies:
+ async: 3.2.6
+ filelist: 1.0.4
+ picocolors: 1.1.1
+
+ js-tokens@4.0.0: {}
+
+ jsesc@3.1.0: {}
+
+ json-parse-even-better-errors@2.3.1: {}
+
+ json5@2.2.3: {}
+
+ jsonexport@3.2.0: {}
+
+ lines-and-columns@1.2.4: {}
+
+ linkify-it@5.0.0:
+ dependencies:
+ uc.micro: 2.1.0
+
+ linkifyjs@4.3.2: {}
+
+ lodash@4.17.21: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ markdown-it@14.1.0:
+ dependencies:
+ argparse: 2.0.1
+ entities: 4.5.0
+ linkify-it: 5.0.0
+ mdurl: 2.0.0
+ punycode.js: 2.3.1
+ uc.micro: 2.1.0
+
+ math-intrinsics@1.1.0: {}
+
+ mdurl@2.0.0: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.12
+
+ minimatch@5.1.6:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ minimist@1.2.8: {}
+
+ mkdirp@0.5.6:
+ dependencies:
+ minimist: 1.2.8
+
+ ms@2.1.3: {}
+
+ nanoid@3.3.11: {}
+
+ node-appwrite@21.0.0:
+ dependencies:
+ node-fetch-native-with-agent: 1.7.2
+
+ node-fetch-native-with-agent@1.7.2: {}
+
+ node-polyglot@2.6.0:
+ dependencies:
+ hasown: 2.0.2
+ object.entries: 1.1.9
+ warning: 4.0.3
+
+ node-releases@2.0.27: {}
+
+ object-assign@4.1.1: {}
+
+ object-keys@1.1.1: {}
+
+ object.entries@1.1.9:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ open@7.4.2:
+ dependencies:
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+
+ orderedmap@2.1.1: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ parse-json@5.2.0:
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ error-ex: 1.3.4
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+
+ path-is-absolute@1.0.1: {}
+
+ path-parse@1.0.7: {}
+
+ path-type@4.0.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@4.0.3: {}
+
+ postcss@8.5.6:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ prop-types@15.8.1:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+
+ prosemirror-changeset@2.3.1:
+ dependencies:
+ prosemirror-transform: 1.10.5
+
+ prosemirror-collab@1.3.1:
+ dependencies:
+ prosemirror-state: 1.4.4
+
+ prosemirror-commands@1.7.1:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.10.5
+
+ prosemirror-dropcursor@1.8.2:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.10.5
+ prosemirror-view: 1.41.4
+
+ prosemirror-gapcursor@1.4.0:
+ dependencies:
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.4
+
+ prosemirror-history@1.5.0:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.10.5
+ prosemirror-view: 1.41.4
+ rope-sequence: 1.3.4
+
+ prosemirror-inputrules@1.5.1:
+ dependencies:
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.10.5
+
+ prosemirror-keymap@1.2.3:
+ dependencies:
+ prosemirror-state: 1.4.4
+ w3c-keyname: 2.2.8
+
+ prosemirror-markdown@1.13.2:
+ dependencies:
+ '@types/markdown-it': 14.1.2
+ markdown-it: 14.1.0
+ prosemirror-model: 1.25.4
+
+ prosemirror-menu@1.2.5:
+ dependencies:
+ crelt: 1.0.6
+ prosemirror-commands: 1.7.1
+ prosemirror-history: 1.5.0
+ prosemirror-state: 1.4.4
+
+ prosemirror-model@1.25.4:
+ dependencies:
+ orderedmap: 2.1.1
+
+ prosemirror-schema-basic@1.2.4:
+ dependencies:
+ prosemirror-model: 1.25.4
+
+ prosemirror-schema-list@1.5.1:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.10.5
+
+ prosemirror-state@1.4.4:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-transform: 1.10.5
+ prosemirror-view: 1.41.4
+
+ prosemirror-tables@1.8.1:
+ dependencies:
+ prosemirror-keymap: 1.2.3
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.10.5
+ prosemirror-view: 1.41.4
+
+ prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.4):
+ dependencies:
+ '@remirror/core-constants': 3.0.0
+ escape-string-regexp: 4.0.0
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-view: 1.41.4
+
+ prosemirror-transform@1.10.5:
+ dependencies:
+ prosemirror-model: 1.25.4
+
+ prosemirror-view@1.41.4:
+ dependencies:
+ prosemirror-model: 1.25.4
+ prosemirror-state: 1.4.4
+ prosemirror-transform: 1.10.5
+
+ punycode.js@2.3.1: {}
+
+ query-string@7.1.3:
+ dependencies:
+ decode-uri-component: 0.2.2
+ filter-obj: 1.1.0
+ split-on-first: 1.1.0
+ strict-uri-encode: 2.0.0
+
+ query-string@9.3.1:
+ dependencies:
+ decode-uri-component: 0.4.1
+ filter-obj: 5.1.0
+ split-on-first: 3.0.0
+
+ ra-appwrite@1.1.0(react-admin@5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)):
+ dependencies:
+ appwrite: 17.0.2
+ lodash: 4.17.21
+ react-admin: 5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)
+
+ ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0):
+ dependencies:
+ '@tanstack/react-query': 5.90.11(react@19.2.0)
+ date-fns: 3.6.0
+ eventemitter3: 5.0.1
+ inflection: 3.0.2
+ jsonexport: 3.2.0
+ lodash: 4.17.21
+ query-string: 7.1.3
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ react-error-boundary: 4.1.2(react@19.2.0)
+ react-hook-form: 7.67.0(react@19.2.0)
+ react-is: 19.2.0
+ react-router: 6.30.2(react@19.2.0)
+ react-router-dom: 6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+
+ ra-i18n-polyglot@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0):
+ dependencies:
+ node-polyglot: 2.6.0
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ transitivePeerDependencies:
+ - '@tanstack/react-query'
+ - react
+ - react-dom
+ - react-hook-form
+ - react-router
+ - react-router-dom
+
+ ra-input-rich-text@5.13.2(@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0))(ra-ui-materialui@5.13.2(41b38527c5fae1288bddedfc3b6c2701))(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ dependencies:
+ '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
+ '@tiptap/extension-color': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/extension-text-style@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)))
+ '@tiptap/extension-highlight': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-image': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-link': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
+ '@tiptap/extension-placeholder': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
+ '@tiptap/extension-text-align': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-text-style': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/extension-underline': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
+ '@tiptap/pm': 2.27.1
+ '@tiptap/react': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@tiptap/starter-kit': 2.27.1
+ clsx: 2.1.1
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-ui-materialui: 5.13.2(41b38527c5fae1288bddedfc3b6c2701)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
+ ra-language-english@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0):
+ dependencies:
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ transitivePeerDependencies:
+ - '@tanstack/react-query'
+ - react
+ - react-dom
+ - react-hook-form
+ - react-router
+ - react-router-dom
+
+ ra-language-french@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0):
+ dependencies:
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ transitivePeerDependencies:
+ - '@tanstack/react-query'
+ - react
+ - react-dom
+ - react-hook-form
+ - react-router
+ - react-router-dom
+
+ ra-ui-materialui@5.13.2(41b38527c5fae1288bddedfc3b6c2701):
+ dependencies:
+ '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.0)
+ '@tanstack/react-query': 5.90.11(react@19.2.0)
+ autosuggest-highlight: 3.3.4
+ clsx: 2.1.1
+ css-mediaquery: 0.1.2
+ csstype: 3.2.3
+ diacritic: 0.0.2
+ dompurify: 3.3.0
+ inflection: 3.0.2
+ jsonexport: 3.2.0
+ lodash: 4.17.21
+ query-string: 7.1.3
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ react-dropzone: 14.3.8(react@19.2.0)
+ react-error-boundary: 4.1.2(react@19.2.0)
+ react-hook-form: 7.67.0(react@19.2.0)
+ react-hotkeys-hook: 5.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ react-is: 19.2.0
+ react-router: 6.30.2(react@19.2.0)
+ react-router-dom: 6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+
+ react-admin@5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0):
+ dependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@tanstack/react-query': 5.90.11(react@19.2.0)
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-i18n-polyglot: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-language-english: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-ui-materialui: 5.13.2(41b38527c5fae1288bddedfc3b6c2701)
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ react-hook-form: 7.67.0(react@19.2.0)
+ react-router: 6.30.2(react@19.2.0)
+ react-router-dom: 6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ transitivePeerDependencies:
+ - '@mui/material-pigment-css'
+ - '@mui/system'
+ - '@mui/utils'
+ - '@types/react'
+ - csstype
+ - react-is
+ - supports-color
+
+ react-dom@19.2.0(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+ scheduler: 0.27.0
+
+ react-dropzone@14.3.8(react@19.2.0):
+ dependencies:
+ attr-accept: 2.2.5
+ file-selector: 2.1.2
+ prop-types: 15.8.1
+ react: 19.2.0
+
+ react-error-boundary@4.1.2(react@19.2.0):
+ dependencies:
+ '@babel/runtime': 7.28.4
+ react: 19.2.0
+
+ react-hook-form@7.67.0(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+
+ react-hotkeys-hook@5.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
+ react-is@16.13.1: {}
+
+ react-is@19.2.0: {}
+
+ react-refresh@0.17.0: {}
+
+ react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ dependencies:
+ '@remix-run/router': 1.23.1
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ react-router: 6.30.2(react@19.2.0)
+
+ react-router@6.30.2(react@19.2.0):
+ dependencies:
+ '@remix-run/router': 1.23.1
+ react: 19.2.0
+
+ react-transition-group@4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ dependencies:
+ '@babel/runtime': 7.28.4
+ dom-helpers: 5.2.1
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+
+ react@19.2.0: {}
+
+ remove-accents@0.4.4: {}
+
+ require-directory@2.1.1: {}
+
+ resolve-from@4.0.0: {}
+
+ resolve-pkg-maps@1.0.0: {}
+
+ resolve@1.22.11:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ rimraf@2.6.3:
+ dependencies:
+ glob: 7.2.3
+
+ rollup-preserve-directives@1.1.3(rollup@4.53.3):
+ dependencies:
+ magic-string: 0.30.21
+ rollup: 4.53.3
+
+ rollup@4.53.3:
+ dependencies:
+ '@types/estree': 1.0.8
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.53.3
+ '@rollup/rollup-android-arm64': 4.53.3
+ '@rollup/rollup-darwin-arm64': 4.53.3
+ '@rollup/rollup-darwin-x64': 4.53.3
+ '@rollup/rollup-freebsd-arm64': 4.53.3
+ '@rollup/rollup-freebsd-x64': 4.53.3
+ '@rollup/rollup-linux-arm-gnueabihf': 4.53.3
+ '@rollup/rollup-linux-arm-musleabihf': 4.53.3
+ '@rollup/rollup-linux-arm64-gnu': 4.53.3
+ '@rollup/rollup-linux-arm64-musl': 4.53.3
+ '@rollup/rollup-linux-loong64-gnu': 4.53.3
+ '@rollup/rollup-linux-ppc64-gnu': 4.53.3
+ '@rollup/rollup-linux-riscv64-gnu': 4.53.3
+ '@rollup/rollup-linux-riscv64-musl': 4.53.3
+ '@rollup/rollup-linux-s390x-gnu': 4.53.3
+ '@rollup/rollup-linux-x64-gnu': 4.53.3
+ '@rollup/rollup-linux-x64-musl': 4.53.3
+ '@rollup/rollup-openharmony-arm64': 4.53.3
+ '@rollup/rollup-win32-arm64-msvc': 4.53.3
+ '@rollup/rollup-win32-ia32-msvc': 4.53.3
+ '@rollup/rollup-win32-x64-gnu': 4.53.3
+ '@rollup/rollup-win32-x64-msvc': 4.53.3
+ fsevents: 2.3.3
+
+ rope-sequence@1.3.4: {}
+
+ scheduler@0.27.0: {}
+
+ semver@6.3.1: {}
+
+ set-function-length@1.2.2:
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+
+ source-map-explorer@2.5.3:
+ dependencies:
+ btoa: 1.2.1
+ chalk: 4.1.2
+ convert-source-map: 1.9.0
+ ejs: 3.1.10
+ escape-html: 1.0.3
+ glob: 7.2.3
+ gzip-size: 6.0.0
+ lodash: 4.17.21
+ open: 7.4.2
+ source-map: 0.7.6
+ temp: 0.9.4
+ yargs: 16.2.0
+
+ source-map-js@1.2.1: {}
+
+ source-map@0.5.7: {}
+
+ source-map@0.7.6: {}
+
+ split-on-first@1.1.0: {}
+
+ split-on-first@3.0.0: {}
+
+ strict-uri-encode@2.0.0: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ stylis@4.2.0: {}
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ temp@0.9.4:
+ dependencies:
+ mkdirp: 0.5.6
+ rimraf: 2.6.3
+
+ tinyglobby@0.2.15:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+
+ tippy.js@6.3.7:
+ dependencies:
+ '@popperjs/core': 2.11.8
+
+ tslib@2.3.0: {}
+
+ tslib@2.8.1: {}
+
+ tsx@4.21.0:
+ dependencies:
+ esbuild: 0.27.0
+ get-tsconfig: 4.13.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ typescript@5.9.3: {}
+
+ uc.micro@2.1.0: {}
+
+ undici-types@6.21.0: {}
+
+ update-browserslist-db@1.1.4(browserslist@4.28.0):
+ dependencies:
+ browserslist: 4.28.0
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ use-sync-external-store@1.6.0(react@19.2.0):
+ dependencies:
+ react: 19.2.0
+
+ vite@6.4.1(@types/node@20.19.25)(tsx@4.21.0):
+ dependencies:
+ esbuild: 0.25.12
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.53.3
+ tinyglobby: 0.2.15
+ optionalDependencies:
+ '@types/node': 20.19.25
+ fsevents: 2.3.3
+ tsx: 4.21.0
+
+ w3c-keyname@2.2.8: {}
+
+ warning@4.0.3:
+ dependencies:
+ loose-envify: 1.4.0
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrappy@1.0.2: {}
+
+ y18n@5.0.8: {}
+
+ yallist@3.1.1: {}
+
+ yaml@1.10.2: {}
+
+ yargs-parser@20.2.9: {}
+
+ yargs@16.2.0:
+ dependencies:
+ cliui: 7.0.4
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 20.2.9
+
+ zrender@5.6.1:
+ dependencies:
+ tslib: 2.3.0
diff --git a/react/react-admin/setup.ts b/react/react-admin/setup.ts
index a4a2a13..446d17e 100644
--- a/react/react-admin/setup.ts
+++ b/react/react-admin/setup.ts
@@ -15,26 +15,26 @@ const MAX_ERRORS = 5;
const forceSeed = process.argv.includes("--force");
-dotenv.config({ path: path.resolve(process.cwd(), ".env.local") });
+dotenv.config({ path: path.resolve(process.cwd(), ".env") });
-if (!process.env.APPWRITE_SITE_API_ENDPOINT) {
+if (!process.env.VITE_APPWRITE_ENDPOINT) {
throw new Error(
- "APPWRITE_SITE_API_ENDPOINT environment variable is not set."
+ "VITE_APPWRITE_ENDPOINT environment variable is not set."
);
}
-if (!process.env.APPWRITE_SITE_PROJECT_ID) {
- throw new Error("APPWRITE_SITE_PROJECT_ID environment variable is not set.");
+if (!process.env.VITE_APPWRITE_PROJECT_ID) {
+ throw new Error("VITE_APPWRITE_PROJECT_ID environment variable is not set.");
}
-if (!process.env.APPWRITE_SITE_STANDARD_KEY) {
+if (!process.env.APPWRITE_API_KEY) {
throw new Error(
- "APPWRITE_SITE_STANDARD_KEY environment variable is not set."
+ "APPWRITE_API_KEY environment variable is not set."
);
}
const client = new appwrite.Client()
- .setEndpoint(process.env.APPWRITE_SITE_API_ENDPOINT)
- .setProject(process.env.APPWRITE_SITE_PROJECT_ID)
- .setKey(process.env.APPWRITE_SITE_STANDARD_KEY);
+ .setEndpoint(process.env.VITE_APPWRITE_ENDPOINT)
+ .setProject(process.env.VITE_APPWRITE_PROJECT_ID)
+ .setKey(process.env.APPWRITE_API_KEY);
const users = new appwrite.Users(client);
@@ -67,14 +67,14 @@ await users.create(
"John Doe"
);
-const databases = new appwrite.Databases(client);
+const tablesDB = new appwrite.TablesDB(client);
-const result = await databases.list([Query.equal("name", ["admin"])]);
+const result = await tablesDB.list([Query.equal("name", ["admin"])]);
if (result.total > 0) {
if (forceSeed) {
console.log('Database "admin" already exists. Deleting database...');
- await databases.delete("admin");
+ await tablesDB.delete("admin");
} else {
console.log('Database "admin" already exists. Use --force to recreate it.');
console.log("Exiting.");
@@ -83,9 +83,9 @@ if (result.total > 0) {
}
console.log('Creating database "admin"...');
-await databases.create("admin", "admin");
+await tablesDB.create("admin", "admin");
-const collections = [
+const tables = [
"baskets",
"orders",
"customers",
@@ -94,9 +94,9 @@ const collections = [
"invoices",
"reviews",
] as const;
-type CollectionName = (typeof collections)[number];
+type TableName = (typeof tables)[number];
-type Attribute = {
+type Column = {
key: string;
type: "string" | "integer" | "float" | "boolean" | "date";
size?: number;
@@ -104,7 +104,7 @@ type Attribute = {
array?: boolean;
};
-const collectionTypes: Record = {
+const tableSchemas: Record = {
baskets: [
{ key: "product_id", type: "integer" },
{ key: "quantity", type: "integer" },
@@ -187,9 +187,9 @@ const collectionTypes: Record = {
],
};
-for (const collectionName of collections) {
- console.log(`Creating collection "${collectionName}"...`);
- await databases.createCollection("admin", collectionName, collectionName, [
+for (const tableName of tables) {
+ console.log(`Creating table "${tableName}"...`);
+ await tablesDB.createTable("admin", tableName, tableName, [
Permission.read(Role.users()),
Permission.write(Role.users()),
Permission.update(Role.users()),
@@ -197,75 +197,76 @@ for (const collectionName of collections) {
]);
}
-for (const [collectionName, attributes] of Object.entries(collectionTypes)) {
- console.log(`Creating attributes for collection "${collectionName}"...`);
- for (const attribute of attributes) {
- switch (attribute.type) {
+for (const [tableName, columns] of Object.entries(tableSchemas)) {
+ console.log(`Creating columns for table "${tableName}"...`);
+ for (const column of columns) {
+ switch (column.type) {
case "string":
- await databases.createStringAttribute(
+ await tablesDB.createStringColumn(
"admin",
- collectionName,
- attribute.key,
- attribute.size || 255,
- attribute.required || false,
+ tableName,
+ column.key,
+ column.size || 255,
+ column.required || false,
undefined,
- attribute.array || false
+ column.array || false
);
break;
case "integer":
- await databases.createIntegerAttribute(
+ await tablesDB.createIntegerColumn(
"admin",
- collectionName,
- attribute.key,
- attribute.required || false,
+ tableName,
+ column.key,
+ column.required || false,
undefined,
undefined,
undefined,
- attribute.array || false
+ column.array || false
);
break;
case "float":
- await databases.createFloatAttribute(
+ await tablesDB.createFloatColumn(
"admin",
- collectionName,
- attribute.key,
- attribute.required || false,
+ tableName,
+ column.key,
+ column.required || false,
undefined,
undefined,
undefined,
- attribute.array || false
+ column.array || false
);
break;
case "boolean":
- await databases.createBooleanAttribute(
+ await tablesDB.createBooleanColumn(
"admin",
- collectionName,
- attribute.key,
- attribute.required || false,
+ tableName,
+ column.key,
+ column.required || false,
undefined,
- attribute.array || false
+ column.array || false
);
break;
case "date":
- await databases.createDatetimeAttribute(
+ await tablesDB.createDatetimeColumn(
"admin",
- collectionName,
- attribute.key,
- attribute.required || false,
+ tableName,
+ column.key,
+ column.required || false,
undefined,
- attribute.array || false
+ column.array || false
);
break;
default:
- throw new Error(`Unknown attribute type: ${attribute.type}`);
+ throw new Error(`Unknown column type: ${column.type}`);
}
}
}
-// Special case for basket
-await databases.createRelationshipAttribute(
+// Special case for basket - create relationship between orders and baskets
+console.log('Creating relationship between orders and baskets...');
+await tablesDB.createRelationshipColumn(
"admin", // databaseId
- "orders", // collectionId
- "baskets", // relatedCollectionId
+ "orders", // tableId
+ "baskets", // relatedTableId
RelationshipType.OneToMany, // type
false, // twoWay (optional)
"basket", // key (optional)
@@ -274,24 +275,23 @@ await databases.createRelationshipAttribute(
);
console.log("Generating data...");
-// @ts-expect-error - Dunno why this is necessary, but the import is not recognized
-const data = generateData.default();
+const data = generateData();
// FIXME - Give 10 seconds for the schema to be updated
// Don't know why this is necessary, but yeah...
await new Promise((resolve) => setTimeout(resolve, 10000));
let errors = 0;
-for (const collectionName of collections) {
- if (collectionName === "baskets") {
+for (const tableName of tables) {
+ if (tableName === "baskets") {
continue;
}
- console.log(`Inserting data into collection "${collectionName}"...`);
- for (const item of data[collectionName]) {
+ console.log(`Inserting data into table "${tableName}"...`);
+ for (const item of data[tableName]) {
try {
- await databases.createDocument(
+ await tablesDB.createRow(
"admin",
- collectionName,
+ tableName,
// FIXME: createDocument considers 0 to be an invalid ID
item.id ? item.id.toString() : ID.unique(),
item,
@@ -304,7 +304,7 @@ for (const collectionName of collections) {
);
} catch (error) {
console.error(
- `Error inserting item into collection "${collectionName}":`,
+ `Error inserting item into table "${tableName}":`,
{ error, item }
);
errors++;
@@ -316,4 +316,4 @@ for (const collectionName of collections) {
}
}
-console.log("Database setup completed successfully.");
+console.log("TablesDB setup completed successfully.");
diff --git a/react/react-admin/src/App.tsx b/react/react-admin/src/App.tsx
index 5c49c5f..1dacb8a 100644
--- a/react/react-admin/src/App.tsx
+++ b/react/react-admin/src/App.tsx
@@ -30,7 +30,14 @@ client
const dataProvider = appWriteDataProvider({
client,
databaseId: import.meta.env.VITE_APPWRITE_DATABASE_ID,
- collectionIds: JSON.parse(import.meta.env.VITE_APPWRITE_COLLECTION_IDS),
+ collectionIds: {
+ reviews: import.meta.env.VITE_APPWRITE_TABLE_REVIEWS,
+ invoices: import.meta.env.VITE_APPWRITE_TABLE_INVOICES,
+ orders: import.meta.env.VITE_APPWRITE_TABLE_ORDERS,
+ products: import.meta.env.VITE_APPWRITE_TABLE_PRODUCTS,
+ categories: import.meta.env.VITE_APPWRITE_TABLE_CATEGORIES,
+ customers: import.meta.env.VITE_APPWRITE_TABLE_CUSTOMERS,
+ },
});
const authProvider = appWriteAuthProvider({ client });
diff --git a/react/react-admin/src/categories/LinkToRelatedProducts.tsx b/react/react-admin/src/categories/LinkToRelatedProducts.tsx
index bf502f5..09cadc2 100644
--- a/react/react-admin/src/categories/LinkToRelatedProducts.tsx
+++ b/react/react-admin/src/categories/LinkToRelatedProducts.tsx
@@ -2,7 +2,7 @@ import * as React from 'react';
import Button from '@mui/material/Button';
import { Link } from 'react-router-dom';
import { useTranslate, useRecordContext } from 'react-admin';
-import { stringify } from 'query-string';
+import queryString from 'query-string';
import products from '../products';
import { Category } from '../types';
@@ -18,7 +18,7 @@ const LinkToRelatedProducts = () => {
component={Link}
to={{
pathname: '/products',
- search: stringify({
+ search: queryString.stringify({
filter: JSON.stringify({ category_id: record.id }),
}),
}}
diff --git a/react/react-admin/src/dashboard/PendingReviews.tsx b/react/react-admin/src/dashboard/PendingReviews.tsx
index 5c14517..572712b 100644
--- a/react/react-admin/src/dashboard/PendingReviews.tsx
+++ b/react/react-admin/src/dashboard/PendingReviews.tsx
@@ -20,7 +20,7 @@ import {
useIsDataLoaded,
} from 'react-admin';
-import { stringify } from 'query-string';
+import queryString from 'query-string';
import CardWithIcon from './CardWithIcon';
import StarRatingField from '../reviews/StarRatingField';
@@ -52,7 +52,7 @@ const PendingReviews = () => {
{
const translate = useTranslate();
return (
-
- Hint: john.doe@marmelab.com / changeme
-
{
component={Link}
to={{
pathname: '/customers',
- search: stringify({
+ search: queryString.stringify({
filter: JSON.stringify({ groups: segment }),
}),
}}
From d5e179fa0d67136f3f7d1a9133e74e1bf01744a1 Mon Sep 17 00:00:00 2001
From: Aditya Oberai
Date: Wed, 3 Dec 2025 15:37:48 +0000
Subject: [PATCH 6/8] remove lint script from package.json
---
react/react-admin/package.json | 1 -
1 file changed, 1 deletion(-)
diff --git a/react/react-admin/package.json b/react/react-admin/package.json
index 2ccb62c..ca4e446 100644
--- a/react/react-admin/package.json
+++ b/react/react-admin/package.json
@@ -46,7 +46,6 @@
"serve": "vite preview --port 8000",
"build": "vite build",
"test": "vite test",
- "lint": "eslint --fix ./src",
"db-seed": "tsx setup.ts"
}
}
From ee8637daef77cc05a376da6a3d044ed966068aea Mon Sep 17 00:00:00 2001
From: Aditya Oberai
Date: Wed, 3 Dec 2025 21:36:08 +0000
Subject: [PATCH 7/8] Update React and React DOM package versions
---
react/formspree/package-lock.json | 32 ++--
react/formspree/package.json | 4 +-
react/react-admin/package.json | 4 +-
react/react-admin/pnpm-lock.yaml | 292 +++++++++++++++---------------
4 files changed, 166 insertions(+), 166 deletions(-)
diff --git a/react/formspree/package-lock.json b/react/formspree/package-lock.json
index b96e331..ed40e13 100644
--- a/react/formspree/package-lock.json
+++ b/react/formspree/package-lock.json
@@ -9,8 +9,8 @@
"version": "0.0.0",
"dependencies": {
"@formspree/react": "^3.0.0",
- "react": "^19.0.0",
- "react-dom": "^19.0.0"
+ "react": "^19.0.1",
+ "react-dom": "^19.0.1"
},
"devDependencies": {
"@eslint/js": "^9.22.0",
@@ -1309,9 +1309,9 @@
]
},
"node_modules/@stripe/react-stripe-js": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-3.6.0.tgz",
- "integrity": "sha512-zEnaUmTOsu7zhl3RWbZ0l1dRiad+QIbcAYzQfF+yYelURJowhAwesRHKWH+qGAIBEpkO6/VCLFHhVLH9DtPlnw==",
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-3.10.0.tgz",
+ "integrity": "sha512-UPqHZwMwDzGSax0ZI7XlxR3tZSpgIiZdk3CiwjbTK978phwR/fFXeAXQcN/h8wTAjR4ZIAzdlI9DbOqJhuJdeg==",
"dependencies": {
"prop-types": "^15.7.2"
},
@@ -3353,22 +3353,22 @@
]
},
"node_modules/react": {
- "version": "19.1.0",
- "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
- "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
+ "version": "19.0.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.0.1.tgz",
+ "integrity": "sha512-nVRaZCuEyvu69sWrkdwjP6QY57C+lY+uMNNMyWUFJb9Z/JlaBOQus7mSMfGYsblv7R691u6SSJA/dX9IRnyyLQ==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
- "version": "19.1.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
- "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
+ "version": "19.0.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.1.tgz",
+ "integrity": "sha512-3TJg51HSbJiLVYCS6vWwWsyqoS36aGEOCmtLLHxROlSZZ5Bk10xpxHFbrCu4DdqgR85DDc9Vucxqhai3g2xjtA==",
"dependencies": {
- "scheduler": "^0.26.0"
+ "scheduler": "^0.25.0"
},
"peerDependencies": {
- "react": "^19.1.0"
+ "react": "^19.0.1"
}
},
"node_modules/react-is": {
@@ -3520,9 +3520,9 @@
}
},
"node_modules/scheduler": {
- "version": "0.26.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
- "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz",
+ "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="
},
"node_modules/semver": {
"version": "6.3.1",
diff --git a/react/formspree/package.json b/react/formspree/package.json
index cc73063..fed522e 100644
--- a/react/formspree/package.json
+++ b/react/formspree/package.json
@@ -11,8 +11,8 @@
},
"dependencies": {
"@formspree/react": "^3.0.0",
- "react": "^19.0.0",
- "react-dom": "^19.0.0"
+ "react": "^19.0.1",
+ "react-dom": "^19.0.1"
},
"devDependencies": {
"@eslint/js": "^9.22.0",
diff --git a/react/react-admin/package.json b/react/react-admin/package.json
index ca4e446..498f160 100644
--- a/react/react-admin/package.json
+++ b/react/react-admin/package.json
@@ -21,9 +21,9 @@
"ra-language-english": "^5.8.0",
"ra-language-french": "^5.8.0",
"ra-ui-materialui": "^5.8.0",
- "react": "^19.0.0",
+ "react": "^19.2.1",
"react-admin": "^5.8.0",
- "react-dom": "^19.0.0",
+ "react-dom": "^19.2.1",
"react-router": "^6.30.1",
"react-router-dom": "^6.30.1"
},
diff --git a/react/react-admin/pnpm-lock.yaml b/react/react-admin/pnpm-lock.yaml
index cd0e411..12e9d8c 100644
--- a/react/react-admin/pnpm-lock.yaml
+++ b/react/react-admin/pnpm-lock.yaml
@@ -10,10 +10,10 @@ importers:
dependencies:
'@mui/icons-material':
specifier: ^7.1.1
- version: 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ version: 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
'@mui/material':
specifier: ^7.1.1
- version: 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
appwrite:
specifier: ^17.0.2
version: 17.0.2
@@ -22,7 +22,7 @@ importers:
version: 2.1.1
data-generator-retail:
specifier: ^5.0.0
- version: 5.13.2(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0))
+ version: 5.13.2(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1))
date-fns:
specifier: ^3.6.0
version: 3.6.0
@@ -40,40 +40,40 @@ importers:
version: 9.3.1
ra-appwrite:
specifier: ^1.0.0
- version: 1.1.0(react-admin@5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0))
+ version: 1.1.0(react-admin@5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.1(react@19.2.1))(react-is@19.2.0)(react@19.2.1))
ra-core:
specifier: ^5.8.0
- version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
ra-i18n-polyglot:
specifier: ^5.8.0
- version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
ra-input-rich-text:
specifier: ^5.8.0
- version: 5.13.2(@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0))(ra-ui-materialui@5.13.2(41b38527c5fae1288bddedfc3b6c2701))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 5.13.2(@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1))(ra-ui-materialui@5.13.2(038083acd2c037c8d05b80e3005ddc67))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
ra-language-english:
specifier: ^5.8.0
- version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
ra-language-french:
specifier: ^5.8.0
- version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ version: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
ra-ui-materialui:
specifier: ^5.8.0
- version: 5.13.2(41b38527c5fae1288bddedfc3b6c2701)
+ version: 5.13.2(038083acd2c037c8d05b80e3005ddc67)
react:
- specifier: ^19.0.0
- version: 19.2.0
+ specifier: ^19.2.1
+ version: 19.2.1
react-admin:
specifier: ^5.8.0
- version: 5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)
+ version: 5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.1(react@19.2.1))(react-is@19.2.0)(react@19.2.1)
react-dom:
- specifier: ^19.0.0
- version: 19.2.0(react@19.2.0)
+ specifier: ^19.2.1
+ version: 19.2.1(react@19.2.1)
react-router:
specifier: ^6.30.1
- version: 6.30.2(react@19.2.0)
+ version: 6.30.2(react@19.2.1)
react-router-dom:
specifier: ^6.30.1
- version: 6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ version: 6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
devDependencies:
'@types/faker':
specifier: ~5.1.7
@@ -1662,10 +1662,10 @@ packages:
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
- react-dom@19.2.0:
- resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==}
+ react-dom@19.2.1:
+ resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==}
peerDependencies:
- react: ^19.2.0
+ react: ^19.2.1
react-dropzone@14.3.8:
resolution: {integrity: sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==}
@@ -1719,8 +1719,8 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
- react@19.2.0:
- resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==}
+ react@19.2.1:
+ resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==}
engines: {node: '>=0.10.0'}
remove-accents@0.4.4:
@@ -2086,17 +2086,17 @@ snapshots:
'@emotion/memoize@0.9.0': {}
- '@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0)':
+ '@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
'@emotion/cache': 11.14.0
'@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.1)
'@emotion/utils': 1.4.2
'@emotion/weak-memoize': 0.4.0
hoist-non-react-statics: 3.3.2
- react: 19.2.0
+ react: 19.2.1
optionalDependencies:
'@types/react': 19.2.7
transitivePeerDependencies:
@@ -2112,16 +2112,16 @@ snapshots:
'@emotion/sheet@1.4.0': {}
- '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
+ '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
'@emotion/is-prop-valid': 1.4.0
- '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.1)
'@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.1)
'@emotion/utils': 1.4.2
- react: 19.2.0
+ react: 19.2.1
optionalDependencies:
'@types/react': 19.2.7
transitivePeerDependencies:
@@ -2129,9 +2129,9 @@ snapshots:
'@emotion/unitless@0.10.0': {}
- '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.0)':
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.1)':
dependencies:
- react: 19.2.0
+ react: 19.2.1
'@emotion/utils@1.4.2': {}
@@ -2316,45 +2316,45 @@ snapshots:
'@mui/core-downloads-tracker@7.3.6': {}
- '@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
+ '@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- react: 19.2.0
+ '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ react: 19.2.1
optionalDependencies:
'@types/react': 19.2.7
- '@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.4
'@mui/core-downloads-tracker': 7.3.6
- '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
'@mui/types': 7.4.9(@types/react@19.2.7)
- '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.0)
+ '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.1)
'@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.12(@types/react@19.2.7)
clsx: 2.1.1
csstype: 3.2.3
prop-types: 15.8.1
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
react-is: 19.2.0
- react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ react-transition-group: 4.4.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.1)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
'@types/react': 19.2.7
- '@mui/private-theming@7.3.6(@types/react@19.2.7)(react@19.2.0)':
+ '@mui/private-theming@7.3.6(@types/react@19.2.7)(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.0)
+ '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.1)
prop-types: 15.8.1
- react: 19.2.0
+ react: 19.2.1
optionalDependencies:
'@types/react': 19.2.7
- '@mui/styled-engine@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(react@19.2.0)':
+ '@mui/styled-engine@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.4
'@emotion/cache': 11.14.0
@@ -2362,25 +2362,25 @@ snapshots:
'@emotion/sheet': 1.4.0
csstype: 3.2.3
prop-types: 15.8.1
- react: 19.2.0
+ react: 19.2.1
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.1)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
- '@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
+ '@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/private-theming': 7.3.6(@types/react@19.2.7)(react@19.2.0)
- '@mui/styled-engine': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(react@19.2.0)
+ '@mui/private-theming': 7.3.6(@types/react@19.2.7)(react@19.2.1)
+ '@mui/styled-engine': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(react@19.2.1)
'@mui/types': 7.4.9(@types/react@19.2.7)
- '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.0)
+ '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.1)
clsx: 2.1.1
csstype: 3.2.3
prop-types: 15.8.1
- react: 19.2.0
+ react: 19.2.1
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.1)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
'@types/react': 19.2.7
'@mui/types@7.4.9(@types/react@19.2.7)':
@@ -2389,14 +2389,14 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.7
- '@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0)':
+ '@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.4
'@mui/types': 7.4.9(@types/react@19.2.7)
'@types/prop-types': 15.7.15
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.2.0
+ react: 19.2.1
react-is: 19.2.0
optionalDependencies:
'@types/react': 19.2.7
@@ -2477,10 +2477,10 @@ snapshots:
'@tanstack/query-core@5.90.11': {}
- '@tanstack/react-query@5.90.11(react@19.2.0)':
+ '@tanstack/react-query@5.90.11(react@19.2.1)':
dependencies:
'@tanstack/query-core': 5.90.11
- react: 19.2.0
+ react: 19.2.1
'@tiptap/core@2.27.1(@tiptap/pm@2.27.1)':
dependencies:
@@ -2632,7 +2632,7 @@ snapshots:
prosemirror-transform: 1.10.5
prosemirror-view: 1.41.4
- '@tiptap/react@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
+ '@tiptap/react@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
'@tiptap/extension-bubble-menu': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)
@@ -2640,9 +2640,9 @@ snapshots:
'@tiptap/pm': 2.27.1
'@types/use-sync-external-store': 0.0.6
fast-deep-equal: 3.1.3
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- use-sync-external-store: 1.6.0(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ use-sync-external-store: 1.6.0(react@19.2.1)
'@tiptap/starter-kit@2.27.1':
dependencies:
@@ -2846,11 +2846,11 @@ snapshots:
csstype@3.2.3: {}
- data-generator-retail@5.13.2(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)):
+ data-generator-retail@5.13.2(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)):
dependencies:
'@faker-js/faker': 10.1.0
date-fns: 3.6.0
- ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
date-fns@3.6.0: {}
@@ -3358,33 +3358,33 @@ snapshots:
filter-obj: 5.1.0
split-on-first: 3.0.0
- ra-appwrite@1.1.0(react-admin@5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)):
+ ra-appwrite@1.1.0(react-admin@5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.1(react@19.2.1))(react-is@19.2.0)(react@19.2.1)):
dependencies:
appwrite: 17.0.2
lodash: 4.17.21
- react-admin: 5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)
+ react-admin: 5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.1(react@19.2.1))(react-is@19.2.0)(react@19.2.1)
- ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0):
+ ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1):
dependencies:
- '@tanstack/react-query': 5.90.11(react@19.2.0)
+ '@tanstack/react-query': 5.90.11(react@19.2.1)
date-fns: 3.6.0
eventemitter3: 5.0.1
inflection: 3.0.2
jsonexport: 3.2.0
lodash: 4.17.21
query-string: 7.1.3
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- react-error-boundary: 4.1.2(react@19.2.0)
- react-hook-form: 7.67.0(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ react-error-boundary: 4.1.2(react@19.2.1)
+ react-hook-form: 7.67.0(react@19.2.1)
react-is: 19.2.0
- react-router: 6.30.2(react@19.2.0)
- react-router-dom: 6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ react-router: 6.30.2(react@19.2.1)
+ react-router-dom: 6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
- ra-i18n-polyglot@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0):
+ ra-i18n-polyglot@5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1):
dependencies:
node-polyglot: 2.6.0
- ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
transitivePeerDependencies:
- '@tanstack/react-query'
- react
@@ -3393,10 +3393,10 @@ snapshots:
- react-router
- react-router-dom
- ra-input-rich-text@5.13.2(@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0))(ra-ui-materialui@5.13.2(41b38527c5fae1288bddedfc3b6c2701))(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ ra-input-rich-text@5.13.2(@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(ra-core@5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1))(ra-ui-materialui@5.13.2(038083acd2c037c8d05b80e3005ddc67))(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
- '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
+ '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@tiptap/core': 2.27.1(@tiptap/pm@2.27.1)
'@tiptap/extension-color': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/extension-text-style@2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1)))
'@tiptap/extension-highlight': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
@@ -3407,17 +3407,17 @@ snapshots:
'@tiptap/extension-text-style': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
'@tiptap/extension-underline': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))
'@tiptap/pm': 2.27.1
- '@tiptap/react': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ '@tiptap/react': 2.27.1(@tiptap/core@2.27.1(@tiptap/pm@2.27.1))(@tiptap/pm@2.27.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@tiptap/starter-kit': 2.27.1
clsx: 2.1.1
- ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
- ra-ui-materialui: 5.13.2(41b38527c5fae1288bddedfc3b6c2701)
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
+ ra-ui-materialui: 5.13.2(038083acd2c037c8d05b80e3005ddc67)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- ra-language-english@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0):
+ ra-language-english@5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1):
dependencies:
- ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
transitivePeerDependencies:
- '@tanstack/react-query'
- react
@@ -3426,9 +3426,9 @@ snapshots:
- react-router
- react-router-dom
- ra-language-french@5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0):
+ ra-language-french@5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1):
dependencies:
- ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
transitivePeerDependencies:
- '@tanstack/react-query'
- react
@@ -3437,13 +3437,13 @@ snapshots:
- react-router
- react-router-dom
- ra-ui-materialui@5.13.2(41b38527c5fae1288bddedfc3b6c2701):
+ ra-ui-materialui@5.13.2(038083acd2c037c8d05b80e3005ddc67):
dependencies:
- '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
- '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
- '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.0)
- '@tanstack/react-query': 5.90.11(react@19.2.0)
+ '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
+ '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
+ '@mui/utils': 7.3.6(@types/react@19.2.7)(react@19.2.1)
+ '@tanstack/react-query': 5.90.11(react@19.2.1)
autosuggest-highlight: 3.3.4
clsx: 2.1.1
css-mediaquery: 0.1.2
@@ -3454,34 +3454,34 @@ snapshots:
jsonexport: 3.2.0
lodash: 4.17.21
query-string: 7.1.3
- ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- react-dropzone: 14.3.8(react@19.2.0)
- react-error-boundary: 4.1.2(react@19.2.0)
- react-hook-form: 7.67.0(react@19.2.0)
- react-hotkeys-hook: 5.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ react-dropzone: 14.3.8(react@19.2.1)
+ react-error-boundary: 4.1.2(react@19.2.1)
+ react-hook-form: 7.67.0(react@19.2.1)
+ react-hotkeys-hook: 5.2.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react-is: 19.2.0
- react-router: 6.30.2(react@19.2.0)
- react-router-dom: 6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
-
- react-admin@5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0):
- dependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
- '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
- '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@tanstack/react-query': 5.90.11(react@19.2.0)
- ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
- ra-i18n-polyglot: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
- ra-language-english: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-hook-form@7.67.0(react@19.2.0))(react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-router@6.30.2(react@19.2.0))(react@19.2.0)
- ra-ui-materialui: 5.13.2(41b38527c5fae1288bddedfc3b6c2701)
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- react-hook-form: 7.67.0(react@19.2.0)
- react-router: 6.30.2(react@19.2.0)
- react-router-dom: 6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ react-router: 6.30.2(react@19.2.1)
+ react-router-dom: 6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ react-transition-group: 4.4.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+
+ react-admin@5.13.2(@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@mui/utils@7.3.6(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(csstype@3.2.3)(react-dom@19.2.1(react@19.2.1))(react-is@19.2.0)(react@19.2.1):
+ dependencies:
+ '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.1)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
+ '@mui/icons-material': 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(@types/react@19.2.7)(react@19.2.1)
+ '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react@19.2.1))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@tanstack/react-query': 5.90.11(react@19.2.1)
+ ra-core: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
+ ra-i18n-polyglot: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
+ ra-language-english: 5.13.2(@tanstack/react-query@5.90.11(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react-hook-form@7.67.0(react@19.2.1))(react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-router@6.30.2(react@19.2.1))(react@19.2.1)
+ ra-ui-materialui: 5.13.2(038083acd2c037c8d05b80e3005ddc67)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ react-hook-form: 7.67.0(react@19.2.1)
+ react-router: 6.30.2(react@19.2.1)
+ react-router-dom: 6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
transitivePeerDependencies:
- '@mui/material-pigment-css'
- '@mui/system'
@@ -3491,31 +3491,31 @@ snapshots:
- react-is
- supports-color
- react-dom@19.2.0(react@19.2.0):
+ react-dom@19.2.1(react@19.2.1):
dependencies:
- react: 19.2.0
+ react: 19.2.1
scheduler: 0.27.0
- react-dropzone@14.3.8(react@19.2.0):
+ react-dropzone@14.3.8(react@19.2.1):
dependencies:
attr-accept: 2.2.5
file-selector: 2.1.2
prop-types: 15.8.1
- react: 19.2.0
+ react: 19.2.1
- react-error-boundary@4.1.2(react@19.2.0):
+ react-error-boundary@4.1.2(react@19.2.1):
dependencies:
'@babel/runtime': 7.28.4
- react: 19.2.0
+ react: 19.2.1
- react-hook-form@7.67.0(react@19.2.0):
+ react-hook-form@7.67.0(react@19.2.1):
dependencies:
- react: 19.2.0
+ react: 19.2.1
- react-hotkeys-hook@5.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ react-hotkeys-hook@5.2.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
react-is@16.13.1: {}
@@ -3523,28 +3523,28 @@ snapshots:
react-refresh@0.17.0: {}
- react-router-dom@6.30.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ react-router-dom@6.30.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
'@remix-run/router': 1.23.1
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- react-router: 6.30.2(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ react-router: 6.30.2(react@19.2.1)
- react-router@6.30.2(react@19.2.0):
+ react-router@6.30.2(react@19.2.1):
dependencies:
'@remix-run/router': 1.23.1
- react: 19.2.0
+ react: 19.2.1
- react-transition-group@4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ react-transition-group@4.4.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
'@babel/runtime': 7.28.4
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- react@19.2.0: {}
+ react@19.2.1: {}
remove-accents@0.4.4: {}
@@ -3694,9 +3694,9 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
- use-sync-external-store@1.6.0(react@19.2.0):
+ use-sync-external-store@1.6.0(react@19.2.1):
dependencies:
- react: 19.2.0
+ react: 19.2.1
vite@6.4.1(@types/node@20.19.25)(tsx@4.21.0):
dependencies:
From b1956ed61dbfce6878a6b25946862a78ec7be1b6 Mon Sep 17 00:00:00 2001
From: Aditya Oberai
Date: Thu, 4 Dec 2025 03:18:28 +0530
Subject: [PATCH 8/8] Change package manager instructions to pnpm
Updated installation and script commands to use pnpm instead of npm or yarn.
---
react/react-admin/README.md | 32 ++++++++++++++------------------
1 file changed, 14 insertions(+), 18 deletions(-)
diff --git a/react/react-admin/README.md b/react/react-admin/README.md
index 3fc1d11..07b8573 100644
--- a/react/react-admin/README.md
+++ b/react/react-admin/README.md
@@ -26,9 +26,7 @@ Before you begin, ensure you have the following installed:
2. Install dependencies:
```bash
- npm install
- # or
- yarn install
+ pnpm install
```
3. Configure environment variables:
@@ -51,14 +49,12 @@ Before you begin, ensure you have the following installed:
4. Seed the database:
This command will create the necessary database, tables, and a demo user (`john.doe@marmelab.com`, password: `changeme`).
```bash
- npm run db-seed
+ pnpm run db-seed
```
5. Start the development server:
```bash
- npm run start
- # or
- yarn start
+ pnpm run start
```
Your admin panel will be available at `http://localhost:8000`.
@@ -72,12 +68,12 @@ The following environment variables are required:
| VITE_APPWRITE_ENDPOINT | Your Appwrite project endpoint. | `https://cloud.appwrite.io/v1` |
| VITE_APPWRITE_PROJECT_ID | Your Appwrite project ID. | `60b8...` |
| VITE_APPWRITE_DATABASE_ID | Database ID (default: admin). | `admin` |
-| VITE_APPWRITE_COLLECTION_REVIEWS | Collection ID for reviews table. | `reviews` |
-| VITE_APPWRITE_COLLECTION_INVOICES | Collection ID for invoices table. | `invoices` |
-| VITE_APPWRITE_COLLECTION_ORDERS | Collection ID for orders table. | `orders` |
-| VITE_APPWRITE_COLLECTION_PRODUCTS | Collection ID for products table. | `products` |
-| VITE_APPWRITE_COLLECTION_CATEGORIES | Collection ID for categories table. | `categories` |
-| VITE_APPWRITE_COLLECTION_CUSTOMERS | Collection ID for customers table. | `customers` |
+| VITE_APPWRITE_TABLE_REVIEWS | Table ID for reviews table. | `reviews` |
+| VITE_APPWRITE_TABLE_INVOICES | Table ID for invoices table. | `invoices` |
+| VITE_APPWRITE_TABLE_ORDERS | Table ID for orders table. | `orders` |
+| VITE_APPWRITE_TABLE_PRODUCTS | Table ID for products table. | `products` |
+| VITE_APPWRITE_TABLE_CATEGORIES | Table ID for categories table. | `categories` |
+| VITE_APPWRITE_TABLE_CUSTOMERS | Table ID for customers table. | `customers` |
| APPWRITE_API_KEY | Your Appwrite API key (for seeding only). | `a0b1...` |
@@ -106,11 +102,11 @@ react-admin/
## Available Scripts
-- `npm run start` - Start development server at `http://localhost:8000`
-- `npm run serve` - Preview production build
-- `npm run build` - Build for production
-- `npm run lint` - Run ESLint
-- `npm run db-seed` - Seed the Appwrite database
+- `pnpm run start` - Start development server at `http://localhost:8000`
+- `pnpm run serve` - Preview production build
+- `pnpm run build` - Build for production
+- `pnpm run lint` - Run ESLint
+- `pnpm run db-seed` - Seed the Appwrite database
## Contributing