Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

# [3.93.0](https://github.com/vtex/faststore/compare/v3.92.0...v3.93.0) (2025-11-04)

### Features

- RTL ([#3098](https://github.com/vtex/faststore/issues/3098)) ([63c7fa4](https://github.com/vtex/faststore/commit/63c7fa4fe1cb2e6e8bfa5d5a0812845c3bd835c5))
# [3.93.0-dev.2](https://github.com/vtex/faststore/compare/v3.93.0-dev.1...v3.93.0-dev.2) (2025-11-07)

### Bug Fixes
Expand Down Expand Up @@ -182,13 +187,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline

### Bug Fixes

- update contract URL to remove 'pvt' prefix in OrganizationDrawer… ([#3039](https://github.com/vtex/faststore/issues/3039)) ([6e73b8e](https://github.com/vtex/faststore/commit/6e73b8e024ff66b90dc3ba48dfd53a81a582851b))
- update contract URL to remove 'pvt' prefix in OrganizationDrawer… ([#3039](https://github.com/vtex/faststore/issues/3039)) ([6e73b8e](https://github.com/vtex/faststore/commit/6e73b8e024ff66b90dc3ba48dfd53a81a582851b))

## [3.86.1](https://github.com/vtex/faststore/compare/v3.86.0...v3.86.1) (2025-09-16)

### Bug Fixes

- conditionally set href for contract link in OrganizationDrawerHe… ([#3038](https://github.com/vtex/faststore/issues/3038)) ([b076715](https://github.com/vtex/faststore/commit/b076715dafea3173a69e1fc9ef1844f8e4d5e973))
- conditionally set href for contract link in OrganizationDrawerHe… ([#3038](https://github.com/vtex/faststore/issues/3038)) ([b076715](https://github.com/vtex/faststore/commit/b076715dafea3173a69e1fc9ef1844f8e4d5e973))

# [3.86.0](https://github.com/vtex/faststore/compare/v3.85.0...v3.86.0) (2025-09-15)

Expand Down Expand Up @@ -402,7 +407,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline

### Bug Fixes

- removing unwanted facets on product shelf to prevent duplication… ([#2970](https://github.com/vtex/faststore/issues/2970)) ([6ba3ca0](https://github.com/vtex/faststore/commit/6ba3ca06ecee058bc93ef9fa784a585f0a8c6563))
- removing unwanted facets on product shelf to prevent duplication… ([#2970](https://github.com/vtex/faststore/issues/2970)) ([6ba3ca0](https://github.com/vtex/faststore/commit/6ba3ca06ecee058bc93ef9fa784a585f0a8c6563))

# [3.69.0](https://github.com/vtex/faststore/compare/v3.68.2...v3.69.0) (2025-07-31)

Expand Down
5 changes: 5 additions & 0 deletions packages/api/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

# [3.93.0](https://github.com/vtex/faststore/compare/v3.92.0...v3.93.0) (2025-11-04)

### Features

- RTL ([#3098](https://github.com/vtex/faststore/issues/3098)) ([63c7fa4](https://github.com/vtex/faststore/commit/63c7fa4fe1cb2e6e8bfa5d5a0812845c3bd835c5))
# 3.93.0-dev.1 (2025-11-06)

**Note:** Version bump only for package @faststore/api
Expand Down
2 changes: 2 additions & 0 deletions packages/api/src/__generated__/schema.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export interface ProductSearchResult {
fuzzy: string
correction?: Correction
redirect?: string
searchId?: string
}

interface Correction {
Expand Down
5 changes: 5 additions & 0 deletions packages/api/src/platforms/vtex/resolvers/searchResult.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,9 @@ export const StoreSearchResult: Record<string, Resolver<Root>> = {
fuzzy: productSearchResult.fuzzy,
}
},
searchId: async ({ productSearchPromise }) => {
const productSearchResult = await productSearchPromise

return productSearchResult.searchId
},
}
4 changes: 4 additions & 0 deletions packages/api/src/typeDefs/query.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,10 @@ type StoreSearchResult {
Search result metadata. Additional data can be used to send analytics events.
"""
metadata: SearchMetadata
"""
Search result searchId. Unique identifier for the search query can be used to correlate search analytics events.
"""
searchId: String!
}

input IGeoCoordinates {
Expand Down
5 changes: 5 additions & 0 deletions packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

# [3.93.0](https://github.com/vtex/faststore/compare/v3.92.0...v3.93.0) (2025-11-04)

### Features

- RTL ([#3098](https://github.com/vtex/faststore/issues/3098)) ([63c7fa4](https://github.com/vtex/faststore/commit/63c7fa4fe1cb2e6e8bfa5d5a0812845c3bd835c5))
# [3.93.0-dev.2](https://github.com/vtex/faststore/compare/v3.93.0-dev.1...v3.93.0-dev.2) (2025-11-07)

**Note:** Version bump only for package @faststore/cli
Expand Down
16 changes: 8 additions & 8 deletions packages/cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ USAGE

## `faststore build [ACCOUNT] [PATH]`

```
```plain
USAGE
$ faststore build [ACCOUNT] [PATH] [--no-verify]

Expand All @@ -69,7 +69,7 @@ _See code: [dist/commands/build.js](https://github.com/vtex/faststore/blob/v3.93

## `faststore cms-sync [PATH]`

```
```plain
USAGE
$ faststore cms-sync [PATH] [-d]

Expand All @@ -86,7 +86,7 @@ _See code: [dist/commands/cms-sync.js](https://github.com/vtex/faststore/blob/v3

Creates a discovery folder based on the starter.store template.

```
```plain
USAGE
$ faststore create [PATH]

Expand All @@ -104,7 +104,7 @@ _See code: [dist/commands/create.js](https://github.com/vtex/faststore/blob/v3.9

## `faststore dev [ACCOUNT] [PATH] [PORT]`

```
```plain
USAGE
$ faststore dev [ACCOUNT] [PATH] [PORT] [--watch-plugins]

Expand All @@ -121,7 +121,7 @@ _See code: [dist/commands/dev.js](https://github.com/vtex/faststore/blob/v3.93.0

## `faststore generate-graphql [PATH]`

```
```plain
USAGE
$ faststore generate-graphql [PATH]

Expand All @@ -135,7 +135,7 @@ _See code: [dist/commands/generate-graphql.js](https://github.com/vtex/faststore

Display help for faststore.

```
```plain
USAGE
$ faststore help [COMMAND] [-n]

Expand All @@ -153,7 +153,7 @@ _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.1.2

## `faststore start [ACCOUNT] [PATH] [PORT]`

```
```plain
USAGE
$ faststore start [ACCOUNT] [PATH] [PORT]

Expand All @@ -167,7 +167,7 @@ _See code: [dist/commands/start.js](https://github.com/vtex/faststore/blob/v3.93

## `faststore test [PATH]`

```
```plain
USAGE
$ faststore test [PATH]

Expand Down
5 changes: 5 additions & 0 deletions packages/components/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

# [3.93.0](https://github.com/vtex/faststore/compare/v3.92.0...v3.93.0) (2025-11-04)

### Features

- RTL ([#3098](https://github.com/vtex/faststore/issues/3098)) ([63c7fa4](https://github.com/vtex/faststore/commit/63c7fa4fe1cb2e6e8bfa5d5a0812845c3bd835c5))
# 3.93.0-dev.1 (2025-11-06)

**Note:** Version bump only for package @faststore/components
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import React, { forwardRef } from 'react'

import { Link, type LinkElementType, type LinkProps } from '../..'

export interface SearchProductItemProps extends HTMLAttributes<HTMLDivElement> {
export interface SearchProductItemProps extends HTMLAttributes<HTMLLIElement> {
/**
* ID to find this component in testing tools (e.g.: cypress,
* testing-library, and jest).
Expand All @@ -17,11 +17,16 @@ export interface SearchProductItemProps extends HTMLAttributes<HTMLDivElement> {

const SearchProductItem = forwardRef<HTMLLIElement, SearchProductItemProps>(
function ProductItem(
{ testId = 'fs-search-product-item', linkProps, children },
{ testId = 'fs-search-product-item', linkProps, children, ...otherProps },
ref
) {
return (
<li ref={ref} data-fs-search-product-item data-testid={testId}>
<li
ref={ref}
data-fs-search-product-item
data-testid={testId}
{...otherProps}
>
<Link {...linkProps} data-fs-search-product-item-link variant="display">
{children}
</Link>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ export interface SearchProviderContextValue {
* Callback function when a search term is selected.
*/
onSearchSelection?: (term: string, path: string) => void
/**
* Search result searchId.
*/
searchId?: string
}

export const SearchContext = createContext<SearchProviderContextValue | null>(
Expand All @@ -36,10 +40,11 @@ function SearchProvider({
terms,
products,
isLoading,
searchId,
}: PropsWithChildren<SearchProviderContextValue>) {
return (
<SearchContext.Provider
value={{ onSearchSelection, term, terms, products, isLoading }}
value={{ onSearchSelection, term, terms, products, isLoading, searchId }}
>
{children}
</SearchContext.Provider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ export type SearchInputProps = {
* The current status of the Search Dropdown.
*/
visibleDropdown: boolean
/**
* Search result searchId.
*/
searchId?: string
} & HTMLAttributes<HTMLDivElement> &
SearchProviderContextValue

Expand All @@ -28,6 +32,7 @@ const SearchInput = forwardRef<HTMLDivElement, SearchInputProps>(
term,
terms,
onSearchSelection,
searchId,
...otherProps
},
ref
Expand All @@ -46,6 +51,7 @@ const SearchInput = forwardRef<HTMLDivElement, SearchInputProps>(
term={term}
products={products}
terms={terms}
searchId={searchId}
>
{children}
</SearchProvider>
Expand Down
20 changes: 14 additions & 6 deletions packages/core/@generated/gql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,17 +72,19 @@ const documents = {
types.ClientProductCountQueryDocument,
'\n query ClientAllVariantProductsQuery($locator: [IStoreSelectedFacet!]!) {\n product(locator: $locator) {\n ...ProductSKUMatrixSidebarFragment_product\n }\n }\n':
types.ClientAllVariantProductsQueryDocument,
'\n query ClientManyProductsQuery(\n $first: Int!\n $after: String\n $sort: StoreSort!\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]!\n $sponsoredCount: Int\n ) {\n ...ClientManyProducts\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n sponsoredCount: $sponsoredCount\n ) {\n products {\n pageInfo {\n totalCount\n }\n edges {\n node {\n ...ProductSummary_product\n }\n }\n }\n }\n }\n':
types.ClientManyProductsQueryDocument,
'\n query ClientManyProductsQueryWithSearchId(\n $first: Int!\n $after: String\n $sort: StoreSort!\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]!\n $sponsoredCount: Int\n ) {\n ...ClientManyProducts\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n sponsoredCount: $sponsoredCount\n ) {\n products {\n pageInfo {\n totalCount\n }\n edges {\n node {\n ...ProductSummary_product\n }\n }\n }\n searchId\n }\n }\n':
types.ClientManyProductsQueryWithSearchIdDocument,
'\n query ClientProductGalleryQuery(\n $first: Int!\n $after: String!\n $sort: StoreSort!\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]!\n ) {\n ...ClientProductGallery\n redirect(term: $term, selectedFacets: $selectedFacets) {\n url\n }\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n ) {\n products {\n pageInfo {\n totalCount\n }\n }\n facets {\n ...Filter_facets\n }\n metadata {\n ...SearchEvent_metadata\n }\n }\n }\n\n fragment SearchEvent_metadata on SearchMetadata {\n isTermMisspelled\n logicalOperator\n fuzzy\n }\n':
types.ClientProductGalleryQueryDocument,
'\n query ClientProductQuery($locator: [IStoreSelectedFacet!]!) {\n ...ClientProduct\n product(locator: $locator) {\n ...ProductDetailsFragment_product\n }\n }\n':
types.ClientProductQueryDocument,
'\n query ClientManyProductsQuery(\n $first: Int!\n $after: String\n $sort: StoreSort!\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]!\n $sponsoredCount: Int\n ) {\n ...ClientManyProducts\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n sponsoredCount: $sponsoredCount\n ) {\n products {\n pageInfo {\n totalCount\n }\n edges {\n node {\n ...ProductSummary_product\n }\n }\n }\n }\n }\n':
types.ClientManyProductsQueryDocument,
'\n query ClientManyProductsSelectedQuery(\n $productIds: [String!]!\n ) {\n products(productIds: $productIds) {\n ...ProductComparisonFragment_product\n }\n }\n':
types.ClientManyProductsSelectedQueryDocument,
'\n query ClientProfileQuery($id: String!) {\n profile(id: $id) {\n addresses {\n country\n postalCode\n geoCoordinate\n city\n }\n }\n }\n':
types.ClientProfileQueryDocument,
'\n query ClientSearchSuggestionsQuery(\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]\n ) {\n ...ClientSearchSuggestions\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n products {\n ...ProductSummary_product\n }\n }\n products {\n pageInfo {\n totalCount\n }\n }\n metadata {\n ...SearchEvent_metadata\n }\n }\n }\n':
'\n query ClientSearchSuggestionsQuery(\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]\n ) {\n ...ClientSearchSuggestions\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n products {\n ...ProductSummary_product\n }\n }\n products {\n pageInfo {\n totalCount\n }\n }\n metadata {\n ...SearchEvent_metadata\n }\n searchId\n }\n }\n':
types.ClientSearchSuggestionsQueryDocument,
'\n query ClientTopSearchSuggestionsQuery(\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]\n ) {\n ...ClientTopSearchSuggestions\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n }\n }\n }\n':
types.ClientTopSearchSuggestionsQueryDocument,
Expand Down Expand Up @@ -278,8 +280,8 @@ export function gql(
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function gql(
source: '\n query ClientManyProductsQuery(\n $first: Int!\n $after: String\n $sort: StoreSort!\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]!\n $sponsoredCount: Int\n ) {\n ...ClientManyProducts\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n sponsoredCount: $sponsoredCount\n ) {\n products {\n pageInfo {\n totalCount\n }\n edges {\n node {\n ...ProductSummary_product\n }\n }\n }\n }\n }\n'
): typeof import('./graphql').ClientManyProductsQueryDocument
source: '\n query ClientManyProductsQueryWithSearchId(\n $first: Int!\n $after: String\n $sort: StoreSort!\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]!\n $sponsoredCount: Int\n ) {\n ...ClientManyProducts\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n sponsoredCount: $sponsoredCount\n ) {\n products {\n pageInfo {\n totalCount\n }\n edges {\n node {\n ...ProductSummary_product\n }\n }\n }\n searchId\n }\n }\n'
): typeof import('./graphql').ClientManyProductsQueryWithSearchIdDocument
/**
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
Expand All @@ -292,6 +294,12 @@ export function gql(
export function gql(
source: '\n query ClientProductQuery($locator: [IStoreSelectedFacet!]!) {\n ...ClientProduct\n product(locator: $locator) {\n ...ProductDetailsFragment_product\n }\n }\n'
): typeof import('./graphql').ClientProductQueryDocument
/**
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function gql(
source: '\n query ClientManyProductsQuery(\n $first: Int!\n $after: String\n $sort: StoreSort!\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]!\n $sponsoredCount: Int\n ) {\n ...ClientManyProducts\n search(\n first: $first\n after: $after\n sort: $sort\n term: $term\n selectedFacets: $selectedFacets\n sponsoredCount: $sponsoredCount\n ) {\n products {\n pageInfo {\n totalCount\n }\n edges {\n node {\n ...ProductSummary_product\n }\n }\n }\n }\n }\n'
): typeof import('./graphql').ClientManyProductsQueryDocument
/**
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
Expand All @@ -308,7 +316,7 @@ export function gql(
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function gql(
source: '\n query ClientSearchSuggestionsQuery(\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]\n ) {\n ...ClientSearchSuggestions\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n products {\n ...ProductSummary_product\n }\n }\n products {\n pageInfo {\n totalCount\n }\n }\n metadata {\n ...SearchEvent_metadata\n }\n }\n }\n'
source: '\n query ClientSearchSuggestionsQuery(\n $term: String!\n $selectedFacets: [IStoreSelectedFacet!]\n ) {\n ...ClientSearchSuggestions\n search(first: 5, term: $term, selectedFacets: $selectedFacets) {\n suggestions {\n terms {\n value\n }\n products {\n ...ProductSummary_product\n }\n }\n products {\n pageInfo {\n totalCount\n }\n }\n metadata {\n ...SearchEvent_metadata\n }\n searchId\n }\n }\n'
): typeof import('./graphql').ClientSearchSuggestionsQueryDocument
/**
* The gql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
Expand Down
Loading
Loading