@tapni/auth 1.0.6-4.dev → 1.0.6-5.dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .app-store-icon[data-v-465df13a]{box-shadow:0 4px 10px #00000017;border-radius:12px}#codeInput[data-v-6ab8e3d4],#emailInput[data-v-6ab8e3d4]{text-align:center;padding-right:15%;font-size:17px}.firstRow img[data-v-64ae2517]{width:25px;height:25px;position:absolute;top:50%;right:0;transform:translate(-50%,-50%)}#emailInput[data-v-707a4b16]{text-align:center;padding-right:15%;font-size:17px}html *{font-family:Inter,sans-serif}#bodyId{padding-top:3%;max-width:667px!important;margin:1.5% auto auto;height:95%!important;border-radius:20px}.action-block-top .default-text,.action-block-top .default-text:after{border-radius:50%;width:10em!important;height:10em!important}.action-block-top .default-text{margin:10px auto;font-size:3px;position:relative;text-indent:-9999em;border-left:.5em solid #000000;border-top:.5em solid rgba(0,0,0,.2);border-right:.5em solid rgba(0,0,0,.2);border-bottom:.5em solid rgba(0,0,0,.2);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.smartbanner-ios{background:linear-gradient(to bottom,#f4f4f4,#f4f4f4);box-shadow:0 0 #fff;border-bottom:1px solid #dddddd}.smartbanner-icon{border-radius:16px}.smartbanner-ios .smartbanner-button{font-size:13px;padding:9px 0;height:40px;border-radius:13px;background:#f4f4f4;color:#0a99d2;border:none;box-shadow:none;text-transform:uppercase}.snack-body{display:none;border-radius:40px;font-size:15px!important}#errorSnack{background-color:#fee3e3!important;border:2px solid #edd9d9!important;color:#000}#successSnack{background-color:#eff5eb!important;border:2px solid #e3ecd7!important;color:#000}.grecaptcha-badge{visibility:hidden}.header-logo{position:absolute;left:50%;transform:translate(-50%,-50%);margin-top:16px;z-index:2}.header-logo-img{height:40px;margin-top:10px}@media (max-width: 768px){#bodyId{margin-top:0;border-radius:0;height:100%!important}.header-logo{margin-top:16px}}.withBackground[data-v-2f7f5584],.withBackground[data-v-2277e85c]{height:50px}.no-subscriptions[data-v-2277e85c]{padding:40px 20px}.gray-text[data-v-2277e85c]{color:#666;font-size:16px}.subscription-card[data-v-2277e85c]{background:#fff;border:1px solid #e0e0e0;border-radius:12px;padding:20px;margin-bottom:16px;box-shadow:0 2px 4px #0000000d}.subscription-header[data-v-2277e85c]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #f0f0f0}.subscription-info[data-v-2277e85c]{flex:1}.subscription-name[data-v-2277e85c]{font-size:20px;font-weight:600;margin:0 0 8px;color:#000}.subscription-status[data-v-2277e85c]{display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;text-transform:uppercase}.status-trialing[data-v-2277e85c]{background:#e3f2fd;color:#1976d2}.status-active[data-v-2277e85c]{background:#e8f5e9;color:#388e3c}.status-past_due[data-v-2277e85c]{background:#fff3e0;color:#f57c00}.status-canceled[data-v-2277e85c]{background:#ffebee;color:#d32f2f}.subscription-details[data-v-2277e85c]{margin-bottom:16px}.detail-row[data-v-2277e85c]{display:flex;justify-content:space-between;padding:8px 0;font-size:15px}.detail-label[data-v-2277e85c]{color:#666;font-weight:500}.detail-value[data-v-2277e85c]{color:#000;font-weight:600}.subscription-actions[data-v-2277e85c]{display:flex;justify-content:flex-end;padding-top:16px;border-top:1px solid #f0f0f0}.cancel-button[data-v-2277e85c]{padding:10px 20px;background:#fff;color:#d32f2f;border:1px solid #d32f2f;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.cancel-button[data-v-2277e85c]:hover:not(:disabled){background:#d32f2f;color:#fff}.cancel-button[data-v-2277e85c]:disabled{opacity:.5;cursor:not-allowed}.modal-overlay[data-v-2277e85c]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}.modal-content[data-v-2277e85c]{background:#fff;border-radius:16px;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #0003}.modal-header[data-v-2277e85c]{display:flex;justify-content:space-between;align-items:center;padding:24px;border-bottom:1px solid #e0e0e0}.modal-header h3[data-v-2277e85c]{margin:0;font-size:20px;font-weight:600;color:#000}.close-button[data-v-2277e85c]{background:none;border:none;font-size:28px;color:#666;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.close-button[data-v-2277e85c]:hover{background:#f0f0f0}.modal-body[data-v-2277e85c]{padding:24px}.modal-text[data-v-2277e85c]{font-size:16px;line-height:1.5;color:#333;margin-bottom:24px}.feedback-section[data-v-2277e85c]{margin-top:20px}.feedback-label[data-v-2277e85c]{display:block;font-size:14px;font-weight:600;color:#333;margin-bottom:8px}.feedback-textarea[data-v-2277e85c]{width:100%;padding:12px;border:1px solid #e0e0e0;border-radius:8px;font-size:14px;font-family:inherit;resize:vertical;transition:border-color .2s}.feedback-textarea[data-v-2277e85c]:focus{outline:none;border-color:#1976d2}.modal-footer[data-v-2277e85c]{display:flex;gap:12px;padding:20px 24px;border-top:1px solid #e0e0e0;justify-content:flex-end}.button-secondary[data-v-2277e85c]{padding:12px 24px;background:#fff;color:#333;border:1px solid #e0e0e0;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.button-secondary[data-v-2277e85c]:hover{background:#f5f5f5}.button-danger[data-v-2277e85c]{padding:12px 24px;background:#d32f2f;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.button-danger[data-v-2277e85c]:hover:not(:disabled){background:#b71c1c}.button-danger[data-v-2277e85c]:disabled{opacity:.5;cursor:not-allowed}.withBackground[data-v-36b27d1f]{height:50px}
1
+ .app-store-icon[data-v-465df13a]{box-shadow:0 4px 10px #00000017;border-radius:12px}#codeInput[data-v-6ab8e3d4],#emailInput[data-v-6ab8e3d4]{text-align:center;padding-right:15%;font-size:17px}.firstRow img[data-v-64ae2517]{width:25px;height:25px;position:absolute;top:50%;right:0;transform:translate(-50%,-50%)}.withBackground[data-v-a24cde36]{height:50px}.no-subscriptions[data-v-a24cde36]{padding:40px 20px}.gray-text[data-v-a24cde36]{color:#666;font-size:16px}.subscription-card[data-v-a24cde36]{background:#fff;border:1px solid #e0e0e0;border-radius:12px;padding:20px;margin-bottom:16px;box-shadow:0 2px 4px #0000000d}.subscription-header[data-v-a24cde36]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #f0f0f0}.subscription-info[data-v-a24cde36]{flex:1}.subscription-name[data-v-a24cde36]{font-size:20px;font-weight:600;margin:0 0 8px;color:#000}.subscription-status[data-v-a24cde36]{display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;text-transform:uppercase}.status-trialing[data-v-a24cde36]{background:#e3f2fd;color:#1976d2}.status-active[data-v-a24cde36]{background:#e8f5e9;color:#388e3c}.status-past_due[data-v-a24cde36]{background:#fff3e0;color:#f57c00}.status-canceled[data-v-a24cde36]{background:#ffebee;color:#d32f2f}.subscription-details[data-v-a24cde36]{margin-bottom:16px}.detail-row[data-v-a24cde36]{display:flex;justify-content:space-between;padding:8px 0;font-size:15px}.detail-label[data-v-a24cde36]{color:#666;font-weight:500}.detail-value[data-v-a24cde36]{color:#000;font-weight:600}.subscription-actions[data-v-a24cde36]{display:flex;justify-content:flex-end;padding-top:16px;border-top:1px solid #f0f0f0}.cancel-button[data-v-a24cde36]{padding:10px 20px;background:#fff;color:#d32f2f;border:1px solid #d32f2f;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.cancel-button[data-v-a24cde36]:hover:not(:disabled){background:#d32f2f;color:#fff}.cancel-button[data-v-a24cde36]:disabled{opacity:.5;cursor:not-allowed}.modal-overlay[data-v-a24cde36]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}.modal-content[data-v-a24cde36]{background:#fff;border-radius:16px;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #0003}.modal-header[data-v-a24cde36]{display:flex;justify-content:space-between;align-items:center;padding:24px;border-bottom:1px solid #e0e0e0}.modal-header h3[data-v-a24cde36]{margin:0;font-size:20px;font-weight:600;color:#000}.close-button[data-v-a24cde36]{background:none;border:none;font-size:28px;color:#666;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.close-button[data-v-a24cde36]:hover{background:#f0f0f0}.modal-body[data-v-a24cde36]{padding:24px}.modal-text[data-v-a24cde36]{font-size:16px;line-height:1.5;color:#333;margin-bottom:24px}.feedback-section[data-v-a24cde36]{margin-top:20px}.feedback-label[data-v-a24cde36]{display:block;font-size:14px;font-weight:600;color:#333;margin-bottom:8px}.feedback-textarea[data-v-a24cde36]{width:100%;padding:12px;border:1px solid #e0e0e0;border-radius:8px;font-size:14px;font-family:inherit;resize:vertical;transition:border-color .2s}.feedback-textarea[data-v-a24cde36]:focus{outline:none;border-color:#1976d2}.modal-footer[data-v-a24cde36]{display:flex;gap:12px;padding:20px 24px;border-top:1px solid #e0e0e0;justify-content:flex-end}.button-secondary[data-v-a24cde36]{padding:12px 24px;background:#fff;color:#333;border:1px solid #e0e0e0;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.button-secondary[data-v-a24cde36]:hover{background:#f5f5f5}.button-danger[data-v-a24cde36]{padding:12px 24px;background:#d32f2f;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.button-danger[data-v-a24cde36]:hover:not(:disabled){background:#b71c1c}.button-danger[data-v-a24cde36]:disabled{opacity:.5;cursor:not-allowed}#emailInput[data-v-707a4b16]{text-align:center;padding-right:15%;font-size:17px}html *{font-family:Inter,sans-serif}#bodyId{padding-top:3%;max-width:667px!important;margin:1.5% auto auto;height:95%!important;border-radius:20px}.action-block-top .default-text,.action-block-top .default-text:after{border-radius:50%;width:10em!important;height:10em!important}.action-block-top .default-text{margin:10px auto;font-size:3px;position:relative;text-indent:-9999em;border-left:.5em solid #000000;border-top:.5em solid rgba(0,0,0,.2);border-right:.5em solid rgba(0,0,0,.2);border-bottom:.5em solid rgba(0,0,0,.2);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.smartbanner-ios{background:linear-gradient(to bottom,#f4f4f4,#f4f4f4);box-shadow:0 0 #fff;border-bottom:1px solid #dddddd}.smartbanner-icon{border-radius:16px}.smartbanner-ios .smartbanner-button{font-size:13px;padding:9px 0;height:40px;border-radius:13px;background:#f4f4f4;color:#0a99d2;border:none;box-shadow:none;text-transform:uppercase}.snack-body{display:none;border-radius:40px;font-size:15px!important}#errorSnack{background-color:#fee3e3!important;border:2px solid #edd9d9!important;color:#000}#successSnack{background-color:#eff5eb!important;border:2px solid #e3ecd7!important;color:#000}.grecaptcha-badge{visibility:hidden}.header-logo{position:absolute;left:50%;transform:translate(-50%,-50%);margin-top:16px;z-index:2}.header-logo-img{height:40px;margin-top:10px}@media (max-width: 768px){#bodyId{margin-top:0;border-radius:0;height:100%!important}.header-logo{margin-top:16px}}.withBackground[data-v-2f7f5584],.withBackground[data-v-36b27d1f]{height:50px}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tapni/auth",
3
- "version": "1.0.64.dev",
3
+ "version": "1.0.65.dev",
4
4
  "type": "module",
5
5
  "main": "./dist/TapniAuth.umd.js",
6
6
  "module": "./dist/TapniAuth.es.js",
package/src/App.vue CHANGED
@@ -21,6 +21,7 @@ document.addEventListener('DOMContentLoaded', function () {
21
21
  <AuthRegister v-else-if="initialized && renderView === 'AuthRegister'" :isModal="isModal" />
22
22
  <AuthVerify v-else-if="initialized && renderView === 'AuthVerify'" :isModal="isModal" />
23
23
  <AuthSecurity v-else-if="initialized && renderView === 'AuthSecurity'" :isModal="isModal" :payload="payload" @update:viewProp="setView" />
24
+ <AuthBilling v-else-if="initialized && renderView === 'AuthBilling'" :isModal="isModal" :payload="payload" @update:viewProp="setView" />
24
25
  <AuthReset v-else-if="initialized && renderView === 'AuthReset'" />
25
26
  <AuthCallback v-else-if="initialized && renderView === 'AuthCallback'" />
26
27
  <RouterView v-else-if="display !== 'npm'" />
@@ -49,6 +50,7 @@ import AuthAccount from '@/views/Account.vue';
49
50
  import AuthRegister from '@/views/Register.vue';
50
51
  import AuthVerify from '@/views/Verify.vue';
51
52
  import AuthSecurity from '@/views/Security.vue';
53
+ import AuthBilling from '@/views/Billing.vue';
52
54
  import AuthGeneral from '@/views/General.vue';
53
55
  import AuthReset from '@/views/Reset.vue';
54
56
  import AuthCallback from '@/views/Callback.vue';
@@ -77,6 +79,7 @@ export default {
77
79
  AuthRegister,
78
80
  AuthLogin,
79
81
  AuthAccount,
82
+ AuthBilling,
80
83
  AuthWelcome,
81
84
  AuthGeneral
82
85
  },
@@ -139,7 +139,19 @@
139
139
  </div>
140
140
  </router-link>
141
141
 
142
- <router-link to="/billing" class="settingRow">
142
+ <div v-if="isModal" class="settingRow" @click="$emit('update:viewProp', 'AuthBilling')">
143
+ <div class="firstRow">
144
+ <img
145
+ :src="getIcon('billing-card-black.svg')"
146
+ class="withBackground"
147
+ />
148
+ <h4>{{ssoLang[appLanguage].billing }}</h4>
149
+
150
+ <img :src="getIcon('arrow-gray-right.svg')" />
151
+ </div>
152
+ </div>
153
+
154
+ <router-link v-else to="/billing" class="settingRow">
143
155
  <div class="firstRow">
144
156
  <img
145
157
  :src="getIcon('billing-card-black.svg')"
@@ -7,7 +7,16 @@
7
7
  </a>
8
8
  <div class="subheaderContainer full-top">
9
9
  <!-- Back Button -->
10
- <router-link v-if="!isModal" to="/account" class="button gray-button pointer left-button">
10
+ <div v-if="isModal" class="pointer left-button" @click="$emit('update:viewProp', 'AuthAccount')">
11
+ <img
12
+ :src="getIcon('arrow-gray-right.svg')"
13
+ height="20"
14
+ width="20"
15
+ class="btn-icon"
16
+ style="rotate: 180deg;"
17
+ />
18
+ </div>
19
+ <router-link v-else to="/account" class="button gray-button pointer left-button">
11
20
  <img
12
21
  :src="getIcon('arrow-gray-right.svg')"
13
22
  height="20"
@@ -1,256 +0,0 @@
1
- import { _ as m, A as f, E as u, a as y } from "./install-Cb6nCJn_.js";
2
- import { resolveComponent as v, openBlock as a, createElementBlock as r, createElementVNode as e, createCommentVNode as d, createBlock as C, withCtx as _, toDisplayString as n, Fragment as k, renderList as w, normalizeClass as S, withModifiers as M, createTextVNode as b, withDirectives as x, vModelText as D } from "vue";
3
- const E = {
4
- name: "AuthBilling",
5
- mixins: [f],
6
- props: {
7
- payload: {
8
- type: Object,
9
- default: {}
10
- }
11
- },
12
- data() {
13
- return {
14
- loading: !1,
15
- subscriptions: [],
16
- showCancelModal: !1,
17
- selectedSubscription: null,
18
- cancelFeedback: ""
19
- };
20
- },
21
- async mounted() {
22
- this.isLoggedIn || this.$router.push("/login"), await this.getAccountSettings(), this.loadSubscriptions();
23
- },
24
- methods: {
25
- close() {
26
- u.$emit("ssoEvent", { name: "toggleAuthModal", data: !0 });
27
- },
28
- loadSubscriptions() {
29
- if (this.account.billing) {
30
- const t = this.account.billing, s = [];
31
- for (const l in t)
32
- l !== "region" && l !== "currency" && l !== "paymentProfiles" && typeof t[l] == "object" && t[l].subscriptionId && s.push(t[l]);
33
- this.subscriptions = s;
34
- }
35
- },
36
- formatCurrency(t, s) {
37
- return `${{
38
- EUR: "€",
39
- USD: "$",
40
- GBP: "£"
41
- }[s == null ? void 0 : s.toUpperCase()] || s || ""}${(t == null ? void 0 : t.toFixed(2)) || "0.00"}`;
42
- },
43
- formatInterval(t) {
44
- return t ? `per ${t}` : "";
45
- },
46
- formatDate(t) {
47
- return t ? new Date(t * 1e3).toLocaleDateString("en-US", { year: "numeric", month: "short", day: "numeric" }) : "";
48
- },
49
- getStatusText(t) {
50
- return {
51
- trialing: "Trial",
52
- active: "Active",
53
- past_due: "Past Due",
54
- canceled: "Canceled",
55
- unpaid: "Unpaid"
56
- }[t] || t;
57
- },
58
- getStatusClass(t) {
59
- return `status-${t}`;
60
- },
61
- openCancelModal(t) {
62
- this.selectedSubscription = t, this.showCancelModal = !0, this.cancelFeedback = "";
63
- },
64
- closeCancelModal() {
65
- this.showCancelModal = !1, this.selectedSubscription = null, this.cancelFeedback = "";
66
- },
67
- async confirmCancel() {
68
- var t, s;
69
- if (this.selectedSubscription) {
70
- if (this.selectedSubscription.paymentGateway === "revenuecat") {
71
- u.$emit("ssoEvent", {
72
- name: "subscriptionCancelled",
73
- data: {
74
- subscriptionId: this.selectedSubscription.subscriptionId,
75
- paymentGateway: this.selectedSubscription.paymentGateway,
76
- feedback: this.cancelFeedback
77
- }
78
- }), this.closeCancelModal();
79
- return;
80
- }
81
- this.loading = !0;
82
- try {
83
- const l = await y(!1, "v2").post("checkout/cancel/" + this.selectedSubscription.subscriptionId, {
84
- feedback: this.cancelFeedback
85
- });
86
- if (l.data.success)
87
- u.$emit("showToast", {
88
- type: "success",
89
- message: "Subscription canceled successfully"
90
- }), await this.getAccountSettings(), this.loadSubscriptions(), this.closeCancelModal();
91
- else
92
- throw new Error(l.data.message || "Failed to cancel subscription");
93
- } catch (l) {
94
- console.error("Error canceling subscription:", l), u.$emit("showToast", {
95
- type: "error",
96
- message: ((s = (t = l.response) == null ? void 0 : t.data) == null ? void 0 : s.message) || "Failed to cancel subscription. Please try again."
97
- });
98
- } finally {
99
- this.loading = !1;
100
- }
101
- }
102
- }
103
- }
104
- }, F = { class: "page-login content-boxed content-boxed-padding" }, I = { class: "subheaderContainer full-top" }, T = ["src"], A = {
105
- class: "center-text",
106
- style: { "flex-grow": "1", "text-align": "center", margin: "0", "font-weight": "600" }
107
- }, B = { class: "container left-text" }, L = { class: "center-text" }, N = { class: "full-top" }, U = {
108
- key: 0,
109
- class: "no-subscriptions center-text full-top"
110
- }, P = { key: 1 }, G = { class: "subscription-header" }, V = { class: "subscription-info" }, j = { class: "subscription-name" }, z = { class: "subscription-details" }, K = { class: "detail-row" }, O = { class: "detail-value" }, R = { class: "detail-row" }, W = { class: "detail-value" }, Y = { class: "detail-row" }, q = { class: "detail-value" }, H = {
111
- key: 0,
112
- class: "detail-row"
113
- }, J = { class: "detail-value" }, Q = {
114
- key: 1,
115
- class: "detail-row"
116
- }, X = { class: "detail-value" }, Z = {
117
- key: 0,
118
- class: "subscription-actions"
119
- }, $ = ["onClick", "disabled"], ss = { class: "modal-content" }, es = { class: "modal-header" }, ts = { class: "modal-body" }, os = { class: "modal-text" }, is = { class: "feedback-section" }, ls = { class: "modal-footer" }, ns = ["disabled"];
120
- function as(t, s, l, g, c, i) {
121
- var p;
122
- const h = v("router-link");
123
- return a(), r("div", F, [
124
- t.isModal ? (a(), r("a", {
125
- key: 0,
126
- onClick: s[0] || (s[0] = (...o) => i.close && i.close(...o)),
127
- class: "color-black pull-right pointer",
128
- style: { "margin-top": "0px", position: "absolute", right: "-20px", "text-align": "right" }
129
- }, s[6] || (s[6] = [
130
- e("i", { class: "font-17 color-black" }, [
131
- e("img", {
132
- src: "https://cdn.tapni.co/icons/down-arrow.png",
133
- class: "responsive-image",
134
- style: { width: "35%" }
135
- })
136
- ], -1)
137
- ]))) : d("", !0),
138
- e("div", I, [
139
- t.isModal ? d("", !0) : (a(), C(h, {
140
- key: 0,
141
- to: "/account",
142
- class: "button gray-button pointer left-button"
143
- }, {
144
- default: _(() => [
145
- e("img", {
146
- src: t.getIcon("arrow-gray-right.svg"),
147
- height: "20",
148
- width: "20",
149
- class: "btn-icon",
150
- style: { rotate: "180deg" }
151
- }, null, 8, T)
152
- ]),
153
- _: 1
154
- })),
155
- e("h2", A, n(t.ssoLang[t.appLanguage].billing), 1)
156
- ]),
157
- e("div", B, [
158
- e("p", L, n(t.ssoLang[t.appLanguage].billing_p), 1),
159
- e("div", N, [
160
- c.subscriptions.length === 0 ? (a(), r("div", U, s[7] || (s[7] = [
161
- e("p", { class: "gray-text" }, "There are no active subscriptions at this point.", -1)
162
- ]))) : (a(), r("div", P, [
163
- (a(!0), r(k, null, w(c.subscriptions, (o) => (a(), r("div", {
164
- key: o.subscriptionId,
165
- class: "subscription-card half-bottom"
166
- }, [
167
- e("div", G, [
168
- e("div", V, [
169
- e("h3", j, n(o.subscriptionName), 1),
170
- e("span", {
171
- class: S(["subscription-status", i.getStatusClass(o.status)])
172
- }, n(i.getStatusText(o.status)), 3)
173
- ])
174
- ]),
175
- e("div", z, [
176
- e("div", K, [
177
- s[8] || (s[8] = e("span", { class: "detail-label" }, "Amount:", -1)),
178
- e("span", O, n(i.formatCurrency(o.amount, o.currency)), 1)
179
- ]),
180
- e("div", R, [
181
- s[9] || (s[9] = e("span", { class: "detail-label" }, "Billing:", -1)),
182
- e("span", W, n(i.formatInterval(o.interval)), 1)
183
- ]),
184
- e("div", Y, [
185
- s[10] || (s[10] = e("span", { class: "detail-label" }, "Licenses:", -1)),
186
- e("span", q, n(o.licenses), 1)
187
- ]),
188
- o.isTrial ? (a(), r("div", H, [
189
- s[11] || (s[11] = e("span", { class: "detail-label" }, "Trial Ends:", -1)),
190
- e("span", J, n(i.formatDate(o.trialEnd)), 1)
191
- ])) : o.endDate ? (a(), r("div", Q, [
192
- s[12] || (s[12] = e("span", { class: "detail-label" }, "Next Billing:", -1)),
193
- e("span", X, n(i.formatDate(o.endDate)), 1)
194
- ])) : d("", !0)
195
- ]),
196
- o.status !== "canceled" ? (a(), r("div", Z, [
197
- e("button", {
198
- onClick: (cs) => i.openCancelModal(o),
199
- class: "cancel-button",
200
- disabled: c.loading
201
- }, n(c.loading ? "Processing..." : "Cancel Subscription"), 9, $)
202
- ])) : d("", !0)
203
- ]))), 128))
204
- ]))
205
- ])
206
- ]),
207
- c.showCancelModal ? (a(), r("div", {
208
- key: 1,
209
- class: "modal-overlay",
210
- onClick: s[5] || (s[5] = M((...o) => i.closeCancelModal && i.closeCancelModal(...o), ["self"]))
211
- }, [
212
- e("div", ss, [
213
- e("div", es, [
214
- s[13] || (s[13] = e("h3", null, "Cancel Subscription", -1)),
215
- e("button", {
216
- onClick: s[1] || (s[1] = (...o) => i.closeCancelModal && i.closeCancelModal(...o)),
217
- class: "close-button"
218
- }, "×")
219
- ]),
220
- e("div", ts, [
221
- e("p", os, [
222
- s[14] || (s[14] = b(" Are you sure you want to cancel your subscription to ")),
223
- e("b", null, n((p = c.selectedSubscription) == null ? void 0 : p.subscriptionName), 1),
224
- s[15] || (s[15] = b("? "))
225
- ]),
226
- e("div", is, [
227
- s[16] || (s[16] = e("label", { class: "feedback-label" }, "We'd love to know why you're canceling (optional):", -1)),
228
- x(e("textarea", {
229
- "onUpdate:modelValue": s[2] || (s[2] = (o) => c.cancelFeedback = o),
230
- class: "feedback-textarea",
231
- placeholder: "Your feedback helps us improve our service...",
232
- rows: "4"
233
- }, null, 512), [
234
- [D, c.cancelFeedback]
235
- ])
236
- ])
237
- ]),
238
- e("div", ls, [
239
- e("button", {
240
- onClick: s[3] || (s[3] = (...o) => i.closeCancelModal && i.closeCancelModal(...o)),
241
- class: "button-secondary"
242
- }, " Keep Subscription "),
243
- e("button", {
244
- onClick: s[4] || (s[4] = (...o) => i.confirmCancel && i.confirmCancel(...o)),
245
- class: "button-danger",
246
- disabled: c.loading
247
- }, n(c.loading ? "Canceling..." : "Confirm Cancellation"), 9, ns)
248
- ])
249
- ])
250
- ])) : d("", !0)
251
- ]);
252
- }
253
- const us = /* @__PURE__ */ m(E, [["render", as], ["__scopeId", "data-v-2277e85c"]]);
254
- export {
255
- us as default
256
- };