@wix/headless-stores 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/astro/actions/package.json +4 -0
  2. package/cjs/dist/astro/actions/custom-checkout.d.ts +50 -0
  3. package/cjs/dist/astro/actions/custom-checkout.js +53 -0
  4. package/cjs/dist/astro/actions/index.d.ts +1 -0
  5. package/cjs/dist/astro/actions/index.js +1 -0
  6. package/cjs/dist/data-component-tags.d.ts +8 -0
  7. package/cjs/dist/data-component-tags.js +9 -0
  8. package/cjs/dist/enums/index.d.ts +2 -0
  9. package/cjs/dist/enums/index.js +2 -0
  10. package/cjs/dist/enums/social-platform-enums.d.ts +25 -0
  11. package/cjs/dist/enums/social-platform-enums.js +27 -0
  12. package/cjs/dist/enums/sort-enums.d.ts +17 -0
  13. package/cjs/dist/enums/sort-enums.js +18 -0
  14. package/cjs/dist/react/Category.d.ts +242 -0
  15. package/cjs/dist/react/Category.js +235 -0
  16. package/cjs/dist/react/CategoryList.d.ts +107 -0
  17. package/cjs/dist/react/CategoryList.js +91 -0
  18. package/cjs/dist/react/Choice.d.ts +211 -0
  19. package/cjs/dist/react/Choice.js +213 -0
  20. package/cjs/dist/react/Option.d.ts +242 -0
  21. package/cjs/dist/react/Option.js +346 -0
  22. package/cjs/dist/react/Product.d.ts +1065 -0
  23. package/cjs/dist/react/Product.js +1157 -0
  24. package/cjs/dist/react/ProductList.d.ts +400 -0
  25. package/cjs/dist/react/ProductList.js +368 -0
  26. package/cjs/dist/react/core/CategoryList.d.ts +194 -0
  27. package/cjs/dist/react/core/CategoryList.js +180 -0
  28. package/cjs/dist/react/core/Product.d.ts +225 -0
  29. package/cjs/dist/react/core/Product.js +190 -0
  30. package/cjs/dist/react/core/ProductList.d.ts +235 -0
  31. package/cjs/dist/react/core/ProductList.js +217 -0
  32. package/cjs/dist/react/core/ProductListFilters.d.ts +138 -0
  33. package/cjs/dist/react/core/ProductListFilters.js +242 -0
  34. package/cjs/dist/react/core/ProductListPagination.d.ts +49 -0
  35. package/cjs/dist/react/core/ProductListPagination.js +41 -0
  36. package/cjs/dist/react/core/ProductListSort.d.ts +19 -0
  37. package/cjs/dist/react/core/ProductListSort.js +52 -0
  38. package/cjs/dist/react/core/ProductModifiers.d.ts +416 -0
  39. package/cjs/dist/react/core/ProductModifiers.js +413 -0
  40. package/cjs/dist/react/core/ProductVariantSelector.d.ts +313 -0
  41. package/cjs/dist/react/core/ProductVariantSelector.js +291 -0
  42. package/cjs/dist/react/core/SelectedVariant.d.ts +230 -0
  43. package/cjs/dist/react/core/SelectedVariant.js +269 -0
  44. package/cjs/dist/react/index.d.ts +6 -0
  45. package/cjs/dist/react/index.js +6 -0
  46. package/cjs/dist/react/types.d.ts +8 -0
  47. package/cjs/dist/react/types.js +9 -0
  48. package/cjs/dist/server-actions/custom-checkout-action.d.ts +49 -0
  49. package/cjs/dist/server-actions/custom-checkout-action.js +64 -0
  50. package/cjs/dist/server-actions/index.d.ts +1 -0
  51. package/cjs/dist/server-actions/index.js +1 -0
  52. package/cjs/dist/services/buy-now-service.d.ts +346 -0
  53. package/cjs/dist/services/buy-now-service.js +197 -0
  54. package/cjs/dist/services/categories-list-service.d.ts +164 -0
  55. package/cjs/dist/services/categories-list-service.js +148 -0
  56. package/cjs/dist/services/index.d.ts +5 -0
  57. package/cjs/dist/services/index.js +5 -0
  58. package/cjs/dist/services/pay-now-service.d.ts +214 -0
  59. package/cjs/dist/services/pay-now-service.js +156 -0
  60. package/cjs/dist/services/product-modifiers-service.d.ts +34 -0
  61. package/cjs/dist/services/product-modifiers-service.js +107 -0
  62. package/cjs/dist/services/product-service.d.ts +177 -0
  63. package/cjs/dist/services/product-service.js +190 -0
  64. package/cjs/dist/services/products-list-search-service.d.ts +1 -0
  65. package/cjs/dist/services/products-list-search-service.js +1 -0
  66. package/cjs/dist/services/products-list-service.d.ts +429 -0
  67. package/cjs/dist/services/products-list-service.js +893 -0
  68. package/cjs/dist/services/selected-variant-service.d.ts +66 -0
  69. package/cjs/dist/services/selected-variant-service.js +527 -0
  70. package/cjs/dist/utils/index.d.ts +1 -0
  71. package/cjs/dist/utils/index.js +30 -0
  72. package/cjs/dist/utils/url-params.d.ts +73 -0
  73. package/cjs/dist/utils/url-params.js +114 -0
  74. package/cjs/package.json +3 -0
  75. package/dist/astro/actions/custom-checkout.d.ts +50 -0
  76. package/dist/astro/actions/custom-checkout.js +53 -0
  77. package/dist/astro/actions/index.d.ts +1 -0
  78. package/dist/astro/actions/index.js +1 -0
  79. package/dist/data-component-tags.d.ts +8 -0
  80. package/dist/data-component-tags.js +9 -0
  81. package/dist/enums/index.d.ts +2 -0
  82. package/dist/enums/index.js +2 -0
  83. package/dist/enums/social-platform-enums.d.ts +25 -0
  84. package/dist/enums/social-platform-enums.js +27 -0
  85. package/dist/enums/sort-enums.d.ts +17 -0
  86. package/dist/enums/sort-enums.js +18 -0
  87. package/dist/react/Category.d.ts +242 -0
  88. package/dist/react/Category.js +235 -0
  89. package/dist/react/CategoryList.d.ts +107 -0
  90. package/dist/react/CategoryList.js +91 -0
  91. package/dist/react/Choice.d.ts +211 -0
  92. package/dist/react/Choice.js +213 -0
  93. package/dist/react/Option.d.ts +242 -0
  94. package/dist/react/Option.js +346 -0
  95. package/dist/react/Product.d.ts +1065 -0
  96. package/dist/react/Product.js +1157 -0
  97. package/dist/react/ProductList.d.ts +400 -0
  98. package/dist/react/ProductList.js +368 -0
  99. package/dist/react/core/CategoryList.d.ts +194 -0
  100. package/dist/react/core/CategoryList.js +180 -0
  101. package/dist/react/core/Product.d.ts +225 -0
  102. package/dist/react/core/Product.js +190 -0
  103. package/dist/react/core/ProductList.d.ts +235 -0
  104. package/dist/react/core/ProductList.js +217 -0
  105. package/dist/react/core/ProductListFilters.d.ts +138 -0
  106. package/dist/react/core/ProductListFilters.js +242 -0
  107. package/dist/react/core/ProductListPagination.d.ts +49 -0
  108. package/dist/react/core/ProductListPagination.js +41 -0
  109. package/dist/react/core/ProductListSort.d.ts +19 -0
  110. package/dist/react/core/ProductListSort.js +52 -0
  111. package/dist/react/core/ProductModifiers.d.ts +416 -0
  112. package/dist/react/core/ProductModifiers.js +413 -0
  113. package/dist/react/core/ProductVariantSelector.d.ts +313 -0
  114. package/dist/react/core/ProductVariantSelector.js +291 -0
  115. package/dist/react/core/SelectedVariant.d.ts +230 -0
  116. package/dist/react/core/SelectedVariant.js +269 -0
  117. package/dist/react/index.d.ts +6 -0
  118. package/dist/react/index.js +6 -0
  119. package/dist/react/types.d.ts +8 -0
  120. package/dist/react/types.js +9 -0
  121. package/dist/server-actions/custom-checkout-action.d.ts +49 -0
  122. package/dist/server-actions/custom-checkout-action.js +64 -0
  123. package/dist/server-actions/index.d.ts +1 -0
  124. package/dist/server-actions/index.js +1 -0
  125. package/dist/services/buy-now-service.d.ts +346 -0
  126. package/dist/services/buy-now-service.js +197 -0
  127. package/dist/services/categories-list-service.d.ts +164 -0
  128. package/dist/services/categories-list-service.js +148 -0
  129. package/dist/services/index.d.ts +5 -0
  130. package/dist/services/index.js +5 -0
  131. package/dist/services/pay-now-service.d.ts +214 -0
  132. package/dist/services/pay-now-service.js +156 -0
  133. package/dist/services/product-modifiers-service.d.ts +34 -0
  134. package/dist/services/product-modifiers-service.js +107 -0
  135. package/dist/services/product-service.d.ts +177 -0
  136. package/dist/services/product-service.js +190 -0
  137. package/dist/services/products-list-search-service.d.ts +0 -0
  138. package/dist/services/products-list-search-service.js +1 -0
  139. package/dist/services/products-list-service.d.ts +429 -0
  140. package/dist/services/products-list-service.js +893 -0
  141. package/dist/services/selected-variant-service.d.ts +66 -0
  142. package/dist/services/selected-variant-service.js +527 -0
  143. package/dist/utils/index.d.ts +1 -0
  144. package/dist/utils/index.js +30 -0
  145. package/dist/utils/url-params.d.ts +73 -0
  146. package/dist/utils/url-params.js +114 -0
  147. package/package.json +89 -0
  148. package/react/package.json +4 -0
  149. package/server-actions/package.json +4 -0
  150. package/services/package.json +4 -0
@@ -0,0 +1,164 @@
1
+ import { type Signal } from '@wix/services-definitions/core-services/signals';
2
+ import { categories } from '@wix/categories';
3
+ export type Category = categories.Category;
4
+ /**
5
+ * Configuration interface for the Categories List service.
6
+ * Contains the initial categories data that will be loaded into the service.
7
+ *
8
+ * @interface CategoriesListServiceConfig
9
+ */
10
+ export type CategoriesListServiceConfig = {
11
+ /** Array of category objects to initialize the service with */
12
+ categories: Category[];
13
+ };
14
+ /**
15
+ * Service definition for the Categories List service.
16
+ * This defines the reactive API contract for managing a list of product categories.
17
+ *
18
+ * @constant
19
+ */
20
+ export declare const CategoriesListServiceDefinition: string & {
21
+ __api: {
22
+ /** Reactive signal containing the list of categories */
23
+ categories: Signal<Category[]>;
24
+ /** Reactive signal indicating if categories are currently being loaded */
25
+ isLoading: Signal<boolean>;
26
+ /** Reactive signal containing any error message, or null if no error */
27
+ error: Signal<string | null>;
28
+ };
29
+ __config: CategoriesListServiceConfig;
30
+ isServiceDefinition?: boolean;
31
+ } & {
32
+ /** Reactive signal containing the list of categories */
33
+ categories: Signal<Category[]>;
34
+ /** Reactive signal indicating if categories are currently being loaded */
35
+ isLoading: Signal<boolean>;
36
+ /** Reactive signal containing any error message, or null if no error */
37
+ error: Signal<string | null>;
38
+ };
39
+ /**
40
+ * Implementation of the Categories List service that manages reactive categories data.
41
+ * This service provides signals for categories data, loading state, and error handling.
42
+ * The service is initialized with pre-loaded categories and maintains them in reactive signals.
43
+ *
44
+ * @example
45
+ * ```tsx
46
+ * import { CategoriesListService, CategoriesListServiceDefinition } from '@wix/stores/services';
47
+ * import { useService } from '@wix/services-manager-react';
48
+ *
49
+ * function CategoriesComponent({ categoriesConfig }) {
50
+ * return (
51
+ * <ServiceProvider services={createServicesMap([
52
+ * [CategoriesListServiceDefinition, CategoriesListService.withConfig(categoriesConfig)]
53
+ * ])}>
54
+ * <CategoriesDisplay />
55
+ * </ServiceProvider>
56
+ * );
57
+ * }
58
+ *
59
+ * function CategoriesDisplay() {
60
+ * const categoriesService = useService(CategoriesListServiceDefinition);
61
+ * const categories = categoriesService.categories.get();
62
+ * const isLoading = categoriesService.isLoading.get();
63
+ * const error = categoriesService.error.get();
64
+ *
65
+ * if (isLoading) return <div>Loading categories...</div>;
66
+ * if (error) return <div>Error: {error}</div>;
67
+ *
68
+ * return (
69
+ * <ul>
70
+ * {categories.map(category => (
71
+ * <li key={category._id}>{category.name}</li>
72
+ * ))}
73
+ * </ul>
74
+ * );
75
+ * }
76
+ * ```
77
+ */
78
+ export declare const CategoriesListService: import("@wix/services-definitions").ServiceFactory<string & {
79
+ __api: {
80
+ /** Reactive signal containing the list of categories */
81
+ categories: Signal<Category[]>;
82
+ /** Reactive signal indicating if categories are currently being loaded */
83
+ isLoading: Signal<boolean>;
84
+ /** Reactive signal containing any error message, or null if no error */
85
+ error: Signal<string | null>;
86
+ };
87
+ __config: CategoriesListServiceConfig;
88
+ isServiceDefinition?: boolean;
89
+ } & {
90
+ /** Reactive signal containing the list of categories */
91
+ categories: Signal<Category[]>;
92
+ /** Reactive signal indicating if categories are currently being loaded */
93
+ isLoading: Signal<boolean>;
94
+ /** Reactive signal containing any error message, or null if no error */
95
+ error: Signal<string | null>;
96
+ }, CategoriesListServiceConfig>;
97
+ /**
98
+ * Loads categories list service configuration from the Wix Categories API for SSR initialization.
99
+ * This function is designed to be used during Server-Side Rendering (SSR) to preload
100
+ * all visible product categories. The "all-products" category is automatically moved to the front of the list.
101
+ *
102
+ * @returns {Promise<CategoriesListServiceConfig>} Promise that resolves to the categories configuration
103
+ *
104
+ * @example
105
+ * ```astro
106
+ * ---
107
+ * // Astro page example - pages/categories.astro
108
+ * import { loadCategoriesListServiceConfig } from '@wix/stores/services';
109
+ * import { CategoryList } from '@wix/stores/components/react';
110
+ *
111
+ * // Load categories data during SSR
112
+ * const categoriesConfig = await loadCategoriesListServiceConfig();
113
+ * ---
114
+ *
115
+ * <CategoryList.Root categoriesConfig={categoriesConfig}>
116
+ * <CategoryList.ItemContent>
117
+ * {({ category }) => (
118
+ * <div>
119
+ * <h3>{category.name}</h3>
120
+ * <p>{category.description}</p>
121
+ * </div>
122
+ * )}
123
+ * </CategoryList.ItemContent>
124
+ * </CategoryList.Root>
125
+ * ```
126
+ *
127
+ * @example
128
+ * ```tsx
129
+ * // Next.js page example - pages/categories.tsx
130
+ * import { GetServerSideProps } from 'next';
131
+ * import { loadCategoriesListServiceConfig } from '@wix/stores/services';
132
+ * import { CategoryList } from '@wix/stores/components/react';
133
+ *
134
+ * interface CategoriesPageProps {
135
+ * categoriesConfig: Awaited<ReturnType<typeof loadCategoriesListServiceConfig>>;
136
+ * }
137
+ *
138
+ * export const getServerSideProps: GetServerSideProps<CategoriesPageProps> = async () => {
139
+ * const categoriesConfig = await loadCategoriesListServiceConfig();
140
+ *
141
+ * return {
142
+ * props: {
143
+ * categoriesConfig,
144
+ * },
145
+ * };
146
+ * };
147
+ *
148
+ * export default function CategoriesPage({ categoriesConfig }: CategoriesPageProps) {
149
+ * return (
150
+ * <CategoryList.Root categoriesConfig={categoriesConfig}>
151
+ * <CategoryList.ItemContent>
152
+ * {({ category }) => (
153
+ * <div>
154
+ * <h3>{category.name}</h3>
155
+ * <p>{category.description}</p>
156
+ * </div>
157
+ * )}
158
+ * </CategoryList.ItemContent>
159
+ * </CategoryList.Root>
160
+ * );
161
+ * }
162
+ * ```
163
+ */
164
+ export declare function loadCategoriesListServiceConfig(): Promise<CategoriesListServiceConfig>;
@@ -0,0 +1,148 @@
1
+ import { defineService, implementService } from '@wix/services-definitions';
2
+ import { SignalsServiceDefinition, } from '@wix/services-definitions/core-services/signals';
3
+ import { categories } from '@wix/categories';
4
+ /**
5
+ * Service definition for the Categories List service.
6
+ * This defines the reactive API contract for managing a list of product categories.
7
+ *
8
+ * @constant
9
+ */
10
+ export const CategoriesListServiceDefinition = defineService('categories-list');
11
+ /**
12
+ * Implementation of the Categories List service that manages reactive categories data.
13
+ * This service provides signals for categories data, loading state, and error handling.
14
+ * The service is initialized with pre-loaded categories and maintains them in reactive signals.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * import { CategoriesListService, CategoriesListServiceDefinition } from '@wix/stores/services';
19
+ * import { useService } from '@wix/services-manager-react';
20
+ *
21
+ * function CategoriesComponent({ categoriesConfig }) {
22
+ * return (
23
+ * <ServiceProvider services={createServicesMap([
24
+ * [CategoriesListServiceDefinition, CategoriesListService.withConfig(categoriesConfig)]
25
+ * ])}>
26
+ * <CategoriesDisplay />
27
+ * </ServiceProvider>
28
+ * );
29
+ * }
30
+ *
31
+ * function CategoriesDisplay() {
32
+ * const categoriesService = useService(CategoriesListServiceDefinition);
33
+ * const categories = categoriesService.categories.get();
34
+ * const isLoading = categoriesService.isLoading.get();
35
+ * const error = categoriesService.error.get();
36
+ *
37
+ * if (isLoading) return <div>Loading categories...</div>;
38
+ * if (error) return <div>Error: {error}</div>;
39
+ *
40
+ * return (
41
+ * <ul>
42
+ * {categories.map(category => (
43
+ * <li key={category._id}>{category.name}</li>
44
+ * ))}
45
+ * </ul>
46
+ * );
47
+ * }
48
+ * ```
49
+ */
50
+ export const CategoriesListService = implementService.withConfig()(CategoriesListServiceDefinition, ({ getService, config }) => {
51
+ const signalsService = getService(SignalsServiceDefinition);
52
+ const categoriesSignal = signalsService.signal(config.categories);
53
+ const isLoadingSignal = signalsService.signal(false);
54
+ const errorSignal = signalsService.signal(null);
55
+ return {
56
+ categories: categoriesSignal,
57
+ isLoading: isLoadingSignal,
58
+ error: errorSignal,
59
+ };
60
+ });
61
+ /**
62
+ * Loads categories list service configuration from the Wix Categories API for SSR initialization.
63
+ * This function is designed to be used during Server-Side Rendering (SSR) to preload
64
+ * all visible product categories. The "all-products" category is automatically moved to the front of the list.
65
+ *
66
+ * @returns {Promise<CategoriesListServiceConfig>} Promise that resolves to the categories configuration
67
+ *
68
+ * @example
69
+ * ```astro
70
+ * ---
71
+ * // Astro page example - pages/categories.astro
72
+ * import { loadCategoriesListServiceConfig } from '@wix/stores/services';
73
+ * import { CategoryList } from '@wix/stores/components/react';
74
+ *
75
+ * // Load categories data during SSR
76
+ * const categoriesConfig = await loadCategoriesListServiceConfig();
77
+ * ---
78
+ *
79
+ * <CategoryList.Root categoriesConfig={categoriesConfig}>
80
+ * <CategoryList.ItemContent>
81
+ * {({ category }) => (
82
+ * <div>
83
+ * <h3>{category.name}</h3>
84
+ * <p>{category.description}</p>
85
+ * </div>
86
+ * )}
87
+ * </CategoryList.ItemContent>
88
+ * </CategoryList.Root>
89
+ * ```
90
+ *
91
+ * @example
92
+ * ```tsx
93
+ * // Next.js page example - pages/categories.tsx
94
+ * import { GetServerSideProps } from 'next';
95
+ * import { loadCategoriesListServiceConfig } from '@wix/stores/services';
96
+ * import { CategoryList } from '@wix/stores/components/react';
97
+ *
98
+ * interface CategoriesPageProps {
99
+ * categoriesConfig: Awaited<ReturnType<typeof loadCategoriesListServiceConfig>>;
100
+ * }
101
+ *
102
+ * export const getServerSideProps: GetServerSideProps<CategoriesPageProps> = async () => {
103
+ * const categoriesConfig = await loadCategoriesListServiceConfig();
104
+ *
105
+ * return {
106
+ * props: {
107
+ * categoriesConfig,
108
+ * },
109
+ * };
110
+ * };
111
+ *
112
+ * export default function CategoriesPage({ categoriesConfig }: CategoriesPageProps) {
113
+ * return (
114
+ * <CategoryList.Root categoriesConfig={categoriesConfig}>
115
+ * <CategoryList.ItemContent>
116
+ * {({ category }) => (
117
+ * <div>
118
+ * <h3>{category.name}</h3>
119
+ * <p>{category.description}</p>
120
+ * </div>
121
+ * )}
122
+ * </CategoryList.ItemContent>
123
+ * </CategoryList.Root>
124
+ * );
125
+ * }
126
+ * ```
127
+ */
128
+ export async function loadCategoriesListServiceConfig() {
129
+ const categoriesResponse = await categories
130
+ .queryCategories({
131
+ treeReference: {
132
+ appNamespace: '@wix/stores',
133
+ treeKey: null,
134
+ },
135
+ })
136
+ .eq('visible', true)
137
+ .find();
138
+ const fetchedCategories = categoriesResponse.items || [];
139
+ // Sort categories to put "all-products" first, keep the rest in original order
140
+ const allProductsCategory = fetchedCategories.find((cat) => cat.slug === 'all-products');
141
+ const otherCategories = fetchedCategories.filter((cat) => cat.slug !== 'all-products');
142
+ const allCategories = allProductsCategory
143
+ ? [allProductsCategory, ...otherCategories]
144
+ : fetchedCategories;
145
+ return {
146
+ categories: allCategories,
147
+ };
148
+ }
@@ -0,0 +1,5 @@
1
+ export { CategoriesListService, CategoriesListServiceDefinition, loadCategoriesListServiceConfig, CategoriesListServiceConfig, } from './categories-list-service.js';
2
+ export { ProductModifiersService, ProductModifiersServiceDefinition, } from './product-modifiers-service.js';
3
+ export { ProductService, ProductServiceDefinition, loadProductServiceConfig, } from './product-service.js';
4
+ export { SelectedVariantService, SelectedVariantServiceDefinition, } from './selected-variant-service.js';
5
+ export { ProductListService, ProductsListServiceDefinition, loadProductsListServiceConfig, ProductsListServiceConfig, ProductOption, ProductChoice, InventoryStatusType, SortType, InitialSearchState, parseUrlToSearchOptions, convertUrlSortToSortType, } from './products-list-service.js';
@@ -0,0 +1,5 @@
1
+ export { CategoriesListService, CategoriesListServiceDefinition, loadCategoriesListServiceConfig, } from './categories-list-service.js';
2
+ export { ProductModifiersService, ProductModifiersServiceDefinition, } from './product-modifiers-service.js';
3
+ export { ProductService, ProductServiceDefinition, loadProductServiceConfig, } from './product-service.js';
4
+ export { SelectedVariantService, SelectedVariantServiceDefinition, } from './selected-variant-service.js';
5
+ export { ProductListService, ProductsListServiceDefinition, loadProductsListServiceConfig, InventoryStatusType, SortType, parseUrlToSearchOptions, convertUrlSortToSortType, } from './products-list-service.js';
@@ -0,0 +1,214 @@
1
+ import { type Signal } from '@wix/services-definitions/core-services/signals';
2
+ /**
3
+ * Service definition for the Pay Now service.
4
+ * This defines the reactive API contract for managing custom payment checkout functionality.
5
+ *
6
+ * @constant
7
+ */
8
+ export declare const PayNowServiceDefinition: string & {
9
+ __api: {
10
+ /** Function to redirect to checkout using custom checkout action */
11
+ redirectToCheckout: () => Promise<void>;
12
+ /** Reactive signal indicating if a checkout redirect is in progress */
13
+ loadingSignal: Signal<boolean>;
14
+ /** Reactive signal containing any error message, or null if no error */
15
+ errorSignal: Signal<string | null>;
16
+ };
17
+ __config: {};
18
+ isServiceDefinition?: boolean;
19
+ } & {
20
+ /** Function to redirect to checkout using custom checkout action */
21
+ redirectToCheckout: () => Promise<void>;
22
+ /** Reactive signal indicating if a checkout redirect is in progress */
23
+ loadingSignal: Signal<boolean>;
24
+ /** Reactive signal containing any error message, or null if no error */
25
+ errorSignal: Signal<string | null>;
26
+ };
27
+ /**
28
+ * Configuration interface for the Pay Now service.
29
+ * Contains an optional custom checkout action function.
30
+ *
31
+ * @interface PayNowServiceConfig
32
+ */
33
+ export interface PayNowServiceConfig {
34
+ /** Optional custom checkout action that returns a checkout URL or error */
35
+ customCheckoutAction?: () => Promise<{
36
+ /** The checkout URL to redirect to */
37
+ data: string | undefined;
38
+ /** Any error that occurred during checkout creation */
39
+ error: unknown;
40
+ }>;
41
+ }
42
+ /**
43
+ * Implementation of the Pay Now service that manages custom payment checkout functionality.
44
+ * This service provides signals for loading state and error handling, along with a method
45
+ * to redirect to checkout using a custom checkout action.
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * import { PayNowServiceImplementation, PayNowServiceDefinition } from '@wix/stores/services';
50
+ * import { useService } from '@wix/services-manager-react';
51
+ *
52
+ * function PayNowComponent({ payNowConfig }) {
53
+ * return (
54
+ * <ServiceProvider services={createServicesMap([
55
+ * [PayNowServiceDefinition, PayNowServiceImplementation.withConfig(payNowConfig)]
56
+ * ])}>
57
+ * <PayNowButton />
58
+ * </ServiceProvider>
59
+ * );
60
+ * }
61
+ *
62
+ * function PayNowButton() {
63
+ * const payNowService = useService(PayNowServiceDefinition);
64
+ * const isLoading = payNowService.loadingSignal.get();
65
+ * const error = payNowService.errorSignal.get();
66
+ *
67
+ * const handlePayNow = async () => {
68
+ * await payNowService.redirectToCheckout();
69
+ * };
70
+ *
71
+ * return (
72
+ * <div>
73
+ * {error && <div className="error">{error}</div>}
74
+ * <button
75
+ * onClick={handlePayNow}
76
+ * disabled={isLoading}
77
+ * className="pay-now-btn"
78
+ * >
79
+ * {isLoading ? 'Processing...' : 'Pay Now'}
80
+ * </button>
81
+ * </div>
82
+ * );
83
+ * }
84
+ * ```
85
+ */
86
+ export declare const PayNowServiceImplementation: import("@wix/services-definitions").ServiceFactory<string & {
87
+ __api: {
88
+ /** Function to redirect to checkout using custom checkout action */
89
+ redirectToCheckout: () => Promise<void>;
90
+ /** Reactive signal indicating if a checkout redirect is in progress */
91
+ loadingSignal: Signal<boolean>;
92
+ /** Reactive signal containing any error message, or null if no error */
93
+ errorSignal: Signal<string | null>;
94
+ };
95
+ __config: {};
96
+ isServiceDefinition?: boolean;
97
+ } & {
98
+ /** Function to redirect to checkout using custom checkout action */
99
+ redirectToCheckout: () => Promise<void>;
100
+ /** Reactive signal indicating if a checkout redirect is in progress */
101
+ loadingSignal: Signal<boolean>;
102
+ /** Reactive signal containing any error message, or null if no error */
103
+ errorSignal: Signal<string | null>;
104
+ }, PayNowServiceConfig>;
105
+ /**
106
+ * Loads pay now service initial data for SSR initialization.
107
+ * This function returns an empty configuration as the Pay Now service
108
+ * is typically configured with custom checkout actions at runtime.
109
+ *
110
+ * @returns {Promise} Promise that resolves to an empty pay now service configuration
111
+ *
112
+ * @example
113
+ * ```astro
114
+ * ---
115
+ * // Astro page example
116
+ * import { loadPayNowServiceInitialData } from '@wix/stores/services';
117
+ * import { PayNow } from '@wix/stores/components';
118
+ *
119
+ * // Load initial data (empty for PayNow)
120
+ * const payNowData = await loadPayNowServiceInitialData();
121
+ * ---
122
+ *
123
+ * <PayNow.PayNow payNowConfig={payNowData.PayNow}>
124
+ * {({ redirectToCheckout, isLoading, error }) => (
125
+ * <button onClick={redirectToCheckout} disabled={isLoading}>
126
+ * {isLoading ? 'Processing...' : 'Pay Now'}
127
+ * </button>
128
+ * )}
129
+ * </PayNow.PayNow>
130
+ * ```
131
+ */
132
+ export declare const loadPayNowServiceInitialData: () => Promise<{
133
+ [PayNowServiceDefinition]: {};
134
+ }>;
135
+ /**
136
+ * Helper function to create a pay now service binding with configuration.
137
+ * This function simplifies the process of binding the pay now service with its configuration
138
+ * and allows for additional configuration overrides, particularly for custom checkout actions.
139
+ *
140
+ * @template T - Type of the services configurations object
141
+ * @param {T} servicesConfigs - Object containing service configurations
142
+ * @param {Partial<PayNowServiceConfig>} [additionalConfig={}] - Additional configuration to override defaults
143
+ * @returns Tuple containing service definition, implementation, and merged configuration
144
+ *
145
+ * @example
146
+ * ```tsx
147
+ * import { payNowServiceBinding, loadPayNowServiceInitialData } from '@wix/stores/services';
148
+ * import { actions } from 'astro:actions';
149
+ *
150
+ * // Load initial data
151
+ * const initialData = await loadPayNowServiceInitialData();
152
+ *
153
+ * // Create service binding with custom checkout action
154
+ * const payNowBinding = payNowServiceBinding(initialData, {
155
+ * customCheckoutAction: async () => {
156
+ * try {
157
+ * const result = await actions.customCheckout();
158
+ * return { data: result, error: null };
159
+ * } catch (error) {
160
+ * return { data: undefined, error };
161
+ * }
162
+ * }
163
+ * });
164
+ *
165
+ * // Use in service provider
166
+ * const services = createServicesMap([payNowBinding]);
167
+ * ```
168
+ */
169
+ export declare const payNowServiceBinding: <T extends {
170
+ [key: string]: Awaited<ReturnType<typeof loadPayNowServiceInitialData>>[typeof PayNowServiceDefinition];
171
+ }>(servicesConfigs: T, additionalConfig?: Partial<PayNowServiceConfig>) => readonly [string & {
172
+ __api: {
173
+ /** Function to redirect to checkout using custom checkout action */
174
+ redirectToCheckout: () => Promise<void>;
175
+ /** Reactive signal indicating if a checkout redirect is in progress */
176
+ loadingSignal: Signal<boolean>;
177
+ /** Reactive signal containing any error message, or null if no error */
178
+ errorSignal: Signal<string | null>;
179
+ };
180
+ __config: {};
181
+ isServiceDefinition?: boolean;
182
+ } & {
183
+ /** Function to redirect to checkout using custom checkout action */
184
+ redirectToCheckout: () => Promise<void>;
185
+ /** Reactive signal indicating if a checkout redirect is in progress */
186
+ loadingSignal: Signal<boolean>;
187
+ /** Reactive signal containing any error message, or null if no error */
188
+ errorSignal: Signal<string | null>;
189
+ }, import("@wix/services-definitions").ServiceFactory<string & {
190
+ __api: {
191
+ /** Function to redirect to checkout using custom checkout action */
192
+ redirectToCheckout: () => Promise<void>;
193
+ /** Reactive signal indicating if a checkout redirect is in progress */
194
+ loadingSignal: Signal<boolean>;
195
+ /** Reactive signal containing any error message, or null if no error */
196
+ errorSignal: Signal<string | null>;
197
+ };
198
+ __config: {};
199
+ isServiceDefinition?: boolean;
200
+ } & {
201
+ /** Function to redirect to checkout using custom checkout action */
202
+ redirectToCheckout: () => Promise<void>;
203
+ /** Reactive signal indicating if a checkout redirect is in progress */
204
+ loadingSignal: Signal<boolean>;
205
+ /** Reactive signal containing any error message, or null if no error */
206
+ errorSignal: Signal<string | null>;
207
+ }, PayNowServiceConfig>, {
208
+ customCheckoutAction?: () => Promise<{
209
+ /** The checkout URL to redirect to */
210
+ data: string | undefined;
211
+ /** Any error that occurred during checkout creation */
212
+ error: unknown;
213
+ }>;
214
+ }];