xendit-components-web 0.0.12 → 0.0.14

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.
@@ -0,0 +1,3 @@
1
+ /*! Copyright (c) 2026 Xendit Inc. Licensed under the MIT License (MIT). */
2
+ import{r as e,a}from"./index.js";function n(){const n=(new Date).toISOString(),t=new Date(Date.now()+2592e6).toISOString();return{session:{payment_session_id:`ps-${e(24)}`,created:n,updated:n,status:"ACTIVE",reference_id:a(),description:"Test session",currency:"IDR",amount:1e4,country:"ID",expires_at:t,session_type:"PAY",mode:"COMPONENTS",locale:"en",business_id:e(24),customer_id:`cust-${a()}`,capture_method:"AUTOMATIC",allow_save_payment_method:"OPTIONAL",items:[{reference_id:a(),type:"DIGITAL_PRODUCT",name:"Item 1",net_unit_amount:5e4,quantity:1,category:""},{reference_id:a(),type:"DIGITAL_SERVICE",name:"Item 2",net_unit_amount:5e4,quantity:1,category:""}]},business:{name:"Components Mock Merchant",country_of_operation:"Indonesia",merchant_profile_picture_url:"https://placehold.co/256x256.png?text=Logo"},customer:{type:"INDIVIDUAL",id:`cust-${a()}`,email:"exa**@example.com",mobile_number:null,phone_number:null,individual_detail:{given_names:"exa********",surname:null},business_detail:null},channels:[{brand_name:"Cards",channel_code:"CARDS",brand_logo_url:"https://assets.xendit.co/payment-session/logos/CARDS.svg",ui_group:"cards",allow_pay_without_save:!0,allow_save:!0,brand_color:"#000000",min_amount:5e3,max_amount:2e8,requires_customer_details:!1,_mock_action_type:"IFRAME",card:{brands:[{name:"VISA",logo_url:"https://assets.xendit.co/payment-session/logos/VISA.svg"},{name:"MASTERCARD",logo_url:"https://assets.xendit.co/payment-session/logos/MASTERCARD.svg"},{name:"JCB",logo_url:"https://assets.xendit.co/payment-session/logos/JCB.svg"}]},form:[{group_label:"Card Details",label:"Card Number",placeholder:"1234 1234 1234 1234",type:{name:"credit_card_number"},channel_property:"card_details.card_number",required:!0,span:2},{label:"Card Expiry Date",placeholder:"MM/YY",type:{name:"credit_card_expiry"},channel_property:["card_details.expiry_month","card_details.expiry_year"],required:!0,span:1,join:!0},{label:"CVN",placeholder:"CVV",type:{name:"credit_card_cvn"},channel_property:"card_details.cvn",required:!0,span:1,join:!0},{group_label:"Cardholder Name",label:"First Name",placeholder:"First Name",type:{name:"text",min_length:1,max_length:50,regex_validators:[{regex:"/^[a-zA-Z\\u00C0-\\u017F\\s]+$/",message:"Invalid input. Please use alphabetic characters only"}]},channel_property:"card_details.cardholder_first_name",required:!0,span:1},{label:"Last Name",placeholder:"Last Name",type:{name:"text",min_length:1,max_length:50,regex_validators:[{regex:"/^[ -~]+$/",message:"Invalid input. Please use alphabetic characters only"}]},channel_property:"card_details.cardholder_last_name",required:!0,span:1},{label:"Email",placeholder:"john.doe@example.com",type:{name:"email"},channel_property:"card_details.cardholder_email",required:!0,span:2},{label:"Mobile Number",placeholder:"8000032341",type:{name:"phone_number"},channel_property:"card_details.cardholder_phone_number",required:!0,span:2},{label:"Installment plan",placeholder:"Select installment plan",type:{name:"installment_plan"},channel_property:["installment_configuration.terms","installment_configuration.interval","installment_configuration.code"],required:!1,span:2},{group_label:"Billing Address",label:"First Name",placeholder:"First Name",type:{name:"text",max_length:255},channel_property:"billing_information.first_name",span:1,required:!0,flags:{require_billing_information:!0}},{label:"Last Name",placeholder:"Last Name",type:{name:"text",max_length:255},channel_property:"billing_information.last_name",span:1,required:!0,flags:{require_billing_information:!0},join:!0},{label:"Email",placeholder:"Email",type:{name:"text",max_length:255},channel_property:"billing_information.email",span:2,required:!0,flags:{require_billing_information:!0},join:!0},{label:"Country",placeholder:"Country",type:{name:"country"},channel_property:"billing_information.country",span:1,required:!0,flags:{require_billing_information:!0},join:!0},{label:"Province",placeholder:"State / Province",type:{name:"province"},channel_property:"billing_information.province_state",span:1,required:!0,flags:{require_billing_information:!0},join:!0},{label:"City",placeholder:"City",type:{name:"text",max_length:255},channel_property:"billing_information.city",span:2,required:!0,flags:{require_billing_information:!0},join:!0},{label:"Address Line 1",placeholder:"Address Line 1",type:{name:"text",max_length:255},channel_property:"billing_information.street_line1",span:2,required:!0,flags:{require_billing_information:!0},join:!0},{label:"Address Line 2",placeholder:"Address Line 2",type:{name:"text",max_length:255},channel_property:"billing_information.street_line2",span:2,required:!0,flags:{require_billing_information:!0},join:!0},{label:"Postal Code",placeholder:"Postal Code",type:{name:"postal_code"},channel_property:"billing_information.postal_code",span:2,required:!0,flags:{require_billing_information:!0},join:!0}],instructions:["Mock Cards channel","This mock channel behaves similarly to the production CARDS channel."]},{brand_name:"Mock E-Wallet Channel (Redirect action)",channel_code:"MOCK_EWALLET",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,_mock_action_type:"REDIRECT",form:[],instructions:["Mock E-Wallet channel","This mock channel behaves similarly to production E-Wallets channels with no user input."]},{brand_name:"Mock E-Wallet Channel (Iframe action)",channel_code:"MOCK_EWALLET_IFRAME",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,_mock_action_type:"IFRAME",form:[],instructions:["Mock E-Wallet channel","This mock channel has as iframe action."]},{brand_name:"Mock E-Wallet Channel (Deeplink action)",channel_code:"MOCK_EWALLET_DEEP_LINK",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,_mock_action_type:"DEEP_LINK",form:[],instructions:["Mock E-Wallet channel","This mock channel has a deeplink action."]},{brand_name:"Mock E-Wallet Channel (Push notification action)",channel_code:"MOCK_EWALLET_PUSH_NOTIFICATION",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,_mock_action_type:"PUSH_NOTIFICATION",form:[],instructions:["Mock E-Wallet channel","This mock channel has a deeplink action."]},{brand_name:"Mock E-Wallet Channel (Phone input)",channel_code:"MOCK_EWALLET_WITH_PHONE",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,_mock_action_type:"REDIRECT",form:[{label:"Phone Number",placeholder:"123 123 132",type:{name:"phone_number"},channel_property:"phone_number_field",required:!0,span:2}],instructions:["Mock E-Wallet channel","This mock channel behaves similarly to production E-Wallets channels with a phone number input."]},{brand_name:"Mock QR Channel",channel_code:"MOCK_QR",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,_mock_action_type:"QR",form:[],instructions:["Mock QR channel","This mock channel behaves similarly to production QR channels."],pm_type:"QR_CODE"},{brand_name:"Mock Direct Debit Channel",channel_code:"MOCK_DIRECT_DEBIT",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[],instructions:["Mock Direct Debit channel","This mock channel behaves similarly to production Direct Debit channels."]},{brand_name:"Mock FPX Business Channel",channel_code:"MOCK_FPX_BUSINESS",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,_mock_action_type:"PENDING",form:[],instructions:["Mock FPX channel","This mock channel behaves similarly to production FPX channels. It has a banner and it will enter the pending state after submission."],banner:{image_url:"https://assets.xendit.co/payment-session/banners/fpx-banner.svg",alt_text:"FPX Pay with Online Banking",aspect_ratio:9.7}},{brand_name:"Mock OTC Channel",channel_code:"MOCK_OTC",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,_mock_action_type:"BARCODE",form:[{label:"Payer Name",placeholder:"Payer Name",type:{name:"text",max_length:50},channel_property:"payer_name",required:!0,span:2}],instructions:["Mock OTC channel","This mock channel behaves similarly to production OTC channels."]},{brand_name:"Mock VA Channel",channel_code:"MOCK_VA",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,_mock_action_type:"VA",form:[],instructions:["Mock VA channel","This mock channel behaves similarly to production VA channels."]},{brand_name:"Mock Installments Channel",channel_code:"MOCK_INSTALLMENTS",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"other",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[{label:"Installment plan",placeholder:"Select installment plan",type:{name:"installment_plan"},channel_property:["installment_configuration.terms","installment_configuration.interval","installment_configuration.code"],required:!1,span:2}],instructions:["Mock Installments channel","This mock channel behaves similarly to production installment channels in Thailand."]},{brand_name:"Input Test",channel_code:"UI_INPUT_TEST",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"ui_tests",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[{label:"Card Number (Iframe)",placeholder:"1234 1234 1234 1234",type:{name:"credit_card_number"},channel_property:"card_number",required:!1,span:2},{label:"Card Expiry Date (Iframe)",placeholder:"MM/YY",type:{name:"credit_card_expiry"},channel_property:["expiry_month","expiry_year"],required:!1,span:2},{label:"CVN (Iframe)",placeholder:"CVV",type:{name:"credit_card_cvn"},channel_property:"cvn",required:!1,span:2},{label:"Text",placeholder:"Text",type:{name:"text",max_length:50},channel_property:"text_field",required:!1,span:2},{label:"Phone Number",placeholder:"123 123 123",type:{name:"phone_number"},channel_property:"phone_number_field",required:!1,span:2},{label:"Email",placeholder:"test@example.com",type:{name:"email"},channel_property:"email_field",required:!1,span:2},{label:"Postal Code",placeholder:"123456",type:{name:"postal_code"},channel_property:"postal_code_field",required:!1,span:2},{label:"Country",placeholder:"Select",type:{name:"country"},channel_property:"country_field",required:!1,span:2},{label:"Dropdown",placeholder:"Select",type:{name:"dropdown",options:[{label:"Option 1",value:"option_1"},{label:"Option 2",value:"option_2"},{label:"Option 3",value:"option_3"},{label:"Option 4",value:"option_4",subtitle:"With subtitle"},{label:"Option 5",value:"option_5",subtitle:"With subtitle"}]},channel_property:"dropdown_field",required:!1,span:2},{label:"Dropdown With Icons",placeholder:"Select",type:{name:"dropdown",options:[{label:"Option 1",value:"option_1",icon_url:"https://placehold.co/16"},{label:"Option 2",value:"option_2",icon_url:"https://placehold.co/16"},{label:"Option 3",value:"option_3",icon_url:"https://placehold.co/16"}]},channel_property:"dropdown_field_with_icons",required:!1,span:2}],instructions:["This test demonstrates basic usage of all input types.","All fields here are optional and blank values should pass validation."]},{brand_name:"Field Grouping Test",channel_code:"UI_FIELD_GROUPING_TEST",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"ui_tests",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[{group_label:"Vertical Grouping",label:"Top",placeholder:"Top",type:{name:"text",max_length:50},channel_property:"a1",required:!1,span:2},{label:"Middle",placeholder:"Middle",type:{name:"text",max_length:50},channel_property:"a2",required:!1,span:2,join:!0},{label:"Bottom",placeholder:"Bottom",type:{name:"text",max_length:50},channel_property:"a3",required:!1,span:2,join:!0},{group_label:"Horizontal Grouping",label:"Text",placeholder:"Left",type:{name:"text",max_length:50},channel_property:"b1",required:!1,span:1},{label:"Text",placeholder:"Right",type:{name:"text",max_length:50},channel_property:"b1",required:!1,span:1,join:!0},{group_label:"Mixed Grouping",label:"Text",placeholder:"Top Left",type:{name:"text",max_length:50},channel_property:"c1",required:!1,span:1},{label:"Text",placeholder:"Top Right",type:{name:"text",max_length:50},channel_property:"c2",required:!1,span:1,join:!0},{label:"Text",placeholder:"Middle Left",type:{name:"text",max_length:50},channel_property:"c3",required:!1,span:1,join:!0},{label:"Text",placeholder:"Middle Right",type:{name:"text",max_length:50},channel_property:"c4",required:!1,span:1,join:!0},{label:"Text",placeholder:"Bottom Left",type:{name:"text",max_length:50},channel_property:"c5",required:!1,span:1,join:!0},{label:"Text",placeholder:"Bottom Right",type:{name:"text",max_length:50},channel_property:"c6",required:!1,span:1,join:!0}],instructions:["This test demonstrates field grouping.","Fields can be 1 or 2 cells wide and can be grouped in any arrangement."]},{brand_name:"Text Validation Test",channel_code:"UI_TEXT_VALIDATION_TEST",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"ui_tests",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[{label:"Required Text Field",placeholder:"Required",type:{name:"text",max_length:50},channel_property:"required",required:!0,span:2},{label:"Validate Minimum Length (5)",placeholder:"Min 5 characters",type:{name:"text",min_length:5,max_length:50},channel_property:"min_5_chars",required:!1,span:2},{label:"Validate Using Regexp (/^[a-zA-Z0-9]+$/)",placeholder:"Alphanumeric only",type:{name:"text",max_length:50,regex_validators:[{regex:"/^[a-zA-Z0-9]+$/",message:"Invalid input. Please use alphanumeric characters only"}]},channel_property:"regexp_validation",required:!1,span:2}],instructions:["This test demonstrates text field validation.","Fields should validate on blur or `submit()` or `revealValidationErrors()`. Blurring a blank field does not trigger validation."]},{brand_name:"State/Province Field Test",channel_code:"UI_STATE_PROVINCE_TEST",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"ui_tests",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[{group_label:"Country + State/Province Fields",label:"Country",placeholder:"Country",type:{name:"country"},channel_property:"country_field",required:!0,span:2},{label:"State / Province",placeholder:"State / Province",type:{name:"province"},channel_property:"province_field",required:!0,span:2,join:!0},{group_label:"Country + State/Province Fields (Horizontal Grouping)",label:"Country",placeholder:"Country",type:{name:"country"},channel_property:"country_field_2",required:!0,span:1},{label:"State / Province",placeholder:"State / Province",type:{name:"province"},channel_property:"province_field_2",required:!0,span:1,join:!0}],instructions:["This test demonstrates the country + state/province field combination.","Selecting certain countries (US, CA, GB) should change the state/province field to a dropdown with predefined options."]},{brand_name:"Conditional Field Test",channel_code:"UI_CONDITIONAL_FIELD_TEST",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"ui_tests",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[{label:"Toggle Hidden Field",placeholder:"Select",type:{name:"dropdown",options:[{label:"Show",value:"show"},{label:"Hide",value:"hide"}]},channel_property:"toggle",required:!0,span:2},{label:"Conditional Field",placeholder:"This field is conditionally shown",type:{name:"text",max_length:50},channel_property:"conditional_field",required:!0,span:2,join:!0,display_if:[["toggle","equals","show"]]}],instructions:["This test demonstrates conditional field display based on another field's value.","The second field should only appear if 'Show' is selected in the first field."]},{brand_name:"Save Payment Details Test",channel_code:"UI_SAVE_PAYMENT_DETAILS_TEST",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"ui_tests",allow_pay_without_save:!0,allow_save:!0,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[],instructions:["This channel supports both one-time payment and pay-and-save.","A checkbox should be displayed."]},{brand_name:"Paired Channels Test",channel_code:"UI_PAIRED_CHANNELS_TEST_1",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"ui_tests",allow_pay_without_save:!0,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[{label:"This should show if the save checkbox is unchecked",placeholder:"Unchecked",type:{name:"text",max_length:50},channel_property:"nonsave",required:!1,span:2}],instructions:["This channel does not support save, but has a paired channel that does.","Changing the save checkbox switches between the two channels."]},{brand_name:"Paired Channels Test",channel_code:"UI_PAIRED_CHANNELS_TEST_2",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"ui_tests",allow_pay_without_save:!1,allow_save:!0,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[{label:"This should show if the save checkbox is checked",placeholder:"Checked",type:{name:"text",max_length:50},channel_property:"save",required:!1,span:2}],instructions:["This channel can only be used for pay-and-save, but has a paired channel that supports one time payment.","Changing the save checkbox switches between the two channels."]},{brand_name:"Banner Test",channel_code:"UI_BANNER_TEST",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"ui_tests",allow_pay_without_save:!0,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,banner:{image_url:"https://placehold.co/512x32.svg?text=Banner",alt_text:"",aspect_ratio:16},form:[],instructions:["This channel has a banner image.","It should be displayed above this text."]},{brand_name:"Single Item Test",channel_code:"GROUP_SINGLE_ITEM_TEST",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"single_item",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[],instructions:["This channel is in a group by itself.","The channel picker should automatically select it when the group is opened."]},{brand_name:"Disabled Group Test",channel_code:"GROUP_DISABLED_GROUP_TEST",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"disabled",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:999999999,max_amount:9999999999,requires_customer_details:!1,form:[],instructions:["This channel is in a disabled group.","Since all channels in this group are disabled, the group should not be selectable. You should never see this text because creating this channel will throw an error."]},{brand_name:"Partial Disabled Group (Enabled)",channel_code:"GROUP_PARTIAL_DISABLED_1",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"partial_disabled",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:1e3,max_amount:1e8,requires_customer_details:!1,form:[],instructions:["This channel is in a partially disabled group.","This channel is enabled, but the other channel in the group is disabled. This channel should be automatically selected by the channel picker because it's the only enabled option."]},{brand_name:"Partial Disabled Group (Disabled)",channel_code:"GROUP_PARTIAL_DISABLED_2",brand_logo_url:"https://placehold.co/48x48.png?text=Logo",ui_group:"partial_disabled",allow_pay_without_save:!1,allow_save:!1,brand_color:"#000000",min_amount:999999999,max_amount:9999999999,requires_customer_details:!1,form:[],instructions:["This channel is in a partially disabled group.","This channel is disabled. You should never see this text because creating this channel will throw an error."]}],channel_ui_groups:[{id:"cards",label:"Mock Cards",icon_url:"https://assets.xendit.co/payment-session/logos/CARDS.svg"},{id:"other",label:"Other Mock Channels",icon_url:"https://placehold.co/48x48.png?text=Logo"},{id:"ui_tests",label:"Channel UI Test Cases",icon_url:"https://placehold.co/48x48.png?text=Logo"},{id:"single_item",label:"Mock Single Item Group",icon_url:"https://placehold.co/48x48.png?text=Logo"},{id:"disabled",label:"Mock Disabled Group",icon_url:"https://placehold.co/48x48.png?text=Logo"},{id:"partial_disabled",label:"Mock Partial Disabled Group",icon_url:"https://placehold.co/48x48.png?text=Logo"}],digital_wallets:{google_pay:{merchant_id:"mock-googlepay-merchant-id",allowed_payment_methods:[{channel_code:"CARDS",payment_request_id:`pr-${e(32)}`,payment_method_specification:{type:"CARD",parameters:{billingAddressRequired:!0,allowedAuthMethods:["PAN_ONLY","CRYPTOGRAM_3DS"],allowedCardNetworks:["AMEX","MASTERCARD","VISA"]},tokenizationSpecification:{type:"PAYMENT_GATEWAY",parameters:{gateway:"xendit",gatewayMerchantId:"exampleGatewayMerchantId"}}}}]}}}}export{n as makeTestBffData};
3
+ //# sourceMappingURL=test-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-data.js","sources":["../../src/data/test-data.ts"],"sourcesContent":["import { BffResponse } from \"../backend-types/common\";\nimport { randomHexString, randomUUID } from \"../utils\";\n\nconst ONE_MONTH_IN_MS = 30 * 24 * 60 * 60 * 1000;\n\nexport function makeTestBffData(): BffResponse {\n const mockNow = new Date().toISOString();\n const mockExpiry = new Date(Date.now() + ONE_MONTH_IN_MS).toISOString();\n return {\n session: {\n payment_session_id: `ps-${randomHexString(24)}`,\n created: mockNow,\n updated: mockNow,\n status: \"ACTIVE\",\n reference_id: randomUUID(),\n description: \"Test session\",\n currency: \"IDR\",\n amount: 10000,\n country: \"ID\",\n expires_at: mockExpiry,\n session_type: \"PAY\",\n mode: \"COMPONENTS\",\n locale: \"en\",\n business_id: randomHexString(24),\n customer_id: `cust-${randomUUID()}`,\n capture_method: \"AUTOMATIC\",\n allow_save_payment_method: \"OPTIONAL\",\n items: [\n {\n reference_id: randomUUID(),\n type: \"DIGITAL_PRODUCT\",\n name: \"Item 1\",\n net_unit_amount: 50000,\n quantity: 1,\n category: \"\",\n },\n {\n reference_id: randomUUID(),\n type: \"DIGITAL_SERVICE\",\n name: \"Item 2\",\n net_unit_amount: 50000,\n quantity: 1,\n category: \"\",\n },\n ],\n },\n business: {\n name: \"Components Mock Merchant\",\n country_of_operation: \"Indonesia\",\n merchant_profile_picture_url:\n \"https://placehold.co/256x256.png?text=Logo\",\n },\n customer: {\n type: \"INDIVIDUAL\",\n id: `cust-${randomUUID()}`,\n email: \"exa**@example.com\",\n mobile_number: null,\n phone_number: null,\n individual_detail: {\n given_names: \"exa********\",\n surname: null,\n },\n business_detail: null,\n },\n channels: [\n {\n brand_name: \"Cards\",\n channel_code: \"CARDS\",\n brand_logo_url:\n \"https://assets.xendit.co/payment-session/logos/CARDS.svg\",\n ui_group: \"cards\",\n allow_pay_without_save: true,\n allow_save: true,\n brand_color: \"#000000\",\n min_amount: 5000,\n max_amount: 200000000,\n requires_customer_details: false,\n _mock_action_type: \"IFRAME\",\n card: {\n brands: [\n {\n name: \"VISA\",\n logo_url:\n \"https://assets.xendit.co/payment-session/logos/VISA.svg\",\n },\n {\n name: \"MASTERCARD\",\n logo_url:\n \"https://assets.xendit.co/payment-session/logos/MASTERCARD.svg\",\n },\n {\n name: \"JCB\",\n logo_url:\n \"https://assets.xendit.co/payment-session/logos/JCB.svg\",\n },\n ],\n },\n form: [\n {\n group_label: \"Card Details\",\n label: \"Card Number\",\n placeholder: \"1234 1234 1234 1234\",\n type: {\n name: \"credit_card_number\",\n },\n channel_property: \"card_details.card_number\",\n required: true,\n span: 2,\n },\n {\n label: \"Card Expiry Date\",\n placeholder: \"MM/YY\",\n type: {\n name: \"credit_card_expiry\",\n },\n channel_property: [\n \"card_details.expiry_month\",\n \"card_details.expiry_year\",\n ],\n required: true,\n span: 1,\n join: true,\n },\n {\n label: \"CVN\",\n placeholder: \"CVV\",\n type: {\n name: \"credit_card_cvn\",\n },\n channel_property: \"card_details.cvn\",\n required: true,\n span: 1,\n join: true,\n },\n {\n group_label: \"Cardholder Name\",\n label: \"First Name\",\n placeholder: \"First Name\",\n type: {\n name: \"text\",\n min_length: 1,\n max_length: 50,\n regex_validators: [\n {\n regex: \"/^[a-zA-Z\\\\u00C0-\\\\u017F\\\\s]+$/\",\n message:\n \"Invalid input. Please use alphabetic characters only\",\n },\n ],\n },\n channel_property: \"card_details.cardholder_first_name\",\n required: true,\n span: 1,\n },\n {\n label: \"Last Name\",\n placeholder: \"Last Name\",\n type: {\n name: \"text\",\n min_length: 1,\n max_length: 50,\n regex_validators: [\n {\n regex: \"/^[ -~]+$/\",\n message:\n \"Invalid input. Please use alphabetic characters only\",\n },\n ],\n },\n channel_property: \"card_details.cardholder_last_name\",\n required: true,\n span: 1,\n },\n {\n label: \"Email\",\n placeholder: \"john.doe@example.com\",\n type: {\n name: \"email\",\n },\n channel_property: \"card_details.cardholder_email\",\n required: true,\n span: 2,\n },\n {\n label: \"Mobile Number\",\n placeholder: \"8000032341\",\n type: {\n name: \"phone_number\",\n },\n channel_property: \"card_details.cardholder_phone_number\",\n required: true,\n span: 2,\n },\n {\n label: \"Installment plan\",\n placeholder: \"Select installment plan\",\n type: {\n name: \"installment_plan\",\n },\n channel_property: [\n \"installment_configuration.terms\",\n \"installment_configuration.interval\",\n \"installment_configuration.code\",\n ],\n required: false,\n span: 2,\n },\n {\n group_label: \"Billing Address\",\n label: \"First Name\",\n placeholder: \"First Name\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.first_name\",\n span: 1,\n required: true,\n flags: {\n require_billing_information: true,\n },\n },\n {\n label: \"Last Name\",\n placeholder: \"Last Name\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.last_name\",\n span: 1,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Email\",\n placeholder: \"Email\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.email\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Country\",\n placeholder: \"Country\",\n type: {\n name: \"country\",\n },\n channel_property: \"billing_information.country\",\n span: 1,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Province\",\n placeholder: \"State / Province\",\n type: {\n name: \"province\",\n },\n channel_property: \"billing_information.province_state\",\n span: 1,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"City\",\n placeholder: \"City\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.city\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Address Line 1\",\n placeholder: \"Address Line 1\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.street_line1\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Address Line 2\",\n placeholder: \"Address Line 2\",\n type: {\n name: \"text\",\n max_length: 255,\n },\n channel_property: \"billing_information.street_line2\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n {\n label: \"Postal Code\",\n placeholder: \"Postal Code\",\n type: {\n name: \"postal_code\",\n },\n channel_property: \"billing_information.postal_code\",\n span: 2,\n required: true,\n flags: {\n require_billing_information: true,\n },\n join: true,\n },\n ],\n instructions: [\n \"Mock Cards channel\",\n \"This mock channel behaves similarly to the production CARDS channel.\",\n ],\n },\n {\n brand_name: \"Mock E-Wallet Channel (Redirect action)\",\n channel_code: \"MOCK_EWALLET\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n _mock_action_type: \"REDIRECT\",\n form: [],\n instructions: [\n \"Mock E-Wallet channel\",\n \"This mock channel behaves similarly to production E-Wallets channels with no user input.\",\n ],\n },\n {\n brand_name: \"Mock E-Wallet Channel (Iframe action)\",\n channel_code: \"MOCK_EWALLET_IFRAME\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n _mock_action_type: \"IFRAME\",\n form: [],\n instructions: [\n \"Mock E-Wallet channel\",\n \"This mock channel has as iframe action.\",\n ],\n },\n {\n brand_name: \"Mock E-Wallet Channel (Deeplink action)\",\n channel_code: \"MOCK_EWALLET_DEEP_LINK\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n _mock_action_type: \"DEEP_LINK\",\n form: [],\n instructions: [\n \"Mock E-Wallet channel\",\n \"This mock channel has a deeplink action.\",\n ],\n },\n {\n brand_name: \"Mock E-Wallet Channel (Push notification action)\",\n channel_code: \"MOCK_EWALLET_PUSH_NOTIFICATION\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n _mock_action_type: \"PUSH_NOTIFICATION\",\n form: [],\n instructions: [\n \"Mock E-Wallet channel\",\n \"This mock channel has a deeplink action.\",\n ],\n },\n {\n brand_name: \"Mock E-Wallet Channel (Phone input)\",\n channel_code: \"MOCK_EWALLET_WITH_PHONE\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n _mock_action_type: \"REDIRECT\",\n form: [\n {\n label: \"Phone Number\",\n placeholder: \"123 123 132\",\n type: {\n name: \"phone_number\",\n },\n channel_property: \"phone_number_field\",\n required: true,\n span: 2,\n },\n ],\n instructions: [\n \"Mock E-Wallet channel\",\n \"This mock channel behaves similarly to production E-Wallets channels with a phone number input.\",\n ],\n },\n {\n brand_name: \"Mock QR Channel\",\n channel_code: \"MOCK_QR\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n _mock_action_type: \"QR\",\n form: [],\n instructions: [\n \"Mock QR channel\",\n \"This mock channel behaves similarly to production QR channels.\",\n ],\n pm_type: \"QR_CODE\",\n },\n {\n brand_name: \"Mock Direct Debit Channel\",\n channel_code: \"MOCK_DIRECT_DEBIT\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"Mock Direct Debit channel\",\n \"This mock channel behaves similarly to production Direct Debit channels.\",\n ],\n },\n {\n brand_name: \"Mock FPX Business Channel\",\n channel_code: \"MOCK_FPX_BUSINESS\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n _mock_action_type: \"PENDING\",\n form: [],\n instructions: [\n \"Mock FPX channel\",\n \"This mock channel behaves similarly to production FPX channels. It has a banner and it will enter the pending state after submission.\",\n ],\n banner: {\n image_url:\n \"https://assets.xendit.co/payment-session/banners/fpx-banner.svg\",\n alt_text: \"FPX Pay with Online Banking\",\n aspect_ratio: 9.7,\n },\n },\n {\n brand_name: \"Mock OTC Channel\",\n channel_code: \"MOCK_OTC\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n _mock_action_type: \"BARCODE\",\n form: [\n {\n label: \"Payer Name\",\n placeholder: \"Payer Name\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"payer_name\",\n required: true,\n span: 2,\n },\n ],\n instructions: [\n \"Mock OTC channel\",\n \"This mock channel behaves similarly to production OTC channels.\",\n ],\n },\n {\n brand_name: \"Mock VA Channel\",\n channel_code: \"MOCK_VA\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n _mock_action_type: \"VA\",\n form: [],\n instructions: [\n \"Mock VA channel\",\n \"This mock channel behaves similarly to production VA channels.\",\n ],\n },\n {\n brand_name: \"Mock Installments Channel\",\n channel_code: \"MOCK_INSTALLMENTS\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"other\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"Installment plan\",\n placeholder: \"Select installment plan\",\n type: {\n name: \"installment_plan\",\n },\n channel_property: [\n \"installment_configuration.terms\",\n \"installment_configuration.interval\",\n \"installment_configuration.code\",\n ],\n required: false,\n span: 2,\n },\n ],\n instructions: [\n \"Mock Installments channel\",\n \"This mock channel behaves similarly to production installment channels in Thailand.\",\n ],\n },\n {\n brand_name: \"Input Test\",\n channel_code: \"UI_INPUT_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"Card Number (Iframe)\",\n placeholder: \"1234 1234 1234 1234\",\n type: {\n name: \"credit_card_number\",\n },\n channel_property: \"card_number\",\n required: false,\n span: 2,\n },\n {\n label: \"Card Expiry Date (Iframe)\",\n placeholder: \"MM/YY\",\n type: {\n name: \"credit_card_expiry\",\n },\n channel_property: [\"expiry_month\", \"expiry_year\"],\n required: false,\n span: 2,\n },\n {\n label: \"CVN (Iframe)\",\n placeholder: \"CVV\",\n type: {\n name: \"credit_card_cvn\",\n },\n channel_property: \"cvn\",\n required: false,\n span: 2,\n },\n {\n label: \"Text\",\n placeholder: \"Text\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"text_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Phone Number\",\n placeholder: \"123 123 123\",\n type: {\n name: \"phone_number\",\n },\n channel_property: \"phone_number_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Email\",\n placeholder: \"test@example.com\",\n type: {\n name: \"email\",\n },\n channel_property: \"email_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Postal Code\",\n placeholder: \"123456\",\n type: {\n name: \"postal_code\",\n },\n channel_property: \"postal_code_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Country\",\n placeholder: \"Select\",\n type: {\n name: \"country\",\n },\n channel_property: \"country_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Dropdown\",\n placeholder: \"Select\",\n type: {\n name: \"dropdown\",\n options: [\n { label: \"Option 1\", value: \"option_1\" },\n { label: \"Option 2\", value: \"option_2\" },\n { label: \"Option 3\", value: \"option_3\" },\n {\n label: \"Option 4\",\n value: \"option_4\",\n subtitle: \"With subtitle\",\n },\n {\n label: \"Option 5\",\n value: \"option_5\",\n subtitle: \"With subtitle\",\n },\n ],\n },\n channel_property: \"dropdown_field\",\n required: false,\n span: 2,\n },\n {\n label: \"Dropdown With Icons\",\n placeholder: \"Select\",\n type: {\n name: \"dropdown\",\n options: [\n {\n label: \"Option 1\",\n value: \"option_1\",\n icon_url: \"https://placehold.co/16\",\n },\n {\n label: \"Option 2\",\n value: \"option_2\",\n icon_url: \"https://placehold.co/16\",\n },\n {\n label: \"Option 3\",\n value: \"option_3\",\n icon_url: \"https://placehold.co/16\",\n },\n ],\n },\n channel_property: \"dropdown_field_with_icons\",\n required: false,\n span: 2,\n },\n ],\n instructions: [\n \"This test demonstrates basic usage of all input types.\",\n \"All fields here are optional and blank values should pass validation.\",\n ],\n },\n {\n brand_name: \"Field Grouping Test\",\n channel_code: \"UI_FIELD_GROUPING_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n group_label: \"Vertical Grouping\",\n label: \"Top\",\n placeholder: \"Top\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"a1\",\n required: false,\n span: 2,\n },\n {\n label: \"Middle\",\n placeholder: \"Middle\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"a2\",\n required: false,\n span: 2,\n join: true,\n },\n {\n label: \"Bottom\",\n placeholder: \"Bottom\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"a3\",\n required: false,\n span: 2,\n join: true,\n },\n {\n group_label: \"Horizontal Grouping\",\n label: \"Text\",\n placeholder: \"Left\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"b1\",\n required: false,\n span: 1,\n },\n {\n label: \"Text\",\n placeholder: \"Right\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"b1\",\n required: false,\n span: 1,\n join: true,\n },\n {\n group_label: \"Mixed Grouping\",\n label: \"Text\",\n placeholder: \"Top Left\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c1\",\n required: false,\n span: 1,\n },\n {\n label: \"Text\",\n placeholder: \"Top Right\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c2\",\n required: false,\n span: 1,\n join: true,\n },\n {\n label: \"Text\",\n placeholder: \"Middle Left\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c3\",\n required: false,\n span: 1,\n join: true,\n },\n {\n label: \"Text\",\n placeholder: \"Middle Right\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c4\",\n required: false,\n span: 1,\n join: true,\n },\n {\n label: \"Text\",\n placeholder: \"Bottom Left\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c5\",\n required: false,\n span: 1,\n join: true,\n },\n {\n label: \"Text\",\n placeholder: \"Bottom Right\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"c6\",\n required: false,\n span: 1,\n join: true,\n },\n ],\n instructions: [\n \"This test demonstrates field grouping.\",\n \"Fields can be 1 or 2 cells wide and can be grouped in any arrangement.\",\n ],\n },\n {\n brand_name: \"Text Validation Test\",\n channel_code: \"UI_TEXT_VALIDATION_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"Required Text Field\",\n placeholder: \"Required\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"required\",\n required: true,\n span: 2,\n },\n {\n label: \"Validate Minimum Length (5)\",\n placeholder: \"Min 5 characters\",\n type: {\n name: \"text\",\n min_length: 5,\n max_length: 50,\n },\n channel_property: \"min_5_chars\",\n required: false,\n span: 2,\n },\n {\n label: \"Validate Using Regexp (/^[a-zA-Z0-9]+$/)\",\n placeholder: \"Alphanumeric only\",\n type: {\n name: \"text\",\n max_length: 50,\n regex_validators: [\n {\n regex: \"/^[a-zA-Z0-9]+$/\",\n message:\n \"Invalid input. Please use alphanumeric characters only\",\n },\n ],\n },\n channel_property: \"regexp_validation\",\n required: false,\n span: 2,\n },\n ],\n instructions: [\n \"This test demonstrates text field validation.\",\n \"Fields should validate on blur or `submit()` or `revealValidationErrors()`. Blurring a blank field does not trigger validation.\",\n ],\n },\n {\n brand_name: \"State/Province Field Test\",\n channel_code: \"UI_STATE_PROVINCE_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n group_label: \"Country + State/Province Fields\",\n label: \"Country\",\n placeholder: \"Country\",\n type: {\n name: \"country\",\n },\n channel_property: \"country_field\",\n required: true,\n span: 2,\n },\n {\n label: \"State / Province\",\n placeholder: \"State / Province\",\n type: {\n name: \"province\",\n },\n channel_property: \"province_field\",\n required: true,\n span: 2,\n join: true,\n },\n {\n group_label:\n \"Country + State/Province Fields (Horizontal Grouping)\",\n label: \"Country\",\n placeholder: \"Country\",\n type: {\n name: \"country\",\n },\n channel_property: \"country_field_2\",\n required: true,\n span: 1,\n },\n {\n label: \"State / Province\",\n placeholder: \"State / Province\",\n type: {\n name: \"province\",\n },\n channel_property: \"province_field_2\",\n required: true,\n span: 1,\n join: true,\n },\n ],\n instructions: [\n \"This test demonstrates the country + state/province field combination.\",\n \"Selecting certain countries (US, CA, GB) should change the state/province field to a dropdown with predefined options.\",\n ],\n },\n {\n brand_name: \"Conditional Field Test\",\n channel_code: \"UI_CONDITIONAL_FIELD_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"Toggle Hidden Field\",\n placeholder: \"Select\",\n type: {\n name: \"dropdown\",\n options: [\n { label: \"Show\", value: \"show\" },\n { label: \"Hide\", value: \"hide\" },\n ],\n },\n channel_property: \"toggle\",\n required: true,\n span: 2,\n },\n {\n label: \"Conditional Field\",\n placeholder: \"This field is conditionally shown\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"conditional_field\",\n required: true,\n span: 2,\n join: true,\n display_if: [[\"toggle\", \"equals\", \"show\"]],\n },\n ],\n instructions: [\n \"This test demonstrates conditional field display based on another field's value.\",\n \"The second field should only appear if 'Show' is selected in the first field.\",\n ],\n },\n {\n brand_name: \"Save Payment Details Test\",\n channel_code: \"UI_SAVE_PAYMENT_DETAILS_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: true,\n allow_save: true,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel supports both one-time payment and pay-and-save.\",\n \"A checkbox should be displayed.\",\n ],\n },\n {\n brand_name: \"Paired Channels Test\",\n channel_code: \"UI_PAIRED_CHANNELS_TEST_1\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: true,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"This should show if the save checkbox is unchecked\",\n placeholder: \"Unchecked\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"nonsave\",\n required: false,\n span: 2,\n },\n ],\n instructions: [\n \"This channel does not support save, but has a paired channel that does.\",\n \"Changing the save checkbox switches between the two channels.\",\n ],\n },\n {\n brand_name: \"Paired Channels Test\",\n channel_code: \"UI_PAIRED_CHANNELS_TEST_2\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: false,\n allow_save: true,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [\n {\n label: \"This should show if the save checkbox is checked\",\n placeholder: \"Checked\",\n type: {\n name: \"text\",\n max_length: 50,\n },\n channel_property: \"save\",\n required: false,\n span: 2,\n },\n ],\n instructions: [\n \"This channel can only be used for pay-and-save, but has a paired channel that supports one time payment.\",\n \"Changing the save checkbox switches between the two channels.\",\n ],\n },\n {\n brand_name: \"Banner Test\",\n channel_code: \"UI_BANNER_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"ui_tests\",\n allow_pay_without_save: true,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n banner: {\n image_url: \"https://placehold.co/512x32.svg?text=Banner\",\n alt_text: \"\",\n aspect_ratio: 16,\n },\n form: [],\n instructions: [\n \"This channel has a banner image.\",\n \"It should be displayed above this text.\",\n ],\n },\n {\n brand_name: \"Single Item Test\",\n channel_code: \"GROUP_SINGLE_ITEM_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"single_item\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel is in a group by itself.\",\n \"The channel picker should automatically select it when the group is opened.\",\n ],\n },\n {\n brand_name: \"Disabled Group Test\",\n channel_code: \"GROUP_DISABLED_GROUP_TEST\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"disabled\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 999999999,\n max_amount: 9999999999,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel is in a disabled group.\",\n \"Since all channels in this group are disabled, the group should not be selectable. You should never see this text because creating this channel will throw an error.\",\n ],\n },\n {\n brand_name: \"Partial Disabled Group (Enabled)\",\n channel_code: \"GROUP_PARTIAL_DISABLED_1\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"partial_disabled\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 1000,\n max_amount: 100000000,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel is in a partially disabled group.\",\n \"This channel is enabled, but the other channel in the group is disabled. This channel should be automatically selected by the channel picker because it's the only enabled option.\",\n ],\n },\n {\n brand_name: \"Partial Disabled Group (Disabled)\",\n channel_code: \"GROUP_PARTIAL_DISABLED_2\",\n brand_logo_url: \"https://placehold.co/48x48.png?text=Logo\",\n ui_group: \"partial_disabled\",\n allow_pay_without_save: false,\n allow_save: false,\n brand_color: \"#000000\",\n min_amount: 999999999,\n max_amount: 9999999999,\n requires_customer_details: false,\n form: [],\n instructions: [\n \"This channel is in a partially disabled group.\",\n \"This channel is disabled. You should never see this text because creating this channel will throw an error.\",\n ],\n },\n ],\n channel_ui_groups: [\n {\n id: \"cards\",\n label: \"Mock Cards\",\n icon_url: \"https://assets.xendit.co/payment-session/logos/CARDS.svg\",\n },\n {\n id: \"other\",\n label: \"Other Mock Channels\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n {\n id: \"ui_tests\",\n label: \"Channel UI Test Cases\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n {\n id: \"single_item\",\n label: \"Mock Single Item Group\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n {\n id: \"disabled\",\n label: \"Mock Disabled Group\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n {\n id: \"partial_disabled\",\n label: \"Mock Partial Disabled Group\",\n icon_url: \"https://placehold.co/48x48.png?text=Logo\",\n },\n ],\n digital_wallets: {\n google_pay: {\n merchant_id: \"mock-googlepay-merchant-id\",\n allowed_payment_methods: [\n {\n channel_code: \"CARDS\",\n payment_request_id: `pr-${randomHexString(32)}`,\n payment_method_specification: {\n type: \"CARD\",\n parameters: {\n billingAddressRequired: true,\n allowedAuthMethods: [\"PAN_ONLY\", \"CRYPTOGRAM_3DS\"],\n allowedCardNetworks: [\"AMEX\", \"MASTERCARD\", \"VISA\"],\n } satisfies google.payments.api.CardParameters,\n tokenizationSpecification: {\n type: \"PAYMENT_GATEWAY\",\n parameters: {\n gateway: \"xendit\",\n gatewayMerchantId: \"exampleGatewayMerchantId\",\n },\n },\n },\n },\n ],\n },\n },\n };\n}\n"],"names":["makeTestBffData","mockNow","Date","toISOString","mockExpiry","now","session","payment_session_id","randomHexString","created","updated","status","reference_id","randomUUID","description","currency","amount","country","expires_at","session_type","mode","locale","business_id","customer_id","capture_method","allow_save_payment_method","items","type","name","net_unit_amount","quantity","category","business","country_of_operation","merchant_profile_picture_url","customer","id","email","mobile_number","phone_number","individual_detail","given_names","surname","business_detail","channels","brand_name","channel_code","brand_logo_url","ui_group","allow_pay_without_save","allow_save","brand_color","min_amount","max_amount","requires_customer_details","_mock_action_type","card","brands","logo_url","form","group_label","label","placeholder","channel_property","required","span","join","min_length","max_length","regex_validators","regex","message","flags","require_billing_information","instructions","pm_type","banner","image_url","alt_text","aspect_ratio","options","value","subtitle","icon_url","display_if","channel_ui_groups","digital_wallets","google_pay","merchant_id","allowed_payment_methods","payment_request_id","payment_method_specification","parameters","billingAddressRequired","allowedAuthMethods","allowedCardNetworks","tokenizationSpecification","gateway","gatewayMerchantId"],"mappings":"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"}
@@ -27,6 +27,17 @@ export declare interface ChannelProperties {
27
27
  */
28
28
  export declare type ChannelPropertyPrimative = string | number | boolean | undefined;
29
29
 
30
+ /**
31
+ * @public
32
+ */
33
+ export declare type DigitalWalletOptions<T extends XenditDigitalWalletCode> = T extends "GOOGLE_PAY" ? {
34
+ buttonColor?: "default" | "black" | "white";
35
+ buttonType?: "pay" | "book" | "buy" | "checkout" | "order" | "plain" | "long" | "short";
36
+ buttonRadius?: number;
37
+ buttonSizeMode?: "fill" | "static";
38
+ buttonBorderType?: "no_border" | "default_border";
39
+ } : never;
40
+
30
41
  /**
31
42
  * @public
32
43
  */
@@ -380,6 +391,27 @@ export declare class XenditComponents extends EventTarget {
380
391
  * Event handler called when the session has expired or been cancelled.
381
392
  */
382
393
  addEventListener(name: "session-expired-or-canceled", listener: XenditEventListener<XenditSessionExpiredOrCanceledEvent>, options?: boolean | AddEventListenerOptions): void;
394
+ /**
395
+ * @public
396
+ * Event handler called on pending state. You should show a pending UI in response to this event.
397
+ *
398
+ * The pending state means an associated payment request or token will take some time to complete.
399
+ * No other payment attempts can be made while in the pending state.
400
+ *
401
+ * This occurs for payments requiring manual confirmation, e.g. FPX business payments.
402
+ *
403
+ * The pending state usually occurs after a submission-end event.
404
+ * This event will also be fired if the SDK is initialized and the session is already pending.
405
+ */
406
+ addEventListener(name: "session-pending", listener: XenditEventListener<XenditSessionPendingEvent>, options?: boolean | AddEventListenerOptions): void;
407
+ /**
408
+ * @public
409
+ * Event handler called when exiting the pending state.
410
+ *
411
+ * After the pending state, the session may be in the active state, allowing further attempts, or
412
+ * it may be completed or expired/canceled, in which case the respective event will be fired immediently after this one.
413
+ */
414
+ addEventListener(name: "session-not-pending", listener: XenditEventListener<XenditSessionNotPendingEvent>, options?: boolean | AddEventListenerOptions): void;
383
415
  /**
384
416
  * @public
385
417
  * Event handler called when something unrecoverable has happened. You should create a new
@@ -459,6 +491,25 @@ export declare interface XenditCustomer {
459
491
  };
460
492
  }
461
493
 
494
+ /**
495
+ * @public
496
+ */
497
+ export declare type XenditDigitalWallet = {
498
+ /**
499
+ * Identifier for the digital wallet, the only supported one right now is GOOGLE_PAY.
500
+ */
501
+ digitalWalletCode: XenditDigitalWalletCode;
502
+ /**
503
+ * The supported channel codes for this digital wallet.
504
+ */
505
+ channels: XenditPaymentChannel[];
506
+ };
507
+
508
+ /**
509
+ * @public
510
+ */
511
+ export declare type XenditDigitalWalletCode = "GOOGLE_PAY";
512
+
462
513
  /**
463
514
  * @public
464
515
  */
@@ -471,11 +522,15 @@ export declare type XenditEventMap = {
471
522
  init: XenditInitEvent;
472
523
  "submission-ready": XenditReadyEvent;
473
524
  "submission-not-ready": XenditReadyEvent;
525
+ "submission-begin": XenditSubmissionBeginEvent;
526
+ "submission-end": XenditSubmissionEndEvent;
474
527
  "action-begin": XenditActionBeginEvent;
475
528
  "action-end": XenditActionEndEvent;
476
529
  "will-redirect": XenditWillRedirectEvent;
477
530
  "session-complete": XenditSessionCompleteEvent;
478
531
  "session-expired-or-canceled": XenditSessionExpiredOrCanceledEvent;
532
+ "session-pending": XenditSessionPendingEvent;
533
+ "session-not-pending": XenditSessionNotPendingEvent;
479
534
  "payment-request-created": XenditPaymentRequestCreatedEvent;
480
535
  "payment-request-discarded": XenditPaymentRequestDiscardedEvent;
481
536
  "payment-token-created": XenditPaymentTokenCreatedEvent;
@@ -720,7 +775,7 @@ export declare interface XenditSession {
720
775
  /**
721
776
  * Status of the session.
722
777
  */
723
- status: "ACTIVE" | "CANCELED" | "EXPIRED" | "COMPLETED";
778
+ status: "ACTIVE" | "PENDING" | "CANCELED" | "EXPIRED" | "COMPLETED";
724
779
  /**
725
780
  * Indicates whether the customer is allowed to save their payment method during this session.
726
781
  *
@@ -788,6 +843,24 @@ export declare class XenditSessionExpiredOrCanceledEvent extends Event {
788
843
  constructor();
789
844
  }
790
845
 
846
+ /**
847
+ * @public
848
+ * Event fired when the session is no longer pending.
849
+ */
850
+ export declare class XenditSessionNotPendingEvent extends Event {
851
+ static type: "session-not-pending";
852
+ constructor();
853
+ }
854
+
855
+ /**
856
+ * @public
857
+ * Event fired when the session is pending.
858
+ */
859
+ export declare class XenditSessionPendingEvent extends Event {
860
+ static type: "session-pending";
861
+ constructor();
862
+ }
863
+
791
864
  /**
792
865
  * @public
793
866
  * Event fired after submission begins.