Commit Graph

9288 Commits

Author SHA1 Message Date
Nicolas Gorga
32eaa9dd81 fix(medusa): avoid throwing on error on set step failure endpoint (#14066)
* Avoid throwing on setStepFailure endpoint

* Add changeset

* Add tests
2025-11-23 07:04:39 -03:00
Adrien de Peretti
beb91d88a2 chore(): Update glob package (#14083)
* chore(): Update glob package

* Create fresh-needles-wave.md
2025-11-19 21:53:32 +01:00
Nathan John
929607f692 fix(fulfillment) Variants changed from managed inventory to unmanaged are now fulfillable (#14056)
* (fix) Variants changed from managed inventory to unmanaged are now fulfillable

* Changeset

* Update dull-donkeys-ring.md
2025-11-19 17:01:36 +01:00
Angel Leonardo Banderas Larios
3a1ed74839 feat(payment-stripe): OXXO payment provider support with configurable expiration (#13805)
## Summary

**What** — What changes are introduced in this PR?

This pull request adds support for OXXO payments to the Stripe payment provider module. The main changes include the addition of a new `OxxoProviderService`, updates to type definitions to support OXXO-specific options, and integration of the new service into the provider's exports and registration.

**Why** — Why are these changes relevant or necessary?  
I was testing the MedusaJs server, I live in México and here oxxo as a Payment method is very used.


**How** — How have these changes been implemented?

* Introduced `OxxoProviderService` in `stripe-oxxo.ts`, which extends `StripeBase` and configures Stripe payment intents for OXXO, including expiration settings.
* Updated `StripeOptions` and `PaymentIntentOptions` types to include `oxxoExpiresDays` and OXXO-specific payment method options for intent configuration.
* Added `OXXO` to the `PaymentProviderKeys` enum for provider identification.

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

You need to launch the medusa server, add Stripe OXXO as Payment Provider in your Store Region (OXXO only works in México and with mxn currency) and set payment_method_data type to oxxo.

Also you need to allow oxxo payment as payment method in stripe and configure your stripe webhook to your medusa server

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage using nextjs starter

const confirmParams: any = {
      return_url: returnUrl,
    }

    if (isOxxo(providerId)) {
      confirmParams.payment_method_data = {
        type: "oxxo",
        billing_details: {
          name:
            cart.billing_address?.first_name +
            " " +
            cart.billing_address?.last_name,
          address: {
            city: cart.billing_address?.city ?? undefined,
            country: cart.billing_address?.country_code ?? undefined,
            line1: cart.billing_address?.address_1 ?? undefined,
            line2: cart.billing_address?.address_2 ?? undefined,
            postal_code: cart.billing_address?.postal_code ?? undefined,
            state: cart.billing_address?.province ?? undefined,
          },
          email: cart.email,
          phone: cart.billing_address?.phone ?? undefined,
        },
      }

      await stripe
        .confirmPayment({
          clientSecret,
          confirmParams,
          redirect: "if_required",
        })
        .then(({ error, paymentIntent }) => {
          console.log({ error, paymentIntent })
          const validateIntent = async (paymentIntent: any) => {
            const link =
              paymentIntent.next_action?.oxxo_display_details
                ?.hosted_voucher_url
            if (link) {
              setSubmitting(false)
              setMessage(
                "Se ha generado un cupón de pago de OXXO. Por favor, revisa la nueva pestaña abierta."
              )
              await onPaymentCompleted() // Here I call the function because I have custom logic for creating a pending order
            }
          }

          if (error) {
            const pi = error.payment_intent

            if (
              (pi && pi.status === "requires_capture") ||
              (pi && pi.status === "succeeded")
            ) {
              onPaymentCompleted()
            }

            if (pi && pi.status === "requires_action") {
              validateIntent(pi)
              return
            }

            setErrorMessage(error.message || null)
            setSubmitting(false)
            return
          }

          if (
            (paymentIntent && paymentIntent.status === "requires_capture") ||
            (paymentIntent && paymentIntent.status === "succeeded")
          ) {
            return onPaymentCompleted()
          }

          if (paymentIntent && paymentIntent.status === "requires_action") {
            validateIntent(paymentIntent) // This is the action that you normally get
          }
        })
    }
}


// Configuration on the server  (medusa-config.ts)
modules: [
    {
      resolve: "@medusajs/medusa/payment",
      options: {
        providers: [
          {
            resolve: "@medusa/payment-stripe",
            id: "stripe",
            options: {
              apiKey: process.env.STRIPE_API_KEY,
              webhookSecret: process.env.STRIPE_WEBHOOK_SECRET,
              capture: true,
              oxxoExpiresDays: 7, // default to 3
            },
          },
        ],
      },
    },
  ],

// And not necessary buy you can extend even more creating a pending-orders module (for showing the vouchers created that costumer need to pay in the frontend, because if not the order only creates after the user have payed the voucher, for testing is 3 minutes), this is an example model:

import { model } from "@medusajs/framework/utils";

export const PendingOrder = model.define("pending_order", {
  id: model.id().primaryKey(),
  cart_id: model.text().unique(),
  user_id: model.text(),
  total: model.number(),
  payment_type: model.text(),
  voucher_url: model.text().nullable(),
  payment_session_id: model.text(), // this are the ones that works to identify the payment
  payment_collection_id: model.text(), // this are the ones that works to identify the payment
});
export default PendingOrder;

```

---

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [x] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [x ] I have linked the related issue(s) if applicable

---

## Additional Context

#13804 


---

> [!NOTE]
> Adds OXXO payment support to the Stripe provider with configurable expiration days and updates intent option handling and typings.
> 
> - **Payment Providers**:
>   - **New `OxxoProviderService`** (`services/stripe-oxxo.ts`): configures `payment_intent` for OXXO with `expires_after_days` (defaults to `3`, configurable via `options.oxxoExpiresDays`).
>   - Registered in `src/index.ts` and exported from `services/index.ts`.
> - **Types**:
>   - `StripeOptions` adds `oxxoExpiresDays`.
>   - `PaymentIntentOptions` adds `payment_method_options.oxxo.expires_after_days`.
>   - `PaymentProviderKeys` adds `OXXO`.
> - **Core**:
>   - `core/stripe-base.ts`: `normalizePaymentIntentParameters` now falls back to `this.paymentIntentOptions.payment_method_options` when not provided in `extra`.
> - **Changeset**:
>   - Patch release for `@medusajs/payment-stripe`.
> 
> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 4d7fe0658b91e6948f011a73d77a6281c85cdd26. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>


Co-authored-by: William Bouchard <46496014+willbouch@users.noreply.github.com>
2025-11-18 16:21:44 +00:00
Adrien de Peretti
62d103b44f fix(payment): Double idempotent capture called with auto capture beha… (#14073)
* fix(payment): Double idempotent capture called with auto capture behaviour

* Create sweet-peaches-dress.md

* naming

* feedback

* naming
2025-11-18 10:50:50 +01:00
Adrien de Peretti
6746fecd72 chore(order): custom display id (#14024)
* chore(order): Accept a custom display generator option

* chore(order): Accept a custom display generator option

* wip

* wip

* finalize

* Create tricky-olives-battle.md

* fields

* changeset

* update integration tests

* update migrations

* fix changeset
2025-11-18 10:17:46 +01:00
Nicolas Gorga
0a0c2f41d8 fix(core-flows): avoid overriding customer and region from setPricingContext hook result (#14022)
## Summary

Updated context passed for each variant when calculating prices so that `region` and `customer` coming from `setPricingContext` are not overriden if provided.

*Please provide answer here*

Otherwise you can't provide your own `region` and `customer` objects with additional information and you are left with the ones we pass as part of the cart object to the workflows that execute the hook.

*Please provide answer here*

Changed the order in which we define the default `region` and `cart` fields, taking their value from the cart, to before the destructured `setPricingContextResult`.

*Please provide answer here*

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

*Please provide answer here*

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [x] I have linked the related issue(s) if applicable

---

## Additional Context

fixes #13990 
closes SUP-2647


---

> [!NOTE]
> Adjust pricing context merge order so `setPricingContext`-provided `customer` and `region` are not overridden when calculating variant prices.
> 
> - **Core Flows (pricing)**:
>   - In `packages/core/core-flows/src/cart/workflows/get-variants-and-items-with-prices.ts`, change merge order when building `baseContext` so `customer` and `region` from `setPricingContextResult` take precedence over cart-derived values when pricing variants.
> - **Changeset**:
>   - Add patch changeset for `@medusajs/core-flows`.
> 
> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 010da7340909016692bea183d022dd0585abdb5a. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>
2025-11-17 18:59:24 +00:00
Frane Polić
f2f3a8e1e1 fix(dashboard): reference global vite bin from scripts (#14049) 2025-11-17 19:53:06 +01:00
juanzgc
ef15868ca8 feat(promotion): Add metadata column to promotion (#13999)
* feat(promotion): Add metadata column to promotion

Add metadata column to the promotion model.

Closes CORE-1276

* Add changeset

---------

Co-authored-by: Frane Polić <16856471+fPolic@users.noreply.github.com>
2025-11-17 19:50:57 +01:00
Adrien de Peretti
1ea932a56f fix(): Identify step that should require a save on checkpoint (#14037)
* fix(): Identify step that force save checkpoint

* Create sour-peas-provide.md
2025-11-17 12:47:57 +01:00
Shahed Nasser
4e1c474dfa docs: emails in cloud (#14040)
* docs: emails in cloud

* add notes to user guides

* small updates

* small change

* fix link

* addressed feedback
2025-11-17 10:54:01 +02:00
Shahed Nasser
2c61a413dc docs: add redis prerequisite for Caching Module (#14051)
* docs: add redis prerequisite for Caching Module

* fix vale error
2025-11-17 09:16:42 +02:00
Shahed Nasser
76fd6d1438 docs: fix required properties marked as optional in OAS with allOf schemas (#14062) 2025-11-14 16:45:48 +02:00
Shahed Nasser
20892aee87 docs: add a copy button to AI assistant answers (#14052) 2025-11-14 16:03:00 +02:00
Dhanush Reddy
178b1e2b47 fix some typos (#14017)
Co-authored-by: William Bouchard <46496014+willbouch@users.noreply.github.com>
2025-11-14 15:54:28 +02:00
Adrien de Peretti
c2c3ad5ba5 chore(): Upgrade vit to non vulnerable one (#14042)
* chore(): Upgrade vit to non vulnerable one

* Create eight-dogs-allow.md

* remove unused global

* remove unused global

* remove unused global
2025-11-13 09:18:58 +01:00
Adrien de Peretti
657a16c462 chore(): Remove lodash.set entirely (#14041)
* chore(): Remove lodash.set entirely

* Create dull-balloons-sneeze.md

* chore(): Remove lodash.set entirely

* chore(): Remove lodash.set entirely
2025-11-13 09:18:43 +01:00
khai-pi
b49a4451f0 docs: fix Node.js version text in installation page (#14015)
* Fix Node.js version text in installation page

Node.js version 20 is more stabler than v20+.
Issue found in Node.js version v25.1.0
https://github.com/medusajs/medusa/issues/14011

* Update www/apps/book/app/learn/installation/page.mdx

Co-authored-by: Shahed Nasser <shahednasser@gmail.com>

---------

Co-authored-by: Shahed Nasser <shahednasser@gmail.com>
2025-11-13 09:19:22 +02:00
juanzgc
e75e67f27d fix(draft-order): Update copy phone number (#14044)
## Summary

**What** — What changes are introduced in this PR?

Copying the phone number would previously copy the email. Implements a fix to instead copy the expected phone number.

**Why** — Why are these changes relevant or necessary?  

Implement the expected functionality

**How** — How have these changes been implemented?

Update the content of the `<Copy ... />` component.

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

Manual testing was performed 
---

## Checklist

Please ensure the following before requesting a review:

- [ ] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [ ] I have verified the code works as intended locally
- [ ] I have linked the related issue(s) if applicable

---

## Additional Context

CLOSES CORE-1282
2025-11-12 17:32:55 +00:00
Adrien de Peretti
e59cdae336 fix(): Proper schema usage when running migrations (#14036)
* fix(): Proper schema usage when running migrations

* Create thick-pugs-dance.md
2025-11-12 15:56:50 +01:00
Nicolas Gorga
da4c0110ba fix(medusa): preprocess version as number in AdminGetOrdersOrderParams validator (#13996)
* Add preprocess to version param to validate as number

* Add changeset
2025-11-12 11:40:54 -03:00
Nicolas Gorga
4bbf0d2367 fix(dashboard): use order version 1 for the initial node of activity timeline (#13997)
* Add preprocess to version param to validate as number

* Add changeset

* Use the first version of the order as the starting node of activity to show correct total

* Add changeset

* Fetch first order version only if it's not the current version

* Remove conditionally rendered hook, use enable config
2025-11-12 11:11:47 -03:00
Shahed Nasser
efed4d7346 docs: mobile app guide with react native and expo (#13982)
* docs: mobile app guide with react native and expo

* fix vale error
2025-11-12 12:48:52 +02:00
Shahed Nasser
66d4ba105e docs: generate OAS for 2.11.3 (#13973) 2025-11-12 09:24:54 +02:00
Shahed Nasser
a85778679e fix(product, types): add missing types for variant images and thumbnails (#14026)
## Summary

**What** — What changes are introduced in this PR?

- Add missing `images` field of variants to the HTTP types
- Add missing `thumbnail` field to product variant schema, which leads to the thumbnail missing from auto generated types

**Why** — Why are these changes relevant or necessary?  

*Please provide answer here*

**How** — How have these changes been implemented?

*Please provide answer here*

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

*Please provide answer here*

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [ ] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [ ] I have verified the code works as intended locally
- [ ] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.
2025-11-11 15:25:39 +00:00
Oli Juhl
c93f77d1b2 chore: Configure auth on JS-SDK in dashboard (#14013)
* chore: Use env vars rather than configs

* Create wicked-turkeys-sell.md
2025-11-11 11:15:58 +01:00
Nicolas Gorga
2b6c39535f feat(dashboard): include product material in product general section (#14021)
## Summary

**What** — What changes are introduced in this PR?

Include `material` field in the product detail summary UI section, to match the structure of the same edit UI, which includes the field.

**Why** — Why are these changes relevant or necessary?  

Without this there is no UI to see the current value of the `material` field/

**How** — How have these changes been implemented?

Added a section row including the `material` field in the product detail summary section.

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

Verified the field shos up as expected in the admin dashboard.

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [x] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.

fixes #14019 
closes SUP-2686
2025-11-10 14:20:02 +00:00
Adrien de Peretti
7e3eb6e413 chore: cleanup/improve bootstrap (#14023)
* chore: cleanup/improve bootstrap

* chore: cleanup/improve bootstrap

* Create few-guests-visit.md
2025-11-10 14:35:20 +01:00
Bastien
213c344804 feat(admin): add custom admin route ranking feature (#13946)
*  Add custom admin routes ranking

* 🐛 Fix sorting

* 📝 Update admin ui-routes documentation

*  Add admin menu items spec

* 🔧 Add changeset

* 🐛 Remove redundant undefined initializations

* 🔥 🔥 Move the documentation to a separate PR

* ♻️ Move sorting logic to utils

* 🔧 Update changeset

---------

Co-authored-by: Bastien MONTOIS <bqst@bqst-hqckintosh.home>
2025-11-07 13:59:40 -05:00
Shahed Nasser
aae92d5447 chore(medusa): fix query http type parameter for get claim route (#13974)
## Summary

**What** — What changes are introduced in this PR?

Use correct HTTP type parameter for the get claim API route

**Why** — Why are these changes relevant or necessary?  

*Please provide answer here*

**How** — How have these changes been implemented?

*Please provide answer here*

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

*Please provide answer here*

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [ ] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [ ] I have verified the code works as intended locally
- [ ] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.
2025-11-07 13:08:26 +00:00
Govind
5499cd2749 fix(core-flows): payment error handling (#13876)
* fix: payment error handling

* Create dirty-radios-kiss.md

* fix: updated to use isMedusaError

* fix: error message updated and error type corrected

---------

Co-authored-by: William Bouchard <46496014+willbouch@users.noreply.github.com>
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
2025-11-07 07:57:44 -05:00
Shahed Nasser
dc6f253d31 docs: add JSON-LD schemas to docs (#14007) 2025-11-07 14:43:50 +02:00
Shahed Nasser
c9648cc9cc docs: added kapa logo + link to mcp server (#14005) 2025-11-07 13:05:25 +02:00
Shahed Nasser
3e9af09ccb docs: add missing middlewares in category images guide (#14001) 2025-11-07 12:03:12 +02:00
Shahed Nasser
9576ef3763 docs-utils: fix type error in react-docs-generator (#14002) 2025-11-07 12:02:56 +02:00
Nicolas Gorga
6b4f2c1d32 feat(medusa): allow users deletion (#13960)
## Summary

**What** — What changes are introduced in this PR?

Allow users to delete other users and prevent them from deleting themselves.

**Why** — Why are these changes relevant or necessary?  

Inability to delete other users causes old users that maybe don't work anymore with the business to have access still.

**How** — How have these changes been implemented?

Inverted the check in the admin delete user endpoint, to allow users deleting other users but themselves.

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

Integration tests

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [x] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [x] The changes are covered by relevant **tests**
- [x] I have verified the code works as intended locally
- [x] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.

closes OPS-97


---

> [!NOTE]
> Enables deleting other users via admin DELETE endpoint while blocking self-deletion, with corresponding integration tests and changeset.
> 
> - **Backend**
>   - Update `DELETE /admin/users/:id` in `packages/medusa/src/api/admin/users/[id]/route.ts`:
>     - Disallow self-deletion when `actor_id === id` with `NOT_ALLOWED` error.
>     - Execute `removeUserAccountWorkflow` and return standard delete response.
> - **Tests**
>   - Expand `integration-tests/http/__tests__/user/admin/user.spec.ts`:
>     - Create a second admin user; delete it and verify auth identity `app_metadata` no longer includes `user_id`.
>     - Confirm token still authenticates but access is revoked (401 on `/admin/users/me`).
>     - Assert self-deletion returns 400 with message `"A user cannot delete itself"`.
> - **Changeset**
>   - Add `.changeset/dull-plants-create.md` (patch for `@medusajs/medusa`).
> 
> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit f1f8252b91593b8a8fb03dc9d26460d09a10cfaa. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>
2025-11-07 09:24:04 +00:00
Nicolas Gorga
6898ca758c fix(dashboard): update orders page filters to match interface expected by old DataTable component (#13994)
* Use correct filter interface for old data table component

* Add changeset
2025-11-07 10:16:21 +01:00
Adrien de Peretti
9fdc00350a fix(): Lock process payment to prevent ingesting payment processing t… (#13977)
* fix(): Lock process payment to prevent ingesting payment processing twice

* Create brave-lamps-beg.md

* fix(): Lock process payment to prevent ingesting payment processing twice

* fix changeset

* resolve conflicts

---------

Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
2025-11-07 10:14:56 +01:00
William Bouchard
a9d33bc8d1 fix(core-flows,types): change doc for upload file functions (#13809)
* fix(core-flows,types): change doc for upload file functions

* Create silent-seas-hammer.md

* comment

* comment
2025-11-07 10:12:57 +01:00
Shahed Nasser
6cd40c9f74 docs: fix broken links in OAS (#14000) 2025-11-07 10:48:37 +02:00
juanzgc
5a96bb7da4 feat(dashboard): Improve error messages during file upload (#13991)
* feat(dashboard): Update error message for large files

Update error message for uploads of files that exceed their limit

Related https://github.com/medusajs/medusa/pull/13981

* Added changeset
2025-11-06 14:41:07 -05:00
Shahed Nasser
01a5ce949e docs: fix command bar position outside modal in category images guide (#13987) 2025-11-06 19:19:43 +02:00
juanzgc
e42e6f0daa fix(dashboard): Limit file uploads to 1MB (#13981)
## Summary

**What** — What changes are introduced in this PR?

Limit file uploads to 1MB

**Why** — Why are these changes relevant or necessary?  

Prevent large file uploads in the Admin 

**How** — How have these changes been implemented?

Set size limits on the file uploads

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

---

## Checklist

Please ensure the following before requesting a review:

- [ ] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ ] The changes are covered by relevant **tests**
- [ ] I have verified the code works as intended locally
- [ ] I have linked the related issue(s) if applicable

---

## Additional Context

CLOSES CORE-1270


---

> [!NOTE]
> Adds a 1MB default file size limit to `FileUpload`, surfaces size/type rejections in media forms via new i18n, and allows unlimited size for product import.
> 
> - **Components**:
>   - `components/common/file-upload/file-upload.tsx`:
>     - Add `maxFileSize` (default 1MB) and size validation; return `rejectedFiles` alongside valid files.
> - **Products › Media Upload**:
>   - `upload-media-form-item.tsx`:
>     - Handle `rejectedFiles` and set form errors for invalid type and oversized files.
> - **Products › Import**:
>   - `upload-import.tsx`: Use `maxFileSize={Infinity}` to disable size limit for CSV import.
> - **i18n**:
>   - Schema and EN translations: add `products.media.fileTooLarge` message.
> 
> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit c8c67f4d329f8767e99694649bf0b3fe4cf400e9. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>
2025-11-06 14:57:24 +00:00
William Bouchard
3ca1e1df33 fix(dashboard): fix import for ptPT locale (#13986)
* fix(dashboard): fix import for ptPT locale

* Create small-mugs-walk.md
2025-11-06 14:09:23 +01:00
Leonardo Benini
a5c6f6b1fb fix(core-flows): update SendNotificationsStepInput (#13979) 2025-11-06 07:45:03 -05:00
Leonardo Benini
3852efbcff feat(admin-*,dashboard): i18n labels for menu item extensions (#13843)
* i18n menu item labels

* changeset

* changeset
2025-11-06 07:42:32 -05:00
adrien2p
3095b63784 try improve snapshot action speed and fix changeset 2025-11-05 18:45:58 +01:00
adrien2p
b010c4be1a try improve snapshot action speed 2025-11-05 18:42:23 +01:00
adrien2p
fd68772d81 try improve snapshot action speed 2025-11-05 18:37:26 +01:00
ZeB4la
67744f4579 feat(dashboard): add pt-PT translation and register locale (#13935)
## Summary

**What** — What changes are introduced in this PR?

*Adds a new pt-PT translation file for the Medusa Admin Dashboard and registers the Portuguese (Portugal) locale in the i18n configuration.*

**Why** — Why are these changes relevant or necessary?  

*To provide full localization support for users in Portugal. The Admin currently includes a pt-BR translation, and this PR adds proper European Portuguese equivalents with consistent terminology and grammar.*

**How** — How have these changes been implemented?

*Created a new file ptPT.json following the same structure as en.json and ptBR.json.*

*Registered the "pt-PT" locale in the i18n resources and language selector.*

*Verified placeholder consistency ({{ }}, <0></0>, etc.) and kept all keys identical to the English source.*

**Testing** — How have these changes been tested, or how can the reviewer test the feature?

*Please provide answer here*

---

## Examples

Provide examples or code snippets that demonstrate how this feature works, or how it can be used in practice.  
This helps with documentation and ensures maintainers can quickly understand and verify the change.

```ts
// Example usage
```

---

## Checklist

Please ensure the following before requesting a review:

- [ ] I have added a **changeset** for this PR
    - Every non-breaking change should be marked as a **patch**
    - To add a changeset, run `yarn changeset` and follow the prompts
- [ x] The changes are covered by relevant **tests**
- [x ] I have verified the code works as intended locally
- [x ] I have linked the related issue(s) if applicable

---

## Additional Context

Add any additional context, related issues, or references that might help the reviewer understand this PR.


---

> [!NOTE]
> Adds European Portuguese (`ptPT`) translations and registers the locale in i18n resources and the language selector.
> 
> - **i18n**:
>   - Add `ptPT` translation file `packages/admin/dashboard/src/i18n/translations/ptPT.json`.
>   - Register `ptPT` in `packages/admin/dashboard/src/i18n/translations/index.ts` resources.
>   - Register `ptPT` in `packages/admin/dashboard/src/i18n/languages.ts` with `date-fns` locale and display name "Português (Portugal)".
> - **Changeset**:
>   - Add patch changeset for `@medusajs/dashboard`.
> 
> <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 4cf30255609fa33d0c0362858c35e094b97d68e1. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup>


Co-authored-by: William Bouchard <46496014+willbouch@users.noreply.github.com>
2025-11-05 16:52:54 +00:00