paymob-widget-alpha 1.0.12 → 1.0.13

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/README.md CHANGED
@@ -63,7 +63,7 @@ The full list of properties is as follows:
63
63
  | publicKey | String | Yes | Your public key (used to resolve API base URL and authenticate requests). |
64
64
  | elementId | String | Yes | ID of the HTML element where the widget will be rendered. |
65
65
  | theme | `"primary" \| "light" \| "dark"` | No | Widget theme. Default: `"primary"`. |
66
- | amount | Number | No | Amount in major units. Default: `300`. |
66
+ | amount | Number | Yes | Order total in **cents** (positive finite number). Required the widget will not initialize without it. |
67
67
  | currency | String | No | Currency code. Default: `"EGP"`. |
68
68
  | integrationId | Number | No | Paymob integration ID. If provided, it will be sent when fetching installment plans. |
69
69
  | customerCanSelect | Boolean | No | If `true`, the widget allows selecting a plan and will show **Buy now** actions. Default: `false`. |
package/main.css CHANGED
@@ -397,7 +397,7 @@
397
397
  .item_container__cgz6H{display:flex;background-color:#fff;border:1px solid #dbe2ea;border-radius:6px;margin-bottom:1rem;width:100%;height:50px;position:relative}@media(max-width: 767px){.item_container__cgz6H{height:57px}}.item_container__cgz6H .item_input__vY8lX{width:100%;height:100%;opacity:0}.item_container__cgz6H .item_lable__Z4kft{border-radius:6px;position:absolute;top:0;left:0;height:100%;width:100%;display:flex;align-items:center;padding:8px;box-sizing:border-box;cursor:pointer}.item_container__cgz6H .item_lable__Z4kft .item_logo-icon__DuoWO{width:32px;height:32px;border-radius:4px;background:#f2f8fe}.item_container__cgz6H .item_lable__Z4kft .item_titles__Wlgd3{display:flex;flex-direction:column;justify-content:center}.item_container__cgz6H .item_lable__Z4kft .item_titles__Wlgd3 .item_title__ROPFr{text-transform:capitalize;margin:auto 20px;display:block;font-size:16px;font-weight:lighter;color:#5e5e5e}.item_container__cgz6H .item_lable__Z4kft .item_titles__Wlgd3 .item_description__LQgRY{font-size:12px;color:#383838;margin:auto 20px}.item_checked__ABSbz{background:#f2f8fe;border:1px solid #1782fb}.item_checked__ABSbz .item_titles__Wlgd3 .item_title__ROPFr{font-weight:500 !important;color:#000 !important}.item_checked__ABSbz .item_check-icon__An0iE{display:block;position:absolute;right:15px;top:calc(50% - 10px);font-size:20px;width:15px;height:15px}.item_checked__ABSbz .item_check-icon__An0iE img{width:100%;height:100%}.item_disabled__wZEqm{background-color:#e3e3e3}.item_disabled__wZEqm .item_lable__Z4kft{cursor:initial}
398
398
  .label_label__1W-Ax{color:#344054;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:500}html[dir=rtl] .label_label__1W-Ax,html[lang=ar] .label_label__1W-Ax{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:600}.label_label__optional__qAERS{color:#667085;margin-inline-start:.25rem;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:.875rem;letter-spacing:.01rem;font-weight:400}html[dir=rtl] .label_label__optional__qAERS,html[lang=ar] .label_label__optional__qAERS{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:.875rem;letter-spacing:.01rem;font-weight:400}
399
399
  .dropdown-button_dropdown-btn__76VmN{height:2.5rem;outline:0;border-radius:.5rem;background-color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;gap:.5rem}.dropdown-button_dropdown-btn__render-as__w9Rw9{cursor:pointer}.dropdown-button_dropdown-btn__render-as__w9Rw9[data-dropdown-btn-disabled=true]{pointer-events:none}.dropdown-button_dropdown-btn__leading-icon__Q2k-p,.dropdown-button_dropdown-btn__trailing-icon__oXzft,.dropdown-button_dropdown-btn__dropdown-chevron__OnCYV{display:flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem}.dropdown-button_dropdown-btn__leading-icon__Q2k-p svg,.dropdown-button_dropdown-btn__trailing-icon__oXzft svg,.dropdown-button_dropdown-btn__dropdown-chevron__OnCYV svg{width:inherit;height:inherit}.dropdown-button_dropdown-btn__dropdown-chevron__OnCYV{margin-inline-start:auto}.dropdown-button_dropdown-btn__dropdown-chevron__OnCYV svg{transition:transform .3s}.dropdown-button_dropdown-btn__clear__aTf4i{border-inline-start:.0625rem solid #eaecf0;padding-inline-start:.5rem;display:flex;align-items:center;justify-content:flex-end}.dropdown-button_dropdown-btn__clear__aTf4i svg{width:1.25rem;height:1.25rem}.dropdown-button_dropdown-btn__clear__aTf4i svg path{fill:#667085}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-label] .dropdown-button_dropdown-btn__trailing-icon__oXzft,.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-label] .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV{margin-inline-start:-0.25rem}.dropdown-button_dropdown-btn__text__dERj0{margin-inline-end:auto}.dropdown-button_dropdown-btn__text--placeholder__voFf7{color:#667085 !important}.dropdown-button_dropdown-btn__76VmN:disabled{cursor:not-allowed}.dropdown-button_dropdown-btn__76VmN:disabled .dropdown-button_dropdown-btn__text--placeholder__voFf7{color:#d0d5dd !important}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button]{padding:.5rem .75rem}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button]:has(>div:only-child):has(>div>svg:only-child){padding:.5rem;width:2.5rem;justify-content:center}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button] .dropdown-button_dropdown-btn__text__dERj0{font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:1.5rem;letter-spacing:.01rem;font-weight:600}html[dir=rtl] .dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button] .dropdown-button_dropdown-btn__text__dERj0,html[lang=ar] .dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button] .dropdown-button_dropdown-btn__text__dERj0{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:1.5rem;letter-spacing:.01rem;font-weight:700}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button] .dropdown-button_dropdown-btn__text--placeholder__voFf7{font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:400}html[dir=rtl] .dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button] .dropdown-button_dropdown-btn__text--placeholder__voFf7,html[lang=ar] .dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button] .dropdown-button_dropdown-btn__text--placeholder__voFf7{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:400}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button] .dropdown-button_dropdown-btn__label__9svDR{color:#667085;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:1.5rem;letter-spacing:.01rem;font-weight:400}html[dir=rtl] .dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button] .dropdown-button_dropdown-btn__label__9svDR,html[lang=ar] .dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button] .dropdown-button_dropdown-btn__label__9svDR{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:1.5rem;letter-spacing:.01rem;font-weight:400}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary] .dropdown-button_dropdown-btn__text__dERj0{color:#144dff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:not([data-dropdown-btn-label]){border:.0625rem solid #144dff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:not([data-dropdown-btn-label]) .dropdown-button_dropdown-btn__trailing-icon__oXzft path,.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:not([data-dropdown-btn-label]) .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV path{fill:#103ecc}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:not([data-dropdown-btn-label]):hover{background-color:#e8edff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary][data-dropdown-btn-label]{border:.0625rem solid #a1b8ff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary][data-dropdown-btn-label] .dropdown-button_dropdown-btn__trailing-icon__oXzft path,.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary][data-dropdown-btn-label] .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV path{fill:#144dff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary][data-dropdown-btn-label]:focus{border:.0625rem solid #7294ff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:focus{box-shadow:0rem 0rem 0rem .25rem #b9caff,0rem .0625rem .125rem 0rem rgba(16,24,40,.05)}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:disabled{background-color:#fff !important;border:.0625rem solid #a1b8ff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:disabled .dropdown-button_dropdown-btn__text__dERj0{color:#a1b8ff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:disabled .dropdown-button_dropdown-btn__trailing-icon__oXzft path,.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:disabled .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV path{fill:#a1b8ff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=primary]:disabled .dropdown-button_dropdown-btn__label__9svDR{color:#a1b8ff}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary]{border:.0625rem solid #d0d5dd}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary] .dropdown-button_dropdown-btn__text__dERj0{color:#344054}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary]:not([data-dropdown-btn-label]) .dropdown-button_dropdown-btn__trailing-icon__oXzft path,.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary]:not([data-dropdown-btn-label]) .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV path{fill:#344054}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary]:not([data-dropdown-btn-label]):hover{background-color:#f2f4f7}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary][data-dropdown-btn-label] .dropdown-button_dropdown-btn__trailing-icon__oXzft path,.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary][data-dropdown-btn-label] .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV path{fill:#475467}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary]:focus{box-shadow:0rem 0rem 0rem .25rem #f2f4f7,0rem .0625rem .125rem 0rem rgba(16,24,40,.05)}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary]:disabled{background-color:#fff !important;border:.0625rem solid #eaecf0;color:#d0d5dd}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary]:disabled .dropdown-button_dropdown-btn__trailing-icon__oXzft path,.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary]:disabled .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV path{fill:#d0d5dd}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=button][data-dropdown-btn-color=secondary]:disabled .dropdown-button_dropdown-btn__label__9svDR{color:#d0d5dd}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input]{padding:.625rem .75rem;border:.0625rem solid #d0d5dd}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input] .dropdown-button_dropdown-btn__text__dERj0{color:#101828;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:400}html[dir=rtl] .dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input] .dropdown-button_dropdown-btn__text__dERj0,html[lang=ar] .dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input] .dropdown-button_dropdown-btn__text__dERj0{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:400}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input] .dropdown-button_dropdown-btn__trailing-icon__oXzft path,.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input] .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV path{fill:#667085}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input] .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV{width:.75rem;height:.75rem}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input]:focus{border:.0625rem solid #7294ff;box-shadow:0rem 0rem 0rem .25rem #b9caff,0rem .0625rem .125rem 0rem rgba(16,24,40,.05)}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input]:disabled{background-color:#f9fafb}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input]:disabled .dropdown-button_dropdown-btn__text__dERj0{color:#d0d5dd}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input]:disabled .dropdown-button_dropdown-btn__trailing-icon__oXzft path,.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-type=input]:disabled .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV path{fill:#d0d5dd}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-menu-open=false] .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV svg{transform:rotate(0deg)}.dropdown-button_dropdown-btn__76VmN[data-dropdown-btn-menu-open=true] .dropdown-button_dropdown-btn__dropdown-chevron__OnCYV svg{transform:rotate(180deg)}
400
- .dropdown-menu-item_dropdown-menu-item__j2YKI{width:100%;display:flex;align-items:center;gap:.5rem;padding:.75rem;border-radius:.25rem;cursor:pointer}.dropdown-menu-item_dropdown-menu-item__j2YKI:hover:not([data-dropdown-menu-disabled=true]),.dropdown-menu-item_dropdown-menu-item__j2YKI[data-dropdown-menu-selected=true]:not([data-dropdown-menu-disabled=true]){background-color:#f9fafb}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K{width:1.5rem;height:1.5rem;flex-shrink:0}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K svg,.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K img{width:100%;height:100%}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K[data-dropdown-menu-item-icon-type=default] svg path{fill:#667085}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K[data-dropdown-menu-item-icon-type=default][data-dropdown-menu-item-icon-color=primary] svg path{fill:#103ecc}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K[data-dropdown-menu-item-icon-type=default][data-dropdown-menu-item-icon-color=danger] svg path{fill:#cc1142}html[dir=rtl] .dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K svg,html[lang=ar] .dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K svg{transform:scaleX(-1)}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K img{border-radius:50%}.dropdown-menu-item_dropdown-menu-item__j2YKI [data-dropdown-menu-item-count]{color:#667085}.dropdown-menu-item_dropdown-menu-item__checkbox__-\+YC3>div[class*=checkbox-wrapper__]{align-items:center}.dropdown-menu-item_dropdown-menu-item__text-box__hn\+gO{width:100%;display:flex;flex-direction:column;flex-grow:1;gap:.25rem}.dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh,.dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l{overflow:hidden;text-overflow:ellipsis}.dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh{color:#101828;font-family:"Inter",sans-serif;font-size:1rem;font-style:normal;line-height:1.75rem;font-weight:500}html[dir=rtl] .dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh,html[lang=ar] .dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh{font-family:"Cairo",sans-serif;font-size:1rem;font-style:normal;line-height:1.75rem;font-weight:600}.dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l{color:#667085;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:1.125rem;letter-spacing:.01rem;font-weight:400}html[dir=rtl] .dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l,html[lang=ar] .dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:1.125rem;letter-spacing:.01rem;font-weight:400}.dropdown-menu-item_dropdown-menu-item__tick-icon__trZDH{width:1.25rem;height:1.25rem}.dropdown-menu-item_dropdown-menu-item__tick-icon__trZDH svg{width:inherit;height:inherit}.dropdown-menu-item_dropdown-menu-item__tick-icon__trZDH svg path{fill:#144dff}.dropdown-menu-item_dropdown-menu-item__j2YKI [data-dropdown-menu-disabled=true]{cursor:not-allowed;pointer-events:none}.dropdown-menu-item_dropdown-menu-item__j2YKI [data-dropdown-menu-disabled=true] .dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K{opacity:.2}.dropdown-menu-item_dropdown-menu-item__j2YKI [data-dropdown-menu-disabled=true] .dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh,.dropdown-menu-item_dropdown-menu-item__j2YKI [data-dropdown-menu-disabled=true] .dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l{color:#d0d5dd}.dropdown-menu-item_dropdown-menu-item__j2YKI [data-dropdown-menu-disabled=true] .dropdown-menu-item_dropdown-menu-item__tick-icon__trZDH svg path{fill:#d0d5dd}
400
+ .dropdown-menu-item_dropdown-menu-item__j2YKI{width:100%;display:flex;align-items:center;gap:.5rem;padding:.75rem;border-radius:.25rem;cursor:pointer}.dropdown-menu-item_dropdown-menu-item__j2YKI:hover:not([data-dropdown-menu-item-disabled=true]),.dropdown-menu-item_dropdown-menu-item__j2YKI[data-dropdown-menu-item-selected=true]:not([data-dropdown-menu-item-disabled=true]){background-color:#f9fafb}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K{width:1.5rem;height:1.5rem;flex-shrink:0}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K svg,.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K img{width:100%;height:100%}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K[data-dropdown-menu-item-icon-type=default] svg path{fill:#667085}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K[data-dropdown-menu-item-icon-type=default][data-dropdown-menu-item-icon-color=primary] svg path{fill:#103ecc}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K[data-dropdown-menu-item-icon-type=default][data-dropdown-menu-item-icon-color=danger] svg path{fill:#cc1142}html[dir=rtl] .dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K svg,html[lang=ar] .dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K svg{transform:scaleX(-1)}.dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K img{border-radius:50%}.dropdown-menu-item_dropdown-menu-item__j2YKI [data-dropdown-menu-item-count]{color:#667085}.dropdown-menu-item_dropdown-menu-item__checkbox__-\+YC3>div[class*=checkbox-wrapper__]{align-items:center}.dropdown-menu-item_dropdown-menu-item__text-box__hn\+gO{width:100%;display:flex;flex-direction:column;flex-grow:1;gap:.25rem}.dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh,.dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l{overflow:hidden;text-overflow:ellipsis}.dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh{color:#101828;font-family:"Inter",sans-serif;font-size:1rem;font-style:normal;line-height:1.75rem;font-weight:500}html[dir=rtl] .dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh,html[lang=ar] .dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh{font-family:"Cairo",sans-serif;font-size:1rem;font-style:normal;line-height:1.75rem;font-weight:600}.dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l{color:#667085;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:1.125rem;letter-spacing:.01rem;font-weight:400}html[dir=rtl] .dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l,html[lang=ar] .dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:1.125rem;letter-spacing:.01rem;font-weight:400}.dropdown-menu-item_dropdown-menu-item__tick-icon__trZDH{width:1.25rem;height:1.25rem}.dropdown-menu-item_dropdown-menu-item__tick-icon__trZDH svg{width:inherit;height:inherit}.dropdown-menu-item_dropdown-menu-item__tick-icon__trZDH svg path{fill:#144dff}.dropdown-menu-item_dropdown-menu-item__j2YKI[data-dropdown-menu-item-disabled=true]{cursor:not-allowed;pointer-events:none}.dropdown-menu-item_dropdown-menu-item__j2YKI[data-dropdown-menu-item-disabled=true] .dropdown-menu-item_dropdown-menu-item__featured-icon__Qv0\+K{opacity:.2}.dropdown-menu-item_dropdown-menu-item__j2YKI[data-dropdown-menu-item-disabled=true] .dropdown-menu-item_dropdown-menu-item__text-box__text__tYFxh,.dropdown-menu-item_dropdown-menu-item__j2YKI[data-dropdown-menu-item-disabled=true] .dropdown-menu-item_dropdown-menu-item__text-box__hint-text__wWO4l{color:#d0d5dd}.dropdown-menu-item_dropdown-menu-item__j2YKI[data-dropdown-menu-item-disabled=true] .dropdown-menu-item_dropdown-menu-item__tick-icon__trZDH svg path{fill:#d0d5dd}
401
401
  .image-uploader-avatar_image-uploader-wrapper__58TZQ input{display:none}.image-uploader-avatar_image-uploader-wrapper__uploader__\+-Up9{position:relative;display:flex;align-items:center;justify-content:center;border-radius:.75rem;cursor:pointer}.image-uploader-avatar_image-uploader-wrapper__uploader__\+-Up9 path{fill:#667085}.image-uploader-avatar_image-uploader-wrapper__uploader__overlay__qlPCT{position:absolute;inset:0;height:100%;width:100%;opacity:0;transition:.2s ease;background-color:rgba(52,64,84,.6);border-radius:.75rem}.image-uploader-avatar_image-uploader-wrapper__uploader__overlay__qlPCT svg{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);text-align:center}.image-uploader-avatar_image-uploader-wrapper__uploader__overlay__qlPCT svg path{fill:#fff}[data-img-uploader-size=xs]{width:3rem;height:3rem}[data-img-uploader-size=xs] svg{width:1.5rem;height:1.5rem}[data-img-uploader-size=sm]{width:4rem;height:4rem}[data-img-uploader-size=sm] svg{width:2rem;height:2rem}[data-img-uploader-size=md]{width:6rem;height:6rem}[data-img-uploader-size=md] svg{width:2.5rem;height:2.5rem}[data-img-uploader-size=lg]{width:10rem;height:10rem}[data-img-uploader-size=lg] svg{width:3.25rem;height:3.25rem}[data-img-uploader-is-uploaded=true] img{width:100%;height:100%;border-radius:.75rem}[data-img-uploader-is-uploaded=true][data-img-uploader-disabled=false]:hover .image-uploader-avatar_image-uploader-wrapper__uploader__overlay__qlPCT{opacity:1}[data-img-uploader-is-uploaded=false]{background-color:#f2f4f7}[data-img-uploader-is-uploaded=false]:hover{background-color:#eaecf0}[data-img-uploader-disabled=true]{cursor:not-allowed;opacity:.6}[data-img-uploader-disabled=true]:hover .image-uploader-avatar_image-uploader__overlay__F-356{opacity:0}
402
402
  .avatar_avatar__hr3ZK{display:flex;align-items:center;justify-content:center}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader]){border-radius:50%;background-color:#f2f4f7;overflow:hidden}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[tabIndex]{cursor:pointer}[data-avatar-type=img]:focus,[data-avatar-type=text]:focus,[data-avatar-type=placeholder]:focus{outline-style:solid}[data-avatar-type=img] img{width:100%;height:100%}[data-avatar-type=img]:focus{outline-color:#b9caff}[data-avatar-type=text]:focus,[data-avatar-type=placeholder]:focus{outline-color:#d0d5dd}[data-avatar-type=text]{color:#667085}[data-avatar-type=placeholder] path{fill:#667085}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xs]{width:1rem;height:1rem;font-size:.4375rem !important;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:.875rem;letter-spacing:.01rem;font-weight:400}html[dir=rtl] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xs],html[lang=ar] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xs]{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:.875rem;letter-spacing:.01rem;font-weight:400}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xs]:focus{outline-width:.125rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xs][data-avatar-type=placeholder] svg{width:.5rem;height:.5rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=sm]{width:1.5rem;height:1.5rem;font-size:.625rem !important;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:.875rem;letter-spacing:.01rem;font-weight:400}html[dir=rtl] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=sm],html[lang=ar] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=sm]{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:.875rem;letter-spacing:.01rem;font-weight:400}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=sm]:focus{outline-width:.125rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=sm][data-avatar-type=placeholder] svg{width:.75rem;height:.75rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=md]{width:2rem;height:2rem;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:.875rem;letter-spacing:.01rem;font-weight:400}html[dir=rtl] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=md],html[lang=ar] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=md]{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:.875rem;letter-spacing:.01rem;font-weight:400}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=md]:focus{outline-width:.125rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=md][data-avatar-type=placeholder] svg{width:1rem;height:1rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=lg]{width:2.5rem;height:2.5rem;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:400}html[dir=rtl] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=lg],html[lang=ar] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=lg]{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:400}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=lg]:focus{outline-width:.25rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=lg][data-avatar-type=placeholder] svg{width:1.25rem;height:1.25rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xl]{width:3.25rem;height:3.25rem;font-family:"Inter",sans-serif;font-size:1.125rem;font-style:normal;line-height:2rem;font-weight:400}html[dir=rtl] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xl],html[lang=ar] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xl]{font-family:"Cairo",sans-serif;font-size:1.125rem;font-style:normal;line-height:2rem;font-weight:400}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xl]:focus{outline-width:.25rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size=xl][data-avatar-type=placeholder] svg{width:1.5rem;height:1.5rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size="2xl"]{width:3.75rem;height:3.75rem;font-family:"Inter",sans-serif;font-size:1.25rem;font-style:normal;line-height:2.25rem;font-weight:400}html[dir=rtl] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size="2xl"],html[lang=ar] .avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size="2xl"]{font-family:"Cairo",sans-serif;font-size:1.25rem;font-style:normal;line-height:2.25rem;font-weight:400}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size="2xl"]:focus{outline-width:.25rem}.avatar_avatar__hr3ZK:not([data-avatar-type=image-uploader])[data-avatar-size="2xl"][data-avatar-type=placeholder] svg{width:1.75rem;height:1.75rem}
403
403
  .account_user-info-box__VpIxr{padding:1rem;display:flex;align-items:center;justify-content:flex-start;gap:.75rem;border-bottom:.0625rem solid #eaecf0}.account_user-info-box__user-info__name__TZ1nn{color:#101828;font-family:"Inter",sans-serif;font-size:1.125rem;font-style:normal;line-height:2rem;font-weight:600}html[dir=rtl] .account_user-info-box__user-info__name__TZ1nn,html[lang=ar] .account_user-info-box__user-info__name__TZ1nn{font-family:"Cairo",sans-serif;font-size:1.125rem;font-style:normal;line-height:2rem;font-weight:700}.account_user-info-box__user-info__supporting-info__g6nBc{color:#475467;font-family:"Inter",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:500}html[dir=rtl] .account_user-info-box__user-info__supporting-info__g6nBc,html[lang=ar] .account_user-info-box__user-info__supporting-info__g6nBc{font-family:"Cairo",sans-serif;font-size:.875rem;font-style:normal;line-height:1rem;font-weight:600}
package/main.js CHANGED
@@ -16099,8 +16099,6 @@ const blue_logo_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA
16099
16099
  const _0_interest_namespaceObject = __webpack_require__.p + "0-interest.39e7455001b508e7.png";
16100
16100
  ;// ./src/assets/icons/arrow.png
16101
16101
  const arrow_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAApCAYAAAAxmNlDAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADQSURBVHgB3dVdDYMwFIbhL1OABCQgYRLmYEiYA3DAHICTSUBCJTAH30rWi+6HLjmnJ2R9k94+6UV7Dkg2/sx8NiBXHnN8bUSOPLTwM/3NPXLl9zpo88hkid9McA9U0esoBz9DU8CdFV7vga+fqoGmYvEamhK4y4UvVnizF15BUwLvD9B1D+c9+RNk+ssfIekH2kIS05OvhSSmZ3UPSSZogE3Q8W/QwQLtNtAJ0opAZ0hLoZTOVyv0tIE6atYMDbfukh0N8CU7GuHrUmyp3a5RD1FeRfXQ4LI7AAAAAElFTkSuQmCC";
16102
- ;// ./src/assets/icons/Partner logo.png
16103
- const Partner_logo_namespaceObject = __webpack_require__.p + "Partner logo.4e7a753306d0bf2e.png";
16104
16102
  ;// ./src/assets/icons/open-arrow.png
16105
16103
  const open_arrow_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAcCAYAAADMW4fJAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKISURBVHgB1ZhBbtpAFIb/Z8iulSwBUpc+QnoD2FVtiOgJQm6QniD0BE1PEHKCogRV3SU9QTkCy0qA5KrdJe7re9NYAuqxx8Z26CcBst8w9ueZeTMe8rvsN5/jEkCXgZAY4+WU3mOPsd0ztY54TISTjdKM0b4KGZFnuAXhcCPA6FG7z5z4rz0U8l9x0DjALQHBdkwkxp4Yhon/JIzaR3yOPSFNxMD44cmX/emLUKvPl3hiMkWkQQ6auPCWN3QhB1YhqWD4lEJZIjLe5+Sh931Cc4pPto95JK2U1q0mDz9xGt5RiJpwEWk8ipjj9aAkgzP5+WCtnTF7+IVeHUJ5Rcy57UKdPg8lM9i7VQ1Cndd8yA1Jv+KUFE8SMecTK8sQktg8uhehL5uVlUFREROzVSppuQsPn+TOEyutQshck+SaBURMHCl0BvKUfstTqkGodcwnuiyxFiDp3iISTuzdO1VGqUOoDBHFQwaLCc2aHl5qEydfBybraPZBATJFgK8uIo/34saLAQeRtJCs5IKkuLaQF+Ht4jPN4IjMbee6BrTFRfJqMaUhHHGWUbKEoMvxCD0XobJFlMxuto5mEc0mti4n+JpWNb2m1ZMlIg/rY14RJZeM4ij0TcdCUjBLRBe+qymdoQC5utk6Dl0OTBiurukqPnYRkXcoezyD3C0Toy10L1lO06atjGap9huz3qtcxFwPO+IP5DX27zxkHyeynvvnNXczvrOIsrOMYoQiswzpIi8liSilyMR0ZHOEtzdH0nlnXg5LolQZxVVIJtnT1Q2NUSKFE4ANnR90nkgrU4WIUrqMYuaJpH0F3QmS/a0qRJRKZJTltQzqNaF440EG+x3+VzTTySdADfwB8vtcjih1DEAAAAAASUVORK5CYII=";
16106
16104
  ;// ./src/assets/icons/close-arrow.png
@@ -22763,8 +22761,8 @@ const DropdownMenuItem_DropdownMenuItem = props => {
22763
22761
  }) : /*#__PURE__*/_jsx(_Fragment, {});
22764
22762
  return /*#__PURE__*/_jsxs("div", {
22765
22763
  className: styles['dropdown-menu-item'],
22766
- "data-dropdown-menu-disabled": disabled,
22767
- "data-dropdown-menu-selected": selected,
22764
+ "data-dropdown-menu-item-disabled": disabled,
22765
+ "data-dropdown-menu-item-selected": selected,
22768
22766
  onClick: () => handleClick(text || hintText || '', additionalData),
22769
22767
  children: [type === 'default' && icon && /*#__PURE__*/_jsx("div", {
22770
22768
  className: styles['dropdown-menu-item__featured-icon'],
@@ -67290,6 +67288,21 @@ const ContactForm = /*#__PURE__*/(/* unused pure expression or super */ null &&
67290
67288
  }
67291
67289
  }
67292
67290
  }, [defaultCountryISO, allowedCountries, collectShippingAddress, collectBillingAddress, countriesSource, setValue]);
67291
+ useEffect(() => {
67292
+ if (needsPhone && (dirtyFields.phone || getValues('phone'))) {
67293
+ trigger('phone');
67294
+ }
67295
+ }, [country == null ? void 0 : country.code]);
67296
+ useEffect(() => {
67297
+ if (collectShippingAddress && (dirtyFields.shipping_phone_number || getValues('shipping_phone_number'))) {
67298
+ trigger('shipping_phone_number');
67299
+ }
67300
+ }, [shippingPhoneCountry == null ? void 0 : shippingPhoneCountry.code]);
67301
+ useEffect(() => {
67302
+ if (collectBillingAddress && (dirtyFields.billing_phone_number || getValues('billing_phone_number'))) {
67303
+ trigger('billing_phone_number');
67304
+ }
67305
+ }, [billingPhoneCountry == null ? void 0 : billingPhoneCountry.code]);
67293
67306
  const createEmailRegister = useCallback(({
67294
67307
  field: _field = 'email'
67295
67308
  } = {}) => {
@@ -72481,10 +72494,11 @@ const ClickOTPModal = ({
72481
72494
  if (!otp || otp.length !== 6) return;
72482
72495
  setIsLoading(true);
72483
72496
  const res = await onSubmit(isValid, otp);
72484
- if ((res == null ? void 0 : res.status) === 429) setShowImediatelyResend(true);
72497
+ if ((res == null ? void 0 : res.status) === 423) setShowImediatelyResend(true);
72485
72498
  setIsLoading(false);
72486
72499
  };
72487
72500
  const autoVerifyHandler = () => {
72501
+ if (showImediatelyResend) return;
72488
72502
  setIsValid(true);
72489
72503
  handleVerify();
72490
72504
  };
@@ -72520,7 +72534,7 @@ const ClickOTPModal = ({
72520
72534
  children: [/*#__PURE__*/_jsx(OTPStep, {
72521
72535
  resendTimer: TIMER,
72522
72536
  onResendOTP: !showImediatelyResend ? handleResend : undefined,
72523
- onValid: isMobile ? autoVerifyHandler : setIsValid,
72537
+ onValid: autoVerifyHandler,
72524
72538
  otp: otp,
72525
72539
  setOtp: setOtp,
72526
72540
  length: 6,
@@ -72554,7 +72568,7 @@ const ClickOTPModal = ({
72554
72568
  color: 'primary',
72555
72569
  text: t('SUBMIT_BTN'),
72556
72570
  onClickHandler: handleVerify,
72557
- disabled: !isValid || isLoading,
72571
+ disabled: !isValid || isLoading || showImediatelyResend,
72558
72572
  loading: isLoading
72559
72573
  }, {
72560
72574
  type: 'button',
@@ -72629,13 +72643,19 @@ const ClickPassKeySetupModal = ({
72629
72643
  ;// ../../libs/kit-components/src/components/OneClickPhoneInput/OneClickPhoneInput.tsx
72630
72644
 
72631
72645
 
72646
+
72647
+
72632
72648
  const OneClickPhoneInput_OneClickPhoneInput = ({
72633
72649
  register,
72634
72650
  clearErrors,
72635
72651
  setValue,
72636
- errors
72652
+ errors,
72653
+ country,
72654
+ setCountry
72637
72655
  }) => {
72638
- const domainCountry = useGetDomainCountry();
72656
+ const {
72657
+ t
72658
+ } = useTranslation('kitComponents');
72639
72659
  const phoneRegistration = () => register('phone_number', {
72640
72660
  onChange: e => {
72641
72661
  clearErrors();
@@ -72644,21 +72664,20 @@ const OneClickPhoneInput_OneClickPhoneInput = ({
72644
72664
  setValue('phone_number', trimmedNumber);
72645
72665
  },
72646
72666
  validate: value => {
72667
+ var _parseMax;
72647
72668
  if (!value) return 'Phone number is required';
72648
- const validation = phoneNumberValidation(domainCountry.iso2);
72649
- return validation.pattern.test(value) || validation.error_msg;
72669
+ return ((_parseMax = parseMax(country.code + value)) == null ? void 0 : _parseMax.isValid()) || t('PHONE_NOT_VALID');
72650
72670
  }
72651
72671
  });
72652
72672
  return /*#__PURE__*/_jsxs(_Fragment, {
72653
72673
  children: [/*#__PURE__*/_jsx(PhoneFormInput, {
72654
72674
  name: "phone_number",
72655
72675
  phoneFormRegister: phoneRegistration(),
72656
- selectedCountry: domainCountry,
72657
- setSelectedCountry: () => {},
72676
+ selectedCountry: country,
72677
+ setSelectedCountry: setCountry,
72658
72678
  placeholder: "10 000 0000",
72659
72679
  error: errors.phone_number,
72660
72680
  autoFocus: true,
72661
- disableDropdown: true,
72662
72681
  customStyle: {
72663
72682
  borderColor: errors.phone_number ? '#ff7397' : '#D0D5DD'
72664
72683
  }
@@ -72682,7 +72701,9 @@ const ClickPhoneVerificationModal = ({
72682
72701
  onVerify,
72683
72702
  onCancel,
72684
72703
  phoneHint,
72685
- OTPError
72704
+ OTPError,
72705
+ country,
72706
+ setCountry
72686
72707
  }) => {
72687
72708
  const isMobile = useWidth();
72688
72709
  const {
@@ -72694,9 +72715,11 @@ const ClickPhoneVerificationModal = ({
72694
72715
  clearErrors,
72695
72716
  formState: {
72696
72717
  errors,
72697
- isValid
72718
+ isValid,
72719
+ dirtyFields
72698
72720
  },
72699
- getValues
72721
+ getValues,
72722
+ trigger
72700
72723
  } = useForm({
72701
72724
  mode: 'onBlur'
72702
72725
  });
@@ -72704,6 +72727,11 @@ const ClickPhoneVerificationModal = ({
72704
72727
  useEffect(() => {
72705
72728
  isValid && isMobile && handleVerify();
72706
72729
  }, [isValid]);
72730
+ useEffect(() => {
72731
+ if (dirtyFields.phone_number || getValues('phone_number')) {
72732
+ trigger('phone_number');
72733
+ }
72734
+ }, [country == null ? void 0 : country.code]);
72707
72735
  const handleVerify = async () => {
72708
72736
  setIsLoading(true);
72709
72737
  await onVerify({
@@ -72724,7 +72752,9 @@ const ClickPhoneVerificationModal = ({
72724
72752
  clearErrors: clearErrors,
72725
72753
  errors: errors || OTPError,
72726
72754
  register: register,
72727
- setValue: setValue
72755
+ setValue: setValue,
72756
+ country: country,
72757
+ setCountry: setCountry
72728
72758
  }), OTPError && /*#__PURE__*/_jsx("p", {
72729
72759
  className: "mt-1 text-sm text-red-500",
72730
72760
  children: OTPError
@@ -72756,7 +72786,9 @@ const ClickPhoneVerificationModal = ({
72756
72786
  clearErrors: clearErrors,
72757
72787
  errors: errors,
72758
72788
  register: register,
72759
- setValue: setValue
72789
+ setValue: setValue,
72790
+ country: country,
72791
+ setCountry: setCountry
72760
72792
  }), OTPError && /*#__PURE__*/_jsx("p", {
72761
72793
  className: "mt-1 text-sm text-red-500",
72762
72794
  children: OTPError
@@ -72859,7 +72891,7 @@ const validations_COUNTRIES_INFO = {
72859
72891
  phone_regex: /^[0-9]{10}$/
72860
72892
  }
72861
72893
  };
72862
- const validations_phoneNumberValidation = country => {
72894
+ const phoneNumberValidation = country => {
72863
72895
  const minLength = validations_COUNTRIES_INFO[country].phone_number_length.min;
72864
72896
  const maxLength = validations_COUNTRIES_INFO[country].phone_number_length.max;
72865
72897
  return {
@@ -73019,7 +73051,6 @@ async function fetchInstallmentPlans(payload) {
73019
73051
 
73020
73052
 
73021
73053
 
73022
-
73023
73054
 
73024
73055
 
73025
73056
  function isPlansPayloadWrapped(value) {
@@ -73034,6 +73065,15 @@ function getBanksFromPayload(payload) {
73034
73065
  }
73035
73066
  return null;
73036
73067
  }
73068
+ function plansResponseErrorText(response) {
73069
+ const responseBody = response == null ? void 0 : response.data;
73070
+ if (!responseBody || typeof responseBody !== 'object') return '';
73071
+ return typeof responseBody.error === 'string' ? responseBody.error : '';
73072
+ }
73073
+ function isMinimumEligibilityError(message) {
73074
+ const lowerMessage = message.toLowerCase();
73075
+ return lowerMessage.includes('minimum eligibility criteria');
73076
+ }
73037
73077
  function toIntegrationIds(integrationId) {
73038
73078
  if (integrationId == null) return undefined;
73039
73079
  const list = (Array.isArray(integrationId) ? integrationId : [integrationId]).map(Number).filter(Number.isFinite).sort((a, b) => a - b);
@@ -73057,6 +73097,11 @@ const learnMoreSteps = [{
73057
73097
  title: 'Complete Payment on Paymob',
73058
73098
  description: 'Enter the card details of the selected bank to finalize the payment.'
73059
73099
  }];
73100
+ const learnMoreStepsWithoutPlanSelect = [learnMoreSteps[1], learnMoreSteps[2], {
73101
+ icon: card_namespaceObject,
73102
+ title: 'Complete Payment on Paymob',
73103
+ description: 'Select Bank Installment payment method, choose your preferred plan, and enter your card details to complete the payment.'
73104
+ }];
73060
73105
  function normalizeBanksWithPlans(installmentPlansProductPayload) {
73061
73106
  const banks = getBanksFromPayload(installmentPlansProductPayload);
73062
73107
  if (!(banks != null && banks.length)) return null;
@@ -73084,13 +73129,13 @@ function normalizeBanksWithPlans(installmentPlansProductPayload) {
73084
73129
  const minMonthlyAmount = Number(bank.minimum_plan_amount);
73085
73130
  const startsFromAmount = minMonthlyAmount || (installmentOptions.length ? Math.min(...installmentOptions.map(option => option.monthlyAmount)) : 0);
73086
73131
  const baseURL = String((_axios$defaults$baseU = lib_axios.defaults.baseURL) != null ? _axios$defaults$baseU : '');
73087
- const logoPath = String((_bank$bank_logo = bank.bank_logo) != null ? _bank$bank_logo : '');
73088
- const resolvedLogo = logoPath && logoPath.startsWith('/') && baseURL ? `${baseURL}${logoPath}` : logoPath || Partner_logo_namespaceObject;
73132
+ const logoPath = String((_bank$bank_logo = bank.bank_logo) != null ? _bank$bank_logo : '').trim();
73133
+ const bankLogoUrl = !logoPath ? null : logoPath.startsWith('/') && baseURL ? `${baseURL}${logoPath}` : logoPath;
73089
73134
  return {
73090
73135
  id: String(bank.bank_name || `bank-${bankIndex}`),
73091
73136
  name: String(bank.bank_name || 'Bank'),
73092
- logo: resolvedLogo,
73093
- badgeText: '0% Interest',
73137
+ logo: bankLogoUrl,
73138
+ badgeText: installmentOptions.some(plan => plan.interestRate === 0) ? '0% Interest' : '',
73094
73139
  startsFromAmount,
73095
73140
  installmentOptions
73096
73141
  };
@@ -73098,7 +73143,7 @@ function normalizeBanksWithPlans(installmentPlansProductPayload) {
73098
73143
  }
73099
73144
  function Widget({
73100
73145
  publicKey,
73101
- amount = 30000,
73146
+ amount,
73102
73147
  currency = 'EGP',
73103
73148
  integrationId,
73104
73149
  customerCanSelect = false,
@@ -73116,8 +73161,8 @@ function Widget({
73116
73161
  const [submitError, setSubmitError] = (0,react.useState)(null);
73117
73162
  const canSubmit = typeof onSubmit === 'function';
73118
73163
  const canSelect = customerCanSelect === true;
73119
- const lastLoadedPlansKeyRef = (0,react.useRef)(null);
73120
73164
  const inFlightPlansKeyRef = (0,react.useRef)(null);
73165
+ const [plansLoaded, setPlansLoaded] = (0,react.useState)(false);
73121
73166
  const amountInCents = (0,react.useMemo)(() => {
73122
73167
  if (typeof amount === 'number' && amount > 0) return Math.round(amount);
73123
73168
  return 0;
@@ -73126,6 +73171,13 @@ function Widget({
73126
73171
  const showZeroInterestHeader = (0,react.useMemo)(() => bankPlans.some(bank => bank.installmentOptions.some(plan => Number(plan.interestRate) === 0)), [bankPlans]);
73127
73172
  const integrationIds = (0,react.useMemo)(() => toIntegrationIds(integrationId), [integrationId]);
73128
73173
  (0,react.useEffect)(() => {
73174
+ if (!publicKey || amountInCents <= 0) {
73175
+ setBankPlans([]);
73176
+ setPlansErrorMessage(null);
73177
+ setIsModalOpen(false);
73178
+ setPlansLoaded(true);
73179
+ return;
73180
+ }
73129
73181
  const plansKey = JSON.stringify({
73130
73182
  publicKey: publicKey != null ? publicKey : null,
73131
73183
  amountInCents,
@@ -73133,39 +73185,43 @@ function Widget({
73133
73185
  integrationId: integrationIds != null ? integrationIds : null
73134
73186
  });
73135
73187
  const loadInstallmentPlans = async () => {
73136
- if (!publicKey) return;
73137
- if (amountInCents <= 0) return;
73138
73188
  if (inFlightPlansKeyRef.current === plansKey) return;
73139
- if (lastLoadedPlansKeyRef.current === plansKey && bankPlans.length) return;
73140
73189
  inFlightPlansKeyRef.current = plansKey;
73190
+ setPlansLoaded(false);
73191
+ setBankPlans([]);
73141
73192
  setIsPlansLoading(true);
73142
73193
  setPlansErrorMessage(null);
73143
- const installmentPlansResponse = await fetchInstallmentPlans(Object.assign({
73144
- public_key: publicKey,
73145
- amount_cents: amountInCents,
73146
- currency
73147
- }, integrationIds != null ? {
73148
- integration_id: integrationIds
73149
- } : {}));
73150
- if ((installmentPlansResponse == null ? void 0 : installmentPlansResponse.status) >= 200 && (installmentPlansResponse == null ? void 0 : installmentPlansResponse.status) < 300) {
73151
- const normalizedPlans = normalizeBanksWithPlans(installmentPlansResponse == null ? void 0 : installmentPlansResponse.data);
73152
- if (normalizedPlans != null && normalizedPlans.length) {
73194
+ try {
73195
+ var _plansResponse$status;
73196
+ const plansResponse = await fetchInstallmentPlans(Object.assign({
73197
+ public_key: publicKey,
73198
+ amount_cents: amountInCents,
73199
+ currency
73200
+ }, integrationIds != null ? {
73201
+ integration_id: integrationIds
73202
+ } : {}));
73203
+ const statusCode = (_plansResponse$status = plansResponse == null ? void 0 : plansResponse.status) != null ? _plansResponse$status : 0;
73204
+ const plansRequestSucceeded = statusCode >= 200 && statusCode < 300;
73205
+ const normalizedPlans = plansRequestSucceeded ? normalizeBanksWithPlans(plansResponse == null ? void 0 : plansResponse.data) : null;
73206
+ const errorText = plansResponseErrorText(plansResponse);
73207
+ const isBelowMinimumForAllBanks = !plansRequestSucceeded && isMinimumEligibilityError(errorText);
73208
+ if (plansRequestSucceeded && normalizedPlans != null && normalizedPlans.length) {
73153
73209
  setBankPlans(normalizedPlans);
73154
- lastLoadedPlansKeyRef.current = plansKey;
73210
+ setPlansErrorMessage(null);
73211
+ } else if (plansRequestSucceeded && !(normalizedPlans != null && normalizedPlans.length) || isBelowMinimumForAllBanks) {
73212
+ setBankPlans([]);
73213
+ setPlansErrorMessage(null);
73214
+ setIsModalOpen(false);
73155
73215
  } else {
73156
73216
  setBankPlans([]);
73157
- setPlansErrorMessage('No installment plans available.');
73217
+ setPlansErrorMessage(errorText || 'Failed to load installment plans.');
73158
73218
  }
73159
- } else {
73160
- var _installmentPlansResp, _installmentPlansResp2;
73161
- setBankPlans([]);
73162
- setPlansErrorMessage((installmentPlansResponse == null || (_installmentPlansResp = installmentPlansResponse.data) == null ? void 0 : _installmentPlansResp.message) || (installmentPlansResponse == null || (_installmentPlansResp2 = installmentPlansResponse.data) == null ? void 0 : _installmentPlansResp2.msg) || 'Failed to load installment plans.');
73219
+ } finally {
73220
+ setIsPlansLoading(false);
73221
+ inFlightPlansKeyRef.current = null;
73222
+ setPlansLoaded(true);
73163
73223
  }
73164
- setIsPlansLoading(false);
73165
- inFlightPlansKeyRef.current = null;
73166
73224
  };
73167
-
73168
- // Prefetch on widget render / inputs change.
73169
73225
  void loadInstallmentPlans();
73170
73226
  }, [publicKey, amountInCents, currency, integrationIds]);
73171
73227
  const headerThemeStyles = {
@@ -73189,6 +73245,10 @@ function Widget({
73189
73245
  dark: '#D0D5DD',
73190
73246
  light: '#667085'
73191
73247
  };
73248
+ const showInstallmentWidget = bankPlans.length > 0 || plansLoaded && plansErrorMessage;
73249
+ if (!showInstallmentWidget) {
73250
+ return null;
73251
+ }
73192
73252
  return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
73193
73253
  children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
73194
73254
  className: "rounded-xl bg-blue-500 ",
@@ -73351,15 +73411,16 @@ function Widget({
73351
73411
  alignItems: 'center',
73352
73412
  gap: '10px'
73353
73413
  },
73354
- children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
73414
+ children: [bank.logo ? /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
73355
73415
  src: bank.logo,
73356
73416
  alt: bank.name,
73357
73417
  style: {
73358
73418
  width: '40px',
73359
73419
  height: '40px',
73360
- borderRadius: '50%'
73420
+ borderRadius: '50%',
73421
+ objectFit: 'contain'
73361
73422
  }
73362
- }), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
73423
+ }) : null, /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
73363
73424
  style: {
73364
73425
  display: 'flex',
73365
73426
  alignItems: 'end-start',
@@ -73378,14 +73439,14 @@ function Widget({
73378
73439
  color: '#101828'
73379
73440
  },
73380
73441
  children: bank.name
73381
- }), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
73442
+ }), bank.badgeText ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
73382
73443
  "data-plan-badge": "true",
73383
73444
  children: /*#__PURE__*/(0,jsx_runtime.jsx)(Badge_Badge, {
73384
73445
  text: bank.badgeText,
73385
73446
  color: "green",
73386
73447
  size: "lg"
73387
73448
  })
73388
- })]
73449
+ }) : null]
73389
73450
  }), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
73390
73451
  style: {
73391
73452
  color: '#475467',
@@ -73544,7 +73605,7 @@ function Widget({
73544
73605
  flexDirection: 'column',
73545
73606
  gap: '16px'
73546
73607
  },
73547
- children: (canSelect ? learnMoreSteps : learnMoreSteps.slice(1)).map((step, index) => /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
73608
+ children: (canSelect ? learnMoreSteps : learnMoreStepsWithoutPlanSelect).map((step, index) => /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
73548
73609
  style: {
73549
73610
  display: 'flex',
73550
73611
  alignItems: 'flex-start',
@@ -73651,12 +73712,20 @@ var _PaymobWidget;
73651
73712
 
73652
73713
 
73653
73714
 
73715
+ const AMOUNT_REQUIRED_MESSAGE = '[PaymobWidget] The "amount" option is required. Pass the order total in cents as a positive finite number.';
73716
+ function isValidOrderAmountCents(value) {
73717
+ return typeof value === 'number' && Number.isFinite(value) && value > 0;
73718
+ }
73654
73719
  class paymob_widget_PaymobWidget {
73655
73720
  constructor(options) {
73656
73721
  this._options = void 0;
73657
73722
  this._root = null;
73658
73723
  this._options = options;
73659
- const baseURL = this.updateAPIBaseURL();
73724
+ if (!isValidOrderAmountCents(options.amount)) {
73725
+ console.error(AMOUNT_REQUIRED_MESSAGE);
73726
+ return;
73727
+ }
73728
+ this.updateAPIBaseURL();
73660
73729
  paymob_widget_PaymobWidget._instances[options.elementId] = this;
73661
73730
  paymob_widget_PaymobWidget._lastInstanceId = options.elementId;
73662
73731
  this.render();
@@ -73667,6 +73736,10 @@ class paymob_widget_PaymobWidget {
73667
73736
  return baseURL;
73668
73737
  }
73669
73738
  render() {
73739
+ if (!isValidOrderAmountCents(this._options.amount)) {
73740
+ console.error(AMOUNT_REQUIRED_MESSAGE);
73741
+ return;
73742
+ }
73670
73743
  const container = document.getElementById(this._options.elementId);
73671
73744
  if (!container) {
73672
73745
  console.error("Container not found");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paymob-widget-alpha",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "keywords": ["paymob","widget","paymob-widget"],
5
5
  "main": "./main.js",
6
6
  "license": "MIT",
Binary file