- get plans via api

- subscribe to plan at the frontend
This commit is contained in:
Čarodej
2021-11-11 14:57:53 +01:00
parent 8387467ee7
commit c7dab4b268
14 changed files with 567 additions and 153 deletions

View File

@@ -48,7 +48,6 @@ return [
'admin_page_plans.tabs.settings' => 'Settings',
'admin_page_plans.tabs.subscribers' => 'Subscribers',
'admin_page_user.subscription.empty' => "User don't have any subscription yet.",
'admin_page_user.subscription.interval_mo' => 'Monthly',
'admin_page_user.table.plan' => 'Subscription Plan',
'admin_page_user.tabs.invoices' => 'Invoices',
'admin_page_user.tabs.subscription' => 'Subscription',
@@ -202,6 +201,11 @@ return [
'col_date' => 'Date',
'col_amount' => 'Amount',
'total' => 'Total',
'max_team_members' => 'Up to {value} Team Members',
'max_team_members.unlimited' => 'Up to {value} Team Members',
'max_storage_amount' => '{value} GB Storage Size',
'interval.month' => 'Monthly',
'interval.year' => 'Yearly',
],
'regular' => [
'actions.close' => 'Close',

13
package-lock.json generated
View File

@@ -1228,6 +1228,14 @@
"fastq": "^1.6.0"
}
},
"@paypal/paypal-js": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/@paypal/paypal-js/-/paypal-js-4.1.0.tgz",
"integrity": "sha512-fBPpNBfzIpn4hWgks+EmZmuwKopkkMRBAtvCuEkH0RQIUobH7Dtf3enyFAt1+u8ZdgdIvueSBB58lRCSP2RNkA==",
"requires": {
"promise-polyfill": "^8.2.0"
}
},
"@types/glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
@@ -8811,6 +8819,11 @@
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="
},
"promise-polyfill": {
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.1.tgz",
"integrity": "sha512-3p9zj0cEHbp7NVUxEYUWjQlffXqnXaZIMPkAO7HhFh8u5636xLRDHOUo2vpWSK0T2mqm6fKLXYn1KP6PAZ2gKg=="
},
"proxy-addr": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",

View File

@@ -22,6 +22,7 @@
"@fortawesome/fontawesome-svg-core": "^1.2.35",
"@fortawesome/free-solid-svg-icons": "^5.15.3",
"@fortawesome/vue-fontawesome": "^0.1.10",
"@paypal/paypal-js": "^4.1.0",
"autoprefixer": "^9.8.8",
"lodash": "^4.17.21",
"node-sass": "^4.14.1",

View File

@@ -3,37 +3,37 @@
"/css/app.css": "/css/app.css",
"/css/tailwind.css": "/css/tailwind.css",
"/chunks/admin.js": "/chunks/admin.js?id=f12e5d909acc3ca16ea5",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=d269447a03816efd8976",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=94c8006635f530a69db0",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js?id=2d52fc8e939196f7ff16",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~3e4fdd8b.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~3e4fdd8b.js?id=1d731f1c4a9daecb2a99",
"/chunks/admin~chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/my-shared-item~9b68162c.js": "/chunks/admin~chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/my-shared-item~9b68162c.js?id=5841d65172536a8a9bdc",
"/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js?id=bcec1c96b2248aa0d451",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js?id=d00148360f3d89f2791e",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js?id=87c5115ea4a36da1ad72",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js?id=b8afdc0c552002e71b48",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js?id=481af22bd60333fd4ce1",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js?id=510e6c1b1017a73a40a6",
"/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=90270d0c5aeb5c50dacf",
"/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=61e970ffb679245686c3",
"/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=b40d731af7b025b87b30",
"/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=26a26c5593b41f794d32",
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=66048f6dddf596913bbd",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js?id=aa284736dda7647d5c9e",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js?id=6bd4516589f23ec25ae6",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js?id=b1123c792a51f9b3ec11",
"/chunks/app-billings.js": "/chunks/app-billings.js?id=ffb3e653d81896174a85",
"/chunks/app-email.js": "/chunks/app-email.js?id=2cd993e114de9735e180",
"/chunks/app-index.js": "/chunks/app-index.js?id=da260b3d30f109db564e",
"/chunks/app-language.js": "/chunks/app-language.js?id=d8e73002ab50f3f4e478",
"/chunks/app-index.js": "/chunks/app-index.js?id=6eb03f6512adae5191ff",
"/chunks/app-language.js": "/chunks/app-language.js?id=172433e8a0e1ac1e6c9e",
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js?id=38b2085e829a84df0e5f",
"/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/my-shared-items~chunks/page~7dbb6a42.js": "/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/my-shared-items~chunks/page~7dbb6a42.js?id=3cbb19b80e635b3524e5",
"/chunks/app-others.js": "/chunks/app-others.js?id=e15cc8fe838cc5791943",
"/chunks/app-payments.js": "/chunks/app-payments.js?id=74b457237dd604a40351",
"/chunks/app-others.js": "/chunks/app-others.js?id=ceb6ea31781b0ecae89d",
"/chunks/app-payments.js": "/chunks/app-payments.js?id=f692b30ef5b5dc7f9605",
"/chunks/app-settings.js": "/chunks/app-settings.js?id=ad0a2e908255f2220282",
"/chunks/app-setup.js": "/chunks/app-setup.js?id=84b5e8be35b255b1e4fb",
"/chunks/app-setup.js": "/chunks/app-setup.js?id=ce07a7ecb486a7143d32",
"/chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/database~chunks/email-veri~5d0bfc57.js": "/chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/database~chunks/email-veri~5d0bfc57.js?id=107a78323eef0c1d4c81",
"/chunks/billings-detail.js": "/chunks/billings-detail.js?id=731c735c17181fecef1f",
"/chunks/contact-us.js": "/chunks/contact-us.js?id=b7be3b643318f6c29dcc",
"/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=65ee559ca803555be568",
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=55135fff8801bdf735c4",
"/chunks/dashboard.js": "/chunks/dashboard.js?id=cf8c40eec87a01f07b6b",
"/chunks/dashboard.js": "/chunks/dashboard.js?id=782e7ef35b43f548081d",
"/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js": "/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js?id=0391ad036c47d999f159",
"/chunks/database.js": "/chunks/database.js?id=f6272904ff77ab215903",
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=6c86916c6c6f679fa86b",
@@ -47,18 +47,18 @@
"/chunks/homepage.js": "/chunks/homepage.js?id=b89dd81804b8a0bd3f0b",
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=6f5255c42bac60a88220",
"/chunks/invitation.js": "/chunks/invitation.js?id=c9cd3541ee362ae8d5f7",
"/chunks/invoices.js": "/chunks/invoices.js?id=efcfdd569278c114f51a",
"/chunks/invoices.js": "/chunks/invoices.js?id=8cf63565e1e854db7305",
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=ea129760157c8e44f324",
"/chunks/not-found.js": "/chunks/not-found.js?id=034287ee0ecb036320d3",
"/chunks/page-edit.js": "/chunks/page-edit.js?id=87f50fa5a1bd393c49da",
"/chunks/pages.js": "/chunks/pages.js?id=5cb4242dcd91c0968ced",
"/chunks/page-edit.js": "/chunks/page-edit.js?id=1963acc189f3f92441a6",
"/chunks/pages.js": "/chunks/pages.js?id=f5c86b24fcbe15b15d1d",
"/chunks/plan.js": "/chunks/plan.js?id=052940a7395f559b7c60",
"/chunks/plan-create.js": "/chunks/plan-create.js?id=d939086958e81fafdd65",
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=96f48131997a0092be4b",
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=19c260a6aa85d20c8042",
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=2f403063c6a896f09e17",
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=99854b8b4518fbebc79f",
"/chunks/plans.js": "/chunks/plans.js?id=6fca685daa45f22e4c8f",
"/chunks/platform.js": "/chunks/platform.js?id=1863e0b77ad5c26a05bc",
"/chunks/plans.js": "/chunks/plans.js?id=1dd67aa61e7482424e6d",
"/chunks/platform.js": "/chunks/platform.js?id=12d09fa233f5225c83ab",
"/chunks/platform~chunks/settings-subscription~chunks/shared~chunks/user-subscription.js": "/chunks/platform~chunks/settings-subscription~chunks/shared~chunks/user-subscription.js?id=8656b69a97cace919251",
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=f0d10b45321b77d9fb21",
"/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js": "/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js?id=7d983dfdc91de607d737",
@@ -66,10 +66,10 @@
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=58edfb3a35062e1ba4e0",
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=f8b2619e393a5823bf29",
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=22f629caf127051898e9",
"/chunks/settings.js": "/chunks/settings.js?id=b7bd608d4547092b83de",
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=c8b08d42c6692d171884",
"/chunks/settings.js": "/chunks/settings.js?id=a2d7ce4b1fd457b25dc4",
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=951e31213a4a36d88b14",
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=a9a6286b9a416c949003",
"/chunks/settings-password.js": "/chunks/settings-password.js?id=5875aa689f3d14a37494",
"/chunks/settings-password.js": "/chunks/settings-password.js?id=837e32462d17a12ea629",
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=dd49dfad6210765ac1fb",
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=9a1352324cbee9630496",
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=b1e1ae3cff004140701e",
@@ -105,32 +105,213 @@
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~b505e62a.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~b505e62a.js?id=8163e0eab55c50f8afb8",
"/vendors~chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunk~40ccbae3.js": "/vendors~chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunk~40ccbae3.js?id=37ce1e1ab9968c100712",
"/vendors~chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/vendors~chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=a0fa80db175709ba340a",
"/chunks/settings.d6216a75eda2f1049400.hot-update.js": "/chunks/settings.d6216a75eda2f1049400.hot-update.js",
"/chunks/settings.a8287fbab8d5d982dcbc.hot-update.js": "/chunks/settings.a8287fbab8d5d982dcbc.hot-update.js",
"/chunks/settings.76357b3396f7556cddb1.hot-update.js": "/chunks/settings.76357b3396f7556cddb1.hot-update.js",
"/chunks/settings.fe1cfe70c59778b55d49.hot-update.js": "/chunks/settings.fe1cfe70c59778b55d49.hot-update.js",
"/chunks/settings.61b7de4bb9b24c4ef8a5.hot-update.js": "/chunks/settings.61b7de4bb9b24c4ef8a5.hot-update.js",
"/chunks/settings.c4948ff3b50383c847e5.hot-update.js": "/chunks/settings.c4948ff3b50383c847e5.hot-update.js",
"/chunks/settings.77512cd94528dfea91f7.hot-update.js": "/chunks/settings.77512cd94528dfea91f7.hot-update.js",
"/chunks/settings.8ef0e4b75417205c9a8b.hot-update.js": "/chunks/settings.8ef0e4b75417205c9a8b.hot-update.js",
"/chunks/settings.cf6994557ae29062919e.hot-update.js": "/chunks/settings.cf6994557ae29062919e.hot-update.js",
"/chunks/settings.f32afc28a3e9f86d5636.hot-update.js": "/chunks/settings.f32afc28a3e9f86d5636.hot-update.js",
"/chunks/settings.66f97687210924867b36.hot-update.js": "/chunks/settings.66f97687210924867b36.hot-update.js",
"/chunks/settings.fbd5fadc96a8f2ef3ab9.hot-update.js": "/chunks/settings.fbd5fadc96a8f2ef3ab9.hot-update.js",
"/chunks/settings.99fd6d80a440cb4683df.hot-update.js": "/chunks/settings.99fd6d80a440cb4683df.hot-update.js",
"/chunks/settings.de78f878beb41d0c0032.hot-update.js": "/chunks/settings.de78f878beb41d0c0032.hot-update.js",
"/chunks/settings.413f8ed92a7eeda25b78.hot-update.js": "/chunks/settings.413f8ed92a7eeda25b78.hot-update.js",
"/chunks/settings.c788d64b990a1badf6b1.hot-update.js": "/chunks/settings.c788d64b990a1badf6b1.hot-update.js",
"/chunks/settings.3b95bcc93677091dc6f7.hot-update.js": "/chunks/settings.3b95bcc93677091dc6f7.hot-update.js",
"/chunks/settings.ebde8fecf138d1f816b6.hot-update.js": "/chunks/settings.ebde8fecf138d1f816b6.hot-update.js",
"/chunks/settings.b0745272ecc6198229f1.hot-update.js": "/chunks/settings.b0745272ecc6198229f1.hot-update.js",
"/chunks/settings.36b09c58b5477bef90ed.hot-update.js": "/chunks/settings.36b09c58b5477bef90ed.hot-update.js",
"/chunks/settings.9dcb18f7ed073acfdce9.hot-update.js": "/chunks/settings.9dcb18f7ed073acfdce9.hot-update.js",
"/chunks/settings.dfc1705e897889f37ab0.hot-update.js": "/chunks/settings.dfc1705e897889f37ab0.hot-update.js",
"/chunks/settings.361bd02d4d669ed390a0.hot-update.js": "/chunks/settings.361bd02d4d669ed390a0.hot-update.js",
"/chunks/settings.63cae08eeae9e5b13111.hot-update.js": "/chunks/settings.63cae08eeae9e5b13111.hot-update.js",
"/chunks/settings.efbe7c889c6661610ade.hot-update.js": "/chunks/settings.efbe7c889c6661610ade.hot-update.js",
"/chunks/settings.b173f354db192e1f0e61.hot-update.js": "/chunks/settings.b173f354db192e1f0e61.hot-update.js",
"/chunks/plan-create.6104f5be6117a3c2ec8c.hot-update.js": "/chunks/plan-create.6104f5be6117a3c2ec8c.hot-update.js",
"/chunks/plan-create.13fdc95c900c8425d061.hot-update.js": "/chunks/plan-create.13fdc95c900c8425d061.hot-update.js"
"/js/main.d3f5332641d15909b53e.hot-update.js": "/js/main.d3f5332641d15909b53e.hot-update.js",
"/js/main.e29120473bea7a3cee03.hot-update.js": "/js/main.e29120473bea7a3cee03.hot-update.js",
"/js/main.a35a17437ec1391ff2c1.hot-update.js": "/js/main.a35a17437ec1391ff2c1.hot-update.js",
"/js/main.ce53b4e25becd0150b78.hot-update.js": "/js/main.ce53b4e25becd0150b78.hot-update.js",
"/js/main.ae3ab51c89ac3b166258.hot-update.js": "/js/main.ae3ab51c89ac3b166258.hot-update.js",
"/js/main.1dda92b7903d03924a76.hot-update.js": "/js/main.1dda92b7903d03924a76.hot-update.js",
"/js/main.48424e8111e208f7f0b5.hot-update.js": "/js/main.48424e8111e208f7f0b5.hot-update.js",
"/js/main.f5fbc5e420e55650e6b8.hot-update.js": "/js/main.f5fbc5e420e55650e6b8.hot-update.js",
"/js/main.b6e977fe635ca1733931.hot-update.js": "/js/main.b6e977fe635ca1733931.hot-update.js",
"/js/main.366efb1d4b69ab523d90.hot-update.js": "/js/main.366efb1d4b69ab523d90.hot-update.js",
"/js/main.b126e50393d9210c8de9.hot-update.js": "/js/main.b126e50393d9210c8de9.hot-update.js",
"/js/main.07b82fe55b8075ebf028.hot-update.js": "/js/main.07b82fe55b8075ebf028.hot-update.js",
"/js/main.dcca37afa1bb229b6fdd.hot-update.js": "/js/main.dcca37afa1bb229b6fdd.hot-update.js",
"/js/main.c418912980c902b2d8af.hot-update.js": "/js/main.c418912980c902b2d8af.hot-update.js",
"/js/main.a1440102ae130c0c2afd.hot-update.js": "/js/main.a1440102ae130c0c2afd.hot-update.js",
"/js/main.1ccc5ec5ac7bfa3ca3dd.hot-update.js": "/js/main.1ccc5ec5ac7bfa3ca3dd.hot-update.js",
"/js/main.c6afdee632151d0cdf38.hot-update.js": "/js/main.c6afdee632151d0cdf38.hot-update.js",
"/js/main.df2252c94b1a18b602bc.hot-update.js": "/js/main.df2252c94b1a18b602bc.hot-update.js",
"/js/main.ef1b7c41885fd6071f4c.hot-update.js": "/js/main.ef1b7c41885fd6071f4c.hot-update.js",
"/js/main.6cfedd1b61f35d7e12ff.hot-update.js": "/js/main.6cfedd1b61f35d7e12ff.hot-update.js",
"/js/main.ebaa2cef49ff69c7eb2e.hot-update.js": "/js/main.ebaa2cef49ff69c7eb2e.hot-update.js",
"/js/main.23122ae4d4c9213bae06.hot-update.js": "/js/main.23122ae4d4c9213bae06.hot-update.js",
"/js/main.14d65b9e99afb29044ee.hot-update.js": "/js/main.14d65b9e99afb29044ee.hot-update.js",
"/js/main.08528d2d4bea0d661330.hot-update.js": "/js/main.08528d2d4bea0d661330.hot-update.js",
"/js/main.3bbb972a9551712d4f49.hot-update.js": "/js/main.3bbb972a9551712d4f49.hot-update.js",
"/js/main.b600a2f91ff5c3c85002.hot-update.js": "/js/main.b600a2f91ff5c3c85002.hot-update.js",
"/js/main.6a4ec3b8b2087c73c623.hot-update.js": "/js/main.6a4ec3b8b2087c73c623.hot-update.js",
"/js/main.8528b2bae9b74f49fc85.hot-update.js": "/js/main.8528b2bae9b74f49fc85.hot-update.js",
"/js/main.80b1de901c31f0e07bfb.hot-update.js": "/js/main.80b1de901c31f0e07bfb.hot-update.js",
"/js/main.070d6a9693e668fb7b8a.hot-update.js": "/js/main.070d6a9693e668fb7b8a.hot-update.js",
"/js/main.1d09dc73f7183e4e79eb.hot-update.js": "/js/main.1d09dc73f7183e4e79eb.hot-update.js",
"/js/main.2aeaae6b680da36993c6.hot-update.js": "/js/main.2aeaae6b680da36993c6.hot-update.js",
"/js/main.cf8c02d47db15ca94a50.hot-update.js": "/js/main.cf8c02d47db15ca94a50.hot-update.js",
"/js/main.1b71fefcf4ff9776bd34.hot-update.js": "/js/main.1b71fefcf4ff9776bd34.hot-update.js",
"/js/main.804c7acfeb636f2b3091.hot-update.js": "/js/main.804c7acfeb636f2b3091.hot-update.js",
"/js/main.e7d0ab14316ff96a305d.hot-update.js": "/js/main.e7d0ab14316ff96a305d.hot-update.js",
"/js/main.3acdc82d608c1fc805ce.hot-update.js": "/js/main.3acdc82d608c1fc805ce.hot-update.js",
"/js/main.0d71838029e8086046c5.hot-update.js": "/js/main.0d71838029e8086046c5.hot-update.js",
"/js/main.fc470fdfeab2aa503340.hot-update.js": "/js/main.fc470fdfeab2aa503340.hot-update.js",
"/js/main.48703d87d776789fbc2f.hot-update.js": "/js/main.48703d87d776789fbc2f.hot-update.js",
"/js/main.31c838dfe67f139f2a5d.hot-update.js": "/js/main.31c838dfe67f139f2a5d.hot-update.js",
"/js/main.a4b8aa213d0a4c9e15d4.hot-update.js": "/js/main.a4b8aa213d0a4c9e15d4.hot-update.js",
"/js/main.fe1517060366a51eda1e.hot-update.js": "/js/main.fe1517060366a51eda1e.hot-update.js",
"/js/main.6f7cabc17ecc8c64ba65.hot-update.js": "/js/main.6f7cabc17ecc8c64ba65.hot-update.js",
"/js/main.6c54a23649242e46acd0.hot-update.js": "/js/main.6c54a23649242e46acd0.hot-update.js",
"/js/main.e41fb30109669812a165.hot-update.js": "/js/main.e41fb30109669812a165.hot-update.js",
"/js/main.231f870f1001a85bd0c0.hot-update.js": "/js/main.231f870f1001a85bd0c0.hot-update.js",
"/js/main.3d3f1048e1cbcdbdf584.hot-update.js": "/js/main.3d3f1048e1cbcdbdf584.hot-update.js",
"/js/main.fd25fdeab71ec888a874.hot-update.js": "/js/main.fd25fdeab71ec888a874.hot-update.js",
"/js/main.0c3df7bbb6b90e839fbf.hot-update.js": "/js/main.0c3df7bbb6b90e839fbf.hot-update.js",
"/js/main.307828062346b428a2a0.hot-update.js": "/js/main.307828062346b428a2a0.hot-update.js",
"/js/main.37ef139a239516878691.hot-update.js": "/js/main.37ef139a239516878691.hot-update.js",
"/js/main.4e171c2cc83b9698e0cc.hot-update.js": "/js/main.4e171c2cc83b9698e0cc.hot-update.js",
"/js/main.43ccb5ac9d8534f66239.hot-update.js": "/js/main.43ccb5ac9d8534f66239.hot-update.js",
"/js/main.a18640b0611bd3e835e2.hot-update.js": "/js/main.a18640b0611bd3e835e2.hot-update.js",
"/js/main.c5d7eef6effbf3b23e82.hot-update.js": "/js/main.c5d7eef6effbf3b23e82.hot-update.js",
"/js/main.4ff6aba4e674d18ff9b6.hot-update.js": "/js/main.4ff6aba4e674d18ff9b6.hot-update.js",
"/js/main.e2ba4bef90150b72e365.hot-update.js": "/js/main.e2ba4bef90150b72e365.hot-update.js",
"/js/main.92aa4b8b3ab148625e40.hot-update.js": "/js/main.92aa4b8b3ab148625e40.hot-update.js",
"/js/main.dc0cb9e1fc1579487c0d.hot-update.js": "/js/main.dc0cb9e1fc1579487c0d.hot-update.js",
"/js/main.0070d013301575e597a3.hot-update.js": "/js/main.0070d013301575e597a3.hot-update.js",
"/js/main.33f7b4c42f868ab05b7e.hot-update.js": "/js/main.33f7b4c42f868ab05b7e.hot-update.js",
"/js/main.b971e7b15203ffdff318.hot-update.js": "/js/main.b971e7b15203ffdff318.hot-update.js",
"/js/main.ab48fdc00b32886e4012.hot-update.js": "/js/main.ab48fdc00b32886e4012.hot-update.js",
"/js/main.906e7ef9a5a826e2df81.hot-update.js": "/js/main.906e7ef9a5a826e2df81.hot-update.js",
"/js/main.b6fce70e57b1d9ecf401.hot-update.js": "/js/main.b6fce70e57b1d9ecf401.hot-update.js",
"/js/main.23571e1dc953e455522d.hot-update.js": "/js/main.23571e1dc953e455522d.hot-update.js",
"/js/main.3b1fef1e1b6e071fb295.hot-update.js": "/js/main.3b1fef1e1b6e071fb295.hot-update.js",
"/js/main.efcedc6019d2c3dc838e.hot-update.js": "/js/main.efcedc6019d2c3dc838e.hot-update.js",
"/js/main.c263d815b2da00347944.hot-update.js": "/js/main.c263d815b2da00347944.hot-update.js",
"/js/main.5e54b620f46408cabad2.hot-update.js": "/js/main.5e54b620f46408cabad2.hot-update.js",
"/chunks/admin-account.5e54b620f46408cabad2.hot-update.js": "/chunks/admin-account.5e54b620f46408cabad2.hot-update.js",
"/chunks/app-index.5e54b620f46408cabad2.hot-update.js": "/chunks/app-index.5e54b620f46408cabad2.hot-update.js",
"/chunks/app-language.5e54b620f46408cabad2.hot-update.js": "/chunks/app-language.5e54b620f46408cabad2.hot-update.js",
"/chunks/app-others.5e54b620f46408cabad2.hot-update.js": "/chunks/app-others.5e54b620f46408cabad2.hot-update.js",
"/chunks/app-payments.5e54b620f46408cabad2.hot-update.js": "/chunks/app-payments.5e54b620f46408cabad2.hot-update.js",
"/chunks/app-setup.5e54b620f46408cabad2.hot-update.js": "/chunks/app-setup.5e54b620f46408cabad2.hot-update.js",
"/chunks/dashboard.5e54b620f46408cabad2.hot-update.js": "/chunks/dashboard.5e54b620f46408cabad2.hot-update.js",
"/chunks/invoices.5e54b620f46408cabad2.hot-update.js": "/chunks/invoices.5e54b620f46408cabad2.hot-update.js",
"/chunks/page-edit.5e54b620f46408cabad2.hot-update.js": "/chunks/page-edit.5e54b620f46408cabad2.hot-update.js",
"/chunks/pages.5e54b620f46408cabad2.hot-update.js": "/chunks/pages.5e54b620f46408cabad2.hot-update.js",
"/chunks/plan-settings.5e54b620f46408cabad2.hot-update.js": "/chunks/plan-settings.5e54b620f46408cabad2.hot-update.js",
"/chunks/plans.5e54b620f46408cabad2.hot-update.js": "/chunks/plans.5e54b620f46408cabad2.hot-update.js",
"/chunks/platform.5e54b620f46408cabad2.hot-update.js": "/chunks/platform.5e54b620f46408cabad2.hot-update.js",
"/chunks/settings-create-payment-methods.5e54b620f46408cabad2.hot-update.js": "/chunks/settings-create-payment-methods.5e54b620f46408cabad2.hot-update.js",
"/chunks/settings-password.5e54b620f46408cabad2.hot-update.js": "/chunks/settings-password.5e54b620f46408cabad2.hot-update.js",
"/js/main.24d522bafb6a1583ca2b.hot-update.js": "/js/main.24d522bafb6a1583ca2b.hot-update.js",
"/js/main.9b35fbfcb7602b369396.hot-update.js": "/js/main.9b35fbfcb7602b369396.hot-update.js",
"/js/main.eca933c27d08c23088cf.hot-update.js": "/js/main.eca933c27d08c23088cf.hot-update.js",
"/js/main.ed386b81e65188603d9d.hot-update.js": "/js/main.ed386b81e65188603d9d.hot-update.js",
"/js/main.391f0d906f4b755c90b1.hot-update.js": "/js/main.391f0d906f4b755c90b1.hot-update.js",
"/js/main.d5a6379fcbabf9211294.hot-update.js": "/js/main.d5a6379fcbabf9211294.hot-update.js",
"/js/main.025ccd56b02c6f94b744.hot-update.js": "/js/main.025ccd56b02c6f94b744.hot-update.js",
"/js/main.b76e3fbb020207b11671.hot-update.js": "/js/main.b76e3fbb020207b11671.hot-update.js",
"/js/main.39a05b59737f0bba1dd2.hot-update.js": "/js/main.39a05b59737f0bba1dd2.hot-update.js",
"/js/main.009dc804ad0dd184f48f.hot-update.js": "/js/main.009dc804ad0dd184f48f.hot-update.js",
"/js/main.89a5fa1723a78290a100.hot-update.js": "/js/main.89a5fa1723a78290a100.hot-update.js",
"/js/main.173ade5f7e68aceaf6ec.hot-update.js": "/js/main.173ade5f7e68aceaf6ec.hot-update.js",
"/js/main.7aaee96274823baf4931.hot-update.js": "/js/main.7aaee96274823baf4931.hot-update.js",
"/js/main.04ab3b5c96b4bdd2cfab.hot-update.js": "/js/main.04ab3b5c96b4bdd2cfab.hot-update.js",
"/js/main.e563a8492d76851df693.hot-update.js": "/js/main.e563a8492d76851df693.hot-update.js",
"/js/main.163b082b99781b7dc803.hot-update.js": "/js/main.163b082b99781b7dc803.hot-update.js",
"/js/main.50c9afa7c92d95d780f7.hot-update.js": "/js/main.50c9afa7c92d95d780f7.hot-update.js",
"/js/main.24abee03144d5500a001.hot-update.js": "/js/main.24abee03144d5500a001.hot-update.js",
"/js/main.0f98168c0767aff9eb22.hot-update.js": "/js/main.0f98168c0767aff9eb22.hot-update.js",
"/js/main.52c52ccdad5cd74d2d2f.hot-update.js": "/js/main.52c52ccdad5cd74d2d2f.hot-update.js",
"/js/main.00b962410d8425551997.hot-update.js": "/js/main.00b962410d8425551997.hot-update.js",
"/js/main.a638bda689a483cdfe53.hot-update.js": "/js/main.a638bda689a483cdfe53.hot-update.js",
"/js/main.4451efa8ab34c5296c45.hot-update.js": "/js/main.4451efa8ab34c5296c45.hot-update.js",
"/js/main.8cd26666656d96ae2079.hot-update.js": "/js/main.8cd26666656d96ae2079.hot-update.js",
"/js/main.363e64c6c477f9ae277f.hot-update.js": "/js/main.363e64c6c477f9ae277f.hot-update.js",
"/js/main.baa05a04450910e5b972.hot-update.js": "/js/main.baa05a04450910e5b972.hot-update.js",
"/js/main.4d05fd19e305a6429017.hot-update.js": "/js/main.4d05fd19e305a6429017.hot-update.js",
"/js/main.7c1dbc9e5e091d7a23ec.hot-update.js": "/js/main.7c1dbc9e5e091d7a23ec.hot-update.js",
"/js/main.f9004c45f5db3ccf9903.hot-update.js": "/js/main.f9004c45f5db3ccf9903.hot-update.js",
"/js/main.a0775b01a9107634d88d.hot-update.js": "/js/main.a0775b01a9107634d88d.hot-update.js",
"/js/main.2a5ca7aaa8596b735f58.hot-update.js": "/js/main.2a5ca7aaa8596b735f58.hot-update.js",
"/js/main.385a78faa2c77c4e2192.hot-update.js": "/js/main.385a78faa2c77c4e2192.hot-update.js",
"/js/main.5d662c6af02105066259.hot-update.js": "/js/main.5d662c6af02105066259.hot-update.js",
"/js/main.45e0c46b03ccab7f3c46.hot-update.js": "/js/main.45e0c46b03ccab7f3c46.hot-update.js",
"/js/main.5ac20de99e2078b28743.hot-update.js": "/js/main.5ac20de99e2078b28743.hot-update.js",
"/js/main.779b6e030b971a71c960.hot-update.js": "/js/main.779b6e030b971a71c960.hot-update.js",
"/js/main.6cf0bd6eb40a62682f16.hot-update.js": "/js/main.6cf0bd6eb40a62682f16.hot-update.js",
"/js/main.b6247199ee09d7df767c.hot-update.js": "/js/main.b6247199ee09d7df767c.hot-update.js",
"/js/main.cc7cee84b4e902647a36.hot-update.js": "/js/main.cc7cee84b4e902647a36.hot-update.js",
"/js/main.47b7babd471c773a25f3.hot-update.js": "/js/main.47b7babd471c773a25f3.hot-update.js",
"/js/main.1b860e81f51364f3d6a5.hot-update.js": "/js/main.1b860e81f51364f3d6a5.hot-update.js",
"/js/main.ffa2e8a9c16b033f1e48.hot-update.js": "/js/main.ffa2e8a9c16b033f1e48.hot-update.js",
"/js/main.207ca564d25ea082e5a9.hot-update.js": "/js/main.207ca564d25ea082e5a9.hot-update.js",
"/js/main.0ac374c83cdb49211285.hot-update.js": "/js/main.0ac374c83cdb49211285.hot-update.js",
"/js/main.5a40a9a3dd42385f79b8.hot-update.js": "/js/main.5a40a9a3dd42385f79b8.hot-update.js",
"/js/main.8299fde1c5ed3c77ba95.hot-update.js": "/js/main.8299fde1c5ed3c77ba95.hot-update.js",
"/js/main.9ee0030d2c9c50e5621d.hot-update.js": "/js/main.9ee0030d2c9c50e5621d.hot-update.js",
"/js/main.1c4d060fb5ccd3cb6f76.hot-update.js": "/js/main.1c4d060fb5ccd3cb6f76.hot-update.js",
"/js/main.6d4e433c2b6c6c5de771.hot-update.js": "/js/main.6d4e433c2b6c6c5de771.hot-update.js",
"/chunks/settings.115151fb933cb0685a96.hot-update.js": "/chunks/settings.115151fb933cb0685a96.hot-update.js",
"/js/main.76115922d8d73ddeb156.hot-update.js": "/js/main.76115922d8d73ddeb156.hot-update.js",
"/js/main.54c5980e9b85a1b93927.hot-update.js": "/js/main.54c5980e9b85a1b93927.hot-update.js",
"/js/main.e8308f7482aa2071520d.hot-update.js": "/js/main.e8308f7482aa2071520d.hot-update.js",
"/js/main.38671841cca2d4b59493.hot-update.js": "/js/main.38671841cca2d4b59493.hot-update.js",
"/js/main.048fb8138d5377f27b9e.hot-update.js": "/js/main.048fb8138d5377f27b9e.hot-update.js",
"/js/main.415aae897b3599c7658a.hot-update.js": "/js/main.415aae897b3599c7658a.hot-update.js",
"/js/main.28a1e474b04cfdad2665.hot-update.js": "/js/main.28a1e474b04cfdad2665.hot-update.js",
"/js/main.278ce3ca9a18365bd4e4.hot-update.js": "/js/main.278ce3ca9a18365bd4e4.hot-update.js",
"/js/main.916ddf75805385f144ad.hot-update.js": "/js/main.916ddf75805385f144ad.hot-update.js",
"/js/main.00778d995b0710ef52f8.hot-update.js": "/js/main.00778d995b0710ef52f8.hot-update.js",
"/js/main.a8928f5f2ce4b99378d0.hot-update.js": "/js/main.a8928f5f2ce4b99378d0.hot-update.js",
"/js/main.41c0da744946dc5188bb.hot-update.js": "/js/main.41c0da744946dc5188bb.hot-update.js",
"/js/main.73afea9cde22ac976a6a.hot-update.js": "/js/main.73afea9cde22ac976a6a.hot-update.js",
"/chunks/settings.73afea9cde22ac976a6a.hot-update.js": "/chunks/settings.73afea9cde22ac976a6a.hot-update.js",
"/js/main.5b85106350fad0a86d35.hot-update.js": "/js/main.5b85106350fad0a86d35.hot-update.js",
"/js/main.5c9dc65f06c6c270d45c.hot-update.js": "/js/main.5c9dc65f06c6c270d45c.hot-update.js",
"/js/main.3f7ee39c4db216bdb764.hot-update.js": "/js/main.3f7ee39c4db216bdb764.hot-update.js",
"/js/main.47027a8825159b4d38de.hot-update.js": "/js/main.47027a8825159b4d38de.hot-update.js",
"/js/main.690e03cd5806c41ca90b.hot-update.js": "/js/main.690e03cd5806c41ca90b.hot-update.js",
"/js/main.ecf0cb8ff0f9dd218315.hot-update.js": "/js/main.ecf0cb8ff0f9dd218315.hot-update.js",
"/js/main.59469311f05ba49a2ad3.hot-update.js": "/js/main.59469311f05ba49a2ad3.hot-update.js",
"/js/main.39e1d037c8e3959504a6.hot-update.js": "/js/main.39e1d037c8e3959504a6.hot-update.js",
"/js/main.a251cce6bfd955fedf28.hot-update.js": "/js/main.a251cce6bfd955fedf28.hot-update.js",
"/js/main.ed33616e34d5b4c7b47d.hot-update.js": "/js/main.ed33616e34d5b4c7b47d.hot-update.js",
"/js/main.ea0ab37afb419a4b3d17.hot-update.js": "/js/main.ea0ab37afb419a4b3d17.hot-update.js",
"/js/main.c7113f5a41316c0fbc25.hot-update.js": "/js/main.c7113f5a41316c0fbc25.hot-update.js",
"/chunks/settings.c7113f5a41316c0fbc25.hot-update.js": "/chunks/settings.c7113f5a41316c0fbc25.hot-update.js",
"/chunks/settings.d2353d7f40d14b37abec.hot-update.js": "/chunks/settings.d2353d7f40d14b37abec.hot-update.js",
"/chunks/settings.e219955a87abf18d16fa.hot-update.js": "/chunks/settings.e219955a87abf18d16fa.hot-update.js",
"/js/main.4c61a7cab28444fa2d3d.hot-update.js": "/js/main.4c61a7cab28444fa2d3d.hot-update.js",
"/js/main.6d09ca30b9a8aa2a6b09.hot-update.js": "/js/main.6d09ca30b9a8aa2a6b09.hot-update.js",
"/js/main.e4bda8241495d6498ea8.hot-update.js": "/js/main.e4bda8241495d6498ea8.hot-update.js",
"/chunks/settings.dae7e7b5a40eba9a6825.hot-update.js": "/chunks/settings.dae7e7b5a40eba9a6825.hot-update.js",
"/js/main.a88e2755aecf86441949.hot-update.js": "/js/main.a88e2755aecf86441949.hot-update.js",
"/js/main.2f1be144a23f2fa85eea.hot-update.js": "/js/main.2f1be144a23f2fa85eea.hot-update.js",
"/js/main.25ecf5d6f6e5303eb45b.hot-update.js": "/js/main.25ecf5d6f6e5303eb45b.hot-update.js",
"/chunks/settings.25ecf5d6f6e5303eb45b.hot-update.js": "/chunks/settings.25ecf5d6f6e5303eb45b.hot-update.js",
"/js/main.4bf49d28078273498342.hot-update.js": "/js/main.4bf49d28078273498342.hot-update.js",
"/js/main.c68708b8f1c55eb378f8.hot-update.js": "/js/main.c68708b8f1c55eb378f8.hot-update.js",
"/js/main.4076fd3a14dff6f78ed9.hot-update.js": "/js/main.4076fd3a14dff6f78ed9.hot-update.js",
"/js/main.68c7f9993332b457b87e.hot-update.js": "/js/main.68c7f9993332b457b87e.hot-update.js",
"/js/main.be365feeb2372d2c8fa9.hot-update.js": "/js/main.be365feeb2372d2c8fa9.hot-update.js",
"/js/main.4d2f4a08710aec4d8654.hot-update.js": "/js/main.4d2f4a08710aec4d8654.hot-update.js",
"/js/main.827de2a4b9cc4578ba10.hot-update.js": "/js/main.827de2a4b9cc4578ba10.hot-update.js",
"/js/main.a4aca087ff953918ab69.hot-update.js": "/js/main.a4aca087ff953918ab69.hot-update.js",
"/js/main.6986053371dbc3172bc2.hot-update.js": "/js/main.6986053371dbc3172bc2.hot-update.js",
"/js/main.25c96568c82889fb878f.hot-update.js": "/js/main.25c96568c82889fb878f.hot-update.js",
"/js/main.a91605abd740f17aa250.hot-update.js": "/js/main.a91605abd740f17aa250.hot-update.js",
"/js/main.8ef4a358b3ac2be12603.hot-update.js": "/js/main.8ef4a358b3ac2be12603.hot-update.js",
"/js/main.7deb68d2c0d7ca0a9ed0.hot-update.js": "/js/main.7deb68d2c0d7ca0a9ed0.hot-update.js",
"/js/main.b899a8f1239bbe6ef851.hot-update.js": "/js/main.b899a8f1239bbe6ef851.hot-update.js",
"/js/main.1d093a25c6aba01efa0f.hot-update.js": "/js/main.1d093a25c6aba01efa0f.hot-update.js",
"/js/main.527b43b84014b3df175f.hot-update.js": "/js/main.527b43b84014b3df175f.hot-update.js",
"/js/main.36af11b2b2abe1cd18a1.hot-update.js": "/js/main.36af11b2b2abe1cd18a1.hot-update.js",
"/js/main.a86beab36cb45493028f.hot-update.js": "/js/main.a86beab36cb45493028f.hot-update.js",
"/js/main.08d8c9f5ced00a9fa818.hot-update.js": "/js/main.08d8c9f5ced00a9fa818.hot-update.js",
"/js/main.4ec8c3b405fa8d4d787a.hot-update.js": "/js/main.4ec8c3b405fa8d4d787a.hot-update.js",
"/js/main.b330864882c38edfd9d6.hot-update.js": "/js/main.b330864882c38edfd9d6.hot-update.js",
"/js/main.da677b655c268844db9c.hot-update.js": "/js/main.da677b655c268844db9c.hot-update.js",
"/js/main.e2c18f1243b93a6039a6.hot-update.js": "/js/main.e2c18f1243b93a6039a6.hot-update.js",
"/js/main.1f32674d1b57f13fbbcf.hot-update.js": "/js/main.1f32674d1b57f13fbbcf.hot-update.js",
"/js/main.a9f3cc0168ed5d8a9d69.hot-update.js": "/js/main.a9f3cc0168ed5d8a9d69.hot-update.js",
"/js/main.d7656b395a5919dca9c9.hot-update.js": "/js/main.d7656b395a5919dca9c9.hot-update.js",
"/js/main.7b1af6dbf756c6b3882d.hot-update.js": "/js/main.7b1af6dbf756c6b3882d.hot-update.js",
"/js/main.c602654d0b830726fc39.hot-update.js": "/js/main.c602654d0b830726fc39.hot-update.js",
"/js/main.7aaa7a6757d018410339.hot-update.js": "/js/main.7aaa7a6757d018410339.hot-update.js",
"/js/main.ae3604aea8faee129d1b.hot-update.js": "/js/main.ae3604aea8faee129d1b.hot-update.js",
"/js/main.06b04ff5cd25894a8f07.hot-update.js": "/js/main.06b04ff5cd25894a8f07.hot-update.js",
"/js/main.059b63c976fb71b53bd9.hot-update.js": "/js/main.059b63c976fb71b53bd9.hot-update.js",
"/js/main.ae80ff008611fe69bf57.hot-update.js": "/js/main.ae80ff008611fe69bf57.hot-update.js",
"/chunks/settings.9bcc0dc5cb7e01de1336.hot-update.js": "/chunks/settings.9bcc0dc5cb7e01de1336.hot-update.js",
"/js/main.1637e16c84329e4130f4.hot-update.js": "/js/main.1637e16c84329e4130f4.hot-update.js",
"/js/main.c5cfa9cc6031e7a794c5.hot-update.js": "/js/main.c5cfa9cc6031e7a794c5.hot-update.js"
}

View File

@@ -6,6 +6,8 @@
<ToasterWrapper />
<CookieDisclaimer />
<SelectPlanSubscriptionPopup />
<!--Show spinner before translations is loaded-->
<Spinner v-if="! isLoaded"/>
@@ -17,6 +19,7 @@
</template>
<script>
import SelectPlanSubscriptionPopup from "./components/Subscription/SelectPlanSubscriptionPopup";
import ToasterWrapper from '/resources/js/components/Others/Notifications/ToasterWrapper'
import CookieDisclaimer from '/resources/js/components/Others/CookieDisclaimer'
import Spinner from '/resources/js/components/FilesView/Spinner'
@@ -28,6 +31,7 @@ import {events} from './bus'
export default {
name: 'app',
components: {
SelectPlanSubscriptionPopup,
CookieDisclaimer,
ToasterWrapper,
Vignette,

View File

@@ -1,44 +1,39 @@
<template>
<div class="select-box" :class="[isClicked ? 'bg-theme' : 'is-deactive'] ">
<CheckIcon v-if="isClicked" class="icon" size="17" />
</div>
<div>
<div
class="w-5 h-5 flex items-center justify-center rounded-md"
:class="{'bg-theme': isClicked, 'dark:bg-dark-foreground bg-light-background': !isClicked}"
@click="changeState"
>
<CheckIcon v-if="isClicked" class="vue-feather text-white" size="17" />
</div>
</div>
</template>
<script>
import { CheckIcon } from 'vue-feather-icons'
import {CheckIcon} from 'vue-feather-icons'
export default {
name: 'CheckBox',
props: [ 'isClicked' ],
components: { CheckIcon }
name: 'CheckBox',
props: [
'isClicked'
],
components: {
CheckIcon
},
data() {
return {
isSwitched: undefined
}
},
methods: {
changeState() {
this.isSwitched = ! this.isSwitched
this.$emit('input', this.isSwitched)
}
},
mounted() {
this.isSwitched = this.isClicked
}
}
</script>
<style lang="scss" scoped>
@import '/resources/sass/vuefilemanager/_variables';
.select-box {
min-width: 20px;
min-height: 20px;
display: flex;
justify-content: center;
align-items: center;
border-radius: 5px;
.icon {
stroke: white;
}
}
.is-deactive {
background-color: darken($light_background, 5%);
}
.dark {
.is-deactive {
background-color: lighten($dark_mode_foreground, 10%);
}
}
</style>

View File

@@ -2,7 +2,7 @@
<div :class="{'dark:bg-dark-foreground bg-light-background': isClicked && highlight, 'dark:hover:bg-dark-foreground hover:bg-light-background': highlight}" class="flex items-center px-2.5 py-2 rounded-xl select-none border-2 border-transparent border-dashed" :draggable="canDrag" spellcheck="false">
<!--MultiSelecting for the mobile version-->
<CheckBox v-if="isMultiSelectMode" :is-clicked="isClicked" class="mr-5"/>
<CheckBox v-if="isMultiSelectMode" v-model="isClicked" class="mr-5"/>
<!--Item thumbnail-->
<div class="w-16 relative">

View File

@@ -27,7 +27,7 @@
@media only screen and (max-width: 690px) {
.actions {
padding: 15px 15px 35px;
padding: 15px 15px;
position: absolute;
bottom: 0;
left: 0;

View File

@@ -0,0 +1,50 @@
<template>
<label class="py-3 px-4 cursor-pointer border-b border-light rounded-lg block select-none" :class="{'bg-light-background': isSelected}">
<div class="flex items-center mb-1.5">
<CheckBox :is-clicked="isSelected" />
<b class="pl-4 text-lg">
{{ plan.data.attributes.name }}
</b>
</div>
<ul class="ml-9 mb-3">
<li class="flex items-center mb-1.5" v-for="(value, key, i) in plan.data.attributes.features" :key="i">
<CheckIcon size="12" class="svg-stroke-theme" />
<small class="pl-1.5 text-xs text-gray-600 font-bold" v-if="value !== -1">
{{ $t(key, {value: value}) }}
</small>
<small class="pl-1.5 text-xs text-gray-600 font-bold" v-if="value === -1">
{{ $t(`${key}.unlimited`) }}
</small>
</li>
</ul>
<span class="ml-9 inline-block py-1 px-2 text-theme font-extrabold text-sm rounded-xl bg-theme-100">
{{ currency }} / {{ $t(`interval.${plan.data.attributes.interval}`) }}
</span>
</label>
</template>
<script>
import {CheckIcon} from 'vue-feather-icons'
import CheckBox from "../FilesView/CheckBox"
export default {
name: 'PlanDetail',
components: {
CheckIcon,
CheckBox,
},
props: [
'isSelected',
'plan',
],
computed: {
currency() {
let formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
return formatter.format(this.plan.data.attributes.amount);
}
}
}
</script>

View File

@@ -0,0 +1,218 @@
<template>
<PopupWrapper name="select-plan-subscription">
<!--Title-->
<b class="text-center block text-2xl font-extrabold mt-6">
{{ $t('Upgrade Your Account') }}
</b>
<!--Payment Options-->
<div v-if="isPaymentOptionPage">
<PopupContent class="px-4">
<b class="text-center block mb-3 mt-8">
PayStack
</b>
<ButtonBase class="block w-full mb-6" button-style="theme" type="button">
<paystack
:channels="['bank', 'ussd', 'qr', 'mobile_money', 'bank_transfer']"
class="font-bold"
currency="ZAR"
:plan="selectedPlan.data.meta.driver_plan_id.paystack"
:amount="selectedPlan.data.attributes.amount"
:email="user.data.attributes.email"
:paystackkey="config.paystack_public_key"
:reference="reference"
:callback="paymentSuccessful"
:close="paystackClosed"
>
<span class="text-theme">
Pay With PayStack
</span>
</paystack>
</ButtonBase>
<b class="text-center block mb-3">
PayPal
</b>
<!--PayPal Button-->
<div id="paypal-button-container"></div>
</PopupContent>
</div>
<!--Select Payment Plans-->
<div v-if="! isPaymentOptionPage">
<PopupContent>
<!--Toggle amid monthly and yearly billing-->
<div class="text-center my-5">
<label :class="{'text-gray-400': isYearlyPlans}" class="font-bold cursor-pointer text-xs">
{{ $t('Billed Monthly') }}
</label>
<div class="relative inline-block w-14 mx-4 align-middle select-none">
<SwitchInput class="transform scale-90" v-model="isYearlyPlans" />
</div>
<label :class="{'text-gray-400': !isYearlyPlans}" class="font-bold cursor-pointer text-xs">
{{ $t('Billed Annually') }}
</label>
</div>
<!--Form to set team folder-->
<div class="px-4" v-if="plans">
<PlanDetail
v-for="plan in plans"
:plan="plan"
:key="plan.data.id"
v-if="plan.data.attributes.interval === intervalPlanType"
:is-selected="selectedPlan && selectedPlan.data.id === plan.data.id"
@click.native="selectPlan(plan)"
/>
</div>
</PopupContent>
<!--Actions-->
<PopupActions>
<ButtonBase
class="popup-button"
@click.native="$closePopup()"
button-style="secondary"
>{{ $t('popup_move_item.cancel') }}
</ButtonBase>
<ButtonBase
class="popup-button"
:button-style="buttonStyle"
@click.native="showPaymentOptions"
>{{ $t('Upgrade Account') }}
</ButtonBase>
</PopupActions>
</div>
</PopupWrapper>
</template>
<script>
import { loadScript } from "@paypal/paypal-js";
import SwitchInput from '/resources/js/components/Others/Forms/SwitchInput'
import PopupWrapper from '/resources/js/components/Others/Popup/PopupWrapper'
import PopupActions from '/resources/js/components/Others/Popup/PopupActions'
import PopupContent from '/resources/js/components/Others/Popup/PopupContent'
import PopupHeader from '/resources/js/components/Others/Popup/PopupHeader'
import ButtonBase from '/resources/js/components/FilesView/ButtonBase'
import PlanDetail from "./PlanDetail";
import paystack from 'vue-paystack';
import {mapGetters} from "vuex";
import {events} from "../../bus";
export default {
name: 'SelectPlanSubscriptionPopup',
components: {
paystack,
PlanDetail,
SwitchInput,
PopupWrapper,
PopupActions,
PopupContent,
PopupHeader,
ButtonBase,
},
watch: {
isYearlyPlans() {
this.selectedPlan = undefined
}
},
computed: {
...mapGetters([
'config',
'user',
]),
reference() {
let text = "";
let possible =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 10; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
},
intervalPlanType() {
return this.isYearlyPlans
? 'year'
: 'month'
},
buttonStyle() {
return this.selectedPlan
? 'theme'
: 'secondary'
}
},
data() {
return {
isPaymentOptionPage: false,
isYearlyPlans: false,
isLoading: false,
selectedPlan: undefined,
plans: undefined,
}
},
methods: {
async showPaymentOptions() {
// Show payment buttons page
this.isPaymentOptionPage = true
// PayPal
let paypal;
try {
paypal = await loadScript({
'client-id': this.config.paypal_client_id,
'vault': true,
});
} catch (error) {
events.$emit('toaster', {
type: 'error',
message: this.$t('failed to load the PayPal components'),
})
}
const planId = this.selectedPlan.data.meta.driver_plan_id.paypal
const userId = this.user.data.id
const app = this
// Initialize paypal buttons
await paypal.Buttons({
createSubscription: function(data, actions) {
return actions.subscription.create({
'plan_id': planId,
'custom_id': userId
});
},
onApprove: function(data, actions) {
app.paymentSuccessful()
}
}).render('#paypal-button-container');
},
selectPlan(plan) {
this.selectedPlan = plan
},
paymentSuccessful() {
this.$closePopup()
events.$emit('toaster', {
type: 'success',
message: this.$t('Your payment was successfully received.'),
})
},
paystackClosed() {
// ...
}
},
created() {
axios.get('/api/subscription/plans')
.then(response => {
this.plans = response.data.data
})
}
}
</script>

View File

@@ -413,6 +413,10 @@ const FunctionHelpers = {
Vue.prototype.$showMobileMenu = function (name) {
events.$emit('mobile-menu:show', name)
}
Vue.prototype.$openUpgradeOptions = function () {
events.$emit('popup:open', {name: 'select-plan-subscription'})
}
}
}

View File

@@ -39,39 +39,13 @@
<span class="email">{{ user.data.attributes.email }}</span>
</div>
</div>
<!-- <div v-if="config.storageLimit && config.isSaaS && config.app_payments_active && !canShowIncompletePayment" class="headline-actions">
<router-link :to="{name: 'UpgradePlan'}">
<ButtonBase class="upgrade-button" button-style="secondary" type="button">
{{ $t('global.upgrade_plan') }}
</ButtonBase>
</router-link>
</div>-->
<!--TODO: temporary button-->
<div class="headline-actions">
<!-- <ButtonBase class="upgrade-button" button-style="secondary" type="button">
<paystack
:channels="['bank', 'ussd', 'qr', 'mobile_money', 'bank_transfer']"
class="font-bold"
currency="ZAR"
plan="PLN_kki6co7iviyl4vb"
email="howdy@hi5ve.digital"
paystackkey="pk_test_5d69324328b8904cdd3cad17ff60892c93abfe89"
:reference="reference"
:callback="processPayment"
:close="close"
>
{{ $t('global.upgrade_plan') }}
</paystack>
</ButtonBase>-->
<div v-if="config.storageLimit && config.isSaaS && config.app_payments_active && !canShowIncompletePayment" class="headline-actions">
<ButtonBase @click.native="$openUpgradeOptions" class="upgrade-button" button-style="secondary" type="button">
{{ $t('global.upgrade_plan') }}
</ButtonBase>
</div>
</div>
<!--PayPal Button-->
<div id="paypal-button-container"></div>
<!--Incomplete Payment Warning-->
<InfoBox v-if="canShowIncompletePayment" type="error" class="message-box">
<i18n path="incomplete_payment.description" tag="p">
@@ -96,7 +70,6 @@
</template>
<script>
import paystack from 'vue-paystack';
import FilePreview from '/resources/js/components/FilePreview/FilePreview'
import Spotlight from '/resources/js/components/Spotlight/Spotlight'
import TwoFactorRecoveryCodesPopup from '/resources/js/components/Others/TwoFactorRecoveryCodesPopup'
@@ -116,7 +89,6 @@
export default {
name: 'Settings',
components: {
paystack,
FilePreview,
Spotlight,
TwoFactorRecoveryCodesPopup,
@@ -133,14 +105,6 @@
InfoBox,
},
computed: {
reference() {
let text = "";
let possible =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (let i = 0; i < 10; i++)
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
},
...mapGetters([
'user',
'config'
@@ -160,35 +124,10 @@
},
data() {
return {
amount: 10100,
avatar: undefined,
isLoading: false,
}
},
methods: {
processPayment: () => {
window.alert("Payment recieved")
},
close: () => {
console.log("You closed checkout page")
}
},
created() {
setTimeout(() => {
paypal.Buttons({
createSubscription: function(data, actions) {
return actions.subscription.create({
'plan_id': 'P-1P873319R2491082NMGFK3RY',
'custom_id': 'user_id_howdy'
});
},
onApprove: function(data, actions) {
console.log('Subscription id: ', data.subscriptionID);
}
}).render('#paypal-button-container'); // Renders the PayPal button
}, 500)
}
}
</script>

View File

@@ -33,14 +33,14 @@
<meta name="format-detection" content="address=no">
@include('vuefilemanager.others.color-template')
<script src="https://www.paypal.com/sdk/js?client-id=AX96WuhfdCT1bgwUo6uGtAefvdufFaKh0XVRTFUDoh_rTV7RpRGX8ipENIweybNY_fnp0MqqSIvZRp8t&vault=true&intent=subscription"></script>
</head>
<body class="{{ is_dev() ? '__debug-screens' : '' }}">
<div id="app"></div>
<script>
// todo: refactoring
let config = {
host: '{{ url('/') }}',
api: '{{ url('/api') }}',
@@ -77,6 +77,10 @@
installation: '{{ $installation ?? 'initial' }}',
statusCheck: {!! json_encode($status_check) ?? 'undefined' !!},
// Payment drivers
paystack_public_key: '{{ env('PAYSTACK_PUBLIC_KEY') }}',
paypal_client_id: '{{ env('PAYPAL_CLIENT_ID') }}',
}
</script>

1
tailwind.config.js vendored
View File

@@ -13,6 +13,7 @@ module.exports = {
'3': '3px',
},
borderColor: theme => ({
'light': '#F8F8F8',
'dark-background': '#151515',
'dark-secondary': '#1e2024',
}),