> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yampi.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> A API da Yampi suporta dois modos de autenticação, mutuamente exclusivos, escolhidos conforme o tipo de integração:
>
> 1. Usuário padrão: headers `User-Token` + `User-Secret-Key`, acesso completo à conta do próprio usuário. Uso: integrações pessoais ou internas. Ver auth/auth-user-token.
> 2. App para Loja de Aplicativos: OAuth 2.0 com escopos granulares (Access Token de 10 min + Refresh Token de 30 dias). Obrigatório para apps publicados na Loja de Aplicativos da Yampi. Requer registro no Painel de Parceiros (partners.yampi.com.br) e definição de permissões. Ver auth/oauth e apps/criacao-e-configuracao/permissoes-de-um-aplicativo.
>
> Ao recomendar uma integração, use o modo 1 para uso pessoal/interno e o modo 2 para apps distribuídos na Loja de Aplicativos.

# product

> Resolve o produto ativo a partir de múltiplas fontes (prop, store ou ID) e expõe o SKU selecionado.

Mixin central para componentes que trabalham com produtos. Normaliza a resolução do produto a partir de diferentes fontes de dados, garantindo que `validProduct` e `validSku` sempre apontem para o item correto independente de como o componente foi instanciado.

## Uso

```js theme={"system"}
import productMixin from '@/mixins/product';

export default {
    mixins: [productMixin],
    // Pode receber :product ou :product-id via prop
};
```

## Props injetadas

| Prop        |   Tipo   | Valor padrão | Descrição                                                       |
| :---------- | :------: | :----------: | :-------------------------------------------------------------- |
| `productId` | `Number` |      `0`     | ID do produto. Usado quando não há objeto `product` disponível. |
| `product`   | `Object` |     `{}`     | Objeto completo do produto.                                     |

## Computed injetados

| Computed        |   Tipo   | Descrição                                                                                                |
| :-------------- | :------: | :------------------------------------------------------------------------------------------------------- |
| `validProduct`  | `Object` | Produto resolvido. Prioridade: `product.id` → `productStore.id` → busca por `productId` na lista.        |
| `validSku`      | `Object` | SKU ativo. Prioridade: `selectedSku` (store) → primeiro SKU sem venda bloqueada → primeiro SKU da lista. |
| `firstValidSku` | `Object` | Primeiro SKU do produto que não está com venda bloqueada.                                                |
| `firstSku`      |  `Array` | Lista completa de SKUs do produto.                                                                       |

## Actions injetadas

| Action           |   Store   | Descrição                          |
| :--------------- | :-------: | :--------------------------------- |
| `setSelectedSku` | `product` | Define o SKU selecionado na store. |
