your-ai-workflow-firebase-os 2.0.1 → 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 (183) hide show
  1. package/dist/AccessNotice-BZ5Gt1nP.js +40 -0
  2. package/dist/AccessNotice-CN7kc70o.cjs +1 -0
  3. package/dist/{AddressField-R-HvndkG.js → AddressField-9Sqn8TvC.js} +3 -3
  4. package/dist/{AddressField-BkzFOo2t.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-BlYHb5e0.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-9J_YeJrb.js → TimeZoneField-DkI1Bkcz.js} +3382 -5513
  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-D0gLVNTL.cjs → bake-n2wyFw0B.cjs} +1 -1
  96. package/dist/{bake-OErV2MLy.js → bake-naZeMu98.js} +14 -14
  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/{dist-_zWHDDrc.js → dist-DUPvBnOA.js} +1 -1
  108. package/dist/email-BfnZnMwD.cjs +1 -0
  109. package/dist/email-Ddj8Dlu6.js +58 -0
  110. package/dist/{fileBytes-B0qxHYQL.cjs → fileBytes-BJPaiX9Y.cjs} +1 -1
  111. package/dist/{fileBytes-uhq3pGCS.js → fileBytes-bjgvCfWu.js} +2 -2
  112. package/dist/forms-Bvx9HTM6.js +75 -0
  113. package/dist/forms-CmNeTETW.cjs +1 -0
  114. package/dist/lib/ThemeContext.d.ts +0 -14
  115. package/dist/lib/bareImgWatch.d.ts +6 -1
  116. package/dist/lib/localEdits.d.ts +2 -0
  117. package/dist/lib/pageDesignLines.d.ts +1 -1
  118. package/dist/lib/paymentProducts.d.ts +8 -0
  119. package/dist/lib/payments.d.ts +11 -1
  120. package/dist/lib/people.d.ts +9 -0
  121. package/dist/lib/recordsKey.d.ts +24 -0
  122. package/dist/{lucide-react-DiyP8FA_.js → lucide-react-CA7GD7Nv.js} +8 -8
  123. package/dist/notices-B7iIrIEg.js +29 -0
  124. package/dist/notices-upMg8UVh.cjs +1 -0
  125. package/dist/openOnArrival-Buwqb86D.cjs +1 -0
  126. package/dist/openOnArrival-S2K6v-lB.js +35 -0
  127. package/dist/pageFiles--Ih60ITP.js +45 -0
  128. package/dist/pageFiles-UtBmlOcD.cjs +1 -0
  129. package/dist/pages/PagesAdmin.d.ts +69 -7
  130. package/dist/{pdf-DLuvpvHg.js → pdf-DRXcPGkr.js} +1 -1
  131. package/dist/{pdf.worker.min-C0gkd2Ec.js → pdf.worker.min-CfKZezeM.js} +1 -1
  132. package/dist/people-2jZE_pdI.js +102 -0
  133. package/dist/people-BpVvIr9-.cjs +1 -0
  134. package/dist/personName-CFw3pxuu.js +18 -0
  135. package/dist/personName-CbzN_i57.cjs +1 -0
  136. package/dist/publishSteps-C1cDFzzB.js +88 -0
  137. package/dist/publishSteps-SSm8afDw.cjs +1 -0
  138. package/dist/recordLock-DHVvI9bP.js +61 -0
  139. package/dist/recordLock-DWeIxiwh.cjs +1 -0
  140. package/dist/recordsKey-B7QrxdeU.cjs +1 -0
  141. package/dist/recordsKey-D5-wC0Aw.js +141 -0
  142. package/dist/registrationFields-CLeR2lQJ.js +181 -0
  143. package/dist/registrationFields-v4pOoRdn.cjs +1 -0
  144. package/dist/renderer.cjs.js +1 -1
  145. package/dist/renderer.es.js +1 -1
  146. package/dist/roles-D6VaHWfV.js +147 -0
  147. package/dist/roles-DQUFFBQe.cjs +1 -0
  148. package/dist/scheduleData-ATN8w5hI.js +727 -0
  149. package/dist/scheduleData-Cltj0ABZ.cjs +1 -0
  150. package/dist/server.cjs.js +6 -6
  151. package/dist/server.es.js +716 -715
  152. package/dist/serviceStatus-TQyZO_Y_.cjs +1 -0
  153. package/dist/serviceStatus-vS8AI7SZ.js +125 -0
  154. package/dist/tabAudience-BqpN6dsR.cjs +1 -0
  155. package/dist/tabAudience-CRyMvv0v.js +34 -0
  156. package/dist/transactions-BqMQDRx3.js +343 -0
  157. package/dist/transactions-CufFrdAM.cjs +1 -0
  158. package/dist/useIsPhone-BVGx_X3e.js +13 -0
  159. package/dist/useIsPhone-o63tNneA.cjs +1 -0
  160. package/dist/{validate-DzSJWuyL.js → validate-CmC_tLK-.js} +433 -351
  161. package/dist/validate-DZMwqSrb.cjs +103 -0
  162. package/dist/vite/validate.d.ts +14 -0
  163. package/dist/vite.cjs.js +1 -1
  164. package/dist/vite.es.js +1 -1
  165. package/dist/your-ai-workflow-firebase-os.cjs.js +15 -1431
  166. package/dist/your-ai-workflow-firebase-os.css +1 -1
  167. package/dist/your-ai-workflow-firebase-os.es.js +11695 -35911
  168. package/package.json +1 -1
  169. package/src/index.css +122 -2
  170. package/dist/ContactPopup-DF8qQCoY.cjs +0 -12
  171. package/dist/PhoneInputField-Btx07xvM.js +0 -2
  172. package/dist/aiModels-BIhoTNH0.cjs +0 -1
  173. package/dist/validate-e48WXJdP.cjs +0 -103
  174. /package/dist/{address-DI1YaCI4.cjs → address-Bsb8COq2.cjs} +0 -0
  175. /package/dist/{address-Ca1h_UZX.js → address-C2bHNxJU.js} +0 -0
  176. /package/dist/{dist-BLGlDv1e.cjs → dist-E4jTFPs7.cjs} +0 -0
  177. /package/dist/{lucide-react-BYniZ3lQ.cjs → lucide-react-BwV6L6Is.cjs} +0 -0
  178. /package/dist/{mediaKind-dk396a03.cjs → mediaKind-D0MWyv6b.cjs} +0 -0
  179. /package/dist/{mediaKind-De2Cx_kB.js → mediaKind-DmKMsjeY.js} +0 -0
  180. /package/dist/{pdf-CC5g01eC.cjs → pdf-jLjjhvjp.cjs} +0 -0
  181. /package/dist/{pdf.worker.min-pI_P-OCl.cjs → pdf.worker.min-bLgNWd7w.cjs} +0 -0
  182. /package/dist/{verifiedAccount-C1iCxopN.js → verifiedAccount-DRbRFJ6H.js} +0 -0
  183. /package/dist/{verifiedAccount-D3OeaOBo.cjs → verifiedAccount-DScyKk96.cjs} +0 -0
@@ -0,0 +1,147 @@
1
+ import { u as e } from "./PageTitle-D93YCiN8.js";
2
+ import { Ei as t, _a as n, ca as r, da as i, fa as a, ga as o, ha as s, ka as c, la as l, ma as u, pa as d, sa as f, va as p, vi as m } from "./TimeZoneField-DkI1Bkcz.js";
3
+ import { p as h } from "./DashboardNav-Dmn7PVSp.js";
4
+ import { D as g, O as _, c as v, o as y, v as b } from "./verifiedAccount-DRbRFJ6H.js";
5
+ import { useEffect as x, useState as S } from "react";
6
+ import { collection as C, deleteDoc as w, doc as T, getDocs as E, onSnapshot as D, query as O, setDoc as k, updateDoc as A, where as j } from "firebase/firestore";
7
+ //#region src/lib/roleIcon.ts
8
+ var M = new Set([
9
+ "users",
10
+ "users-round",
11
+ "user",
12
+ "user-round",
13
+ "circle-user",
14
+ "contact-round"
15
+ ]), N = /* @__PURE__ */ new Map(), P = (t) => {
16
+ let n = String(t || "").trim();
17
+ if (!n) return "";
18
+ if (!N.has(n)) {
19
+ let t = e(n, 8, void 0, !1);
20
+ N.set(n, t.find((e) => !M.has(e)) || t[0] || "");
21
+ }
22
+ return N.get(n) || "";
23
+ }, F = (e, t = u()) => String(t.find((t) => t.id === e)?.icon || "").trim() || (d(e) ? a(e) || f[e] : P(s(e, t)) || "id-card"), I = "sys_roles", L = (e, t) => ({
24
+ id: e,
25
+ name: String(t?.name || e),
26
+ ...String(t?.icon || "").trim() ? { icon: String(t.icon).trim() } : {},
27
+ ...typeof t?.createdAt == "number" ? { createdAt: t.createdAt } : {},
28
+ ...Array.isArray(t?.sees) ? { sees: t.sees.filter((e) => typeof e == "string" && !!e) } : {}
29
+ }), R = (e, t) => e.name.localeCompare(t.name);
30
+ function z(e, t = u()) {
31
+ let n = String(e || "").trim();
32
+ if (!n) return "Type a name for the role first — Client, say, or Supplier.";
33
+ let r = _(n);
34
+ if (r.length < 2 || !/^[a-z]/.test(r)) return "Use a name with at least two letters in it.";
35
+ if (y.has(r) || !b(r)) return `${n} is a word the app already uses. Pick another.`;
36
+ if (t.some((e) => e.id === r)) return `You already have a role called ${t.find((e) => e.id === r).name}.`;
37
+ let a = i(t).find((e) => e.name.trim().toLowerCase() === n.toLowerCase());
38
+ return a ? `You already have a role called ${a.name}.` : "";
39
+ }
40
+ async function B(e) {
41
+ let t = String(e || "").trim().slice(0, 48), n = {
42
+ id: _(t),
43
+ name: t,
44
+ createdAt: Date.now()
45
+ };
46
+ return await k(T(c, I, n.id), {
47
+ name: n.name,
48
+ createdAt: n.createdAt
49
+ }), n;
50
+ }
51
+ async function V(e, t) {
52
+ let n = String(t || "").trim().slice(0, 48);
53
+ if (n) {
54
+ if (d(e)) {
55
+ if (n === l[e]) {
56
+ if (a(e)) {
57
+ await k(T(c, I, e), {
58
+ name: "",
59
+ builtIn: !0
60
+ }, { merge: !0 });
61
+ return;
62
+ }
63
+ await w(T(c, I, e)).catch(() => {});
64
+ return;
65
+ }
66
+ await k(T(c, I, e), {
67
+ name: n,
68
+ builtIn: !0
69
+ }, { merge: !0 });
70
+ return;
71
+ }
72
+ b(e) && await k(T(c, I, e), { name: n }, { merge: !0 });
73
+ }
74
+ }
75
+ async function H(e, t) {
76
+ let n = String(t || "").trim();
77
+ !d(e) && !b(e) || await k(T(c, I, e), {
78
+ icon: n,
79
+ ...d(e) ? { builtIn: !0 } : {}
80
+ }, { merge: !0 });
81
+ }
82
+ function U(e, t, n = u()) {
83
+ let r = String(t || "").trim();
84
+ if (!r) return "A role needs a name.";
85
+ let a = i(n).find((t) => t.id !== e && t.name.trim().toLowerCase() === r.toLowerCase());
86
+ return a ? `You already have a role called ${a.name}.` : "";
87
+ }
88
+ var W = (e, t) => (Array.isArray(e?.plans) ? e.plans : []).filter((e) => e?.roleId === t);
89
+ async function G(e) {
90
+ let n = {
91
+ people: [],
92
+ pages: [],
93
+ plans: []
94
+ };
95
+ return b(e) ? ((await E(O(C(c, "user_profiles"), j("role", "==", e)))).forEach((e) => n.people.push(e.id)), (await E(C(c, "sys_tabs"))).forEach((t) => {
96
+ v(t.data()?.roles).includes(e) && n.pages.push(t.id);
97
+ }), (await E(C(c, t))).forEach((t) => {
98
+ if (t.id !== "_settings") for (let r of W(t.data(), e)) n.plans.push(String(r?.name || "").trim() || "A plan");
99
+ }), n) : n;
100
+ }
101
+ async function K(e) {
102
+ if (!b(e)) return;
103
+ let n = await E(O(C(c, "user_profiles"), j("role", "==", e)));
104
+ for (let e of n.docs) await A(T(c, "user_profiles", e.id), {
105
+ role: g("free"),
106
+ ...m()
107
+ });
108
+ let r = await E(C(c, t));
109
+ for (let n of r.docs) {
110
+ if (n.id === "_settings" || !W(n.data(), e).length) continue;
111
+ let r = n.data().plans.map((t) => t?.roleId === e ? {
112
+ ...t,
113
+ roleId: ""
114
+ } : t);
115
+ await k(T(c, t, n.id), { plans: r }, { merge: !0 });
116
+ }
117
+ let i = await E(C(c, "sys_tabs"));
118
+ for (let t of i.docs) {
119
+ let n = v(t.data()?.roles);
120
+ if (!n.includes(e)) continue;
121
+ let r = n.filter((t) => t !== e);
122
+ await k(T(c, "sys_tabs", t.id), { roles: r.length ? r : ["user"] }, { merge: !0 });
123
+ }
124
+ await h(e), await w(T(c, I, e));
125
+ }
126
+ function q() {
127
+ let [e, t] = S(() => u());
128
+ return x(() => D(C(c, I), (e) => {
129
+ let r = [], i = {}, a = {};
130
+ e.forEach((e) => {
131
+ if (d(e.id)) {
132
+ let t = String(e.data()?.name || "").trim();
133
+ t && (i[e.id] = t);
134
+ let n = String(e.data()?.icon || "").trim();
135
+ n && (a[e.id] = n);
136
+ return;
137
+ }
138
+ b(e.id) && r.push(L(e.id, e.data()));
139
+ }), r.sort(R), p(i), o(a), n(r), t(r);
140
+ }, () => {}), []), e;
141
+ }
142
+ var J = (e = u()) => r.map((t) => ({
143
+ id: t,
144
+ name: s(t, e)
145
+ }));
146
+ //#endregion
147
+ export { V as a, H as c, U as i, q as l, B as n, z as o, K as r, G as s, J as t, F as u };
@@ -0,0 +1 @@
1
+ require(`./chunk-CiTBaPhY.cjs`);const e=require(`./PageTitle-CZhgmmDT.cjs`),t=require(`./TimeZoneField-qs7NPR30.cjs`),n=require(`./DashboardNav-CXa_ci-_.cjs`),r=require(`./verifiedAccount-DScyKk96.cjs`);let i=require(`react`),a=require(`firebase/firestore`);var o=new Set([`users`,`users-round`,`user`,`user-round`,`circle-user`,`contact-round`]),s=new Map,c=t=>{let n=String(t||``).trim();if(!n)return``;if(!s.has(n)){let t=e.u(n,8,void 0,!1);s.set(n,t.find(e=>!o.has(e))||t[0]||``)}return s.get(n)||``},l=(e,n=t.ma())=>String(n.find(t=>t.id===e)?.icon||``).trim()||(t.pa(e)?t.fa(e)||t.sa[e]:c(t.ha(e,n))||`id-card`),u=`sys_roles`,d=(e,t)=>({id:e,name:String(t?.name||e),...String(t?.icon||``).trim()?{icon:String(t.icon).trim()}:{},...typeof t?.createdAt==`number`?{createdAt:t.createdAt}:{},...Array.isArray(t?.sees)?{sees:t.sees.filter(e=>typeof e==`string`&&!!e)}:{}}),f=(e,t)=>e.name.localeCompare(t.name);function p(e,n=t.ma()){let i=String(e||``).trim();if(!i)return`Type a name for the role first — Client, say, or Supplier.`;let a=r.O(i);if(a.length<2||!/^[a-z]/.test(a))return`Use a name with at least two letters in it.`;if(r.o.has(a)||!r.v(a))return`${i} is a word the app already uses. Pick another.`;if(n.some(e=>e.id===a))return`You already have a role called ${n.find(e=>e.id===a).name}.`;let o=t.da(n).find(e=>e.name.trim().toLowerCase()===i.toLowerCase());return o?`You already have a role called ${o.name}.`:``}async function m(e){let n=String(e||``).trim().slice(0,48),i={id:r.O(n),name:n,createdAt:Date.now()};return await(0,a.setDoc)((0,a.doc)(t.ka,u,i.id),{name:i.name,createdAt:i.createdAt}),i}async function h(e,n){let i=String(n||``).trim().slice(0,48);if(i){if(t.pa(e)){if(i===t.la[e]){if(t.fa(e)){await(0,a.setDoc)((0,a.doc)(t.ka,u,e),{name:``,builtIn:!0},{merge:!0});return}await(0,a.deleteDoc)((0,a.doc)(t.ka,u,e)).catch(()=>{});return}await(0,a.setDoc)((0,a.doc)(t.ka,u,e),{name:i,builtIn:!0},{merge:!0});return}r.v(e)&&await(0,a.setDoc)((0,a.doc)(t.ka,u,e),{name:i},{merge:!0})}}async function g(e,n){let i=String(n||``).trim();!t.pa(e)&&!r.v(e)||await(0,a.setDoc)((0,a.doc)(t.ka,u,e),{icon:i,...t.pa(e)?{builtIn:!0}:{}},{merge:!0})}function _(e,n,r=t.ma()){let i=String(n||``).trim();if(!i)return`A role needs a name.`;let a=t.da(r).find(t=>t.id!==e&&t.name.trim().toLowerCase()===i.toLowerCase());return a?`You already have a role called ${a.name}.`:``}var v=(e,t)=>(Array.isArray(e?.plans)?e.plans:[]).filter(e=>e?.roleId===t);async function y(e){let n={people:[],pages:[],plans:[]};return r.v(e)?((await(0,a.getDocs)((0,a.query)((0,a.collection)(t.ka,`user_profiles`),(0,a.where)(`role`,`==`,e)))).forEach(e=>n.people.push(e.id)),(await(0,a.getDocs)((0,a.collection)(t.ka,`sys_tabs`))).forEach(t=>{r.c(t.data()?.roles).includes(e)&&n.pages.push(t.id)}),(await(0,a.getDocs)((0,a.collection)(t.ka,t.Ei))).forEach(t=>{if(t.id!==`_settings`)for(let r of v(t.data(),e))n.plans.push(String(r?.name||``).trim()||`A plan`)}),n):n}async function b(e){if(!r.v(e))return;let i=await(0,a.getDocs)((0,a.query)((0,a.collection)(t.ka,`user_profiles`),(0,a.where)(`role`,`==`,e)));for(let e of i.docs)await(0,a.updateDoc)((0,a.doc)(t.ka,`user_profiles`,e.id),{role:r.D(`free`),...t.vi()});let o=await(0,a.getDocs)((0,a.collection)(t.ka,t.Ei));for(let n of o.docs){if(n.id===`_settings`||!v(n.data(),e).length)continue;let r=n.data().plans.map(t=>t?.roleId===e?{...t,roleId:``}:t);await(0,a.setDoc)((0,a.doc)(t.ka,t.Ei,n.id),{plans:r},{merge:!0})}let s=await(0,a.getDocs)((0,a.collection)(t.ka,`sys_tabs`));for(let n of s.docs){let i=r.c(n.data()?.roles);if(!i.includes(e))continue;let o=i.filter(t=>t!==e);await(0,a.setDoc)((0,a.doc)(t.ka,`sys_tabs`,n.id),{roles:o.length?o:[`user`]},{merge:!0})}await n.p(e),await(0,a.deleteDoc)((0,a.doc)(t.ka,u,e))}function x(){let[e,n]=(0,i.useState)(()=>t.ma());return(0,i.useEffect)(()=>(0,a.onSnapshot)((0,a.collection)(t.ka,u),e=>{let i=[],a={},o={};e.forEach(e=>{if(t.pa(e.id)){let t=String(e.data()?.name||``).trim();t&&(a[e.id]=t);let n=String(e.data()?.icon||``).trim();n&&(o[e.id]=n);return}r.v(e.id)&&i.push(d(e.id,e.data()))}),i.sort(f),t.va(a),t.ga(o),t._a(i),n(i)},()=>{}),[]),e}var S=(e=t.ma())=>t.ca.map(n=>({id:n,name:t.ha(n,e)}));Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}});