your-ai-workflow-firebase-os 2.0.2 → 2.0.3

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.
Files changed (180) hide show
  1. package/dist/AccessNotice-BZ5Gt1nP.js +40 -0
  2. package/dist/AccessNotice-CN7kc70o.cjs +1 -0
  3. package/dist/{AddressField-B2YBRXcx.js → AddressField-9Sqn8TvC.js} +3 -3
  4. package/dist/{AddressField-BBv8NGX8.cjs → AddressField-B7wtV8yA.cjs} +1 -1
  5. package/dist/Assets-DBMwZ3bN.cjs +1 -0
  6. package/dist/Assets-DT-NU_WO.js +296 -0
  7. package/dist/Attachments-Bl9_dfsu.js +46 -0
  8. package/dist/Attachments-UVK9SRXf.cjs +1 -0
  9. package/dist/Billing-0RIHayHy.cjs +1 -0
  10. package/dist/Billing-FNE2r3_d.js +379 -0
  11. package/dist/BookingCalendar-BP5kiv3d.cjs +1 -0
  12. package/dist/BookingCalendar-DZ2fEFja.js +309 -0
  13. package/dist/Button-4lzOE31p.js +48 -0
  14. package/dist/Button-5DlB2MCi.cjs +1 -0
  15. package/dist/CalendarView-BimoXy_k.cjs +1 -0
  16. package/dist/CalendarView-D-ykjpvI.js +664 -0
  17. package/dist/ConfirmModal-Di9GR-vV.cjs +1 -0
  18. package/dist/ConfirmModal-gKQEpd4d.js +113 -0
  19. package/dist/ContactPopup-BXnHrRwl.js +1114 -0
  20. package/dist/ContactPopup-lxmRMoIa.cjs +1 -0
  21. package/dist/CopyLink-BpEQWmfI.cjs +1 -0
  22. package/dist/CopyLink-CBAVfcm1.js +43 -0
  23. package/dist/DashboardNav-CXa_ci-_.cjs +1 -0
  24. package/dist/DashboardNav-Dmn7PVSp.js +886 -0
  25. package/dist/EmailAdmin-CjN_rvxT.js +318 -0
  26. package/dist/EmailAdmin-lAEBdY1s.cjs +1 -0
  27. package/dist/EventCard-46EquygT.cjs +1 -0
  28. package/dist/EventCard-B6xD-mk3.js +97 -0
  29. package/dist/FileViewerPopup-CX-J75TM.js +1283 -0
  30. package/dist/FileViewerPopup-D8-MmIoS.cjs +3 -0
  31. package/dist/FormNote-BivRNA3J.js +50 -0
  32. package/dist/FormNote-BtdTGpml.cjs +1 -0
  33. package/dist/FormsAdmin-B5PBCG2W.js +812 -0
  34. package/dist/FormsAdmin-BQCULvi5.cjs +1 -0
  35. package/dist/Inbox-BPk2ZkE5.js +779 -0
  36. package/dist/Inbox-DNrcBx0o.cjs +3 -0
  37. package/dist/Loader-Bu89fsbB.cjs +1 -0
  38. package/dist/Loader-D4gwgBOq.js +32 -0
  39. package/dist/ManagePlanButton-B0dwqZBd.cjs +1 -0
  40. package/dist/ManagePlanButton-BSrOHYze.js +29 -0
  41. package/dist/MyBookings-6qr0GgzO.cjs +1 -0
  42. package/dist/MyBookings-BQjGM2LQ.js +113 -0
  43. package/dist/PageTitle-CZhgmmDT.cjs +3 -0
  44. package/dist/PageTitle-D93YCiN8.js +1606 -0
  45. package/dist/PagesAdmin-BcHIcqM5.cjs +34 -0
  46. package/dist/PagesAdmin-D69P9nRb.js +5802 -0
  47. package/dist/PagesAdmin-DNwZOKjA.cjs +1 -0
  48. package/dist/PagesAdmin-HUITEcHx.js +3 -0
  49. package/dist/PaymentsAdmin-C2iCI9qC.js +1291 -0
  50. package/dist/PaymentsAdmin-CoXi2vCm.cjs +2 -0
  51. package/dist/{PhoneInputField-B3P_vUDW.cjs → PhoneInputField-BEwYZMB7.cjs} +1 -1
  52. package/dist/{PhoneInputField-D3wWs-M8.js → PhoneInputField-BG0L2djE.js} +2 -2
  53. package/dist/PhoneInputField-DfOtCIH_.js +2 -0
  54. package/dist/{PhoneInputField-CdNTvWXQ.cjs → PhoneInputField-jhWvto8C.cjs} +1 -1
  55. package/dist/Popup-DHYGFl2-.cjs +1 -0
  56. package/dist/Popup-xROLytgr.js +142 -0
  57. package/dist/ProviderMark-BBfaM5Yl.js +52 -0
  58. package/dist/ProviderMark-xLkUN3Fx.cjs +1 -0
  59. package/dist/PublishApp-Bm-6r3Td.js +595 -0
  60. package/dist/PublishApp-D4XJUkJa.cjs +2 -0
  61. package/dist/Said-CoC15awL.js +94 -0
  62. package/dist/Said-IqCNofdh.cjs +1 -0
  63. package/dist/ScheduleAdmin-BKfQkrR8.js +1853 -0
  64. package/dist/ScheduleAdmin-DwK36GAZ.cjs +1 -0
  65. package/dist/SchedulePicker--urIH2Eb.js +112 -0
  66. package/dist/SchedulePicker-nmqzUnUH.cjs +1 -0
  67. package/dist/Setup-CHLgd-ag.js +849 -0
  68. package/dist/Setup-CaDranTm.cjs +1374 -0
  69. package/dist/SetupPayments-CVIwh1eQ.js +411 -0
  70. package/dist/SetupPayments-HNXWA25X.cjs +1 -0
  71. package/dist/SignInAdmin-C94-A-0w.cjs +4 -0
  72. package/dist/SignInAdmin-Yxgv_8U4.js +766 -0
  73. package/dist/SupportBar-CDT0HwdP.cjs +1 -0
  74. package/dist/SupportBar-CN_JGC-9.js +117 -0
  75. package/dist/SystemTabContent-L3vGGF3P.cjs +1 -0
  76. package/dist/SystemTabContent-QdxxLILE.js +35 -0
  77. package/dist/TemplateDrive-DV8zNjYe.cjs +1 -0
  78. package/dist/TemplateDrive-NJY_AAvV.js +1197 -0
  79. package/dist/ThemeAdmin-BzFjJkLg.js +269 -0
  80. package/dist/ThemeAdmin-DVnPNxe7.cjs +1 -0
  81. package/dist/ThemeAdmin-DY7Vc4Sj.cjs +3 -0
  82. package/dist/ThemeAdmin-DnC-D2N3.js +2 -0
  83. package/dist/{ContactPopup-Dsg2ntq3.js → TimeZoneField-DkI1Bkcz.js} +3191 -5322
  84. package/dist/TimeZoneField-qs7NPR30.cjs +12 -0
  85. package/dist/TransactionsAdmin-BsZ-oQWi.js +582 -0
  86. package/dist/TransactionsAdmin-CTSTiPld.cjs +1 -0
  87. package/dist/Trouble-9es_AI4F.cjs +1 -0
  88. package/dist/Trouble-oWt9fMsm.js +164 -0
  89. package/dist/Users-CTitWXyd.cjs +1 -0
  90. package/dist/Users-DJjQTWJF.js +1207 -0
  91. package/dist/aiModels-DIP9fn8T.cjs +1 -0
  92. package/dist/{aiModels-BHlEfuRJ.js → aiModels-DnDhNGup.js} +29 -61
  93. package/dist/arrivalRoads-BJ-35vkk.js +228 -0
  94. package/dist/arrivalRoads-qoU-B4jt.cjs +4 -0
  95. package/dist/{bake-BWG3y-15.cjs → bake-n2wyFw0B.cjs} +1 -1
  96. package/dist/{bake-BtYOG1Du.js → bake-naZeMu98.js} +1 -1
  97. package/dist/bookingPages-C7a3srPG.js +102 -0
  98. package/dist/bookingPages-DvbFbD9X.cjs +1 -0
  99. package/dist/components/CustomSelect.d.ts +7 -1
  100. package/dist/components/RegistrationFields.d.ts +6 -1
  101. package/dist/components/Reveal.d.ts +12 -0
  102. package/dist/components/ScrollToTop.d.ts +4 -0
  103. package/dist/contentFallback-C9MZjdq7.cjs +1 -0
  104. package/dist/contentFallback-CEDY0Pwp.js +96 -0
  105. package/dist/contentKey-Bwry4lDa.js +13 -0
  106. package/dist/contentKey-DJGYYnAE.cjs +1 -0
  107. package/dist/email-BfnZnMwD.cjs +1 -0
  108. package/dist/email-Ddj8Dlu6.js +58 -0
  109. package/dist/{fileBytes-BdwaFKRy.cjs → fileBytes-BJPaiX9Y.cjs} +1 -1
  110. package/dist/{fileBytes-DuW2K-H_.js → fileBytes-bjgvCfWu.js} +2 -2
  111. package/dist/forms-Bvx9HTM6.js +75 -0
  112. package/dist/forms-CmNeTETW.cjs +1 -0
  113. package/dist/lib/ThemeContext.d.ts +0 -14
  114. package/dist/lib/bareImgWatch.d.ts +6 -1
  115. package/dist/lib/localEdits.d.ts +2 -0
  116. package/dist/lib/paymentProducts.d.ts +8 -0
  117. package/dist/lib/payments.d.ts +11 -1
  118. package/dist/notices-B7iIrIEg.js +29 -0
  119. package/dist/notices-upMg8UVh.cjs +1 -0
  120. package/dist/openOnArrival-Buwqb86D.cjs +1 -0
  121. package/dist/openOnArrival-S2K6v-lB.js +35 -0
  122. package/dist/pageFiles--Ih60ITP.js +45 -0
  123. package/dist/pageFiles-UtBmlOcD.cjs +1 -0
  124. package/dist/pages/PagesAdmin.d.ts +69 -0
  125. package/dist/people-2jZE_pdI.js +102 -0
  126. package/dist/people-BpVvIr9-.cjs +1 -0
  127. package/dist/personName-CFw3pxuu.js +18 -0
  128. package/dist/personName-CbzN_i57.cjs +1 -0
  129. package/dist/publishSteps-C1cDFzzB.js +88 -0
  130. package/dist/publishSteps-SSm8afDw.cjs +1 -0
  131. package/dist/recordLock-DHVvI9bP.js +61 -0
  132. package/dist/recordLock-DWeIxiwh.cjs +1 -0
  133. package/dist/recordsKey-B7QrxdeU.cjs +1 -0
  134. package/dist/recordsKey-D5-wC0Aw.js +141 -0
  135. package/dist/registrationFields-CLeR2lQJ.js +181 -0
  136. package/dist/registrationFields-v4pOoRdn.cjs +1 -0
  137. package/dist/renderer.cjs.js +1 -1
  138. package/dist/renderer.es.js +1 -1
  139. package/dist/roles-D6VaHWfV.js +147 -0
  140. package/dist/roles-DQUFFBQe.cjs +1 -0
  141. package/dist/scheduleData-ATN8w5hI.js +727 -0
  142. package/dist/scheduleData-Cltj0ABZ.cjs +1 -0
  143. package/dist/server.cjs.js +6 -6
  144. package/dist/server.es.js +716 -715
  145. package/dist/serviceStatus-TQyZO_Y_.cjs +1 -0
  146. package/dist/serviceStatus-vS8AI7SZ.js +125 -0
  147. package/dist/tabAudience-BqpN6dsR.cjs +1 -0
  148. package/dist/tabAudience-CRyMvv0v.js +34 -0
  149. package/dist/transactions-BqMQDRx3.js +343 -0
  150. package/dist/transactions-CufFrdAM.cjs +1 -0
  151. package/dist/useIsPhone-BVGx_X3e.js +13 -0
  152. package/dist/useIsPhone-o63tNneA.cjs +1 -0
  153. package/dist/{validate-DzSJWuyL.js → validate-CmC_tLK-.js} +433 -351
  154. package/dist/validate-DZMwqSrb.cjs +103 -0
  155. package/dist/vite/validate.d.ts +14 -0
  156. package/dist/vite.cjs.js +1 -1
  157. package/dist/vite.es.js +1 -1
  158. package/dist/your-ai-workflow-firebase-os.cjs.js +15 -1431
  159. package/dist/your-ai-workflow-firebase-os.css +1 -1
  160. package/dist/your-ai-workflow-firebase-os.es.js +8200 -32421
  161. package/package.json +1 -1
  162. package/src/index.css +122 -2
  163. package/dist/ContactPopup-IwBm-eqz.cjs +0 -12
  164. package/dist/PhoneInputField-CVamkTJg.js +0 -2
  165. package/dist/aiModels-BIhoTNH0.cjs +0 -1
  166. package/dist/validate-e48WXJdP.cjs +0 -103
  167. /package/dist/{address-DI1YaCI4.cjs → address-Bsb8COq2.cjs} +0 -0
  168. /package/dist/{address-Ca1h_UZX.js → address-C2bHNxJU.js} +0 -0
  169. /package/dist/{dist-BkUiTtIb.js → dist-DUPvBnOA.js} +0 -0
  170. /package/dist/{dist-BLGlDv1e.cjs → dist-E4jTFPs7.cjs} +0 -0
  171. /package/dist/{lucide-react-BYniZ3lQ.cjs → lucide-react-BwV6L6Is.cjs} +0 -0
  172. /package/dist/{lucide-react-ehRy1vqS.js → lucide-react-CA7GD7Nv.js} +0 -0
  173. /package/dist/{mediaKind-dk396a03.cjs → mediaKind-D0MWyv6b.cjs} +0 -0
  174. /package/dist/{mediaKind-De2Cx_kB.js → mediaKind-DmKMsjeY.js} +0 -0
  175. /package/dist/{pdf-u73U7-6s.js → pdf-DRXcPGkr.js} +0 -0
  176. /package/dist/{pdf-B24jYmSf.cjs → pdf-jLjjhvjp.cjs} +0 -0
  177. /package/dist/{pdf.worker.min-BPOWx2_9.js → pdf.worker.min-CfKZezeM.js} +0 -0
  178. /package/dist/{pdf.worker.min-BvhEiZFe.cjs → pdf.worker.min-bLgNWd7w.cjs} +0 -0
  179. /package/dist/{verifiedAccount-C1iCxopN.js → verifiedAccount-DRbRFJ6H.js} +0 -0
  180. /package/dist/{verifiedAccount-D3OeaOBo.cjs → verifiedAccount-DScyKk96.cjs} +0 -0
@@ -0,0 +1,379 @@
1
+ import { t as e } from "./PageTitle-D93YCiN8.js";
2
+ import { T as t, cr as n, dr as r, fi as i, g as a, sr as o, u as s } from "./TimeZoneField-DkI1Bkcz.js";
3
+ import { t as c } from "./DashboardNav-Dmn7PVSp.js";
4
+ import { Ht as l, ht as u, on as d, tt as f } from "./lucide-react-CA7GD7Nv.js";
5
+ import { c as p, o as m, r as h } from "./transactions-BqMQDRx3.js";
6
+ import { t as g } from "./ManagePlanButton-BSrOHYze.js";
7
+ import { t as _ } from "./openOnArrival-S2K6v-lB.js";
8
+ import { useState as v } from "react";
9
+ import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
10
+ import { useSearchParams as S } from "react-router-dom";
11
+ //#region src/pages/Billing.tsx
12
+ function C(e) {
13
+ return e.status === "past_due" ? {
14
+ label: "Past due",
15
+ tone: "bad"
16
+ } : e.active ? {
17
+ label: "Active",
18
+ tone: "good"
19
+ } : {
20
+ label: "Cancelled",
21
+ tone: "quiet"
22
+ };
23
+ }
24
+ function w(e) {
25
+ return e.fullyRefunded ? {
26
+ label: "Refunded",
27
+ tone: "quiet"
28
+ } : (e.amountRefunded || 0) > 0 ? {
29
+ label: "Partly refunded",
30
+ tone: "good"
31
+ } : e.paid ? {
32
+ label: "Paid",
33
+ tone: "good"
34
+ } : {
35
+ label: "Not paid",
36
+ tone: "quiet"
37
+ };
38
+ }
39
+ function T(e) {
40
+ return !e.currentPeriodEnd || !e.active ? "" : e.cancelAtPeriodEnd ? `Ends on ${j(e.currentPeriodEnd)}` : `Renews on ${j(e.currentPeriodEnd)}`;
41
+ }
42
+ var E = (e) => e.productName || e.description || "One-off payment", D = (e) => {
43
+ if (/^and \d+ more$/i.test(e)) return {
44
+ words: e,
45
+ price: "",
46
+ quantity: 0,
47
+ more: !0
48
+ };
49
+ let t = e.lastIndexOf(" · "), n = t > 0 ? e.slice(t + 3).trim() : "", r = /\d/.test(n), i = r ? e.slice(0, t).trim() : e, a = i.match(/^(\d+)\s*[×x]\s/);
50
+ return {
51
+ words: i,
52
+ price: r ? n : "",
53
+ quantity: a ? Number(a[1]) : 0,
54
+ more: !1
55
+ };
56
+ };
57
+ function O(e, t) {
58
+ let n = typeof e == "string" ? e.trim() : "";
59
+ if (!n) return [];
60
+ let r = p(n);
61
+ return r && typeof r == "object" ? (Array.isArray(r) ? r : [r]).filter((e) => !!e && typeof e == "object" && !Array.isArray(e)).map((e) => {
62
+ let { words: n, price: r } = m(e, t), i = Number(e.quantity ?? e.qty);
63
+ return {
64
+ words: n,
65
+ price: r,
66
+ quantity: Number.isFinite(i) && i > 0 ? i : 0,
67
+ more: !1
68
+ };
69
+ }).filter((e) => e.words || e.price) : n.split("; ").map((e) => e.trim()).filter(Boolean).map(D);
70
+ }
71
+ function k(e) {
72
+ return !e.length || e.some((e) => e.more || !e.quantity) ? null : e.reduce((e, t) => e + t.quantity, 0);
73
+ }
74
+ function A(e, t = O(e.items, e.currency)) {
75
+ let n = k(t), r = E(e), i = n && n > 1 && !/\bitems?\b/i.test(r) ? `${n} items` : "";
76
+ return [j(e.created), i].filter(Boolean).join(" · ");
77
+ }
78
+ var j = (e) => e ? (/* @__PURE__ */ new Date(e * 1e3)).toLocaleDateString(void 0, {
79
+ day: "numeric",
80
+ month: "short",
81
+ year: "numeric"
82
+ }) : "", M = (e) => e ? (/* @__PURE__ */ new Date(e * 1e3)).toLocaleString(void 0, {
83
+ day: "numeric",
84
+ month: "short",
85
+ year: "numeric",
86
+ hour: "numeric",
87
+ minute: "2-digit"
88
+ }) : "";
89
+ function N(e) {
90
+ let t = [];
91
+ return e.created && t.push([e.paid ? "Paid on" : "Date", M(e.created)]), e.paidWith && t.push(["Paid with", e.paidWith]), (e.amountRefunded || 0) > 0 && t.push(["Refunded", h(e.amountRefunded, e.currency)]), t;
92
+ }
93
+ function P(e) {
94
+ let t = [];
95
+ return e.amount != null && e.currency && t.push(["Billing", `${h(e.amount, e.currency)}${e.interval ? ` every ${e.interval}` : ""}`]), T(e) && t.push([e.cancelAtPeriodEnd ? "Ends on" : "Renews on", j(e.currentPeriodEnd)]), e.quantity > 1 && t.push(["Seats", String(e.quantity)]), e.status === "past_due" && t.push(["Card", "Stripe is retrying your card — update it under Manage plan."]), t;
96
+ }
97
+ var F = "grid grid-cols-[minmax(0,1fr)_auto_1rem] md:grid-cols-[minmax(0,1.5fr)_6.5rem_7rem_8.5rem_1rem] gap-x-3 md:gap-x-6 px-4 md:px-5", I = `${F} items-center`;
98
+ function L({ chip: e, className: t = "" }) {
99
+ let n = e.tone === "good" ? "bg-emerald-500" : e.tone === "bad" ? "bg-red-500" : "bg-foreground/25";
100
+ return /* @__PURE__ */ x("span", {
101
+ className: `inline-flex items-center gap-2 text-[12.5px] font-medium text-foreground/60 leading-tight whitespace-nowrap ${t}`,
102
+ children: [/* @__PURE__ */ b("span", {
103
+ "aria-hidden": "true",
104
+ className: `w-1.5 h-1.5 rounded-full shrink-0 ${n}`
105
+ }), e.label]
106
+ });
107
+ }
108
+ var R = "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-x-8 gap-y-3";
109
+ function z({ label: e, value: t }) {
110
+ return /* @__PURE__ */ x("div", {
111
+ className: "min-w-0",
112
+ children: [/* @__PURE__ */ b("span", {
113
+ className: `${s} block leading-tight mb-0.5`,
114
+ children: e
115
+ }), /* @__PURE__ */ b("span", {
116
+ className: "block text-[13.5px] text-foreground/85 leading-snug break-words [overflow-wrap:anywhere]",
117
+ children: t
118
+ })]
119
+ });
120
+ }
121
+ function B({ title: e, line: t, children: n }) {
122
+ return /* @__PURE__ */ x("div", {
123
+ className: "flex items-center justify-between gap-3 flex-wrap px-1",
124
+ children: [/* @__PURE__ */ x("div", {
125
+ className: "min-w-0",
126
+ children: [/* @__PURE__ */ b("p", {
127
+ className: "text-[14px] font-bold text-foreground leading-tight",
128
+ children: e
129
+ }), /* @__PURE__ */ b("p", {
130
+ className: "text-[12px] font-medium text-foreground/45 leading-snug mt-0.5",
131
+ children: t
132
+ })]
133
+ }), n]
134
+ });
135
+ }
136
+ function V({ first: e, second: t }) {
137
+ return /* @__PURE__ */ x("div", {
138
+ className: `max-md:hidden ${I} py-2.5 text-[11.5px] font-medium text-foreground/40`,
139
+ children: [
140
+ /* @__PURE__ */ b("span", { children: e }),
141
+ /* @__PURE__ */ b("span", { children: t }),
142
+ /* @__PURE__ */ b("span", { children: "Status" }),
143
+ /* @__PURE__ */ b("span", {
144
+ className: "text-right",
145
+ children: "Amount"
146
+ }),
147
+ /* @__PURE__ */ b("span", {})
148
+ ]
149
+ });
150
+ }
151
+ function H({ lines: e }) {
152
+ return /* @__PURE__ */ x("section", {
153
+ className: "flex flex-col gap-1.5",
154
+ children: [/* @__PURE__ */ b("h3", {
155
+ className: `px-4 md:px-5 ${s} block leading-tight mb-0.5`,
156
+ children: "What you bought"
157
+ }), e.map((e, t) => /* @__PURE__ */ x("div", {
158
+ className: `${F} items-baseline`,
159
+ children: [/* @__PURE__ */ b("span", {
160
+ className: `md:col-span-3 min-w-0 leading-snug break-words [overflow-wrap:anywhere] ${e.more ? "text-[13px] text-foreground/45" : "text-[13.5px] text-foreground/85"}`,
161
+ children: e.words
162
+ }), /* @__PURE__ */ b("span", {
163
+ className: "text-right text-[13.5px] text-foreground/85 tabular-nums whitespace-nowrap leading-snug",
164
+ children: e.price
165
+ })]
166
+ }, t))]
167
+ });
168
+ }
169
+ function U({ rowKey: e, what: r, sub: i, when: a, amount: s, per: c, chip: u, bought: f = [], facts: p, receiptUrl: m, open: h, onToggle: g }) {
170
+ return /* @__PURE__ */ x("div", {
171
+ "data-ledger-row": e,
172
+ className: `scroll-mt-6 ${h ? "bg-foreground/[0.02]" : ""}`,
173
+ children: [/* @__PURE__ */ x("button", {
174
+ type: "button",
175
+ onClick: g,
176
+ "aria-expanded": h,
177
+ className: `w-full ${I} py-3 text-left cursor-pointer transition-colors hover:bg-foreground/[0.03]`,
178
+ children: [
179
+ /* @__PURE__ */ x("span", {
180
+ className: "flex flex-col min-w-0 gap-0.5",
181
+ children: [/* @__PURE__ */ b("span", {
182
+ className: "text-[13.5px] font-bold text-foreground leading-tight truncate",
183
+ children: r
184
+ }), /* @__PURE__ */ b("span", {
185
+ className: "md:hidden text-[12px] font-medium text-foreground/45 leading-tight truncate",
186
+ children: i
187
+ })]
188
+ }),
189
+ /* @__PURE__ */ b("span", {
190
+ className: "max-md:hidden text-[12.5px] font-medium text-foreground/45 tabular-nums whitespace-nowrap truncate leading-tight",
191
+ children: a
192
+ }),
193
+ /* @__PURE__ */ b(L, {
194
+ chip: u,
195
+ className: "max-md:hidden"
196
+ }),
197
+ /* @__PURE__ */ x("span", {
198
+ className: "flex flex-col items-end gap-1 min-w-0",
199
+ children: [/* @__PURE__ */ x("span", {
200
+ className: "text-[13.5px] font-semibold text-foreground tabular-nums whitespace-nowrap leading-tight",
201
+ children: [s || /* @__PURE__ */ b("span", {
202
+ className: "text-foreground/25 font-medium",
203
+ children: "—"
204
+ }), s && c && /* @__PURE__ */ x("span", {
205
+ className: "text-[12.5px] text-foreground/40 font-medium",
206
+ children: [" ", c]
207
+ })]
208
+ }), /* @__PURE__ */ b(L, {
209
+ chip: u,
210
+ className: "md:hidden !text-[11.5px] !gap-1.5"
211
+ })]
212
+ }),
213
+ /* @__PURE__ */ b(d, { className: `w-4 h-4 text-foreground/35 shrink-0 justify-self-end transition-transform ${h ? "rotate-180" : ""}` })
214
+ ]
215
+ }), /* @__PURE__ */ b(n, {
216
+ initial: !1,
217
+ children: h && /* @__PURE__ */ b(o.div, {
218
+ initial: {
219
+ height: 0,
220
+ opacity: 0
221
+ },
222
+ animate: {
223
+ height: "auto",
224
+ opacity: 1
225
+ },
226
+ exit: {
227
+ height: 0,
228
+ opacity: 0
229
+ },
230
+ transition: t,
231
+ className: "overflow-hidden",
232
+ children: /* @__PURE__ */ x("div", {
233
+ className: "pb-4 md:pb-5 flex flex-col gap-4",
234
+ children: [
235
+ /* @__PURE__ */ b("div", { className: "mx-4 md:mx-5 border-t border-[var(--panel-border)]/50" }),
236
+ f.length > 0 && /* @__PURE__ */ b(H, { lines: f }),
237
+ p.length > 0 && /* @__PURE__ */ b("div", {
238
+ className: `px-4 md:px-5 ${R}`,
239
+ children: p.map(([e, t]) => /* @__PURE__ */ b(z, {
240
+ label: e,
241
+ value: t
242
+ }, e))
243
+ }),
244
+ m && /* @__PURE__ */ b("div", {
245
+ className: "mx-4 md:mx-5 border-t border-[var(--panel-border)]/50 pt-3",
246
+ children: /* @__PURE__ */ x("a", {
247
+ href: m,
248
+ target: "_blank",
249
+ rel: "noopener noreferrer",
250
+ className: "inline-flex items-center gap-1.5 text-[12.5px] font-bold text-accent hover:underline",
251
+ children: ["Stripe receipt", /* @__PURE__ */ b(l, { className: "w-3.5 h-3.5" })]
252
+ })
253
+ })
254
+ ]
255
+ })
256
+ })
257
+ })]
258
+ });
259
+ }
260
+ function W({ email: t, loading: n, subscriptions: r, payments: i, error: s, initialOpen: l = null, focus: d = null, onFocused: p }) {
261
+ let [m, S] = v(l), D = (e) => S((t) => t === e ? null : e), k = !n && !s && r.length === 0 && i.length === 0;
262
+ return _(d, !n && !!d && (i.some((e) => e.id === d) || r.some((e) => e.id === d)), S, p), /* @__PURE__ */ x("main", {
263
+ className: "flex-1 w-full max-w-7xl mx-auto p-4 pt-2 md:p-8 md:pt-4 z-10 flex flex-col min-h-screen",
264
+ children: [/* @__PURE__ */ x(o.div, {
265
+ initial: {
266
+ opacity: 0,
267
+ y: 20
268
+ },
269
+ animate: {
270
+ opacity: 1,
271
+ y: 0
272
+ },
273
+ className: "mb-6",
274
+ children: [/* @__PURE__ */ b(e, { children: "Billing" }), /* @__PURE__ */ x("div", {
275
+ className: "flex items-center gap-2 text-foreground/40 font-bold uppercase tracking-[0.2em] text-[11px]",
276
+ children: [/* @__PURE__ */ b("span", { className: "w-8 h-[1px] bg-foreground/10" }), "/billing"]
277
+ })]
278
+ }), /* @__PURE__ */ x("div", {
279
+ className: "flex flex-col gap-6 flex-1 pb-16",
280
+ children: [/* @__PURE__ */ b(c, {}), /* @__PURE__ */ b("div", {
281
+ className: "glass-panel border border-[var(--panel-border)] rounded-3xl p-4 sm:p-5 md:p-8 shadow-2xl relative bg-background flex flex-col fbos-tab-fill min-h-[400px] gap-6",
282
+ children: n ? /* @__PURE__ */ b("div", {
283
+ className: "flex items-center justify-center flex-1 text-foreground/40 py-16",
284
+ children: /* @__PURE__ */ b(u, { className: "w-6 h-6 animate-spin text-accent" })
285
+ }) : s ? /* @__PURE__ */ b(a, {
286
+ tone: "error",
287
+ children: s
288
+ }) : k ? /* @__PURE__ */ x("div", {
289
+ className: "flex flex-col items-center justify-center flex-1 gap-3 py-16 text-center",
290
+ children: [/* @__PURE__ */ b(f, { className: "w-8 h-8 text-foreground/20" }), /* @__PURE__ */ x("p", {
291
+ className: "text-[13px] font-medium text-foreground/50 max-w-md leading-relaxed",
292
+ children: [
293
+ "Nothing has been bought on this account",
294
+ t ? /* @__PURE__ */ x(y, { children: [" — ", /* @__PURE__ */ b("span", {
295
+ className: "text-foreground/70",
296
+ children: t
297
+ })] }) : null,
298
+ ". A payment made with a different email address at checkout lives with that email: sign in with the address you paid with to see it here."
299
+ ]
300
+ })]
301
+ }) : /* @__PURE__ */ x(y, { children: [r.length > 0 && /* @__PURE__ */ x("div", {
302
+ className: "flex flex-col gap-3",
303
+ children: [/* @__PURE__ */ b(B, {
304
+ title: r.length === 1 ? "Your plan" : "Your plans",
305
+ line: "Change card, switch or cancel on Stripe's own page.",
306
+ children: /* @__PURE__ */ b(g, {
307
+ variant: "secondary",
308
+ className: "h-9 px-3.5 text-[12.5px] font-semibold"
309
+ })
310
+ }), /* @__PURE__ */ x("div", {
311
+ className: "rounded-2xl border border-[var(--panel-border)]/60 divide-y divide-[var(--panel-border)]/60 overflow-hidden",
312
+ children: [/* @__PURE__ */ b(V, {
313
+ first: "Plan",
314
+ second: "Renews"
315
+ }), r.map((e) => {
316
+ let t = C(e), n = T(e), r = e.amount != null && e.currency ? h(e.amount, e.currency) : "";
317
+ return /* @__PURE__ */ b(U, {
318
+ rowKey: e.id,
319
+ what: e.productName || "Subscription",
320
+ sub: n || t.label,
321
+ when: n ? j(e.currentPeriodEnd) : "—",
322
+ amount: r,
323
+ per: e.interval ? `/ ${e.interval}` : "",
324
+ chip: t,
325
+ facts: P(e),
326
+ open: m === e.id,
327
+ onToggle: () => D(e.id)
328
+ }, e.id);
329
+ })]
330
+ })]
331
+ }), i.length > 0 && /* @__PURE__ */ x("div", {
332
+ className: "flex flex-col gap-3",
333
+ children: [/* @__PURE__ */ b(B, {
334
+ title: "Your payments",
335
+ line: "Every payment on this account, straight from Stripe."
336
+ }), /* @__PURE__ */ x("div", {
337
+ className: "rounded-2xl border border-[var(--panel-border)]/60 divide-y divide-[var(--panel-border)]/60 overflow-hidden",
338
+ children: [/* @__PURE__ */ b(V, {
339
+ first: "What",
340
+ second: "When"
341
+ }), i.map((e) => {
342
+ let t = O(e.items, e.currency);
343
+ return /* @__PURE__ */ b(U, {
344
+ rowKey: e.id,
345
+ what: E(e),
346
+ sub: A(e, t),
347
+ when: j(e.created),
348
+ amount: h(e.amount, e.currency),
349
+ chip: w(e),
350
+ bought: t,
351
+ facts: N(e),
352
+ receiptUrl: e.receiptUrl,
353
+ open: m === e.id,
354
+ onToggle: () => D(e.id)
355
+ }, e.id);
356
+ })]
357
+ })]
358
+ })] })
359
+ })]
360
+ })]
361
+ });
362
+ }
363
+ function G() {
364
+ let { user: e } = r(), { loading: t, subscriptions: n, payments: a, error: o } = i(), [s, c] = S();
365
+ return /* @__PURE__ */ b(W, {
366
+ email: e?.email || null,
367
+ loading: t,
368
+ subscriptions: n,
369
+ payments: a,
370
+ error: o,
371
+ focus: s.get("open"),
372
+ onFocused: () => c((e) => {
373
+ let t = new URLSearchParams(e);
374
+ return t.delete("open"), t;
375
+ }, { replace: !0 })
376
+ });
377
+ }
378
+ //#endregion
379
+ export { G as Billing };
@@ -0,0 +1 @@
1
+ require(`./chunk-CiTBaPhY.cjs`);const e=require(`./TimeZoneField-qs7NPR30.cjs`),t=require(`./lucide-react-BwV6L6Is.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`);function i({timeZone:i,onTimeZone:a,action:o}){let[s,c]=(0,n.useState)(!1);return(0,r.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,r.jsxs)(`div`,{className:`flex gap-3 ${o?`max-sm:flex-col max-sm:items-stretch sm:items-center sm:justify-between`:``}`,children:[(0,r.jsxs)(`p`,{className:`flex items-center gap-1.5 text-[12px] font-medium text-foreground/50`,children:[(0,r.jsx)(t.jt,{className:`w-3.5 h-3.5 text-foreground/35 shrink-0`,"aria-hidden":!0}),(0,r.jsxs)(`span`,{children:[`Times in `,e.Tn(i),` · `,(0,r.jsx)(`button`,{type:`button`,onClick:()=>c(e=>!e),className:`text-accent font-semibold hover:underline cursor-pointer`,children:s?`Done`:`Change`})]})]}),o]}),s&&(0,r.jsx)(e.t,{compact:!0,value:i,onChange:e=>{a(e),c(!1)}})]})}var a=(e,t)=>!!e&&e.memberId===t.memberId&&e.start===t.start&&e.scheduleId===t.scheduleId,o=`relative flex flex-col items-center justify-center w-full min-h-11 px-3 py-2 rounded-[var(--input-radius,0.75rem)] border text-[14px] font-semibold transition-all duration-200 cursor-pointer`;function s({slots:n,value:i,onChange:s,timeZone:c,members:l,together:u}){let d=!u&&new Set(l.map(e=>e.memberId)).size>1,f=e=>(l.find(t=>t.id===e.scheduleId)||l.find(t=>t.memberId===e.memberId))?.memberName.trim()||``;return n.length?(0,r.jsx)(`div`,{className:`grid gap-2 [grid-template-columns:repeat(auto-fill,minmax(96px,1fr))]`,role:`listbox`,"aria-label":`Free times`,children:n.map(n=>{let l=a(i,n),u=e.Pt(new Date(n.start),c),p=d?f(n):``;return(0,r.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":l,"aria-label":p?`${u} with ${p}`:u,onClick:()=>s(l?null:n),className:`${o} ${l?`bg-accent border-accent text-[var(--button-fg,#fff)] shadow-md shadow-accent/25`:`border-[var(--panel-border)] bg-transparent text-foreground/75 hover:border-accent/50 hover:text-foreground hover:bg-foreground/[0.04] active:scale-[0.98]`}`,children:[l&&(0,r.jsx)(t.sn,{className:`absolute left-2.5 w-3.5 h-3.5`,"aria-hidden":!0}),(0,r.jsx)(`span`,{className:`tabular-nums`,children:u}),p&&(0,r.jsx)(`span`,{className:`text-[11px] font-medium leading-tight ${l?`opacity-90`:`text-foreground/50`}`,children:p})]},`${e.vn(n.memberId,n.start)}__${n.scheduleId}`)})}):null}function c(t,r,i,a,o){let s=(0,n.useMemo)(()=>e.Ft(e.Sn(t,{now:a?a():new Date,taken:r},!!o),i),[t,r,i,a,o]),c=o&&t.length?e.$t(t).reduce((e,t)=>Math.min(e,t.horizonDays),1/0):t.reduce((e,t)=>Math.max(e,t.horizonDays),0);return{days:s,horizon:Number.isFinite(c)?c:0}}var l=(t,n)=>t?e.jn(new Date(t.start),n).dateKey:``;function u({horizon:e}){return(0,r.jsx)(`p`,{className:`text-[13px] font-medium text-foreground/50 py-2`,children:e?`No free times in the next ${e} days.`:`No free times at the moment.`})}function d({members:e,value:t,onChange:a,taken:o,timeZone:d,onTimeZone:f,now:p,together:m}){let{days:h,horizon:g}=c(e,o,d,p,m),[_,v]=(0,n.useState)({tz:d,day:``}),y=_.tz===d?_.day:``,b=(h.some(e=>e.dateKey===y)?y:``)||l(t,d)||h[0]?.dateKey||``,x=h.find(e=>e.dateKey===b)||h[0];return(0,r.jsxs)(`div`,{className:`flex flex-col gap-3 w-full`,children:[h.length===0?(0,r.jsx)(u,{horizon:g}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`div`,{className:`flex gap-2 overflow-x-auto no-scrollbar pb-1 -mx-1 px-1`,role:`tablist`,"aria-label":`Days with free times`,children:h.map(e=>{let t=e.dateKey===x?.dateKey;return(0,r.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t,onClick:()=>v({tz:d,day:e.dateKey}),className:`shrink-0 px-3.5 py-2 rounded-xl text-[13px] font-semibold whitespace-nowrap transition-all cursor-pointer glass-panel ${t?`bg-accent text-[var(--button-fg,#fff)] border-accent shadow-lg shadow-accent/20`:`text-foreground/70 hover:text-foreground hover:border-accent`}`,style:{borderRadius:`var(--input-radius, 0.75rem)`},children:e.label},e.dateKey)})}),x&&(0,r.jsx)(s,{slots:x.slots,value:t,onChange:a,timeZone:d,members:e,together:m})]}),(0,r.jsx)(i,{timeZone:d,onTimeZone:f})]})}var f=[`M`,`T`,`W`,`T`,`F`,`S`,`S`],p=`rounded-2xl border border-[var(--panel-border)]/60 bg-foreground/[0.015] overflow-hidden`,m=`flex items-center justify-between gap-2 px-3.5 py-2.5 border-b border-[var(--panel-border)]/40`,h=`w-8 h-8 rounded-xl border border-[var(--panel-border)]/60 flex items-center justify-center shrink-0 text-foreground/50 hover:text-foreground hover:border-accent/40 hover:bg-foreground/5 active:scale-[0.98] transition-all cursor-pointer`;function g(...e){let t=(0,n.useRef)(null),[r,i]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{let e=t.current;if(!e)return;let n=()=>i(e.scrollTop+e.clientHeight<e.scrollHeight-2);n(),e.addEventListener(`scroll`,n,{passive:!0});let r=typeof ResizeObserver>`u`?null:new ResizeObserver(n);return r?.observe(e),()=>{e.removeEventListener(`scroll`,n),r?.disconnect()}},e),{ref:t,moreBelow:r}}var _=()=>(0,r.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute inset-x-px bottom-px h-10 rounded-b-2xl bg-gradient-to-t from-[var(--bg-color)] to-transparent`}),v=e=>e.slice(0,7);function y(t){let n=`${t}-01`,r=e.L.indexOf(e.An(n)),i=Array.from({length:r},()=>null);for(let r=0;;r++){let a=e.Q(n,r);if(v(a)!==t)break;i.push(a)}return i}function b({members:a,value:o,onChange:d,taken:b,timeZone:x,onTimeZone:S,now:C,together:w}){let{days:T,horizon:E}=c(a,b,x,C,w),D=e.jn(C?C():new Date,x).dateKey,O=new Map(T.map(e=>[e.dateKey,e])),k=l(o,x),[A,j]=(0,n.useState)(()=>({tz:x,day:k,month:v(k||T[0]?.dateKey||D)})),M=A.tz===x,N=M?A.day:k,P=M?A.month:v(k||T[0]?.dateKey||D),F=e=>j({tz:x,day:N,month:e(P)}),I=e=>j({tz:x,day:e,month:P}),L=N?O.get(N):void 0,R=y(P),z=L?.slots.length||0,{ref:B,moreBelow:V}=g(z,N);return(0,r.jsxs)(`div`,{className:`flex flex-col gap-4 w-full`,children:[T.length===0&&(0,r.jsx)(u,{horizon:E}),(0,r.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-[minmax(0,1.15fr)_minmax(0,1fr)] gap-3 md:gap-4 w-full md:items-stretch`,children:[(0,r.jsxs)(`div`,{className:`${p} w-full min-w-0`,children:[(0,r.jsxs)(`div`,{className:m,children:[(0,r.jsx)(`h4`,{className:`text-[14px] font-bold text-foreground tracking-tight truncate`,children:e.Zt(P)}),(0,r.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[(0,r.jsx)(`button`,{type:`button`,onClick:()=>F(()=>v(D)),className:`h-8 px-3 rounded-xl border border-[var(--panel-border)]/60 text-[12.5px] font-semibold text-foreground/60 hover:text-foreground hover:border-accent/40 hover:bg-foreground/5 active:scale-[0.98] transition-all cursor-pointer`,children:`Today`}),(0,r.jsx)(`button`,{type:`button`,"aria-label":`Previous month`,onClick:()=>F(t=>e._n(t,-1)),className:h,children:(0,r.jsx)(t.an,{className:`w-4 h-4`})}),(0,r.jsx)(`button`,{type:`button`,"aria-label":`Next month`,onClick:()=>F(t=>e._n(t,1)),className:h,children:(0,r.jsx)(t.in,{className:`w-4 h-4`})})]})]}),(0,r.jsx)(`div`,{className:`p-3`,children:(0,r.jsxs)(`div`,{className:`grid grid-cols-7 gap-1 w-full max-w-[26rem] mx-auto`,role:`grid`,"aria-label":e.Zt(P),children:[f.map((e,t)=>(0,r.jsx)(`div`,{className:`text-center text-[10.5px] font-bold uppercase tracking-wider text-foreground/35 pb-1`,children:e},t)),R.map((e,t)=>{if(!e)return(0,r.jsx)(`div`,{"aria-hidden":!0},`blank-${t}`);let n=O.has(e),i=e===N,a=e===D,o=Number(e.slice(8,10));return(0,r.jsxs)(`button`,{type:`button`,role:`gridcell`,"aria-label":O.get(e)?.label||e,"aria-selected":i,"aria-disabled":!n,disabled:!n,onClick:()=>I(e),className:`relative flex items-center justify-center h-10 md:h-11 rounded-xl text-[13.5px] md:text-[14px] font-semibold tabular-nums transition-all ${i?`bg-accent text-[var(--button-fg,#fff)] shadow-md shadow-accent/25 cursor-pointer`:n?`text-foreground hover:bg-foreground/[0.06] cursor-pointer`:`text-foreground/25 cursor-default`} ${a&&!i?`ring-1 ring-inset ring-accent/45`:``}`,children:[o,n&&(0,r.jsx)(`span`,{"aria-hidden":!0,className:`absolute bottom-1 w-1 h-1 rounded-full ${i?`bg-[var(--button-fg,#fff)]`:`bg-accent`}`})]},e)})]})})]}),(0,r.jsx)(`div`,{className:`w-full min-w-0 md:relative md:min-h-[320px]`,children:(0,r.jsxs)(`div`,{className:`${p} flex flex-col md:absolute md:inset-0`,children:[(0,r.jsxs)(`div`,{className:m,children:[(0,r.jsx)(`p`,{className:`text-[13px] font-bold text-foreground tracking-tight truncate`,children:L?L.label:`Pick a day`}),z>0&&(0,r.jsxs)(`span`,{className:`text-[11.5px] font-semibold text-foreground/40 shrink-0 tabular-nums`,children:[z,` `,z===1?`time`:`times`]})]}),(0,r.jsxs)(`div`,{className:`relative flex-1 min-h-0`,children:[(0,r.jsx)(`div`,{ref:B,className:`p-3 h-full overflow-y-auto styled-scrollbars-mini`,children:L?(0,r.jsx)(s,{slots:L.slots,value:o,onChange:d,timeZone:x,members:a,together:w}):(0,r.jsxs)(`div`,{className:`flex flex-col items-center justify-center text-center gap-2 py-8 px-2`,children:[(0,r.jsx)(t.dn,{className:`w-5 h-5 text-foreground/25`,"aria-hidden":!0}),(0,r.jsx)(`p`,{className:`text-[12.5px] font-medium text-foreground/45 leading-relaxed`,children:T.length>0?`Pick a day with a dot to see its times.`:`No times to show.`})]})}),V&&(0,r.jsx)(_,{})]})]})})]}),(0,r.jsx)(i,{timeZone:x,onTimeZone:S})]})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return i}});