@agrada_digital/pbm 0.0.80 → 0.0.83

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.
package/dist/index.d.mts CHANGED
@@ -4,8 +4,10 @@ interface PBMProps {
4
4
  originalProductPrice: number | string;
5
5
  clientID: string;
6
6
  eanProduct: string;
7
+ isAuthenticatedShopper: boolean;
8
+ customLoginUrl?: string;
7
9
  }
8
- declare function PBM({ originalProductPrice, clientID, eanProduct, }: PBMProps): react_jsx_runtime.JSX.Element;
10
+ declare function PBM({ originalProductPrice, clientID, eanProduct, isAuthenticatedShopper, customLoginUrl, }: PBMProps): react_jsx_runtime.JSX.Element;
9
11
 
10
12
  interface discountTypes {
11
13
  unit: number;
@@ -22,8 +24,10 @@ interface usePBMTypes {
22
24
  };
23
25
  campaign: "pbm_campaign";
24
26
  targetProduct: IProduct | null;
27
+ isAuthenticatedShopper: boolean;
25
28
  urlAcceptTerms?: string;
26
29
  urlRegisterIndustry?: string;
30
+ customLoginUrl?: string;
27
31
  }
28
32
  interface IProduct {
29
33
  ean: string;
@@ -51,6 +55,8 @@ interface PBMStore extends usePBMTypes {
51
55
  setTargetProduct: (targetProduct: usePBMTypes["targetProduct"]) => void;
52
56
  setUrlAcceptTerms: (urlAcceptTerms: usePBMTypes["urlAcceptTerms"]) => void;
53
57
  setUrlRegisterIndustry: (urlRegisterIndustry: usePBMTypes["urlRegisterIndustry"]) => void;
58
+ setIsAuthenticatedShopper: (isAuthenticatedShopper: usePBMTypes["isAuthenticatedShopper"]) => void;
59
+ setCustomLoginUrl: (customLoginUrl: usePBMTypes["customLoginUrl"]) => void;
54
60
  }
55
61
  declare function usePBMStore(): PBMStore;
56
62
  declare function usePBMStore<T>(selector: (state: PBMStore) => T): T;
package/dist/index.d.ts CHANGED
@@ -4,8 +4,10 @@ interface PBMProps {
4
4
  originalProductPrice: number | string;
5
5
  clientID: string;
6
6
  eanProduct: string;
7
+ isAuthenticatedShopper: boolean;
8
+ customLoginUrl?: string;
7
9
  }
8
- declare function PBM({ originalProductPrice, clientID, eanProduct, }: PBMProps): react_jsx_runtime.JSX.Element;
10
+ declare function PBM({ originalProductPrice, clientID, eanProduct, isAuthenticatedShopper, customLoginUrl, }: PBMProps): react_jsx_runtime.JSX.Element;
9
11
 
10
12
  interface discountTypes {
11
13
  unit: number;
@@ -22,8 +24,10 @@ interface usePBMTypes {
22
24
  };
23
25
  campaign: "pbm_campaign";
24
26
  targetProduct: IProduct | null;
27
+ isAuthenticatedShopper: boolean;
25
28
  urlAcceptTerms?: string;
26
29
  urlRegisterIndustry?: string;
30
+ customLoginUrl?: string;
27
31
  }
28
32
  interface IProduct {
29
33
  ean: string;
@@ -51,6 +55,8 @@ interface PBMStore extends usePBMTypes {
51
55
  setTargetProduct: (targetProduct: usePBMTypes["targetProduct"]) => void;
52
56
  setUrlAcceptTerms: (urlAcceptTerms: usePBMTypes["urlAcceptTerms"]) => void;
53
57
  setUrlRegisterIndustry: (urlRegisterIndustry: usePBMTypes["urlRegisterIndustry"]) => void;
58
+ setIsAuthenticatedShopper: (isAuthenticatedShopper: usePBMTypes["isAuthenticatedShopper"]) => void;
59
+ setCustomLoginUrl: (customLoginUrl: usePBMTypes["customLoginUrl"]) => void;
54
60
  }
55
61
  declare function usePBMStore(): PBMStore;
56
62
  declare function usePBMStore<T>(selector: (state: PBMStore) => T): T;
package/dist/index.js CHANGED
@@ -51,7 +51,9 @@ var initialPBMState = {
51
51
  grossPrice: 0
52
52
  },
53
53
  targetProduct: null,
54
- campaign: "pbm_campaign"
54
+ campaign: "pbm_campaign",
55
+ isAuthenticatedShopper: false,
56
+ customLoginUrl: "/login"
55
57
  };
56
58
  var createPBMStore = (set) => ({
57
59
  ...initialPBMState,
@@ -60,7 +62,9 @@ var createPBMStore = (set) => ({
60
62
  setTargetProduct: (targetProduct) => set({ targetProduct }),
61
63
  setAvailableDiscountSelected: (availableDiscount) => set({ availableDiscountSelected: availableDiscount }),
62
64
  setUrlAcceptTerms: (urlAcceptTerms) => set({ urlAcceptTerms }),
63
- setUrlRegisterIndustry: (urlRegisterIndustry) => set({ urlRegisterIndustry })
65
+ setUrlRegisterIndustry: (urlRegisterIndustry) => set({ urlRegisterIndustry }),
66
+ setIsAuthenticatedShopper: (isAuthenticatedShopper) => set({ isAuthenticatedShopper }),
67
+ setCustomLoginUrl: (customLoginUrl) => set({ customLoginUrl })
64
68
  });
65
69
  var pbmStore = (0, import_zustand.createStore)(createPBMStore);
66
70
  function usePBMStore(selector) {
@@ -93,7 +97,7 @@ function Header({ originalProductPrice }) {
93
97
  targetProduct?.discountMax,
94
98
  "% OFF"
95
99
  ] }),
96
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { width: "32px", height: "32px", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
100
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { width: "36px", height: "36px", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
97
101
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }),
98
102
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }),
99
103
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", { id: "SVGRepo_iconCarrier", children: [
@@ -103,12 +107,20 @@ function Header({ originalProductPrice }) {
103
107
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.3117 4.07145L15.1708 4.34503L14.5575 3.34485C13.3869 1.43575 10.6131 1.43575 9.44254 3.34485L8.82926 4.34503L7.68836 4.07145C5.51069 3.54925 3.54931 5.51063 4.07151 7.6883L4.34509 8.8292L3.34491 9.44248C1.43581 10.6131 1.43581 13.3869 3.34491 14.5575L4.34509 15.1708L4.07151 16.3117C3.54931 18.4893 5.51069 20.4507 7.68836 19.9285L8.82926 19.6549L9.44254 20.6551C10.6131 22.5642 13.3869 22.5642 14.5575 20.6551L15.1708 19.6549L16.3117 19.9285C18.4894 20.4507 20.4508 18.4893 19.9286 16.3117L19.655 15.1708L20.6552 14.5575C22.5643 13.3869 22.5643 10.6131 20.6552 9.44248L19.655 8.8292L19.9286 7.6883C20.4508 5.51063 18.4894 3.54925 16.3117 4.07145ZM11.1475 4.3903C11.5377 3.75393 12.4623 3.75393 12.8525 4.3903L13.8454 6.00951C14.0717 6.37867 14.51 6.56019 14.9311 6.45922L16.7781 6.01631C17.504 5.84225 18.1578 6.49604 17.9837 7.22193L17.5408 9.06894C17.4398 9.49003 17.6213 9.92827 17.9905 10.1546L19.6097 11.1475C20.2461 11.5377 20.2461 12.4623 19.6097 12.8525L17.9905 13.8453C17.6213 14.0717 17.4398 14.5099 17.5408 14.931L17.9837 16.778C18.1578 17.5039 17.504 18.1577 16.7781 17.9836L14.9311 17.5407C14.51 17.4398 14.0717 17.6213 13.8454 17.9904L12.8525 19.6097C12.4623 20.246 11.5377 20.246 11.1475 19.6097L10.1547 17.9904C9.92833 17.6213 9.49009 17.4398 9.069 17.5407L7.22199 17.9836C6.4961 18.1577 5.84231 17.5039 6.01637 16.778L6.45928 14.931C6.56026 14.5099 6.37873 14.0717 6.00957 13.8453L4.39036 12.8525C3.75399 12.4623 3.75399 11.5377 4.39036 11.1475L6.00957 10.1546C6.37873 9.92827 6.56026 9.49003 6.45928 9.06894L6.01637 7.22193C5.84231 6.49604 6.4961 5.84225 7.22199 6.01631L9.069 6.45922C9.49009 6.56019 9.92833 6.37867 10.1547 6.00951L11.1475 4.3903Z", fill: "#fff" })
104
108
  ] })
105
109
  ] }),
106
- Number(Price - Discount)?.toLocaleString("pt-BR", {
107
- currency: "BRL",
108
- currencyDisplay: "symbol",
109
- currencySign: "standard",
110
- style: "currency"
111
- })
110
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { className: "flex flex-col items-start justify-center-safe gap-0", children: [
111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "line-through text-sm font-light", children: Number(Price)?.toLocaleString("pt-BR", {
112
+ currency: "BRL",
113
+ currencyDisplay: "symbol",
114
+ currencySign: "standard",
115
+ style: "currency"
116
+ }) }),
117
+ Number(Price - Discount)?.toLocaleString("pt-BR", {
118
+ currency: "BRL",
119
+ currencyDisplay: "symbol",
120
+ currencySign: "standard",
121
+ style: "currency"
122
+ })
123
+ ] })
112
124
  ]
113
125
  }
114
126
  ),
@@ -486,7 +498,7 @@ var import_react3 = require("react");
486
498
  var import_classnames6 = __toESM(require("classnames"));
487
499
  var import_jsx_runtime8 = require("react/jsx-runtime");
488
500
  function Item({ data, onChange, checked }) {
489
- const { setAvailableDiscountSelected, securityNumber, state } = usePBMStore();
501
+ const { setAvailableDiscountSelected, state, isAuthenticatedShopper } = usePBMStore();
490
502
  const ID_INPUT = "unity_quantity_" + data.authorizedQuantity;
491
503
  const decimalDiscount = data.discountPercentual / 100;
492
504
  const unitDiscountValue = data.grossPrice * decimalDiscount;
@@ -522,9 +534,10 @@ function Item({ data, onChange, checked }) {
522
534
  htmlFor: ID_INPUT,
523
535
  className: (0, import_classnames6.default)(
524
536
  "label_benefits w-full flex items-center justify-start bg-zinc-300/60 border border-zinc-400/50 px-4 py-2 hover:bg-zinc-300 transition-colors rounded-lg gap-1",
525
- { "cursor-not-allowed": state === "isPreview", "cursor-pointer": state === "isActivated" }
537
+ { "cursor-not-allowed": state === "isPreview" || !isAuthenticatedShopper, "cursor-pointer": state === "isActivated" && isAuthenticatedShopper }
526
538
  ),
527
539
  id: "label_benefits_" + ID_INPUT,
540
+ title: !isAuthenticatedShopper ? "Necess\xE1rio fazer login!" : "",
528
541
  children: [
529
542
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
530
543
  "input",
@@ -535,7 +548,7 @@ function Item({ data, onChange, checked }) {
535
548
  className: "hidden",
536
549
  checked,
537
550
  onChange,
538
- disabled: state === "isPreview"
551
+ disabled: state === "isPreview" || !isAuthenticatedShopper
539
552
  }
540
553
  ),
541
554
  !checked ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react2.Badge, { color: "#9f9fa9", size: 20 }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react2.BadgeCheck, { color: "#32b316", size: 20 }),
@@ -543,8 +556,8 @@ function Item({ data, onChange, checked }) {
543
556
  data.authorizedQuantity,
544
557
  "un"
545
558
  ] }),
546
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("section", { className: "ml-auto relative", children: [
547
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "absolute text-white -top-4 py-0.5 font-semibold text-xs bg-[#32b316] px-2 w-auto text-nowrap rounded-2xl -right-3", children: [
559
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("section", { className: "ml-auto relative gap-2 flex items-center-safe justify-end-safe", children: [
560
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "text-white -top-4 py-0.5 font-semibold text-xs bg-[#32b316] px-2 w-auto text-nowrap rounded-2xl -right-3", children: [
548
561
  discountValue.toLocaleString("pt-BR", {
549
562
  currency: "BRL",
550
563
  currencyDisplay: "symbol",
@@ -597,7 +610,7 @@ var CheckBenefistWithoutDocument = async ({ products }) => {
597
610
  // src/components/BenefitsTable/index.tsx
598
611
  var import_jsx_runtime9 = require("react/jsx-runtime");
599
612
  function BenefitsTable() {
600
- const { securityNumber, setState, state, targetProduct } = usePBMStore();
613
+ const { securityNumber, setState, state, targetProduct, customLoginUrl, isAuthenticatedShopper } = usePBMStore();
601
614
  const [selectedDiscout, setSelectedDiscount] = (0, import_react4.useState)(null);
602
615
  const [loading, setLoading] = (0, import_react4.useState)(true);
603
616
  const [benefitsItems, setBenefitsItems] = (0, import_react4.useState)();
@@ -741,21 +754,32 @@ function BenefitsTable() {
741
754
  className: "bg-transparent p-0 w-auto h-auto text-zinc-600 cursor-pointer hover:text-zinc-900 hover:bg-transparent text-start",
742
755
  id: "unauthorized_benefits_button",
743
756
  children: [
744
- "Aten\xE7\xE3o: n\xE3o \xE9 poss\xEDvel utilizar os benef\xEDcos sem realizar a consulta do cpf, por favor",
757
+ "Aten\xE7\xE3o: N\xE3o \xE9 poss\xEDvel utilizar os benef\xEDcos sem realizar a consulta do CPF e o Login, por favor",
745
758
  " ",
746
759
  /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "underline", children: "insira seu cpf para utilizar os benef\xEDcios" })
747
760
  ]
748
761
  }
749
762
  ),
750
- state === "isActivated" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
751
- Button_default,
752
- {
753
- onClick: () => setState("isEmpty"),
754
- className: "bg-transparent p-0 pl-2 w-auto h-auto text-zinc-600 cursor-pointer hover:text-zinc-900 hover:bg-transparent text-start",
755
- id: "change_security_number",
756
- children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "underline", children: "Deseja editar o cpf digitado?" })
757
- }
758
- )
763
+ state === "isActivated" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
764
+ !isAuthenticatedShopper && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
765
+ Button_default,
766
+ {
767
+ onClick: () => window.location.href = customLoginUrl || "/login",
768
+ className: "bg-transparent p-0 pl-2 w-auto h-auto text-zinc-600 cursor-pointer hover:text-zinc-900 hover:bg-transparent text-start",
769
+ id: "login",
770
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "underline", children: "Por favor, fa\xE7a o Login para aproveitar os benef\xEDcios!" })
771
+ }
772
+ ),
773
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
774
+ Button_default,
775
+ {
776
+ onClick: () => setState("isEmpty"),
777
+ className: "bg-transparent p-0 pl-2 w-auto h-auto text-zinc-600 cursor-pointer hover:text-zinc-900 hover:bg-transparent text-start",
778
+ id: "change_security_number",
779
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "underline", children: "Deseja editar o cpf digitado?" })
780
+ }
781
+ )
782
+ ] })
759
783
  ]
760
784
  }
761
785
  );
@@ -770,10 +794,11 @@ function Text(props) {
770
794
  "p",
771
795
  {
772
796
  className: (0, import_classnames7.default)(
773
- "text-start font-normal text-sm text-zinc-900",
797
+ "font-normal text-sm text-zinc-900",
798
+ props.textAlign && `text-${props.textAlign}`,
774
799
  props.className
775
800
  ),
776
- style: { color: props.textColor, fontSize: props.textSize },
801
+ style: { color: props.textColor, fontSize: props.textSize, textAlign: props.textAlign },
777
802
  "data-testid": "test_id_text",
778
803
  id: "text_pbm",
779
804
  children: props.children
@@ -935,21 +960,27 @@ var import_jsx_runtime14 = require("react/jsx-runtime");
935
960
  function PBM({
936
961
  originalProductPrice,
937
962
  clientID,
938
- eanProduct
963
+ eanProduct,
964
+ isAuthenticatedShopper,
965
+ customLoginUrl
939
966
  }) {
940
967
  const formatedOriginalProductPrice = Number(
941
968
  String(originalProductPrice).replace(",", ".")
942
969
  );
970
+ const [isReady, setIsReady] = (0, import_react5.useState)(false);
943
971
  const [loading, setLoading] = (0, import_react5.useState)(false);
944
- const { setState, state, setTargetProduct, targetProduct } = usePBMStore();
972
+ const { setState, state, setTargetProduct, targetProduct, setIsAuthenticatedShopper, setCustomLoginUrl } = usePBMStore();
973
+ const [EanProductExist, setEanProductExist] = (0, import_react5.useState)(true);
945
974
  const fetchProductByEan = async () => {
946
975
  try {
947
976
  if (!eanProduct) {
948
977
  console.error("PBMLOG: Ean is not defined.");
978
+ setEanProductExist(false);
949
979
  return;
950
980
  }
951
981
  const response = await GetProductByEAN({ PRODUCT_EAN: eanProduct });
952
982
  if (response.success && response.data) {
983
+ setEanProductExist(true);
953
984
  const { pbm, sku, ...targetProductNewData } = response.data;
954
985
  setTargetProduct({
955
986
  ...targetProduct,
@@ -960,9 +991,12 @@ function PBM({
960
991
  industryLogo: pbm.imageLink ?? void 0,
961
992
  ean: eanProduct
962
993
  });
994
+ setIsAuthenticatedShopper(isAuthenticatedShopper);
995
+ setCustomLoginUrl(customLoginUrl);
963
996
  }
964
997
  } catch (error) {
965
998
  console.error(error);
999
+ } finally {
966
1000
  }
967
1001
  };
968
1002
  const handleAuthorizationRequest = (0, import_react5.useCallback)(async () => {
@@ -980,6 +1014,31 @@ function PBM({
980
1014
  (0, import_react5.useEffect)(() => {
981
1015
  handleAuthorizationRequest();
982
1016
  }, [handleAuthorizationRequest]);
1017
+ if (!isReady) {
1018
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "rounded-xl w-[556px] h-[358px] bg-zinc-500/20 \n shadow-[0_0_15px_rgba(0,0,0,0.1)] \n hover:shadow-[0_0_30px_rgba(0,0,0,0.3)] \n transition-all duration-500 ease-in-out" });
1019
+ }
1020
+ if (!EanProductExist) {
1021
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { id: "pbm-library-root", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Container_default, { variant: "main", children: [
1022
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Title_default, { children: "Erro ao Aplicar o Benef\xEDcio" }),
1023
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Text_default, { textAlign: "center", children: [
1024
+ "O produto n\xE3o foi encontrado no sistema. ",
1025
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("br", {}),
1026
+ " Por favor, tente novamente mais tarde ou contate o suporte."
1027
+ ] }),
1028
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1029
+ Button_default,
1030
+ {
1031
+ className: "bg-transparent p-0 pl-2 w-auto h-auto text-zinc-600 underline cursor-pointer hover:text-zinc-900 hover:bg-transparent flex items-center justify-start gap-1",
1032
+ onClick: () => window.location.reload(),
1033
+ id: "check_benefits_button",
1034
+ children: [
1035
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: "Tentar novamente" }),
1036
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react3.RefreshCw, { size: 16 })
1037
+ ]
1038
+ }
1039
+ )
1040
+ ] }) });
1041
+ }
983
1042
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { id: "pbm-library-root", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Container_default, { variant: "main", children: [
984
1043
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Header_default, { originalProductPrice: formatedOriginalProductPrice || 0 }),
985
1044
  /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Container_default, { variant: "simple", children: [