diff --git a/.env.example b/.env.example index 7cd14939..d32c9ff9 100644 --- a/.env.example +++ b/.env.example @@ -1,14 +1,17 @@ -# Build-Time -NEXT_PUBLIC_APP_URL=https://localhost:3000 -NEXT_PUBLIC_GA_MEASUREMENT_ID=G-XXXXXXXXXX +GA_MEASUREMENT_ID=G-XXXXXXXXXX +STRIPE_PUBLIC_KEY=pk_test_example -# Build/Run-Time DATABASE_URL=postgresql://user:1234@localhost:5432/payload PAYLOAD_SECRET=secret_key PAYLOAD_USER_PASS=test_password123 ACTIONS_IMPORT_SECRET=secret_import_key -# Run-Time +CRATER_GRAPHQL_URL=https://api.example.com/graphql + +SERVER_URL=http://localhost:3000 +SCULPTOR_URL=http://localhost:3001 +SCULPTOR_LOGIN_URL=http://localhost:3001/redirect + SMTP_HOST=smtp.example.com SMTP_PORT=587 SMTP_USER=your-smtp-user diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75b98b2f..550ec79a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,8 +17,7 @@ jobs: env: PAYLOAD_SECRET: build-secret DATABASE_URL: postgresql://postgres:postgres@localhost:5432/payload - NEXT_PUBLIC_APP_URL: https://codezero.build - NEXT_PUBLIC_GA_MEASUREMENT_ID: G-55EJVGDCLZ + SERVER_URL: https://codezero.build steps: - uses: actions/checkout@v7 diff --git a/.gitignore b/.gitignore index f7ae2487..75ee78c1 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ npm-debug.log* yarn-debug.log* yarn-error.log* +.next-dev-*.log # local env files .env*.local diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..f65444bb --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,62 @@ +# Project Instructions + +These instructions apply to the entire repository. + +## Billing and Payment Service + +Crater is the billing service used by this project. Before changing any code +related to billing, customers, authentication sessions, checkout, discounts, +taxes, subscriptions, invoices, or licenses, read `docs/crater.md` completely. +Treat that document as the primary project-level summary of the Crater API and +domain model. + +If more detail is required, consult the source documentation referenced by +`docs/crater.md`, especially the GraphQL schema documentation and database ERD. +Do not infer undocumented fields, mutation arguments, authentication headers, +or response shapes. + +## Crater Integration Rules + +- Access Crater through its GraphQL API using the Apollo client in + `src/lib/apolloClient.ts`. +- Keep Crater requests on the server unless a task explicitly requires + client-side access and exposing that access is known to be safe. +- Keep API URLs, tokens, session credentials, Stripe secrets, and other + sensitive values in environment variables. Never hard-code or commit them. +- Use the Crater user session produced by `usersLogin` where an authenticated + operation requires it. A Sagittarius token is an input to login, not a + substitute for assumptions about Crater session authentication. +- Use the exact GraphQL types, argument names, nullability, and response fields + documented by Crater. +- Handle both transport-level GraphQL errors and the non-null `errors` field + returned by mutation payloads. +- Preserve and surface documented Crater error codes where useful. Do not + reduce all domain failures to a generic checkout error. +- Send monetary amounts as integers in the smallest currency unit. Do not use + floating-point values for amounts transferred to Crater. +- Treat checkout tax quotes as non-binding previews. +- For `checkoutCreateSession`, use either a regular plan checkout or a custom + checkout configuration as documented. Do not combine their semantics. +- Only send `namespaceId` for cloud deployments. +- Use the checkout redirect URL returned by Crater. Do not recreate Crater's + Stripe Checkout Session directly in this application unless the architecture + is explicitly changed. +- Do not duplicate subscription, invoice, license, or Stripe webhook state that + is owned by Crater without a documented application requirement. +- Avoid sharing cached customer or payment data between requests. Use + `no-cache` for sensitive or request-specific Apollo operations when + appropriate. + +## Implementation and Verification + +- Keep GraphQL operations close to the relevant billing integration code and + give operations descriptive names. +- Add explicit TypeScript types for operation variables and relevant response + data unless generated GraphQL types are available. +- Validate required environment variables and return safe errors that do not + expose credentials or sensitive payment information. +- After changing TypeScript code, run `npm run typecheck`. +- Add or update focused tests when changing billing calculations, request + mapping, error handling, or checkout behavior. +- Do not modify generated Payload files or migrations unless the requested + change requires a schema or database change. diff --git a/docs/checkout-testing.md b/docs/checkout-testing.md new file mode 100644 index 00000000..fe42e236 --- /dev/null +++ b/docs/checkout-testing.md @@ -0,0 +1,38 @@ +# Checkout testing + +Run the automated checkout suite first: + +```sh +npm run test:checkout +``` + +The automated suite covers B2C and B2B customer payloads, required contact and tax fields, incomplete and complete Stripe billing addresses, successful and failed confirmation results, discount session replacement, return identifiers, component remounts, and API error rendering. + +## Stripe sandbox verification + +Use only Stripe sandbox keys and synthetic test data. Start the application with a sandbox Crater instance and complete each scenario through the real Stripe Elements UI. + +For every scenario, verify that the browser returns to the localized `/checkout/success?session_id=cs_...` URL, the success page accepts the return identifier, and access is not granted until Crater processes the verified Stripe webhook. + +| Scenario | Test data and expected result | +| --- | --- | +| B2C card | Use card `4242 4242 4242 4242`, any future expiry, any CVC, and a complete billing address. Confirmation succeeds and returns to the success page. | +| B2B card | Enter company contact data and a sandbox-valid tax ID, then use card `4242 4242 4242 4242`. The Customer and resulting subscription retain the business customer type. | +| Incomplete address | Leave a required Stripe address field empty. The Payment Element and Payment step remain unavailable. | +| Completed address | Complete all required address fields. The Payment Element appears and the stepper advances to Payment. | +| 3D Secure | Use card `4000 0000 0000 3220`, complete the sandbox authentication challenge, and verify the return to the success page. Repeat once by failing the challenge and verify that no success or entitlement is produced. | +| Redirect method | Enable a redirect-based sandbox payment method such as iDEAL for the Stripe account, authorize it on Stripe's test page, and verify the return URL. Repeat its failure path. | +| Discount | Apply the configured sandbox promotion code before payment. Change and remove it after Elements loads and verify that a new Checkout Session is mounted with the updated total each time. | +| Reload | Reload before confirmation. The local form safely restarts and does not display an unverified success state. | +| Decline | Use card `4000 0000 0000 9995` and verify that Stripe's error is shown without advancing to success. | + +Finally, verify in Stripe and Crater that the completed Checkout Session, webhook event, subscription projection, and license state all reference the same customer and checkout configuration. +# Guest checkout isolation + +The login choice is always displayed, including for signed-in self-hosted buyers. Guest creation never replaces the account session. Each purchase gets a random `guestCheckout` URL identifier and its own encrypted HttpOnly browser-session cookie. The identifier is not a credential. The existing `PAYLOAD_SECRET` seals the cookie; it must be configured and consistent across application instances. + +Guest checkout access has an absolute 24-hour deadline, even if the browser restores session cookies. Requests select the purchase explicitly, so account pages and other tabs retain their own identity. Missing or expired guest credentials never fall back to account credentials. Guest form drafts use sessionStorage, and contain no credentials. + +On Crater's verified `READY` response, the cookie loses its profile claim and checkout permissions. For at most another 30 minutes (bounded by the original deadline), it permits only the purchase confirmation and download of the returned license. Reloading does not extend this deadline. A `FAILED` checkout clears the guest cookie; expired cookies are cleared on the next request. Starting another guest purchase also removes expired or unreadable guest cookies and keeps at most five purchases per browser, dropping the oldest, so repeated attempts cannot overflow the Cookie header. No guest is automatically linked to the signed-in account, and the guest confirmation does not link to that account's license dashboard. Profile claiming/account linking remains a separate explicit flow. + +Manual checks: keep an account dashboard open, purchase as a guest in another tab, reload checkout, complete a redirect-based payment, download the license, and verify that the original dashboard still uses the account. Repeat with two guest purchases in separate tabs and with an expired guest cookie. diff --git a/docs/crater.md b/docs/crater.md new file mode 100644 index 00000000..fb96242a --- /dev/null +++ b/docs/crater.md @@ -0,0 +1,1218 @@ +# Crater - Summary + +## Overview + +Crater is the project's billing service. It provides a GraphQL API and connects the customer, user and session, Stripe checkout, discount and tax, subscription, invoice, and license domains. + +The source documentation consists of: + +- the [GraphQL schema documentation](docs/graphql/index.md) +- the [database ERD](docs/erd/database-erd.pdf) + +## The schema + +The current branch uses a consolidated migration baseline: twelve migrations from `20261002100000_create_users.rb` through `20261002100011_create_good_jobs.rb` replace the previous incremental history. `db/structure.sql` is the current schema dump. + +The baseline omits `licenses.seats`, `licenses.runtime_minutes`, and `licenses.status`, and includes a separate `payment_methods` table for cached display details. The subscription keeps `cancel_at`, `stripe_schedule_id`, and the `pending_*` columns. Migration `20261008120000_add_stripe_created_at_to_subscriptions.rb` adds nullable `stripe_created_at`, projected from Stripe's subscription creation timestamp to anchor the immediate-cancellation deadline. Existing rows fall back to their local `created_at` until a Stripe projection supplies that timestamp. `custom_checkout_configurations` and the invoice Lexware columns still exist in the database; their presence does not make them public GraphQL fields. + +## Domain model + +### Core relationships + +The ERD describes the following relationships: + +- A `Customer` has an address and is associated with invoices, subscriptions, and users. +- `Customer` and `User` are connected through `CustomerUser`. +- A `User` has `UserSession` records. +- An `Invoice` consists of `InvoiceItem` entries and points at the `Subscription` it was issued for. +- A `Subscription` forms the basis of a `License`. +- `ProcessedWebhookEvent` separately records incoming Stripe webhook events and uses a unique Stripe event ID to prevent duplicate processing. + +### Customer and address + +`Customer` represents a billing customer. The data model contains: + +- customer type +- name, email, and optional phone number +- Stripe customer ID +- Stripe tax ID +- a separate association of cached Stripe payment method display details + +The GraphQL API additionally returns a global ID and creation and update timestamps. + +`CustomerAddress`, `CustomerAddressCreateInput`, and `CustomerAddressUpdateInput` contain: + +- `line1` and `line2` +- `city` +- `state` +- `postalCode` +- `country` as a country code + +`taxIdType` and `taxIdValue` are optional, including for business customers, because Stripe Checkout can collect a tax ID through its `TaxIdElement`. When one of them is supplied, the other is required as well; a half-filled pair returns `INVALID_CUSTOMER`. A tax ID supplied up front is registered on the Stripe Customer immediately, and one collected during checkout is synced back from the completed session. + +`customersCreate` requires `customerType`, `name`, `email`, and `address`. Every field of `CustomerAddressCreateInput`, including `line2` and `state`, is required by the GraphQL schema. `phone` and the tax ID pair are optional. `customersUpdate` uses `CustomerAddressUpdateInput`, whose fields are all optional, so an update can change a single address field. Address changes persist through the autosaved customer association. + +The columns themselves stay nullable, and `email` and `name` are still nullable in the GraphQL `Customer` type. Stripe Checkout collects contact and billing details of its own through `ContactDetailsElement` and `BillingAddressElement`, and Crater syncs those back from the completed session -- a sync that fills fields in, never blanks them out. + +### Users and sessions + +`User` exposes a global ID, timestamps, customer and session connections. An admin flag and unique `sagittarius_id` remain in the model; they are not fields on the current GraphQL User type. Sessions are returned as a paginated `UserSessionConnection`. + +A `UserSession` contains: + +- a global session ID +- an `active` status, which is derived rather than stored +- an `expiresAt` time +- the associated user +- timestamps +- a session token, which is only returned when the session is created + +Login is now integrated with Sagittarius: + +1. An authenticated Sagittarius client obtains a dedicated Crater login token through the Sagittarius `usersCreateCraterToken` mutation. +2. The client passes that value to Crater's anonymous `usersLogin` mutation as `sagittariusToken`. +3. Crater calls Sagittarius's `/graphql` endpoint with `Authorization: Crater-Login ` and resolves `currentUser { id }`. +4. Crater finds or creates its local user by the returned Sagittarius ID and creates a fresh `UserSession` with a server-set expiry. + +A blank or rejected token returns `INVALID_SAGITTARIUS_TOKEN`. Connectivity problems, unexpected HTTP responses, or GraphQL errors from Sagittarius return `SAGITTARIUS_UNAVAILABLE`. Failure to persist the local user returns `INVALID_USER`. + +Session lists follow the GraphQL connection model with `nodes`, `edges`, cursors, a total count, and `pageInfo`. + +#### Guest users + +Clients can start with an email address before the user has a complete Sagittarius profile. `usersCreateGuestUser` can be called without a Crater session, as the only top-level selection in its GraphQL operation. + +1. Call `usersCreateGuestUser(input: { email })`. Crater creates the guest in Sagittarius using its server-side service credential, finds or creates the local user by `sagittarius_id`, and creates a Crater session. +2. Store `userSession.token` and use it with `Authorization: Session ` for protected Crater operations. The session token is returned only when the session is created. +3. Sagittarius sends the claim token by email; the user follows that email flow to complete their profile through Sagittarius. Cygnus does not need to request, store, or use the returned `claimToken` in its frontend. The field remains available in the API, but it is not a Crater session token. Crater exposes no `usersCompleteGuestProfile` mutation, and checkout does not require the frontend to complete the profile first. + +Guest creation does not create a Customer. The returned Crater session can be used for the separate customer and checkout mutations. + +```graphql +mutation CreateGuest($email: String!) { + usersCreateGuestUser(input: { email: $email }) { + userSession { + token + expiresAt + user { + id + } + } + errors { + errorCode + } + } +} +``` + +Guest creation returns `INVALID_EMAIL` for a blank email, `GUEST_USER_CREATION_FAILED` when Sagittarius rejects the request or cannot complete it, and `INVALID_USER` if the local user cannot be persisted. The Sagittarius client requests both message and ActiveModel validation details. Service authorization uses a signed `Crater ` with `sagittarius.jwt_secret` and a configurable lifetime; `Crater::Jwt.decode` rejects expired tokens and tokens without a usable `exp` claim. + +#### The session lifecycle + +A session is usable while it is **neither revoked nor expired**. There is no stored `active` flag: a flag cannot express an expiry that passes on its own, and would drift out of sync with it. `UserSession#active?` and the `UserSession.active` scope both derive the answer from two columns: + +| Column | Meaning | +| ------------ | -------------------------------------------------------------------------------------- | +| `expires_at` | Not null. Set by the server when the session is created; a client cannot influence it. | +| `revoked_at` | Set by `usersLogout`. Null while the session has not been revoked. | + +`session.lifetime_hours` (default `168`, seven days) is the absolute lifetime a new session receives. There is no refresh, no sliding window, and no rotation, so this value is the only bound on how long a stolen token remains useful; seven days keeps re-authentication through Sagittarius infrequent without leaving a token valid for months. Shortening it takes effect for newly created sessions only. + +Authentication resolves a token through `UserSession.active.find_by(token: ...)`, so **a revoked, an expired, and an entirely unknown token all resolve to nothing** and produce the identical HTTP `401 Unauthorized`. Nothing in the response distinguishes them, so no request can probe whether a session exists. + +Tokens are stored with deterministic Active Record encryption (`TokenAttr`), never as plain text, which allows the lookup above without keeping the raw value in the database. The token is returned when login or guest creation creates a session; subsequent reads expose no token. + +#### Logging out + +`usersLogout` revokes the authenticated session or another session owned by the same user: + +- Its optional `id: UserSessionID` selects a session to revoke, for example to sign another device out. Without `id`, it uses the session from the `Authorization` header. `UserSessionPolicy` grants `revoke_session` only to that session's owner. A nonexistent session and another user's session both return `MISSING_PERMISSION` with the same message. +- The payload carries **no session object, no session ID, and no token**, only `errors` and `clientMutationId`. An empty `errors` list is the confirmation. +- From the next request on, the same token is rejected exactly like an unknown one. A second logout with it returns `401`. +- Other sessions of the same user stay active; logging out of one device does not log out the others. +- Revoking is idempotent at the model level and never moves an existing `revoked_at`. +- An anonymous request is answered with HTTP `403 Forbidden` before the resolver runs. A revoked or expired authentication token is answered with `401`. +- Reaching the resolver without a session authentication returns `MISSING_PERMISSION` in the payload `errors`. + +```graphql +mutation UsersLogout($input: UsersLogoutInput!) { + usersLogout(input: $input) { + clientMutationId + errors { + errorCode + details { + __typename + ... on ActiveModelError { + attribute + type + } + ... on MessageError { + message + } + } + } + } +} +``` + +#### Cleaning up sessions + +`Users::CleanupSessionsService` deletes sessions that can no longer authenticate anything: + +- A session is removed once it has been **revoked or expired for longer than `session.retention_hours`** (default `720`, thirty days). The retention keeps a short audit trail before the row disappears. +- Because the cutoff always lies in the past, a still usable session -- not revoked, expiring in the future -- can never match, whatever the retention is set to. That holds even for a retention of zero. +- Deletion runs in batches of `session.cleanup_batch_size` (default `1000`), so a large backlog cannot hold one long transaction or lock open. +- Running it repeatedly is safe; it simply finds less to do. +- Logging is limited to the number deleted and the retention. Tokens, users, and session IDs are never logged. + +`Users::CleanupSessionsJob` runs hourly at minute 42 by default. `config/initializers/good_job.rb` reads the jobs from `Crater::Configuration.config[:cron_jobs]`; `cron_jobs` in `config/crater.yml` can override the defaults: + +```ruby +cleanup_user_sessions: { + cron: '42 * * * *', + class: 'Users::CleanupSessionsJob', + description: 'Removes revoked and expired user sessions once the retention has passed', +} +``` + +It can also be triggered by hand: + +```ruby +Users::CleanupSessionsJob.perform_later # through the queue +Users::CleanupSessionsService.new.execute # inline, for example from a console +Users::CleanupSessionsService.new(retention: 7.days, batch_size: 500).execute +``` + +### Checkout and Stripe + +Crater creates Stripe Checkout Sessions in subscription mode for the current customer. Checkout uses Stripe's embedded Elements/custom UI mode rather than redirecting the customer to a Stripe-hosted Checkout page. A checkout uses the Pro, Max, or dynamic Custom plan. + +The required `customerId` identifies a customer belonging to the authenticated user through `CustomerUser`. There is no automatic customer selection. Creating the session never creates a customer; `customersCreate` must run first if no suitable customer exists. + +A `CheckoutSession` returns: + +- the Stripe session ID +- the client secret used by the frontend to initialize Stripe's embedded checkout +- the expiration time as a Unix timestamp + +Additional checkout features include: + +- selecting the billing period of the customer's type: monthly, quarterly, or yearly, the same for business and personal customers +- the same period rule for Pro, Max, and dynamic custom checkouts alike +- quantity-based AI Token and Workflow Execution line items for dynamic custom checkouts +- enabling promotion codes to be applied and removed through Stripe's frontend Checkout SDK +- supporting the `self_hosted` and `cloud` deployment types +- optionally linking a cloud checkout to a Sagittarius namespace ID +- a required, allowlisted return URL for payment methods that temporarily leave the page +- required billing-address collection +- automatic Stripe Tax +- automatic synchronization of the customer's name and address back to Stripe +- attaching the plan, payment period, resolved quantities, Crater customer ID, deployment type, customer type, optional namespace ID, and optional `referral` to the Stripe subscription metadata + +Stripe Price IDs are resolved exclusively on the server from `checkout.prices`. Since commit `9ab1a2c`, Pro, Max, and each Custom component resolve their Price by deployment type (`cloud` or `self_hosted`), plan or component, customer type, and payment period. Cloud and self-hosted deployments have separate price catalogs. The customer type is always the stored `customerType` of the selected customer, never something the client sends. + +Standard-plan prices are configured at `checkout.prices....`. Custom prices use `checkout.prices..custom._.`, where the component is `ai_token` or `workflow_execution`. For example: + +```yaml +checkout: + prices: + cloud: + pro: + b2b: + monthly: price_cloud_pro_business_monthly + custom: + ai_token_b2b: + monthly: price_cloud_ai_tokens_business_monthly + self_hosted: + pro: + b2b: + monthly: price_selfhosted_pro_business_monthly +``` + +The example values above are placeholders for Stripe Price IDs. Environment overrides use deployment-prefixed names such as `STRIPE_PRICE_CLOUD_PRO_B2B_MONTHLY`, `STRIPE_PRICE_SELF_HOSTED_PRO_B2B_MONTHLY`, and `STRIPE_PRICE_CLOUD_AI_TOKEN_B2B_MONTHLY`. These names are derived from the catalog; the former names without a deployment prefix are no longer read. Existing flat price configuration must be moved under the deployment keys. + +Subscription updates and previews use the same resolver with the subscription's stored deployment type. They cannot switch deployment through an update argument, and the resolver never falls back to another deployment's prices. An unsupported deployment is rejected with `INVALID_CHECKOUT_SELECTION`; a customer-type mismatch is checked within the selected deployment's catalog. + +#### The payment periods of a customer type + +Which periods exist is a property of the **customer type**, not of the plan. It is the same split everywhere -- for Pro, for Max, and for the custom components: + +| Customer type | Payment periods | +| ---------------- | -------------------------------- | +| `business` (B2B) | `monthly`, `quarterly`, `yearly` | +| `personal` (B2C) | `monthly`, `quarterly`, `yearly` | + +`CheckoutPaymentPeriod` offers exactly these three values, and both customer types are billed in the same set. A payment period outside that set is rejected with `INVALID_CHECKOUT_SELECTION` before any Price is looked up, in `checkoutCreateSession`. `Subscription` validates the stored period against its customer's type with the same rule, so a projection can never hold a combination the checkout would refuse. + +**This section applies unchanged to changes of an existing subscription.** `subscriptionsUpdate` and `subscriptionsPreviewUpdate` resolve their target Price through the very same rules: the customer type is the stored `customerType` of the subscription's customer and never something the client sends, that type decides which periods exist at all, and a period outside the set is refused before Stripe is called. A subscription can therefore never be moved into a plan, period, or Price combination a fresh checkout would have rejected. + +A plan or component that is configured for the other customer type only is rejected with `CUSTOMER_TYPE_MISMATCH` rather than falling back to that type's Price; one configured for neither type is a plain `INVALID_CHECKOUT_SELECTION`. + +#### Custom quantity limits + +Custom quantities are selected from fixed packages configured under `checkout.quantity_steps`, per customer type. `Customer.checkoutLimits` exposes the ascending `aiTokens` and `workflowExecutions` arrays as `[Int!]!`; their final entries are the maxima. There is no root `checkoutLimits` query. + +| Customer type | AI Token packages | Workflow Execution packages | +| ------------- | --------------------------------------------------- | ----------------------------------------- | +| `business` | 10,000,000; 100,000,000; 500,000,000; 1,000,000,000 | 100,000; 1,000,000; 5,000,000; 10,000,000 | +| `personal` | 1,000,000; 10,000,000; 50,000,000; 100,000,000 | 10,000; 100,000; 500,000; 1,000,000 | + +A custom checkout requires both quantities, each exactly matching an entry in its customer's configured array. Arbitrary intermediate values are refused with `INVALID_CHECKOUT_SELECTION`. These rules also apply to subscription change planning; the model checks stored non-null quantities against the same package lists. Configuration arrays must be non-empty, ascending arrays of positive signed 32-bit integers. + +Standard plans carry fixed quantities from `checkout.plan_quantities`: Pro defaults to 10,000,000 AI Tokens and 100,000 Workflow Executions; Max defaults to 100,000,000 and 1,000,000. Checkout metadata, subscription projections, and license restrictions carry these quantities too. A supplied standard-plan quantity must equal the configured entitlement; the checkout still has one plan line item with Stripe quantity `1`. + +Monetary amounts are transferred as integers in the smallest currency unit. + +#### Discounts in a checkout + +A discount is applied and validated through Stripe's frontend Checkout SDK. Every Checkout Session Crater creates carries `allow_promotion_codes: true`, so the client calls `checkout.applyPromotionCode(code)` on its existing session and `checkout.removePromotionCode()` to remove it. The client handles Stripe's error result or reads the updated session and totals on success. + +That is why `checkoutCreateSession` has no `promotionCode` argument. A discount entered, removed, and entered again is the same session throughout -- the user does not lose the address, tax ID, or payment details already filled in, and Crater does not create a Stripe session per attempt. Crater consequently never sends `discounts` when creating a session; Stripe rejects `discounts` and `allow_promotion_codes` together, and the client-side flow is the one that survives a change of mind. + +Crater no longer exposes `checkoutValidateDiscount`, `CheckoutDiscount`, or `INVALID_DISCOUNT_CODE`. The frontend uses the result of applying the code to the actual Stripe session. + +### The checkout completion status + +`checkoutCompletionStatus(sessionId: String!)` answers the one question a client has after sending a user into the checkout: did this produce access yet? It exists so that no client -- Cygnus included -- has to guess that from a Stripe redirect, a timestamp, or a customer id it happens to hold. + +**A completed Stripe session is not access.** `session.status = complete` means Stripe accepted the checkout. Access begins with a license appended by the verified `invoice.paid` webhook. The query reports this projection without creating or extending access. + +#### The states + +| State | Meaning | +| --------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `CHECKOUT_PENDING` | The Stripe session is `open`; the user has not finished the checkout. | +| `PAYMENT_PENDING` | The session is `complete` but `payment_status` is `unpaid`. | +| `FULFILLMENT_PENDING` | Stripe considers the session settled (`paid` or `no_payment_required`), but its local subscription or license does not exist yet. | +| `READY` | A license exists for exactly the subscription this session created. `licenseId` names the newest snapshot. | +| `FAILED` | The session `expired` without completing and can no longer lead to access. | + +`no_payment_required` can be settled, but the query still requires a license created by `invoice.paid` before returning `READY`, even for a hundred-percent discount. + +#### What the client may contribute + +Only the Stripe Checkout Session ID. There is no `customerId` argument, no timestamp, and no state the client could influence: + +- `customerId` in the response is what Crater resolved server-side, never what the caller claimed. +- `licenseId` is set in `READY` only, and is `null` in every other state. +- `configuration` and `pricing` are read back from what Crater verified, never from what the client sent; see [the pricing overview](#the-pricing-overview). +- No Stripe customer, subscription, invoice, or payment method IDs are returned. +- GraphQL responses carry `Cache-Control: no-store`, so no proxy or browser holds a stale answer. + +#### What is verified before an answer is given + +The query needs an active `UserSession`; an anonymous request is refused. Beyond that, every one of these must hold, and any single failure produces one identical `INVALID_CHECKOUT_STATUS_SESSION` error: + +- The ID looks like a Stripe Checkout Session ID. A malformed one is refused without calling Stripe at all. +- The session exists, and `mode` is `subscription`. +- `status` is `open`, `complete`, or `expired`. +- The session names a Stripe customer. +- A `complete` session names a subscription, and `session.customer` equals `subscription.customer`. +- `subscription.metadata.crater_customer_id` is present, numeric, and names an existing Crater customer. +- That customer's `stripe_customer_id` is the session's Stripe customer. +- That customer is linked to the authenticated user through `CustomerUser`, checked with the same `CustomerPolicy` used everywhere else. Being an admin grants nothing extra. +- The remaining metadata Crater wrote is internally consistent: customer type, deployment type, and period are known, and a namespace only appears for cloud. Plan and period appear together. Standard plans require both quantity metadata values; the completion reader accepts custom metadata with at least one quantity, although fresh custom checkout creation requires both. A negotiated subscription carries neither plan, period, nor quantities. Where a local subscription exists, its deployment type, plan, and payment period must match the metadata. + +Because a session that does not exist, one belonging to somebody else, and one that contradicts itself are answered identically, the response never reveals which of the three it was. + +#### How `READY` is bound to exactly one subscription + +The local subscription is resolved solely through the Stripe subscription ID of the session, against the unique `index_subscriptions_on_stripe_subscription_id`, and must belong to the resolved customer. `READY` requires a license of **that** subscription; license rows are created only by paid invoices and have no status field: + +- A license of another subscription, even of the same customer, never produces `READY`. +- A license of another customer never produces `READY`. +- No timestamp heuristic and no "any recent license" lookup is involved. +- A missing local subscription or a missing license is `FULFILLMENT_PENDING`, which is the normal state while webhooks are still in flight. + +Licenses stay append-only, and the query writes nothing. Polling it repeatedly is free of side effects and adds no shadow state: it reads the same `Subscription` and `License` projection the dashboard reads. No new metadata key and no migration were needed -- `crater_customer_id` already identifies Crater's own sessions, and the unique index on `stripe_subscription_id` already provides the exact binding. + +Stripe outages are distinguished from domain errors: an unreachable Stripe surfaces as `CHECKOUT_STATUS_UNAVAILABLE`, which a client may retry, while everything above is `INVALID_CHECKOUT_STATUS_SESSION`, which it must not. Both are GraphQL execution errors carrying the code in `extensions.errorCode`. Logging is limited to the Stripe session ID and the error class. + +#### The pricing overview + +A success page has to say what the user just bought and what it cost, and it must not arrive at those figures itself. `pricing` and `configuration` are the authoritative answer, so no client re-derives a total from a price list, a discount percentage, and a tax rate. + +`pricing` is Stripe's own arithmetic, copied verbatim from the verified session: + +| Field | Source on the Checkout Session | +| ---------- | ------------------------------- | +| `currency` | `currency` | +| `subtotal` | `amount_subtotal` | +| `discount` | `total_details.amount_discount` | +| `tax` | `total_details.amount_tax` | +| `total` | `amount_total` | + +Every amount is an integer in the smallest currency unit, the same convention the rest of the API uses. Crater computes none of them and reconciles none of them against each other: it never checks that `subtotal - discount + tax` is `total`, because Stripe's number is the number that was charged. The discount and Stripe Tax are therefore already inside `total`, and a hundred-percent discount is `total: 0` -- a real zero, never `null` and never a dropped block. `discount` and `tax` are `0` when Stripe reports none, so a client can add them to a receipt unconditionally. + +`configuration` is the checkout selection Crater wrote into the subscription metadata when it created the session, read back after the verification above has re-checked it. It is never taken from client arguments: + +| Field | Meaning | +| -------------------------------- | ------------------------------------------------------------------- | +| `customerType` | `BUSINESS` or `PERSONAL`, from the resolved Crater customer | +| `deploymentType` | `SELF_HOSTED` or `CLOUD` | +| `plan` | `PRO`, `MAX`, `CUSTOM`, or `null` for a negotiated subscription | +| `paymentPeriod` | The billed period, or `null` for a negotiated subscription | +| `aiTokens`, `workflowExecutions` | Quantities for Pro, Max, and Custom; null for negotiated selections | + +The metadata is used rather than the `Subscription` projection because it is already there in `FULFILLMENT_PENDING`, where no projection exists yet, and the two agree wherever both exist -- `local_subscription_matches?` refuses the session otherwise. A client polling from `FULFILLMENT_PENDING` to `READY` therefore sees the figures stand still while only the state moves, and the overview does not appear halfway through. + +Both blocks are nullable and follow one rule: **they are set exactly when the session is `complete`**, which is `PAYMENT_PENDING`, `FULFILLMENT_PENDING`, and `READY`. They are `null` in `CHECKOUT_PENDING` and `FAILED`, where the amounts are not final and no verified selection exists. A session that carries no `currency`, `amount_subtotal`, or `amount_total` reports `pricing: null` rather than a guess. + +Nothing here is stored. There is no pricing column, no new projection, and no second copy of a total that could drift from Stripe's; the block is assembled per request from the session that was already fetched, in the same single `retrieve` call. Adding the fields breaks no existing client, because a query that does not select them is answered exactly as before. + +#### The client flow + +```graphql +query CheckoutCompletionStatus($sessionId: String!) { + checkoutCompletionStatus(sessionId: $sessionId) { + state + customerId + licenseId + configuration { + customerType + deploymentType + plan + paymentPeriod + aiTokens + workflowExecutions + } + pricing { + currency + subtotal + discount + tax + total + } + } +} +``` + +Poll while the state is `CHECKOUT_PENDING`, `PAYMENT_PENDING`, or `FULFILLMENT_PENDING`; stop on `READY` and on `FAILED`. Treat only `READY` as access, and use its `licenseId` to load the license. `FULFILLMENT_PENDING` is expected for a short while after a successful checkout and is not an error. + +### Updating the payment method + +`customerPaymentMethodSetupCreate` creates a Stripe SetupIntent and returns its client secret, so the frontend can collect a new payment method with Stripe Elements and have it become the customer's default for future invoices. The checkout stays untouched; this is the path for changing the payment method of a customer that already exists. + +Crater never handles payment data: + +- No card numbers, expiry dates, CVCs, or bank details pass through Crater. There is no payment form of our own, and neither the Sources API, the Tokens API, nor the Cards API is used anywhere. The details go from the browser straight to Stripe. +- The mutation returns the client secret and nothing else. Neither the SetupIntent nor the secret is written to the database, and neither appears in a log line. The secret is a credential and belongs in memory on the client only. +- The payment method itself exists solely in Stripe. Crater records its ID on the customer and nothing else; card and bank details, and which of them is the current default, are read from Stripe where they are needed. + +The SetupIntent is created server-side with the customer's `stripe_customer_id`, `usage: off_session` — the point is charging later invoices without the customer present — and `automatic_payment_methods`, so Stripe offers whatever is enabled in the Dashboard. `payment_method_types` is deliberately never set: adding a payment method is a Dashboard setting, not a deployment. + +Its metadata carries the contract both sides of the flow agree on, defined once in `CustomerPaymentMethodSetup::Metadata`: + +| Key | Value | +| -------------------- | ---------------------------------------------------------------------------------------- | +| `purpose` | `default_payment_method`, which tells our own SetupIntents from those other flows create | +| `crater_customer_id` | the internal ID of the Crater customer the payment method is for | + +Access is the existing membership rule and nothing else: + +- The request needs an active Crater `UserSession`; like every mutation except `usersLogin`, an anonymous request is answered with HTTP `403 Forbidden` before the resolver runs. +- The customer is loaded through `CustomerPolicy`, so the authenticated user must be linked to it through `CustomerUser`. `GlobalPolicy` additionally grants `use_payment_method_setup` to any authenticated user; being an admin grants nothing extra. +- A customer that does not exist, one belonging to somebody else, and one without a `stripe_customer_id` are all answered with `INVALID_PAYMENT_METHOD_SETUP_CUSTOMER` and an identical message, so the response never reveals which of the three it was. +- Stripe failures surface as `INVALID_PAYMENT_METHOD_SETUP_SESSION` with a fixed message. Stripe IDs, API keys, personal data, and Stripe responses never appear in an error. Logging is limited to the internal customer ID and the error class. + +This flow does not touch Stripe Tax: automatic tax calculation and tax registrations are unchanged. + +#### Promoting the payment method + +Confirming the SetupIntent in the browser attaches the payment method to the Stripe customer, but it does not make it the default. That happens in the verified `setup_intent.succeeded` webhook, which runs through the same `ProcessedWebhookEvent` ledger as every other event and is therefore processed exactly once per Stripe event ID. + +`Webhooks::HandleSetupIntentSucceededService` treats the metadata as a client-visible claim rather than as proof, and checks it before changing anything: + +- A SetupIntent whose `purpose` is not `default_payment_method` is not ours. It is ignored and the event is marked processed; other flows create SetupIntents on the same account. +- The named `crater_customer_id` must resolve to a Crater customer, and that customer's `stripe_customer_id` must be the Stripe customer the SetupIntent was created for. A mismatch is refused and logged; the customer the metadata names is never changed on the strength of the metadata alone. +- The SetupIntent must carry a payment method. +- Only then is the payment method written to the Stripe customer's `invoice_settings.default_payment_method`, and its ID recorded on the Crater customer. Nothing else about it is stored. + +Anything inconsistent leaves the event unprocessed, so it stays visible in the ledger instead of being silently accepted, and a Stripe redelivery can run it again. A redelivered event that was already processed is ignored, and setting the same default twice is a no-op in Stripe, so duplicates have no side effects either way. Logging is limited to the internal customer ID and the error class; client secrets and payment method data are never logged. + +#### The client flow + +1. Call `customerPaymentMethodSetupCreate` with the `customerId` and read `session.clientSecret`. +2. Hand the client secret to Stripe Elements. +3. Render the Payment Element. +4. Confirm with `stripe.confirmSetup()`. +5. Pass a `return_url` to `confirmSetup`, so payment methods that authenticate off-site can come back. This URL goes from the browser to Stripe directly and is never sent through Crater, so there is no server-side allowlist for it — restrict it in the frontend. +6. Do not treat the success state as proof that the payment method is the default. `confirmSetup` resolving only means Stripe accepted the setup; the default is set by the `setup_intent.succeeded` webhook, which arrives separately and may lag. +7. Reload the customer data after returning, and read the current state from Stripe rather than from the confirmation result. + +```graphql +mutation CustomerPaymentMethodSetupCreate($input: CustomerPaymentMethodSetupCreateInput!) { + customerPaymentMethodSetupCreate(input: $input) { + session { + clientSecret + } + clientMutationId + errors { + errorCode + details { + __typename + ... on ActiveModelError { + attribute + type + } + ... on MessageError { + message + } + } + } + } +} +``` + +```ts +const { data } = await client.mutate({ + mutation: CustomerPaymentMethodSetupCreate, + variables: { input: { customerId } }, +}) + +const clientSecret = data.customerPaymentMethodSetupCreate.session.clientSecret + +const elements = stripe.elements({ clientSecret }) +elements.create("payment").mount("#payment-element") + +// The return URL is a client-side concern; Crater never sees it. +const { error } = await stripe.confirmSetup({ + elements, + confirmParams: { return_url: "https://app.crater.code0.tech/billing/done" }, +}) +``` + +#### Listing and removing stored payment methods + +`customerPaymentMethodSetupCreate` and the webhook above cover adding a payment method and promoting it to the default. Reading and removing existing methods need no SetupIntent: list IDs on the customer, read a summary with the root `paymentMethod` query, and remove methods through `customersUpdate`. + +`Customer.paymentMethods` returns the Stripe PaymentMethod IDs attached to the customer, including methods other than the default. It reads Stripe on every request and auto-paginates beyond the first 100 entries. A customer without a Stripe customer ID returns an empty list; a Stripe outage produces `PAYMENT_METHOD_UNAVAILABLE`. + +Display details are read with `paymentMethod(paymentMethodId: String!)`, returning `PaymentMethodSummary` with `type`, `brand`, `last4`, `expiresMonth`, and `expiresYear`. The separate `PaymentMethod` model caches these fields and the owning customer by unique Stripe ID. Cache hits require customer membership and make no Stripe call; misses retrieve the method, verify its customer, and cache the summary. `setup_intent.succeeded`, checkout completion, and subscription payment method updates also populate this cache. A detach performed through Crater removes the cached row. There are no `payment_method.attached` or `payment_method.detached` handlers in this branch. + +`customersUpdate` removes them. Its optional `paymentMethods` argument names what the customer **keeps**: every attached payment method absent from the list is detached in Stripe and removed from the cache. An id the customer does not have is nothing to act on, and omitting the argument leaves the methods alone. Collecting a payment method stays with the SetupIntent flow. + +The removal diff is taken against a fresh, auto-paginated Stripe read, so it acts on currently attached methods rather than cached display data. + +A removal is refused with `PAYMENT_METHOD_IN_USE` while the payment method is charged for anything: + +- it is the customer's `invoice_settings.default_payment_method`, or +- it is the `default_payment_method` of one of the customer's non-terminal subscriptions (any status other than `canceled` or `incomplete_expired`, the same set `Subscription::TERMINAL_STRIPE_STATUSES` names elsewhere). + +Both checks read straight from Stripe rather than Crater's local `Subscription` projection, so they hold even where the projection has not caught up yet. The customer-level default is checked first, because it costs one Stripe call and answers the common case without a second one. Freeing a payment method for removal means moving the conflicting default elsewhere first, either with a fresh `customerPaymentMethodSetupCreate` or with the `paymentMethodId` argument of `subscriptionsUpdate` below. + +The reconciliation runs **before** the customer's own fields are written, so a refused removal leaves the whole `customersUpdate` unapplied instead of renaming the customer and then failing. + +Access is the same `CustomerPolicy` membership rule as the rest of this section: reading the list needs `read_customer`, changing it needs `update_customer`. A payment method id that does not exist and one belonging to a different Stripe customer are answered identically with `INVALID_PAYMENT_METHOD`, the same anti-enumeration idiom `INVALID_PAYMENT_METHOD_SETUP_CUSTOMER` already follows for the customer itself: the id is always resolved server-side through `payment_methods.retrieve` and compared against the customer's `stripe_customer_id`, never trusted from the request. + +#### The payment method of a subscription + +`Subscription.paymentMethodId` reads the subscription's own default payment method ID from Stripe on every request. It is `null` if none is set, and a Stripe outage is `PAYMENT_METHOD_UNAVAILABLE`. Display details behind the ID come from `paymentMethod(paymentMethodId:)` and its local cache. The old `subscriptionPaymentMethod` query is removed. + +`subscriptionsUpdate` changes it. Its optional `paymentMethodId` argument points the subscription at one of the customer's **already-stored** payment methods, so no SetupIntent, no client secret, and no round trip through Stripe Elements are involved. Collecting a new payment method stays with `customerPaymentMethodSetupCreate`, which attaches it to the customer; from there any subscription can be pointed at it. + +- Ownership and display details are resolved from a cache entry belonging to the subscription's customer first. On a miss, `payment_methods.retrieve` verifies ownership and populates the cache. A nonexistent payment method and one belonging to another customer both return `INVALID_PAYMENT_METHOD`. The actual subscription default is always updated through Stripe. +- Access is `update_subscription`, the same ability the rest of `subscriptionsUpdate` requires; a subscription that does not exist, one belonging to somebody else, and a terminal one are all `INVALID_SUBSCRIPTION`. +- It applies **immediately**, independently of when the plan half of the same request takes effect: the next invoice has to be charged to the new payment method whether the plan change is prorated now or scheduled for the end of the period. +- It runs before the plan change, so a payment method Stripe refuses leaves the subscription untouched -- no proration, no schedule. +- Supplying only `paymentMethodId` is a valid request: the plan half is then a no-op and costs no Stripe write of its own. +- The subscription's default is not stored locally, so the change is visible through `Subscription.paymentMethodId` on the next read. The display summary is cached separately on the customer. + +#### Checkout return URLs + +The checkout is the only flow whose return URL passes through Crater. `Crater::ReturnUrl` accepts only absolute `http` or `https` URLs whose origin appears in `checkout.allowed_return_origins`; anything relative, scheme-less, or pointing at another origin is rejected before Stripe is called, so no request can make Stripe redirect a user to a host we do not control. + +### Subscriptions, invoices, and licenses + +`Subscription` stores deployment type, Stripe status, unique Stripe subscription ID, optional Sagittarius namespace ID, plan, payment period, and AI Token and Workflow Execution quantities. Standard-plan quantities match `checkout.plan_quantities`; non-null custom quantities match the customer's `checkout.quantity_steps`. The payment period is validated against the customer's available periods. + +It also projects the current billing period (`current_period_start`, `current_period_end`), `cancel_at`, `canceled_at`, and the Stripe schedule ID. The API exposes the cancellation date as `cancelAt`. + +Scheduled changes are mirrored in `pending_plan`, `pending_payment_period`, `pending_ai_tokens`, `pending_workflow_executions`, and `pending_effective_at`, exposed as `Subscription.pendingUpdate`. This lets the dashboard display the future selection without a Stripe read. + +A negotiated subscription is billed on its own Stripe Price and therefore carries no plan, payment period, or quantities. A missing plan is what identifies it, and it is the reason such a subscription is excluded from `subscriptionsUpdate`. + +`Invoice` contains: + +- total, net, and tax amounts +- currency and status +- billing period in the database; it is not exposed on the GraphQL Invoice type +- a unique Stripe invoice ID +- an optional invoice number and Stripe PDF URL +- an optional Stripe fee +- the customer it was billed to and the subscription it was issued for + +The associated `InvoiceItem` entries contain an amount, description, and quantity. + +`Invoice.subscription_id` is a nullable foreign key with an index and `ON DELETE SET NULL`: a customer can hold several subscriptions, so the customer alone does not identify the invoices of one subscription, while Stripe can also issue invoices that belong to no subscription at all. Amounts stay integers in the smallest currency unit everywhere; they are never converted to floats, and the tax is stored exactly as Stripe billed it rather than recalculated. + +Crater defines three transactional invoice emails: + +- invoice finalized +- invoice paid +- invoice payment failed + +They are addressed to the customer's email address. Subjects use the invoice number and fall back to the Stripe invoice ID when no invoice number exists. Both HTML and plain-text variants are present, with previews available through Rails mailer previews. + +The mailer uses complete HTML documents generated by react-email, without a wrapping Rails layout, plus plain-text variants. `invoice.paid` and `invoice.payment_failed` enqueue their respective emails only when recording a previously unseen Stripe invoice (`previously_new_record?`); updating that invoice later does not enqueue another lifecycle email. `finalized` remains a mailer action, with no `invoice.finalized` handler. The payment-method label uses the latest cached summary, and the payment retry link uses the invoice PDF URL because a hosted payment URL is not stored separately. + +`License` describes the usage entitlement resulting from a subscription: + +- global ID +- start and end times +- deployment type +- AI Token and Workflow Execution entitlements +- additional features +- an optional Sagittarius namespace ID for cloud licenses +- grace period, options, and restrictions in the data model +- creation and update timestamps + +Licenses have no status column or GraphQL status field. A row is appended only for `invoice.paid`; payment failures and cancellations produce no license snapshot. `Invoice.status` is the `InvoiceStatus` enum, and `Subscription.status` is the `SubscriptionStatus` enum over the stored Stripe status. + +Self-hosted licenses can be exported as a signed license file. `subscriptionsLinkNamespace` links or transfers a cloud subscription to a Sagittarius namespace. It takes a `SubscriptionID`, returns a `Subscription`, and checks that the namespace is not used by another non-terminal subscription. Crater verifies that the current user administers the target namespace through Sagittarius's `readNamespaceOwnership` ability, using a service JWT impersonating that user. A denied link returns `INVALID_SUBSCRIPTION`; failed verification returns `SAGITTARIUS_UNAVAILABLE`. Checkout with a namespace performs the same ownership check and returns `INVALID_CHECKOUT_NAMESPACE` when denied. + +`Subscriptions::NamespaceLicenseSyncService` provisions the current signed license into Sagittarius and removes superseded remote licenses on renewal, transfer, or cancellation. Linking before the first paid invoice stores the namespace; provisioning follows once a license exists. Reconciliation is idempotent. A sync failure does not roll back the saved link; later lifecycle events retry it. + +#### What a license carries + +`restrictions` and `options` are the two free-form hashes the `code0-license` format hands to the installation running on the license. Crater derives both from the subscription and stores them on the snapshot, so they describe what was in force when that snapshot was appended rather than what the subscription looks like now. + +| Hash | Key | Value | +| -------------- | --------------------- | ------------------------------------------------------- | +| `restrictions` | `ai_tokens` | AI Token entitlement for Pro, Max, and Custom | +| `restrictions` | `workflow_executions` | Workflow Execution entitlement for Pro, Max, and Custom | +| `options` | `payment_period` | `monthly`, `quarterly`, or `yearly` | +| `options` | `customer_type` | `personal` or `business` | +| `options` | `plan` | `PRO`, `MAX`, or `CUSTOM` | + +The keys are snake_case strings, written by `Entitlements` through `stringify_keys`; `Code0::License.load` symbolizes them again on the consuming side. The **plan alone is upper case** -- `PLAN_NAMES` maps Crater's lower-case checkout key onto the spelling the product reads -- while the payment period and the customer type stay the lower-case checkout keys. + +Only keys that have a value are written. Pro and Max include their configured quantity restrictions; negotiated subscriptions carry no quantity restriction, plan, or payment period. + +`restrictions` and `options` are stored JSON hashes used by the signed export; the current GraphQL `License` exposes neither hash. Its flat `aiTokens`, `workflowExecutions`, `plan`, and `paymentPeriod` fields delegate to the owning subscription and therefore show its current selection. Exporting an older snapshot uses its stored hashes and reproduces its historical entitlements. + +#### The license file + +`licensesExport` returns a file produced by `code0-license` 0.4, which includes `grace_period_days` as a separate field alongside the licensee, validity window, restrictions, and options. Each paid snapshot uses the invoice's billing period for `start_date` and `end_date`; grace is not added to `end_date`, so the consuming installation can apply it once. The default grace period is fourteen days and is carried forward from the previous snapshot. + +- The file is signed with the RSA private key loaded from `license.private_key_path`. Without that key the export is refused with `INVALID_LICENSE`; Crater never hands out an unsigned file. +- `Code0::License.encryption_key` is process-wide state that `export` only reads, so Crater sets it exactly once at boot in an initializer. A malformed key fails the boot rather than degrading to unsigned output. +- The payload is wrapped in the gem's own boundary, `-----BEGIN CODE0 LICENSE-----` to `-----END CODE0 LICENSE-----`, and can be written to disk exactly as returned. +- `licensee` names the customer id, name, and email, plus the license and subscription ids so an installation can be matched back in a support case. No payment data and no session data goes into the file. +- Only self-hosted licenses can be exported, and only by a member of the license's customer. + +### Managing an existing subscription + +A logged-in user can change and end the subscriptions of their own customers without going through a new checkout: switch between `pro`, `max`, and `custom` in either direction, raise or lower the `custom` quantities without changing the plan, move to another payment period their customer type is billed in, cancel, and take a cancellation back. + +Every one of these goes through `Subscriptions::ChangePlanner`, which turns "these fields should change" into "this is the exact selection, these are the Stripe items, and this is when it applies". The preview and the execution run the same planner, which is what makes the previewed effective moment the one the update then produces. + +Fields that are not supplied keep their current value. Changing only the interval therefore never resets the quantities the user bought, and changing only a quantity never moves the plan. + +#### When a change takes effect + +This is the rule, and it is the same one in `subscriptionsPreviewUpdate` and `subscriptionsUpdate`: + +| Change | When | Stripe | +| -------------------------------------------------------------- | ------------------------- | ------------------------------------------------------------------- | +| Upgrade: same payment period, higher recurring total | Immediately | `subscriptions.update` with `proration_behavior: create_prorations` | +| Downgrade: same payment period, equal or lower recurring total | End of the current period | Subscription schedule, second phase, `proration_behavior: none` | +| Any change of the payment period | End of the current period | Subscription schedule, second phase, `proration_behavior: none` | + +An upgrade is immediate so the user gets what they are being charged for straight away. A downgrade waits and produces no credit, because refunding the unused remainder would create balances that neither the bookkeeping nor the append-only license chain can represent. An interval change always waits: switching from yearly to monthly halfway through a paid year would credit the rest of that year. + +A total that stays exactly the same counts as a downgrade on purpose. Nothing is owed, so there is no reason to charge or prorate mid-period. + +Totals are only ever compared within one payment period, so the two amounts describe the same span of time. A Price that Stripe reports no usable amount for is treated as "not more expensive", which defers the change instead of charging a proration Crater could not have previewed. + +#### Scheduled changes + +A change that only applies at the end of the period becomes a Stripe subscription schedule with two phases: the phase that is running now, kept exactly as Stripe reports it, and the new selection starting when the current one ends. `end_behavior: release` hands the subscription back afterwards, so Crater is not left managing it through a schedule forever. + +The subscription metadata rides on the future phase, so Stripe's copy of the selection flips at the same moment its items do. This matters because `checkoutCompletionStatus` compares that metadata against the local projection and demands equality of deployment type, plan, and period; writing the new plan into the metadata while the subscription is still billing the old one would break the status of a later checkout session. + +Crater keeps the schedule ID and pending selection locally. `pendingUpdate` contains `plan`, `paymentPeriod`, `aiTokens`, `workflowExecutions`, and `effectiveAt`. Requesting another change releases the old schedule and replaces its pending selection. Cancelling releases it too; an immediate update clears pending fields. A subscription update webhook clears them when the reported current selection matches the pending one. + +#### Consistency and safety + +- The row is locked for the whole exchange with Stripe, so two concurrent requests for the same subscription cannot both reach it. +- Every Stripe write carries an idempotency key derived from the subscription and the exact target selection, so a retried request reuses Stripe's stored answer instead of prorating a second time, while a genuinely different request is still a new one. +- An update that asks for the selection the subscription already has is a successful no-op: no Stripe call, no proration. +- A subscription that is no longer active (`canceled`, `incomplete_expired`) and one carrying no checkout plan are refused with `INVALID_SUBSCRIPTION`. Cancelling a negotiated subscription is still allowed, because no plan catalogue is involved. + +#### What a change does to licenses + +Nothing directly. Licenses stay append-only, and a plan change rewrites no existing snapshot. + +**A change never writes a license, not even an immediate upgrade.** The entitlements of the new plan reach the user through the next `invoice.paid` snapshot, which is the only event that grants paid access. This keeps a single writer for the license chain: a plan the user was upgraded to but has not been invoiced for yet does not silently become an entitlement, and there is no snapshot that would have to be revoked if the proration invoice then fails. + +On cancellation, existing license dates stay unchanged and no canceled snapshot is created. `immediately: true` cancels the Stripe subscription immediately only while `Subscription#immediate_cancellation_available?` is true; outside that window it becomes a period-end cancellation. The deadline is fourteen days after `stripe_created_at`, falling back to the local `created_at` until Stripe's creation timestamp is available. The deadline itself is inclusive; terminal subscriptions (`canceled`, `incomplete_expired`) are never eligible. GraphQL exposes the same calculation through `immediateCancellationAvailable` and `immediateCancellationUntil`, so the frontend can show the option and deadline before submitting a cancellation. The code applies this check to both customer types and makes no separate refund call or consumer-waiver check. + +### Webhook processing + +`ProcessedWebhookEvent` stores: + +- a unique Stripe event ID +- event type +- the complete JSON payload +- an optional processing timestamp + +This allows Crater to track Stripe webhook processing and handle events idempotently. An event is only marked with `processed_at` after its handler completes successfully. + +#### Handled events + +Only these event types are requested from Stripe and accepted by the webhook endpoint; anything else is answered with `200 OK` and discarded without a ledger entry. + +| Event | Handler | Effect | +| --------------------------------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `checkout.session.completed` | `Webhooks::HandleCheckoutSessionCompletedService` | Upserts the subscription projection and syncs contact details, address, and tax ID back to the customer. Grants no access. | +| `invoice.paid` | `Webhooks::HandleInvoicePaidService` | Records the invoice and appends a license for its billing period; enqueues the paid email on first invoice creation. Grants paid access. | +| `invoice.payment_action_required` | `Webhooks::HandleInvoicePaymentActionRequiredService` | Records the invoice as open for payment confirmation; creates no license. | +| `invoice.payment_failed` | `Webhooks::HandleInvoicePaymentFailedService` | Records the invoice and enqueues the failure email on first invoice creation. Creates no license; prior entitlement stays unchanged. | +| `customer.subscription.updated` | `Webhooks::HandleSubscriptionUpdatedService` | Syncs selection, status, cancellation dates, and period bounds; clears a pending change when reached. Creates no license. | +| `customer.subscription.deleted` | `Webhooks::HandleSubscriptionDeletedService` | Sets local Stripe status to `canceled`; changes no license dates and appends no license. | +| `setup_intent.succeeded` | `Webhooks::HandleSetupIntentSucceededService` | Promotes the collected payment method to the Stripe customer's `invoice_settings.default_payment_method` and records its id on the customer. Touches no license or subscription. | +| `payment_method.attached` | `Webhooks::HandlePaymentMethodAttachedService` | Records the payment method on the Crater customer it was attached to. An event for a Stripe customer Crater does not know is accepted and ignored. | +| `payment_method.detached` | `Webhooks::HandlePaymentMethodDetachedService` | Drops the payment method from the customer that held it, resolved through the stored ids because Stripe has already cleared the payload's customer. | + +#### From checkout to license + +1. `checkout.session.completed` creates or updates the `Subscription` and the customer's contact and billing data. No `License` exists yet, so the customer has no paid access. +2. `invoice.paid` grants access by appending a license whose start and end match the paid invoice's service period, with grace carried separately. +3. `invoice.payment_failed` records the failure without appending or changing a license. Existing entitlement can run through its period plus grace. A later paid invoice appends a new license for its own period. +4. `customer.subscription.deleted` marks the subscription canceled without appending a license. Pending changes are cleared by the cancellation mutation or when an update webhook reaches the pending selection, rather than by the deletion handler itself. + +Licenses are append-only: every transition adds a row that carries the previous snapshot's entitlements forward, so the history is never rewritten. Only the newest row of a subscription is in force; the API reflects that and does not hand the raw chain to a dashboard, see [the current snapshot and the history](#the-current-snapshot-and-the-history). + +A plan change is not a step in this chain. `customer.subscription.updated` -- and `subscriptionsUpdate` itself -- writes no snapshot at all, not even for an immediately effective upgrade; the new entitlements arrive with the next `invoice.paid`. Step 2 therefore stays the single place that grants paid access. See [what a change does to licenses](#what-a-change-does-to-licenses). + +The subscription an invoice belongs to is read from `parent.subscription_details.subscription`, since the invoice no longer carries a top level `subscription` field. The paid period comes from the line item periods rather than from `invoice.period_end`, which Stripe documents as the window in which items can be added to the invoice and not as the service period. + +#### Syncing the customer + +`checkout.session.completed` carries the details Stripe collected during the checkout, and it resolves the customer before it touches anything: + +- The Crater customer is read from the `crater_customer_id` the checkout itself wrote into the Stripe subscription metadata. A session created before that metadata existed still resolves through the Stripe customer id. +- The session's Stripe customer must be that Crater customer's `stripe_customer_id`. A mismatch is refused with `INVALID_CUSTOMER` and logged with internal and Stripe ids only, so a session can never overwrite a customer it does not belong to. +- Syncing name, e-mail, phone, billing address, and tax ID happens in one database transaction, so a customer is never left with half of the collected data. +- The sync fills fields in and never blanks them out, so a redelivered event changes nothing. +- If the customer or the subscription processing fails, the service returns an error and the event is not marked as processed, so Stripe's redelivery can run it again. + +#### Keeping the subscription projection current + +`customer.subscription.updated` is the event that reports every plan, quantity, and interval change, as well as a cancellation being set or taken back. Without it the projection would only ever be correct until the first change, and `checkoutCompletionStatus` would start refusing sessions whose metadata had moved on. It covers changes Crater itself made through `subscriptionsUpdate` and changes somebody made in the Stripe dashboard alike. + +- The selection is read from the Stripe **metadata**, not from the line items. The metadata is what Crater writes on every change and what `checkoutCompletionStatus` compares the projection against, so the two cannot drift apart. A payload carrying no `plan` key at all -- a negotiated subscription, or one from before that metadata existed -- leaves the stored selection untouched instead of erasing it. +- `cancel_at` and `canceled_at` are always written, including as `null`, because resuming must remove the cancellation. Status and period bounds are written only when present. +- Period bounds prefer subscription-level values when present; otherwise they span the subscription items. +- The webhook clears the schedule ID and pending fields when the reported selection matches the pending selection. It does not otherwise copy the payload's `schedule` into the local pointer. +- A payload the projection would refuse -- a period the customer's type is not billed in, for instance -- returns an error, so the event stays unprocessed and Stripe's redelivery can run it again. +- Like the license-relevant events it can arrive before `checkout.session.completed` created the projection. A missing local subscription is treated as temporary and retried with the same polynomial backoff. + +#### The local invoice projection + +Both invoice events keep Crater's own copy of the Stripe invoice up to date through `Invoices::UpsertService`, which is keyed by the unique Stripe invoice ID and therefore idempotent. `Webhooks::BaseInvoiceEventService` maps the payload onto the record and always sets `subscription_id` to the subscription the event names, so a redelivery or a later `invoice.paid` for the same invoice keeps the relation correct. Number, PDF URL, currency, status, total, and tax are taken from the payload as they are; the tax is read from `total_taxes` and from the legacy `tax` field, and is never recomputed. The billing period comes from the line item periods and falls back to the invoice level `period_start` and `period_end` when a payload carries no line periods. A payload that lacks what an `Invoice` requires is skipped rather than stored half-filled. + +Recording the invoice deliberately cannot fail the event: paid access is driven by the license snapshot alone, so a bookkeeping problem is logged and the license lifecycle proceeds unchanged. This projection is also the only source the license dashboard reads invoices from, so a dashboard request never queries Stripe. + +Stripe does not guarantee webhook delivery order. Invoice and subscription events can arrive before checkout completion creates the local projection. Missing subscriptions are retried with polynomial backoff, up to five attempts. Once the subscription exists, processing continues; only a paid invoice appends a license. + +#### Idempotency and failures + +`ProcessedWebhookEvent` is keyed by the unique Stripe event ID, so a redelivered event is never processed twice. Redelivery of an already processed event is ignored, while redelivery of an existing unprocessed event schedules processing again. A failure inside `Licenses::UpsertService` leaves the event unprocessed. + +Retries for a missing subscription are limited. If the subscription is still unavailable after all attempts, the event remains unprocessed so that a later Stripe redelivery can schedule it again. Retry exhaustion is logged with structured identifiers only: the event type, handler service, and Stripe subscription ID. Complete Stripe payloads and sensitive customer data are never logged. + +Application services use `Crater::Database::Transactional` for explicit transactions. Its `rollback_and_return!` propagates nested rollback results to the outer helper. The custom RuboCop rule flags raw `ActiveRecord::Base.transaction` calls outside the helper; row-lock transactions remain part of webhook processing and subscription mutation handling. + +## GraphQL API + +### Entry point + +All queries start at the root `Query` type. The currently documented query fields are: + +| Query | Argument | Return type | Purpose | +| -------------------------- | -------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `currentUser` | none | `User` | Returns the user authenticated by the current Crater session, or `null` when the request is anonymous. | +| `echo` | `message: String!` | `String!` | Verifies read access to the API and returns the supplied message. | +| `subscriptionPrices` | none | `[CheckoutPrice!]!` | Returns active recurring Stripe prices and can be queried anonymously. | +| `checkoutPackages` | none | `CheckoutPackages!` | Returns configured custom quantity steps for both customer types and fixed Pro/Max quantities; anonymous. | +| `checkoutCompletionStatus` | `sessionId: String!` | `CheckoutCompletionStatus!` | Reports how far one Stripe Checkout Session has progressed towards licensed access. Requires an active session. | +| `paymentMethod` | `paymentMethodId: String!` | `PaymentMethodSummary` | Reads authorized cached payment method display details, fetching Stripe on a cache miss. | + +There are no root `license`, `customer`, `subscription`, or `checkoutLimits` lookup fields. `checkoutPackages` is the customer-independent catalogue query; resource reads start from `currentUser` and its customer/subscription connections. + +#### Checkout packages + +`checkoutPackages` reads the configured checkout catalogue directly and requires neither a customer nor an authenticated session. It returns: + +- `quantitySteps`: one entry for each customer type (`BUSINESS` and `PERSONAL`), with ascending `aiTokens` and `workflowExecutions` choices for Custom plans. The last value in each list is its maximum. +- `planQuantities`: the fixed included `aiTokens` and `workflowExecutions` for the standard `PRO` and `MAX` plans. + +This lets a frontend show package choices and plan inclusions before creating a customer. `Customer.checkoutLimits` remains available for customer-scoped checkout flows and returns the quantity steps for that customer's type only. + +```graphql +query CheckoutPackages { + checkoutPackages { + quantitySteps { + customerType + aiTokens + workflowExecutions + } + planQuantities { + plan + aiTokens + workflowExecutions + } + } +} +``` + +#### License dashboard + +`currentUser` is the entry point for the read-only dashboard. It exposes only data the authenticated user is a member of: + +- `User.customers` is a `CustomerConnection!` over the customers linked through `CustomerUser`. Customers of other users never appear. +- `Customer.licenses` is removed. Read subscriptions and each subscription's `currentLicense` to obtain the newest snapshot. +- `License.invoices` is an `InvoiceConnection!` over the invoices of the license's subscription. A license without invoices returns an empty connection rather than `null`. +- `Customer.subscriptions` is a `SubscriptionConnection!` over the customer's subscriptions, ordered by `updated_at DESC` and then `id DESC` like the licenses. It is what the subscription mutations address, and a customer without subscriptions returns an empty connection rather than `null`. +- `License.subscription` is the way back from a license to the subscription it is a snapshot of, so a dashboard that lists licenses can offer the change and cancel actions without a second round trip. + +All connections use the standard cursor pagination arguments (`first`, `after`, `last`, `before`) and expose `count`. + +#### The Subscription type + +`License` alone cannot carry this: licenses are append-only snapshots, several of them belong to the same subscription, and none of them can express "cancelled as of 30 September" or "moving to Max on 1 October". `Subscription` is the addressable thing the mutations take and the state the UI renders. + +| Field | Type | Meaning | +| ---------------------------------------- | --------------------------- | --------------------------------------------------------------------------------------------- | +| `id` | `SubscriptionID!` | Global ID, the argument every subscription mutation takes | +| `status` | `SubscriptionStatus!` | Typed Stripe lifecycle status | +| `plan` | `CheckoutPlan` | `PRO`, `MAX`, or `CUSTOM`; `null` for a negotiated subscription | +| `paymentPeriod` | `CheckoutPaymentPeriod` | The period it is billed in; `null` for a negotiated subscription | +| `deploymentType` | `DeploymentType!` | `SELF_HOSTED` or `CLOUD` | +| `namespace` | `Namespace` | Linked Sagittarius namespace projection; null when unlinked or unavailable | +| `immediateCancellationAvailable` | `Boolean!` | Whether immediate cancellation is available now; false for terminal subscriptions | +| `immediateCancellationUntil` | `Time!` | Inclusive deadline: Stripe creation time (local creation time as fallback) plus fourteen days | +| `aiTokens`, `workflowExecutions` | `Int` | Fixed standard-plan or selected custom quantities; null for negotiated subscriptions | +| `currentPeriodStart`, `currentPeriodEnd` | `Time` | The billing period Stripe reports | +| `cancelAt` | `Time` | Stripe cancellation date; null while no cancellation is pending | +| `paymentMethodId` | `String` | Subscription default payment method ID, read from Stripe | +| `pendingUpdate` | `SubscriptionPendingUpdate` | Locally stored future selection and effective time | +| `currentLicense` | `License` | Newest paid-invoice snapshot, null before the first one | +| `licenses` | `LicenseConnection!` | Snapshot history, newest first | +| `canceledAt` | `Time` | When the cancellation was requested | +| `createdAt`, `updatedAt` | `Time!` | Timestamps | + +`SubscriptionStatus` exposes `ACTIVE`, `CANCELED`, `INCOMPLETE`, `INCOMPLETE_EXPIRED`, `PAST_DUE`, `PAUSED`, `TRIALING`, and `UNPAID`. The underlying `stripe_status` column remains text and validates presence rather than enum membership; a future unknown Stripe status therefore needs an enum update before it can be serialized safely. + +Reading requires `read_subscription`, which `SubscriptionPolicy` derives from `read_customer` on the subscription's customer, so membership stays defined in one place. + +Both `Subscription.namespace` and `License.namespace` replace the previous GraphQL `namespaceId` field with a partial Sagittarius projection. `Namespace` contains an opaque `id: NamespaceID!` and a non-null `parent: NamespaceParent!` union. `NamespaceOrganization` exposes `name: String!`; `NamespaceUser` exposes `username: String!` and nullable `firstname` and `lastname`. A namespace has no name of its own: its display name comes from its parent. + +Namespace reads are fetched on demand from Sagittarius using Crater's service JWT and batched across subscriptions and licenses through a GraphQL Dataloader. An unlinked, unresolved, or inaccessible namespace returns `null`; Sagittarius request failures are logged and return `null` for the batch instead of failing the dashboard query. Crater still stores only the namespace ID, and checkout/link mutation arguments remain named `namespaceId`. + +```graphql +fragment LinkedNamespace on Namespace { + id + parent { + __typename + ... on NamespaceOrganization { + name + } + ... on NamespaceUser { + username + firstname + lastname + } + } +} +``` + +```graphql +query LicenseDashboard { + currentUser { + customers(first: 100) { + count + nodes { + id + customerType + name + email + updatedAt + checkoutLimits { + aiTokens + workflowExecutions + } + paymentMethods + subscriptions(first: 5) { + count + nodes { + id + status + plan + cancelAt + immediateCancellationAvailable + immediateCancellationUntil + namespace { + id + parent { + __typename + ... on NamespaceOrganization { + name + } + ... on NamespaceUser { + username + firstname + lastname + } + } + } + paymentMethodId + pendingUpdate { + plan + paymentPeriod + aiTokens + workflowExecutions + effectiveAt + } + currentLicense { + id + startDate + endDate + features + } + licenses(first: 20) { + count + nodes { + id + startDate + endDate + updatedAt + } + } + } + } + } + } + } +} +``` + +Authorization uses the existing policies. `UserPolicy` grants `read_user` only for the user themselves, `CustomerPolicy` grants `read_customer` to members through `CustomerUser`, and `LicensePolicy`, `InvoicePolicy`, and `SubscriptionPolicy` derive `read_license`, `read_invoice`, `read_subscription`, and `update_subscription` from `read_customer`, so membership is defined in exactly one place. As with the other resource policies, being an admin grants no extra read access. An anonymous request returns `currentUser: null`; an invalid or inactive session token is still answered with HTTP `401 Unauthorized` before the query runs. + +#### The current snapshot and the history + +Licenses are append-only: each processed paid-invoice event appends a row. Failed payments and cancellations add no row. The newest row is the current snapshot, with earlier rows available as history. `currentLicense` selects the newest snapshot; its presence alone does not check whether its dates and grace period have elapsed. + +The history is reached through the subscription: + +| Field | Returns | +| ----------------------------- | -------------------------------------------------------------------------------------- | +| `Subscription.currentLicense` | The same snapshot for one subscription, `null` until the first paid invoice created it | +| `Subscription.licenses` | Every snapshot of that subscription, newest first -- the history | +| `License.subscription` | The way from a snapshot back to its subscription | + +`Subscription.currentLicense` is batched with a dataloader source (`Sources::CurrentLicenseBySubscription`), so listing many subscriptions with their current license costs a constant number of queries. + +Because every snapshot of a subscription resolves the same invoice history, `License.invoices` returns the identical result whichever snapshot it is asked on. + +#### Invoices of a license + +`License.invoices` answers "which invoices belong to this license" through the license's subscription, never through the customer: a customer can hold several subscriptions, and the invoices of one must not show up on the licenses of another. Because licenses are append-only snapshots of the same subscription, every snapshot of a subscription resolves the identical invoice history. + +```graphql +query LicenseInvoices { + currentUser { + customers(first: 100) { + nodes { + subscriptions(first: 100) { + nodes { + id + currentLicense { + id + invoices(first: 100) { + count + nodes { + id + invoiceNumber + status + currency + total + net + tax + lineItems { + amount + description + quantity + } + stripePdfUrl + createdAt + updatedAt + } + } + } + } + } + } + } + } +} +``` + +`Invoice.status` is the `InvoiceStatus` enum. `total`, `net`, and `tax` map to stored amounts in the smallest currency unit; `lineItems: [InvoiceItem!]!` exposes amount, description, and quantity. Billing period fields are removed from the GraphQL type but remain in the database for ordering and license processing. `invoiceNumber`, `net`, and `stripePdfUrl` are nullable. Reads use the local projection and make no Stripe call. + +Invoices are ordered by `period_start DESC`, then `created_at DESC`, then `id DESC`, so the newest billing period comes first and equal timestamps still produce a stable order. + +Reading invoices requires `read_invoice`, which `InvoicePolicy` derives from `read_customer` on the invoice's customer. A user who is not a member of that customer through `CustomerUser` never sees the invoice, not even when reaching it through a license. + +Invoices are batched by `Sources::InvoicesBySubscription`, reached through `customers -> subscriptions -> currentLicense -> invoices` or the snapshot history. + +`CheckoutPrice` contains: + +- Stripe price ID +- currency +- `unitAmount` in the smallest currency unit, which is `null` when the price needs sub-minor-unit precision +- `unitAmountDecimal`, the exact amount in the smallest currency unit as a decimal string +- recurring `interval`, such as `month` or `year` +- `intervalCount`, the number of intervals between billings; a quarterly price is `interval: month` with `intervalCount: 3` +- optional stable `lookupKey` +- expanded Stripe product name + +`unitAmountDecimal` is a string on purpose. AI Token prices are far below one cent, and Stripe's Ruby client parses the field into a `BigDecimal`; it is formatted explicitly rather than converted through a `Float`, so no precision is lost. Clients that need to compute totals should use this field rather than `unitAmount`. + +The query auto-paginates and returns every active recurring price, not just Stripe's default first page of ten. The result is sorted deterministically by `lookupKey` and then by price ID, with prices that have no lookup key last. + +Prices and products are managed in Stripe. `subscriptionPrices` fetches all active recurring prices, including both deployment catalogs, without a deployment filter or a local product catalog. Checkout creation resolves Price IDs through `checkout.prices`, keyed by deployment, plan/component, customer type, and period. Stripe retrieval failures surface as a GraphQL execution error based on `UNABLE_TO_LIST_PRICES`. + +#### Lookup keys + +`lookupKey` is the stable technical identifier the frontend can use to match prices from `subscriptionPrices`; product names are freely editable. The configured Stripe sandbox catalog was verified on 2026-10-04: all 48 configured Price IDs are active and use the following naming schemes: + +```text +___ +custom____ + +pro_cloud_business_monthly +max_selfhosted_personal_yearly +custom_ai_tokens_cloud_business_quarterly +custom_workflow_executions_selfhosted_personal_monthly +``` + +Stripe lookup keys and configuration keys use different spellings: + +| Meaning | Stripe lookup key | Crater configuration key | +| ----------------------------------- | ---------------------------- | ------------------------------- | +| Cloud deployment | `cloud` | `cloud` | +| Self-hosted deployment | `selfhosted` | `self_hosted` | +| Business customer | `business` | `b2b` | +| Personal customer | `personal` | `b2c` | +| Custom AI Token component | `custom_ai_tokens` | `custom.ai_token_` | +| Custom Workflow Execution component | `custom_workflow_executions` | `custom.workflow_execution_` | + +Each deployment has 24 prices: twelve standard-plan combinations and twelve Custom-component combinations. Both customer types support monthly, quarterly, and yearly periods. + +Lookup keys are assigned on Stripe Price objects. Crater reads them but never writes them or derives checkout Price IDs from them. Commit `9ab1a2c` adds deployment-specific ID resolution and environment-variable names; the lookup-key naming is verified Stripe catalog data, not a naming rule enforced by that commit. Frontend price matching must include deployment type and use the Stripe spellings above. + +### HTTP authentication + +GraphQL requests are sent to `POST /graphql`. Crater uses header-based session authentication and does not use an authentication cookie: + +```http +Authorization: Session +Content-Type: application/json +``` + +Authentication behavior: + +- Queries can be executed anonymously; this explicitly includes `subscriptionPrices`. +- `usersLogin` and `usersCreateGuestUser` can be executed anonymously. Each must be the only top-level selection in its operation. +- All other mutations, including `checkoutCreateSession`, require an active Crater `UserSession`. +- A protected mutation without an `Authorization` header returns HTTP `403 Forbidden`. +- An unknown authentication scheme returns HTTP `401 Unauthorized`, as does any token that does not resolve to a usable session. Revoked, expired, and entirely unknown tokens are answered identically, so the response never reveals whether a session exists. +- Every session carries a server-set `expiresAt`; see [the session lifecycle](#the-session-lifecycle). +- `usersLogin` and `usersCreateGuestUser` return the token when creating a session. `usersLogout` revokes the current or explicitly selected own session, returning neither token nor session ID. +- The Sagittarius login token and the resulting Crater session token are distinct credentials with different header schemes. + +### Mutations + +Almost all mutations optionally accept `clientMutationId` and return it so the client can correlate the response with its request. Mutation payloads also contain a non-null `errors: [Error!]!` field. + +#### Authentication and access + +| Mutation | Key arguments | Result | +| ---------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | +| `usersLogin` | `sagittariusToken: String!`, obtained from Sagittarius through `usersCreateCraterToken` | Newly created `UserSession` and its Crater session token | +| `usersCreateGuestUser` | `email: String!` | Creates a Sagittarius guest; returns `claimToken` and a new Crater `userSession` | +| `usersLogout` | optional `id: UserSessionID` | Revokes the current session or another own session; returns only `errors` and `clientMutationId` | +| `echo` | Optional message | Returned message; verifies mutation access without changing data | + +Guest creation uses the usual `input` object and returns `errors`; profile completion is handled by Sagittarius through the claim email, without frontend use of `claimToken`. See [guest users](#guest-users). + +#### Customers + +| Mutation | Key arguments | Result | +| ---------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `customersCreate` | `customerType!`, `name!`, `email!`, `address!`; optional phone and tax ID | Created `Customer` | +| `customersUpdate` | `id!`, optional contact details, address, and `paymentMethods` | Updated `Customer`; attached payment methods the `paymentMethods` list no longer names are detached in Stripe and dropped from the customer | +| `customersDelete` | `id!` | Deleted `Customer` | +| `customerPaymentMethodSetupCreate` | `customerId!` | Stripe SetupIntent `clientSecret` for collecting a new default payment method | + +`customersCreate` requires the customer type and contact/address details: + +```graphql +customersCreate( + input: { + customerType: CustomerType! # PERSONAL or BUSINESS + name: String! # required + email: String! # required + address: CustomerAddressCreateInput! # every inner field required + phone: String # optional + taxIdType: String # optional, only together with taxIdValue + taxIdValue: String # optional, only together with taxIdType + } +): CustomersCreatePayload +``` + +Its behaviour: + +- Every call creates a customer. Nothing is reused: a user that already has one and asks for another gets a second, distinct customer with its own Stripe Customer, and the existing one keeps its membership. +- Customer type, name, email, and address are required. A malformed email or invalid model data returns `INVALID_CUSTOMER`; missing non-null GraphQL inputs fail schema validation. +- `CustomerAddressCreateInput` requires all six address fields. Updates use the separate `CustomerAddressUpdateInput` with optional fields. Stripe Checkout can collect updated contact details and sync them back after completion. +- There is no checkout-flow argument. The checkout runs for a customer that already exists; see [checkout and Stripe](#checkout-and-stripe). + +#### Checkout + +| Mutation | Key arguments | Result | +| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | +| `checkoutCreateSession` | `customerId!`, `deploymentType!`, `plan!`, `paymentPeriod!`, `returnUrl!`; optional quantities, `namespaceId`, and `referral` | Embedded `CheckoutSession` with a frontend `clientSecret` | + +For `checkoutCreateSession`: + +- The request must include `Authorization: Session `; the mutation is not anonymously accessible. +- `customerId: CustomerID!` is required and must name a customer linked to the authenticated user. Create a customer first when necessary. +- Membership uses the same rule as `CustomerPolicy.read_customer`. A nonexistent customer and one belonging to another user return identical `INVALID_CHECKOUT_CUSTOMER` responses. +- A repeated `checkoutCreateSession` for the same customer creates a new Stripe session but no additional customer. +- `deploymentType` selects the Cloud or Self-Hosted price catalog, and the customer's stored type selects its B2B or B2C Prices. This applies to Pro, Max, and Custom components. Both customer types support monthly, quarterly, and yearly periods. Invalid periods return `INVALID_CHECKOUT_SELECTION`; a Price available only for the other customer type within the chosen deployment returns `CUSTOMER_TYPE_MISMATCH`. +- The Stripe Checkout Session is created with the selected customer's `stripe_customer_id`, so the contact details, billing address, and tax ID that Stripe collects are synced back to exactly that customer. Its Crater customer ID is stored in the subscription metadata as `crater_customer_id`. +- Crater never sends `customer_email`; the Stripe Customer is referenced by ID, and Stripe rejects both parameters together. An email already on the Stripe Customer is therefore never restated, and a missing one is collected by the client's `ContactDetailsElement`. +- A regular checkout uses `plan`, `paymentPeriod`, and, where applicable, `deploymentType` and `namespaceId`. There is no `promotionCode` argument; see [discounts](#discounts-in-a-checkout). +- `plan: custom` requires both `aiTokens` and `workflowExecutions`, each matching one of the customer's configured packages exposed by `Customer.checkoutLimits`. +- Pro and Max resolve fixed quantities from `checkout.plan_quantities`; optional client quantities must match them exactly. Invalid package choices return `INVALID_CHECKOUT_SELECTION` before Stripe is called. Non-integer or out-of-range GraphQL `Int` inputs fail schema validation. +- `namespaceId` is only relevant to cloud deployments. +- `returnUrl` must have an origin listed in `checkout.allowed_return_origins`. +- Stripe receives `ui_mode: elements`; the frontend initializes the custom checkout UI with the returned `clientSecret`. +- Every session is created with `allow_promotion_codes: true`, so the client can apply and remove a discount inside the session it already has. Crater sends no `discounts`; see [discounts in a checkout](#discounts-in-a-checkout). +- Stripe collects the billing address, updates the customer's address and name, and calculates tax automatically. +- The session enables `tax_id_collection`, so a business customer without a stored tax ID can supply one through Stripe's `TaxIdElement`. The collected tax ID is resolved back to its Stripe `TaxId` object and stored on the Crater customer by the `checkout.session.completed` webhook. +- Subscription metadata contains `plan`, `payment_period`, and both resolved quantities for standard and custom plans. Optional `referral` is stored for Stripe dashboard filtering and analytics. Metadata values longer than 500 bytes are rejected with `INVALID_CHECKOUT_SELECTION`. + +#### Subscriptions + +| Mutation | Key arguments | Result | +| ---------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `subscriptionsPreviewUpdate` | `id: SubscriptionID!`, optional `plan`, `paymentPeriod`, `aiTokens`, `workflowExecutions` | `SubscriptionUpdatePreview` with the proration, the resulting invoice, and the effective moment | +| `subscriptionsUpdate` | the same arguments plus optional `paymentMethodId` | Updated `Subscription` and nullable `paymentClientSecret` | +| `subscriptionsCancel` | `id: SubscriptionID!`, optional `immediately: Boolean` (default `false`) | Updated subscription with cancellation reflected in `cancelAt`/`status` | +| `subscriptionsResume` | `id: SubscriptionID!` | `Subscription` with the cancellation taken back | +| `subscriptionsLinkNamespace` | `id: SubscriptionID!`, `namespaceId: NamespaceID!` | Cloud subscription with verified namespace link and remote license sync | + +All five require an active session; anonymous requests are refused with HTTP `403` before the mutation runs. + +For `subscriptionsUpdate` and `subscriptionsPreviewUpdate`: + +- At least one of `plan`, `paymentPeriod`, `aiTokens`, and `workflowExecutions` has to be supplied; all four missing is `INVALID_CHECKOUT_SELECTION`. For `subscriptionsUpdate` a `paymentMethodId` on its own is enough, and the plan half is then skipped entirely; see [the payment method of a subscription](#the-payment-method-of-a-subscription). +- Arguments that are not supplied keep their current value. An interval change does not reset the quantities, and a quantity change does not move the plan. +- Moving to Pro or Max replaces custom line items with a single plan line item and resolves the target plan's configured quantities. Explicit standard-plan quantities must match those entitlements. Moving from a standard plan to Custom requires both quantities; staying on Custom preserves unspecified current quantities. +- Each custom quantity must match a package from the customer's `checkoutLimits`; the planner uses the same resolver as fresh checkout creation. +- Price resolution uses the subscription's stored deployment type and its customer's stored `customerType`. A Price configured only for the other customer type within the same deployment is `CUSTOMER_TYPE_MISMATCH`; there is no cross-deployment fallback. See [the payment periods of a customer type](#the-payment-periods-of-a-customer-type). +- A subscription carrying no checkout plan and one that is no longer active are `INVALID_SUBSCRIPTION`. Cancelling a negotiated subscription is still allowed. +- An update that changes nothing succeeds without calling Stripe. +- A subscription that does not exist and one belonging to somebody else are answered with the same `INVALID_SUBSCRIPTION` error and the same message, so the response never reveals which of the two it was -- the rule `checkoutCreateSession` already follows for `INVALID_CHECKOUT_CUSTOMER`. + +Immediate upgrades use Stripe's `payment_behavior: pending_if_incomplete`. If payment needs confirmation (for example 3D Secure), the requested selection stays in the pending fields and `subscriptionsUpdate.paymentClientSecret` lets Cygnus confirm the payment with Stripe.js. Select this field alongside `subscription` and `errors`; a null secret means there is no payment to confirm. Do not show the upgrade as completed while payment remains pending. Once the invoice is paid, Crater applies the selection and syncs its Stripe metadata; the verified `invoice.paid` webhook issues the license. + +For an existing open invoice, `invoicePaymentSession(invoiceId: InvoiceID!)` returns `clientSecret` and `errors`, allowing Cygnus to resume payment confirmation from the dashboard. It requires an active session and invoice access. Missing, inaccessible, closed, or paid invoices, and invoices without a pending payment, return `INVALID_INVOICE`. The secret is read from Stripe and is never stored in Crater. + +`subscriptionsPreviewUpdate` previews a change to an existing subscription: an upgrade is charged immediately with a proration, so the client has to be able to name the amount before the user clicks. It reads only -- it retrieves the subscription, asks Stripe to preview an invoice, and returns. `SubscriptionUpdatePreview` contains the resolved `plan`, `paymentPeriod`, `aiTokens`, and `workflowExecutions`, plus `effectiveAt`, `immediate`, `prorationAmount`, `total`, and `currency`. Amounts are integers in the smallest currency unit and the preview is non-binding. Because it runs the same planner as `subscriptionsUpdate`, the `effectiveAt` it reports is the moment the update then actually establishes. + +`subscriptionsCancel` defaults to `cancel_at_period_end`, reflected by `cancelAt`. An immediate cancellation request is honored only within fourteen days of Stripe's subscription creation timestamp (falling back to local `created_at` for older rows); later requests become period-end cancellations. Existing licenses remain unchanged. `subscriptionsResume` removes a pending cancellation; terminal subscriptions return `INVALID_SUBSCRIPTION`, and a resume with nothing to undo is a successful no-op. + +#### Licenses + +| Mutation | Key arguments | Result | +| ---------------- | ---------------- | ------------------------------------- | +| `licensesExport` | `id: LicenseID!` | Signed license file; self-hosted only | + +## Error handling + +A GraphQL error object consists of: + +- `errorCode: ErrorCodeEnum!` +- optional `details: [DetailedError!]` + +`DetailedError` is a union of: + +- `ActiveModelError`, containing the affected attribute and failed validation type +- `MessageError`, containing a human-readable error message + +Documented error codes: + +| Code | Meaning | +| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `GUEST_USER_CREATION_FAILED` | Sagittarius could not create the guest user | +| `INVALID_EMAIL` | The email passed to guest creation is blank | +| `CUSTOMER_TYPE_MISMATCH` | The selected customer's type does not match the selected checkout | +| `INVALID_CHECKOUT_CUSTOMER` | The selected customer does not exist or is not accessible to the current user | +| `INVALID_CHECKOUT_SESSION` | The checkout session could not be created | +| `INVALID_CHECKOUT_STATUS_SESSION` | The completion-status session is nonexistent, inaccessible, or inconsistent | +| `CHECKOUT_STATUS_UNAVAILABLE` | Stripe could not provide checkout completion status | +| `INVALID_CHECKOUT_SELECTION` | The selected plan, payment period, quantity, or configured Price combination is invalid, in a checkout and in a change to an existing subscription alike | +| `INVALID_CUSTOMER` | The customer is invalid | +| `INVALID_INVOICE` | The invoice is invalid | +| `INVALID_LICENSE` | The license is invalid | +| `INVALID_PAYMENT_METHOD` | The selected payment method does not exist or does not belong to this customer | +| `INVALID_PAYMENT_METHOD_SETUP_CUSTOMER` | The selected customer does not exist, is not accessible to the current user, or has no billing account to set a payment method up for | +| `INVALID_PAYMENT_METHOD_SETUP_SESSION` | The payment method setup could not be created | +| `INVALID_SAGITTARIUS_TOKEN` | The Sagittarius token cannot be used to log in | +| `INVALID_SUBSCRIPTION` | The subscription is invalid, does not exist, is not accessible to the current user, is no longer active, or carries no checkout plan and therefore cannot be changed | +| `INVALID_USER` | The local user derived from Sagittarius is invalid | +| `MISSING_PERMISSION` | The user does not have the required permission | +| `PAYMENT_METHOD_IN_USE` | The payment method is the default for an active subscription and cannot be removed | +| `PAYMENT_METHOD_UNAVAILABLE` | Stripe could not provide the payment method list, summary, or subscription default | +| `SAGITTARIUS_UNAVAILABLE` | Sagittarius could not be reached or returned an unexpected response | +| `UNABLE_TO_LIST_PRICES` | Active recurring Stripe prices could not be retrieved | + +## Types and conventions + +- `String`: UTF-8 text +- `Int`: signed 32-bit integer +- `Boolean`: `true` or `false` +- `Time`: ISO 8601 timestamp, for example `2023-12-15T17:31:00Z` +- `CustomerID`, `UserID`, `UserSessionID`, `LicenseID`, `SubscriptionID`: type-specific global IDs +- A `!` after a GraphQL type marks a non-null value. +- Lists use square brackets, for example `[String!]!`. +- Paginated results use cursor pagination with `startCursor`, `endCursor`, `hasNextPage`, and `hasPreviousPage`. + +## Typical end-to-end flow + +1. The frontend anonymously queries `subscriptionPrices` and `checkoutPackages` to display active recurring Stripe prices, Custom quantity choices for both customer types, and the fixed Pro/Max plan quantities before a customer exists. +2. An authenticated Sagittarius client calls `usersCreateCraterToken` and receives a dedicated Crater login token. +3. The client passes that token to Crater's anonymous `usersLogin` mutation. +4. Crater verifies the token with Sagittarius, maps the returned Sagittarius user ID to a local user, creates a `UserSession`, and returns its token. +5. The client sends the Crater token on subsequent mutations as `Authorization: Session `; no authentication cookie is required. +6. The authenticated user selects one of their customers, or creates one with `customersCreate`, which requires the customer type, name, email, and address. +7. For a Custom plan, the frontend selects both quantities from the matching customer type's `checkoutPackages.quantitySteps` (or reads `Customer.checkoutLimits` after the customer exists). Standard plans use the configured fixed quantities from `checkoutPackages.planQuantities`. +8. Crater creates an embedded Stripe Checkout Session for the selected plan and required `customerId`, returning its `clientSecret`. +9. The frontend mounts Stripe's custom checkout UI, which collects billing details and calculates tax. Promotion codes are applied and validated through `checkout.applyPromotionCode()` and removed through `checkout.removePromotionCode()`. +10. Subscription metadata includes the Crater customer ID, deployment type, customer type, plan, payment period, resolved quantities, optional namespace ID, and optional referral. +11. The verified `checkout.session.completed` webhook creates or updates Crater's subscription projection and syncs the email, name, phone, address, and tax ID from the session's `customer_details` back to the Crater customer. The webhook does not grant paid access by itself. +12. The verified `invoice.paid` webhook records the invoice and appends a license for its service period, with grace stored separately. Failed payments and cancellations create no license snapshot. Paid/failure emails are queued when the corresponding handler first creates the local invoice record. +13. The dashboard reads the billing history of a license from that local projection through `License.invoices`. +14. A self-hosted license can be exported with `licensesExport`. A cloud subscription can be linked through `subscriptionsLinkNamespace` after Sagittarius verifies namespace ownership; Crater reconciles its signed license into the selected namespace. +15. To change the payment method of an active customer later, the client calls `customerPaymentMethodSetupCreate`, confirms the returned SetupIntent with Stripe Elements, and reloads the customer data afterwards. The verified `setup_intent.succeeded` webhook is what makes the collected payment method the default, so the confirmation itself is not proof that it already is. +16. To change the subscription later, the client reads it through `Customer.subscriptions` or `License.subscription`, calls `subscriptionsPreviewUpdate` to show the amount and the effective moment, and then `subscriptionsUpdate`. The same mutation moves the subscription to another stored payment method through `paymentMethodId`. An upgrade applies at once and is prorated; a downgrade or an interval change becomes a Stripe subscription schedule and applies at the end of the period. `subscriptionsCancel` ends the subscription at the end of the paid period, and `subscriptionsResume` takes that back. The verified `customer.subscription.updated` webhook is what makes the projection reflect the change, and the new entitlements arrive with the next `invoice.paid`. + +If the user abandons the checkout at any point between steps 6 and 11, the customer stays as it was created; only the Stripe session expires. + +The guest alternative replaces login steps 2–4 with `usersCreateGuestUser(email:)`, using the mutation's `input` wrapper. Cygnus stores the returned Crater session token for API access. Sagittarius sends the claim token by email for profile completion; Cygnus does not need to request, store, or use `claimToken` in its frontend. diff --git a/next-sitemap.config.cjs b/next-sitemap.config.cjs index 9feddd16..e99fb74d 100644 --- a/next-sitemap.config.cjs +++ b/next-sitemap.config.cjs @@ -5,47 +5,26 @@ module.exports = { siteUrl, generateRobotsTxt: true, generateIndexSitemap: false, - exclude: [ - "/admin/*", - "/api/*", - "/en/checkout", - "/de/checkout", - ], + exclude: ["/admin/*", "/api/*", "/*/checkout", "/*/checkout/*", "/*/licenses", "/*/licenses/*"], alternateRefs: [ { href: `${siteUrl}/en`, hreflang: "en" }, { href: `${siteUrl}/de`, hreflang: "de" }, ], robotsTxtOptions: { - additionalSitemaps: [ - `${siteUrl}/server-sitemap.xml`, - ], + additionalSitemaps: [`${siteUrl}/server-sitemap.xml`], }, additionalPaths: async () => { const locales = ["en", "de"] - const staticPaths = [ - "", - "about-us", - "actions", - "blog", - "community-edition", - "contact", - "enterprise-edition", - "features", - "jobs", - "legal-notice", - "privacy", - "subscription", - "terms", - ] + const staticPaths = ["", "about-us", "actions", "blog", "community-edition", "contact", "enterprise-edition", "features", "jobs", "legal-notice", "privacy", "subscription", "terms"] return locales.flatMap((locale) => staticPaths.map((path) => ({ loc: path ? `/${locale}/${path}` : `/${locale}`, changefreq: "weekly", priority: path ? 0.7 : 1, - lastmod: new Date().toISOString() + lastmod: new Date().toISOString(), })) ) - } + }, } diff --git a/next.config.ts b/next.config.ts index fd3f5a76..396fd698 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,10 +1,19 @@ import { withPayload } from "@payloadcms/next/withPayload" import { NextConfig } from "next" +import { staticSecurityHeaders } from "./src/lib/security/staticSecurityHeaders" const isDev = process.env.NODE_ENV === "development" const nextConfig: NextConfig = { output: "standalone", + async headers() { + return [ + { + source: "/:path*", + headers: staticSecurityHeaders, + }, + ] + }, images: { dangerouslyAllowLocalIP: isDev, remotePatterns: isDev diff --git a/package-lock.json b/package-lock.json index 98a08e00..170cfe65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,13 @@ "name": "landing-page", "version": "0.1.1", "dependencies": { - "@base-ui/react": "^1.8.0", - "@c15t/nextjs": "^2.2.1", - "@c15t/react": "^2.2.1", - "@c15t/scripts": "^2.2.0", - "@code0-tech/pictor": "^0.18.3", + "@apollo/client": "^4.2.8", + "@base-ui/react": "^1.9.0", + "@c15t/nextjs": "^2.3.0", + "@c15t/react": "^2.3.0", + "@c15t/scripts": "^2.3.0", + "@code0-tech/crater-graphql-types": "0.0.0-experimental-3015062248-5df677e860f3f27494804dde4fd31e4f50f034ed", + "@code0-tech/pictor": "^1.0.0", "@icons-pack/react-simple-icons": "^13.15.1", "@mvriu5/payload-ai": "^1.6.4", "@mvriu5/payload-color-picker": "^1.0.2", @@ -20,41 +22,50 @@ "@mvriu5/payload-portable-plugin": "^0.8.5", "@number-flow/react": "^0.6.2", "@openrouter/ai-sdk-provider": "^3.1.0", - "@payloadcms/db-postgres": "3.88.0", - "@payloadcms/email-nodemailer": "3.88.0", - "@payloadcms/next": "3.88.0", - "@payloadcms/plugin-seo": "3.88.0", - "@payloadcms/richtext-lexical": "3.88.0", + "@payloadcms/db-postgres": "3.90.2", + "@payloadcms/email-nodemailer": "3.90.2", + "@payloadcms/next": "3.90.2", + "@payloadcms/plugin-seo": "3.90.2", + "@payloadcms/richtext-lexical": "3.90.2", + "@stripe/react-stripe-js": "^6.8.0", + "@stripe/stripe-js": "^9.13.0", "@tabler/icons-react": "3.41.1", "border-beam": "^1.4.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "graphql": "^16.14.2", - "knip": "^6.38.0", + "knip": "^6.41.0", "motion": "^12.43.0", - "next": "^16.3.6", + "next": "^16.4.0", "next-sitemap": "^4.2.3", + "nodemailer": "10.0.16", "ogl": "^1.0.11", - "payload": "3.88.0", + "payload": "3.90.2", "react": "^19.3.0", "react-dom": "^19.3.0", "react-player": "^3.4.0", - "sanitize-html": "^2.17.7", - "sass": "^1.105.0", - "sharp": "^0.35.4", - "shiki": "^4.4.3", - "tailwind-merge": "^3.6.0", + "rxjs": "^7.8.2", + "sanitize-html": "^2.18.0", + "sass": "^1.105.1", + "sharp": "^0.35.5", + "shiki": "^4.5.0", + "sonner": "^2.0.8", + "stripe": "^22.4.0", + "tailwind-merge": "^3.7.0", "web-haptics": "^0.0.6" }, "devDependencies": { - "@ai-sdk/mistral": "^4.0.52", + "@ai-sdk/mistral": "^4.0.62", "@swc-node/register": "^1.12.1", "@tailwindcss/postcss": "^4.3.3", - "@types/node": "^25.9.8", + "@testing-library/react": "^16.3.2", + "@testing-library/user-event": "^14.6.1", + "@types/node": "^25.9.9", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "@types/sanitize-html": "^2.16.1", - "postcss": "^8.5.28", + "@types/sanitize-html": "^2.16.2", + "happy-dom": "^20.10.6", + "postcss": "^8.5.29", "prettier": "^3.9.9", "tailwindcss": "^4.3.3", "tsx": "^4.23.15", @@ -62,13 +73,13 @@ } }, "node_modules/@ai-sdk/gateway": { - "version": "4.0.28", - "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-4.0.28.tgz", - "integrity": "sha512-ee9TsNO3mkgHDWmTmJ8Fvltr6PFh52zhrV2+FaKJY3F3iu7kWZi5tCRJCR1HVhhlpj6lHniUb28nLQdPHkA/1Q==", + "version": "4.0.115", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-4.0.115.tgz", + "integrity": "sha512-Xn+gDWM4Ti2FzYmxhlZtjEuGBGZlOYaQMpwcVRSN4c9qCMUszD5F5TAbkxgLV/tHKeMfEX+WEuTCl6Kkj2r73A==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "4.0.3", - "@ai-sdk/provider-utils": "5.0.12", + "@ai-sdk/provider": "4.0.28", + "@ai-sdk/provider-utils": "5.0.61", "@vercel/oidc": "3.2.0" }, "engines": { @@ -79,47 +90,14 @@ } }, "node_modules/@ai-sdk/mistral": { - "version": "4.0.52", - "resolved": "https://registry.npmjs.org/@ai-sdk/mistral/-/mistral-4.0.52.tgz", - "integrity": "sha512-ytqGhPHulDQA+NzDYCsulKFuB1xPo63XcWx+jGuAK7MK98mp8wBF+SddHK/UXa5hv+4CBJMmGgJHWZemzRs/HQ==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "4.0.18", - "@ai-sdk/provider-utils": "5.0.49" - }, - "engines": { - "node": ">=22" - }, - "peerDependencies": { - "zod": "^3.25.76 || ^4.1.8" - } - }, - "node_modules/@ai-sdk/mistral/node_modules/@ai-sdk/provider": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-4.0.18.tgz", - "integrity": "sha512-+GZJIgz1jk86pwEbb3f1BD2bdoSKyWE4Jg4YUc7NMnMozbWemSKYZcw2F4nMaO5qwsL5A8RmioAKW81YktRpIQ==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "json-schema": "^0.4.0" - }, - "engines": { - "node": ">=22" - } - }, - "node_modules/@ai-sdk/mistral/node_modules/@ai-sdk/provider-utils": { - "version": "5.0.49", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-5.0.49.tgz", - "integrity": "sha512-T+/H8DCvqJoCqLhltVatS7ffA779Iyk/ZZrgNXkrgv51E0n2Cd6eIdCmtwhCGIKqtbTtwCvTmQdAMv5Z8rOGHQ==", + "version": "4.0.65", + "resolved": "https://registry.npmjs.org/@ai-sdk/mistral/-/mistral-4.0.65.tgz", + "integrity": "sha512-3ibfdjORtPqQStzdjF/bFf0kW9UsQXAGi85QEfCzDc8IwOaGQ9PFL1/+7gcujOLWQk0gD4CIQSn00MvFUbGDIw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "4.0.18", - "@standard-schema/spec": "^1.1.0", - "@workflow/serde": "4.1.0", - "eventsource-parser": "^3.0.8", - "undici": "^7.29.0" + "@ai-sdk/provider": "4.0.28", + "@ai-sdk/provider-utils": "5.0.61" }, "engines": { "node": ">=22" @@ -129,9 +107,9 @@ } }, "node_modules/@ai-sdk/provider": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-4.0.3.tgz", - "integrity": "sha512-e0CpNWJUY7OxAFAnCZkw+ri9QOHWwTs1tXP42782KFGCU07qt8NiXCrCVowyCB5dP2r5/Uls+g2oPd8kOJn9dw==", + "version": "4.0.28", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-4.0.28.tgz", + "integrity": "sha512-6ThcmkJQXSMlBrf6mirIjUUS04Q5/kApbYTOzd5lZfYXLa1XPpnDLxP/G96/DKc00fDIUOW9S2ls0mSzb0+l9w==", "license": "Apache-2.0", "dependencies": { "json-schema": "^0.4.0" @@ -141,15 +119,16 @@ } }, "node_modules/@ai-sdk/provider-utils": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-5.0.12.tgz", - "integrity": "sha512-bbhlOgHeYwrIGheLkM6fhS8hVger8uFPmcOLg+kxc9EFh7y30XYorWhthlYAgpadO3SJhFZrIcEknN7qEqEVvA==", + "version": "5.0.61", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-5.0.61.tgz", + "integrity": "sha512-Y+Z3539UXw0ctFDNepTtG23VqBQHr2A6yI2qUxvQcg75DJYgJoD2F9U2Vp5OgQjX7lxto1BLgFtKuOhzrr52vQ==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "4.0.3", + "@ai-sdk/provider": "4.0.28", "@standard-schema/spec": "^1.1.0", "@workflow/serde": "4.1.0", - "eventsource-parser": "^3.0.8" + "eventsource-parser": "^3.0.8", + "undici": "^7.29.0" }, "engines": { "node": ">=22" @@ -159,9 +138,9 @@ } }, "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.3.0.tgz", + "integrity": "sha512-U4+70Pc5ZS9osnCBCE5Jha/ciHM+Yp+CNMNC/7HvYbNRk1Ldd+f7qO65W5qfhu/TCv+/ozljlXXe9Nj8419DMA==", "dev": true, "license": "MIT", "engines": { @@ -188,80 +167,119 @@ "url": "https://github.com/sponsors/philsturgeon" } }, + "node_modules/@apollo/client": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-4.3.4.tgz", + "integrity": "sha512-knXw5+GtT5zjrpqxG2Pnor34Xmjd5qcpI34slI8GKV88r1vc5LPCve6ImfcpRsBIy1aHBjTRFTHIt2YRDcxfHA==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/caches": "^1.0.0", + "@wry/equality": "^0.5.6", + "@wry/trie": "^0.5.0", + "graphql-tag": "^2.12.6", + "optimism": "^0.18.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "graphql": "^16.0.0 || ^17.0.0", + "graphql-ws": "^5.5.5 || ^6.0.3", + "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", + "react-dom": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", + "rxjs": "^7.3.0", + "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" + }, + "peerDependenciesMeta": { + "graphql-ws": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "subscriptions-transport-ws": { + "optional": true + } + } + }, "node_modules/@ark-ui/react": { - "version": "5.37.2", - "resolved": "https://registry.npmjs.org/@ark-ui/react/-/react-5.37.2.tgz", - "integrity": "sha512-Q0R2Ah50kUhup0Ljxg65zGJq5yBV52BLm1coRkjHHid40d1yclaDGfhPL48kcF/xtjAFlGLkL6SiENkGvfh+mw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@internationalized/date": "3.12.2", - "@zag-js/accordion": "1.41.2", - "@zag-js/anatomy": "1.41.2", - "@zag-js/angle-slider": "1.41.2", - "@zag-js/async-list": "1.41.2", - "@zag-js/auto-resize": "1.41.2", - "@zag-js/avatar": "1.41.2", - "@zag-js/carousel": "1.41.2", - "@zag-js/cascade-select": "1.41.2", - "@zag-js/checkbox": "1.41.2", - "@zag-js/clipboard": "1.41.2", - "@zag-js/collapsible": "1.41.2", - "@zag-js/collection": "1.41.2", - "@zag-js/color-picker": "1.41.2", - "@zag-js/color-utils": "1.41.2", - "@zag-js/combobox": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/date-input": "1.41.2", - "@zag-js/date-picker": "1.41.2", - "@zag-js/date-utils": "1.41.2", - "@zag-js/dialog": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/drawer": "1.41.2", - "@zag-js/editable": "1.41.2", - "@zag-js/file-upload": "1.41.2", - "@zag-js/file-utils": "1.41.2", - "@zag-js/floating-panel": "1.41.2", - "@zag-js/focus-trap": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/highlight-word": "1.41.2", - "@zag-js/hover-card": "1.41.2", - "@zag-js/i18n-utils": "1.41.2", - "@zag-js/image-cropper": "1.41.2", - "@zag-js/json-tree-utils": "1.41.2", - "@zag-js/listbox": "1.41.2", - "@zag-js/marquee": "1.41.2", - "@zag-js/menu": "1.41.2", - "@zag-js/navigation-menu": "1.41.2", - "@zag-js/number-input": "1.41.2", - "@zag-js/pagination": "1.41.2", - "@zag-js/password-input": "1.41.2", - "@zag-js/pin-input": "1.41.2", - "@zag-js/popover": "1.41.2", - "@zag-js/presence": "1.41.2", - "@zag-js/progress": "1.41.2", - "@zag-js/qr-code": "1.41.2", - "@zag-js/radio-group": "1.41.2", - "@zag-js/rating-group": "1.41.2", - "@zag-js/react": "1.41.2", - "@zag-js/scroll-area": "1.41.2", - "@zag-js/select": "1.41.2", - "@zag-js/signature-pad": "1.41.2", - "@zag-js/slider": "1.41.2", - "@zag-js/splitter": "1.41.2", - "@zag-js/steps": "1.41.2", - "@zag-js/switch": "1.41.2", - "@zag-js/tabs": "1.41.2", - "@zag-js/tags-input": "1.41.2", - "@zag-js/timer": "1.41.2", - "@zag-js/toast": "1.41.2", - "@zag-js/toggle": "1.41.2", - "@zag-js/toggle-group": "1.41.2", - "@zag-js/tooltip": "1.41.2", - "@zag-js/tour": "1.41.2", - "@zag-js/tree-view": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "version": "5.39.3", + "resolved": "https://registry.npmjs.org/@ark-ui/react/-/react-5.39.3.tgz", + "integrity": "sha512-8fx0mj1Ht51ElT9rGDSnX+oaBr++9zo//4E0xhXzB299XwHi0vXHXtTYzhpH/m6qb+R3fHz5flsMv1X0+fZvtQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@internationalized/date": "3.12.4", + "@zag-js/accordion": "1.45.0", + "@zag-js/anatomy": "1.45.0", + "@zag-js/angle-slider": "1.45.0", + "@zag-js/async-list": "1.45.0", + "@zag-js/auto-resize": "1.45.0", + "@zag-js/avatar": "1.45.0", + "@zag-js/carousel": "1.45.0", + "@zag-js/cascade-select": "1.45.0", + "@zag-js/checkbox": "1.45.0", + "@zag-js/clipboard": "1.45.0", + "@zag-js/collapsible": "1.45.0", + "@zag-js/collection": "1.45.0", + "@zag-js/color-picker": "1.45.0", + "@zag-js/color-utils": "1.45.0", + "@zag-js/combobox": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/date-input": "1.45.0", + "@zag-js/date-picker": "1.45.0", + "@zag-js/date-utils": "1.45.0", + "@zag-js/dialog": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/drawer": "1.45.0", + "@zag-js/editable": "1.45.0", + "@zag-js/file-upload": "1.45.0", + "@zag-js/file-utils": "1.45.0", + "@zag-js/floating-panel": "1.45.0", + "@zag-js/focus-trap": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/highlight-word": "1.45.0", + "@zag-js/hotkeys": "1.45.0", + "@zag-js/hover-card": "1.45.0", + "@zag-js/i18n-utils": "1.45.0", + "@zag-js/image-cropper": "1.45.0", + "@zag-js/json-tree-utils": "1.45.0", + "@zag-js/listbox": "1.45.0", + "@zag-js/marquee": "1.45.0", + "@zag-js/menu": "1.45.0", + "@zag-js/navigation-menu": "1.45.0", + "@zag-js/number-input": "1.45.0", + "@zag-js/pagination": "1.45.0", + "@zag-js/password-input": "1.45.0", + "@zag-js/pin-input": "1.45.0", + "@zag-js/popover": "1.45.0", + "@zag-js/presence": "1.45.0", + "@zag-js/progress": "1.45.0", + "@zag-js/qr-code": "1.45.0", + "@zag-js/radio-group": "1.45.0", + "@zag-js/rating-group": "1.45.0", + "@zag-js/react": "1.45.0", + "@zag-js/scroll-area": "1.45.0", + "@zag-js/select": "1.45.0", + "@zag-js/signature-pad": "1.45.0", + "@zag-js/slider": "1.45.0", + "@zag-js/splitter": "1.45.0", + "@zag-js/steps": "1.45.0", + "@zag-js/switch": "1.45.0", + "@zag-js/tabs": "1.45.0", + "@zag-js/tags-input": "1.45.0", + "@zag-js/timer": "1.45.0", + "@zag-js/toast": "1.45.0", + "@zag-js/toc": "1.45.0", + "@zag-js/toggle": "1.45.0", + "@zag-js/toggle-group": "1.45.0", + "@zag-js/tooltip": "1.45.0", + "@zag-js/tour": "1.45.0", + "@zag-js/tree-view": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" }, "peerDependencies": { "react": ">=18.0.0", @@ -283,13 +301,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -339,12 +357,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "version": "7.29.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", + "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -354,13 +372,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-8.0.7.tgz", + "integrity": "sha512-k0hagDDq/6w4v+0Sp4wFvIz/yswH5O7Va6aRTnD7N62Tnborp4X+YB+H3XUcWVSR4aE47WPEXiIIZchBs0GmYg==", + "license": "MIT" }, "node_modules/@babel/template": { "version": "7.29.7", @@ -377,17 +392,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.10.tgz", + "integrity": "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", + "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.7", + "@babel/parser": "^7.29.9", "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/types": "^7.29.8", "debug": "^4.3.1" }, "engines": { @@ -395,9 +410,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.29.7", @@ -408,16 +423,16 @@ } }, "node_modules/@base-ui/react": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@base-ui/react/-/react-1.8.0.tgz", - "integrity": "sha512-P0/1sxo6SBVZOklKMIedvTWqw2s2IQzi9x5bIVsXu980cuSOD4NeuRSs+/L7LZQfDkZP/uRZyGPyfFl/B1oH+Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@base-ui/react/-/react-1.9.0.tgz", + "integrity": "sha512-S8CSYosASBKtpL8SWUfS78rFElfLijiCgA7oHOK22jCJ95FULsYyKwBNFOgudt0RA+/7yNc7F81bOvQnRgbBiQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.29.7", - "@base-ui/utils": "0.4.0", + "@babel/runtime": "^7.29.7 || ^8.0.0", + "@base-ui/utils": "0.5.0", "@floating-ui/react-dom": "^2.1.9", "@floating-ui/utils": "^0.2.12", - "use-sync-external-store": "^1.6.0" + "use-sync-external-store": "^1.7.0" }, "engines": { "node": ">=14.0.0" @@ -446,15 +461,15 @@ } }, "node_modules/@base-ui/utils": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@base-ui/utils/-/utils-0.4.0.tgz", - "integrity": "sha512-bO9fz25kKtPf+aZVyfQrC0PDmJdmVni31W2hCS5/Owb+inwdIL3XU26pCPRPlt4LSxZrBgLwubXQXQlKaFEZzw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@base-ui/utils/-/utils-0.5.0.tgz", + "integrity": "sha512-dYGGcEttjkYiMoa5nHm8vLaJ2UcuTWxo3BFAwOYXeRg/q7UVVvA6cacEIXEs3FgBfK1CGtW1ptElqs7wsx+t9A==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.29.7", + "@babel/runtime": "^7.29.7 || ^8.0.0", "@floating-ui/utils": "^0.2.12", - "reselect": "^5.2.0", - "use-sync-external-store": "^1.6.0" + "reselect": "^5.3.0", + "use-sync-external-store": "^1.7.0" }, "peerDependencies": { "@types/react": "^17 || ^18 || ^19", @@ -478,14 +493,14 @@ } }, "node_modules/@c15t/nextjs": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@c15t/nextjs/-/nextjs-2.2.1.tgz", - "integrity": "sha512-rQx1PbeI0Yh+dUp8h5LdhjWtDFllsSnYzQU6QDtR3MDen2D2y/oxz4px9h2HTk8RLC7WkLIRN0qy5mHoqmLx9g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@c15t/nextjs/-/nextjs-2.3.0.tgz", + "integrity": "sha512-v7Og87F4tQyfGpPUak5Hi6miZb1B1xdko3KZeQpH4LWm/lUlk3ier/hQcf+Z7HsardS/dcMBJKQc9F7flTQF0w==", "license": "Apache-2.0", "dependencies": { - "@c15t/react": "2.2.1", - "@c15t/translations": "2.2.1", - "c15t": "2.2.1" + "@c15t/react": "2.3.0", + "@c15t/translations": "2.3.0", + "c15t": "2.3.0" }, "peerDependencies": { "next": "^16.0.0 || ^15.0.0 || ^14.0.0 || ^13.0.0", @@ -494,14 +509,14 @@ } }, "node_modules/@c15t/react": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@c15t/react/-/react-2.2.1.tgz", - "integrity": "sha512-Xl/KPHGBDekRwH+k09fAyNXUI2GirDAWz/R87Yr+htsp+b66A51yMN2hzJCcH1gxm4MLjOzDqHP1nAE/fRJ09Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@c15t/react/-/react-2.3.0.tgz", + "integrity": "sha512-noQLwyUUHG+eJ5ZuNLVz/KXEMUvy1xFSHje2mdpPWop09/DNV85Td37lAOwBiTNDYTkuVqOrunUbvbcvJ32R5Q==", "license": "Apache-2.0", "dependencies": { - "@c15t/ui": "2.2.1", + "@c15t/ui": "2.2.2", "@types/google.maps": "3.65.3", - "c15t": "2.2.1" + "c15t": "2.3.0" }, "peerDependencies": { "react": "^19.0.0 || ^19.0.0-rc || ^18.0.0 || ^17.0.0 || ^16.8.0", @@ -509,40 +524,45 @@ } }, "node_modules/@c15t/schema": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@c15t/schema/-/schema-2.2.0.tgz", - "integrity": "sha512-rj6H1AlbbSnioNaw9Cvoc3vCchVAV/55Jd/6wrzhzW+2z2ByUyf+pDvZXQnAm0KMfsuQ8oDgqNqmPdqD1aJNFw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@c15t/schema/-/schema-2.3.0.tgz", + "integrity": "sha512-n7K5GYp+F1y4qJeAB0SiXT2XtVDzKX3Xbc1YferNeWClrVyFRYj//28Dxou8irocR1A/z9m40lZLb9xMqwvMHA==", "license": "Apache-2.0", "dependencies": { "valibot": "1.4.2" } }, "node_modules/@c15t/scripts": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@c15t/scripts/-/scripts-2.2.0.tgz", - "integrity": "sha512-FgmnIW0JL5nalY6QKG5+gzukzALMqq6LpXzn5+iwRA8OVukjoXBdgakdO/eytwSrv/QtxgLyFaiM0nBIZZbk0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@c15t/scripts/-/scripts-2.3.0.tgz", + "integrity": "sha512-xVaneA3fNHvD6/Tl2P3splSR3psJksbmJAacN0mj82Wgk5M9d3MZTSdUhFRFsy+w5dOrUHPAZL+XyyrkZeX1/A==", "license": "Apache-2.0" }, "node_modules/@c15t/translations": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@c15t/translations/-/translations-2.2.1.tgz", - "integrity": "sha512-JgYXn+bTyys/7e7SMfu19zVBlW1cED6/CqJ5mbOmmfMr9MSkaAq0/UK/6/29FhcfCJKmHq+kQqKa0igX86mJeA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@c15t/translations/-/translations-2.3.0.tgz", + "integrity": "sha512-siriyyINJ5+mPEdvQ54tzf+DTbKr8KLmpYVlMsdQWRWeXeogZInSA6ujlXoga+MbP4MvageAXAyLeAlYR2OKcg==", "license": "Apache-2.0" }, "node_modules/@c15t/ui": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@c15t/ui/-/ui-2.2.1.tgz", - "integrity": "sha512-OlmEhScePX3xF+sPNWemLZaiJv80KuxsuxTf+Ip0ImREGeXdaOIG7Hp6IBU+8IOeJ723Q4LlD74gyV2NgTbXIQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@c15t/ui/-/ui-2.2.2.tgz", + "integrity": "sha512-kcdglK8pZF9/qwL8YwX3JLkxmbb65Q06r9UX95o1ETrQs8sxqvcdy4FluPzvJh7M7pE1pjZReBo2lEQO7ZvOWg==", "license": "Apache-2.0", "dependencies": { - "@c15t/translations": "2.2.1", - "c15t": "2.2.1" + "@c15t/translations": "2.3.0", + "c15t": "2.3.0" } }, + "node_modules/@code0-tech/crater-graphql-types": { + "version": "0.0.0-experimental-3015062248-5df677e860f3f27494804dde4fd31e4f50f034ed", + "resolved": "https://registry.npmjs.org/@code0-tech/crater-graphql-types/-/crater-graphql-types-0.0.0-experimental-3015062248-5df677e860f3f27494804dde4fd31e4f50f034ed.tgz", + "integrity": "sha512-tBQwmV+yYFhkemGIP7D2ikRmNaNedZgGfNm+4fHirJ0yNK272oHD7CjZSgy3uSEPSPhp0073qpMHKoDqVvnclQ==" + }, "node_modules/@code0-tech/pictor": { - "version": "0.18.3", - "resolved": "https://registry.npmjs.org/@code0-tech/pictor/-/pictor-0.18.3.tgz", - "integrity": "sha512-m/DVEw1cEkH5VOKYb7nf1HHIlUoWqu5HdEnpAoo+hhSPjhmE1ovsgZox73xF72k2ZCoN16cUcWSU8Osw7yXUtQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@code0-tech/pictor/-/pictor-1.0.0.tgz", + "integrity": "sha512-roj26WEgJzlOrZDYjZ3fxbqC6OaqARq1rQSx6/YwzpihTkgixJ+YjwnhBwwjUkCVBd0YDlRKzQP85B2Pe7bSNg==", "peerDependencies": { "@ark-ui/react": "^5.36.2", "@codemirror/autocomplete": "^6.20.0", @@ -603,9 +623,9 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.4.tgz", - "integrity": "sha512-Ryk9y9T0FFVF0cUGhAknveAyUOl/A1qReTFi+qPKtOh2Z9F4AUBz3XOrYD4ZEgZirdugVzHvd/2/Wcwy5OliTg==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.11.1.tgz", + "integrity": "sha512-O/4hG3SC1YwcmQ0d2UVNDs+AsaNWd1iHVxbTeEBuqH+6bExAiPK3iS/BvpY6rZGURALv4ZD3sIgcCmRvw3ehBg==", "license": "MIT", "peer": true, "dependencies": { @@ -627,13 +647,14 @@ } }, "node_modules/@codemirror/language": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.4.tgz", - "integrity": "sha512-1q4PaT+o6PbgpkJt4Q8Fv5XJxTy4FUZ4MWETtyiDw3J0Pyr9E2vqcKL+k9wcvjNTIsauxvE7OfmWj3FRPHQ76A==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.13.1.tgz", + "integrity": "sha512-zfvU2r3TyylQLMj/te+5CnQ0rSqZi8B1oTCBbQkagcLW4Xc6imab6qN+pEJhsuNOLaJqiRyBXp9UhWA1DhVvDw==", "license": "MIT", "peer": true, "dependencies": { "@codemirror/state": "^6.0.0", + "@codemirror/streamparser": "^6.0.0", "@codemirror/view": "^6.23.0", "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0", @@ -654,9 +675,9 @@ } }, "node_modules/@codemirror/search": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.7.1.tgz", - "integrity": "sha512-uMe5UO6PamJtSHrXhhHOzSX3ReWtiJrva6GnPMwSOrZtiExb5X5eExhr2OUZQVvdxPsKpY3Ro2mFbQadpPWmHA==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.7.2.tgz", + "integrity": "sha512-gUYkYhT2+n/+VGZ+8EzE5WFkYZUZYm1VOKDudIsNqh42uRVQJ0a6Yss9sdKT3MeOYfuL1N6AZA57oza0Oyr0LA==", "license": "MIT", "peer": true, "dependencies": { @@ -666,15 +687,22 @@ } }, "node_modules/@codemirror/state": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.7.1.tgz", - "integrity": "sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A==", + "version": "6.7.6", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.7.6.tgz", + "integrity": "sha512-kAz+AncRtKuIknedxT1bq4XwXv4UowhbkHU1myPrtVb/jZtImWuV5BXzv5vK6i3kYACsdiZiQKFQQ5Mq7elW8w==", "license": "MIT", "peer": true, "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } }, + "node_modules/@codemirror/streamparser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@codemirror/streamparser/-/streamparser-6.0.0.tgz", + "integrity": "sha512-JTFPF6xrfjt0mnfGPgzcLiMwYmvIyNaoizp8BYzv8FE8KrT6GBGDZ190rtt+O7Wke3gG/MFHyiY9YGNeimof4w==", + "license": "MIT", + "peer": true + }, "node_modules/@codemirror/theme-one-dark": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.3.tgz", @@ -689,9 +717,9 @@ } }, "node_modules/@codemirror/view": { - "version": "6.43.6", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.6.tgz", - "integrity": "sha512-EVunGSYN1wz1p75WY1s3Xg7t3i8Yol0kGZGizNdX9BUFgMFILYVe8/u6EVpo7Ff5PwbZuILb4QAq7IZoKzIEQA==", + "version": "6.43.14", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.14.tgz", + "integrity": "sha512-hC45YnmJNR1rz42OF57BLoQNFMV12/13drnvibDsR2quNDmldcb4WvYVV81hFQg56i9lcqQMEDqilhX2QDcGQQ==", "license": "MIT", "peer": true, "dependencies": { @@ -836,6 +864,15 @@ "stylis": "4.2.0" } }, + "node_modules/@emotion/babel-plugin/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@emotion/cache": { "version": "11.14.0", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", @@ -885,6 +922,15 @@ } } }, + "node_modules/@emotion/react/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@emotion/serialize": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", @@ -935,7 +981,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz", "integrity": "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==", - "deprecated": "Merged into tsx: https://tsx.is", + "deprecated": "Merged into tsx: https://tsx.hirok.io", "license": "MIT", "dependencies": { "esbuild": "~0.18.20", @@ -943,9 +989,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", "cpu": [ "ppc64" ], @@ -959,9 +1005,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", "cpu": [ "arm" ], @@ -975,9 +1021,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", "cpu": [ "arm64" ], @@ -991,9 +1037,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", "cpu": [ "x64" ], @@ -1007,9 +1053,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", "cpu": [ "arm64" ], @@ -1023,9 +1069,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", "cpu": [ "x64" ], @@ -1039,9 +1085,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", "cpu": [ "arm64" ], @@ -1055,9 +1101,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", "cpu": [ "x64" ], @@ -1071,9 +1117,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", "cpu": [ "arm" ], @@ -1087,9 +1133,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", "cpu": [ "arm64" ], @@ -1103,9 +1149,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", "cpu": [ "ia32" ], @@ -1119,9 +1165,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", "cpu": [ "loong64" ], @@ -1135,9 +1181,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", "cpu": [ "mips64el" ], @@ -1151,9 +1197,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", "cpu": [ "ppc64" ], @@ -1167,9 +1213,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", "cpu": [ "riscv64" ], @@ -1183,9 +1229,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", "cpu": [ "s390x" ], @@ -1199,9 +1245,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", "cpu": [ "x64" ], @@ -1215,9 +1261,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", "cpu": [ "arm64" ], @@ -1231,9 +1277,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", "cpu": [ "x64" ], @@ -1247,9 +1293,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", "cpu": [ "arm64" ], @@ -1263,9 +1309,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", "cpu": [ "x64" ], @@ -1279,9 +1325,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", "cpu": [ "arm64" ], @@ -1295,9 +1341,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", "cpu": [ "x64" ], @@ -1311,9 +1357,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", "cpu": [ "arm64" ], @@ -1327,9 +1373,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", "cpu": [ "ia32" ], @@ -1343,9 +1389,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", "cpu": [ "x64" ], @@ -1359,9 +1405,9 @@ } }, "node_modules/@esbuild-kit/core-utils/node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -1371,39 +1417,39 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" } }, "node_modules/@esbuild-kit/esm-loader": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/@esbuild-kit/esm-loader/-/esm-loader-2.6.5.tgz", "integrity": "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==", - "deprecated": "Merged into tsx: https://tsx.is", + "deprecated": "Merged into tsx: https://tsx.hirok.io", "license": "MIT", "dependencies": { "@esbuild-kit/core-utils": "^3.3.2", @@ -1899,13 +1945,13 @@ } }, "node_modules/@floating-ui/react": { - "version": "0.27.19", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.19.tgz", - "integrity": "sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog==", + "version": "0.27.20", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.20.tgz", + "integrity": "sha512-CMqMy7OaXl9W0eq1Uy7L7i2Y/anPvHmFmESd2CEw0t5YvZhcVCeo4MBevAmswRllX7Y2dEidA4ozGPunLSTQpw==", "license": "MIT", "dependencies": { - "@floating-ui/react-dom": "^2.1.8", - "@floating-ui/utils": "^0.2.11", + "@floating-ui/react-dom": "^2.1.9", + "@floating-ui/utils": "^0.2.12", "tabbable": "^6.0.0" }, "peerDependencies": { @@ -1932,6 +1978,15 @@ "integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==", "license": "MIT" }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@icons-pack/react-simple-icons": { "version": "13.15.1", "resolved": "https://registry.npmjs.org/@icons-pack/react-simple-icons/-/react-simple-icons-13.15.1.tgz", @@ -1951,9 +2006,9 @@ } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.4.tgz", - "integrity": "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.5.tgz", + "integrity": "sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==", "cpu": [ "arm64" ], @@ -1969,13 +2024,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.3.3" + "@img/sharp-libvips-darwin-arm64": "1.3.4" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.4.tgz", - "integrity": "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.5.tgz", + "integrity": "sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==", "cpu": [ "x64" ], @@ -1991,20 +2046,20 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.3.3" + "@img/sharp-libvips-darwin-x64": "1.3.4" } }, "node_modules/@img/sharp-freebsd-wasm32": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.4.tgz", - "integrity": "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", + "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", "license": "Apache-2.0", "optional": true, "os": [ "freebsd" ], "dependencies": { - "@img/sharp-wasm32": "0.35.4" + "@img/sharp-wasm32": "0.35.5" }, "engines": { "node": ">=20.9.0" @@ -2014,9 +2069,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.3.tgz", - "integrity": "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.4.tgz", + "integrity": "sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==", "cpu": [ "arm64" ], @@ -2030,9 +2085,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.3.tgz", - "integrity": "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.4.tgz", + "integrity": "sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==", "cpu": [ "x64" ], @@ -2046,9 +2101,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.3.tgz", - "integrity": "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.4.tgz", + "integrity": "sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==", "cpu": [ "arm" ], @@ -2065,9 +2120,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.3.tgz", - "integrity": "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.4.tgz", + "integrity": "sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==", "cpu": [ "arm64" ], @@ -2084,9 +2139,9 @@ } }, "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.3.tgz", - "integrity": "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.4.tgz", + "integrity": "sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==", "cpu": [ "ppc64" ], @@ -2103,9 +2158,9 @@ } }, "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.3.tgz", - "integrity": "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.4.tgz", + "integrity": "sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==", "cpu": [ "riscv64" ], @@ -2122,9 +2177,9 @@ } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.3.tgz", - "integrity": "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.4.tgz", + "integrity": "sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==", "cpu": [ "s390x" ], @@ -2141,9 +2196,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.3.tgz", - "integrity": "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.4.tgz", + "integrity": "sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==", "cpu": [ "x64" ], @@ -2160,9 +2215,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.3.tgz", - "integrity": "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.4.tgz", + "integrity": "sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==", "cpu": [ "arm64" ], @@ -2179,9 +2234,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.3.tgz", - "integrity": "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.4.tgz", + "integrity": "sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==", "cpu": [ "x64" ], @@ -2198,9 +2253,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.4.tgz", - "integrity": "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.5.tgz", + "integrity": "sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==", "cpu": [ "arm" ], @@ -2219,13 +2274,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.3.3" + "@img/sharp-libvips-linux-arm": "1.3.4" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.4.tgz", - "integrity": "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.5.tgz", + "integrity": "sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==", "cpu": [ "arm64" ], @@ -2244,13 +2299,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.3.3" + "@img/sharp-libvips-linux-arm64": "1.3.4" } }, "node_modules/@img/sharp-linux-ppc64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.4.tgz", - "integrity": "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.5.tgz", + "integrity": "sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==", "cpu": [ "ppc64" ], @@ -2269,13 +2324,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.3.3" + "@img/sharp-libvips-linux-ppc64": "1.3.4" } }, "node_modules/@img/sharp-linux-riscv64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.4.tgz", - "integrity": "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.5.tgz", + "integrity": "sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==", "cpu": [ "riscv64" ], @@ -2294,13 +2349,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.3.3" + "@img/sharp-libvips-linux-riscv64": "1.3.4" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.4.tgz", - "integrity": "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.5.tgz", + "integrity": "sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==", "cpu": [ "s390x" ], @@ -2319,13 +2374,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.3.3" + "@img/sharp-libvips-linux-s390x": "1.3.4" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.4.tgz", - "integrity": "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.5.tgz", + "integrity": "sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==", "cpu": [ "x64" ], @@ -2344,13 +2399,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.3.3" + "@img/sharp-libvips-linux-x64": "1.3.4" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.4.tgz", - "integrity": "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.5.tgz", + "integrity": "sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==", "cpu": [ "arm64" ], @@ -2369,13 +2424,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.4.tgz", - "integrity": "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.5.tgz", + "integrity": "sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==", "cpu": [ "x64" ], @@ -2394,13 +2449,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.3.3" + "@img/sharp-libvips-linuxmusl-x64": "1.3.4" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz", - "integrity": "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", + "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { @@ -2424,16 +2479,16 @@ } }, "node_modules/@img/sharp-webcontainers-wasm32": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.4.tgz", - "integrity": "sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", + "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", "cpu": [ "wasm32" ], "license": "Apache-2.0", "optional": true, "dependencies": { - "@img/sharp-wasm32": "0.35.4" + "@img/sharp-wasm32": "0.35.5" }, "engines": { "node": ">=20.9.0" @@ -2443,9 +2498,9 @@ } }, "node_modules/@img/sharp-win32-arm64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.4.tgz", - "integrity": "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.5.tgz", + "integrity": "sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==", "cpu": [ "arm64" ], @@ -2462,9 +2517,9 @@ } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.4.tgz", - "integrity": "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.5.tgz", + "integrity": "sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==", "cpu": [ "ia32" ], @@ -2481,9 +2536,9 @@ } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.4.tgz", - "integrity": "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.5.tgz", + "integrity": "sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==", "cpu": [ "x64" ], @@ -2500,9 +2555,9 @@ } }, "node_modules/@internationalized/date": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.12.2.tgz", - "integrity": "sha512-FY1Y+H64NDs+HAF6omlnWxm3mEpfgaCSWtL5l551ZZfImA+kGjPFgrnJrGjH6lfmLL0g8Z/mBu1R3kufeCp6Jw==", + "version": "3.12.4", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.12.4.tgz", + "integrity": "sha512-M1dEn4c1U1HsSlaVR8upZtSqvXrTkHDfv18H01uCSJyjVLDxnBR38v/fMxecmlwXKR4i9HeZcmgQAPE6A+aGJQ==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -2510,9 +2565,9 @@ } }, "node_modules/@internationalized/number": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.6.tgz", - "integrity": "sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ==", + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.7.tgz", + "integrity": "sha512-3ji1fcrT+FPAK86UqEhB/psHixYo6niWPJtt7+qRaYFynt/BaJG8GhAPimtWUpEiVSTq8ZM8L5psMxGquiB/Vg==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -2550,9 +2605,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -2578,309 +2633,523 @@ "license": "Apache-2.0", "peer": true }, - "node_modules/@lexical/clipboard": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.41.0.tgz", - "integrity": "sha512-Ex5lPkb4NBBX1DCPzOAIeHBJFH1bJcmATjREaqpnTfxCbuOeQkt44wchezUA0oDl+iAxNZ3+pLLWiUju9icoSA==", + "node_modules/@lexical/a11y": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/a11y/-/a11y-0.50.0.tgz", + "integrity": "sha512-qxEe+ZOeti/jueuVTx0fNc0GO8aD6OOBLP6z48VP2ACJkEW+jI15bidI9rfT+FHpDnmWCmYChHUiVL477q6JeQ==", "license": "MIT", "dependencies": { - "@lexical/html": "0.41.0", - "@lexical/list": "0.41.0", - "@lexical/selection": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/extension": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@lexical/code": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/code/-/code-0.41.0.tgz", - "integrity": "sha512-0hoNi1KC9/N3SBOGcOcFqnT0OpwmcRRAhfxTKMGqfCtCvAMzULVwZ8RWc9/NV9bKYESgBTW5D9xkDANP2mspHg==", + "node_modules/@lexical/clipboard": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.50.0.tgz", + "integrity": "sha512-Sb+bDluH0JZNRrSURIfry2ZwdkQPTSRMtpV6XHRRKMFh86o4KcR9PMbfSdaGxZOHctHNabTp0JRmkpt/zrItjQ==", "license": "MIT", "dependencies": { - "@lexical/utils": "0.41.0", - "lexical": "0.41.0", - "prismjs": "^1.30.0" + "@lexical/extension": "0.50.0", + "@lexical/html": "0.50.0", + "@lexical/internal": "0.50.0", + "@lexical/list": "0.50.0", + "@lexical/selection": "0.50.0", + "@lexical/utils": "0.50.0", + "@types/trusted-types": "^2.0.7", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@lexical/devtools-core": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.41.0.tgz", - "integrity": "sha512-FzJtluBhBc8bKS11TUZe72KoZN/hnzIyiiM0SPJAsPwGpoXuM01jqpXQGybWf/1bWB+bmmhOae7O4Nywi/Csuw==", + "node_modules/@lexical/code-core": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/code-core/-/code-core-0.50.0.tgz", + "integrity": "sha512-0KPTDmcPL/4ObLy5N/yFo+t6l/bHE63NODPOsyUN1NACc62i0Pc8NXGwo4xhaLcpgIRDiN1ABZ+h3AVLp5GlWQ==", "license": "MIT", "dependencies": { - "@lexical/html": "0.41.0", - "@lexical/link": "0.41.0", - "@lexical/mark": "0.41.0", - "@lexical/table": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/extension": "0.50.0", + "@lexical/html": "0.50.0", + "@lexical/internal": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" }, "peerDependencies": { - "react": ">=17.x", - "react-dom": ">=17.x" + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@lexical/dragon": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.41.0.tgz", - "integrity": "sha512-gBEqkk8Q6ZPruvDaRcOdF1EK9suCVBODzOCcR+EnoJTaTjfDkCM7pkPAm4w90Wa1wCZEtFHvCfas+jU9MDSumg==", + "node_modules/@lexical/devtools-core": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.50.0.tgz", + "integrity": "sha512-70m994RIZ5sdYjtGEHTo6nIOkUddaWVVl920WGWR0zqNblxYmFuDQAsMgz6nJmA9TNbCbLLufFi5RMPwnBVVOA==", "license": "MIT", "dependencies": { - "@lexical/extension": "0.41.0", - "lexical": "0.41.0" - } - }, - "node_modules/@lexical/extension": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/extension/-/extension-0.41.0.tgz", - "integrity": "sha512-sF4SPiP72yXvIGchmmIZ7Yg2XZTxNLOpFEIIzdqG7X/1fa1Ham9P/T7VbrblWpF6Ei5LJtK9JgNVB0hb4l3o1g==", + "@lexical/html": "0.50.0", + "@lexical/link": "0.50.0", + "@lexical/mark": "0.50.0", + "@lexical/table": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "react": ">=18.x", + "react-dom": ">=18.x", + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@lexical/dragon": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.50.0.tgz", + "integrity": "sha512-JX+uzkRn4QLIljS6bWS93Vg1TYIohTP7TXP2mUz6RrxW+x8iqzJuaAR8tjN4SkpCTxI8VpBNWFU8d6B7I9qnXg==", "license": "MIT", "dependencies": { - "@lexical/utils": "0.41.0", - "@preact/signals-core": "^1.11.0", - "lexical": "0.41.0" + "@lexical/extension": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@lexical/extension": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/extension/-/extension-0.50.0.tgz", + "integrity": "sha512-iktLl+eLOVT6hE4BOy2GIQeuIOmsksWoPDT9WhEkIlV5IEM/OBLGAzO23Q2G0UV89tXDq1wKa4p6vwLWlCHWLA==", + "license": "MIT", + "dependencies": { + "@lexical/internal": "0.50.0", + "@lexical/utils": "0.50.0", + "@preact/signals-core": "^1.14.1", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/hashtag": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.41.0.tgz", - "integrity": "sha512-tFWM74RW4KU0E/sj2aowfWl26vmLUTp331CgVESnhQKcZBfT40KJYd57HEqBDTfQKn4MUhylQCCA0hbpw6EeFQ==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.50.0.tgz", + "integrity": "sha512-KnkJU+49HV47KrgCoS+zqUQuTZ/e5CtH7ttu0ZgAcZJyNojZ7kHbqtdiH78kZSuqBknD75l+VCNJBpg6ShdtlQ==", "license": "MIT", "dependencies": { - "@lexical/text": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/text": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/headless": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/headless/-/headless-0.41.0.tgz", - "integrity": "sha512-MH8oDuUKdM/Jq0c9vlEEkCL9pEQg4SwyrABBGIbFf+87VBJ5EWDdG9g1vJq7fKSDxfhFux7F5+i+zgUnxOQR/g==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/headless/-/headless-0.50.0.tgz", + "integrity": "sha512-UkJsks5yNZFiBvlr1SM6M6n4D66Tayj7R3ylxpaL/gXbKgOCMUz06Q57QhMIRqaSGGiSIrzZw1Ge5WZE70imGg==", "license": "MIT", "dependencies": { - "happy-dom": "^20.0.0", - "lexical": "0.41.0" + "@lexical/internal": "0.50.0", + "happy-dom": "^20.9.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/history": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.41.0.tgz", - "integrity": "sha512-kGoVWsiOn62+RMjRolRa+NXZl8jFwxav6GNDiHH8yzivtoaH8n1SwUfLJELXCzeqzs81HySqD4q30VLJVTGoDg==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.50.0.tgz", + "integrity": "sha512-UMbvTWOHxfS3SQA0oWN8uvmG64WrFgurojM1KoYjxuUbPFGjumD6al5zsA06d6+TkCDSw6l639tJ43bFr3HE5A==", "license": "MIT", "dependencies": { - "@lexical/extension": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/extension": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/html": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.41.0.tgz", - "integrity": "sha512-3RyZy+H/IDKz2D66rNN/NqYx87xVFrngfEbyu1OWtbY963RUFnopiVHCQvsge/8kT04QSZ7U/DzjVFqeNS6clg==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.50.0.tgz", + "integrity": "sha512-vMdMWvOyD9EXljNCJk3thms/WEBMUR0rLLaJdzcOk/CwUiAv1KPopGp/8vW0zFmnu42n5i9ufERv0BZ/UGzZMw==", "license": "MIT", "dependencies": { - "@lexical/selection": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/extension": "0.50.0", + "@lexical/internal": "0.50.0", + "@lexical/selection": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@lexical/internal": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/internal/-/internal-0.50.0.tgz", + "integrity": "sha512-FGfEKY1L1aIHEh/O+RcRxeLRQV0g95MuU5b26YuzGGyd0IX90pliK9bVph54OaqDdS1AQ0MEVEFGXfSXaGJzxg==", + "license": "MIT", + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/link": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.41.0.tgz", - "integrity": "sha512-Rjtx5cGWAkKcnacncbVsZ1TqRnUB2Wm4eEVKpaAEG41+kHgqghzM2P+UGT15yROroxJu8KvAC9ISiYFiU4XE1w==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.50.0.tgz", + "integrity": "sha512-J/Wn7+XzW3Tm56RKCaHeISPIRJrWaSywGasna7yaMwvZykTM9JS5D/bzPCg0pCCxw8qsPeRX29oDQ+nUEixmUA==", "license": "MIT", "dependencies": { - "@lexical/extension": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/a11y": "0.50.0", + "@lexical/extension": "0.50.0", + "@lexical/html": "0.50.0", + "@lexical/internal": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/list": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.41.0.tgz", - "integrity": "sha512-RXvB+xcbzVoQLGRDOBRCacztG7V+bI95tdoTwl8pz5xvgPtAaRnkZWMDP+yMNzMJZsqEChdtpxbf0NgtMkun6g==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.50.0.tgz", + "integrity": "sha512-eSGU10DUqS+seXkGfTVGJ475M4scdaDE15Vk52nuYODhi0lbO6zNbIoDDGKxaxvzs/CfrHHT3AUGYmruIp/LPw==", "license": "MIT", "dependencies": { - "@lexical/extension": "0.41.0", - "@lexical/selection": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/extension": "0.50.0", + "@lexical/html": "0.50.0", + "@lexical/internal": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/mark": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/mark/-/mark-0.41.0.tgz", - "integrity": "sha512-UO5WVs9uJAYIKHSlYh4Z1gHrBBchTOi21UCYBIZ7eAs4suK84hPzD+3/LAX5CB7ZltL6ke5Sly3FOwNXv/wfpA==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/mark/-/mark-0.50.0.tgz", + "integrity": "sha512-FClGXbLzEHFX0hJRslXb/YdO5xSZLMuPOj9skRoA3fwbWRLsBhfaIYSEz+7pjMF4P8fFqW2vPCFHvgJD+SgYXw==", "license": "MIT", "dependencies": { - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/markdown": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.41.0.tgz", - "integrity": "sha512-bzI73JMXpjGFhqUWNV6KqfjWcgAWzwFT+J3RHtbCF5rysC8HLldBYojOgAAtPfXqfxyv2mDzsY7SoJ75s9uHZA==", - "license": "MIT", - "dependencies": { - "@lexical/code": "0.41.0", - "@lexical/link": "0.41.0", - "@lexical/list": "0.41.0", - "@lexical/rich-text": "0.41.0", - "@lexical/text": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" - } - }, - "node_modules/@lexical/offset": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/offset/-/offset-0.41.0.tgz", - "integrity": "sha512-2RHBXZqC8gm3X9C0AyRb0M8w7zJu5dKiasrif+jSKzsxPjAUeF1m95OtIOsWs1XLNUgASOSUqGovDZxKJslZfA==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.50.0.tgz", + "integrity": "sha512-H2z7Eed7sVCX+K/UmULqPCpkB5Ch86+/vRHs+VCe7xmDkvBRYZQmErUqx14cV7QwcrQ+wclcDlCojJTUh5MBOQ==", "license": "MIT", "dependencies": { - "lexical": "0.41.0" + "@lexical/code-core": "0.50.0", + "@lexical/internal": "0.50.0", + "@lexical/link": "0.50.0", + "@lexical/list": "0.50.0", + "@lexical/rich-text": "0.50.0", + "@lexical/selection": "0.50.0", + "@lexical/text": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/overflow": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.41.0.tgz", - "integrity": "sha512-Iy6ZiJip8X14EBYt1zKPOrXyQ4eG9JLBEoPoSVBTiSbVd+lYicdUvaOThT0k0/qeVTN9nqTaEltBjm56IrVKCQ==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.50.0.tgz", + "integrity": "sha512-jeBFFaViAWxg+i7UKoWxN+VImvwNXq9fuRUMEMXFZqfWhgsC37/NvUOMF4oNVf3mppTMsv38n2y1qR51JLujcQ==", "license": "MIT", "dependencies": { - "lexical": "0.41.0" + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/plain-text": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.41.0.tgz", - "integrity": "sha512-HIsGgmFUYRUNNyvckun33UQfU7LRzDlxymHUq67+Bxd5bXqdZOrStEKJXuDX+LuLh/GXZbaWNbDLqwLBObfbQg==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.50.0.tgz", + "integrity": "sha512-X1iH6yamtE6PZRlUB4T2epUOzKA19ONozWja3A87mlXEDVhCM7hxeDFzxzWnbqY1/TWsyy8ZCaFktz8GRzTFvw==", "license": "MIT", "dependencies": { - "@lexical/clipboard": "0.41.0", - "@lexical/dragon": "0.41.0", - "@lexical/selection": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/clipboard": "0.50.0", + "@lexical/dragon": "0.50.0", + "@lexical/extension": "0.50.0", + "@lexical/selection": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/react": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/react/-/react-0.41.0.tgz", - "integrity": "sha512-7+GUdZUm6sofWm+zdsWAs6cFBwKNsvsHezZTrf6k8jrZxL461ZQmbz/16b4DvjCGL9r5P1fR7md9/LCmk8TiCg==", - "license": "MIT", - "dependencies": { - "@floating-ui/react": "^0.27.16", - "@lexical/devtools-core": "0.41.0", - "@lexical/dragon": "0.41.0", - "@lexical/extension": "0.41.0", - "@lexical/hashtag": "0.41.0", - "@lexical/history": "0.41.0", - "@lexical/link": "0.41.0", - "@lexical/list": "0.41.0", - "@lexical/mark": "0.41.0", - "@lexical/markdown": "0.41.0", - "@lexical/overflow": "0.41.0", - "@lexical/plain-text": "0.41.0", - "@lexical/rich-text": "0.41.0", - "@lexical/table": "0.41.0", - "@lexical/text": "0.41.0", - "@lexical/utils": "0.41.0", - "@lexical/yjs": "0.41.0", - "lexical": "0.41.0", - "react-error-boundary": "^6.0.0" - }, - "peerDependencies": { - "react": ">=17.x", - "react-dom": ">=17.x" - } - }, - "node_modules/@lexical/react/node_modules/react-error-boundary": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-6.1.2.tgz", - "integrity": "sha512-3DpCr5HVdZ0caUjYE/kIHBEJN0mNP3ZCgf16c48uJ5TbWjorKVp+YG8W3XqlJ7vJAVNw6wNIImyPXmFydwmyng==", - "license": "MIT", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/react/-/react-0.50.0.tgz", + "integrity": "sha512-q9USUeO5tunqPmxDG9D11kydRts5jgXO1WJ62u86WXeHOGjMtSjvVwLY+PfQDhCn0aNYF7XvGaIM3Aa04UxF7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.27.19", + "@lexical/a11y": "0.50.0", + "@lexical/devtools-core": "0.50.0", + "@lexical/dragon": "0.50.0", + "@lexical/extension": "0.50.0", + "@lexical/hashtag": "0.50.0", + "@lexical/history": "0.50.0", + "@lexical/internal": "0.50.0", + "@lexical/link": "0.50.0", + "@lexical/list": "0.50.0", + "@lexical/mark": "0.50.0", + "@lexical/markdown": "0.50.0", + "@lexical/overflow": "0.50.0", + "@lexical/plain-text": "0.50.0", + "@lexical/rich-text": "0.50.0", + "@lexical/table": "0.50.0", + "@lexical/text": "0.50.0", + "@lexical/utils": "0.50.0", + "@lexical/yjs": "0.50.0", + "lexical": "0.50.0" + }, "peerDependencies": { - "react": "^18.0.0 || ^19.0.0" + "react": ">=18.x", + "react-dom": ">=18.x", + "typescript": ">=5.2", + "yjs": ">=13.5.37" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "yjs": { + "optional": true + } } }, "node_modules/@lexical/rich-text": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.41.0.tgz", - "integrity": "sha512-yUcr7ZaaVTZNi8bow4CK1M8jy2qyyls1Vr+5dVjwBclVShOL/F/nFyzBOSb6RtXXRbd3Ahuk9fEleppX/RNIdw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.50.0.tgz", + "integrity": "sha512-4EDspglulL6zHlV53Azsq4OduRunJqyrDkldZ8ekrE8ujHhvu2UB3Utzq98Z8TSIllFPvNKmW0Qp/9lJ7378Ag==", "license": "MIT", "dependencies": { - "@lexical/clipboard": "0.41.0", - "@lexical/dragon": "0.41.0", - "@lexical/selection": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/a11y": "0.50.0", + "@lexical/clipboard": "0.50.0", + "@lexical/dragon": "0.50.0", + "@lexical/extension": "0.50.0", + "@lexical/html": "0.50.0", + "@lexical/selection": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/selection": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.41.0.tgz", - "integrity": "sha512-1s7/kNyRzcv5uaTwsUL28NpiisqTf5xZ1zNukLsCN1xY+TWbv9RE9OxIv+748wMm4pxNczQe/UbIBODkbeknLw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.50.0.tgz", + "integrity": "sha512-Lu4W+Ht7xd3+R8fXorzsl1LbDMF7UALgvh0LA/nbY5qlmozEyfHr1z4oaV4HAzXN5F8NxSrxCfDEXt5EHU1bfA==", "license": "MIT", "dependencies": { - "lexical": "0.41.0" + "@lexical/internal": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/table": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.41.0.tgz", - "integrity": "sha512-d3SPThBAr+oZ8O74TXU0iXM3rLbrAVC7/HcOnSAq7/AhWQW8yMutT51JQGN+0fMLP9kqoWSAojNtkdvzXfU/+A==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.50.0.tgz", + "integrity": "sha512-K5GDw8oIsujL8IQY9L5PJXxkODs0c9gqL1CROcfLw7kE4icNXeIVrK/kQ7K3SxQ/stpb5NnBLERTK9ohzPEuLQ==", "license": "MIT", "dependencies": { - "@lexical/clipboard": "0.41.0", - "@lexical/extension": "0.41.0", - "@lexical/utils": "0.41.0", - "lexical": "0.41.0" + "@lexical/clipboard": "0.50.0", + "@lexical/extension": "0.50.0", + "@lexical/html": "0.50.0", + "@lexical/internal": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/text": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.41.0.tgz", - "integrity": "sha512-gGA+Anc7ck110EXo4KVKtq6Ui3M7Vz3OpGJ4QE6zJHWW8nV5h273koUGSutAMeoZgRVb6t01Izh3ORoFt/j1CA==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.50.0.tgz", + "integrity": "sha512-K2bf6NfzS+PutNrrNlWr47kZx34fCYyiX1vPT4a1/sob8LsGrYwy9mseyFFlNYDlWSP2U/xIKLv2JuaYZX8ohw==", "license": "MIT", "dependencies": { - "lexical": "0.41.0" + "@lexical/internal": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/utils": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.41.0.tgz", - "integrity": "sha512-Wlsokr5NQCq83D+7kxZ9qs5yQ3dU3Qaf2M+uXxLRoPoDaXqW8xTWZq1+ZFoEzsHzx06QoPa4Vu/40BZR91uQPg==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.50.0.tgz", + "integrity": "sha512-iFEKYQufeCtx9I918SteutyMkEKlR6VNldovnCE2ue9ilfKMnj8ghhenMaLzRfslzttvMLrn8d9DP5TWysZqZw==", "license": "MIT", "dependencies": { - "@lexical/selection": "0.41.0", - "lexical": "0.41.0" + "@lexical/internal": "0.50.0", + "@lexical/selection": "0.50.0", + "lexical": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lexical/yjs": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.41.0.tgz", - "integrity": "sha512-PaKTxSbVC4fpqUjQ7vUL9RkNF1PjL8TFl5jRe03PqoPYpE33buf3VXX6+cOUEfv9+uknSqLCPHoBS/4jN3a97w==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.50.0.tgz", + "integrity": "sha512-AfKaHZs0IpHDUS1uoB7yWbhP1VRVWuUbHZ3HnNI2bqhn0h05SWfxxwt/QCwaldLM0WzY9wszpQc8VFSHipjldA==", "license": "MIT", "dependencies": { - "@lexical/offset": "0.41.0", - "@lexical/selection": "0.41.0", - "lexical": "0.41.0" + "@lexical/internal": "0.50.0", + "@lexical/selection": "0.50.0", + "lexical": "0.50.0" }, "peerDependencies": { - "yjs": ">=13.5.22" + "typescript": ">=5.2", + "yjs": ">=13.5.37" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@lezer/common": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.2.tgz", - "integrity": "sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.3.tgz", + "integrity": "sha512-H0iErY4e43LpXbYDyBci5W4v/RwTgGV3YzYOlJPiGZ8RY8w51kVE+xLn1tg3Z6UmSfyETvtsUK3r7YsgDQEI7Q==", "license": "MIT", "peer": true }, "node_modules/@lezer/highlight": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz", - "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.5.tgz", + "integrity": "sha512-O1GMVKgtf5YspFaRzpmqkVgMtIk2HG9uMAbH6wdAIdNh3TVzCsch/+cRi+6l2//UGDKe6NB9BW3cvuR5ezMQ0w==", "license": "MIT", "peer": true, "dependencies": { @@ -2900,9 +3169,9 @@ } }, "node_modules/@lezer/lr": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.10.tgz", - "integrity": "sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==", + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.11.tgz", + "integrity": "sha512-UwgZcl1R66H2hDzBrA7kWyYmX6s8p5TQ+e/t7CuvgCtBEPxbEPaHYHu+pJBvTvDotEJpuQkJjbXuHiw5Cixxgw==", "license": "MIT", "peer": true, "dependencies": { @@ -2910,9 +3179,9 @@ } }, "node_modules/@marijn/find-cluster-break": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.3.tgz", - "integrity": "sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.4.tgz", + "integrity": "sha512-Wy0V7+SGUjnF9/TkiM1hKVDPj7jKXduPNboMVtHTA8dySMURWqfg/JZ9E2Sq8JgSJmkl7k7Qe9FLeMSrSraWmQ==", "license": "MIT", "peer": true }, @@ -2940,34 +3209,34 @@ } }, "node_modules/@mux/mux-data-google-ima": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@mux/mux-data-google-ima/-/mux-data-google-ima-0.3.17.tgz", - "integrity": "sha512-4wpH6dYybyZhqLn9qGn/+67Z8MZnQRAdqTFEEZw2bx61M9q01uPYYHxd8qwOnYtUGEeafsdTwVHVxKHGD3oc1A==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@mux/mux-data-google-ima/-/mux-data-google-ima-0.3.18.tgz", + "integrity": "sha512-YFSz+bconNzW/HtnYFb7xC6tmHVf7cHQsIIIOTtvSZw4qge7mpM1Ex96hB3EWFnU73gA6GAf00xwJnPXGKwOig==", "license": "MIT", "dependencies": { - "mux-embed": "5.18.1" + "mux-embed": "5.18.2" } }, "node_modules/@mux/mux-player": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-3.13.0.tgz", - "integrity": "sha512-vh4CIMahUa29gys+mlfsOFKYKAKXxE07jSWk9WZxkdpGBW1fKfCQXlNxBoAIQlPa9Uk4MZuM3HVgqdW6aTuaZg==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player/-/mux-player-3.14.0.tgz", + "integrity": "sha512-vb1czZOL+L1PA4hNbiLBO913CMtJ5LTvJ5hjck+ba93MNNpv/Ie86TxtvspXWK6fufEWiCoCH5GK81A/aEWQhw==", "license": "MIT", "dependencies": { - "@mux/mux-video": "0.31.0", - "@mux/playback-core": "0.35.0", - "media-chrome": "~4.19.0", + "@mux/mux-video": "0.31.5", + "@mux/playback-core": "0.36.0", + "media-chrome": "~4.19.3", "player.style": "^0.3.0" } }, "node_modules/@mux/mux-player-react": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-3.13.0.tgz", - "integrity": "sha512-7IkImo1H3rUYeuWHI/L0L7sGUqBvZCvptx3+4igc+P/V3WgqNFjOyQlcyxzxgXNtNNhGmkn5NaF3TU9DPbOmAQ==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@mux/mux-player-react/-/mux-player-react-3.14.0.tgz", + "integrity": "sha512-TmEhiYq30mUzBaMlvl7fX2V3kVW8JqnlmrcOVmxYZynlQMwPprd6Dz1h2frEANa6WO6XiucVZdzT/nqhhOlxnA==", "license": "MIT", "dependencies": { - "@mux/mux-player": "3.13.0", - "@mux/playback-core": "0.35.0", + "@mux/mux-player": "3.14.0", + "@mux/playback-core": "0.36.0", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -2985,26 +3254,27 @@ } }, "node_modules/@mux/mux-video": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.31.0.tgz", - "integrity": "sha512-DvO2GynIJhPDc0LMuWvC144lCF+E07NI+chrg/vcRQlCf2fPdNNqCSMoaRdWu2S2v/Orsc85giT9K6GRbjbzgA==", + "version": "0.31.5", + "resolved": "https://registry.npmjs.org/@mux/mux-video/-/mux-video-0.31.5.tgz", + "integrity": "sha512-Cs2SUiKhW5puhua071z6CDHFFKu1qtvAot0LtJBFrYIEN3CWTXJ6hrGpPr6JVVCtaTHXQ8nbArOQ70cI1A/gmw==", "license": "MIT", "dependencies": { - "@mux/mux-data-google-ima": "^0.3.4", - "@mux/playback-core": "0.35.0", - "castable-video": "~1.1.13", + "@mux/mux-data-google-ima": "^0.3.17", + "@mux/playback-core": "0.36.0", + "@types/google_interactive_media_ads_types": "^3.697.0", + "castable-video": "~1.1.16", "custom-media-element": "~1.4.6", "media-tracks": "~0.3.5" } }, "node_modules/@mux/playback-core": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.35.0.tgz", - "integrity": "sha512-7Zi1EJ9sQNIUlQVBjJCXV0CB+rUVEsU3vNRElRV4xnD7dbpoioIAhe1SjZNBifjnK5aBKLDwQHypbnL3Cw3a5A==", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/@mux/playback-core/-/playback-core-0.36.0.tgz", + "integrity": "sha512-HCACbUUDQ3j7dA9b7zqa9dsqjQOS6PlETPyiHYS4wfZiY0dciAQhIjymCBtpfXQg+WeSzD1Clsj2Uq0cMev36g==", "license": "MIT", "dependencies": { - "hls.js": "~1.6.15", - "mux-embed": "^5.16.1" + "hls.js": "~1.7.0", + "mux-embed": "^5.18.1" } }, "node_modules/@mvriu5/payload-ai": { @@ -3099,33 +3369,36 @@ } }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.5.tgz", + "integrity": "sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==", "license": "MIT", "optional": true, "dependencies": { "@tybys/wasm-util": "^0.10.3" }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=23.5.0" + }, "funding": { "type": "github", "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "node_modules/@next/env": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.3.6.tgz", - "integrity": "sha512-x9Vblze1EbtltQYnNH38xCPWU3TVfBd1eXqA3+w9+BTpedkkdNpAaltXlGQ/nsc1+E0mVTNrtcbX3GoO09zeLQ==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.4.1.tgz", + "integrity": "sha512-5sUUrrSvs/2/2LnLoesybMGx12EtPB46fdZ6RhAw0XDGSPxU2LFyQBB7yuEiOFFJPKmBY6+q2jTr1/AMbnp0/g==", "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.3.6.tgz", - "integrity": "sha512-E/7GEqaUkt8mk/T8v9lAnrhzR06kdq1ZBkC12F8tAMkdIadwNp3H1KqHynDHrpcTlGCUdq/qu6vUL2aYVyYBdw==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.4.1.tgz", + "integrity": "sha512-U+hQ5Gj3fpzf4fveTIF3dpUFYhaSW8vHhdAnbiIomzXzg7boreYFgBqprepXFtW4sw+aTttiNmg0gew/iFNhbg==", "cpu": [ "arm64" ], @@ -3139,9 +3412,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.3.6.tgz", - "integrity": "sha512-yBE893/nDWTlaiBD1p+qgt7NUen4U5R6FXyH0s67Npq1S3E0cVSef1WIXC2xBRgQvwAvJq6DnS6Y6PrY0cy4Ew==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.4.1.tgz", + "integrity": "sha512-/hqC3V1XLUjhMASf/WridKdO9FXoEgN3HBWmtKbj00MPgnltutfraWJ3bYTpCRIgEIpbjJyOVLpYgAhh/BkdcQ==", "cpu": [ "x64" ], @@ -3155,9 +3428,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.3.6.tgz", - "integrity": "sha512-KJDpjBqBPYlvkivmyrp+Qys6k/7ksbqGQvRVc6ZEGfR+cjQxx+nUkJaWmNZJsmoOrqYNbaXByF8wa0lBwDhB3Q==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.4.1.tgz", + "integrity": "sha512-GHzncHbcaS9g95kcvTNtKQW3aCLoR+xc3Jm7qrkpk1R+D2BjMHIPyvQGRPKCdMX95BsH/421jBUK06q9tEwzjw==", "cpu": [ "arm64" ], @@ -3174,9 +3447,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.3.6.tgz", - "integrity": "sha512-mqNg2K+hvWskSRb/QM+Ix412DvBsuSF0XV+frTSw5vmoucNnIlynFwKYew8D01bfATErMOM7Bujrf0BA5DRKFA==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.4.1.tgz", + "integrity": "sha512-1SuJyDxW/PR9dHJat/ZRgcYLhuSZ+1psP4DlKb2tKIuXbjygqpLrJWRSq+onZQBv8LcmU67EIrmb6c3XTaJLjw==", "cpu": [ "arm64" ], @@ -3193,9 +3466,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.3.6.tgz", - "integrity": "sha512-nFncBNGAYouRHjRVaITs9beZRfhX4ssVwpnvPIAbkZVH6LtGoAVlH4bJ8Cnf9SOo9bsXgPFer/GdHtEE3JNOkw==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.4.1.tgz", + "integrity": "sha512-Istng1hMGp9TGO4lUqeKLd70MPN/OOkucVTP2Nmj+gLkwBgmPqUw8CJYBCC7nbl/B/23bBCcjCI5Hsh6hazC1A==", "cpu": [ "x64" ], @@ -3212,9 +3485,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.3.6.tgz", - "integrity": "sha512-5Mf3cHDGR/Iz0ng2Bj3zUR3p5QS9YK3Hn2QiAfavFmyF48zwThAjpFoiTKNIcOHLYS4zEk+gzyJ/9deQ2ZB8yQ==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.4.1.tgz", + "integrity": "sha512-aSC9wMNiZRRFVpPkPWBzRwLQxIGm/CiQcXyFF1XNcgodb+uMxdk7aSSGGpDXCbnvZdf4itjHxpOd5h7i7zaiYw==", "cpu": [ "x64" ], @@ -3231,9 +3504,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.3.6.tgz", - "integrity": "sha512-0jkJy0C2kbrJWTk4YLa3xk80pVBpx8FCHJym7CnUfDAXe/FWv5qT7SQJbR0KuemyxaEDlEx5WT4VQJoTW+/9Qw==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.4.1.tgz", + "integrity": "sha512-t/myvwFDlypMUjRvbBf8qLPyuaB0iXYYdBtwMt6DM6f+60wtGr4bSYholdPqNeV5VUXZhrpMwfza829kmhS3iA==", "cpu": [ "arm64" ], @@ -3247,9 +3520,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.3.6.tgz", - "integrity": "sha512-/YXjI1e5OXcZ7YpxRwgP/1jAV/SBKTzeVKqN2mk7mLpcICsyn3Gl5+dIfDTJp70M0ccMhyMMRso4v6mPDCGepg==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.4.1.tgz", + "integrity": "sha512-6ICqPo9awCkrtYNPhwkx1uU7rlFWrZRrIboDHS2LU+jv088UBYQtmJ25h6pCp27/+FZjF6BQ4Te4ErugyMeuBg==", "cpu": [ "x64" ], @@ -3263,9 +3536,9 @@ } }, "node_modules/@node-rs/xxhash": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash/-/xxhash-1.7.6.tgz", - "integrity": "sha512-XMisO+aQHsVpxRp/85EszTtOQTOlhPbd149P/Xa9F55wafA6UM3h2UhOgOs7aAzItnHU/Aw1WQ1FVTEg7WB43Q==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash/-/xxhash-1.7.8.tgz", + "integrity": "sha512-sXiVUI18qaCei5Y5qXty7xfEKrk4Vx89qKNZkG2sGWZG/iTThO3Xmnp5IjQpXCy941IksVDcl41HhvWRuhDLyw==", "dev": true, "license": "MIT", "engines": { @@ -3276,26 +3549,25 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "optionalDependencies": { - "@node-rs/xxhash-android-arm-eabi": "1.7.6", - "@node-rs/xxhash-android-arm64": "1.7.6", - "@node-rs/xxhash-darwin-arm64": "1.7.6", - "@node-rs/xxhash-darwin-x64": "1.7.6", - "@node-rs/xxhash-freebsd-x64": "1.7.6", - "@node-rs/xxhash-linux-arm-gnueabihf": "1.7.6", - "@node-rs/xxhash-linux-arm64-gnu": "1.7.6", - "@node-rs/xxhash-linux-arm64-musl": "1.7.6", - "@node-rs/xxhash-linux-x64-gnu": "1.7.6", - "@node-rs/xxhash-linux-x64-musl": "1.7.6", - "@node-rs/xxhash-wasm32-wasi": "1.7.6", - "@node-rs/xxhash-win32-arm64-msvc": "1.7.6", - "@node-rs/xxhash-win32-ia32-msvc": "1.7.6", - "@node-rs/xxhash-win32-x64-msvc": "1.7.6" + "@node-rs/xxhash-android-arm-eabi": "1.7.8", + "@node-rs/xxhash-android-arm64": "1.7.8", + "@node-rs/xxhash-darwin-arm64": "1.7.8", + "@node-rs/xxhash-darwin-x64": "1.7.8", + "@node-rs/xxhash-freebsd-x64": "1.7.8", + "@node-rs/xxhash-linux-arm-gnueabihf": "1.7.8", + "@node-rs/xxhash-linux-arm64-gnu": "1.7.8", + "@node-rs/xxhash-linux-arm64-musl": "1.7.8", + "@node-rs/xxhash-linux-x64-gnu": "1.7.8", + "@node-rs/xxhash-linux-x64-musl": "1.7.8", + "@node-rs/xxhash-win32-arm64-msvc": "1.7.8", + "@node-rs/xxhash-win32-ia32-msvc": "1.7.8", + "@node-rs/xxhash-win32-x64-msvc": "1.7.8" } }, "node_modules/@node-rs/xxhash-android-arm-eabi": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-android-arm-eabi/-/xxhash-android-arm-eabi-1.7.6.tgz", - "integrity": "sha512-ptmfpFZ8SgTef58Us+0HsZ9BKhyX/gZYbhLkuzPt7qUoMqMSJK85NC7LEgzDgjUiG+S5GahEEQ9/tfh9BVvKhw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-android-arm-eabi/-/xxhash-android-arm-eabi-1.7.8.tgz", + "integrity": "sha512-dOwbmnDzULc5uRgbIvcrxDa7vGdk51GQVREcY98DdxTBd0lomRg/gqAR9ny/S533cD5QTRSvrK+q8KEJMqoG4w==", "cpu": [ "arm" ], @@ -3310,9 +3582,9 @@ } }, "node_modules/@node-rs/xxhash-android-arm64": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-android-arm64/-/xxhash-android-arm64-1.7.6.tgz", - "integrity": "sha512-n4MyZvqifuoARfBvrZ2IBqmsGzwlVI3kb2mB0gVvoHtMsPbl/q94zoDBZ7WgeP3t4Wtli+QS3zgeTCOWUbqqUQ==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-android-arm64/-/xxhash-android-arm64-1.7.8.tgz", + "integrity": "sha512-djHN4MBgYkD0uPIGM+IyWrO5aT4vEdsO5bzNxV2+NVl7r1Hdk3PB7GIv0BOKV1C+fkBGXHYJ5xezlOEY1LFDzA==", "cpu": [ "arm64" ], @@ -3327,9 +3599,9 @@ } }, "node_modules/@node-rs/xxhash-darwin-arm64": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-darwin-arm64/-/xxhash-darwin-arm64-1.7.6.tgz", - "integrity": "sha512-6xGuE07CiCIry/KT3IiwQd/kykTOmjKzO/ZnHlE5ibGMx64NFE0qDuwJbxQ4rGyUzgJ0KuN9ZdOhUDJmepnpcw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-darwin-arm64/-/xxhash-darwin-arm64-1.7.8.tgz", + "integrity": "sha512-cwhxfUesdIPesdN23VSwh7Ypx9Kx4gvVmH3v6UINADcavnBeizdWRXXefRzdckDphUM2y8WGLko9WMM/86KHYQ==", "cpu": [ "arm64" ], @@ -3344,9 +3616,9 @@ } }, "node_modules/@node-rs/xxhash-darwin-x64": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-darwin-x64/-/xxhash-darwin-x64-1.7.6.tgz", - "integrity": "sha512-Z4oNnhyznDvHhxv+s0ka+5KG8mdfLVucZMZMejj9BL+CPmamClygPiHIRiifRcPAoX9uPZykaCsULngIfLeF3Q==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-darwin-x64/-/xxhash-darwin-x64-1.7.8.tgz", + "integrity": "sha512-YO1x98WbSnMdkaiJiKojnMxNaNxg2QrnHz7W9U4BTSw/IcvvpXGFNxNaSm0FYtO6lZAlfvQpiDr4XGXFXjJtJw==", "cpu": [ "x64" ], @@ -3361,9 +3633,9 @@ } }, "node_modules/@node-rs/xxhash-freebsd-x64": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-freebsd-x64/-/xxhash-freebsd-x64-1.7.6.tgz", - "integrity": "sha512-arCDOf3xZ5NfBL5fk5J52sNPjXL2cVWN6nXNB3nrtRFFdPBLsr6YXtshAc6wMVxnIW4VGaEv/5K6IpTA8AFyWw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-freebsd-x64/-/xxhash-freebsd-x64-1.7.8.tgz", + "integrity": "sha512-MDsskeigVvvGNEm7G9avNKyHeoqgzBCaDo6KLYsi0T/nEBih+xybVIjZ57+GPxTnpUbet8SrcmU64DgAQC5Rnw==", "cpu": [ "x64" ], @@ -3378,9 +3650,9 @@ } }, "node_modules/@node-rs/xxhash-linux-arm-gnueabihf": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-arm-gnueabihf/-/xxhash-linux-arm-gnueabihf-1.7.6.tgz", - "integrity": "sha512-ndLLEW+MwLH3lFS0ahlHCcmkf2ykOv/pbP8OBBeAOlz/Xc3jKztg5IJ9HpkjKOkHk470yYxgHVaw1QMoMzU00A==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-arm-gnueabihf/-/xxhash-linux-arm-gnueabihf-1.7.8.tgz", + "integrity": "sha512-ld25nCGEGedwnmn2YgpFbgQNdKnvdQXDeqrwqMuORIbRhtc+QOm1dlcbq+tULN2Vii9G0bcpb6i1lPTEv5ejyQ==", "cpu": [ "arm" ], @@ -3395,9 +3667,9 @@ } }, "node_modules/@node-rs/xxhash-linux-arm64-gnu": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-arm64-gnu/-/xxhash-linux-arm64-gnu-1.7.6.tgz", - "integrity": "sha512-VX7VkTG87mAdrF2vw4aroiRpFIIN8Lj6NgtGHF+IUVbzQxPudl4kG+FPEjsNH8y04yQxRbPE7naQNgHcTKMrNw==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-arm64-gnu/-/xxhash-linux-arm64-gnu-1.7.8.tgz", + "integrity": "sha512-Z9YH6BQ1Zywk/nl0j9MG3jRBsIYOed6rSZAGTMT4p924wo9nHll39DZ9hd43kksofInkXOv3WMemzDy7zQ6QFw==", "cpu": [ "arm64" ], @@ -3415,9 +3687,9 @@ } }, "node_modules/@node-rs/xxhash-linux-arm64-musl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-arm64-musl/-/xxhash-linux-arm64-musl-1.7.6.tgz", - "integrity": "sha512-AB5m6crGYSllM9F/xZNOQSPImotR5lOa9e4arW99Bv82S+gcpphI8fGMDOVTTCXY/RLRhvvhwzLDxmLB2O8VDg==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-arm64-musl/-/xxhash-linux-arm64-musl-1.7.8.tgz", + "integrity": "sha512-L847azl5081s2QEsX8KqQF8sJAYw1W7j7rpBQH4l5IBC2/kITgdXTNVmPM/MrDHXI2OumKCtRVoNTVuEP8zYVg==", "cpu": [ "arm64" ], @@ -3435,9 +3707,9 @@ } }, "node_modules/@node-rs/xxhash-linux-x64-gnu": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-x64-gnu/-/xxhash-linux-x64-gnu-1.7.6.tgz", - "integrity": "sha512-a2A6M+5tc0PVlJlE/nl0XsLEzMpKkwg7Y1lR5urFUbW9uVQnKjJYQDrUojhlXk0Uv3VnYQPa6ThmwlacZA5mvQ==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-x64-gnu/-/xxhash-linux-x64-gnu-1.7.8.tgz", + "integrity": "sha512-tWvNBiFu73/gbZ57uU/3T/3tJ/q+NFAYQj06hsORt6qtllGLz0wJ7azYG/ZlJBfijJA0K7fT+3rThzKJlIdkZg==", "cpu": [ "x64" ], @@ -3455,9 +3727,9 @@ } }, "node_modules/@node-rs/xxhash-linux-x64-musl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-x64-musl/-/xxhash-linux-x64-musl-1.7.6.tgz", - "integrity": "sha512-WioGJSC1GoxQpmdQrG5l/uddSBAS4XCWczHNwXe895J5xadGQzyvmr0r17BNfihvbBUDH1H9jwouNYzDDeA6+A==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-linux-x64-musl/-/xxhash-linux-x64-musl-1.7.8.tgz", + "integrity": "sha512-HW29+JFyWbBHYzD/SfwkD9xxj5k2VH/VqG+Ltn9JH0PlJHvLQtG4IgXxLPboF9e6Kmwb1fjjBJn46GdT8hxA1w==", "cpu": [ "x64" ], @@ -3474,40 +3746,10 @@ "node": ">= 12" } }, - "node_modules/@node-rs/xxhash-wasm32-wasi": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-wasm32-wasi/-/xxhash-wasm32-wasi-1.7.6.tgz", - "integrity": "sha512-WDXXKMMFMrez+esm2DzMPHFNPFYf+wQUtaXrXwtxXeQMFEzleOLwEaqV0+bbXGJTwhPouL3zY1Qo2xmIH4kkTg==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.5" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@node-rs/xxhash-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, "node_modules/@node-rs/xxhash-win32-arm64-msvc": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-win32-arm64-msvc/-/xxhash-win32-arm64-msvc-1.7.6.tgz", - "integrity": "sha512-qjDFUZJT/Zq0yFS+0TApkD86p0NBdPXlOoHur9yNeO9YX2/9/b1sC2P7N27PgOu13h61TUOvTUC00e/82jAZRQ==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-win32-arm64-msvc/-/xxhash-win32-arm64-msvc-1.7.8.tgz", + "integrity": "sha512-3vf7hmj1LVOfrUXMfRZI67G9h6fNjWg39vmgbD/IQdC/CQ/39aAXvnNmOY0MJNEnVixml668CCiyRccll0ZiyQ==", "cpu": [ "arm64" ], @@ -3522,9 +3764,9 @@ } }, "node_modules/@node-rs/xxhash-win32-ia32-msvc": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-win32-ia32-msvc/-/xxhash-win32-ia32-msvc-1.7.6.tgz", - "integrity": "sha512-s7a+mQWOTnU4NiiypRq/vbNGot/il0HheXuy9oxJ0SW2q/e4BJ8j0pnP6UBlAjsk+005A76vOwsEj01qbQw8+A==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-win32-ia32-msvc/-/xxhash-win32-ia32-msvc-1.7.8.tgz", + "integrity": "sha512-1yqUghB7/Megd3AhDO5KkOi/SiVtK+l0ERunxOTiDLmxvO3Vs4nmb3IW2EmH6mNPB732YYN8I2Y4ZQi3eJRt9Q==", "cpu": [ "ia32" ], @@ -3539,9 +3781,9 @@ } }, "node_modules/@node-rs/xxhash-win32-x64-msvc": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@node-rs/xxhash-win32-x64-msvc/-/xxhash-win32-x64-msvc-1.7.6.tgz", - "integrity": "sha512-zHOHm2UaIahRhgRPJll+4Xy4Z18aAT/7KNeQW+QJupGvFz+GzOFXMGs3R/3B1Ktob/F5ui3i1MrW9GEob3CWTg==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@node-rs/xxhash-win32-x64-msvc/-/xxhash-win32-x64-msvc-1.7.8.tgz", + "integrity": "sha512-gccfpBxTsIAtwx23lvw40j+8moYQWBjc9/1ainrRBSke9HV4Oo8d4xQLgcR1wUXBhwE4mtK/f0T4EAE2oshOkg==", "cpu": [ "x64" ], @@ -3618,9 +3860,9 @@ } }, "node_modules/@oxc-parser/binding-android-arm-eabi": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.150.0.tgz", - "integrity": "sha512-oQef2Zu4Prz1KLKznz3HqZzU9uVoA5PMoDZuuLmqms7hKmKSAPzlaMnLllJq3t+rgKmfJJ2siPrpZfFrW06btw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.153.0.tgz", + "integrity": "sha512-BcWu25dMwMjHpaDCEidmpAi7rGg1qZoihJeUUH9bD55pVZ0z4Wa5CQgqSTo0R41H81oozisQKW3WqvAN2m77IQ==", "cpu": [ "arm" ], @@ -3634,9 +3876,9 @@ } }, "node_modules/@oxc-parser/binding-android-arm64": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.150.0.tgz", - "integrity": "sha512-B6ofpoFiAUwIZ0MJ2IgHPvZK8FAtL4qzSZRwOkAKIfxEobE1mQC8nDdiFZj7pUaJiVUVCsfkMsBJKedzO8rZvA==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.153.0.tgz", + "integrity": "sha512-9l5rdp2DhRqVriBHsNpu5cEf+hizZ4B58rt93HzyQEBUgZiC6qe2oFpaAAnXGCxHGnQExI1s7S2G0QhFacUZ6w==", "cpu": [ "arm64" ], @@ -3650,9 +3892,9 @@ } }, "node_modules/@oxc-parser/binding-darwin-arm64": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.150.0.tgz", - "integrity": "sha512-J+9IHKzx/bSz1JetOfD4zKXSK9sOm4/a7+0qomJODcTL6JsRXGeV/ZdkAPSIDydfFmWzYCraMlQEosSZEyBYkQ==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.153.0.tgz", + "integrity": "sha512-EcpsyRXHhENDpekpG4QNaSZj2F/BAz4Gh4o89zZwNss86R8KyRSQ6sXbAj74Xyeb4z3j/yBZZ6joQZhraIWyfw==", "cpu": [ "arm64" ], @@ -3666,9 +3908,9 @@ } }, "node_modules/@oxc-parser/binding-darwin-x64": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.150.0.tgz", - "integrity": "sha512-v6IPfcAcSYrBWXV5Tce1DmxDMXLhEYpIIWiRFPJopgCVscZdLaV4MRQOUxvL3usQlw+yrwYOjBFB9IwBx+jUiQ==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.153.0.tgz", + "integrity": "sha512-hlj80HUQy07/2lYp6rmxH+3u+H2ik3rjLR52CUdPApxmZCNxASDUf/+ykTzAHS/fehftmVMATKvPaWmuLHuasg==", "cpu": [ "x64" ], @@ -3682,9 +3924,9 @@ } }, "node_modules/@oxc-parser/binding-freebsd-x64": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.150.0.tgz", - "integrity": "sha512-AoR/4jD02HET0KO0yNT4nbTE+XJUxiO9jB1X/ycEjUE3WrIJ3IjV/Vf+gskhWLcqqeXfvNnkDtBR7epllAm88A==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.153.0.tgz", + "integrity": "sha512-fWRcv2pMSh1qtez46MOu8vuUJ5fiaQZPHSphbWulbL7SHBMKfRgZl2PzjXZYQJbq7NEXyXbgIuIuUm+/Rmkv8w==", "cpu": [ "x64" ], @@ -3698,9 +3940,9 @@ } }, "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.150.0.tgz", - "integrity": "sha512-A/hycCFjLUrCmLoL5O/vBp40ohlaXO1Ta3v5hqYZxicYFs129wZmgZJggcW4mYGYbZebQLhup+N8JjeQl8qwyw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.153.0.tgz", + "integrity": "sha512-paZeUK1GXShl/bOJQET1/8AQxayFeuN4SIWAkgTRxE7ZQwv9uYSB2n0648smygP22N7jcI3zxAm0Z+ALNiIKxg==", "cpu": [ "arm" ], @@ -3714,9 +3956,9 @@ } }, "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.150.0.tgz", - "integrity": "sha512-pbqahg1Pkz7J4RKmXm30s/iQu99hv64ayXCu8P4p75HcEH5azOdR4eGqiB6lFGkFR3mMpzaYsSKLkS8oJbjmeQ==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.153.0.tgz", + "integrity": "sha512-qFPp5NwMf4K1C0O+DCVGmcbOaYyYAq98Rvv9p4VSfb777iUwlJCqMUxf6QG9N5f5ls4TEX6LitOZHi+6GL6rYQ==", "cpu": [ "arm" ], @@ -3730,9 +3972,9 @@ } }, "node_modules/@oxc-parser/binding-linux-arm64-gnu": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.150.0.tgz", - "integrity": "sha512-HV11aRbBQGwqv8bEo+K/6qr88uB4fEe1mhXncMhlVCrj+WpBSraxrUzHaPVmeQRU6x6x8v/3DuCbbo93rpp+fw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.153.0.tgz", + "integrity": "sha512-oufEhZCX7saeo27Logra8cvBR1jQ/yw2zUI2hHmWw3qA/XYqEW31FOvLQBv7DWN32NjVdlcaP11WBBZTJo4k9g==", "cpu": [ "arm64" ], @@ -3749,9 +3991,9 @@ } }, "node_modules/@oxc-parser/binding-linux-arm64-musl": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.150.0.tgz", - "integrity": "sha512-k6pVkJqALwtEuP4zukVhGRhdIy4+ofChUIUUsAHHyqDZlNsknmel3JjbggrJiWGaes6h/dIcWmEXsKW4SmK9oQ==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.153.0.tgz", + "integrity": "sha512-zXYzuAqng85h6+LI3iRm0zeMLX1/K2z41ZAMWxVRgt0D10VvZUaV5q+TEB46KDhoKBpdexoTLC6QoB/EiP2oqQ==", "cpu": [ "arm64" ], @@ -3768,9 +4010,9 @@ } }, "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.150.0.tgz", - "integrity": "sha512-tEFg39mw/rHO5n8GK2DR4ZMFfsPQZtnQIPbsIpjoQRomJc/2tRfsCSmCT6gNit+NZGoeJG5aH9ATDH5bf0WnoQ==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.153.0.tgz", + "integrity": "sha512-J7+NLwLEzdkKM9cKyPHH/AjXXstWOs98KYgLrPPnO4N9MO8EZRBfPNnBcS3S67uMOBkRpUmCl2FhRnWdQ5CbBA==", "cpu": [ "ppc64" ], @@ -3787,9 +4029,9 @@ } }, "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.150.0.tgz", - "integrity": "sha512-0JO7IFkoek6HqV589Menx3hJySNXi6quRhO4tq2P7kpEHKEXoDATnoPVUpn5B7gDH2KLkdo751N0uIrGJFCTCw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.153.0.tgz", + "integrity": "sha512-sD0K11GQTLWylln54nPMMTtgmBbQrR5It/vMpZpy/fogiw8O2AvIE+9LuWUXddrWk9zvFIHGRcSgFn4IHOfoYg==", "cpu": [ "riscv64" ], @@ -3806,9 +4048,9 @@ } }, "node_modules/@oxc-parser/binding-linux-riscv64-musl": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.150.0.tgz", - "integrity": "sha512-7XPzREnyAS5wHU9aB+49Uaqgoo1gVCklHc3DRlc3fJy2tXD/eAJFN1QFz/crj+Ulup5P1+axNREF+/RGaB/IRA==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.153.0.tgz", + "integrity": "sha512-7L66uql2BhvSz51LwfExjOdn6et/ydTiQxl23VApdKzJhTc3TczA1Qt6VR/UcvlQrL2ZbytIJb447vh7p5wmUw==", "cpu": [ "riscv64" ], @@ -3825,9 +4067,9 @@ } }, "node_modules/@oxc-parser/binding-linux-s390x-gnu": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.150.0.tgz", - "integrity": "sha512-7n7ZxcbRWDFaTdyj8M8p0O9OfzoMKm8O6syBAIgcSutbOALq0Bb9G52Me+XH0anMLZV+NgXc726gqgG2q39vcQ==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.153.0.tgz", + "integrity": "sha512-hXV3T7mNyrPR19rbPYkglkQJtoM/UNo/xwbZeeqdAxEg8PXgb4LXXuxPpGgI4bzRRCWwLUxdDSS58xIyC2u1TA==", "cpu": [ "s390x" ], @@ -3844,9 +4086,9 @@ } }, "node_modules/@oxc-parser/binding-linux-x64-gnu": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.150.0.tgz", - "integrity": "sha512-Vx0GSA9ZCRTUiczoEQnIIyXkMvtEY8uc6IiwLQtMe5ci2sXPqjrry0Ek5fsPP1k2kCzkML3ow9UOOEgnEDi7Bw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.153.0.tgz", + "integrity": "sha512-Da8Vqs1xdtoDYtEjmozD7wGgJeLBQkMbR0WUBECOSxodyX5DXy8ySlvJWbukyO2Q0+TM9EK+4LT6tbq0jCg4hQ==", "cpu": [ "x64" ], @@ -3863,9 +4105,9 @@ } }, "node_modules/@oxc-parser/binding-linux-x64-musl": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.150.0.tgz", - "integrity": "sha512-ii4/9m3viDLssMnfXU7/Pni/3nYplApuGayceX4qsVGaqqQJCx3tHIH9M/HWIeSty5i8LjS21zPYT6lVIkwLxw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.153.0.tgz", + "integrity": "sha512-zGAPxNTIIw6X5WyTRscIFE/oDjpdNtrrl32ing6NOXdGjzRucadnxBilexLdeYQ9YxixF93GujpXyQ0jw7ddSg==", "cpu": [ "x64" ], @@ -3882,9 +4124,9 @@ } }, "node_modules/@oxc-parser/binding-openharmony-arm64": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.150.0.tgz", - "integrity": "sha512-ZtoxX5rez36ZWkwtiEhjkCPnlTPoQ2I7lIL0IYZ1yjxMYohbvoOjBmUIZzrf9W/HouONq0omIfTeCWEY+R380w==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.153.0.tgz", + "integrity": "sha512-GoHzpqP5XyPIp9DHokoEdCp+K4UPl/h1neFj1uXnUB3pJYyOQ7NOhFVOttNUgCGcj2eywAvu5cRivTOSq4S10g==", "cpu": [ "arm64" ], @@ -3898,9 +4140,9 @@ } }, "node_modules/@oxc-parser/binding-win32-arm64-msvc": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.150.0.tgz", - "integrity": "sha512-VqeRb5JX/bKYBrff7TUDvJyKY0914UzuCkuXIGxJS4FUmvMNfqkCbc7Sq90iMz9DlmAtlggwaBYQ9eg3h3ltiw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.153.0.tgz", + "integrity": "sha512-xGcy12tO9k7zFbeyQzEuilfWfQpyRq23/fLPfN3wjSWuWv58k46fQT1hsO1KFNykZuVGW9xSJE/z592TmAoSDA==", "cpu": [ "arm64" ], @@ -3914,9 +4156,9 @@ } }, "node_modules/@oxc-parser/binding-win32-ia32-msvc": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.150.0.tgz", - "integrity": "sha512-EPqJfeZ4Pgg2BJSsCV8GozxV0FDltRzpVtGVa1r2noJu1iu+opOw3gtBWXwIo9odCT/MdFfyHxdy0/CRqs3OqA==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.153.0.tgz", + "integrity": "sha512-o1ykUjWncvXX6N5a4KebgLjtD8zRui+f1llMhSGoSC9oP2KOqapRpdwmZ3NcNG0axFouwVKmhGBjd+IhA8BksA==", "cpu": [ "ia32" ], @@ -3930,9 +4172,9 @@ } }, "node_modules/@oxc-parser/binding-win32-x64-msvc": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.150.0.tgz", - "integrity": "sha512-n5YMzbqwPQqozbkrexi0lNZrUz5cnPHalYpFWe6Dau7AmKIWNo+y24IwzDuZEQtEdUHuKhXmMMih/MPjOI+CMw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.153.0.tgz", + "integrity": "sha512-gxQz7G96Up136fd+2zWrP+o6FYGs9NO4Dyv55IoeJFJUDwLFHcLYY11hhA5wQKs0HoM57Q8esQ3nEVhnCdsjAQ==", "cpu": [ "x64" ], @@ -3946,9 +4188,9 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.150.0.tgz", - "integrity": "sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.153.0.tgz", + "integrity": "sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/oxc-project" @@ -4231,9 +4473,9 @@ ] }, "node_modules/@parcel/watcher": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", - "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", + "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -4241,7 +4483,7 @@ "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">= 10.0.0" @@ -4251,25 +4493,24 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.6", - "@parcel/watcher-darwin-arm64": "2.5.6", - "@parcel/watcher-darwin-x64": "2.5.6", - "@parcel/watcher-freebsd-x64": "2.5.6", - "@parcel/watcher-linux-arm-glibc": "2.5.6", - "@parcel/watcher-linux-arm-musl": "2.5.6", - "@parcel/watcher-linux-arm64-glibc": "2.5.6", - "@parcel/watcher-linux-arm64-musl": "2.5.6", - "@parcel/watcher-linux-x64-glibc": "2.5.6", - "@parcel/watcher-linux-x64-musl": "2.5.6", - "@parcel/watcher-win32-arm64": "2.5.6", - "@parcel/watcher-win32-ia32": "2.5.6", - "@parcel/watcher-win32-x64": "2.5.6" + "@parcel/watcher-android-arm64": "2.6.0", + "@parcel/watcher-darwin-arm64": "2.6.0", + "@parcel/watcher-darwin-x64": "2.6.0", + "@parcel/watcher-freebsd-x64": "2.6.0", + "@parcel/watcher-linux-arm-glibc": "2.6.0", + "@parcel/watcher-linux-arm-musl": "2.6.0", + "@parcel/watcher-linux-arm64-glibc": "2.6.0", + "@parcel/watcher-linux-arm64-musl": "2.6.0", + "@parcel/watcher-linux-x64-glibc": "2.6.0", + "@parcel/watcher-linux-x64-musl": "2.6.0", + "@parcel/watcher-win32-arm64": "2.6.0", + "@parcel/watcher-win32-x64": "2.6.0" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", - "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", + "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", "cpu": [ "arm64" ], @@ -4287,9 +4528,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", - "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", + "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", "cpu": [ "arm64" ], @@ -4307,9 +4548,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", - "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", + "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", "cpu": [ "x64" ], @@ -4327,9 +4568,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", - "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", + "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", "cpu": [ "x64" ], @@ -4347,9 +4588,9 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", - "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", + "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", "cpu": [ "arm" ], @@ -4370,9 +4611,9 @@ } }, "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", - "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", + "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", "cpu": [ "arm" ], @@ -4393,9 +4634,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", - "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", + "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", "cpu": [ "arm64" ], @@ -4416,9 +4657,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", - "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", + "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", "cpu": [ "arm64" ], @@ -4439,9 +4680,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", - "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", + "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", "cpu": [ "x64" ], @@ -4462,9 +4703,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", - "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", + "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", "cpu": [ "x64" ], @@ -4485,9 +4726,9 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", - "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", + "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", "cpu": [ "arm64" ], @@ -4504,30 +4745,10 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", - "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", - "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", + "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", "cpu": [ "x64" ], @@ -4545,12 +4766,12 @@ } }, "node_modules/@payloadcms/db-postgres": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/@payloadcms/db-postgres/-/db-postgres-3.88.0.tgz", - "integrity": "sha512-uP2b3yH8MulguWSH7j8vJaFX3ols4fVKPtsvZ49XQvDsafBAAUZjc1aCldo1ozoVfhC46tx4pv0ovtHQc8zdcA==", + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/@payloadcms/db-postgres/-/db-postgres-3.90.2.tgz", + "integrity": "sha512-0DgQh5bZTnc8I7RdyE1Tvaj2MpFPGEtz0rbRdEvABYyFnhxSzuwSX0PevxAL4xma6sOdhbSSqOvW4hC3MayS9w==", "license": "MIT", "dependencies": { - "@payloadcms/drizzle": "3.88.0", + "@payloadcms/drizzle": "3.90.2", "@types/pg": "8.20.0", "console-table-printer": "2.12.1", "drizzle-kit": "0.31.7", @@ -4561,13 +4782,13 @@ "uuid": "13.0.2" }, "peerDependencies": { - "payload": "3.88.0" + "payload": "3.90.2" } }, "node_modules/@payloadcms/drizzle": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/@payloadcms/drizzle/-/drizzle-3.88.0.tgz", - "integrity": "sha512-qtPVSLjAFnQl1GwaQPhmnYTwCCWgTnRm4ps5yJxmN3RPdLF6S77gvqZMnC4HTeH7YADQJW3nFgQCVYExxWE6hA==", + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/@payloadcms/drizzle/-/drizzle-3.90.2.tgz", + "integrity": "sha512-C5r0gimzaq6ih21jh3VPQNNRxFYCi6JhTgkcbf2c/xGF7MEEzNzDn3DgfFFe4zeDE4iuC9glYrXFs85AKghq8w==", "license": "MIT", "dependencies": { "console-table-printer": "2.12.1", @@ -4578,47 +4799,60 @@ "uuid": "13.0.2" }, "peerDependencies": { - "payload": "3.88.0" + "payload": "3.90.2" } }, "node_modules/@payloadcms/email-nodemailer": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/@payloadcms/email-nodemailer/-/email-nodemailer-3.88.0.tgz", - "integrity": "sha512-cW8SUYpdVXdZBpa539smI5P2lYdTB3944rfAipv/TVG9VND0u/DDwtRuqBqGf/0eh5OajqWC0X9igMXU67dhbg==", + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/@payloadcms/email-nodemailer/-/email-nodemailer-3.90.2.tgz", + "integrity": "sha512-HpkEpnXYi6sFtbKB8qi9rL234gsMS5c0DJg2zag8+sYyad23xrUPytKT6PxI4HYdsIs+GRkQSmpjCgLmwi5ojw==", "license": "MIT", "dependencies": { - "nodemailer": "^9.0.1" + "nodemailer": "^9.1.1" }, "engines": { "node": "^18.20.2 || >=20.9.0" }, "peerDependencies": { - "payload": "3.88.0" + "payload": "3.90.2" } }, - "node_modules/@payloadcms/graphql": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/@payloadcms/graphql/-/graphql-3.88.0.tgz", - "integrity": "sha512-ync+bPFl0UacwBs1wVQkPlaSWWQJc4LjGG9OuRHEW7wYW3aeVQ+H2zfdFL6/cVJGP3zOq+XIlvYYw8G86Ki+Vw==", + "node_modules/@payloadcms/next": { + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/@payloadcms/next/-/next-3.90.2.tgz", + "integrity": "sha512-ED5aP8LTG2S7jJl1v9zZMlcq9ZXgjWSVsUvILJsd2UwKNI5ingGsPuQVXxTFHicv2Zj9R0WFa+d6g6iqZWQcCg==", "license": "MIT", "dependencies": { - "graphql-scalars": "1.22.2", - "pluralize": "8.0.0", - "ts-essentials": "10.0.3", - "tsx": "4.22.4" + "@dnd-kit/core": "6.3.1", + "@dnd-kit/modifiers": "9.0.0", + "@dnd-kit/sortable": "10.0.0", + "@payloadcms/graphql": "3.90.2", + "@payloadcms/translations": "3.90.2", + "@payloadcms/ui": "3.90.2", + "busboy": "^1.6.0", + "dequal": "2.0.3", + "file-type": "21.3.4", + "graphql-http": "^1.22.0", + "graphql-playground-html": "1.6.30", + "http-status": "2.1.0", + "path-to-regexp": "6.3.0", + "qs-esm": "8.0.1", + "sass": "1.77.4", + "uuid": "13.0.2" }, - "bin": { - "payload-graphql": "bin.js" + "engines": { + "node": "^18.20.2 || >=20.9.0" }, "peerDependencies": { "graphql": "^16.8.1", - "payload": "3.88.0" + "next": ">=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.3.3 <17.0.0", + "payload": "3.90.2" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "node_modules/@payloadcms/next/node_modules/@esbuild/aix-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", "cpu": [ "ppc64" ], @@ -4631,10 +4865,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "node_modules/@payloadcms/next/node_modules/@esbuild/android-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", "cpu": [ "arm" ], @@ -4647,10 +4881,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "node_modules/@payloadcms/next/node_modules/@esbuild/android-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", "cpu": [ "arm64" ], @@ -4663,10 +4897,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "node_modules/@payloadcms/next/node_modules/@esbuild/android-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", "cpu": [ "x64" ], @@ -4679,10 +4913,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "node_modules/@payloadcms/next/node_modules/@esbuild/darwin-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", "cpu": [ "arm64" ], @@ -4695,10 +4929,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "node_modules/@payloadcms/next/node_modules/@esbuild/darwin-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", "cpu": [ "x64" ], @@ -4711,10 +4945,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "node_modules/@payloadcms/next/node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", "cpu": [ "arm64" ], @@ -4727,10 +4961,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "node_modules/@payloadcms/next/node_modules/@esbuild/freebsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", "cpu": [ "x64" ], @@ -4743,10 +4977,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "node_modules/@payloadcms/next/node_modules/@esbuild/linux-arm": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", "cpu": [ "arm" ], @@ -4759,10 +4993,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "node_modules/@payloadcms/next/node_modules/@esbuild/linux-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", "cpu": [ "arm64" ], @@ -4775,10 +5009,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "node_modules/@payloadcms/next/node_modules/@esbuild/linux-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", "cpu": [ "ia32" ], @@ -4791,10 +5025,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "node_modules/@payloadcms/next/node_modules/@esbuild/linux-loong64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", "cpu": [ "loong64" ], @@ -4807,10 +5041,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "node_modules/@payloadcms/next/node_modules/@esbuild/linux-mips64el": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", "cpu": [ "mips64el" ], @@ -4823,10 +5057,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "node_modules/@payloadcms/next/node_modules/@esbuild/linux-ppc64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", "cpu": [ "ppc64" ], @@ -4839,10 +5073,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "node_modules/@payloadcms/next/node_modules/@esbuild/linux-riscv64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", "cpu": [ "riscv64" ], @@ -4855,10 +5089,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "node_modules/@payloadcms/next/node_modules/@esbuild/linux-s390x": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", "cpu": [ "s390x" ], @@ -4871,10 +5105,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/linux-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", - "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "node_modules/@payloadcms/next/node_modules/@esbuild/linux-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", "cpu": [ "x64" ], @@ -4887,10 +5121,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "node_modules/@payloadcms/next/node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", "cpu": [ "arm64" ], @@ -4903,10 +5137,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "node_modules/@payloadcms/next/node_modules/@esbuild/netbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", "cpu": [ "x64" ], @@ -4919,10 +5153,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "node_modules/@payloadcms/next/node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", "cpu": [ "arm64" ], @@ -4935,10 +5169,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "node_modules/@payloadcms/next/node_modules/@esbuild/openbsd-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", "cpu": [ "x64" ], @@ -4951,10 +5185,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "node_modules/@payloadcms/next/node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", "cpu": [ "arm64" ], @@ -4967,10 +5201,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "node_modules/@payloadcms/next/node_modules/@esbuild/sunos-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", "cpu": [ "x64" ], @@ -4983,10 +5217,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "node_modules/@payloadcms/next/node_modules/@esbuild/win32-arm64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", "cpu": [ "arm64" ], @@ -4999,10 +5233,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "node_modules/@payloadcms/next/node_modules/@esbuild/win32-ia32": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", "cpu": [ "ia32" ], @@ -5015,10 +5249,10 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "node_modules/@payloadcms/next/node_modules/@esbuild/win32-x64": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", "cpu": [ "x64" ], @@ -5031,95 +5265,38 @@ "node": ">=18" } }, - "node_modules/@payloadcms/graphql/node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" - } - }, - "node_modules/@payloadcms/graphql/node_modules/tsx": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.4.tgz", - "integrity": "sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==", + "node_modules/@payloadcms/next/node_modules/@payloadcms/graphql": { + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/@payloadcms/graphql/-/graphql-3.90.2.tgz", + "integrity": "sha512-z4a7+We4USitsIDlGkMfLpY+hclJgmF19C+I63dzC5deuOny6rJ/R3KhF/XfkaYn7Rz3VWPSk2gJh3+D041xMg==", "license": "MIT", "dependencies": { - "esbuild": "~0.28.0" + "graphql-scalars": "1.22.2", + "pluralize": "8.0.0", + "ts-essentials": "10.0.3", + "tsx": "4.22.4" }, "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" + "payload-graphql": "bin.js" }, - "optionalDependencies": { - "fsevents": "~2.3.3" + "peerDependencies": { + "graphql": "^16.8.1", + "payload": "3.90.2" } }, - "node_modules/@payloadcms/next": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/@payloadcms/next/-/next-3.88.0.tgz", - "integrity": "sha512-3f2YOGSmtTp85YnlJm9FusRgshKJbiLI8uXs8iQNMwU7RZJnLCURG8iv/6sjKHO0owIfw3vIL5qgxdtIBuQwpA==", + "node_modules/@payloadcms/next/node_modules/@payloadcms/graphql/node_modules/graphql-scalars": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.22.2.tgz", + "integrity": "sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ==", "license": "MIT", "dependencies": { - "@dnd-kit/core": "6.3.1", - "@dnd-kit/modifiers": "9.0.0", - "@dnd-kit/sortable": "10.0.0", - "@payloadcms/graphql": "3.88.0", - "@payloadcms/translations": "3.88.0", - "@payloadcms/ui": "3.88.0", - "busboy": "^1.6.0", - "dequal": "2.0.3", - "file-type": "21.3.4", - "graphql-http": "^1.22.0", - "graphql-playground-html": "1.6.30", - "http-status": "2.1.0", - "path-to-regexp": "6.3.0", - "qs-esm": "8.0.1", - "sass": "1.77.4", - "uuid": "13.0.2" + "tslib": "^2.5.0" }, "engines": { - "node": "^18.20.2 || >=20.9.0" + "node": ">=10" }, "peerDependencies": { - "graphql": "^16.8.1", - "next": ">=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.2.6 <17.0.0", - "payload": "3.88.0" + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, "node_modules/@payloadcms/next/node_modules/chokidar": { @@ -5146,22 +5323,45 @@ "fsevents": "~2.3.2" } }, - "node_modules/@payloadcms/next/node_modules/file-type": { - "version": "21.3.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.4.tgz", - "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", + "node_modules/@payloadcms/next/node_modules/esbuild": { + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@tokenizer/inflate": "^0.4.1", - "strtok3": "^10.3.4", - "token-types": "^6.1.1", - "uint8array-extras": "^1.4.0" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=20" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" } }, "node_modules/@payloadcms/next/node_modules/immutable": { @@ -5211,47 +5411,65 @@ "node": ">=14.0.0" } }, + "node_modules/@payloadcms/next/node_modules/tsx": { + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.4.tgz", + "integrity": "sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==", + "license": "MIT", + "dependencies": { + "esbuild": "~0.28.0" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/@payloadcms/plugin-seo": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/@payloadcms/plugin-seo/-/plugin-seo-3.88.0.tgz", - "integrity": "sha512-3eFWoqpXZQZ3ghdFksPo7nQ08XUG0PXWc/qf1ibtXiKPlMN43Asa8Z9wGNKYtkDhIM+OYi6EmlFzRLWkCRcwrg==", + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/@payloadcms/plugin-seo/-/plugin-seo-3.90.2.tgz", + "integrity": "sha512-+7B8q3+pDsGO5JocwnIMUzpE7jgtmRyqZtZRbCWwLVQC7q5p6ZmB4zHwfUyJdmidJ+H7NoJueXHAy+R0ZRPwfA==", "license": "MIT", "dependencies": { - "@payloadcms/translations": "3.88.0", - "@payloadcms/ui": "3.88.0" + "@payloadcms/translations": "3.90.2", + "@payloadcms/ui": "3.90.2" }, "peerDependencies": { - "payload": "3.88.0", + "payload": "3.90.2", "react": "^19.0.1 || ^19.1.2 || ^19.2.1", "react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1" } }, "node_modules/@payloadcms/richtext-lexical": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/@payloadcms/richtext-lexical/-/richtext-lexical-3.88.0.tgz", - "integrity": "sha512-lY8oIUiggykWKB3ljMfSidxBtA8ahMq0Qqp28OuvaCNIDp0HTMIPxcHvFOQZngMqtQHhpautD6vcQR0Q9CEHHQ==", - "license": "MIT", - "dependencies": { - "@lexical/clipboard": "0.41.0", - "@lexical/headless": "0.41.0", - "@lexical/html": "0.41.0", - "@lexical/link": "0.41.0", - "@lexical/list": "0.41.0", - "@lexical/mark": "0.41.0", - "@lexical/react": "0.41.0", - "@lexical/rich-text": "0.41.0", - "@lexical/selection": "0.41.0", - "@lexical/table": "0.41.0", - "@lexical/utils": "0.41.0", - "@payloadcms/translations": "3.88.0", - "@payloadcms/ui": "3.88.0", + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/@payloadcms/richtext-lexical/-/richtext-lexical-3.90.2.tgz", + "integrity": "sha512-9D5U7W/F6MoR4KVcIGeOSQT8QiiQ1VnCO8SeVD4xXXi8Bb4OYSisjnTK3twlmCVObjWm+aURzfkcakRJ+Pv/EA==", + "license": "MIT", + "dependencies": { + "@lexical/clipboard": "0.50.0", + "@lexical/headless": "0.50.0", + "@lexical/html": "0.50.0", + "@lexical/link": "0.50.0", + "@lexical/list": "0.50.0", + "@lexical/mark": "0.50.0", + "@lexical/react": "0.50.0", + "@lexical/rich-text": "0.50.0", + "@lexical/selection": "0.50.0", + "@lexical/table": "0.50.0", + "@lexical/utils": "0.50.0", + "@payloadcms/translations": "3.90.2", + "@payloadcms/ui": "3.90.2", "acorn": "8.16.0", "bson-objectid": "2.0.4", "csstype": "3.1.3", "dequal": "2.0.3", "escape-html": "1.0.3", "jsox": "1.2.121", - "lexical": "0.41.0", + "lexical": "0.50.0", "mdast-util-from-markdown": "2.0.2", "mdast-util-mdx-jsx": "3.1.3", "micromark-extension-mdx-jsx": "3.0.1", @@ -5266,25 +5484,25 @@ "peerDependencies": { "@faceless-ui/modal": "3.0.0", "@faceless-ui/scroll-info": "2.0.0", - "@payloadcms/next": "3.88.0", - "payload": "3.88.0", + "@payloadcms/next": "3.90.2", + "payload": "3.90.2", "react": "^19.0.1 || ^19.1.2 || ^19.2.1", "react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1" } }, "node_modules/@payloadcms/translations": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.88.0.tgz", - "integrity": "sha512-AZVQjjW5pKxO+K9ODeh6yw6/EfXK1hxGPw55KzzDC5srO3hjNskgyWtkauKvbz+S0+xFspANbRc4OD/Rg/74WA==", + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.90.2.tgz", + "integrity": "sha512-BGpXyw22ndzL6URrK28qlk2qIsksH8mbWpU/n8vaTt8W6O87KoniX4lJ82m5o0FR/wjWqzcuVRsE0TNX3/7gHg==", "license": "MIT", "dependencies": { "date-fns": "4.1.0" } }, "node_modules/@payloadcms/ui": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/@payloadcms/ui/-/ui-3.88.0.tgz", - "integrity": "sha512-iwQhHPDn4Oj2bPg1UV467BoxfUNo1rUmD8jMZaw2Vtt/nmxAPl3W3CWN/CsOX/yITuPuGHJxznOg4PZNMF3gEg==", + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/@payloadcms/ui/-/ui-3.90.2.tgz", + "integrity": "sha512-9OXA/WI+3u+Xa8xcvVTv4VtpAecRxx/39k9uBRlRnI20lWPGRvbOG4vIWUZKxHFQjZGGQke71HdLV4x2kFveQg==", "license": "MIT", "dependencies": { "@date-fns/tz": "1.2.0", @@ -5295,7 +5513,8 @@ "@faceless-ui/scroll-info": "2.0.0", "@faceless-ui/window-info": "3.0.1", "@monaco-editor/react": "4.7.0", - "@payloadcms/translations": "3.88.0", + "@payloadcms/translations": "3.90.2", + "@swc/helpers": ">=0.5.17", "bson-objectid": "2.0.4", "date-fns": "4.1.0", "dequal": "2.0.3", @@ -5315,8 +5534,8 @@ "node": "^18.20.2 || >=20.9.0" }, "peerDependencies": { - "next": ">=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.2.6 <17.0.0", - "payload": "3.88.0", + "next": ">=15.2.9 <15.3.0 || >=15.3.9 <15.4.0 || >=15.4.11 <15.5.0 || >=16.3.3 <17.0.0", + "payload": "3.90.2", "react": "^19.0.1 || ^19.1.2 || ^19.2.1", "react-dom": "^19.0.1 || ^19.1.2 || ^19.2.1" } @@ -5348,27 +5567,27 @@ } }, "node_modules/@radix-ui/number": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.2.tgz", - "integrity": "sha512-ceTwaxc4I5IOi97DgCotl3pqiyRGvffcc0oOsE2dQYaJOFIDsDt4VWG6xEbg1QePv9QWausCEIppud/tJ1wNig==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.3.tgz", + "integrity": "sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA==", "license": "MIT", "peer": true }, "node_modules/@radix-ui/primitive": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.5.tgz", - "integrity": "sha512-d86WIWFYNtGA0H/d8exstrTRTp7eWJYlYJbtNofxr/3ljupZYn6EFDG/Qgu/0Kc8v7yMUxySagqJsL1+PdYjWg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.2.0.tgz", + "integrity": "sha512-KABY+VMIRPJL+Vyzv/335FEhXXD/xDv8BMb1kl48/aXJZMH0LtHCTx5ga5RnxaEP3nZHtmTLf1P9vanmFX46bw==", "license": "MIT", "peer": true }, "node_modules/@radix-ui/react-arrow": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.11.tgz", - "integrity": "sha512-Kdil9BB1rIFC/khmf4hC35bn8701AJcizTU7G7cUbEbk5XqqbjDuHW60uUfKqO5WojjZcbAW51Q7P0hRmMLw8A==", + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.17.tgz", + "integrity": "sha512-67jjcVvxjXCCStnTW3Z+M7jmaFMuMR7M2JgpDzH4w7JSRrikmzhjfYgP/09ECb8n7whnsgh1ifJ+Ie96qEj+pQ==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-primitive": "2.1.7" + "@radix-ui/react-primitive": "2.2.0" }, "peerDependencies": { "@types/react": "*", @@ -5386,20 +5605,19 @@ } }, "node_modules/@radix-ui/react-checkbox": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.7.tgz", - "integrity": "sha512-JroKHfQBfh+fDuzpPsBC+pESkhuq8ql4hljTguz8MWnS35cISr3d/Jhl9kYrB44FlDtxCArYdDvTx+BSsJ64rQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.4.1.tgz", + "integrity": "sha512-KWtwhh+98ML3seZ9vO9yRY2OwaQG90dCiDAxjpSNY2AaZ3Hik3B0dsk6m0ILywo/no3A9/SozadyPMNweVT8yw==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-previous": "1.1.2", - "@radix-ui/react-use-size": "1.1.2" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-size": "1.1.5" }, "peerDependencies": { "@types/react": "*", @@ -5417,16 +5635,17 @@ } }, "node_modules/@radix-ui/react-collection": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.12.tgz", - "integrity": "sha512-nb67INpE0IahJKN7EYPp9m9YGwYeKlnzxT3MwXVkgCskaSJia97kG4T0ywpjNUSSnoJk/uvk12V8vbrEHEj+/Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.2.0.tgz", + "integrity": "sha512-+yiQzqcc7Sy7/5s0jrMCjpPRFB3538VNrXPWdTLZhE/SCfgEws4aI6lHWN/vvcnyhHndROWBzqmqB4QBrITZ9Q==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0" + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -5444,9 +5663,9 @@ } }, "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.3.tgz", - "integrity": "sha512-rYOP8OMnuuPMQF1uhPVlGNcCDlkokKqGFE3JcxFViIkAXP7EvFWUliJAstrapypaBLJNHbZL6jGhbVDGTwmVhA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz", + "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==", "license": "MIT", "peer": true, "peerDependencies": { @@ -5460,9 +5679,9 @@ } }, "node_modules/@radix-ui/react-context": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.2.0.tgz", - "integrity": "sha512-fOE+JtN9rygNZkCnHRBEP0TAvLldlhyOxMsbwFvTP4nAs+nBmfnna+o/Zski2wkmY1YMrFC0aSzsHoLY47iLrg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.3.0.tgz", + "integrity": "sha512-v5AYEocMISkbJ+1fTXzZpiFv7NRr3D2WiYbLIKf+FkmJ8VkP6d503eV2n34MFussHXY1pcoq3yfJiQH77dc4Mg==", "license": "MIT", "peer": true, "peerDependencies": { @@ -5476,17 +5695,17 @@ } }, "node_modules/@radix-ui/react-context-menu": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.3.3.tgz", - "integrity": "sha512-PS+gKE0z2prJ74Y0sM+brAGK4mYOHIR7TlcV5EJgUQ6E0xMvyswkK2X4yRqyganrzsRL+WCSKAPu0NQITICRWg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.4.1.tgz", + "integrity": "sha512-Pddn3Z8lio3/ChxyXaEP3jHTTo1LTHCWwF8+mG1chQlWijP+ttVHBKwezrQTiV6Mj670ojvumqvuGh+mdv33iQ==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-menu": "2.1.20", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-menu": "2.2.1", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-controllable-state": "1.3.0" }, "peerDependencies": { "@types/react": "*", @@ -5504,24 +5723,25 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.19.tgz", - "integrity": "sha512-+HhbN2+YtkRgVirjZ2afMeutQRuGOrdkWR5+EFC58SJojGmtyNQwYzgi6tHBpOxvFHefMtPeHdgtjz0BOGxFQg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-focus-guards": "1.1.4", - "@radix-ui/react-focus-scope": "1.1.12", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-controllable-state": "1.2.3", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.3.1.tgz", + "integrity": "sha512-+0E4qvVTwjAWra9sEhJ+9BTsvHE00zkUuNw1VGh7S+Gc13dfYk+S1PVQdchWDj+XYHhAai7Z7IpzXVDCGsDplg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-focus-guards": "1.2.0", + "@radix-ui/react-focus-scope": "1.3.1", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-portal": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-layout-effect": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, @@ -5541,9 +5761,9 @@ } }, "node_modules/@radix-ui/react-direction": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.2.tgz", - "integrity": "sha512-C3vFhbyi4SW3PmbAi6Awpu4OzJtd0MxGurvSsYtr7p7nM8RNB3VAF3CUmnp2j50knpkrRcB7+ycVXzgLgF6yNA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.2.0.tgz", + "integrity": "sha512-FtRA52a/r+LKStFT+neLUm+8vSe7wbzkbQGGeU8ixFiwC8NU14Evoq9ATECqL3eGbcUzJR4fyfA4KkK/q6dfqg==", "license": "MIT", "peer": true, "peerDependencies": { @@ -5557,17 +5777,17 @@ } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.15.tgz", - "integrity": "sha512-b0XaRlzn2QKuo10XyNgi2DAJDf5XC9d1nD3FJcuvCjbR7+4Ad28zmZsLsqx+hvDEzMnRuZaZxZm9gYObV6RmRA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.2.1.tgz", + "integrity": "sha512-KIfDcAsx+oVylFZ4xryVKusJUrLLhTQmfnJW4kwk4Km5myvhHCrj04hnWWUC166+xD4DHdH8tQGylwYX1h6+Pg==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-effect-event": "0.0.3" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-effect-event": "0.0.5" }, "peerDependencies": { "@types/react": "*", @@ -5585,19 +5805,19 @@ } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.20.tgz", - "integrity": "sha512-slfm+rRaZRuQBvHq60lXvSVUPhid0IPtjSZzIuUlWZMUs01iYZNlGS3mJgRD3ChLQVBAYlKiL/tFyWGX+dz8Xw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.2.1.tgz", + "integrity": "sha512-XsHcmYG2AcqnvTqrOXXWcMrhquEIlqucizuDH1MV/qMRW+DndpBCMvNeTRXOxqmG1H5j89M/+I0/34Zdd+zDcQ==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-menu": "2.1.20", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-menu": "2.2.1", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-controllable-state": "1.3.0" }, "peerDependencies": { "@types/react": "*", @@ -5615,9 +5835,9 @@ } }, "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.4.tgz", - "integrity": "sha512-cot/aB/mOm0IYVYTTmQcEEK1M48lZWi8FlYe5nDPQQ8NYZUlXEFgncJ9p2Kzer3RKSrY7cTTpEMLZKNo9QoP5Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.2.0.tgz", + "integrity": "sha512-MPm5R0iRGUDrDnPNxmLBkv+X7pN4XKzt+MbWJEuJQsH3NFH4omrbpXpucyYCCKTSt+na/ZxGhEWQrWTZ0285cA==", "license": "MIT", "peer": true, "peerDependencies": { @@ -5631,15 +5851,15 @@ } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.12.tgz", - "integrity": "sha512-jjk/lqTeNL0azUx5ZYzVrl4NgaDIrdzTNE4mABV9yBFI7FQqN7pIgzV1bTleUezP2QiTGA1BFTqY8MegDgWX9A==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.3.1.tgz", + "integrity": "sha512-ugeMhbXt4y5S2T1GnIqbWDKEN962PDwnX1fN0eKOOgf5f63Dh2mn8F1FUySlgW0iF6GiVsRF32DzuDIWTUyQJg==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2" + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-callback-ref": "1.1.5" }, "peerDependencies": { "@types/react": "*", @@ -5657,21 +5877,22 @@ } }, "node_modules/@radix-ui/react-hover-card": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.19.tgz", - "integrity": "sha512-2KTgMLQtKvicznQgbindEI2RZ3QbDIwU5gabjUPwFJsormjGDz+rUvO4NANmYwzEEpTcTONUt33vBHIfTIVSfw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.2.1.tgz", + "integrity": "sha512-4QooHxgmpCKRjj1Pft+hETKidYcrbPKcVwMGtk2Oa5DcWY2IH1fHuQt9LG6q5hUQBBV2MhQxSvtx6B/C1xfiTw==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-popper": "1.3.3", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-focus-scope": "1.3.1", + "@radix-ui/react-popper": "1.4.0", + "@radix-ui/react-portal": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-controllable-state": "1.3.0" }, "peerDependencies": { "@types/react": "*", @@ -5689,13 +5910,13 @@ } }, "node_modules/@radix-ui/react-id": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.2.tgz", - "integrity": "sha512-orBC88futVpqCmhX1p4cvquNHsELQ+w+vBJnuj3ftETI5bJb0bZn3Tqu3SWN2IOcPycTnMGnhwoermvISt72sA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.4.tgz", + "integrity": "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -5708,28 +5929,28 @@ } }, "node_modules/@radix-ui/react-menu": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.20.tgz", - "integrity": "sha512-VsUrXxFe9d2ScbZF0fR/oPR1+qjyeLs5p0jzG8h90puMoA9bq4SirYlXbE+USRg9Q2qTeJSFNqjw2nts8jJe4w==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-focus-guards": "1.1.4", - "@radix-ui/react-focus-scope": "1.1.12", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-popper": "1.3.3", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.15", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-callback-ref": "1.1.2", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.2.1.tgz", + "integrity": "sha512-G34BsU90SBj5foYpz8pQqq/Q0Dlfyyl6KitWEfRwXC0QvfwhWNAwS49DWP2+rRJ0iwv20Z2Qx7Sk+T03bGo5JA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-collection": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-focus-guards": "1.2.0", + "@radix-ui/react-focus-scope": "1.3.1", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-popper": "1.4.0", + "@radix-ui/react-portal": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-roving-focus": "1.2.1", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-callback-ref": "1.1.5", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, @@ -5749,24 +5970,24 @@ } }, "node_modules/@radix-ui/react-one-time-password-field": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.13.tgz", - "integrity": "sha512-reLtbZtEBsMcqXkjd/wOga4e8t9uxzFHdX9W/j/ZfGznTNJxLGjRrDNGnGOOWcBazMH1BI/b7Cx+hblSWSD7aw==", + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.17.tgz", + "integrity": "sha512-+6jmOqjSNBr7F1uSc7HSDqD3XL54A2qA99I9rIH4JoOD/jDScw8tUmDz6HCAkjytbrE/cdL66i+QkeDyZ0WNyw==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/number": "1.1.2", - "@radix-ui/primitive": "1.1.6", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.16", - "@radix-ui/react-use-controllable-state": "1.2.4", - "@radix-ui/react-use-effect-event": "0.0.3", - "@radix-ui/react-use-is-hydrated": "0.1.1", - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/number": "1.1.3", + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-collection": "1.1.16", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-direction": "1.1.5", + "@radix-ui/react-primitive": "2.1.11", + "@radix-ui/react-roving-focus": "1.1.20", + "@radix-ui/react-use-controllable-state": "1.2.6", + "@radix-ui/react-use-effect-event": "0.0.5", + "@radix-ui/react-use-is-hydrated": "0.1.3", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -5784,30 +6005,113 @@ } }, "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/primitive": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.6.tgz", - "integrity": "sha512-w9hl+724uYEgCGR3bhuRepjBtrNB/6gkhCnAf58Ke+SLbHPPQqVZZB59z60roB+5H+nh3nWTcdJhQdFMEydWmw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.7.tgz", + "integrity": "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==", "license": "MIT", "peer": true }, - "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/react-roving-focus": { + "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/react-collection": { "version": "1.1.16", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.16.tgz", - "integrity": "sha512-w7lLsTSd3940vFYEshKkHw+NGf7H0QDJPHYsy8NRjDCVbO6ZdKW1X/xoJSYHZtttnrdZiYqbN2O/2uHGB0zasw==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.16.tgz", + "integrity": "sha512-yEQrjfI5eBbeYEJXOASpm+gs9eNHY8+UjkZ81GzcuwdLrSMOlEM8jnGoGdeGo92oiBMkuwZUhHTsnsrDiJLcyA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-primitive": "2.1.11", + "@radix-ui/react-slot": "1.4.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/react-context": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.2.2.tgz", + "integrity": "sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/react-direction": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.5.tgz", + "integrity": "sha512-/NlO/rOqQabmg+GGr86vCmbJVhqTv85NfM9g6Gknf/JVygXeZ6e6HM/RW1omerW9HsFtecwNqgEAKV6UqDsvpA==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/react-primitive": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.11.tgz", + "integrity": "sha512-RzcaSw5aKl0OPhBJ1wbolKSF6nVvN+0o/QLeIVq+09npiPdnCkPggy2k6gI6yetxl4ZyrlBPYFgCB8BQJZwXcQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-slot": "1.4.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.20.tgz", + "integrity": "sha512-+ZjbkU21fTSJdn4nq/IFKUdKS+JSZHORBZ8ma1f6YpOMNzRt0xf3sVAWVK/+ktHCajPy4HYDsyHXZIZmOMxzIA==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.6", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-controllable-state": "1.2.4", - "@radix-ui/react-use-is-hydrated": "0.1.1", - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-collection": "1.1.16", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-direction": "1.1.5", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-primitive": "2.1.11", + "@radix-ui/react-use-callback-ref": "1.1.4", + "@radix-ui/react-use-controllable-state": "1.2.6", + "@radix-ui/react-use-is-hydrated": "0.1.3", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -5824,16 +6128,51 @@ } } }, + "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/react-slot": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.4.0.tgz", + "integrity": "sha512-IuMVHZ+Ah5fkctu3X3qeFrV/ZrBcuWuDTFUUPfS/L5hvoTjzhp/HdWGE14CsQombPdEidsa33HVlYZXi49PZ1Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.5" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.4.tgz", + "integrity": "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-one-time-password-field/node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.4.tgz", - "integrity": "sha512-cx2DixxmSfjCcEoRvDvy1NLd6SWK94XFcEEOZUcharUlXbmahFQGKCfwdKZL2ub34iIwOPOEFVF80xb+yfLYiA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.6.tgz", + "integrity": "sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.6", - "@radix-ui/react-use-effect-event": "0.0.3", - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-use-effect-event": "0.0.5", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -5846,22 +6185,22 @@ } }, "node_modules/@radix-ui/react-popper": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.3.3.tgz", - "integrity": "sha512-mS7dGpyjv6b+gsDjLF7e0ia1W4Im1B1hSCy2yuXlHuvnZxHKagfDaobt/KAKt27EpZMit2pss8eJBVyVjEWM+g==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.4.0.tgz", + "integrity": "sha512-yCWRvLeGv9Pz3+efwHqGPp70mZ56r3kfIgQVF56Oj2aAa4uP/Tb+IE59wNcc+758rctqbCKx4LbK8II/r7Bn0Q==", "license": "MIT", "peer": true, "dependencies": { "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.11", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.2", - "@radix-ui/react-use-rect": "1.1.2", - "@radix-ui/react-use-size": "1.1.2", - "@radix-ui/rect": "1.1.2" + "@radix-ui/react-arrow": "1.1.17", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-layout-effect": "1.1.4", + "@radix-ui/react-use-rect": "1.1.4", + "@radix-ui/react-use-size": "1.1.5", + "@radix-ui/rect": "1.1.3" }, "peerDependencies": { "@types/react": "*", @@ -5879,14 +6218,14 @@ } }, "node_modules/@radix-ui/react-portal": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.13.tgz", - "integrity": "sha512-z3oXfmaHLJTF1wktbjgD6cn9jiEbq3WSondB10LIuIt2m2Ym4iJlrW04/euMwENDdWDdE7z+OuY7Qyp1YpRSwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.2.0.tgz", + "integrity": "sha512-StX7xXnaRU41VvFtMm9zlhVGz8XF6GmWWTXftkQaY+tqVkbs/R9UmAp5mLzHHapk5hM9RMZQvO/3usyIP/g42g==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -5904,13 +6243,13 @@ } }, "node_modules/@radix-ui/react-presence": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.7.tgz", - "integrity": "sha512-zBZ4QM5XG3JRanDmqXYf3MD6th4AFXFmgU6KNMFzUaV6F3uw9I5/zjMUvFriSEn5ewo1nxuibvyxJdmLlDcslA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.11.tgz", + "integrity": "sha512-Z7/atlkab36Z8hm+V8zYc79r0W+tiOB1o0tun1By94JyadkekLQmtEAnBSP9XKXBNQsStoStS4+gX10JpS5akA==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -5928,13 +6267,13 @@ } }, "node_modules/@radix-ui/react-primitive": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.7.tgz", - "integrity": "sha512-bC3NiwsprbxKjuon9l7X6BUTw7FPVzEYaL92MPEY5SCd/9hUTPXVFtVwRix7778wtRsVao+zE062gL79FZleeQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.2.0.tgz", + "integrity": "sha512-HCTSPMNqv55Qk0IX4geJbpyXazmqulcimwuyjxTkKi29v+QZbG2Zho9BnbBq4YS2PF+KlNb2CXoLz66uUmblkg==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-slot": "1.3.0" + "@radix-ui/react-slot": "1.5.0" }, "peerDependencies": { "@types/react": "*", @@ -5952,14 +6291,14 @@ } }, "node_modules/@radix-ui/react-progress": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.12.tgz", - "integrity": "sha512-ZPHyI0JyzoH/rP0tq2uRaIZTj/4s8+kAbqPz+e2N8+ejHvwPJ889dHhqn+vh7PNvNeq+boAoH9yzqeoShzwF2w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.2.1.tgz", + "integrity": "sha512-yQBiM6J3YM8Ums1orkEFpbznK47geKxa0igikzcaS1xHgdba3DdAQBsGbCTt5BVfR8zhEvgxQ0poGcINaD3lvw==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-primitive": "2.1.7" + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-primitive": "2.2.0" }, "peerDependencies": { "@types/react": "*", @@ -5977,22 +6316,21 @@ } }, "node_modules/@radix-ui/react-radio-group": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.4.3.tgz", - "integrity": "sha512-WwZFjWV4s3aC1QtR3k04R+oANHtX2q6fgKlc7MCEiDNlnTxCZ3H8k3mHtEgVlOejystwk1WQgarQhNOQZ2bK1g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.5.1.tgz", + "integrity": "sha512-QbyVT1ddnjqB9H+CUYKkNWdU9fIK3QHCYtjf7mS6ekSqiuXkWtWn5UZW9mhA8qtl3vrVyIsmR9gePstAtKrqkw==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.15", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-previous": "1.1.2", - "@radix-ui/react-use-size": "1.1.2" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-roving-focus": "1.2.1", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-size": "1.1.5" }, "peerDependencies": { "@types/react": "*", @@ -6010,23 +6348,23 @@ } }, "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.15.tgz", - "integrity": "sha512-40svmmugfM3mUN7VUDGVE1tQGOhyi8enlGD0CNJEcMM36C1f71PKM21DFgNHUfem0XnA+d8H8oN3Z9ZpJjSslg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.2.1.tgz", + "integrity": "sha512-UwraORzVUeEPMclhO1p0vz0qI+TbdDLO9i+FiOqhJyHKwdpCRCck9yVEscUnAMIzCiuNoQa8D4A9bIpOPXGt6Q==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-is-hydrated": "0.1.1", - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-collection": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-is-hydrated": "0.1.3", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -6044,21 +6382,22 @@ } }, "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.14.tgz", - "integrity": "sha512-bBODCWZK7JTbQLHs0uIP4f73wIWatakK4OS33UzkR1x897wu0PuO658a3f+6P2GEGyDzGYMuHRatMVoAk9WZTw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.4.0.tgz", + "integrity": "sha512-CFrLqHNejWq5FhKAcj9V/WPGRsol76HBQto81NdOBVFEOqIEkJkKIJt0Z824A/9hHLCtoiR/Kw3euRgzXP2pxg==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/number": "1.1.2", - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/number": "1.1.3", + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -6076,32 +6415,31 @@ } }, "node_modules/@radix-ui/react-select": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.3.3.tgz", - "integrity": "sha512-L5RQTXz6Anxsf9CCv+pTgiAsUpyVj7rJxsGtmhFaEOJ++cVfXucv4qWfsIO0AIB4NAhi3yovWGVMKKS1Xf1Wrg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@radix-ui/number": "1.1.2", - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-collection": "1.1.12", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-focus-guards": "1.1.4", - "@radix-ui/react-focus-scope": "1.1.12", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-popper": "1.3.3", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-callback-ref": "1.1.2", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-use-layout-effect": "1.1.2", - "@radix-ui/react-use-previous": "1.1.2", - "@radix-ui/react-visually-hidden": "1.2.7", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.4.1.tgz", + "integrity": "sha512-888ZwW0Md6GyptuqYABRX9nLKgoYfcooCyBBvVaX5Jp3e+8Jp2i4Zo/Uy50Hm+Ysn2JfloQXstW4U36w8teVtg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@radix-ui/number": "1.1.3", + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-collection": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-focus-guards": "1.2.0", + "@radix-ui/react-focus-scope": "1.3.1", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-popper": "1.4.0", + "@radix-ui/react-portal": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-callback-ref": "1.1.5", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-layout-effect": "1.1.4", + "@radix-ui/react-visually-hidden": "1.2.13", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, @@ -6121,13 +6459,13 @@ } }, "node_modules/@radix-ui/react-slot": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.0.tgz", - "integrity": "sha512-MojKku4U/miO8Av4Dkb+ctMAQx7JmY96LmtDQlAarCRtd7rN52QCSzBF+XAvr5S6coSVj9HEPBgHAHKEJVk/WA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.5.0.tgz", + "integrity": "sha512-tyYd9ddPXAysAbdbD9eYxgwpCSv6f3PncqVSNKQFSR5lcJVLz3cb/pANDoYrLiHBpXv7skortyUgGUWsYuPPFQ==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-compose-refs": "1.1.3" + "@radix-ui/react-compose-refs": "1.1.5" }, "peerDependencies": { "@types/react": "*", @@ -6140,20 +6478,20 @@ } }, "node_modules/@radix-ui/react-tabs": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.17.tgz", - "integrity": "sha512-nRyXnrAVCwjeXcHbvEbLS6ndbTeKHG1RqCP4A8Gw5L4cemDzPXdD8rAmr6wet0v57R69wGvuIIsFjHSVkZiMzQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.2.1.tgz", + "integrity": "sha512-hRoJlode+hg5ZNlR+3tkfkUliIybdTpD5lkAvHQ9yaXseGf7XVO9Ib2GPEIOuaJJbo7YWYbNpDDRfo8Dhf6/xA==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.15", - "@radix-ui/react-use-controllable-state": "1.2.3" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-roving-focus": "1.2.1", + "@radix-ui/react-use-controllable-state": "1.3.0" }, "peerDependencies": { "@types/react": "*", @@ -6171,15 +6509,15 @@ } }, "node_modules/@radix-ui/react-toggle": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.14.tgz", - "integrity": "sha512-QI/hB65XKWACA66P64A+aHxtLUgHJeJLkaQa+awUNXT6T3swndtY5DojeHA+vldrTspMTtFBd7HfZ9QGbM1Qrw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.2.1.tgz", + "integrity": "sha512-+3MUq+WyiBplXYqQ0EIYlq8R4sLQ0T5NbOK7DMdDLCKO93pe2uE0DUJTWWfTBprpJJXxfoF3eMW0xpakVZrYsg==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-use-controllable-state": "1.2.3" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-use-controllable-state": "1.3.0" }, "peerDependencies": { "@types/react": "*", @@ -6197,19 +6535,19 @@ } }, "node_modules/@radix-ui/react-toggle-group": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.15.tgz", - "integrity": "sha512-gIC5Q+Xljg7lmUdzSuDoy0t97yZn1sZl00Ra37ZvKrYdWnQLU6sWLd09yG8cIB9jUAlQfHgJ2ACAG00MFwsqSQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.2.1.tgz", + "integrity": "sha512-O8Ldx5ao4p4KoW+DO8/PmkOe5mdKNi3F2SseqjVj88wvDGDHe60cUmO0Zm/uHsKrvNgQGV8Efpuh95Tht/h4vw==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-direction": "1.1.2", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-roving-focus": "1.1.15", - "@radix-ui/react-toggle": "1.1.14", - "@radix-ui/react-use-controllable-state": "1.2.3" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-direction": "1.2.0", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-roving-focus": "1.2.1", + "@radix-ui/react-toggle": "1.2.1", + "@radix-ui/react-use-controllable-state": "1.3.0" }, "peerDependencies": { "@types/react": "*", @@ -6227,24 +6565,26 @@ } }, "node_modules/@radix-ui/react-tooltip": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.12.tgz", - "integrity": "sha512-U3HoftgWnmla78vzQbLvKKb7bUYJxoiiqYFzp1wu/TBMyDqMZSuCl3aRICsD6EfVEwcJD2mumGDGUXLFVqQHKA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.4.1.tgz", + "integrity": "sha512-NxLFGSFtZ78zVfcoOhTwR1xwqo5qx1Jh8Pw6FMZ9McCaqfRzz7/gIRahs2Oy5XlPgQ+8QkUcKbN5B0U44J/kCg==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/primitive": "1.1.5", - "@radix-ui/react-compose-refs": "1.1.3", - "@radix-ui/react-context": "1.2.0", - "@radix-ui/react-dismissable-layer": "1.1.15", - "@radix-ui/react-id": "1.1.2", - "@radix-ui/react-popper": "1.3.3", - "@radix-ui/react-portal": "1.1.13", - "@radix-ui/react-presence": "1.1.7", - "@radix-ui/react-primitive": "2.1.7", - "@radix-ui/react-slot": "1.3.0", - "@radix-ui/react-use-controllable-state": "1.2.3", - "@radix-ui/react-visually-hidden": "1.2.7" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.3.0", + "@radix-ui/react-dismissable-layer": "1.2.1", + "@radix-ui/react-focus-scope": "1.3.1", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-popper": "1.4.0", + "@radix-ui/react-portal": "1.2.0", + "@radix-ui/react-presence": "1.1.11", + "@radix-ui/react-primitive": "2.2.0", + "@radix-ui/react-slot": "1.5.0", + "@radix-ui/react-use-controllable-state": "1.3.0", + "@radix-ui/react-use-layout-effect": "1.1.4", + "@radix-ui/react-visually-hidden": "1.2.13" }, "peerDependencies": { "@types/react": "*", @@ -6262,11 +6602,14 @@ } }, "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.2.tgz", - "integrity": "sha512-xCso9j1/u8sEgP1RNHjFrXJLApL8LiqOkI1R4ywuN00rxWdYg4oQXuwKLS3i0j5NWLromUD27/4nlxj2UFVvIw==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.5.tgz", + "integrity": "sha512-Y5GBf4NKeADoXI1geiMlMuMoURT3k9MizzzKhGb/m55H94aGigZ01PIpkvsO6lML13BA6XYAXSJ6gza7vTn5nw==", "license": "MIT", "peer": true, + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.4" + }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -6278,14 +6621,15 @@ } }, "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.3.tgz", - "integrity": "sha512-PLzC90MS+ReootmjC597dvopoelpZ8Q61HJkDXZSExitIq7PL55vHNnesAHwguHK0aPfBnpdNzQtv1uliaqQrA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.3.0.tgz", + "integrity": "sha512-TAcBI7bw2ljYCbv4+zuTSd6zICu8pRt6SDN2vJ/Z06K2MXh6I9WYFe/A9ovlFDtR5HVHGm5iDxDoABm/++dbKg==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-use-effect-event": "0.0.3", - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/primitive": "1.2.0", + "@radix-ui/react-use-effect-event": "0.0.5", + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -6298,13 +6642,13 @@ } }, "node_modules/@radix-ui/react-use-effect-event": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.3.tgz", - "integrity": "sha512-6c8ZqvPTWILEKnyVkP53EGRCcpnJiKTC21sS/6R1GF5xKyHJJWQEPfkqlcgUkdRQivd6tb23abUwe4ngWmY0JA==", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.5.tgz", + "integrity": "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -6317,9 +6661,9 @@ } }, "node_modules/@radix-ui/react-use-is-hydrated": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.1.tgz", - "integrity": "sha512-qwOiz4Tjo8CNnrOLAYUMXeZwDzXgXpvK4TKQPmWLECM9XoWvA6+0Z2/7Ag3A4ivjS4ovbLJPbskkxioFyBhr8A==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.3.tgz", + "integrity": "sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==", "license": "MIT", "peer": true, "peerDependencies": { @@ -6333,25 +6677,9 @@ } }, "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.2.tgz", - "integrity": "sha512-jrBWOxZITuGcnjRCM2t2U5ZPkCLxD+Ym6DjfssS5haTj2iiak/DOb64JeN6OdLfLgptb6/e2kKR+ZuTrGoZTPA==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.2.tgz", - "integrity": "sha512-IGBQPtRFdhN6MQ8dbegVmBq1LVZluya3F1jWY+puIcQC3MHctRwTDSBWCkL/3ZcnMJLTMJ++Z+ktmvg0F89iCw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.4.tgz", + "integrity": "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==", "license": "MIT", "peer": true, "peerDependencies": { @@ -6365,13 +6693,13 @@ } }, "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.2.tgz", - "integrity": "sha512-d8a+bBY/FxikNPlgJJoaBHZX+zKVbWHYJGTLnLvveQgFSTntkGdEKv3JDtHrMS0DNYpllz2nRsTLGLKYttbpmw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.4.tgz", + "integrity": "sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/rect": "1.1.2" + "@radix-ui/rect": "1.1.3" }, "peerDependencies": { "@types/react": "*", @@ -6384,13 +6712,13 @@ } }, "node_modules/@radix-ui/react-use-size": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.2.tgz", - "integrity": "sha512-giWQp+4mxjBPt4KZ0MmyuykFNWfbDxKt4x+fPkRYmgRFJSbCZFzUglvMb/Kjn38tm10YP4ufiQZDx3zna4LU6w==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.5.tgz", + "integrity": "sha512-V1McDQkMGzgivwqdu7u96APs7oi0Jvj9LTzgq3WWrDZqxWdAqU9yZnZQqk5OizGFR8badUQwZsrlao7MOlWYOA==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.2" + "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", @@ -6403,13 +6731,13 @@ } }, "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.7.tgz", - "integrity": "sha512-1wNZBggTDK3GRuuQ6nP4k2yi7a6l7I5qbMPbZcRsrGsGVead/f/d5FhEzUvqFs0bcrDLx7n1zKQ3JvLR6whaaw==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.13.tgz", + "integrity": "sha512-feijiN1oPk4rck4u9Dm9tsU4mT6Wp9oeEEhaz1WUEs1VuqLf8xzsFG+Qk+uWq6TnMH9O+WRECRg0NftyP9E4Fw==", "license": "MIT", "peer": true, "dependencies": { - "@radix-ui/react-primitive": "2.1.7" + "@radix-ui/react-primitive": "2.2.0" }, "peerDependencies": { "@types/react": "*", @@ -6427,16 +6755,16 @@ } }, "node_modules/@radix-ui/rect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.2.tgz", - "integrity": "sha512-xnXE7wG13PI+cxieVssYXlQJuYVRhH9NBoxt3KNwzghDIA69GMm7d4wXRouHIYjE+KvS6U/MsMO73NdS2MH9ZA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.3.tgz", + "integrity": "sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==", "license": "MIT", "peer": true }, "node_modules/@reduxjs/toolkit": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.12.0.tgz", - "integrity": "sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.13.0.tgz", + "integrity": "sha512-f6jwVRfwW30+tnllz4YcsHHpPYYOE7abcHkyUCovD+P7DyhdAI5prz2Fh/8TLhakjpN+7aIEion1s5L/tvlYlA==", "license": "MIT", "peer": true, "dependencies": { @@ -6461,13 +6789,13 @@ } }, "node_modules/@shikijs/core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.4.3.tgz", - "integrity": "sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.5.0.tgz", + "integrity": "sha512-6CIgwq+bt2JZ3OSjb/nBkkwEf/CfpHcbam+Mg5Pllco7HAGRQ2/EFhZrrJtbyNTgKwknfVS+llsXGygiDGwJWw==", "license": "MIT", "dependencies": { - "@shikijs/primitive": "4.4.3", - "@shikijs/types": "4.4.3", + "@shikijs/primitive": "4.5.0", + "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5", "hast-util-to-html": "^9.0.5" @@ -6477,12 +6805,12 @@ } }, "node_modules/@shikijs/engine-javascript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.4.3.tgz", - "integrity": "sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.5.0.tgz", + "integrity": "sha512-Ed6UdEj84LyYkwnxM5CvSMWAD+id9ExTYri0/+x41U9zrgNifPSS9lZm0JqBP0VfYI8yr8tY5nbNq9+p9R0kFA==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.3", + "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" }, @@ -6491,12 +6819,12 @@ } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.4.3.tgz", - "integrity": "sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.5.0.tgz", + "integrity": "sha512-dKVmbJecVdB9recl8a/CU4jdpNXyjJQrIcesIkpS70s5HS02ohpnCSpMUbotPnEUzbAcLQ+S4hwZYbkBBiTcJw==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.3", + "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2" }, "engines": { @@ -6504,24 +6832,24 @@ } }, "node_modules/@shikijs/langs": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.4.3.tgz", - "integrity": "sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.5.0.tgz", + "integrity": "sha512-wwBTqwduXSz0X4v9Qa2EWeFaYJEw1clCncWjoRNQRbVDu3SPRTRWucnouYapKj3b8Q+sk/41Vbc4B5c8nuYzLA==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.3" + "@shikijs/types": "4.5.0" }, "engines": { "node": ">=20" } }, "node_modules/@shikijs/primitive": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.4.3.tgz", - "integrity": "sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.5.0.tgz", + "integrity": "sha512-UM7ShlA8oz0OWxLLO8BmO9Ip6fVqdkt8yF0EH7nOCqHfrx1eEAzF0ZUVK7L+I8NEgeu1PEWSRlxaiPPeCb4iDg==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.3", + "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" }, @@ -6530,21 +6858,21 @@ } }, "node_modules/@shikijs/themes": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.4.3.tgz", - "integrity": "sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.5.0.tgz", + "integrity": "sha512-zGb87H3UBbpuI4yoh5UguB1XbU+2BDU3kflM7UfZ+Cy2hWo9lBtqjSVK20gmLY6ukYl040hAypGXMgud9vul8Q==", "license": "MIT", "dependencies": { - "@shikijs/types": "4.4.3" + "@shikijs/types": "4.5.0" }, "engines": { "node": ">=20" } }, "node_modules/@shikijs/types": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.4.3.tgz", - "integrity": "sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.5.0.tgz", + "integrity": "sha512-drtPrtD8N0DENyD2cyt6Ajy+IWsiCLgMxODwLTpvH1UsN6a9jf90tNTPjqwHvA+0Lzu9e0txk8DjfqH1p9UJRw==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", @@ -6573,6 +6901,29 @@ "license": "MIT", "peer": true }, + "node_modules/@stripe/react-stripe-js": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-6.12.0.tgz", + "integrity": "sha512-5RVfx92MTb66+ELuQTreUqX2oFvma5wybZ7MaifoNo0QgrjbJiLZcysGw5kIHU7p1TCd1Lx5JnasoqteSwlUsg==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "@stripe/stripe-js": ">=9.16.0 <10.0.0", + "react": ">=16.8.0 <20.0.0", + "react-dom": ">=16.8.0 <20.0.0" + } + }, + "node_modules/@stripe/stripe-js": { + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-9.17.0.tgz", + "integrity": "sha512-uidL4OJum5kivsOAQnVfQmYLJ2zdgirtmT0zWgskASZ4TPXxpXQ0MNrzW4NsXB90uEqmPHpSEtciLFbF1QQvNA==", + "license": "MIT", + "engines": { + "node": ">=12.16" + } + }, "node_modules/@svta/cml-608": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@svta/cml-608/-/cml-608-1.0.2.tgz", @@ -6752,16 +7103,16 @@ } }, "node_modules/@swc/core": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.43.tgz", - "integrity": "sha512-1CuKjFkPxIgGdeHVuNbkxmBxkcbdc08u0aiI43pFq6yY1tTVKmXT9hFEooyyKs/sJ3xf1GPHyEwTtk9Xl8dvQw==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.16.18.tgz", + "integrity": "sha512-0cYQLkpcwUngg55TDwpwrrVOU+B6zh1NFbp+oS7dVFhmYkzaARelwugo/bzPJh1FrcnppmF+KTqioCGwyqbcEw==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.27" + "@swc/types": "^0.1.28" }, "engines": { "node": ">=10" @@ -6771,18 +7122,18 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.43", - "@swc/core-darwin-x64": "1.15.43", - "@swc/core-linux-arm-gnueabihf": "1.15.43", - "@swc/core-linux-arm64-gnu": "1.15.43", - "@swc/core-linux-arm64-musl": "1.15.43", - "@swc/core-linux-ppc64-gnu": "1.15.43", - "@swc/core-linux-s390x-gnu": "1.15.43", - "@swc/core-linux-x64-gnu": "1.15.43", - "@swc/core-linux-x64-musl": "1.15.43", - "@swc/core-win32-arm64-msvc": "1.15.43", - "@swc/core-win32-ia32-msvc": "1.15.43", - "@swc/core-win32-x64-msvc": "1.15.43" + "@swc/core-darwin-arm64": "1.16.18", + "@swc/core-darwin-x64": "1.16.18", + "@swc/core-linux-arm-gnueabihf": "1.16.18", + "@swc/core-linux-arm64-gnu": "1.16.18", + "@swc/core-linux-arm64-musl": "1.16.18", + "@swc/core-linux-ppc64-gnu": "1.16.18", + "@swc/core-linux-s390x-gnu": "1.16.18", + "@swc/core-linux-x64-gnu": "1.16.18", + "@swc/core-linux-x64-musl": "1.16.18", + "@swc/core-win32-arm64-msvc": "1.16.18", + "@swc/core-win32-ia32-msvc": "1.16.18", + "@swc/core-win32-x64-msvc": "1.16.18" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" @@ -6794,9 +7145,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.43.tgz", - "integrity": "sha512-v1aVuvXdo/BHxJzco9V2xpHrvwWmhfS8t6gziY5wJxd+Z2h8AeJRnAwPD8itCDaGXVBwJ/CaKfxEzTkG0Va0OA==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.16.18.tgz", + "integrity": "sha512-ozgiCHyFDCwfXzTnaLR+i8WxEyt06GTudn9rPh08vj+u3Z8vMvt5Pi8T+BikyNXm7y++h6UMdqsnJuWrV+tk2A==", "cpu": [ "arm64" ], @@ -6812,9 +7163,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.43.tgz", - "integrity": "sha512-lp3d4Lamc8dt5huYdGLSR+9hLxmfr1jb0l+4XXG2zPqZwYWRN9R0U2qYoTrggiU2RWW0oV9VbWM3kBnqIc2kdQ==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.16.18.tgz", + "integrity": "sha512-tuwxXi+sjxxTAi7GP3NeQXQxOf4SXSiFxKAMYLBdoy7JqGYby6uSDXojcFoLOhSp7oiNGstnaFXxfbP0Hpro9w==", "cpu": [ "x64" ], @@ -6830,9 +7181,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.43.tgz", - "integrity": "sha512-JWTQQELtsG5GgphDrr/XqqmM2pDN3cZqbMS0Mrg+iTiXL3F74sn/S2IyYE/5u4h2KLkTf9qQ7dXyxsbx7YzkeA==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.16.18.tgz", + "integrity": "sha512-SMdhmY1P9Kveh0MRj6vqQF98bsjnDa0lBBvkd/lcpxmjj5QHJOQAU0N3g6h7GPWpBMs3h2g3lHu/QTDn+uMsXg==", "cpu": [ "arm" ], @@ -6848,9 +7199,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.43.tgz", - "integrity": "sha512-B4otJRdPWIsmiSBf0uG7Z/+vMWmkufjz5MmYxubwKuZazDW14Zd3symga1N62QR4RT+kEFeHEgsXfZGyn/w0hw==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.16.18.tgz", + "integrity": "sha512-ep/mQyhblQYZ6tkfq0IJspcVSFl5jdywks3kejanrbB31uuujRD/QWOoGNp2L3lLRdAdQvgl/M3pA7g3hSuQug==", "cpu": [ "arm64" ], @@ -6869,9 +7220,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.43.tgz", - "integrity": "sha512-6zB6OnpViBxYy4tgY3v2i6AZY9fwkcHZ032UOwtwUuW1d19sdT07qF0kZe6/3UR1tUaK6jjg2rmVcUIBCEYVjQ==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.16.18.tgz", + "integrity": "sha512-pkzGVxrAQu5+febW1a/Aiph3YJk0UiJKXoWbxnDVEIOZWkk5aETHTuyVsOQ3kOgn2dzNMvJVeqcoEQdH+ntqWQ==", "cpu": [ "arm64" ], @@ -6890,9 +7241,9 @@ } }, "node_modules/@swc/core-linux-ppc64-gnu": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.43.tgz", - "integrity": "sha512-coxE1ZWdB3uSDVNoEtYNrRi/1epvckZx9cTJ8ICUxTMTxGk+yvQ/Twacp3ruZSaMPGCriUjP86C37VhaT6nyRg==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.16.18.tgz", + "integrity": "sha512-v9kiu4as1pJyQ8ESFTtMNydZ99m86QXLfAtm+XiKPKS93pXL80BCaXokAs9ebioGkIXgmwfbzUCdUC62H3JWkw==", "cpu": [ "ppc64" ], @@ -6911,9 +7262,9 @@ } }, "node_modules/@swc/core-linux-s390x-gnu": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.43.tgz", - "integrity": "sha512-lXfLhs+LpBsD5inuYx+YDH5WsPPBQ95KPUiy8P5wq9ob9xKDZFqwNfU2QW6bGO8NqRO/H9JQomTSt5Yyh+FGfA==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.16.18.tgz", + "integrity": "sha512-vU7TKRJ26i86YQr4QY/5bdcH72KzkBbSSUfPlErW6d6KOR47BcVGlYZFTcMMYlmd3CVSXFHW18tBSila66YfoA==", "cpu": [ "s390x" ], @@ -6932,9 +7283,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.43.tgz", - "integrity": "sha512-07XnKwTmKy8TGOZG3D9fRnLWGynxPjwQnZLVmBFbo6F+7vHYzBIOuwXEhemrChBWb6yDNZsVCcMWCPX6FDD2xg==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.16.18.tgz", + "integrity": "sha512-Ml6kbe0BoVJkSgmYPAEUudGcu84jaQeqDN8xeMumbwNpT0vlmm7241Ddp9XKCjQABvjomnXF0OiNOAfjBhNDNw==", "cpu": [ "x64" ], @@ -6953,9 +7304,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.43.tgz", - "integrity": "sha512-TJc+bsSIaBh+hZvZ5GRtW/K1bw66TJ9vsUwvVIsZdiWxU5ObLwZvfcnZ3UpgVfMnFibRes9uriJrQNBHEEogRQ==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.16.18.tgz", + "integrity": "sha512-TGU24+QmmS8y/hg0BLKgOU3W5TCcQC9bgGl8AB0R61gTNQdWdcmCehRLAJwlZfxtAml66xMJ6PWrX8NKrABOsA==", "cpu": [ "x64" ], @@ -6974,9 +7325,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.43.tgz", - "integrity": "sha512-jfd7s2/bUQYkOHLs+LWQNKZdmDa8+sufKLllhpWAhVQ2GDCwsHe3vR/j+OSiItZNtkzFuaawa3+SAKz9y5gYfw==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.16.18.tgz", + "integrity": "sha512-S53hm7Amc3YV8t2BUT6R7J+zSnwiGarG+GnxMca4W0uMkxBZ3Gl6jBwEgb6YqrYjf2DzOuRfauztqptCO76a/w==", "cpu": [ "arm64" ], @@ -6992,9 +7343,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.43.tgz", - "integrity": "sha512-rLAE8JvucqEW1ZGohxPQrQWPBQeJG4+ypKbWfdlU/qmKScvCkxf9/Jxnzki1dkUQCQ7P5Enp13RlvqOlvx/32g==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.16.18.tgz", + "integrity": "sha512-+6/10+OJmU12zWkrPVG0QeQEr8VsWeF8gyXrOfHZMIfMOfz8/ULXVZPhV9GhGMKSWake1xEJj2IYCiFRS/xMpQ==", "cpu": [ "ia32" ], @@ -7010,9 +7361,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.43", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.43.tgz", - "integrity": "sha512-h8MLDHZcfIukwQWj03rIJZx1I0E81AYj2X7J/nGErG4nz+QAv6G1Z+peotvinL3lqpbo32tLYSMFo32/ySzxKg==", + "version": "1.16.18", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.16.18.tgz", + "integrity": "sha512-7LsVrIICAZWSajXT6DwO7PYSTnW9maamOCyQylaOh13Viptrgi/7hl9fP75SiHe+kscaJahGXcorgt4MOOh/1w==", "cpu": [ "x64" ], @@ -7045,9 +7396,9 @@ } }, "node_modules/@swc/types": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.27.tgz", - "integrity": "sha512-K6h3iUlqeM946U4sXFYeahefR1YBbXJvko+hv8WS8/0BNJ4OHiHRywMnQUJCqkR7Y9+hqQ1TvEpiKqUhz7NEFg==", + "version": "0.1.28", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.28.tgz", + "integrity": "sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -7430,6 +7781,90 @@ "tailwindcss": "4.3.3" } }, + "node_modules/@testing-library/dom": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.2.tgz", + "integrity": "sha512-yzr2S9HyAIdhz2/6qHgbs665Q7PKVcDF05vsOlHPxG1mo36gKVesdYVeDLnXgfjJ03CrKRk08knc6+E/9m8v2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@testing-library/react": { + "version": "16.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.3.tgz", + "integrity": "sha512-Uo193NgQbPMz6lrrhtRQQFcMC6Re/ELLFbbuVL30WDlZxlpZf9/lMHTAVxPRLw1q1iu9OJmR1c2BLiENRstdBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@testing-library/react/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@testing-library/user-event": { + "version": "14.6.8", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.8.tgz", + "integrity": "sha512-vgSSqnANMnkcYR/vUNDbwS7aM3OErRLNUG8vCVVlj4oc6cKffUrccX7UAS5AmJQQNZTSibi9z5GvvRZ0aYgUCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, "node_modules/@tokenizer/inflate": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", @@ -7454,9 +7889,9 @@ "license": "MIT" }, "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.4.tgz", + "integrity": "sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==", "license": "MIT", "optional": true, "dependencies": { @@ -7472,6 +7907,14 @@ "@types/estree": "*" } }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@types/busboy": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/busboy/-/busboy-1.5.4.tgz", @@ -7530,9 +7973,9 @@ } }, "node_modules/@types/d3-shape": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", - "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-kVd74ta9eof3eJOvbNd1vGKS/XERRyQbT26Og63hIsvDO84cjD5gEOhsXf26w3FSoNlPVz84DOFcKv/oou+fMw==", "license": "MIT", "peer": true, "dependencies": { @@ -7577,6 +8020,12 @@ "@types/estree": "*" } }, + "node_modules/@types/google_interactive_media_ads_types": { + "version": "3.697.1", + "resolved": "https://registry.npmjs.org/@types/google_interactive_media_ads_types/-/google_interactive_media_ads_types-3.697.1.tgz", + "integrity": "sha512-gRjJoPKQRjjTuySHqZe8Pnu6a5B0bKbTUD2ioDLPSWlEuBaAc2p1mzUzy42SCeWkyYffo2Mnv+blUGuvVvx3dQ==", + "license": "MIT" + }, "node_modules/@types/google.maps": { "version": "3.65.3", "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.65.3.tgz", @@ -7599,9 +8048,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", - "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", + "version": "4.17.26", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.26.tgz", + "integrity": "sha512-48NWfiY6oNcKOh47Z4h+sIvwcQR91h6KPhaYKgeMIrkT2jV82Gy90SErj60vW8jQbeMSOSbhIv3bZ7JoqPPVhA==", "license": "MIT" }, "node_modules/@types/mdast": { @@ -7620,9 +8069,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.9.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.8.tgz", - "integrity": "sha512-VfMrScDmMhUJQmd5hArdQnFvK0OIeD36uN2Va1FcpYaLB/BgkgM8Ulc50XtYISPMz7APJ30+N0T5EM0jlcdfRw==", + "version": "25.9.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.9.tgz", + "integrity": "sha512-b4e2xxj/yMeT2hNlD6x7zNFiQK2Dlmkb9CQ6v3/1G2RezKN4YS2lcEv8lzGm1mhs4f2lM4yNAMI/zUDBZBBt7w==", "license": "MIT", "dependencies": { "undici-types": ">=7.24.0 <7.24.7" @@ -7680,22 +8129,20 @@ "license": "MIT" }, "node_modules/@types/sanitize-html": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.16.1.tgz", - "integrity": "sha512-n9wjs8bCOTyN/ynwD8s/nTcTreIHB1vf31vhLMGqUPNHaweKC4/fAl4Dj+hUlCTKYgm4P3k83fmiFfzkZ6sgMA==", + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.16.2.tgz", + "integrity": "sha512-kuAbgDCFv418flrp3z4o/4ufLA/5ovmXRH0L419iZCPGO7w00znjeDI5Wy/KZWNIBpDQc7hucCK+J5almB6FyA==", "dev": true, "license": "MIT", "dependencies": { - "htmlparser2": "^10.1" + "htmlparser2": "^12.0" } }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true, - "peer": true + "license": "MIT" }, "node_modules/@types/unist": { "version": "3.0.3", @@ -7717,9 +8164,9 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-67MQl+fpWKVTT1NYdnmo3U4sc/xPo/zQBncVnI74qmQa0z/b+1g6iYqNmGCPbxO+zz2aklb08a0oHfegiVd0/w==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -7740,9 +8187,9 @@ } }, "node_modules/@uiw/codemirror-extensions-basic-setup": { - "version": "4.25.10", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.25.10.tgz", - "integrity": "sha512-P3vytLlpE62KYSWrMUnwDCv2lvaQDuDZzyj03mHntuHo5bSl34fRZpjTY3kQTPGuXHxkGSYpoPFFj+hMTqaaMQ==", + "version": "4.25.12", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.25.12.tgz", + "integrity": "sha512-wR5lz7jbVcBGyiiLEObAmDikcc39KNqrrd4bdUhav85WZu48ttgnSf1YV+grHuMsj5l/WCw6u+r9ZuSfURJgiA==", "license": "MIT", "peer": true, "dependencies": { @@ -7768,9 +8215,9 @@ } }, "node_modules/@uiw/codemirror-themes": { - "version": "4.25.10", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.25.10.tgz", - "integrity": "sha512-Fqiz1HIuDlDftcL+/O53V333UOH6MqQ84VbiQB5egn6u+uDwAqACp1FrdAoi4wgpR3b3TGW4Gr0wIYcrJSSz1A==", + "version": "4.25.12", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.25.12.tgz", + "integrity": "sha512-3bLX6C+gstr82SmY2FAj2TfHXnl2SnC+whRZJmRsv82wMhG8RZlZVy+o0rLuGRIPD9acuY0gpouHVRNUnzBj3g==", "license": "MIT", "peer": true, "dependencies": { @@ -7788,9 +8235,9 @@ } }, "node_modules/@uiw/react-codemirror": { - "version": "4.25.10", - "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.25.10.tgz", - "integrity": "sha512-DzgSMwM5qzB7v1FIb4gEeriYt67iiay756/HIOM9mAbeOVK0MO7rqefHf0O5c0269pJKMW7AH9FjclExD23V9w==", + "version": "4.25.12", + "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.25.12.tgz", + "integrity": "sha512-RE0Gj/QesD7/JWPnJREG8Kq8brGv2NAH17iUECcBrLkqXzzEAgsj/4Qqvz/OlK8XWKmzlsenLRkObT9H+gYQ0w==", "license": "MIT", "peer": true, "dependencies": { @@ -7798,7 +8245,7 @@ "@codemirror/commands": "^6.1.0", "@codemirror/state": "^6.1.1", "@codemirror/theme-one-dark": "^6.0.0", - "@uiw/codemirror-extensions-basic-setup": "4.25.10", + "@uiw/codemirror-extensions-basic-setup": "4.25.12", "codemirror": "^6.0.0" }, "funding": { @@ -7814,10 +8261,20 @@ "react-dom": ">=17.0.0" } }, + "node_modules/@uiw/react-codemirror/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@uiw/react-json-view": { - "version": "2.0.0-alpha.43", - "resolved": "https://registry.npmjs.org/@uiw/react-json-view/-/react-json-view-2.0.0-alpha.43.tgz", - "integrity": "sha512-PMj+6xRDCPbVGccfLUDhx7yGrmVBSeFx3py6bqDds4QIYScXo9GEgtTbWXn3gXpoehsmOu//6dveYTf872wu3Q==", + "version": "2.0.0-alpha.44", + "resolved": "https://registry.npmjs.org/@uiw/react-json-view/-/react-json-view-2.0.0-alpha.44.tgz", + "integrity": "sha512-zfP0LSdbn8xqZc11j+E+O7SI8xqrUUtEpNU3xugFnGKBCNvdC688a8KERHI4yQVLUST6IUMM+pRsNkiPJAKJeQ==", "license": "MIT", "peer": true, "funding": { @@ -7860,275 +8317,323 @@ "integrity": "sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ==", "license": "Apache-2.0" }, + "node_modules/@wry/caches": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", + "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/context": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/equality": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/trie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", + "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@zag-js/accordion": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/accordion/-/accordion-1.41.2.tgz", - "integrity": "sha512-7G//V7svGGT8k5avw7bbQvbRC0Q/9QtX51b4iyAB1alR9E5mFd6Ch8q4njwcXClMQ7xePS3jUfVnzVGiRInEiQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/accordion/-/accordion-1.45.0.tgz", + "integrity": "sha512-q29KwigVLWWM6PbZwmwPxmecKIUYpWwOK5k28mX4NdRACKEonxdkvZQePhcAD5FIKbCvacB4POE6OOCy/E3JSQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/anatomy": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/anatomy/-/anatomy-1.41.2.tgz", - "integrity": "sha512-Fm9hqdrvaCzCsdcf19G8WZxYtHElKltkGHdhqMEt4XU+ULTr1DK7KbOtDDv9J27CuzqSLALUz5QfRjPftoKHwg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/anatomy/-/anatomy-1.45.0.tgz", + "integrity": "sha512-IPj5KyrIjfhxKBCeVyzZsP3j9LhDmZ5wTTpfeLTwPwGlPgYrRT8m2Tyh88uX9RCd6cEOkxgWYTIAJGwbaDzgSA==", "license": "MIT", "peer": true }, "node_modules/@zag-js/angle-slider": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/angle-slider/-/angle-slider-1.41.2.tgz", - "integrity": "sha512-+7bZHAZx0MEbjTMr2tD+meFJ0EJwFfUEcTqmdLzFGr/ySAMCWlcadDBz+ZmrSn03aKLps8FxliVLzsFJNgUqIQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/angle-slider/-/angle-slider-1.45.0.tgz", + "integrity": "sha512-Fzk+teRpbnCg0TZQX92vDixeTNW7kSEgcqYDedjFFUWBYvmOwootH0pvI+bFts4m7CQWIJ1YJvoHT9v/CYuCkA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/rect-utils": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/rect-utils": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/aria-hidden": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/aria-hidden/-/aria-hidden-1.41.2.tgz", - "integrity": "sha512-qEcYmwlQr3qjA0T/IZ5a/o7fRUxfQ14tXjAFhR3GXCtxBKaqS+wnq/LN09Xw4bin3QWTINU+Z0oXFs9spWtNwA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/aria-hidden/-/aria-hidden-1.45.0.tgz", + "integrity": "sha512-IptHj2XJEoQffMqf+gReyHKnhkBKDBGQwZTClWiWLGizLPkQTYWLs1CFUa2BiDuIFk0HgeGS80tOjbdsgtt9yA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2" + "@zag-js/dom-query": "1.45.0" } }, "node_modules/@zag-js/async-list": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/async-list/-/async-list-1.41.2.tgz", - "integrity": "sha512-NZZEIGFdeDp2uHjsLVegLAGJOYGwI9HPJI1V2c/P1TQmfmrfWyWELAvnnW4kWYVUKYD9TxKQkm6LvqpHrQzgfQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/async-list/-/async-list-1.45.0.tgz", + "integrity": "sha512-2w/zRwCjYfW3JV75pNpHBuTdEq8SlNjZa51mfup9Cz9MBdrXFgDtYmPmSMM8T8aXqHoKkHSJUNHVQPso494slQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/core": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/core": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/auto-resize": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/auto-resize/-/auto-resize-1.41.2.tgz", - "integrity": "sha512-CYq+JQ1TTkEiK7OcNcMTS0f4wFvtmManvUltije5o50gDQ7vFYA81oQh4A9pAB1keUi9Zv06CNefFARaTcne5w==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/auto-resize/-/auto-resize-1.45.0.tgz", + "integrity": "sha512-6dqnaam5fdJwIyZE94/uutw7rNavH8/poBxU0m1Lc1NzbMnZLRsn3OJnHczhMRlUCpc7awjnZElrjEKex6rRog==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2" + "@zag-js/dom-query": "1.45.0" } }, "node_modules/@zag-js/avatar": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/avatar/-/avatar-1.41.2.tgz", - "integrity": "sha512-+4K0tRtIQysMGuERh5JRmn46uq7gJ6IjJd5DKj74VBtVVY8T6HGk0D0DZxmOIgADHP1qSvowLDoOX8kUyBHarQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/avatar/-/avatar-1.45.0.tgz", + "integrity": "sha512-x+nKOULArQgYk4mU2hmY9SsswPlF8N+lizi/Acia9sTki99xzGEmkEGIzqbdQjzxgyGEjvxmjMSET924QnKj+A==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/carousel": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/carousel/-/carousel-1.41.2.tgz", - "integrity": "sha512-H6sDxyWIzkvtHN4M/BYvFy7pi8j+kLEtfPZvgNl2+gRnfAHVK9/XqpoUsjw1DAo5Fh25pPuaTnh52Kml9OK0iA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/carousel/-/carousel-1.45.0.tgz", + "integrity": "sha512-PpJMJVm4zQ1THfp3ACt6FtE1YNGklFyj9vZ/kDCfBH4wQL490XdfBHCKTt7bk1UG666tmTNADqUGhuaT4tDdKg==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/scroll-snap": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/scroll-snap": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/cascade-select": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/cascade-select/-/cascade-select-1.41.2.tgz", - "integrity": "sha512-dBByZmIAJU/B+YIAzczng05lCJXEwEm4df6GmUZtioKHZdeN+WEKUP4qzFDFZdytXympGfJCIBvtgf87gACYVQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/cascade-select/-/cascade-select-1.45.0.tgz", + "integrity": "sha512-4tPwg694mjXUdrli+aX5qvZmlBr4KO8YdZC7A5/1sRs7exdmOGsHQKLlnTlmZJ4angKadiIDBY6BRWl0dtv4Tg==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/collection": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/rect-utils": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/collection": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/rect-utils": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/checkbox": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/checkbox/-/checkbox-1.41.2.tgz", - "integrity": "sha512-aQ5dZWHUHRIw4cbLtzrR+dc8M0N6wSiiCml/zbU3ciHOTBXSrs2rKnp/L99xhi97Lj2uCEhpIZ704Ou/MjGuCg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/checkbox/-/checkbox-1.45.0.tgz", + "integrity": "sha512-bv9fauSeuH+IyRcgS2TBjsHSn3p/56ek19uNuiVdxxJEm8KJWKW6+RCrpcFx7pzyTwK3W8D/eeNELPxUSKaVjw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/clipboard": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/clipboard/-/clipboard-1.41.2.tgz", - "integrity": "sha512-FM+PNGEeY+YpF1dVr9d8kg3DQM66LRnkR4Mva1oprqnrCXTYWj+k7uig893ubSG2xw1GO5b/WJd27kSmNoKnmw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/clipboard/-/clipboard-1.45.0.tgz", + "integrity": "sha512-iSD5CHfYcVQronJk1HPvormU4RKcZnq9RrvwGyBi5DaUuaY/++PjbrZSxfQXhuZAUUI4wcpePRqfyodukXpCgg==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/collapsible": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/collapsible/-/collapsible-1.41.2.tgz", - "integrity": "sha512-uMIp4rqd3iI6VFPMAOcbu9dh9WV4l85nNPYQiBtMKRHgbkfaZdfzF+E+NX3KquIeHW6JiBFUiIyCU0Sf2Cscdw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/collapsible/-/collapsible-1.45.0.tgz", + "integrity": "sha512-ptlYNdH5GC9752F4XRm9KIRoKhUBRnmiT22213KMcstS5c1xQ4V15yF+VzpPgWCjTWVezHY516TtMq4NJenOHg==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/collection": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/collection/-/collection-1.41.2.tgz", - "integrity": "sha512-ZZWuvfPZI8ccWd4aLpuU47k1jSc9eO+F3FM3iBJuvgegCH6g3+HDEwGN6wdePHnYfv7zyIKCGKr816zXcIWQbw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/collection/-/collection-1.45.0.tgz", + "integrity": "sha512-ikwXZPudIN5PpsD6+++hu+DcUfGviYax8jmNlAhDpocA+Fxpf334+4J6URNkPQYLHawAmhcCOO7MkHfYfXHEgw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/utils": "1.41.2" + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/color-picker": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/color-picker/-/color-picker-1.41.2.tgz", - "integrity": "sha512-UynyJ/bTBeSlq6ziHr9GVrFycDjVxfLFIb8Aivu/XvihrAAvkhXUxwy+1ax+hj7peGlTY590xoQAvQixV+McBA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/color-picker/-/color-picker-1.45.0.tgz", + "integrity": "sha512-aXrZQT+jeCU8/Orbmo6VWSBJGujRHkXbC0BKP7k9l3ynWsjn5brFaIJmcWGyMErXZTMDlg6/s5J7Xs3kZHNgCQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/color-utils": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/color-utils": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/color-utils": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/color-utils/-/color-utils-1.41.2.tgz", - "integrity": "sha512-Lsi5c2ztGZqud0oeDtAn3xFhgrYMaeaz1zi4p+mr0zXOuQNuZzfsrJ0stQ45s8L/xT8UJtGhYyEVy1+xjE4ARA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/color-utils/-/color-utils-1.45.0.tgz", + "integrity": "sha512-xfb/GLutoPvHFFkANvqx57VQREBMX7IF6tt6eGgYo7ZiOGpXOmt7YuMHiJ9EgCRxfv3EQP0E6c4riX2oL13ifA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/utils": "1.41.2" + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/combobox": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/combobox/-/combobox-1.41.2.tgz", - "integrity": "sha512-V9jQteyQHs8ZNQx/FcA98P1NVZas/yjiW1V7s4L+h8MnRS3AK97+FAHAT83KCiZ34/vkpLF6ZEHI2zkcQpNXcg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/combobox/-/combobox-1.45.0.tgz", + "integrity": "sha512-5WX0Gaf/0lBIMuK9t0oL6LQLBz0OMRKBPmntw3TpBD/l74qD7w7jPSBoftTBBjcHaD7Ylq2ZfD/BiV0G0FQ+Sw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/collection": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/live-region": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/collection": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/live-region": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/core": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/core/-/core-1.41.2.tgz", - "integrity": "sha512-xXTN3zKwOtMI4+5dG2cG+T1B4WR3X9alXiYaPJKaGd4N2eYRj9JEPte3Hv9gtFm+RM0b9VIwksHEg25rqE4apw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/core/-/core-1.45.0.tgz", + "integrity": "sha512-xDd+ezb1+jzGVf+85HgVuqBzCuX+x8/GH+FnPESsSU97Hzq6OYJbvd56YpN5gioqViuJkJUFkPBCYcq0Niw2LA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/dom-query": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/date-input": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/date-input/-/date-input-1.41.2.tgz", - "integrity": "sha512-J8PdpEpM9TBxZBEE8/Nxi39LNJOZY7lilTbgcDABR5uiviZUk5++5GSdUTspcjFUIXx5SvqmdCk2RF7hsUEHVQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/date-input/-/date-input-1.45.0.tgz", + "integrity": "sha512-RV9qAwvJcOgHrmdlpWb4B0ikzdKsDcQpOgzZr9ExQGnnKG6DpJlpZrL8gmZbJaq5qssbu+KAh8sqIZo1TLrMQQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/date-utils": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/live-region": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/date-utils": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/live-region": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" }, "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "node_modules/@zag-js/date-picker": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/date-picker/-/date-picker-1.41.2.tgz", - "integrity": "sha512-j9LaznCV4QCfrq/y/mNAN9XgIRFFg+414TxGT4TK8mfWouIaFvxEoKdGP0l/LL4DFv1NRDaRdSBBcw3eXtMVnA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/date-picker/-/date-picker-1.45.0.tgz", + "integrity": "sha512-nK0PN/cI+1j8p6WIH3Y7QPBWfqLuiJxa0oyXGwl6UM8O9DA86JBcTSyCNNGNG72jdH80KdC0K60XuEQjn2w4uA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/date-utils": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/live-region": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/date-utils": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/live-region": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" }, "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "node_modules/@zag-js/date-utils": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/date-utils/-/date-utils-1.41.2.tgz", - "integrity": "sha512-jdcWLa5fYLTsvGWJkx4v/9Hzqf6UHdvJDeP6NxHpwoEmzYy7+AghYKBNSnRrJIBCQJgl1vM9OkpMvYrLNHr9jw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/date-utils/-/date-utils-1.45.0.tgz", + "integrity": "sha512-5Qx31rkwtYsSuiYSBw8XYSJKlA0PU8G8VLo5rMI/2I3ORYipe9E0Wx0BZEO6rG7qBKzK4EVXA16TbILeWgrxvA==", "license": "MIT", "peer": true, "peerDependencies": { @@ -8136,446 +8641,454 @@ } }, "node_modules/@zag-js/dialog": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/dialog/-/dialog-1.41.2.tgz", - "integrity": "sha512-t1N72snpFGiKj7cg2PivPdsy+X1YdgXPv7bzovpqjMLy0kN+gYTPoV1Iy/hQA+g021dz9XGgXzkDuU45sJqsFA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/dialog/-/dialog-1.45.0.tgz", + "integrity": "sha512-mnh7rUoR3OGiD92qqHRdi3zS6vyl1JHbRcJDmqnWbFo8gi6DtgyYivFhv/zQWx8rKXeRM4NB5CkdvFRg0hMM5w==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/aria-hidden": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-trap": "1.41.2", - "@zag-js/remove-scroll": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/aria-hidden": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-trap": "1.45.0", + "@zag-js/remove-scroll": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/dismissable": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/dismissable/-/dismissable-1.41.2.tgz", - "integrity": "sha512-hO/tFhRZ7S+LOOljGOQJIubbc3MXg41+iWR1yUXKl76cAenbxaCit1LZmUCwQPvRN0GndK6bDQo5ETjHZz/k7A==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/dismissable/-/dismissable-1.45.0.tgz", + "integrity": "sha512-GblGg5CXomPu8t+aE+vvXHG/Mdl1LAcE83NwJqVnDtOxFcXUrkizq2dCtiIUQOkk0GfKnh14AZN3wf5QXqxblA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2", - "@zag-js/interact-outside": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/dom-query": "1.45.0", + "@zag-js/interact-outside": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/dom-query": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-1.41.2.tgz", - "integrity": "sha512-+eBk1nlJA312mNmY/GSThLRwcCRqMIL+A1pLsWvTlQLQjmH1/UxoAuv6l2yvRCT33XmC8FBlBIKnXhOCpDvIZA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-1.45.0.tgz", + "integrity": "sha512-rJIESTiyzS6sfplDZxlO5WO0fTeHwL8RFylPDetpAtxhbADIV3kcP6qAd7pEMyXM5rdh7qTXOFm0PJOU2selyA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/types": "1.41.2" + "@zag-js/types": "1.45.0" } }, "node_modules/@zag-js/drawer": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/drawer/-/drawer-1.41.2.tgz", - "integrity": "sha512-aJql6L0cfHd1wXbemfLcNnjqTA/CbwVgQdWEVn5Qci6zhy4UJXPQeBBfxfgPgEOAbW60gL/gaaXG3d9Vx6+6oA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/drawer/-/drawer-1.45.0.tgz", + "integrity": "sha512-XPJXyMkNWLsvnyj4Ym5p03Wtwhusz7iqt309J0C+VeiR4byvMkj/EnsgxqdPcgBNwhnb1YRYmmsr7J1gkWsLgQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/aria-hidden": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-trap": "1.41.2", - "@zag-js/remove-scroll": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/aria-hidden": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-trap": "1.45.0", + "@zag-js/remove-scroll": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/editable": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/editable/-/editable-1.41.2.tgz", - "integrity": "sha512-loTM1lrHBBqYfR8SJZrYayVdWHMpXCLVir+aDTQ8/d4bb/Gfl/L8CJNs3BRj3yt9zvLoWTLO+4LOY3hLyQSR2w==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/editable/-/editable-1.45.0.tgz", + "integrity": "sha512-IPbohcD+ZUEypJZ7oFkOSSkdUXYzWZ68K5J9FzjnhBUZ8enECWP9+ucyp4cXBhHB3RbQK1iJ2p9sMcvNnjCGzA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/interact-outside": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/interact-outside": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/file-upload": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/file-upload/-/file-upload-1.41.2.tgz", - "integrity": "sha512-WFwIaKvHpCUjyYMvp42VoydT1WIP5DhDlpmG/nrF4i0ro7pLGb1A4dvyBrAfGcozCB88yR1y1iZKPDY1I9/uUw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/file-upload/-/file-upload-1.45.0.tgz", + "integrity": "sha512-Nm1pr3YFzCxI4wmLtm64Dz5n/Bxl6J6FI1GwHrmSZB9Xt/CvzF3xVY3eb4uhkqT5hQaydO/8VWD8gD5jbJ2oxA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/file-utils": "1.41.2", - "@zag-js/i18n-utils": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/file-utils": "1.45.0", + "@zag-js/i18n-utils": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/file-utils": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/file-utils/-/file-utils-1.41.2.tgz", - "integrity": "sha512-Ih+8ULbId0M+CFR4IsqG5y/0VLCk2l+1rgPH+21L40dlSB6z6qKSP2tG7W69Cj2/3vryZsn67ibn26iCPG/vOw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/file-utils/-/file-utils-1.45.0.tgz", + "integrity": "sha512-6GbM07Z1wWEVkDWNs6+cMbUe2nIXYS2ny2ZezzB/2vEOtWrbUzHugrDWg4NGnlhGOI1mvsmyTwngkgoqv7PLGA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/i18n-utils": "1.41.2" + "@zag-js/i18n-utils": "1.45.0" } }, "node_modules/@zag-js/floating-panel": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/floating-panel/-/floating-panel-1.41.2.tgz", - "integrity": "sha512-nJP3oZ4YrJh+7H5YdwNccSzPGXFqjQN1ujZ/xGDhegjz4XtL48QMFnAasxlRI8VGjse9Tj8VXlQZxXPrASGzlA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/floating-panel/-/floating-panel-1.45.0.tgz", + "integrity": "sha512-CbqdpVzGtRrm2tSkf4PVXQXsfjWMXSh6xwe+MzIekqmz+lMVYFJ6TRS5TufEHEhTP5+JvCooLMlYeyDhXFEaWg==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/rect-utils": "1.41.2", - "@zag-js/store": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/rect-utils": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/focus-trap": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/focus-trap/-/focus-trap-1.41.2.tgz", - "integrity": "sha512-3QTtGUjFU2OLbyrDlyoYWvKZecCmtn/+bsfsHW159jJHiEGHVYK6CY8AI1ePsMk9gVay48bXh008j+lVli7gAw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/focus-trap/-/focus-trap-1.45.0.tgz", + "integrity": "sha512-9luXZfY8oBTU+7WzCKm1rJQu3V7xdUqscwBeAWyUb/kfKmZkg7V0Ve1iJtpLwovwETYIrpckUrD4m31lna63PA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2" + "@zag-js/dom-query": "1.45.0" } }, "node_modules/@zag-js/focus-visible": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-1.41.2.tgz", - "integrity": "sha512-oRjwtgafUdGVwLJUN6mKsnBQbez/CHYAPkPg1FxOnr5GFpEpr8oMTOZJ3wdPM2U1ynS9QnUUu/sXc3KQv/jX0Q==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-1.45.0.tgz", + "integrity": "sha512-PZXaKw56bCP+BuAbm99LdUKtUUhC0+RfwMXlK8ZTyX30LI8nCt2VGdVPYYCadZWqL0klbgLoOwtTujpArnV/5A==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2" + "@zag-js/dom-query": "1.45.0" } }, "node_modules/@zag-js/highlight-word": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/highlight-word/-/highlight-word-1.41.2.tgz", - "integrity": "sha512-95zcZKqNrL7JlqAckfzHa+LRbnfoz1lj6skUhq/uHSnni1vH6+8fNWT8ruo9G7vpGopbyRmmcie5p41SbAwQjQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/highlight-word/-/highlight-word-1.45.0.tgz", + "integrity": "sha512-0Eua8aJB7tFqnQHICyRHlJUhkm4MqgavAwDU5oN26Gx+FiwUaDt3jMRaUd5wcwItyObAxafCoyKJ7UVWt/qvfQ==", "license": "MIT", "peer": true }, + "node_modules/@zag-js/hotkeys": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/hotkeys/-/hotkeys-1.45.0.tgz", + "integrity": "sha512-WUiAq1BYudm1/dDf/htDe+EHXzetLFKNhTHXk/fmmB7mg++3r9kKS9y7o73T6Xun38ssMYr7cFshnY/6XY0K3g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@zag-js/dom-query": "1.45.0" + } + }, "node_modules/@zag-js/hover-card": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/hover-card/-/hover-card-1.41.2.tgz", - "integrity": "sha512-Xn9RVzgTkKaVzyJTDdBJiXmCleNi1/hmW8z73tC0vOiQvSSvPejg/JkzqTOLFODvQHK3NOw54QHZvmjYp9Mubw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/hover-card/-/hover-card-1.45.0.tgz", + "integrity": "sha512-h3+RIGemCtDij501/lZte+cH9RkZRE3NyvMWEt8t9pJv03VNowPdMgXKc4GthRtugXkjeveyZI5/i668UKZGGA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/i18n-utils": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/i18n-utils/-/i18n-utils-1.41.2.tgz", - "integrity": "sha512-f1xqaEY79awBxgUyjFso0UEpIoEHZq+zRvB0nUVFHJRW7Ds/QhaFHKSRnf2QBTlP/ObvCT225R+piNAAc17Aaw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/i18n-utils/-/i18n-utils-1.45.0.tgz", + "integrity": "sha512-Qhp/l9zmTY16FIsqE6jDkimN8n8TJxQEHWb0P6HbTnnHfWNJJ/gdixMrgM/BAwzKA64/hAN7p8d5A46mQ9o3Qw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2" + "@zag-js/dom-query": "1.45.0" } }, "node_modules/@zag-js/image-cropper": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/image-cropper/-/image-cropper-1.41.2.tgz", - "integrity": "sha512-750aT4U+J/TJw/Z1QVoLU9JG0luCtf9CyvShtJFIxeS+i25aUoBI9pOKgSFABsOutIqNJTPq4gYpqtuxFjSxRw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/image-cropper/-/image-cropper-1.45.0.tgz", + "integrity": "sha512-FxqVTVbdlJdEMP4+1BrpGrw7Ol1rU7Ut94F2b/1H96dK31Qj+nxBdbp4WseE16Q6uWz07Ex8pRwFa/oP1Lc++A==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/interact-outside": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/interact-outside/-/interact-outside-1.41.2.tgz", - "integrity": "sha512-dM4Fn9iyqQeqkCMRYZP+bAgWEPKRVQRqMmcPsN0OXBhhFKC31Em15LTIZXaOtVKAjH+iwx+UvSYFRiWwEjkOEA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/interact-outside/-/interact-outside-1.45.0.tgz", + "integrity": "sha512-QKV/Vluw5jB2nz0/a2GvsiNINaOb11im4FTPogLtb9IRM1NmHQpDjAEpz5V6NE+awpqwI6Gnxg9eNUd/V79pFw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/dom-query": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/json-tree-utils": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/json-tree-utils/-/json-tree-utils-1.41.2.tgz", - "integrity": "sha512-gNaOzsbCwmTd2HM3/u0xQdWX5UDBfl8tCXFavzbamkFH0iYQOXJb7cqUXBVuI4KScIbHPCKwrzZjqA5Sg9qzAQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/json-tree-utils/-/json-tree-utils-1.45.0.tgz", + "integrity": "sha512-hZohkZwK80/BGFBSH8w4PjWsJG/2hiYv5afwO70LyUe3VJcccp/6Tp3Z4urcQ9ygMh8QsBtxO4XEDyIzhKCd/A==", "license": "MIT", "peer": true }, "node_modules/@zag-js/listbox": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/listbox/-/listbox-1.41.2.tgz", - "integrity": "sha512-iDGrZleP3ui2Q6Jgmr9RYlbd7njdJHs8Qb3IJrSIZBIeYyYmFvVUfAFjk0g/z/amjTx6uYxRASWSPy/RETd4ug==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/listbox/-/listbox-1.45.0.tgz", + "integrity": "sha512-8fmcgwREaphWzo14sbkDXFQQJUpqJ5oqgZQQFMdJKDSXwKoQ/V4WnMHmCfvvq8m4iFcP+l3EgvvD9MXqDQOM0g==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/collection": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/collection": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/live-region": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/live-region/-/live-region-1.41.2.tgz", - "integrity": "sha512-7ubIW5AQt1wx9S/gFN+rU4TyvuFWJrL/DhnDWPNlH5g3luDVHSNeYGeeqf4d4tkcibtpYZa0pg9CbXxRxrfwVA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/live-region/-/live-region-1.45.0.tgz", + "integrity": "sha512-Tb1nYcQDcChC8l/JPwEPt1yC+EXsbr0X7zzHuyK0vn4hoxjPH1qjPJI432wyEB07lj3tA01nvMNf8DNRXgU9CA==", "license": "MIT", "peer": true }, "node_modules/@zag-js/marquee": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/marquee/-/marquee-1.41.2.tgz", - "integrity": "sha512-cT77aMhrtAK3oe2O6+X3TLtQs8wupdPUtZgHMWVxCcQOwagrk7RUBEQwU3Cx7cTswpBdTKSuDYgUggfgCs96wg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/marquee/-/marquee-1.45.0.tgz", + "integrity": "sha512-ulh0Nr3HN8I8TVgmW4aM4N019S9to15mVczaw5e4cJzjwBHg0oLYoZcUqIpcHdGndlM3CHRGsOFi8dr1sN2dLA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/menu": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/menu/-/menu-1.41.2.tgz", - "integrity": "sha512-wwix8hcAUSi0scpWXCiDppfdZV01Za8nN0gqLt9GdhCiVSlr0rs9pK1ROgPKJTyc43UZfyFPqtTWVHvEHMM70w==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/menu/-/menu-1.45.0.tgz", + "integrity": "sha512-gV7yGEAlaGuseaTcQO6LCDrMjr7PxfORqTUcBBl5solOnWKWaalfuEPGzPaEEPfPuOJY4QkdFEpovz3g9+hUPQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/rect-utils": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/rect-utils": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/navigation-menu": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/navigation-menu/-/navigation-menu-1.41.2.tgz", - "integrity": "sha512-aROB9CHzskZpnoFuGFkp7dbkZdsXvp2nxQgsgld02I1sDqiwcQd+YMdB0/6Ik0oz6X8I70RKdUuQM9WQFQfDnA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/navigation-menu/-/navigation-menu-1.45.0.tgz", + "integrity": "sha512-m0M5GxVxsvptQyDgDPPWNqbU3K22wDqAKjIdOWtQN6eOCK5YF0bHJ8IKF0LxSvDgzX/UuXXuwoeQCnZn4XvW1A==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/number-input": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/number-input/-/number-input-1.41.2.tgz", - "integrity": "sha512-QoQWCiVHO+ciUbq8uL8Kxhtk4o3UpwzYpJkfsOfitzsZoYpPc7V/A6+n5yABV2SOwpqBODwNASZdxiEa60kfow==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/number-input/-/number-input-1.45.0.tgz", + "integrity": "sha512-INZz+oyIWGbiOq2eCcggC9T8ajALD6hBR46xJ+13PGezG4sF7UTNQan9MitNx/033p/zkecxyfAn5/11UWAkew==", "license": "MIT", "peer": true, "dependencies": { - "@internationalized/number": "3.6.6", - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@internationalized/number": "3.6.7", + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/pagination": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/pagination/-/pagination-1.41.2.tgz", - "integrity": "sha512-vZTxz4DrIDfedMcTjDeEkOc1iXD9wkP8eKuEcDieHOodnjSnNNwtmoFw5DCWv+yEa/TByIamXBZ8ZxHY144JgA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/pagination/-/pagination-1.45.0.tgz", + "integrity": "sha512-vywjvhBT8UdbbWtCy1JnIXH51YJPoRA2eQy4VSxFY/beV0KNJEcamtTvMnGW1f4qJ3nvVXqMAo31ob92TO/YKw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/password-input": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/password-input/-/password-input-1.41.2.tgz", - "integrity": "sha512-OWKFl0S12Qnlf4R4WbMCJ/YU0kGfezm5tP0UiyubMO/Fixv6H0twDFaJSPg2F6POv5uomCcGubc1H7gO+fIhsQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/password-input/-/password-input-1.45.0.tgz", + "integrity": "sha512-LL0NkvYx+dg1WAmNWcdLwHi7gMYWlnEx9JZpDvWgzqtCDdkVy0Fq7cbllPcok7NC2HbIvegdG4Jw+NbKpobovA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/pin-input": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/pin-input/-/pin-input-1.41.2.tgz", - "integrity": "sha512-Wrn3YDbmWL3qvUIzN4QyLO7PzEhunX7z8DwBpmrK04p7HxR9pniTLVIPk27xk2MzyAPYcl4mwd9/Mc88tBxHsg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/pin-input/-/pin-input-1.45.0.tgz", + "integrity": "sha512-fJy+y6oFX8MHkNLYncmhbb2ycPibN0cQ5qH4qTJKnXxFY0iNQYDIdTW0l9l0jrXd2h7e9TLZlOQWrfeBIPISIw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/popover": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/popover/-/popover-1.41.2.tgz", - "integrity": "sha512-h/LlVMIERM+NWzYV0ZHURlJuaqkT8XxwyEV96XfVzjknDRFNoPSl5IttVYtoaPoUqC0p/Y4oTSiee4mUZKOLHw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/popover/-/popover-1.45.0.tgz", + "integrity": "sha512-qFVNYs1Gt5mUqEYqE8IWlvu5aDMttE0H35g3SnfzmB0uchMR40JcKmNRGJMsMc/bnX7ahS/Gv1Xhc82ikumE2Q==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/aria-hidden": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-trap": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/remove-scroll": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/aria-hidden": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-trap": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/remove-scroll": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/popper": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/popper/-/popper-1.41.2.tgz", - "integrity": "sha512-Iz4D5YAIiIPn4IHGjhX3QatR/RyGaDt43lBSZv0RYcPQYtFg9sUuek3wizjW9qXgdvItevvNMqRdpl7f3es09g==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/popper/-/popper-1.45.0.tgz", + "integrity": "sha512-oFEbo8nHW0tI36LrnqpAl+pNPozc2aWN1gRHy5YQpZQyBT2De46/9p2cN/ZACsVP/y/P7v9nMsV1tB95iECRvw==", "license": "MIT", "peer": true, "dependencies": { "@floating-ui/dom": "^1.7.6", - "@zag-js/dom-query": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/dom-query": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/presence": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/presence/-/presence-1.41.2.tgz", - "integrity": "sha512-OhOLPAf/DYPmgoEntrlrf3LOrkwA+Y0J3K03NXHXPnkRB7h8jyIbHqzHS0jRTb1pvsO2P/yowRyoYtptY2Zmog==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/presence/-/presence-1.45.0.tgz", + "integrity": "sha512-GCO6HePUNOTpMfukHmmltKyY8zfLvkiX3oZICiZ8iPu50sEovjKP3noqJCDMvKsgANiQ/uK5djY99B6A7l1IhQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2" + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0" } }, "node_modules/@zag-js/progress": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/progress/-/progress-1.41.2.tgz", - "integrity": "sha512-SnzrqN+Z568NoO4rrgjrIc/S4EXMEne5CDgWwt2kQ8yq9VysdH8TtHAjyciFRIio7cdgEZNHKw9jSccpMWgRwA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/progress/-/progress-1.45.0.tgz", + "integrity": "sha512-oKDoptRRNClXQAtHrzwt2xLDqZ0K7f13PXotC4nVmDp5dpcdfl8bO4y/iGQs9879Hqrzl/tpLjOPeOyMqlgo1g==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/qr-code": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/qr-code/-/qr-code-1.41.2.tgz", - "integrity": "sha512-+JLswCNnzf58aQTaX0SMUA9wRC8Hb/a/ZveJIXTz6853Siemay2HqOqB2WQIeF33HNldUFD/a4+4Q8ugg93ubA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/qr-code/-/qr-code-1.45.0.tgz", + "integrity": "sha512-nqSxPdSfhIzF4/zSXgNplyseHFnGJLtmghc9wsJaJusTioMkksI0nt3QmuzRBPWb3rSmK1Xa22vK6z+1T7D22A==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2", + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0", "proxy-memoize": "3.0.1", "uqr": "0.1.3" } }, "node_modules/@zag-js/radio-group": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/radio-group/-/radio-group-1.41.2.tgz", - "integrity": "sha512-EZjos61jKHZlNw8ez80vG2T9gUwpooxcVpYOKS2hyhuEXn3wEoefS5v1WFbmpoA/8TUpUQnYxisAeNuQfEQCuQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/radio-group/-/radio-group-1.45.0.tgz", + "integrity": "sha512-9K5SJ0wXk9NDItqBSUXZKKOzrkZ16LHrY8AtTsYRVQFKUA+d/O2hP6LVSZL5rZgb247QKdbTzlcXzVpdNnhMSg==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/rating-group": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/rating-group/-/rating-group-1.41.2.tgz", - "integrity": "sha512-SbJP4HiK5XRy/oC3xRowjZOCThq1n/QA2Z/XAkvKLJArVQCYjrH3MoWwWvMVNfNC5+ZJluborR2AGF7tlVLzxA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/rating-group/-/rating-group-1.45.0.tgz", + "integrity": "sha512-aOh0BvNBX5mL3bz8YbZTYv/plR/7AD+80wJWA0Yw1aOGHhV2fIcomDExCEz/d0z/uNZdSh2mAKQPltoFLUeVUw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/react": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/react/-/react-1.41.2.tgz", - "integrity": "sha512-5Bx7mQAron4LFWI8Hhs/uw5kwQ19s2Tn30HhctozLqmCu4nnJSTSh7GRvX+uwRZnztGXBXoOrgBWIepU4RXFGg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/react/-/react-1.45.0.tgz", + "integrity": "sha512-PgltLBL8tS6+RvQPXr6+UmCmBQDF/D2VQobUhjlnm36JkXPz8e5E/Mj8ah40ORlSEOFjWx92Tp2LE4wIyDoGgg==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/core": "1.41.2", - "@zag-js/store": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/core": "1.45.0", + "@zag-js/store": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" }, "peerDependencies": { "react": ">=18.0.0", @@ -8583,125 +9096,125 @@ } }, "node_modules/@zag-js/rect-utils": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/rect-utils/-/rect-utils-1.41.2.tgz", - "integrity": "sha512-GWBTamaMLMG1p7Fe6V0dsXeTEmk+tqG3ciovzmjxURCJ3Yq2EkAMRhS0v5DG0oo+PyrPEIzEWukGBQkh/XRgYQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/rect-utils/-/rect-utils-1.45.0.tgz", + "integrity": "sha512-hL1CGFArK4261i9ac/vMjHG5okLdnWCbD3OuN0zUeYwhM1EKajE8qrCPURCcNLdhZEHeQoUQNO4nPH+BrdoQzw==", "license": "MIT", "peer": true }, "node_modules/@zag-js/remove-scroll": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/remove-scroll/-/remove-scroll-1.41.2.tgz", - "integrity": "sha512-ieIrOgPKlCikAGEBIboQJoU7oxrL5BEY670tDOu7Eg7rNOdAwGXLEKPX2A/q+lREhOiVYjx0D3//vHTvdte80Q==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/remove-scroll/-/remove-scroll-1.45.0.tgz", + "integrity": "sha512-ZT8K54tnyLPrO0s2gUQyNvxHV5uwSaYMB5qs3qDXTUQnd7ONQyYFiJRiom4aHnbg33dFt5lwLJIxSpuL4cO0HA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2" + "@zag-js/dom-query": "1.45.0" } }, "node_modules/@zag-js/scroll-area": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/scroll-area/-/scroll-area-1.41.2.tgz", - "integrity": "sha512-hJFAwfIFuS7XmNsS3nB5rPm9OWXfB4d98sID7fjurcaZtDH5LqFriqfXhceNvs7rz7K4f/u8rufXrb6tcvATIA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/scroll-area/-/scroll-area-1.45.0.tgz", + "integrity": "sha512-5hAei2Hbfhxae8Iv0NLKdeFe56+ZDpdwvRTxbFfqs828zsm0rKP8XciH+v+7sJHKDlRBXdnS0EtF7JudeLa5dg==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/scroll-snap": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/scroll-snap/-/scroll-snap-1.41.2.tgz", - "integrity": "sha512-+70Al6LSASyEZtFyyffUJlDbE88KgYJDud05z8oZTqyEOLlTqnlSNkXq/P3siO7r3sNykg9H+TmAKn+/dVSKuw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/scroll-snap/-/scroll-snap-1.45.0.tgz", + "integrity": "sha512-qNTehDaZ6B6uYAchR49xwJ184ISCt4it7OTwC1XpveXNnS4ZBuGlMKAIfnq2il2rsI0BgH5NhVDbd+qzd3EKxA==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/dom-query": "1.41.2" + "@zag-js/dom-query": "1.45.0" } }, "node_modules/@zag-js/select": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/select/-/select-1.41.2.tgz", - "integrity": "sha512-3wGaKABILexoNBJ1bJiHqLLTctR/VMZaNA4cyKiqZeBEWtAkdMhgyY2xKobrP6KtUTqAeUFNVSTu4yCDrAQnUw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/select/-/select-1.45.0.tgz", + "integrity": "sha512-bylJNDctCKnJCyQxDKBEukscx+lfIcCTm/cRgKEDd9SLyqSp0WgnLmthjefd+4YDlWKLW7MFNdteUMbwAilKAQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/collection": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/collection": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/signature-pad": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/signature-pad/-/signature-pad-1.41.2.tgz", - "integrity": "sha512-iNrOxY4gtqhsZdXYvlhF7s+LiOvwV7/kBpNnq8tJ1oYhgTs8wvKtJHrP86/CR05irEXQTaLfmeAJZuBEys9iRA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/signature-pad/-/signature-pad-1.45.0.tgz", + "integrity": "sha512-oSm80ZLPynxqfKPsLNo5ETOK+FpHsHUwAPto2wkX44JstWLxTCwX/QzYS0zAl1IhvZD7Ao1kZsbvMaywvuL+Tw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2", + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0", "perfect-freehand": "^1.2.3" } }, "node_modules/@zag-js/slider": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/slider/-/slider-1.41.2.tgz", - "integrity": "sha512-mKK2BwoDbIGxAdkdKkPZJA1SHtEQt3lS9hJ6WghefYU2vyd0BXoIKvcDV3xJOzly5LXYhH5cJITn6JtGK8353A==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/slider/-/slider-1.45.0.tgz", + "integrity": "sha512-H7ib9qE5Z1dKoMkdCUcUSJyt4jSonEFHIcidAM4w0NaQ5k5uIeSK0fh6VZVw7ODUc55p787yWNJ7IBrZH/x7VQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/splitter": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/splitter/-/splitter-1.41.2.tgz", - "integrity": "sha512-Ubp4hkmzvVysU31jCINYbBXVqruu7rEPGqugWMzeXC5Hwda648aHpbg4Jix/wRtaGLjsyh6KOVEwAmoJU9NwhQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/splitter/-/splitter-1.45.0.tgz", + "integrity": "sha512-2xbSxSR2OUsxrcZxlaLXRBzeXF0EJ+c3EKVbNbZfTTABJlwnDdl1Sh3Ym1jk7AlJrwiXIZX1fyyEb8mZcwlgfg==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/steps": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/steps/-/steps-1.41.2.tgz", - "integrity": "sha512-m0t2r8+FWwa2b2aU5JiNrHVdYHyNZYHK0G3Tq9lCOSQoDeoJIkyta+sIVehLVSY+0Ba9kOlkRUmYLbsnfXaW+Q==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/steps/-/steps-1.45.0.tgz", + "integrity": "sha512-dkpwvrjzc7p29JxDMALWmTSZpfsBEsKd/nPgczDvBdXwWOrKjHuek6S27gmeMFXfHO1gLF+bPXbyAKyNAblNNw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/store": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/store/-/store-1.41.2.tgz", - "integrity": "sha512-dVZF7E1ezXzynrKhMH3rfSr2rBbCfvTjvXbXz7//1PNULuq58UU5dG93V+9l834npCZxI2+PrpY45wZLJPTsIA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/store/-/store-1.45.0.tgz", + "integrity": "sha512-zA5zfOXZsDEZxK7gzGF0dldZn3imxaxY8r7g+Zcs/Am0x5VAmVJx2uJHs1Vwx9agZ0XHtnqBVrjV+UhUzST5rg==", "license": "MIT", "peer": true, "dependencies": { @@ -8709,161 +9222,175 @@ } }, "node_modules/@zag-js/switch": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/switch/-/switch-1.41.2.tgz", - "integrity": "sha512-qHbQK95UUHN0tj+bf9LLphLcMo/uTg2Pvs0c1Gs03Zh4g3NtHf0uYIhMZKYlCH0hNVlKrmdzLKWgeoDxv9gySw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/switch/-/switch-1.45.0.tgz", + "integrity": "sha512-Ck6q8Lc0RVqXJsIWLU+CVw2cMNcrEGH6TWxxqnWcJ7Z58m7OHYwz3Uh9juDj3Pr+0xLtNod97Be5mcGRjgTNgw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/tabs": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/tabs/-/tabs-1.41.2.tgz", - "integrity": "sha512-7YVj2mCcxRbn1wMXP9anaTOVf+J0fa5uaPScr8e4+e2xc+/1WKzqN6V8IDeKS5wV/xzi1r3Ny307sX7Xz4ZJVQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/tabs/-/tabs-1.45.0.tgz", + "integrity": "sha512-MT0aPoaQpWjOq4RwVrSdHSHuGbyetdlNbNhoyo6at84kHqSLvIjm6u81+02Nvdc8Yd/M1i3er3vQNwH+wWIV/A==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/tags-input": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/tags-input/-/tags-input-1.41.2.tgz", - "integrity": "sha512-aIPEndSO+9LHxyoXLUr0Uttxw2cYMyDuii5w50wn/N7lFJD49U3Sj+6XaB/oJSbDAwn10WrsRDtb7Gs2kmU+Qw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/tags-input/-/tags-input-1.45.0.tgz", + "integrity": "sha512-B5SCCaHNpBbT5U0jDCzKQuL3egYy7R1hBZsc8yZ+xA2xnKnDFrJxkdnJklt7lcJJ2+KmtkI0q0c8vmrv3KmUnQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/auto-resize": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/interact-outside": "1.41.2", - "@zag-js/live-region": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/auto-resize": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/interact-outside": "1.45.0", + "@zag-js/live-region": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/timer": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/timer/-/timer-1.41.2.tgz", - "integrity": "sha512-PRYLWaip0+1FeVGEMNk5wMGAAIYgBIWwulZ4U5I+2Ayjohzp2NUAfwJ3sqoYvRrfjNYUNAPdU4eGu1zetC+oVQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/timer/-/timer-1.45.0.tgz", + "integrity": "sha512-QWQF+vTKCV7WYu8fjJjHlM8ozGlnHkQJHqGtELy8LfCAw3QNxqrtldeFG1shu8Ak/jjuDHrWOyJE3zieuszzlQ==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/toast": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/toast/-/toast-1.41.2.tgz", - "integrity": "sha512-+F3PsAo6EIz4rh73IOMCb/+FOUp7e3VjUY2q5sdU4IbfOzJBIbVSJxn0PQmHkuxkzWdCom0Lv0qSPFg/UTplnQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/toast/-/toast-1.45.0.tgz", + "integrity": "sha512-wMIVGbseGJrRpfE2/qHMdEkRzpE+zsMGN0O6H90bSInTiA5n6lXONRpXsOuGlQhgDvHn/X5mD4g7z46X1vco9w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" + } + }, + "node_modules/@zag-js/toc": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/toc/-/toc-1.45.0.tgz", + "integrity": "sha512-/a6y0wBEphWmmHTQqXfpOcnGaVIYJqkaQgHlQLfO/MDqCDP1KJcgII+PhgLFZMVhK8OZ9d6CEUFre6Xx4N9ULw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/toggle": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/toggle/-/toggle-1.41.2.tgz", - "integrity": "sha512-EFB9pb3pEtwXt7RSivVLWXV64dKUF8gsn75tt8TbYBgfy+zW85MsRLu8U48TXZN5teQWAKKNujr9bxQsW/CWvQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/toggle/-/toggle-1.45.0.tgz", + "integrity": "sha512-bWp0qyR89OB+uweHSaomWKgg2kCgVsbHTaN8GY/JxNHlp34GSor05L4kC0z4JtL6JhOY8O6tTlMbz994YB/unw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/toggle-group": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/toggle-group/-/toggle-group-1.41.2.tgz", - "integrity": "sha512-C6wn3A89h24hTs0BN9ryEuKatfR493u7QqxS06TeK9oI/KZBvm5Rwm8FPHSUJvsUTkAkow4PsXC0Ra19duzEdQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/toggle-group/-/toggle-group-1.45.0.tgz", + "integrity": "sha512-SHGu0aYb12bg1BvpZrzB4h2GM0kaIGilEfgqKJ8d+2DuNsmBnf7D/fb7ALJFU4EUh11NM8QA3ZpQLfTZZJFw/A==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/tooltip": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/tooltip/-/tooltip-1.41.2.tgz", - "integrity": "sha512-68okWJCFXfW8r0h97kEcU2yKPkq6e0S6QkiYh09ifMXoYjrQw/shPol8PgrS1poqKJigUWtsKm+bw73abhMn3w==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/tooltip/-/tooltip-1.45.0.tgz", + "integrity": "sha512-7t60A2y1trAvdabsyhfTpCcynp4sspCKxvreiPqRF5ukm4VP5yJy3IrdjghHQ8GcDiC/blnmLgVF2pTi1Mz63Q==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-visible": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-visible": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/tour": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/tour/-/tour-1.41.2.tgz", - "integrity": "sha512-Q7UsvuHYYBo1Cs4b4OS0e/D8lxd2GpSRII93s5BQPi5HTcBjaWhVysAykmCFbat6Z56z0NBmFHNdhZ8oVPls1A==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/tour/-/tour-1.45.0.tgz", + "integrity": "sha512-2xFj/eLpCu29CLosF11w9jnIT1LFLhlmLyJhEtNtLRbJHEjeX7qzXP2XRKNv6GFsda3Wz31yQ/jUgtR9qAzmHw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dismissable": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/focus-trap": "1.41.2", - "@zag-js/interact-outside": "1.41.2", - "@zag-js/popper": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dismissable": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/focus-trap": "1.45.0", + "@zag-js/interact-outside": "1.45.0", + "@zag-js/popper": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/tree-view": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/tree-view/-/tree-view-1.41.2.tgz", - "integrity": "sha512-QNi0VpV+RyzF4NP72+kSleUpauF9SMAzOAe59nxvs8jAUHqV5diDCInnbQos4+cyFDXFzGq3lElot26A1yI+7Q==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/tree-view/-/tree-view-1.45.0.tgz", + "integrity": "sha512-oTcMrTMUjjVqP6nYmK/xWpwZzt77yHyiGUXDhMFNE8kWnfgo5DlixgxQawsRdzML6YCmQcQHD0DjdGbn4TtIpw==", "license": "MIT", "peer": true, "dependencies": { - "@zag-js/anatomy": "1.41.2", - "@zag-js/collection": "1.41.2", - "@zag-js/core": "1.41.2", - "@zag-js/dom-query": "1.41.2", - "@zag-js/types": "1.41.2", - "@zag-js/utils": "1.41.2" + "@zag-js/anatomy": "1.45.0", + "@zag-js/collection": "1.45.0", + "@zag-js/core": "1.45.0", + "@zag-js/dom-query": "1.45.0", + "@zag-js/types": "1.45.0", + "@zag-js/utils": "1.45.0" } }, "node_modules/@zag-js/types": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/types/-/types-1.41.2.tgz", - "integrity": "sha512-L6CNvK06lIVpy0X8eG3kbDIx8Uuv+3KHElxXYSzRXSJ7/OLCv1sTRgEvnxNtdIWOrksGgxF4JtT7PXtoClGqNQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/types/-/types-1.45.0.tgz", + "integrity": "sha512-92xETOwIVWksA+wqZ/Dex/obbC5cgCCRCF7HQ7Cf8Wgv0jBKqUphccZRzmHic1qOthoW7ZAK2xkUtyXFmd2/SQ==", "license": "MIT", "peer": true, "dependencies": { @@ -8878,9 +9405,9 @@ "peer": true }, "node_modules/@zag-js/utils": { - "version": "1.41.2", - "resolved": "https://registry.npmjs.org/@zag-js/utils/-/utils-1.41.2.tgz", - "integrity": "sha512-Yj8FSrR7vGA6ahUhjrThfHAF+PM2Y1Yv2lkXkqZZd60mPBhixcot1+SHOfEMV63JimQcWrmQ8QbeYYMmF+ZpLQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@zag-js/utils/-/utils-1.45.0.tgz", + "integrity": "sha512-LyeGfTEojjhDcajCCGxvjrgFuPoMia1HKefdP6KqvJpC78+1awahBoZpYYZlbab2WPawgCaprcDevBJFlOe6Ag==", "license": "MIT", "peer": true }, @@ -8897,14 +9424,14 @@ } }, "node_modules/ai": { - "version": "7.0.37", - "resolved": "https://registry.npmjs.org/ai/-/ai-7.0.37.tgz", - "integrity": "sha512-stF+SEQJgKY3Qfe3FwNzqUrehHviOp2l7LemoI8YMOa0Zk5PxKsRNgUk3cHXz0RAue9RRyCAis2fz6LSCP6EKw==", + "version": "7.0.142", + "resolved": "https://registry.npmjs.org/ai/-/ai-7.0.142.tgz", + "integrity": "sha512-Tifni6/6nNhCu4GnFEeYYR7CGmJ3Yhm44SGxYrOupqP2aaZwmGGiiB5Zx4hiauJR0AWimcXULejDT+Qsj+SHOQ==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/gateway": "4.0.28", - "@ai-sdk/provider": "4.0.3", - "@ai-sdk/provider-utils": "5.0.12" + "@ai-sdk/gateway": "4.0.115", + "@ai-sdk/provider": "4.0.28", + "@ai-sdk/provider-utils": "5.0.61" }, "engines": { "node": ">=22" @@ -8929,6 +9456,47 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv/node_modules/fast-uri": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.4.tgz", + "integrity": "sha512-8JnbkQ4juDyvYs4mgFGQqg4yCYtFDtUtmp2QIQq11ZZe5CFQ5wcqm1rqDgAh/QdMySuBnPzMUiJUNZG5N/AiQw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -8973,6 +9541,17 @@ "node": ">=10" } }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -9011,10 +9590,19 @@ "npm": ">=6" } }, + "node_modules/babel-plugin-macros/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/baseline-browser-mapping": { - "version": "2.10.42", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz", - "integrity": "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==", + "version": "2.11.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.29.tgz", + "integrity": "sha512-YeesxhUmR4h5y5V8KF8iBCqJb8YFrBJ++XBTeGcWIaQOYXGN19JM0FoiOjAhwuDoln8owMgXcWBmgHtYSkky2w==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -9109,13 +9697,13 @@ } }, "node_modules/c15t": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/c15t/-/c15t-2.2.1.tgz", - "integrity": "sha512-6/yePflfCveo6Q1qMsX3DaKyE2OEuy41PBIl61Z7wScvJkIos3fky2RvBe8p+cScIGM0AbGoXvSEkOxbBda75g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/c15t/-/c15t-2.3.0.tgz", + "integrity": "sha512-+QBONCgMp2H0Yc3XVrQALasWihf0VFd9Ne+knXp8J1MyCcDM35rleHlD5ptBBnUUreMjTaEfYKxHrQ31imGiDg==", "license": "Apache-2.0", "dependencies": { - "@c15t/schema": "2.2.0", - "@c15t/translations": "2.2.1", + "@c15t/schema": "2.3.0", + "@c15t/translations": "2.3.0", "zustand": "5.0.14" } }, @@ -9158,9 +9746,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001803", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001803.tgz", - "integrity": "sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==", + "version": "1.0.30001816", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001816.tgz", + "integrity": "sha512-+8Yx7BXCoqk6IF8yTicjfUR6D/ldJzdlsodlEOiOSPmhK844WIgk67/zIQaGAOxNkZyyvBlrRFnLvqKIoqbAFw==", "funding": [ { "type": "opencollective", @@ -9613,9 +10201,9 @@ } }, "node_modules/dashjs": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dashjs/-/dashjs-5.2.0.tgz", - "integrity": "sha512-2W2KHFN53Sk7+rtdnIfSUK/3Oov+hraMTeVZwDOTSCNKM1cQtFiJdblNzRMnl59a/QDseG7JW+PC9mh/B+CMcg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dashjs/-/dashjs-5.2.1.tgz", + "integrity": "sha512-axcJmLeJCTJMLUfQRErUJB1KOiU5iHF+DMLBc3FKeox1HPYtGUQlC6Xm5Mm6vhBUR3CHHLIPOqw0JDIqMtP+Dw==", "license": "BSD-3-Clause", "dependencies": { "@svta/cml-608": "1.0.2", @@ -9663,9 +10251,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.21", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.21.tgz", - "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", + "version": "1.11.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz", + "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==", "license": "MIT" }, "node_modules/debug": { @@ -9766,6 +10354,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -9776,60 +10372,73 @@ "csstype": "^3.0.2" } }, + "node_modules/dom-helpers/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-3.1.1.tgz", + "integrity": "sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==", "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "domelementtype": "^3.0.0", + "domhandler": "^6.0.0", + "entities": "^8.0.0" + }, + "engines": { + "node": ">=20.19.0" }, "funding": { + "type": "github", "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, "node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", + "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==", "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" + "node": ">=20.19.0" }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-3.0.0.tgz", + "integrity": "sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } ], - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + } }, "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-6.0.1.tgz", + "integrity": "sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==", "license": "BSD-2-Clause", "dependencies": { - "domelementtype": "^2.3.0" + "domelementtype": "^3.0.0" }, "engines": { - "node": ">= 4" + "node": ">=20.19.0" }, "funding": { + "type": "github", "url": "https://github.com/fb55/domhandler?sponsor=1" } }, @@ -9844,17 +10453,20 @@ } }, "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "dev": true, + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-4.0.2.tgz", + "integrity": "sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==", "license": "BSD-2-Clause", "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "dom-serializer": "^3.0.0", + "domelementtype": "^3.0.0", + "domhandler": "^6.0.0" + }, + "engines": { + "node": ">=20.19.0" }, "funding": { + "type": "github", "url": "https://github.com/fb55/domutils?sponsor=1" } }, @@ -10008,9 +10620,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.24.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.2.tgz", - "integrity": "sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.26.0.tgz", + "integrity": "sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw==", "dev": true, "license": "MIT", "dependencies": { @@ -10052,9 +10664,9 @@ } }, "node_modules/es-toolkit": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.51.0.tgz", - "integrity": "sha512-zC2lQGkM7QX+Gm6iM3+WIdZJzthsEd14LvRNJneSO2hzyz/zNBENR8+YXWo1cKxgPBtV6ksPYHELbcwBRzmdCw==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.52.0.tgz", + "integrity": "sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==", "license": "MIT", "peer": true, "workspaces": [ @@ -10173,18 +10785,18 @@ "peer": true }, "node_modules/eventsource-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.0.tgz", - "integrity": "sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz", + "integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==", "license": "MIT", "engines": { "node": ">=18.0.0" } }, "node_modules/fast-copy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", - "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.1.0.tgz", + "integrity": "sha512-IuCOCDFM1F/s4LtG7Bjr3yUUwPHybyhqN74xk2cMYoP51vVeErMy8+6HGFchi/+45lW8uzhs6lBeEqks2GWt6A==", "license": "MIT" }, "node_modules/fast-deep-equal": { @@ -10222,26 +10834,10 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "license": "MIT" }, - "node_modules/fast-uri": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.7.tgz", - "integrity": "sha512-dOvZVzjdZdz7phd9v6jCbwxrBW3fK6n8Rc0CtdmM4bumzMnxywBYhuph6J819RRw/ku+rLbelwfMunktuzVVHg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz", + "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -10273,6 +10869,24 @@ } } }, + "node_modules/file-type": { + "version": "21.3.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.4.tgz", + "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -10301,9 +10915,9 @@ } }, "node_modules/formatly": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.7.0.tgz", - "integrity": "sha512-7CXJtIIA0zy/u12StsYk25qVKxvdLA2ep2sTNxK3ov0mGNIIDqIvAXDSgTnAfDJFsPfWjuz0WjfYSdpvnLA5Tg==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.11.4.tgz", + "integrity": "sha512-TeCC10lP8KCgoX+Fe5lryILIT0/Dy+nP0OSVnsuB5CwXoLuOdqxCYlPFF1inR8S/zTy1ec7TjhS2TeRKWzzImA==", "license": "MIT", "dependencies": { "fd-package-json": "^2.0.0", @@ -10313,7 +10927,7 @@ "formatly": "bin/index.mjs" }, "engines": { - "node": ">=18.3.0" + "node": ">=18.14.0" } }, "node_modules/framer-motion": { @@ -10427,9 +11041,9 @@ } }, "node_modules/graphql-http": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/graphql-http/-/graphql-http-1.22.4.tgz", - "integrity": "sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA==", + "version": "1.23.1", + "resolved": "https://registry.npmjs.org/graphql-http/-/graphql-http-1.23.1.tgz", + "integrity": "sha512-h6AcykL7+xp22QvOnK0fu1eHk9AZG1ngF71rk0ZGuGupnjm1yqXRFrZ/eMv4Q1FTCWILJ5o6hVAxzt3S8/wPHQ==", "license": "MIT", "workspaces": [ "implementations/**/*" @@ -10438,7 +11052,7 @@ "node": ">=12" }, "peerDependencies": { - "graphql": ">=0.11 <=16" + "graphql": ">=0.11 <=17" } }, "node_modules/graphql-playground-html": { @@ -10450,25 +11064,25 @@ "xss": "^1.0.6" } }, - "node_modules/graphql-scalars": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/graphql-scalars/-/graphql-scalars-1.22.2.tgz", - "integrity": "sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ==", + "node_modules/graphql-tag": { + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.7.tgz", + "integrity": "sha512-xnE/NFzy+0eIesvAsREJZ284zTl/wYuBAvpsFSDhRGRdRHdnE90M21Q3xAWyYInb0J756c6x0pIQ62+vtvOs1Q==", "license": "MIT", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.1.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/happy-dom": { - "version": "20.10.6", - "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-20.10.6.tgz", - "integrity": "sha512-6QD0ilzDDt93tX44y8tbmZdAcdTRYDhUP+Asgi6pC8Pp5IA3cvaZGyoVN/EGtlq9ziT65iPuBBn3ASLr6hCgVw==", + "version": "20.14.6", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-20.14.6.tgz", + "integrity": "sha512-5DDsf4QmEIlRL6NkCv/fxSjYHHkZceL/IaYQdJc2h3G7DRTEai++VTjbfL0LB9geW2VrA3+vrjF3Efx+OTtX0Q==", "license": "MIT", "dependencies": { "@types/node": ">=20.0.0", @@ -10549,9 +11163,9 @@ } }, "node_modules/hls.js": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.16.tgz", - "integrity": "sha512-VSIRpLfRwlAAdGL4wiTucx2ScRipo0ed1FBatWkyt832jC4CReKstga6yIhYVwGu9LOBjuX9wzmRMeQdBJtzEA==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.7.3.tgz", + "integrity": "sha512-MsPlx6yVW4Qv4C7mEVou4/gk/5cN2dVxOTnrNjPSmyH2f0Ln+/UkG10Ax1PE6OvrmTVPKgQYozTtBaPOuCzq7A==", "license": "Apache-2.0" }, "node_modules/hoist-non-react-statics": { @@ -10563,6 +11177,12 @@ "react-is": "^16.7.0" } }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/html-entities": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", @@ -10590,10 +11210,9 @@ } }, "node_modules/htmlparser2": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", - "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", - "dev": true, + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-12.0.0.tgz", + "integrity": "sha512-Tz7u1i95/g2x2jz81+x0FBVhBhY5aRTvD3tXXdFaljuNdzDLJ8UGNRrTcj2cgQvAg3iW/h77Fz15nLW0L0CrZw==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -10603,10 +11222,25 @@ ], "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" + "domelementtype": "^3.0.0", + "domhandler": "^6.0.0", + "domutils": "^4.0.2", + "entities": "^8.0.0" + }, + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", + "integrity": "sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/http-status": { @@ -10660,9 +11294,9 @@ "license": "MIT" }, "node_modules/immer": { - "version": "11.1.18", - "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.18.tgz", - "integrity": "sha512-EQyQtLiYW029lyoczMl/Hh4Xu7cDecSc58JRYpHyL4tIAu3eqd1yJzQX04d2BZHDkzFFvm6qJEJWOtfDSWAXbQ==", + "version": "11.1.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.21.tgz", + "integrity": "sha512-bZSadeCPGdaY5/qRLgr6mDSH1ra21rD3rqpiWk7+QTr4ayYPTE9qZYdLh/NdPhMe0wSrTvHD/Lk8q5EwhUs0aw==", "license": "MIT", "peer": true, "funding": { @@ -10701,6 +11335,12 @@ "sax": "1.2.1" } }, + "node_modules/imsc/node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "license": "ISC" + }, "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", @@ -10769,12 +11409,12 @@ "license": "MIT" }, "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.17.0.tgz", + "integrity": "sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==", "license": "MIT", "dependencies": { - "hasown": "^2.0.3" + "hasown": "^2.0.4" }, "engines": { "node": ">= 0.4" @@ -10841,9 +11481,9 @@ } }, "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.1.0.tgz", + "integrity": "sha512-bUi/yjmtKYcRVUtWRGr0UA6xEFh2I6zWUwMrUXB3s7bmYCaZ8a+0ZsTRkrawh/mzlSD1Y0Ph8bp/U+TvBpWDNw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -10994,9 +11634,9 @@ } }, "node_modules/knip": { - "version": "6.38.0", - "resolved": "https://registry.npmjs.org/knip/-/knip-6.38.0.tgz", - "integrity": "sha512-umytiMCaZf02MV9SOO1FEDgbDf6h20VZk3ruJE0kh52kkGjYZFRUAXHJWYoLhvhoHGINO/7GXVJmQ2vxTBvl6A==", + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/knip/-/knip-6.41.0.tgz", + "integrity": "sha512-DrhQlIuV6xScd5Q+WTF1znd1w41QzxFGCtAHXCajsH/ndGMotHoNYbdXbuFtzW3mIOmniHtZ7zCtvnQkUmJtQQ==", "funding": [ { "type": "github", @@ -11009,19 +11649,18 @@ ], "license": "ISC", "dependencies": { - "fdir": "^6.5.0", - "formatly": "^0.7.0", + "formatly": "^0.11.4", "get-tsconfig": "4.14.3", "jiti": "^2.7.0", - "oxc-parser": "^0.150.0", + "oxc-parser": "^0.153.0", "oxc-resolver": "11.24.2", "picomatch": "^4.0.7", - "smol-toml": "^1.8.0", + "smol-toml": "^1.9.0", "strip-json-comments": "5.0.3", "tinyglobby": "^0.2.17", - "unbash": "^4.0.11", + "unbash": "^5.0.0", "yaml": "^2.9.1", - "zod": "^4.4.3" + "zod": "^4.6.5" }, "bin": { "knip": "bin/knip.js", @@ -11032,24 +11671,35 @@ } }, "node_modules/launder": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/launder/-/launder-1.7.1.tgz", - "integrity": "sha512-mU6WRz5EusL9ZZuiZ5SO4Y6C0P9PAUR9iwdb6bzj4KDihm28DiHFw+/yk9DBH4f+Pv1wuzQ4e2jV3oQ7mkIqvw==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/launder/-/launder-1.7.2.tgz", + "integrity": "sha512-DLg3HPnHUfBi5/MxMLmJD12dmlMpFEC2HgMW6vkZ/9JR0RU00kXoRGvDxAvFmdO0o610OA77i4FgNTLucmhDVg==", "license": "MIT", "dependencies": { - "dayjs": "^1.11.7" + "dayjs": "^1.11.23" } }, "node_modules/lexical": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.41.0.tgz", - "integrity": "sha512-pNIm5+n+hVnJHB9gYPDYsIO5Y59dNaDU9rJmPPsfqQhP2ojKFnUoPbcRnrI9FJLXB14sSumcY8LUw7Sq70TZqA==", - "license": "MIT" + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.50.0.tgz", + "integrity": "sha512-m/uySKGi66CEjCjIvmMeLjLgMnckCKAQn1ynFGj+YJfjlr6KtkodH/dpFL+hdLDqqEZHhR75EP64J96MNIMwDw==", + "license": "MIT", + "dependencies": { + "@lexical/internal": "0.50.0" + }, + "peerDependencies": { + "typescript": ">=5.2" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } }, "node_modules/lib0": { - "version": "0.2.117", - "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.117.tgz", - "integrity": "sha512-DeXj9X5xDCjgKLU/7RR+/HQEVzuuEUiwldwOGsHK/sfAfELGWEyTcf0x+uOvCvK3O2zPmZePXWL85vtia6GyZw==", + "version": "0.2.119", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.119.tgz", + "integrity": "sha512-vh+TiejVy8Xm+hCdnRfn9BthGNvNUZdEXltNjVZL3TzRIKP3s1lnQh8pWd/Q0wCgY0FPAGVVjFF4ZiHUV3LFgA==", "license": "MIT", "peer": true, "dependencies": { @@ -11393,6 +12043,17 @@ "loose-envify": "cli.js" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -11511,9 +12172,9 @@ } }, "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.2.0.tgz", + "integrity": "sha512-2Jn/ADrHFFyyniBMi0bncTbJqU78K3/TEYvzvwrWWzD9MYPUa/Gm4r3nOeKFQg/PDM5BsbDYdc8ackW4NTY6NA==", "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", @@ -11521,8 +12182,10 @@ "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", + "micromark-util-character": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" }, @@ -11545,9 +12208,9 @@ } }, "node_modules/media-chrome": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-4.19.2.tgz", - "integrity": "sha512-4ai1ITN8wBhwugQcRgqe3tN0z6OSKGOXqHLNrS04MgKFfsLqu6Dm8MPq02pI9Y9ZKoXtFjIl85jOryIW9es3BA==", + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/media-chrome/-/media-chrome-4.19.3.tgz", + "integrity": "sha512-B5cPfn5FUTm3ki58QlEk2CB3xFo1i5jM1JavVN3bV81o09cokQC+qWVGVWZWY9Yoo6si9WeaQZUNn472WzbNVQ==", "license": "MIT", "dependencies": { "ce-la-react": "^0.3.2" @@ -11588,9 +12251,9 @@ } }, "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.3.tgz", + "integrity": "sha512-oGYfQzHSG5dOMovQcJ3fyTmZlWAWpi0XA0sJwJs+i6OT88o1+Jtw/8z0CmdowSLxGhhFK89rQ/oXph/wN02PNw==", "funding": [ { "type": "GitHub Sponsors", @@ -11613,6 +12276,7 @@ "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-edit-map": "^1.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", @@ -11623,9 +12287,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.4.tgz", + "integrity": "sha512-wxEeE8v8XVvOrxn1TZj74qYhAtTQsSqufHVS3uNVyT1MupXxhyaHk8/9xDNPh9BmL77QNDgWTkZ3RsYHB2ry7w==", "funding": [ { "type": "GitHub Sponsors", @@ -11642,18 +12306,19 @@ "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", + "micromark-factory-space": "^2.1.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", + "micromark-util-edit-map": "^1.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "micromark-util-types": "^2.0.3" } }, "node_modules/micromark-extension-mdx-jsx": { @@ -11750,9 +12415,9 @@ } }, "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.1.0.tgz", + "integrity": "sha512-fS8hnLIjnjvdQIj39Geug8wWsR0HrYZ43KShKxNfwT7t2LOHo/LbWZEzEaSOjwtjdCsjoE6syHhonEzW0zv0+Q==", "funding": [ { "type": "GitHub Sponsors", @@ -11934,6 +12599,25 @@ "micromark-util-symbol": "^2.0.0" } }, + "node_modules/micromark-util-edit-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-edit-map/-/micromark-util-edit-map-1.0.0.tgz", + "integrity": "sha512-Pa2ljlsEL6sVwFaYeyrOLSYbQt73JvGbPOYFq+9AElXiSnfI5Q4465RRZ1sHv7lDjDOnGRDDaqPXqClqWK/q1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, "node_modules/micromark-util-encode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", @@ -12089,9 +12773,9 @@ "license": "MIT" }, "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.3.tgz", + "integrity": "sha512-oxB2Ik03hI0gv+VNn9tnh1t1YEe9MDPptViAEgfdf3YQHsn0pzGTgCdlSCJXcwhqm8phaEuM7zeEu3QQzVBrPg==", "funding": [ { "type": "GitHub Sponsors", @@ -12139,13 +12823,13 @@ } }, "node_modules/monaco-editor": { - "version": "0.55.1", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.55.1.tgz", - "integrity": "sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==", + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.57.0.tgz", + "integrity": "sha512-5BkI9KGoqrNvBGUe15/QlZq3OooZ8WLg1AxTpaqHRCP3HNpzPPZKE2EDz8M7c+VRmCeUw1Brp4cx/PWm3kI/5A==", "license": "MIT", "peer": true, "dependencies": { - "dompurify": "3.2.7", + "dompurify": "3.4.15", "marked": "14.0.0" } }, @@ -12197,15 +12881,15 @@ "license": "MIT" }, "node_modules/mux-embed": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-5.18.1.tgz", - "integrity": "sha512-ePsHjiEKY+FgrSBiMmaF+LOtTQSSBWv/1zqpREQFN96JE93xlsArT/MEi30yKOE06MgjOlL70YI750molu3y7g==", + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/mux-embed/-/mux-embed-5.18.2.tgz", + "integrity": "sha512-LBH8+LazS5Iyy2ujTrwXNJt6QUUUHw7NHdRFrBfIlKTrEdL5ZrzesSsAdVVPKBjdP0OoDoVu2zoh+oT5PgFomw==", "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.18", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", - "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", + "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", "funding": [ { "type": "github", @@ -12227,12 +12911,12 @@ "license": "MIT" }, "node_modules/next": { - "version": "16.3.6", - "resolved": "https://registry.npmjs.org/next/-/next-16.3.6.tgz", - "integrity": "sha512-L+otWM/aQbYTx98aZhgEoMb4bZAXx1YVW4UMA/vuCyCoWG5HJyZUili8QAkqzrcC+5///tsz3s0M+SlyB5bLMw==", + "version": "16.4.1", + "resolved": "https://registry.npmjs.org/next/-/next-16.4.1.tgz", + "integrity": "sha512-uc657V62E34fOI6W5NtG9IzwsPcms0Z60grz2MJGtglgD+pTFnNt4Yw2PzaU622tfX4vhrDgLZzicE2YlhI20Q==", "license": "MIT", "dependencies": { - "@next/env": "16.3.6", + "@next/env": "16.4.1", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", @@ -12246,15 +12930,15 @@ "node": ">=20.9.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.3.6", - "@next/swc-darwin-x64": "16.3.6", - "@next/swc-linux-arm64-gnu": "16.3.6", - "@next/swc-linux-arm64-musl": "16.3.6", - "@next/swc-linux-x64-gnu": "16.3.6", - "@next/swc-linux-x64-musl": "16.3.6", - "@next/swc-win32-arm64-msvc": "16.3.6", - "@next/swc-win32-x64-msvc": "16.3.6", - "sharp": "^0.35.4" + "@next/swc-darwin-arm64": "16.4.1", + "@next/swc-darwin-x64": "16.4.1", + "@next/swc-linux-arm64-gnu": "16.4.1", + "@next/swc-linux-arm64-musl": "16.4.1", + "@next/swc-linux-x64-gnu": "16.4.1", + "@next/swc-linux-x64-musl": "16.4.1", + "@next/swc-win32-arm64-msvc": "16.4.1", + "@next/swc-win32-x64-msvc": "16.4.1", + "sharp": "^0.35.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -12320,12 +13004,12 @@ "optional": true }, "node_modules/nodemailer": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-9.1.1.tgz", - "integrity": "sha512-izw9mVKFix6YSnC9eLgV6g1opl9DUlRio9ZNcq+Wu9Ujn2UwF+8Nl0B8nz22kEC+CTZCvinkxwJ0DeFbb6NwcQ==", + "version": "10.0.16", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-10.0.16.tgz", + "integrity": "sha512-VL9xKErxN+el77o8eBOuYKUPMyEx7F9hfnDCuiUKJRp9v3wnWMOudYgP/SWbwSHy8rUL4cylobuXtki1LpQS7A==", "license": "MIT-0", "engines": { - "node": ">=6.0.0" + "node": ">=20.0.0" } }, "node_modules/normalize-path": { @@ -12402,13 +13086,25 @@ "regex-recursion": "^6.0.2" } }, + "node_modules/optimism": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.1.tgz", + "integrity": "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==", + "license": "MIT", + "dependencies": { + "@wry/caches": "^1.0.0", + "@wry/context": "^0.7.0", + "@wry/trie": "^0.5.0", + "tslib": "^2.3.0" + } + }, "node_modules/oxc-parser": { - "version": "0.150.0", - "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.150.0.tgz", - "integrity": "sha512-zwajKw1GUa57IOdafIS7/yOObGF2NihwIfZfs5yJTRprMSkiwhWOc/k+n8bwnUPbHr2/XsjfBO8KyTPaW3VpWg==", + "version": "0.153.0", + "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.153.0.tgz", + "integrity": "sha512-cEnpyyV1OJRXv++SFNw0z8i+2o/cr88rVLaOYJafELDoHM5yHvCAbwGRLvxuany6SNLcbblSMUyZaGzH+quSYg==", "license": "MIT", "dependencies": { - "@oxc-project/types": "^0.150.0" + "@oxc-project/types": "^0.153.0" }, "engines": { "node": "^20.19.0 || >=22.12.0" @@ -12417,25 +13113,25 @@ "url": "https://github.com/sponsors/oxc-project" }, "optionalDependencies": { - "@oxc-parser/binding-android-arm-eabi": "0.150.0", - "@oxc-parser/binding-android-arm64": "0.150.0", - "@oxc-parser/binding-darwin-arm64": "0.150.0", - "@oxc-parser/binding-darwin-x64": "0.150.0", - "@oxc-parser/binding-freebsd-x64": "0.150.0", - "@oxc-parser/binding-linux-arm-gnueabihf": "0.150.0", - "@oxc-parser/binding-linux-arm-musleabihf": "0.150.0", - "@oxc-parser/binding-linux-arm64-gnu": "0.150.0", - "@oxc-parser/binding-linux-arm64-musl": "0.150.0", - "@oxc-parser/binding-linux-ppc64-gnu": "0.150.0", - "@oxc-parser/binding-linux-riscv64-gnu": "0.150.0", - "@oxc-parser/binding-linux-riscv64-musl": "0.150.0", - "@oxc-parser/binding-linux-s390x-gnu": "0.150.0", - "@oxc-parser/binding-linux-x64-gnu": "0.150.0", - "@oxc-parser/binding-linux-x64-musl": "0.150.0", - "@oxc-parser/binding-openharmony-arm64": "0.150.0", - "@oxc-parser/binding-win32-arm64-msvc": "0.150.0", - "@oxc-parser/binding-win32-ia32-msvc": "0.150.0", - "@oxc-parser/binding-win32-x64-msvc": "0.150.0" + "@oxc-parser/binding-android-arm-eabi": "0.153.0", + "@oxc-parser/binding-android-arm64": "0.153.0", + "@oxc-parser/binding-darwin-arm64": "0.153.0", + "@oxc-parser/binding-darwin-x64": "0.153.0", + "@oxc-parser/binding-freebsd-x64": "0.153.0", + "@oxc-parser/binding-linux-arm-gnueabihf": "0.153.0", + "@oxc-parser/binding-linux-arm-musleabihf": "0.153.0", + "@oxc-parser/binding-linux-arm64-gnu": "0.153.0", + "@oxc-parser/binding-linux-arm64-musl": "0.153.0", + "@oxc-parser/binding-linux-ppc64-gnu": "0.153.0", + "@oxc-parser/binding-linux-riscv64-gnu": "0.153.0", + "@oxc-parser/binding-linux-riscv64-musl": "0.153.0", + "@oxc-parser/binding-linux-s390x-gnu": "0.153.0", + "@oxc-parser/binding-linux-x64-gnu": "0.153.0", + "@oxc-parser/binding-linux-x64-musl": "0.153.0", + "@oxc-parser/binding-openharmony-arm64": "0.153.0", + "@oxc-parser/binding-win32-arm64-msvc": "0.153.0", + "@oxc-parser/binding-win32-ia32-msvc": "0.153.0", + "@oxc-parser/binding-win32-x64-msvc": "0.153.0" } }, "node_modules/oxc-resolver": { @@ -12469,9 +13165,9 @@ } }, "node_modules/package-manager-detector": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.8.0.tgz", - "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.9.0.tgz", + "integrity": "sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==", "license": "MIT" }, "node_modules/parent-module": { @@ -12563,13 +13259,13 @@ } }, "node_modules/payload": { - "version": "3.88.0", - "resolved": "https://registry.npmjs.org/payload/-/payload-3.88.0.tgz", - "integrity": "sha512-O7zuS80bvEGLte+7xZjwN05+ox5BCsGcQT2M6+CTote07JQOOvHJoiuoyQFw6cUElcFTWGMC5dy03w7J7sTYGg==", + "version": "3.90.2", + "resolved": "https://registry.npmjs.org/payload/-/payload-3.90.2.tgz", + "integrity": "sha512-Qn+nRiMEVOrClVg7mkCHqCKc7x5DAKQZ+jZQm6lqtLfHTS6fuGXqeOzgy5/woWquN4awRUCNgIGu2uYVNn5uvQ==", "license": "MIT", "dependencies": { "@next/env": "^15.1.5", - "@payloadcms/translations": "3.88.0", + "@payloadcms/translations": "3.90.2", "@types/busboy": "1.5.4", "ajv": "8.18.0", "bson-objectid": "2.0.4", @@ -12594,6 +13290,7 @@ "qs-esm": "8.0.1", "range-parser": "1.2.1", "sanitize-filename": "1.6.3", + "sax": "1.6.1", "ts-essentials": "10.0.3", "tsx": "4.22.4", "undici": "7.29.0", @@ -13027,9 +13724,9 @@ } }, "node_modules/payload/node_modules/@next/env": { - "version": "15.5.23", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.23.tgz", - "integrity": "sha512-Mv3Z9hVbFcPnoLevsZ6rnX1TBtyHb5E17yN7HTPDXSXxeNsGBjUFrdbjRXKKXIOhfth7/cg6Ay7PZ2UFawaWsQ==", + "version": "15.5.28", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.28.tgz", + "integrity": "sha512-xxW5EBI8fMPuVTPBW7LL980IRbuDXlbkUAwp9DDhtb4Lnich3nJ13uYpvrX4VE74hWPf6AvHHAMmGCidcHjbfg==", "license": "MIT" }, "node_modules/payload/node_modules/esbuild": { @@ -13073,24 +13770,6 @@ "@esbuild/win32-x64": "0.28.2" } }, - "node_modules/payload/node_modules/file-type": { - "version": "21.3.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.4.tgz", - "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", - "license": "MIT", - "dependencies": { - "@tokenizer/inflate": "^0.4.1", - "strtok3": "^10.3.4", - "token-types": "^6.1.1", - "uint8array-extras": "^1.4.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, "node_modules/payload/node_modules/get-tsconfig": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", @@ -13156,16 +13835,16 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz", - "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.1.tgz", + "integrity": "sha512-6PQbsFWZcp9EmJEwy5cGQ2La+AMWpP46lgbb8X+U/XsHIUweYDNCpeuKck5RxL2MdVFi7krbbEi5nX4Zh7JhrQ==", "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.14.0.tgz", - "integrity": "sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.14.1.tgz", + "integrity": "sha512-qR3kGNPBLpCNtz0evbKA0Y/MRFXwSSdT+pTJvYp/bXTcReZbvX1kzF0IyTc1QnxqF7AZbOeBhNL8R5mYQZV/MA==", "license": "MIT" }, "node_modules/pg-int8": { @@ -13187,9 +13866,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.15.0.tgz", - "integrity": "sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.16.1.tgz", + "integrity": "sha512-p9VOFMiHB/ZbJATetbg+99PxssTVSQRnyuPSQ67mN1+1KBOjZaZ83ZQzltnxPhJwSsC3nwVjJ10DVJlerbFzLg==", "license": "MIT" }, "node_modules/pg-types": { @@ -13307,9 +13986,9 @@ } }, "node_modules/player.style": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/player.style/-/player.style-0.3.4.tgz", - "integrity": "sha512-5O9bkbq0APQIkhptyZwp0gUgheCeImGPFo4hvPF2M5xBmgsUYzsUPHCfMye2xyeRE1zvQBKtziaC3jPgnHE1tw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/player.style/-/player.style-0.3.5.tgz", + "integrity": "sha512-hknPiLjNtJP5zM0vCVXsl3Pef+uQnecYg8X/1vjd/Y3TdAgs/zxhck02SFTxRSckaObKemP5tUT8wTH7ByUmnw==", "license": "MIT", "workspaces": [ ".", @@ -13332,9 +14011,9 @@ } }, "node_modules/postcss": { - "version": "8.5.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", - "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", + "version": "8.5.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz", + "integrity": "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==", "funding": [ { "type": "opencollective", @@ -13351,9 +14030,9 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.18", + "nanoid": "^3.3.20", "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "source-map-js": "^1.2.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -13399,9 +14078,9 @@ } }, "node_modules/prettier": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.9.tgz", - "integrity": "sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==", + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.10.tgz", + "integrity": "sha512-skGHTH1Yb9QvaTC4hWnRTzEYtCpApF0UMBPz+t/0ZPzP8ihefo/btKd+QA7pUE0fEwA1SbS/NmhyEcstdXOIdA==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -13413,19 +14092,34 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/prismjs": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", - "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/process-warning": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", - "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.1.1.tgz", + "integrity": "sha512-oCkNVj4OKnKEcocVBcDfiIugN1/cE6rgfT3nCtzeqZPA8+rIxMaQ0xXzIkGP8Gj2qUaP1UR7uhJ1VD8lUCpzCg==", "funding": [ { "type": "github", @@ -13462,6 +14156,12 @@ "react-is": "^16.13.1" } }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/property-information": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz", @@ -13547,9 +14247,9 @@ } }, "node_modules/react": { - "version": "19.3.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", - "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.1.tgz", + "integrity": "sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13581,15 +14281,15 @@ } }, "node_modules/react-dom": { - "version": "19.3.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", - "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.1.tgz", + "integrity": "sha512-Y0bARz53lhEC1NMCASs0/j+faB/zqt3R8hpvg1e8+61ZVJ4UL0UdC4cBbXfZMcIuhrfgeILTLe+ZeBCavQPtKQ==", "license": "MIT", "dependencies": { "scheduler": "^0.28.0" }, "peerDependencies": { - "react": "^19.3.0" + "react": "^19.3.1" } }, "node_modules/react-dom/node_modules/scheduler": { @@ -13610,6 +14310,15 @@ "react": ">=16.13.1" } }, + "node_modules/react-error-boundary/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/react-hotkeys-hook": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-5.3.3.tgz", @@ -13634,10 +14343,11 @@ } }, "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" + "version": "19.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.3.1.tgz", + "integrity": "sha512-RRieF6IyxQBkcK6pP8xOHprLTPW6QjRkbGdImtqNme+/hYVwCZkLQLdlZGOhUqXwkS9IEynaGvPJtv6XB/cz0Q==", + "license": "MIT", + "peer": true }, "node_modules/react-player": { "version": "3.4.0", @@ -13736,9 +14446,9 @@ } }, "node_modules/react-resizable-panels": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-4.12.1.tgz", - "integrity": "sha512-ElE/UpOvMLRWtAqbCgyizHXcbws8RPMyN3cBqmdY17Nxr5f01+DEwzOLqhgcy68GSnjtIUFgKWKl8aIgx5aypQ==", + "version": "4.14.5", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-4.14.5.tgz", + "integrity": "sha512-AoHgoq3sGOfciPn2ahddFrBCqsitZLse8cJIYWblvE3kQ9z39IrhdlHCjnVRrDL8XcWqvA0u/t9nLZTfWePJ5A==", "license": "MIT", "peer": true, "peerDependencies": { @@ -13767,6 +14477,15 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/react-select/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/react-style-singleton": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", @@ -13806,10 +14525,19 @@ "react-dom": ">=16.6.0" } }, + "node_modules/react-transition-group/node_modules/@babel/runtime": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.10.tgz", + "integrity": "sha512-NpugTzbKgGrNe45Ui32cN8vCFFMxVtP/9rtfwv0nP5FRDAjvYBxJcLVpYA9mr1jxP6cnIT7x9LUzuDTbWYYNRA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/react-virtuoso": { - "version": "4.18.10", - "resolved": "https://registry.npmjs.org/react-virtuoso/-/react-virtuoso-4.18.10.tgz", - "integrity": "sha512-P6GIZ7kWAPOYB2H16yRQNgy+VF9pJOuTFw1EUc1EAtCj5WxVSAF1Sql3x3fbLwaLeBFsiPnu+3U9o6sIOyTdFw==", + "version": "4.18.19", + "resolved": "https://registry.npmjs.org/react-virtuoso/-/react-virtuoso-4.18.19.tgz", + "integrity": "sha512-dewyZisA5IiQTldh7eHM5KpI+qxi0nKRVYi2iM01XmPkNa5tjvVUKJKAIc6ted1hAK1/NFlXuhXpVYqGHHdcdQ==", "license": "MIT", "peerDependencies": { "react": ">=16 || >=17 || >= 18 || >= 19", @@ -13832,9 +14560,9 @@ } }, "node_modules/readdirp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", - "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", "license": "MIT", "engines": { "node": ">= 20.19.0" @@ -13884,10 +14612,10 @@ "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/recharts/node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "node_modules/recharts/node_modules/reselect": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.2.0.tgz", + "integrity": "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==", "license": "MIT", "peer": true }, @@ -13942,19 +14670,19 @@ } }, "node_modules/reselect": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.2.0.tgz", - "integrity": "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.3.0.tgz", + "integrity": "sha512-XGoLeRAVzUTcJ1qkxPQhDJyIZ5d6zzZD9nT7AEZOaaU9UbWclhycElmhO+VD5bFeLuzhPBaOV2oXC8uG35ZSpg==", "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.12", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", - "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "version": "1.22.13", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.13.tgz", + "integrity": "sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "is-core-module": "^2.16.1", + "is-core-module": "^2.17.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -14019,6 +14747,15 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-stable-stringify": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", @@ -14038,128 +14775,26 @@ } }, "node_modules/sanitize-html": { - "version": "2.17.7", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.7.tgz", - "integrity": "sha512-PGtEkc9cbnedU3s9TmzDbpsZ8w086g/0Q8k8/oIO1NLNU3i5k9yn835CrjJSajp1KMmkisbO1qPXxNKO3welAg==", + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.18.1.tgz", + "integrity": "sha512-2X5lC8fYla8YaT8g73Nj+HcLWXan5dLyCWLgVvaOmfw7JI78IRsyNtIDytTHdn7hBQbIkCah7Zbmd5jabzeDig==", "license": "MIT", "dependencies": { - "deepmerge": "^4.2.2", "escape-string-regexp": "^4.0.0", "htmlparser2": "^12.0.0", - "is-plain-object": "^5.0.0", - "launder": "^1.7.1", + "is-plain-object": "^5.1.0", + "launder": "^1.7.2", "parse-srcset": "^1.0.2", - "postcss": "^8.3.11" + "postcss": "^8.5.27" }, "engines": { "node": ">=22.12.0" } }, - "node_modules/sanitize-html/node_modules/dom-serializer": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-3.1.1.tgz", - "integrity": "sha512-4MEa38/QexBob6gFNwu+EGdWvhJ1OKuNwdYY3Y3NyeWDQfnGeDYQUDfIRzWu5B5gsv03so2Uxd28YC6zrsx3Lw==", - "license": "MIT", - "dependencies": { - "domelementtype": "^3.0.0", - "domhandler": "^6.0.0", - "entities": "^8.0.0" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/domelementtype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-3.0.0.tgz", - "integrity": "sha512-umCQid3jKbDmVjx8jGaW7uUykm4DEUeyV21hPxNMo2nV955DhUThwqyOIDtreepP31hl84X7G5U9ZfsWvIB3Pg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause", - "engines": { - "node": ">=20.19.0" - } - }, - "node_modules/sanitize-html/node_modules/domhandler": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-6.0.1.tgz", - "integrity": "sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^3.0.0" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/domutils": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-4.0.2.tgz", - "integrity": "sha512-qI4JLRKnSzqFqr7hAlS5xQDusBCjKSEG4t4+7aNrIQMHBcsC2TGEhuyABJdYkgSewL57PNLYEiibY2iPKhKpaA==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^3.0.0", - "domelementtype": "^3.0.0", - "domhandler": "^6.0.0" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/entities": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", - "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/htmlparser2": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-12.0.0.tgz", - "integrity": "sha512-Tz7u1i95/g2x2jz81+x0FBVhBhY5aRTvD3tXXdFaljuNdzDLJ8UGNRrTcj2cgQvAg3iW/h77Fz15nLW0L0CrZw==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^3.0.0", - "domhandler": "^6.0.0", - "domutils": "^4.0.2", - "entities": "^8.0.0" - }, - "engines": { - "node": ">=20.19.0" - } - }, "node_modules/sass": { - "version": "1.105.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.105.0.tgz", - "integrity": "sha512-4EjSuRTyG8M4yRXXY1PT9OUV5zz23xBxJkbIAprohKHqf6HOU4MCpE3U3vAC+iO1gxobBjESNbcj8rYAQZWnyA==", + "version": "1.105.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.105.1.tgz", + "integrity": "sha512-1CnAWPyrrnVQzXGB/DUep1vYCKCm1CIBr+YxjjiW6wk9qtzemnGP4qicH56T2F9S4Hjtv/Ne3jDz8JqfdDU4oA==", "license": "MIT", "dependencies": { "chokidar": "^5.0.0", @@ -14177,10 +14812,13 @@ } }, "node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", - "license": "ISC" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } }, "node_modules/scheduler": { "version": "0.25.0", @@ -14199,9 +14837,9 @@ } }, "node_modules/secure-json-parse": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", - "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.1.tgz", + "integrity": "sha512-lnd81MQEZKjhW/Gd2TQqdd4XP6QYNdDW/EP+I7nTrFHP9y2LmaGPIHk9xsnzcOiEr1c39c/e84xFgGviQKBTRw==", "funding": [ { "type": "github", @@ -14227,9 +14865,9 @@ } }, "node_modules/sharp": { - "version": "0.35.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.4.tgz", - "integrity": "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==", + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.5.tgz", + "integrity": "sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==", "license": "Apache-2.0", "dependencies": { "@img/colour": "^1.1.0", @@ -14243,31 +14881,31 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.35.4", - "@img/sharp-darwin-x64": "0.35.4", - "@img/sharp-freebsd-wasm32": "0.35.4", - "@img/sharp-libvips-darwin-arm64": "1.3.3", - "@img/sharp-libvips-darwin-x64": "1.3.3", - "@img/sharp-libvips-linux-arm": "1.3.3", - "@img/sharp-libvips-linux-arm64": "1.3.3", - "@img/sharp-libvips-linux-ppc64": "1.3.3", - "@img/sharp-libvips-linux-riscv64": "1.3.3", - "@img/sharp-libvips-linux-s390x": "1.3.3", - "@img/sharp-libvips-linux-x64": "1.3.3", - "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", - "@img/sharp-libvips-linuxmusl-x64": "1.3.3", - "@img/sharp-linux-arm": "0.35.4", - "@img/sharp-linux-arm64": "0.35.4", - "@img/sharp-linux-ppc64": "0.35.4", - "@img/sharp-linux-riscv64": "0.35.4", - "@img/sharp-linux-s390x": "0.35.4", - "@img/sharp-linux-x64": "0.35.4", - "@img/sharp-linuxmusl-arm64": "0.35.4", - "@img/sharp-linuxmusl-x64": "0.35.4", - "@img/sharp-webcontainers-wasm32": "0.35.4", - "@img/sharp-win32-arm64": "0.35.4", - "@img/sharp-win32-ia32": "0.35.4", - "@img/sharp-win32-x64": "0.35.4" + "@img/sharp-darwin-arm64": "0.35.5", + "@img/sharp-darwin-x64": "0.35.5", + "@img/sharp-freebsd-wasm32": "0.35.5", + "@img/sharp-libvips-darwin-arm64": "1.3.4", + "@img/sharp-libvips-darwin-x64": "1.3.4", + "@img/sharp-libvips-linux-arm": "1.3.4", + "@img/sharp-libvips-linux-arm64": "1.3.4", + "@img/sharp-libvips-linux-ppc64": "1.3.4", + "@img/sharp-libvips-linux-riscv64": "1.3.4", + "@img/sharp-libvips-linux-s390x": "1.3.4", + "@img/sharp-libvips-linux-x64": "1.3.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.4", + "@img/sharp-libvips-linuxmusl-x64": "1.3.4", + "@img/sharp-linux-arm": "0.35.5", + "@img/sharp-linux-arm64": "0.35.5", + "@img/sharp-linux-ppc64": "0.35.5", + "@img/sharp-linux-riscv64": "0.35.5", + "@img/sharp-linux-s390x": "0.35.5", + "@img/sharp-linux-x64": "0.35.5", + "@img/sharp-linuxmusl-arm64": "0.35.5", + "@img/sharp-linuxmusl-x64": "0.35.5", + "@img/sharp-webcontainers-wasm32": "0.35.5", + "@img/sharp-win32-arm64": "0.35.5", + "@img/sharp-win32-ia32": "0.35.5", + "@img/sharp-win32-x64": "0.35.5" }, "peerDependenciesMeta": { "@types/node": { @@ -14276,17 +14914,17 @@ } }, "node_modules/shiki": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.4.3.tgz", - "integrity": "sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.5.0.tgz", + "integrity": "sha512-OcRW72ngQvc+MSVWBRIovC/BTW589iUE/Vxav7VeM4RcY9MUjqB+IR6ILG1k9nuW6LiG/nct9uma4/MBtnZbmQ==", "license": "MIT", "dependencies": { - "@shikijs/core": "4.4.3", - "@shikijs/engine-javascript": "4.4.3", - "@shikijs/engine-oniguruma": "4.4.3", - "@shikijs/langs": "4.4.3", - "@shikijs/themes": "4.4.3", - "@shikijs/types": "4.4.3", + "@shikijs/core": "4.5.0", + "@shikijs/engine-javascript": "4.5.0", + "@shikijs/engine-oniguruma": "4.5.0", + "@shikijs/langs": "4.5.0", + "@shikijs/themes": "4.5.0", + "@shikijs/types": "4.5.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" }, @@ -14314,9 +14952,9 @@ "peer": true }, "node_modules/slate-dom": { - "version": "0.124.1", - "resolved": "https://registry.npmjs.org/slate-dom/-/slate-dom-0.124.1.tgz", - "integrity": "sha512-D3yVibjLZM4Oj4MmXxOEXbjrlf4wJez3OvGABBNYrAP7gXb0d96tKNtWZ0hGm/5y84idw/LHjZ7W1uTYqFR9rQ==", + "version": "0.136.0", + "resolved": "https://registry.npmjs.org/slate-dom/-/slate-dom-0.136.0.tgz", + "integrity": "sha512-F0tu8HQLcsix6t034ZcPNVzXsv25G+ywU05hjZ+cBzsMPNQUdzefFnLOEt5FINwNx5XIC5hsxV0GrX9/LJtXAg==", "license": "MIT", "peer": true, "dependencies": { @@ -14332,6 +14970,13 @@ "slate": ">=0.121.0" } }, + "node_modules/slate-dom/node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", + "license": "MIT", + "peer": true + }, "node_modules/slate-history": { "version": "0.113.1", "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.113.1.tgz", @@ -14366,10 +15011,17 @@ "slate-dom": ">=0.119.1" } }, + "node_modules/slate-react/node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", + "license": "MIT", + "peer": true + }, "node_modules/smol-toml": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.8.0.tgz", - "integrity": "sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.9.1.tgz", + "integrity": "sha512-j7WyPdf0CJoutMzMoPLF/bVXHtKZIT9Rb4eGeEbWw8X2t5oirjPgpL+OpaENZrILYaXqYwnVH+qgUwVbl+pUJQ==", "license": "BSD-3-Clause", "engines": { "node": ">= 18" @@ -14388,14 +15040,19 @@ } }, "node_modules/sonner": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.7.tgz", - "integrity": "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.8.tgz", + "integrity": "sha512-UM/ByIoFra8yzV75n1o0Puu0bw5U/9UNnDacrJNspekBewIfsQ3D6ez1nvlWpt7aTsO6rujQtifBpycwIivqlg==", "license": "MIT", - "peer": true, "peerDependencies": { + "@types/react": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "node_modules/source-map": { @@ -14408,9 +15065,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -14500,10 +15157,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stripe": { + "version": "22.6.2", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-22.6.2.tgz", + "integrity": "sha512-PwRE2scocvXqDKPiskMa5vRJEAEkq46W69XyUYmAwrNSLr675lQnfqLwnsndAWizwgihOWw/irLmoFRo3ez7ew==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/strtok3": { - "version": "10.3.5", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", - "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.5.0.tgz", + "integrity": "sha512-PgAsgIuizbZN/r4+g4UNvbVCTpJWdoIdI71kIWwKmdIH0vJ0q7ylMVGU8PWj2s9O98y4MtFWiDTIrtNukZMMgQ==", "license": "MIT", "dependencies": { "@tokenizer/token": "^0.3.0" @@ -14517,9 +15191,9 @@ } }, "node_modules/style-mod": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", - "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.4.tgz", + "integrity": "sha512-XXWIQt633/EpAFx8aZDOTjBzrCaGmhvEQlQo6MVPfa2OzO2cWo+4hV9h+6UkHYlXGfy+ODXKUdP7Pthmcu5ATw==", "license": "MIT", "peer": true }, @@ -14577,9 +15251,9 @@ "license": "MIT" }, "node_modules/tailwind-merge": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz", - "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.7.0.tgz", + "integrity": "sha512-XPPUyAc+cvspz3lHTcR/QgPfW2A0lv/xQNIjX3HGhLR+Nq2lHaLq5MtTesHn8GUr3W3DguT2KT5x3NVgRtYwmA==", "license": "MIT", "funding": { "type": "github", @@ -14623,9 +15297,9 @@ "license": "MIT" }, "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", "license": "MIT", "peer": true }, @@ -15262,9 +15936,9 @@ } }, "node_modules/uint8array-extras": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", - "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.6.0.tgz", + "integrity": "sha512-8iAasVS4wUx0gPLjH8Xtz2PeDzTSiy8QiLGu2DT3X5GU+egFEQhpnbtkehbAwjvDcxIERmCYcysiODFmE3Ud0Q==", "license": "MIT", "engines": { "node": ">=18" @@ -15274,18 +15948,18 @@ } }, "node_modules/unbash": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/unbash/-/unbash-4.0.11.tgz", - "integrity": "sha512-FoSOKV7NEofQSkAefMVHam4ZPKYMxjAydxiV72UFEDNV/YofxjGfiZ2A9pZjdL/lRJzTjcu4PABo1JYJX8N5iQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unbash/-/unbash-5.1.0.tgz", + "integrity": "sha512-YVGyy4XqoZ2AVgHjVdL9cchMSurlXFHWviORa8RiU/Bnol4ooW5Lpyur/5XmbgDdyCKxymmgsEQsLGBMIJ/Agg==", "license": "ISC", "engines": { "node": ">=14" } }, "node_modules/undici": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.2.tgz", - "integrity": "sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.11.2.tgz", + "integrity": "sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==", "license": "MIT", "engines": { "node": ">=22.19.0" @@ -15455,9 +16129,9 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.7.0.tgz", + "integrity": "sha512-6L+EeigHMQhdaIPNIFUKwfWJSwWFQ8gJbJ2DLOs5sDIegTwR9fRxvnM3uciHKjIZhFz+KAv2emhWMRvDmMcY8A==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -15548,9 +16222,9 @@ } }, "node_modules/vimeo-video-element": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/vimeo-video-element/-/vimeo-video-element-1.7.2.tgz", - "integrity": "sha512-7QM7fvSZvTTSq4igxBuO6Gc+0u3Exgk4IaLNixVzilCPzHEf7SN8b6YLXSM5QCs0ineTJI4XjiUCSoIbabHvwg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/vimeo-video-element/-/vimeo-video-element-1.7.4.tgz", + "integrity": "sha512-m6MCx9ljXw2AjCPvJfaE06AO1YU64aizlHzY8PpvsbQcqIwyX8bEv28VcboVnjCiKHvCuZ/IPY0+rumdBBMWLw==", "license": "MIT", "dependencies": { "@vimeo/player": "2.29.0", @@ -15633,9 +16307,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.22.0.tgz", + "integrity": "sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -15694,9 +16368,9 @@ } }, "node_modules/yjs": { - "version": "13.6.31", - "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.31.tgz", - "integrity": "sha512-Eq+5BRfbeGyqGVrTJL3bEcr8gKkxPuyuoHmAwpk52fDb8kOVMrfVSTRPd6yiGgX5Fskb96qCRjzjbRjrL4YEnw==", + "version": "13.6.33", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.33.tgz", + "integrity": "sha512-q/UYvr1gOk4XII+Cu1CW2dINjYqJJFifTzogEaIARznrvX7uOlHsdTEXcnOBMuIsrCGEEKdNxi74kyMLZlKVfw==", "license": "MIT", "peer": true, "dependencies": { @@ -15721,9 +16395,9 @@ } }, "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index 730d549f..a6c4d438 100644 --- a/package.json +++ b/package.json @@ -19,15 +19,21 @@ "lint": "npm run typecheck", "typecheck": "tsc --noEmit", "knip": "node --import tsx ./node_modules/knip/bin/knip.js", - "test": "node --import tsx --test tests/*.test.ts", + "test": "node --experimental-test-module-mocks --import tsx --test tests/*.test.ts tests/crater/*.test.ts tests/checkout/*.test.ts tests/checkout/*.test.tsx tests/licenses/*.test.ts tests/licenses/*.test.tsx tests/subscription/*.test.ts tests/subscription/*.test.tsx", + "test:crater": "node --experimental-test-module-mocks --import tsx --test tests/crater/*.test.ts", + "test:checkout": "node --experimental-test-module-mocks --import tsx --test tests/checkout/*.test.ts tests/checkout/*.test.tsx", + "test:licenses": "node --experimental-test-module-mocks --import tsx --test tests/licenses/*.test.ts tests/licenses/*.test.tsx", + "test:subscription": "node --experimental-test-module-mocks --import tsx --test tests/subscription/*.test.ts tests/subscription/*.test.tsx", "generate": "payload generate:types" }, "dependencies": { - "@base-ui/react": "^1.8.0", - "@c15t/nextjs": "^2.2.1", - "@c15t/react": "^2.2.1", - "@c15t/scripts": "^2.2.0", - "@code0-tech/pictor": "^0.18.3", + "@apollo/client": "^4.2.8", + "@base-ui/react": "^1.9.0", + "@c15t/nextjs": "^2.3.0", + "@c15t/react": "^2.3.0", + "@c15t/scripts": "^2.3.0", + "@code0-tech/crater-graphql-types": "0.0.0-experimental-3015062248-5df677e860f3f27494804dde4fd31e4f50f034ed", + "@code0-tech/pictor": "^1.0.0", "@icons-pack/react-simple-icons": "^13.15.1", "@mvriu5/payload-ai": "^1.6.4", "@mvriu5/payload-color-picker": "^1.0.2", @@ -35,50 +41,61 @@ "@mvriu5/payload-portable-plugin": "^0.8.5", "@number-flow/react": "^0.6.2", "@openrouter/ai-sdk-provider": "^3.1.0", - "@payloadcms/db-postgres": "3.88.0", - "@payloadcms/email-nodemailer": "3.88.0", - "@payloadcms/next": "3.88.0", - "@payloadcms/plugin-seo": "3.88.0", - "@payloadcms/richtext-lexical": "3.88.0", + "@payloadcms/db-postgres": "3.90.2", + "@payloadcms/email-nodemailer": "3.90.2", + "@payloadcms/next": "3.90.2", + "@payloadcms/plugin-seo": "3.90.2", + "@payloadcms/richtext-lexical": "3.90.2", + "@stripe/react-stripe-js": "^6.8.0", + "@stripe/stripe-js": "^9.13.0", "@tabler/icons-react": "3.41.1", "border-beam": "^1.4.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "graphql": "^16.14.2", - "knip": "^6.38.0", + "knip": "^6.41.0", "motion": "^12.43.0", - "next": "^16.3.6", + "next": "^16.4.0", "next-sitemap": "^4.2.3", + "nodemailer": "10.0.16", "ogl": "^1.0.11", - "payload": "3.88.0", + "payload": "3.90.2", "react": "^19.3.0", "react-dom": "^19.3.0", "react-player": "^3.4.0", - "sanitize-html": "^2.17.7", - "sass": "^1.105.0", - "sharp": "^0.35.4", - "shiki": "^4.4.3", - "tailwind-merge": "^3.6.0", + "rxjs": "^7.8.2", + "sanitize-html": "^2.18.0", + "sass": "^1.105.1", + "sharp": "^0.35.5", + "shiki": "^4.5.0", + "sonner": "^2.0.8", + "stripe": "^22.4.0", + "tailwind-merge": "^3.7.0", "web-haptics": "^0.0.6" }, "devDependencies": { - "@ai-sdk/mistral": "^4.0.52", + "@ai-sdk/mistral": "^4.0.62", "@swc-node/register": "^1.12.1", "@tailwindcss/postcss": "^4.3.3", - "@types/node": "^25.9.8", + "@testing-library/react": "^16.3.2", + "@testing-library/user-event": "^14.6.1", + "@types/node": "^25.9.9", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", - "@types/sanitize-html": "^2.16.1", - "postcss": "^8.5.28", + "@types/sanitize-html": "^2.16.2", + "happy-dom": "^20.10.6", + "postcss": "^8.5.29", "prettier": "^3.9.9", "tailwindcss": "^4.3.3", "tsx": "^4.23.15", "typescript": "^6.0.3" }, "knip": { + "entry": [ + "tests/**/*.test.{ts,tsx}" + ], "ignoreFiles": [ - "next-sitemap.config.cjs", - "src/payload-schema.snapshot" + "next-sitemap.config.cjs" ], "ignoreDependencies": [ "@swc-node/register", @@ -88,14 +105,26 @@ }, "overrides": { "postcss": "$postcss", + "sharp": "$sharp", + "fast-uri": "3.1.4", + "valibot": "1.4.2", "uuid": "14.0.2", - "nodemailer": "9.1.1", + "nodemailer": "10.0.16", "lodash": "4.18.1", "dompurify": "3.4.16", - "undici": "8.10.2", + "undici": "8.11.2", "yaml": "2.9.1", "@esbuild-kit/core-utils": { - "esbuild": "0.28.1" + "esbuild": "0.28.2" } + }, + "allowScripts": { + "@parcel/watcher@2.5.6": true, + "@swc/core@1.15.43": true, + "esbuild@0.25.12": true, + "esbuild@0.28.1": true, + "esbuild@0.28.2": true, + "sharp@0.35.3": true, + "sharp@0.35.5": true } } diff --git a/public/sitemap.xml b/public/sitemap.xml index e370351a..e43d929c 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -27,4 +27,4 @@ http://localhost:3000/de/privacy2026-09-03T10:57:14.840Zweekly0.7 http://localhost:3000/de/subscription2026-09-03T10:57:14.840Zweekly0.7 http://localhost:3000/de/terms2026-09-03T10:57:14.840Zweekly0.7 - \ No newline at end of file + diff --git a/src/app/(landing)/[locale]/[...rest]/page.tsx b/src/app/(landing)/[locale]/(main)/[...rest]/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/[...rest]/page.tsx rename to src/app/(landing)/[locale]/(main)/[...rest]/page.tsx diff --git a/src/app/(landing)/[locale]/about-us/page.tsx b/src/app/(landing)/[locale]/(main)/about-us/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/about-us/page.tsx rename to src/app/(landing)/[locale]/(main)/about-us/page.tsx diff --git a/src/app/(landing)/[locale]/actions/[slug]/page.tsx b/src/app/(landing)/[locale]/(main)/actions/[slug]/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/actions/[slug]/page.tsx rename to src/app/(landing)/[locale]/(main)/actions/[slug]/page.tsx diff --git a/src/app/(landing)/[locale]/actions/page.tsx b/src/app/(landing)/[locale]/(main)/actions/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/actions/page.tsx rename to src/app/(landing)/[locale]/(main)/actions/page.tsx diff --git a/src/app/(landing)/[locale]/blog/[slug]/loading.tsx b/src/app/(landing)/[locale]/(main)/blog/[slug]/loading.tsx similarity index 100% rename from src/app/(landing)/[locale]/blog/[slug]/loading.tsx rename to src/app/(landing)/[locale]/(main)/blog/[slug]/loading.tsx diff --git a/src/app/(landing)/[locale]/blog/[slug]/page.tsx b/src/app/(landing)/[locale]/(main)/blog/[slug]/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/blog/[slug]/page.tsx rename to src/app/(landing)/[locale]/(main)/blog/[slug]/page.tsx diff --git a/src/app/(landing)/[locale]/blog/page.tsx b/src/app/(landing)/[locale]/(main)/blog/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/blog/page.tsx rename to src/app/(landing)/[locale]/(main)/blog/page.tsx diff --git a/src/app/(landing)/[locale]/community-edition/page.tsx b/src/app/(landing)/[locale]/(main)/community-edition/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/community-edition/page.tsx rename to src/app/(landing)/[locale]/(main)/community-edition/page.tsx diff --git a/src/app/(landing)/[locale]/contact/page.tsx b/src/app/(landing)/[locale]/(main)/contact/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/contact/page.tsx rename to src/app/(landing)/[locale]/(main)/contact/page.tsx diff --git a/src/app/(landing)/[locale]/enterprise-edition/page.tsx b/src/app/(landing)/[locale]/(main)/enterprise-edition/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/enterprise-edition/page.tsx rename to src/app/(landing)/[locale]/(main)/enterprise-edition/page.tsx diff --git a/src/app/(landing)/[locale]/features/page.tsx b/src/app/(landing)/[locale]/(main)/features/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/features/page.tsx rename to src/app/(landing)/[locale]/(main)/features/page.tsx diff --git a/src/app/(landing)/[locale]/jobs/[slug]/page.tsx b/src/app/(landing)/[locale]/(main)/jobs/[slug]/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/jobs/[slug]/page.tsx rename to src/app/(landing)/[locale]/(main)/jobs/[slug]/page.tsx diff --git a/src/app/(landing)/[locale]/jobs/page.tsx b/src/app/(landing)/[locale]/(main)/jobs/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/jobs/page.tsx rename to src/app/(landing)/[locale]/(main)/jobs/page.tsx diff --git a/src/app/(landing)/[locale]/(main)/layout.tsx b/src/app/(landing)/[locale]/(main)/layout.tsx new file mode 100644 index 00000000..b33eaf3f --- /dev/null +++ b/src/app/(landing)/[locale]/(main)/layout.tsx @@ -0,0 +1,39 @@ +import ConsentManager from "@/components/providers/ConsentManager" +import { Navigation } from "@/components/navigation/Navigation" +import { FooterSection } from "@/components/sections/FooterSection" +import { getFooter } from "@/lib/cms" +import { getNavigation } from "@/lib/cms" +import { isSupportedLocale } from "@/lib/i18n" +import type { ReactNode } from "react" +import { notFound } from "next/navigation" + +interface LocaleLayoutProps { + children: ReactNode + params: Promise<{ locale: string }> +} + +export const revalidate = 300 + +export default async function LocaleLayout({ children, params }: LocaleLayoutProps) { + const { locale } = await params + if (!isSupportedLocale(locale)) { + notFound() + } + + const [navigation, footer] = await Promise.all([getNavigation(locale), getFooter(locale)]) + const items = navigation?.items?.items ?? [] + const buttons = navigation?.buttons?.buttons ?? [] + const currentYear = new Date().getUTCFullYear() + + return ( + +
+ +
+ {children} +
+ +
+
+ ) +} diff --git a/src/app/(landing)/[locale]/legal-notice/page.tsx b/src/app/(landing)/[locale]/(main)/legal-notice/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/legal-notice/page.tsx rename to src/app/(landing)/[locale]/(main)/legal-notice/page.tsx diff --git a/src/app/(landing)/[locale]/page.tsx b/src/app/(landing)/[locale]/(main)/page.tsx similarity index 100% rename from src/app/(landing)/[locale]/page.tsx rename to src/app/(landing)/[locale]/(main)/page.tsx diff --git a/src/app/(landing)/[locale]/pricing/page.tsx b/src/app/(landing)/[locale]/(main)/pricing/page.tsx similarity index 52% rename from src/app/(landing)/[locale]/pricing/page.tsx rename to src/app/(landing)/[locale]/(main)/pricing/page.tsx index f39dd190..2a9747b7 100644 --- a/src/app/(landing)/[locale]/pricing/page.tsx +++ b/src/app/(landing)/[locale]/(main)/pricing/page.tsx @@ -1,18 +1,20 @@ import { PageBlocks } from "@/components/ui/PageBlockRenderer" import { LandingContainer } from "@/components/ui/LandingContainer" import { createLandingMetadata, getPageLocale, type LocalePageParams } from "@/lib/appRoute" -import { getLandingPage, getSubscriptionConfig } from "@/lib/cms" +import { getGlobal, getLandingPage } from "@/lib/cms" +import { getCraterSubscriptionPrices } from "@/lib/subscription/prices.server" +import { getCraterCheckoutPackages } from "@/lib/subscription/checkoutPackages.server" export const generateMetadata = createLandingMetadata("pricing") export default async function PricingPage({ params }: { params: LocalePageParams }) { const locale = await getPageLocale(params) - const [page, subscriptionConfig] = await Promise.all([getLandingPage("pricing", locale), getSubscriptionConfig(locale)]) + const [page, subscriptionConfig, subscriptionPrices, checkoutPackages] = await Promise.all([getLandingPage("pricing", locale), getGlobal("subscriptionConfig", locale), getCraterSubscriptionPrices(), getCraterCheckoutPackages()]) return (