@lookiero/checkout 9.8.4 → 9.9.0-beta.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 (129) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/pact.config.d.ts +21 -0
  3. package/dist/pact.config.js +16 -0
  4. package/dist/public/public/assets/adaptive-icon.png +0 -0
  5. package/dist/public/public/assets/favicon.png +0 -0
  6. package/dist/public/public/assets/icon.png +0 -0
  7. package/dist/public/public/assets/splash.png +0 -0
  8. package/dist/public/public/images/not-found.png +0 -0
  9. package/dist/src/ExpoRoot.js +6 -4
  10. package/dist/src/infrastructure/projection/bookedProductsVariants/httpBookedProductsVariantsForCheckoutItemView.pact.d.ts +1 -0
  11. package/dist/src/infrastructure/projection/bookedProductsVariants/httpBookedProductsVariantsForCheckoutItemView.pact.js +55 -0
  12. package/dist/src/infrastructure/projection/checkout/httpCheckoutByIdView.pact.d.ts +1 -0
  13. package/dist/src/infrastructure/projection/checkout/httpCheckoutByIdView.pact.js +116 -0
  14. package/dist/src/infrastructure/projection/checkout/httpFirstAvailableCheckoutByCustomerIdView.pact.d.ts +1 -0
  15. package/dist/src/infrastructure/projection/checkout/httpFirstAvailableCheckoutByCustomerIdView.pact.js +56 -0
  16. package/dist/src/infrastructure/projection/checkout/httpFiveItemsDiscountByCustomerIdView.pact.d.ts +1 -0
  17. package/dist/src/infrastructure/projection/checkout/httpFiveItemsDiscountByCustomerIdView.pact.js +51 -0
  18. package/dist/src/infrastructure/projection/checkout/httpIsCheckoutEnabledByCustomerIdView.pact.d.ts +1 -0
  19. package/dist/src/infrastructure/projection/checkout/httpIsCheckoutEnabledByCustomerIdView.pact.js +51 -0
  20. package/dist/src/infrastructure/projection/checkout/httpIsSizeChangeEnabledByCheckoutIdView.pact.d.ts +1 -0
  21. package/dist/src/infrastructure/projection/checkout/httpIsSizeChangeEnabledByCheckoutIdView.pact.js +51 -0
  22. package/dist/src/infrastructure/projection/checkout/react/useViewIsCheckoutAccessibleByCustomerId.d.ts +13 -0
  23. package/dist/src/infrastructure/projection/checkout/react/useViewIsCheckoutAccessibleByCustomerId.js +19 -0
  24. package/dist/src/infrastructure/projection/checkoutBooking/httpCheckoutBookingByIdView.pact.d.ts +1 -0
  25. package/dist/src/infrastructure/projection/checkoutBooking/httpCheckoutBookingByIdView.pact.js +56 -0
  26. package/dist/src/infrastructure/projection/checkoutItem/httpCheckoutItemByIdView.pact.d.ts +1 -0
  27. package/dist/src/infrastructure/projection/checkoutItem/httpCheckoutItemByIdView.pact.js +57 -0
  28. package/dist/src/infrastructure/projection/checkoutQuestion/httpCheckoutQuestionsByCheckoutIdView.pact.d.ts +1 -0
  29. package/dist/src/infrastructure/projection/checkoutQuestion/httpCheckoutQuestionsByCheckoutIdView.pact.js +55 -0
  30. package/dist/src/infrastructure/projection/payment/httpPaymentFlowPayloadByCheckoutIdView.pact.d.ts +1 -0
  31. package/dist/src/infrastructure/projection/payment/httpPaymentFlowPayloadByCheckoutIdView.pact.js +120 -0
  32. package/dist/src/infrastructure/projection/pricing/httpPricingByCheckoutIdView.pact.d.ts +1 -0
  33. package/dist/src/infrastructure/projection/pricing/httpPricingByCheckoutIdView.pact.js +55 -0
  34. package/dist/src/infrastructure/projection/returnQuestion/httpReturnQuestionsByCheckoutItemIdView.pact.d.ts +1 -0
  35. package/dist/src/infrastructure/projection/returnQuestion/httpReturnQuestionsByCheckoutItemIdView.pact.js +55 -0
  36. package/dist/src/infrastructure/ui/Root.d.ts +0 -2
  37. package/dist/src/infrastructure/ui/Root.js +2 -4
  38. package/dist/src/infrastructure/ui/components/layouts/layout/Layout.d.ts +22 -0
  39. package/dist/src/infrastructure/ui/components/layouts/layout/Layout.js +1 -0
  40. package/dist/src/infrastructure/ui/components/layouts/layout/components/footer/Footer.d.ts +7 -0
  41. package/dist/src/infrastructure/ui/components/layouts/layout/components/footer/Footer.js +5 -0
  42. package/dist/src/infrastructure/ui/components/layouts/layout/components/header/Header.d.ts +7 -0
  43. package/dist/src/infrastructure/ui/components/layouts/layout/components/header/Header.js +6 -0
  44. package/dist/src/infrastructure/ui/components/layouts/layout/components/header/Header.style.d.ts +4 -0
  45. package/dist/src/infrastructure/ui/components/layouts/layout/components/header/Header.style.js +20 -0
  46. package/dist/src/infrastructure/ui/components/layouts/layout/dummyLayout/DummyLayout.d.ts +4 -0
  47. package/dist/src/infrastructure/ui/components/layouts/layout/dummyLayout/DummyLayout.js +43 -0
  48. package/dist/src/infrastructure/ui/components/layouts/layout/dummyLayout/DummyLayout.style.d.ts +12 -0
  49. package/dist/src/infrastructure/ui/components/layouts/layout/dummyLayout/DummyLayout.style.js +14 -0
  50. package/dist/src/infrastructure/ui/components/templates/header/defaultHeader/DefaultHeader.d.ts +7 -0
  51. package/dist/src/infrastructure/ui/components/templates/header/defaultHeader/DefaultHeader.js +21 -0
  52. package/dist/src/infrastructure/ui/components/templates/header/defaultHeader/DefaultHeader.style.d.ts +8 -0
  53. package/dist/src/infrastructure/ui/components/templates/header/defaultHeader/DefaultHeader.style.js +12 -0
  54. package/dist/src/infrastructure/ui/hooks/useNewFeedbackExperiment.d.ts +12 -0
  55. package/dist/src/infrastructure/ui/hooks/useNewFeedbackExperiment.js +64 -0
  56. package/dist/src/infrastructure/ui/hooks/usePaymentInstrumentEvents.d.ts +3 -2
  57. package/dist/src/infrastructure/ui/hooks/usePaymentInstrumentEvents.js +17 -26
  58. package/dist/src/infrastructure/ui/hooks/useSubmitCheckout.d.ts +1 -1
  59. package/dist/src/infrastructure/ui/hooks/useSubmitCheckout.js +22 -55
  60. package/dist/src/infrastructure/ui/i18n/fetchTranslations.d.ts +10 -0
  61. package/dist/src/infrastructure/ui/i18n/fetchTranslations.js +17 -0
  62. package/dist/src/infrastructure/ui/i18n/i18n.d.ts +1 -0
  63. package/dist/src/infrastructure/ui/i18n/i18n.js +1 -0
  64. package/dist/src/infrastructure/ui/i18n/translationEndpoint.d.ts +20 -0
  65. package/dist/src/infrastructure/ui/i18n/translationEndpoint.js +27 -0
  66. package/dist/src/infrastructure/ui/routing/CheckoutAccessibilityMiddleware.d.ts +10 -0
  67. package/dist/src/infrastructure/ui/routing/CheckoutAccessibilityMiddleware.js +27 -0
  68. package/dist/src/infrastructure/ui/views/App.style.d.ts +6 -0
  69. package/dist/src/infrastructure/ui/views/App.style.js +8 -0
  70. package/dist/src/infrastructure/ui/views/checkout/components/checkoutPaymentModal/CheckoutPaymentModal.js +2 -2
  71. package/dist/src/infrastructure/ui/views/checkout/components/paymentInstrument/PaymentInstrument.js +7 -7
  72. package/dist/src/infrastructure/ui/views/feedback/components/checkoutQuestionsForm/CheckoutQuestionsForm.style.d.ts +7 -0
  73. package/dist/src/infrastructure/ui/views/feedback/components/checkoutQuestionsForm/CheckoutQuestionsForm.style.js +11 -0
  74. package/dist/src/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.d.ts +12 -0
  75. package/dist/src/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.js +64 -0
  76. package/dist/src/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.style.d.ts +12 -0
  77. package/dist/src/infrastructure/ui/views/item/components/returnQuestionsForm/ReturnQuestionsForm.style.js +16 -0
  78. package/dist/src/infrastructure/ui/views/return/Return.style.d.ts +40 -0
  79. package/dist/src/infrastructure/ui/views/return/Return.style.js +44 -0
  80. package/dist/src/infrastructure/ui/views/summary/components/stickyPricing/StickyPricing.d.ts +14 -0
  81. package/dist/src/infrastructure/ui/views/summary/components/stickyPricing/StickyPricing.js +28 -0
  82. package/dist/src/infrastructure/ui/views/summary/components/stickyPricing/StickyPricing.style.d.ts +7 -0
  83. package/dist/src/infrastructure/ui/views/summary/components/stickyPricing/StickyPricing.style.js +11 -0
  84. package/dist/src/projection/checkout/viewIsCheckoutAccessibleByCustomerId.d.ts +26 -0
  85. package/dist/src/projection/checkout/viewIsCheckoutAccessibleByCustomerId.js +21 -0
  86. package/dist/src/projection/customer/customer.d.ts +2 -0
  87. package/dist/src/projection/shared/country.d.ts +14 -0
  88. package/dist/src/projection/shared/country.js +15 -0
  89. package/dist/src/projection/shared/customer.d.ts +9 -0
  90. package/dist/src/projection/shared/customer.js +1 -0
  91. package/dist/src/projection/shared/locale.d.ts +12 -0
  92. package/dist/src/projection/shared/locale.js +13 -0
  93. package/dist/src/projection/shared/order.d.ts +6 -0
  94. package/dist/src/projection/shared/order.js +1 -0
  95. package/dist/src/projection/shared/price.d.ts +11 -0
  96. package/dist/src/projection/shared/price.js +1 -0
  97. package/dist/src/projection/shared/size.d.ts +21 -0
  98. package/dist/src/projection/shared/size.js +4 -0
  99. package/dist/src/projection/shared/subscription.d.ts +2 -0
  100. package/dist/src/projection/shared/subscription.js +1 -0
  101. package/dist/src/shared/ui/components/atoms/aspectRatioView/AspectRatioView.d.ts +15 -0
  102. package/dist/src/shared/ui/components/atoms/aspectRatioView/AspectRatioView.js +16 -0
  103. package/dist/src/shared/ui/components/atoms/error/Error.d.ts +11 -0
  104. package/dist/src/shared/ui/components/atoms/error/Error.js +6 -0
  105. package/dist/src/shared/ui/components/atoms/field/Field.d.ts +14 -0
  106. package/dist/src/shared/ui/components/atoms/field/Field.js +29 -0
  107. package/dist/src/shared/ui/components/atoms/field/Field.style.d.ts +16 -0
  108. package/dist/src/shared/ui/components/atoms/field/Field.style.js +19 -0
  109. package/dist/src/shared/ui/components/molecules/inputField/InputField.d.ts +24 -0
  110. package/dist/src/shared/ui/components/molecules/inputField/InputField.js +28 -0
  111. package/dist/src/shared/ui/components/molecules/inputField/InputField.style.d.ts +29 -0
  112. package/dist/src/shared/ui/components/molecules/inputField/InputField.style.js +37 -0
  113. package/dist/src/version.d.ts +1 -1
  114. package/dist/src/version.js +1 -1
  115. package/index.ts +1 -1
  116. package/package.json +3 -3
  117. package/src/ExpoRoot.tsx +6 -4
  118. package/src/infrastructure/ui/Root.tsx +17 -30
  119. package/src/infrastructure/ui/hooks/usePaymentInstrumentEvents.ts +18 -60
  120. package/src/infrastructure/ui/hooks/useSubmitCheckout.test.ts +0 -58
  121. package/src/infrastructure/ui/hooks/useSubmitCheckout.ts +33 -77
  122. package/src/infrastructure/ui/i18n/i18n.ts +1 -0
  123. package/src/infrastructure/ui/views/checkout/components/checkoutPaymentModal/CheckoutPaymentModal.tsx +2 -2
  124. package/src/infrastructure/ui/views/checkout/components/paymentInstrument/PaymentInstrument.tsx +8 -8
  125. package/src/projection/customer/customer.ts +2 -0
  126. package/dist/src/infrastructure/ui/hooks/useQueryBus.d.ts +0 -9
  127. package/dist/src/infrastructure/ui/hooks/useQueryBus.js +0 -10
  128. package/src/infrastructure/ui/hooks/useQueryBus.test.tsx +0 -23
  129. package/src/infrastructure/ui/hooks/useQueryBus.tsx +0 -27
@@ -0,0 +1,26 @@
1
+ import { Query, QueryHandlerFunction, QueryHandlerFunctionArgs } from "@lookiero/messaging";
2
+
3
+ type IsCheckoutAccessibleByCustomerIdProjection = boolean;
4
+ declare const VIEW_IS_CHECKOUT_ACCESSIBLE_BY_CUSTOMER_ID = "view_is_checkout_accessible_by_customer_id";
5
+ interface ViewIsCheckoutAccessibleByCustomerIdPayload {
6
+ readonly customerId: string | undefined;
7
+ }
8
+ interface ViewIsCheckoutAccessibleByCustomerId
9
+ extends Query<typeof VIEW_IS_CHECKOUT_ACCESSIBLE_BY_CUSTOMER_ID>,
10
+ ViewIsCheckoutAccessibleByCustomerIdPayload {}
11
+ interface ViewIsCheckoutAccessibleByCustomerIdFunction {
12
+ (payload: ViewIsCheckoutAccessibleByCustomerIdPayload): ViewIsCheckoutAccessibleByCustomerId;
13
+ }
14
+ declare const viewIsCheckoutAccessibleByCustomerId: ViewIsCheckoutAccessibleByCustomerIdFunction;
15
+ interface ViewIsCheckoutAccessibleByCustomerIdHandlerFunctionArgs extends QueryHandlerFunctionArgs {}
16
+ declare const viewIsCheckoutAccessibleByCustomerIdHandler: QueryHandlerFunction<
17
+ ViewIsCheckoutAccessibleByCustomerId,
18
+ IsCheckoutAccessibleByCustomerIdProjection,
19
+ ViewIsCheckoutAccessibleByCustomerIdHandlerFunctionArgs
20
+ >;
21
+ export type { IsCheckoutAccessibleByCustomerIdProjection };
22
+ export {
23
+ VIEW_IS_CHECKOUT_ACCESSIBLE_BY_CUSTOMER_ID,
24
+ viewIsCheckoutAccessibleByCustomerId,
25
+ viewIsCheckoutAccessibleByCustomerIdHandler,
26
+ };
@@ -0,0 +1,21 @@
1
+ import { query } from "@lookiero/messaging";
2
+ import { viewFirstAvailableCheckoutByCustomerId } from "./viewFirstAvailableCheckoutByCustomerId";
3
+ import { viewIsCheckoutEnabledByCustomerId } from "./viewIsCheckoutEnabledByCustomerId";
4
+
5
+ const VIEW_IS_CHECKOUT_ACCESSIBLE_BY_CUSTOMER_ID = "view_is_checkout_accessible_by_customer_id";
6
+ const viewIsCheckoutAccessibleByCustomerId = (payload) => ({
7
+ ...query({ name: VIEW_IS_CHECKOUT_ACCESSIBLE_BY_CUSTOMER_ID }),
8
+ ...payload,
9
+ });
10
+ const isNonEmptyCustomerId = (customerId) => Boolean(customerId);
11
+ const viewIsCheckoutAccessibleByCustomerIdHandler =
12
+ ({ queryBus }) =>
13
+ async ({ customerId }) =>
14
+ isNonEmptyCustomerId(customerId) &&
15
+ Boolean(await queryBus(viewFirstAvailableCheckoutByCustomerId({ customerId }))) &&
16
+ Boolean(await queryBus(viewIsCheckoutEnabledByCustomerId({ customerId })));
17
+ export {
18
+ VIEW_IS_CHECKOUT_ACCESSIBLE_BY_CUSTOMER_ID,
19
+ viewIsCheckoutAccessibleByCustomerId,
20
+ viewIsCheckoutAccessibleByCustomerIdHandler,
21
+ };
@@ -4,5 +4,7 @@ interface Customer {
4
4
  readonly customerId: string;
5
5
  readonly country: Country;
6
6
  readonly segment: Segment;
7
+ readonly name: string;
8
+ readonly email: string;
7
9
  }
8
10
  export type { Customer };
@@ -0,0 +1,14 @@
1
+ declare enum Country {
2
+ ES = "ES",
3
+ FR = "FR",
4
+ GB = "GB",
5
+ BE = "BE",
6
+ LU = "LU",
7
+ IT = "IT",
8
+ PT = "PT",
9
+ DE = "DE",
10
+ AT = "AT",
11
+ NL = "NL",
12
+ SE = "SE",
13
+ }
14
+ export { Country };
@@ -0,0 +1,15 @@
1
+ var Country;
2
+ (function (Country) {
3
+ Country["ES"] = "ES";
4
+ Country["FR"] = "FR";
5
+ Country["GB"] = "GB";
6
+ Country["BE"] = "BE";
7
+ Country["LU"] = "LU";
8
+ Country["IT"] = "IT";
9
+ Country["PT"] = "PT";
10
+ Country["DE"] = "DE";
11
+ Country["AT"] = "AT";
12
+ Country["NL"] = "NL";
13
+ Country["SE"] = "SE";
14
+ })(Country || (Country = {}));
15
+ export { Country };
@@ -0,0 +1,9 @@
1
+ import { Country } from "@lookiero/sty-psp-locale";
2
+ import { Segment } from "@lookiero/sty-psp-segment";
3
+
4
+ interface Customer {
5
+ readonly customerId: string;
6
+ readonly country: Country;
7
+ readonly segment: Segment;
8
+ }
9
+ export type { Customer };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ declare enum Locale {
2
+ ES = "es",
3
+ FR = "fr",
4
+ EN = "en",
5
+ IT = "it",
6
+ PT = "pt",
7
+ DE = "de",
8
+ AT = "at",
9
+ NL = "nl",
10
+ SE = "sv",
11
+ }
12
+ export { Locale };
@@ -0,0 +1,13 @@
1
+ var Locale;
2
+ (function (Locale) {
3
+ Locale["ES"] = "es";
4
+ Locale["FR"] = "fr";
5
+ Locale["EN"] = "en";
6
+ Locale["IT"] = "it";
7
+ Locale["PT"] = "pt";
8
+ Locale["DE"] = "de";
9
+ Locale["AT"] = "at";
10
+ Locale["NL"] = "nl";
11
+ Locale["SE"] = "sv";
12
+ })(Locale || (Locale = {}));
13
+ export { Locale };
@@ -0,0 +1,6 @@
1
+ interface Order {
2
+ readonly orderNumber: number;
3
+ readonly isFirstOrder: boolean;
4
+ readonly coupon: string | null;
5
+ }
6
+ export type { Order };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import { Currency } from "../../domain/checkoutItem/model/currency";
2
+
3
+ interface PriceProjection {
4
+ readonly amount: number;
5
+ readonly currency: Currency;
6
+ readonly discountedPrice?: {
7
+ readonly amount: number;
8
+ readonly percentage: number;
9
+ };
10
+ }
11
+ export type { PriceProjection };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ import { Country } from "./country";
2
+
3
+ interface SizeProjection {
4
+ readonly id: string;
5
+ readonly lookiero: string;
6
+ readonly uk: string;
7
+ readonly it: string;
8
+ readonly europe: string;
9
+ readonly unique: boolean;
10
+ readonly visualOrder?: number;
11
+ }
12
+ interface SizeFunctionArgs {
13
+ readonly size: SizeProjection;
14
+ readonly country: Country;
15
+ }
16
+ interface SizeFunction {
17
+ (args: SizeFunctionArgs): string;
18
+ }
19
+ declare const size: SizeFunction;
20
+ export type { SizeProjection };
21
+ export { size };
@@ -0,0 +1,4 @@
1
+ import { Country } from "./country";
2
+
3
+ const size = ({ size, country }) => (country === Country.GB ? size.uk : size.lookiero);
4
+ export { size };
@@ -0,0 +1,2 @@
1
+ type Subscription = "o" | "m" | "b" | "q";
2
+ export type { Subscription };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import { FC, ReactNode } from "react";
2
+ import { StyleProp, ViewStyle } from "react-native";
3
+ declare enum AspectRatioViewResizeDirection {
4
+ VERTICAL = "VERTICAL",
5
+ HORIZONTAL = "HORIZONTAL"
6
+ }
7
+ interface AspectRatioViewProps {
8
+ readonly aspectRatio?: number;
9
+ readonly resizeDirection?: AspectRatioViewResizeDirection;
10
+ readonly multiplier?: number;
11
+ readonly children: ReactNode;
12
+ readonly style?: StyleProp<ViewStyle>;
13
+ }
14
+ declare const AspectRatioView: FC<AspectRatioViewProps>;
15
+ export { AspectRatioView, AspectRatioViewResizeDirection };
@@ -0,0 +1,16 @@
1
+ import React, { useCallback, useState } from "react";
2
+ import { View } from "react-native";
3
+ var AspectRatioViewResizeDirection;
4
+ (function (AspectRatioViewResizeDirection) {
5
+ AspectRatioViewResizeDirection["VERTICAL"] = "VERTICAL";
6
+ AspectRatioViewResizeDirection["HORIZONTAL"] = "HORIZONTAL";
7
+ })(AspectRatioViewResizeDirection || (AspectRatioViewResizeDirection = {}));
8
+ const AspectRatioView = ({ aspectRatio = 1, resizeDirection = AspectRatioViewResizeDirection.HORIZONTAL, multiplier = 1, style: customStyle = {}, children, }) => {
9
+ const [{ width, height }, setDimension] = useState({});
10
+ const handleOnLayout = useCallback(({ nativeEvent: { layout } }) => setDimension(resizeDirection === AspectRatioViewResizeDirection.HORIZONTAL
11
+ ? { width: layout.width * multiplier, height: layout.width * aspectRatio }
12
+ : { width: layout.height * aspectRatio, height: layout.height }), [aspectRatio, multiplier, resizeDirection]);
13
+ return (React.createElement(View, { onLayout: handleOnLayout },
14
+ React.createElement(View, { style: [{ width, height }, customStyle] }, children)));
15
+ };
16
+ export { AspectRatioView, AspectRatioViewResizeDirection };
@@ -0,0 +1,11 @@
1
+ import { FC } from "react";
2
+ import { StyleProp, TextStyle } from "react-native";
3
+
4
+ type ErrorStyle = StyleProp<TextStyle>;
5
+ interface ErrorProps {
6
+ readonly error?: string | null;
7
+ readonly style?: ErrorStyle;
8
+ }
9
+ declare const Error: FC<ErrorProps>;
10
+ export type { ErrorStyle };
11
+ export { Error };
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { COLOR, Text } from "@lookiero/aurora";
3
+
4
+ const Error = ({ error, style: customStyle }) =>
5
+ React.createElement(Text, { color: COLOR.TEXT_ERROR, level: 2, style: customStyle, detail: true }, error);
6
+ export { Error };
@@ -0,0 +1,14 @@
1
+ import { FC } from "react";
2
+ import { StyleProp, TextStyle, ViewStyle } from "react-native";
3
+ type FieldStyle = {
4
+ readonly field: StyleProp<ViewStyle>;
5
+ readonly fieldText: StyleProp<TextStyle>;
6
+ };
7
+ interface FieldProps {
8
+ readonly label: string;
9
+ readonly isFocused?: boolean;
10
+ readonly style?: FieldStyle;
11
+ }
12
+ declare const Field: FC<FieldProps>;
13
+ export type { FieldStyle };
14
+ export { Field };
@@ -0,0 +1,29 @@
1
+ import React, { useCallback, useState } from "react";
2
+ import { View } from "react-native";
3
+ import Animated, { useAnimatedStyle, useSharedValue, withTiming } from "react-native-reanimated";
4
+ import { Text } from "@lookiero/aurora";
5
+ import { theme } from "@lookiero/sty-psp-ui";
6
+ import { style } from "./Field.style";
7
+ const SCALE = 0.75;
8
+ const { space1, space4 } = theme();
9
+ const Field = ({ label, isFocused = false, style: customStyle }) => {
10
+ const [width, setWidth] = useState(0);
11
+ const handleOnLayout = useCallback(({ nativeEvent: { layout } }) => setWidth(layout.width), []);
12
+ const scale = useSharedValue(isFocused ? SCALE : 1);
13
+ scale.value = isFocused ? SCALE : 1;
14
+ const translateY = useSharedValue(isFocused ? -14 : space4);
15
+ translateY.value = isFocused ? -14 : space4;
16
+ const translateX = useSharedValue(isFocused ? -(((1 - SCALE) * width) / 2 + space1) : 0);
17
+ translateX.value = isFocused ? -(((1 - SCALE) * width) / 2 + space1) : 0;
18
+ const animatedStyle = useAnimatedStyle(() => ({
19
+ transform: [
20
+ { scale: withTiming(scale.value) },
21
+ { translateY: withTiming(translateY.value) },
22
+ { translateX: withTiming(translateX.value) },
23
+ ],
24
+ }), [scale.value, translateX.value, translateY.value]);
25
+ return (React.createElement(Animated.View, { pointerEvents: "none", style: [customStyle?.field, animatedStyle], onLayout: handleOnLayout },
26
+ React.createElement(Text, { level: 1, numberOfLines: 1, style: [style.fieldText, customStyle?.fieldText], detail: true }, label),
27
+ React.createElement(View, { style: [style.fieldBackground, { opacity: isFocused ? 1 : 0 }] })));
28
+ };
29
+ export { Field };
@@ -0,0 +1,16 @@
1
+ declare const style: {
2
+ fieldBackground: {
3
+ backgroundColor: string;
4
+ height: "100%";
5
+ position: "absolute";
6
+ width: "100%";
7
+ zIndex: number;
8
+ };
9
+ fieldText: {
10
+ flexWrap: "nowrap";
11
+ overflow: "hidden";
12
+ paddingHorizontal: number;
13
+ zIndex: number;
14
+ };
15
+ };
16
+ export { style };
@@ -0,0 +1,19 @@
1
+ import { StyleSheet } from "react-native";
2
+ import { theme } from "@lookiero/sty-psp-ui";
3
+ const { colorBgBase, space1 } = theme();
4
+ const style = StyleSheet.create({
5
+ fieldBackground: {
6
+ backgroundColor: colorBgBase,
7
+ height: "100%",
8
+ position: "absolute",
9
+ width: "100%",
10
+ zIndex: 0,
11
+ },
12
+ fieldText: {
13
+ flexWrap: "nowrap",
14
+ overflow: "hidden",
15
+ paddingHorizontal: space1,
16
+ zIndex: 1,
17
+ },
18
+ });
19
+ export { style };
@@ -0,0 +1,24 @@
1
+ import { FC } from "react";
2
+ import { StyleProp, TextStyle, ViewStyle } from "react-native";
3
+ import { IconName, InputProperties } from "@lookiero/aurora";
4
+ import { ErrorStyle } from "@lookiero/sty-psp-ui";
5
+ import { FieldStyle } from "../../atoms/field/Field";
6
+ type IconStyle = StyleProp<TextStyle>;
7
+ type InputFieldStyle = FieldStyle & {
8
+ readonly inputField: StyleProp<ViewStyle>;
9
+ readonly error: ErrorStyle;
10
+ readonly icon: IconStyle;
11
+ };
12
+ interface InputFieldBaseProps {
13
+ readonly label: string;
14
+ readonly multiline?: boolean;
15
+ readonly error?: string | null;
16
+ readonly style?: Partial<InputFieldStyle>;
17
+ readonly onChange?: (value: string) => void;
18
+ readonly icon?: IconName;
19
+ }
20
+ interface InputFieldProps extends Omit<InputProperties, keyof InputFieldBaseProps>, InputFieldBaseProps {
21
+ }
22
+ declare const InputField: FC<InputFieldProps>;
23
+ export type { InputFieldStyle };
24
+ export { InputField };
@@ -0,0 +1,28 @@
1
+ import React, { useCallback, useState } from "react";
2
+ import { View } from "react-native";
3
+ import { COLOR, Icon, Input } from "@lookiero/aurora";
4
+ import { Error, theme } from "@lookiero/sty-psp-ui";
5
+ import { Field } from "../../atoms/field/Field";
6
+ import { style } from "./InputField.style";
7
+ const { colorBgBase, colorBorderInput, colorBorderInputError, colorBorderInputFocus, colorText, colorTextError, colorTextMedium, iconSize, space6, } = theme();
8
+ const inputPaddingRightWithIcon = iconSize + space6;
9
+ const InputField = ({ label, placeholder, value, multiline = false, error, style: customStyle, onChange = () => void 0, icon, testID = "input", ...inputRestProps }) => {
10
+ const [isFocused, setIsFocused] = useState(false);
11
+ const handleOnChange = useCallback((text) => onChange(text), [onChange]);
12
+ const handleOnBlur = useCallback(() => setIsFocused(false), []);
13
+ const handleOnFocus = useCallback(() => setIsFocused(true), []);
14
+ const borderColor = error ? colorBorderInputError : isFocused ? colorBorderInputFocus : colorBorderInput;
15
+ const color = error ? colorTextError : isFocused ? colorText : colorTextMedium;
16
+ return (React.createElement(View, { style: [style.inputField, { borderColor }, customStyle?.inputField], testID: "input-field" },
17
+ React.createElement(Field, { isFocused: isFocused || !!value, label: label, style: {
18
+ field: [style.field, customStyle?.field],
19
+ fieldText: [{ color }, customStyle?.fieldText],
20
+ } }),
21
+ React.createElement(Input, { autoCapitalize: "sentences", multiline: multiline, multilineMaxHeight: 242, placeholder: placeholder, placeholderTextColor: isFocused ? colorTextMedium : colorBgBase, style: [!!icon && { paddingRight: inputPaddingRightWithIcon }, style.input, { color }], testID: testID, value: value, onBlur: handleOnBlur,
22
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
23
+ // @ts-ignore
24
+ onChange: handleOnChange, onFocus: handleOnFocus, ...inputRestProps }),
25
+ !!icon && React.createElement(Icon, { color: COLOR.GRAYSCALE_L, name: icon, style: [style.icon, customStyle?.icon], testID: "icon" }),
26
+ !!error && React.createElement(Error, { error: error, style: [style.error, customStyle?.error] })));
27
+ };
28
+ export { InputField };
@@ -0,0 +1,29 @@
1
+ import { StyleSheet } from "react-native";
2
+ declare const style: StyleSheet.NamedStyles<any> | StyleSheet.NamedStyles<{
3
+ error: {
4
+ marginLeft: number;
5
+ marginTop: number;
6
+ };
7
+ field: {
8
+ left: number;
9
+ maxWidth: "100%";
10
+ position: "absolute";
11
+ zIndex: number;
12
+ };
13
+ icon: {
14
+ height: number;
15
+ position: "absolute";
16
+ right: number;
17
+ top: number;
18
+ width: number;
19
+ zIndex: number;
20
+ };
21
+ input: {
22
+ textOverflow?: string | undefined;
23
+ };
24
+ inputField: {
25
+ borderRadius: number;
26
+ borderWidth: number;
27
+ };
28
+ }>;
29
+ export { style };
@@ -0,0 +1,37 @@
1
+ import { StyleSheet, Platform } from "react-native";
2
+ import { theme } from "@lookiero/sty-psp-ui";
3
+ const { space1, space4, space6, borderRadius2, borderWidth1 } = theme();
4
+ const style = StyleSheet.create({
5
+ error: {
6
+ marginLeft: space6,
7
+ marginTop: space1,
8
+ },
9
+ field: {
10
+ left: space4,
11
+ maxWidth: "100%",
12
+ position: "absolute",
13
+ zIndex: 4,
14
+ },
15
+ icon: {
16
+ height: 16,
17
+ position: "absolute",
18
+ right: space4,
19
+ top: space4,
20
+ width: 16,
21
+ zIndex: 4,
22
+ },
23
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
24
+ // @ts-ignore
25
+ input: {
26
+ ...Platform.select({
27
+ web: {
28
+ textOverflow: "ellipsis",
29
+ },
30
+ }),
31
+ },
32
+ inputField: {
33
+ borderRadius: borderRadius2,
34
+ borderWidth: borderWidth1,
35
+ },
36
+ });
37
+ export { style };
@@ -1 +1 @@
1
- export declare const VERSION = "9.8.4";
1
+ export declare const VERSION = "9.9.0-beta.0";
@@ -1 +1 @@
1
- export const VERSION = "9.8.4";
1
+ export const VERSION = "9.9.0-beta.0";
package/index.ts CHANGED
@@ -51,7 +51,7 @@ const bootstrap: BootstrapFunction = ({ apiUrl, getAuthToken, translations, sent
51
51
  queryBus(viewFirstAvailableCheckoutByCustomerId({ customerId: customerId as string }));
52
52
 
53
53
  return {
54
- root: root({ Messaging, I18n, queryBus, getAuthToken, sentry, kameleoon }),
54
+ root: root({ Messaging, I18n, getAuthToken, sentry, kameleoon }),
55
55
  firstAvailableCheckoutByCustomerId,
56
56
  };
57
57
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lookiero/checkout",
3
- "version": "9.8.4",
3
+ "version": "9.9.0-beta.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "sideEffects": "false",
@@ -46,7 +46,7 @@
46
46
  "@cypress/webpack-preprocessor": "^6.0.2",
47
47
  "@lookiero/eslint-config-sty-psp": "*",
48
48
  "@lookiero/event": "^0.3",
49
- "@lookiero/payments-front": "6.0.3",
49
+ "@lookiero/payments-front": "6.0.3-LK-37736-2025.2.10.151202",
50
50
  "@lookiero/sty-psp-jest-config": "*",
51
51
  "@lookiero/sty-psp-prettier-config": "*",
52
52
  "@lookiero/sty-psp-scripts": "*",
@@ -76,7 +76,7 @@
76
76
  "@lookiero/event": "^0.3",
77
77
  "@lookiero/i18n": ">=0.9",
78
78
  "@lookiero/i18n-react": ">=0.9",
79
- "@lookiero/payments-front": "6.0.3",
79
+ "@lookiero/payments-front": "6.0.3-LK-37736-2025.2.10.151202",
80
80
  "apollo-boost": "0.4.4",
81
81
  "expo": ">=51",
82
82
  "expo-font": ">=12",
package/src/ExpoRoot.tsx CHANGED
@@ -32,9 +32,11 @@ const order: Order = {
32
32
  };
33
33
 
34
34
  const customer: Customer = {
35
- customerId: "d3c2354b-9811-46d4-b2ba-5fba012ed94d",
35
+ customerId: "9413fe3a-09fc-4264-905e-040bb7b4ca75",
36
36
  country: Country.ES,
37
37
  segment: Segment.WOMEN,
38
+ email: "email@example.com",
39
+ name: "Adèle Léonce Émilie",
38
40
  };
39
41
 
40
42
  const sentryConfig: SentryEnvironment = {
@@ -51,7 +53,7 @@ const apiUrl =
51
53
  ? "/local-to-dev"
52
54
  : "/checkout/api";
53
55
  const authToken =
54
- "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjU2NDg3OTAsImV4cCI6MTc0MjM2OTcyNywiZGlzcGxheU5hbWUiOiJUZXN0aW5nIiwiY291bnRyeV9jb2RlIjoiRVMiLCJhY2Nlc3NWaWEiOiJlbWFpbCIsInN1YnNjcmlwdGlvblN0YXJ0aW5nRGF0ZSI6IjIwMjQtMTEtMDgiLCJpbXBlcnNvbmF0ZWQiOmZhbHNlLCJ1dWlkIjoiNzRjYjRmNzYtM2YxNC00OTgzLTgxYTYtMmVlMmE5YTI3NWQ0IiwiaWF0IjoxNzM5OTUwNTI3fQ.ajNczGc6YhM23--PsqlAoDrp_GN87TnHEBOYyg2hoWM";
56
+ "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjU2NTIwMjgsImV4cCI6MTczOTQ0MTYwMSwiZGlzcGxheU5hbWUiOiJNaWtlbCIsImNvdW50cnlfY29kZSI6IkVTIiwiYWNjZXNzVmlhIjoiZW1haWwiLCJzdWJzY3JpcHRpb25TdGFydGluZ0RhdGUiOiIyMDI0LTExLTE4IiwiaW1wZXJzb25hdGVkIjpmYWxzZSwidXVpZCI6Ijk0MTNmZTNhLTA5ZmMtNDI2NC05MDVlLTA0MGJiN2I0Y2E3NSIsImlhdCI6MTczNjc2MzIwMn0.ZaFu4743f9XR0aK3LgMMhbmRHNloHtC1Sm0FDUtj8B8";
55
57
  const getAuthToken = () => Promise.resolve(authToken);
56
58
 
57
59
  const externalTranslationsUrl =
@@ -92,6 +94,7 @@ setPaymentsBridge({
92
94
  useFeatureFlags: () => ({}),
93
95
  locale: () => Promise.resolve("es-ES"),
94
96
  scrollView: ScrollView,
97
+ hostUrl: "",
95
98
  });
96
99
 
97
100
  const kameleoonConfig: KameleoonEnvironment = {
@@ -99,7 +102,7 @@ const kameleoonConfig: KameleoonEnvironment = {
99
102
  experiments: {},
100
103
  };
101
104
 
102
- const { Component: Messaging, queryBus } =
105
+ const { Component: Messaging } =
103
106
  process.env.EXPO_PUBLIC_APP_VARIANT === "test"
104
107
  ? checkoutMockBootstrap()
105
108
  : checkoutBootstrap({ apiUrl: () => apiUrl, getAuthToken });
@@ -110,7 +113,6 @@ const I18n = i18n({
110
113
  const Root = root({
111
114
  Messaging,
112
115
  I18n,
113
- queryBus,
114
116
  getAuthToken,
115
117
  development: false,
116
118
  sentry: () => (process.env.EXPO_PUBLIC_APP_VARIANT === "test" ? ({} as SentryEnvironment) : sentryConfig),
@@ -3,7 +3,6 @@ import React, { ComponentType, useCallback } from "react";
3
3
  import { Platform } from "react-native";
4
4
  import { useRoutes as reactRouterUseRoutes } from "react-router-native";
5
5
  import { I18n } from "@lookiero/i18n-react";
6
- import { QueryBus } from "@lookiero/messaging";
7
6
  import { MessagingRoot } from "@lookiero/messaging-react/bootstrap";
8
7
  import { Locale } from "@lookiero/sty-psp-locale";
9
8
  import { SentryEnvironment, SentryLoggerFunctionArgs, sentryLogger, sentryLoggerHOC } from "@lookiero/sty-psp-logging";
@@ -12,13 +11,11 @@ import { Customer } from "../../projection/customer/customer";
12
11
  import { Order } from "../../projection/order/order";
13
12
  import { Subscription } from "../../projection/subscription/subscription";
14
13
  import { KameleoonEnvironment } from "../ab-testing/kameleoonEnvironment";
15
- import { QueryBusProvider } from "./hooks/useQueryBus";
16
14
  import { Routing } from "./routing/Routing";
17
15
 
18
16
  interface RootFunctionArgs {
19
17
  readonly Messaging: MessagingRoot;
20
18
  readonly I18n: I18n;
21
- readonly queryBus: QueryBus;
22
19
  readonly development?: boolean;
23
20
  readonly sentry: () => SentryEnvironment;
24
21
  readonly getAuthToken: () => Promise<string>;
@@ -42,15 +39,7 @@ interface RootProps {
42
39
  readonly useRoutes?: typeof reactRouterUseRoutes;
43
40
  }
44
41
 
45
- const root: RootFunction = ({
46
- Messaging,
47
- I18n,
48
- queryBus,
49
- getAuthToken,
50
- development,
51
- sentry,
52
- kameleoon: kameleoonConfig,
53
- }) => {
42
+ const root: RootFunction = ({ Messaging, I18n, getAuthToken, development, sentry, kameleoon: kameleoonConfig }) => {
54
43
  const logger = sentryLogger(sentry);
55
44
  const kameleoon = kameleoonConfig();
56
45
 
@@ -71,24 +60,22 @@ const root: RootFunction = ({
71
60
 
72
61
  return (
73
62
  <Messaging includeReactQueryDevTools={Platform.OS === "web"}>
74
- <QueryBusProvider queryBus={queryBus}>
75
- <Routing
76
- I18n={I18n}
77
- basePath={basePath}
78
- customer={customer}
79
- getAuthToken={getAuthToken}
80
- kameleoon={kameleoon}
81
- layout={layout}
82
- locale={locale}
83
- order={order}
84
- subscription={subscription}
85
- useRedirect={useRedirect}
86
- useRoutes={useRoutes}
87
- onCheckoutSubmitted={onCheckoutSubmitted}
88
- onI18nError={development ? undefined : handleOnI18nError}
89
- onNotAccessible={onNotAccessible}
90
- />
91
- </QueryBusProvider>
63
+ <Routing
64
+ I18n={I18n}
65
+ basePath={basePath}
66
+ customer={customer}
67
+ getAuthToken={getAuthToken}
68
+ kameleoon={kameleoon}
69
+ layout={layout}
70
+ locale={locale}
71
+ order={order}
72
+ subscription={subscription}
73
+ useRedirect={useRedirect}
74
+ useRoutes={useRoutes}
75
+ onCheckoutSubmitted={onCheckoutSubmitted}
76
+ onI18nError={development ? undefined : handleOnI18nError}
77
+ onNotAccessible={onNotAccessible}
78
+ />
92
79
  </Messaging>
93
80
  );
94
81
  };