@appcorp/fusion-storybook 0.1.4

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 (131) hide show
  1. package/README.md +147 -0
  2. package/base-modules/admission/cache.d.ts +14 -0
  3. package/base-modules/admission/cache.js +31 -0
  4. package/base-modules/admission/constants.d.ts +32 -0
  5. package/base-modules/admission/constants.js +37 -0
  6. package/base-modules/admission/context.d.ts +369 -0
  7. package/base-modules/admission/context.js +755 -0
  8. package/base-modules/admission/filter.d.ts +1 -0
  9. package/base-modules/admission/filter.js +31 -0
  10. package/base-modules/admission/form.d.ts +1 -0
  11. package/base-modules/admission/form.js +86 -0
  12. package/base-modules/admission/more-actions.d.ts +1 -0
  13. package/base-modules/admission/more-actions.js +5 -0
  14. package/base-modules/admission/page.d.ts +16 -0
  15. package/base-modules/admission/page.js +128 -0
  16. package/base-modules/admission/validate.d.ts +38 -0
  17. package/base-modules/admission/validate.js +70 -0
  18. package/base-modules/admission/view.d.ts +1 -0
  19. package/base-modules/admission/view.js +40 -0
  20. package/base-modules/discount-code/cache.d.ts +27 -0
  21. package/base-modules/discount-code/cache.js +46 -0
  22. package/base-modules/discount-code/constants.d.ts +19 -0
  23. package/base-modules/discount-code/constants.js +26 -0
  24. package/base-modules/discount-code/context.d.ts +154 -0
  25. package/base-modules/discount-code/context.js +416 -0
  26. package/base-modules/discount-code/filter.d.ts +9 -0
  27. package/base-modules/discount-code/filter.js +14 -0
  28. package/base-modules/discount-code/form.d.ts +1 -0
  29. package/base-modules/discount-code/form.js +44 -0
  30. package/base-modules/discount-code/more-actions.d.ts +9 -0
  31. package/base-modules/discount-code/more-actions.js +13 -0
  32. package/base-modules/discount-code/page.d.ts +16 -0
  33. package/base-modules/discount-code/page.js +120 -0
  34. package/base-modules/discount-code/validate.d.ts +19 -0
  35. package/base-modules/discount-code/validate.js +38 -0
  36. package/base-modules/discount-code/view.d.ts +1 -0
  37. package/base-modules/discount-code/view.js +26 -0
  38. package/base-modules/family/cache.d.ts +14 -0
  39. package/base-modules/family/cache.js +31 -0
  40. package/base-modules/family/constants.d.ts +22 -0
  41. package/base-modules/family/constants.js +26 -0
  42. package/base-modules/family/context.d.ts +173 -0
  43. package/base-modules/family/context.js +441 -0
  44. package/base-modules/family/filter.d.ts +1 -0
  45. package/base-modules/family/filter.js +28 -0
  46. package/base-modules/family/form.d.ts +1 -0
  47. package/base-modules/family/form.js +12 -0
  48. package/base-modules/family/more-actions.d.ts +1 -0
  49. package/base-modules/family/more-actions.js +5 -0
  50. package/base-modules/family/page.d.ts +16 -0
  51. package/base-modules/family/page.js +120 -0
  52. package/base-modules/family/validate.d.ts +15 -0
  53. package/base-modules/family/validate.js +18 -0
  54. package/base-modules/family/view.d.ts +1 -0
  55. package/base-modules/family/view.js +18 -0
  56. package/base-modules/family-member/cache.d.ts +14 -0
  57. package/base-modules/family-member/cache.js +31 -0
  58. package/base-modules/family-member/constants.d.ts +22 -0
  59. package/base-modules/family-member/constants.js +26 -0
  60. package/base-modules/family-member/context.d.ts +215 -0
  61. package/base-modules/family-member/context.js +486 -0
  62. package/base-modules/family-member/filter.d.ts +1 -0
  63. package/base-modules/family-member/filter.js +28 -0
  64. package/base-modules/family-member/form.d.ts +1 -0
  65. package/base-modules/family-member/form.js +17 -0
  66. package/base-modules/family-member/more-actions.d.ts +1 -0
  67. package/base-modules/family-member/more-actions.js +5 -0
  68. package/base-modules/family-member/page.d.ts +16 -0
  69. package/base-modules/family-member/page.js +122 -0
  70. package/base-modules/family-member/validate.d.ts +24 -0
  71. package/base-modules/family-member/validate.js +27 -0
  72. package/base-modules/family-member/view.d.ts +1 -0
  73. package/base-modules/family-member/view.js +40 -0
  74. package/base-modules/student-profile/cache.d.ts +14 -0
  75. package/base-modules/student-profile/cache.js +31 -0
  76. package/base-modules/student-profile/constants.d.ts +105 -0
  77. package/base-modules/student-profile/constants.js +132 -0
  78. package/base-modules/student-profile/context.d.ts +290 -0
  79. package/base-modules/student-profile/context.js +583 -0
  80. package/base-modules/student-profile/filter.d.ts +1 -0
  81. package/base-modules/student-profile/filter.js +26 -0
  82. package/base-modules/student-profile/form.d.ts +1 -0
  83. package/base-modules/student-profile/form.js +19 -0
  84. package/base-modules/student-profile/more-actions.d.ts +1 -0
  85. package/base-modules/student-profile/more-actions.js +5 -0
  86. package/base-modules/student-profile/page.d.ts +9 -0
  87. package/base-modules/student-profile/page.js +86 -0
  88. package/base-modules/student-profile/validate.d.ts +23 -0
  89. package/base-modules/student-profile/validate.js +34 -0
  90. package/base-modules/student-profile/view.d.ts +1 -0
  91. package/base-modules/student-profile/view.js +29 -0
  92. package/base-modules/workspace/cache.d.ts +9 -0
  93. package/base-modules/workspace/cache.js +28 -0
  94. package/base-modules/workspace/constants.d.ts +10 -0
  95. package/base-modules/workspace/constants.js +18 -0
  96. package/base-modules/workspace/context.d.ts +187 -0
  97. package/base-modules/workspace/context.js +293 -0
  98. package/base-modules/workspace/drawer.d.ts +1 -0
  99. package/base-modules/workspace/drawer.js +24 -0
  100. package/base-modules/workspace/filter.d.ts +1 -0
  101. package/base-modules/workspace/filter.js +13 -0
  102. package/base-modules/workspace/form.d.ts +1 -0
  103. package/base-modules/workspace/form.js +40 -0
  104. package/base-modules/workspace/more-actions.d.ts +1 -0
  105. package/base-modules/workspace/more-actions.js +13 -0
  106. package/base-modules/workspace/page.d.ts +1 -0
  107. package/base-modules/workspace/page.js +31 -0
  108. package/base-modules/workspace/validate.d.ts +9 -0
  109. package/base-modules/workspace/validate.js +8 -0
  110. package/base-modules/workspace/view.d.ts +1 -0
  111. package/base-modules/workspace/view.js +52 -0
  112. package/components/rbac-no-access.d.ts +6 -0
  113. package/components/rbac-no-access.js +4 -0
  114. package/constants.d.ts +81 -0
  115. package/constants.js +81 -0
  116. package/lib/utils.d.ts +2 -0
  117. package/lib/utils.js +5 -0
  118. package/package.json +104 -0
  119. package/tsconfig.build.tsbuildinfo +1 -0
  120. package/type.d.ts +1141 -0
  121. package/type.js +427 -0
  122. package/utils/admission-pdf.d.ts +78 -0
  123. package/utils/admission-pdf.js +73 -0
  124. package/utils/clear-cache.d.ts +1 -0
  125. package/utils/clear-cache.js +8 -0
  126. package/utils/format-value.d.ts +1 -0
  127. package/utils/format-value.js +1 -0
  128. package/utils/pdf-generator.d.ts +41 -0
  129. package/utils/pdf-generator.js +107 -0
  130. package/utils/resolve-rbac-permissions.d.ts +11 -0
  131. package/utils/resolve-rbac-permissions.js +251 -0
package/type.js ADDED
@@ -0,0 +1,427 @@
1
+ /**
2
+ * TypeScript Types Generated from Prisma Schema
3
+ *
4
+ * This file contains TypeScript interfaces for all database models
5
+ * and enums following the naming conventions:
6
+ * - Models: TableName + BE (e.g., StudentBE)
7
+ * - Enums: SCREAMING_SNAKE_CASE (e.g., USER_ROLE for UserRole)
8
+ */
9
+ // ============================================================================
10
+ // ENUMS
11
+ // ============================================================================
12
+ /**
13
+ * User roles across the multi-tenant system
14
+ */
15
+ export var USER_ROLE;
16
+ (function (USER_ROLE) {
17
+ USER_ROLE["SUPER_ADMIN"] = "SUPER_ADMIN";
18
+ USER_ROLE["SCHOOL_ADMIN"] = "SCHOOL_ADMIN";
19
+ USER_ROLE["TEACHER"] = "TEACHER";
20
+ USER_ROLE["STUDENT"] = "STUDENT";
21
+ USER_ROLE["PARENT"] = "PARENT";
22
+ USER_ROLE["STAFF"] = "STAFF";
23
+ })(USER_ROLE || (USER_ROLE = {}));
24
+ /**
25
+ * Student enrollment status
26
+ */
27
+ export var STUDENT_STATUS;
28
+ (function (STUDENT_STATUS) {
29
+ STUDENT_STATUS["ACTIVE"] = "ACTIVE";
30
+ STUDENT_STATUS["INACTIVE"] = "INACTIVE";
31
+ STUDENT_STATUS["GRADUATED"] = "GRADUATED";
32
+ STUDENT_STATUS["TRANSFERRED"] = "TRANSFERRED";
33
+ STUDENT_STATUS["DROPPED"] = "DROPPED";
34
+ })(STUDENT_STATUS || (STUDENT_STATUS = {}));
35
+ /**
36
+ * Family member roles within a household
37
+ */
38
+ export var FAMILY_MEMBER_ROLE;
39
+ (function (FAMILY_MEMBER_ROLE) {
40
+ FAMILY_MEMBER_ROLE["FATHER"] = "FATHER";
41
+ FAMILY_MEMBER_ROLE["MOTHER"] = "MOTHER";
42
+ FAMILY_MEMBER_ROLE["GUARDIAN"] = "GUARDIAN";
43
+ FAMILY_MEMBER_ROLE["STUDENT"] = "STUDENT";
44
+ })(FAMILY_MEMBER_ROLE || (FAMILY_MEMBER_ROLE = {}));
45
+ /**
46
+ * Gender options
47
+ */
48
+ export var GENDER;
49
+ (function (GENDER) {
50
+ GENDER["MALE"] = "MALE";
51
+ GENDER["FEMALE"] = "FEMALE";
52
+ GENDER["OTHER"] = "OTHER";
53
+ GENDER["PREFER_NOT_TO_SAY"] = "PREFER_NOT_TO_SAY";
54
+ })(GENDER || (GENDER = {}));
55
+ /**
56
+ * Day of the week for scheduling
57
+ */
58
+ export var DAY_OF_WEEK;
59
+ (function (DAY_OF_WEEK) {
60
+ DAY_OF_WEEK["MONDAY"] = "MONDAY";
61
+ DAY_OF_WEEK["TUESDAY"] = "TUESDAY";
62
+ DAY_OF_WEEK["WEDNESDAY"] = "WEDNESDAY";
63
+ DAY_OF_WEEK["THURSDAY"] = "THURSDAY";
64
+ DAY_OF_WEEK["FRIDAY"] = "FRIDAY";
65
+ DAY_OF_WEEK["SATURDAY"] = "SATURDAY";
66
+ DAY_OF_WEEK["SUNDAY"] = "SUNDAY";
67
+ })(DAY_OF_WEEK || (DAY_OF_WEEK = {}));
68
+ /**
69
+ * Attendance status
70
+ */
71
+ export var ATTENDANCE_STATUS;
72
+ (function (ATTENDANCE_STATUS) {
73
+ ATTENDANCE_STATUS["PRESENT"] = "PRESENT";
74
+ ATTENDANCE_STATUS["ABSENT"] = "ABSENT";
75
+ ATTENDANCE_STATUS["LATE"] = "LATE";
76
+ ATTENDANCE_STATUS["EXCUSED"] = "EXCUSED";
77
+ ATTENDANCE_STATUS["HALF_DAY"] = "HALF_DAY";
78
+ })(ATTENDANCE_STATUS || (ATTENDANCE_STATUS = {}));
79
+ /**
80
+ * Grade type for assessments
81
+ */
82
+ export var GRADE_TYPE;
83
+ (function (GRADE_TYPE) {
84
+ GRADE_TYPE["EXAM"] = "EXAM";
85
+ GRADE_TYPE["QUIZ"] = "QUIZ";
86
+ GRADE_TYPE["ASSIGNMENT"] = "ASSIGNMENT";
87
+ GRADE_TYPE["PARTICIPATION"] = "PARTICIPATION";
88
+ GRADE_TYPE["PRACTICAL"] = "PRACTICAL";
89
+ GRADE_TYPE["PROJECT"] = "PROJECT";
90
+ })(GRADE_TYPE || (GRADE_TYPE = {}));
91
+ /**
92
+ * Fee type categories
93
+ */
94
+ export var FEE_TYPE;
95
+ (function (FEE_TYPE) {
96
+ FEE_TYPE["TUITION"] = "TUITION";
97
+ FEE_TYPE["ADMISSION"] = "ADMISSION";
98
+ FEE_TYPE["EXAM"] = "EXAM";
99
+ FEE_TYPE["LIBRARY"] = "LIBRARY";
100
+ FEE_TYPE["LABORATORY"] = "LABORATORY";
101
+ FEE_TYPE["TRANSPORT"] = "TRANSPORT";
102
+ FEE_TYPE["SPORTS"] = "SPORTS";
103
+ FEE_TYPE["MISCELLANEOUS"] = "MISCELLANEOUS";
104
+ FEE_TYPE["LATE"] = "LATE";
105
+ })(FEE_TYPE || (FEE_TYPE = {}));
106
+ /**
107
+ * Discount type for fee reductions
108
+ */
109
+ export var DISCOUNT_TYPE;
110
+ (function (DISCOUNT_TYPE) {
111
+ DISCOUNT_TYPE["PERCENTAGE"] = "PERCENTAGE";
112
+ DISCOUNT_TYPE["FIXED"] = "FIXED";
113
+ })(DISCOUNT_TYPE || (DISCOUNT_TYPE = {}));
114
+ /**
115
+ * Payment status
116
+ */
117
+ export var PAYMENT_STATUS;
118
+ (function (PAYMENT_STATUS) {
119
+ PAYMENT_STATUS["PENDING"] = "PENDING";
120
+ PAYMENT_STATUS["PARTIAL"] = "PARTIAL";
121
+ PAYMENT_STATUS["PAID"] = "PAID";
122
+ PAYMENT_STATUS["OVERDUE"] = "OVERDUE";
123
+ PAYMENT_STATUS["CANCELLED"] = "CANCELLED";
124
+ PAYMENT_STATUS["REFUNDED"] = "REFUNDED";
125
+ })(PAYMENT_STATUS || (PAYMENT_STATUS = {}));
126
+ /**
127
+ * Payment method
128
+ */
129
+ export var PAYMENT_METHOD;
130
+ (function (PAYMENT_METHOD) {
131
+ PAYMENT_METHOD["CASH"] = "CASH";
132
+ PAYMENT_METHOD["BANK_TRANSFER"] = "BANK_TRANSFER";
133
+ PAYMENT_METHOD["CREDIT_CARD"] = "CREDIT_CARD";
134
+ PAYMENT_METHOD["DEBIT_CARD"] = "DEBIT_CARD";
135
+ PAYMENT_METHOD["CHEQUE"] = "CHEQUE";
136
+ PAYMENT_METHOD["ONLINE"] = "ONLINE";
137
+ PAYMENT_METHOD["MOBILE_WALLET"] = "MOBILE_WALLET";
138
+ })(PAYMENT_METHOD || (PAYMENT_METHOD = {}));
139
+ /**
140
+ * Expense category types
141
+ */
142
+ export var EXPENSE_CATEGORY;
143
+ (function (EXPENSE_CATEGORY) {
144
+ EXPENSE_CATEGORY["SALARY"] = "SALARY";
145
+ EXPENSE_CATEGORY["UTILITIES"] = "UTILITIES";
146
+ EXPENSE_CATEGORY["MAINTENANCE"] = "MAINTENANCE";
147
+ EXPENSE_CATEGORY["SUPPLIES"] = "SUPPLIES";
148
+ EXPENSE_CATEGORY["TRANSPORT"] = "TRANSPORT";
149
+ EXPENSE_CATEGORY["MARKETING"] = "MARKETING";
150
+ EXPENSE_CATEGORY["INSURANCE"] = "INSURANCE";
151
+ EXPENSE_CATEGORY["RENT"] = "RENT";
152
+ EXPENSE_CATEGORY["TECHNOLOGY"] = "TECHNOLOGY";
153
+ EXPENSE_CATEGORY["PROFESSIONAL"] = "PROFESSIONAL";
154
+ EXPENSE_CATEGORY["TRAINING"] = "TRAINING";
155
+ EXPENSE_CATEGORY["EVENTS"] = "EVENTS";
156
+ EXPENSE_CATEGORY["FOOD"] = "FOOD";
157
+ EXPENSE_CATEGORY["MISCELLANEOUS"] = "MISCELLANEOUS";
158
+ })(EXPENSE_CATEGORY || (EXPENSE_CATEGORY = {}));
159
+ /**
160
+ * Expense payment status
161
+ */
162
+ export var EXPENSE_STATUS;
163
+ (function (EXPENSE_STATUS) {
164
+ EXPENSE_STATUS["PENDING"] = "PENDING";
165
+ EXPENSE_STATUS["APPROVED"] = "APPROVED";
166
+ EXPENSE_STATUS["PAID"] = "PAID";
167
+ EXPENSE_STATUS["REJECTED"] = "REJECTED";
168
+ EXPENSE_STATUS["CANCELLED"] = "CANCELLED";
169
+ })(EXPENSE_STATUS || (EXPENSE_STATUS = {}));
170
+ /**
171
+ * Currency options (ISO 4217 codes)
172
+ */
173
+ export var CURRENCY;
174
+ (function (CURRENCY) {
175
+ CURRENCY["AED"] = "AED";
176
+ CURRENCY["AFN"] = "AFN";
177
+ CURRENCY["ALL"] = "ALL";
178
+ CURRENCY["AMD"] = "AMD";
179
+ CURRENCY["ANG"] = "ANG";
180
+ CURRENCY["AOA"] = "AOA";
181
+ CURRENCY["ARS"] = "ARS";
182
+ CURRENCY["AUD"] = "AUD";
183
+ CURRENCY["AWG"] = "AWG";
184
+ CURRENCY["AZN"] = "AZN";
185
+ CURRENCY["BAM"] = "BAM";
186
+ CURRENCY["BBD"] = "BBD";
187
+ CURRENCY["BDT"] = "BDT";
188
+ CURRENCY["BGN"] = "BGN";
189
+ CURRENCY["BHD"] = "BHD";
190
+ CURRENCY["BIF"] = "BIF";
191
+ CURRENCY["BMD"] = "BMD";
192
+ CURRENCY["BND"] = "BND";
193
+ CURRENCY["BOB"] = "BOB";
194
+ CURRENCY["BRL"] = "BRL";
195
+ CURRENCY["BSD"] = "BSD";
196
+ CURRENCY["BTN"] = "BTN";
197
+ CURRENCY["BWP"] = "BWP";
198
+ CURRENCY["BYN"] = "BYN";
199
+ CURRENCY["BZD"] = "BZD";
200
+ CURRENCY["CAD"] = "CAD";
201
+ CURRENCY["CDF"] = "CDF";
202
+ CURRENCY["CHF"] = "CHF";
203
+ CURRENCY["CLP"] = "CLP";
204
+ CURRENCY["CNY"] = "CNY";
205
+ CURRENCY["COP"] = "COP";
206
+ CURRENCY["CRC"] = "CRC";
207
+ CURRENCY["CVE"] = "CVE";
208
+ CURRENCY["CZK"] = "CZK";
209
+ CURRENCY["DJF"] = "DJF";
210
+ CURRENCY["DKK"] = "DKK";
211
+ CURRENCY["DOP"] = "DOP";
212
+ CURRENCY["DZD"] = "DZD";
213
+ CURRENCY["EGP"] = "EGP";
214
+ CURRENCY["ERN"] = "ERN";
215
+ CURRENCY["ETB"] = "ETB";
216
+ CURRENCY["EUR"] = "EUR";
217
+ CURRENCY["FJD"] = "FJD";
218
+ CURRENCY["FKP"] = "FKP";
219
+ CURRENCY["GBP"] = "GBP";
220
+ CURRENCY["GEL"] = "GEL";
221
+ CURRENCY["GHS"] = "GHS";
222
+ CURRENCY["GIP"] = "GIP";
223
+ CURRENCY["GMD"] = "GMD";
224
+ CURRENCY["GNF"] = "GNF";
225
+ CURRENCY["GTQ"] = "GTQ";
226
+ CURRENCY["GYD"] = "GYD";
227
+ CURRENCY["HKD"] = "HKD";
228
+ CURRENCY["HNL"] = "HNL";
229
+ CURRENCY["HTG"] = "HTG";
230
+ CURRENCY["HUF"] = "HUF";
231
+ CURRENCY["IDR"] = "IDR";
232
+ CURRENCY["ILS"] = "ILS";
233
+ CURRENCY["INR"] = "INR";
234
+ CURRENCY["IQD"] = "IQD";
235
+ CURRENCY["IRR"] = "IRR";
236
+ CURRENCY["ISK"] = "ISK";
237
+ CURRENCY["JMD"] = "JMD";
238
+ CURRENCY["JOD"] = "JOD";
239
+ CURRENCY["JPY"] = "JPY";
240
+ CURRENCY["KES"] = "KES";
241
+ CURRENCY["KGS"] = "KGS";
242
+ CURRENCY["KHR"] = "KHR";
243
+ CURRENCY["KMF"] = "KMF";
244
+ CURRENCY["KPW"] = "KPW";
245
+ CURRENCY["KRW"] = "KRW";
246
+ CURRENCY["KWD"] = "KWD";
247
+ CURRENCY["KYD"] = "KYD";
248
+ CURRENCY["KZT"] = "KZT";
249
+ CURRENCY["LAK"] = "LAK";
250
+ CURRENCY["LBP"] = "LBP";
251
+ CURRENCY["LKR"] = "LKR";
252
+ CURRENCY["LSL"] = "LSL";
253
+ CURRENCY["LYD"] = "LYD";
254
+ CURRENCY["MAD"] = "MAD";
255
+ CURRENCY["MDL"] = "MDL";
256
+ CURRENCY["MGA"] = "MGA";
257
+ CURRENCY["MKD"] = "MKD";
258
+ CURRENCY["MMK"] = "MMK";
259
+ CURRENCY["MNT"] = "MNT";
260
+ CURRENCY["MOP"] = "MOP";
261
+ CURRENCY["MRU"] = "MRU";
262
+ CURRENCY["MUR"] = "MUR";
263
+ CURRENCY["MWK"] = "MWK";
264
+ CURRENCY["MXN"] = "MXN";
265
+ CURRENCY["MYR"] = "MYR";
266
+ CURRENCY["MZN"] = "MZN";
267
+ CURRENCY["NAD"] = "NAD";
268
+ CURRENCY["NGN"] = "NGN";
269
+ CURRENCY["NIO"] = "NIO";
270
+ CURRENCY["NOK"] = "NOK";
271
+ CURRENCY["NPR"] = "NPR";
272
+ CURRENCY["NZD"] = "NZD";
273
+ CURRENCY["OMR"] = "OMR";
274
+ CURRENCY["PAB"] = "PAB";
275
+ CURRENCY["PEN"] = "PEN";
276
+ CURRENCY["PGK"] = "PGK";
277
+ CURRENCY["PHP"] = "PHP";
278
+ CURRENCY["PKR"] = "PKR";
279
+ CURRENCY["PLN"] = "PLN";
280
+ CURRENCY["PYG"] = "PYG";
281
+ CURRENCY["QAR"] = "QAR";
282
+ CURRENCY["RON"] = "RON";
283
+ CURRENCY["RSD"] = "RSD";
284
+ CURRENCY["RUB"] = "RUB";
285
+ CURRENCY["RWF"] = "RWF";
286
+ CURRENCY["SAR"] = "SAR";
287
+ CURRENCY["SBD"] = "SBD";
288
+ CURRENCY["SCR"] = "SCR";
289
+ CURRENCY["SDG"] = "SDG";
290
+ CURRENCY["SEK"] = "SEK";
291
+ CURRENCY["SGD"] = "SGD";
292
+ CURRENCY["SHP"] = "SHP";
293
+ CURRENCY["SLL"] = "SLL";
294
+ CURRENCY["SOS"] = "SOS";
295
+ CURRENCY["SRD"] = "SRD";
296
+ CURRENCY["SYP"] = "SYP";
297
+ CURRENCY["SZL"] = "SZL";
298
+ CURRENCY["THB"] = "THB";
299
+ CURRENCY["TJS"] = "TJS";
300
+ CURRENCY["TMT"] = "TMT";
301
+ CURRENCY["TND"] = "TND";
302
+ CURRENCY["TOP"] = "TOP";
303
+ CURRENCY["TRY"] = "TRY";
304
+ CURRENCY["TTD"] = "TTD";
305
+ CURRENCY["TWD"] = "TWD";
306
+ CURRENCY["TZS"] = "TZS";
307
+ CURRENCY["UAH"] = "UAH";
308
+ CURRENCY["UGX"] = "UGX";
309
+ CURRENCY["USD"] = "USD";
310
+ CURRENCY["UYU"] = "UYU";
311
+ CURRENCY["UZS"] = "UZS";
312
+ CURRENCY["VES"] = "VES";
313
+ CURRENCY["VND"] = "VND";
314
+ CURRENCY["VUV"] = "VUV";
315
+ CURRENCY["WST"] = "WST";
316
+ CURRENCY["XAF"] = "XAF";
317
+ CURRENCY["XCD"] = "XCD";
318
+ CURRENCY["XOF"] = "XOF";
319
+ CURRENCY["XPF"] = "XPF";
320
+ CURRENCY["YER"] = "YER";
321
+ CURRENCY["ZAR"] = "ZAR";
322
+ CURRENCY["ZMW"] = "ZMW";
323
+ CURRENCY["ZWL"] = "ZWL";
324
+ })(CURRENCY || (CURRENCY = {}));
325
+ /**
326
+ * Access level for module-scoped permission grants
327
+ */
328
+ export var ACCESS_LEVEL;
329
+ (function (ACCESS_LEVEL) {
330
+ ACCESS_LEVEL["READ"] = "READ";
331
+ ACCESS_LEVEL["READ_WRITE"] = "READ_WRITE";
332
+ })(ACCESS_LEVEL || (ACCESS_LEVEL = {}));
333
+ /**
334
+ * Plan types for subscription tiers
335
+ */
336
+ export var PLAN_TYPE;
337
+ (function (PLAN_TYPE) {
338
+ PLAN_TYPE["BASIC"] = "BASIC";
339
+ PLAN_TYPE["PRO"] = "PRO";
340
+ PLAN_TYPE["ENTERPRISE"] = "ENTERPRISE";
341
+ })(PLAN_TYPE || (PLAN_TYPE = {}));
342
+ /**
343
+ * Billing interval used for charging (monthly or yearly)
344
+ */
345
+ export var BILLING_INTERVAL;
346
+ (function (BILLING_INTERVAL) {
347
+ BILLING_INTERVAL["MONTHLY"] = "MONTHLY";
348
+ BILLING_INTERVAL["YEARLY"] = "YEARLY";
349
+ })(BILLING_INTERVAL || (BILLING_INTERVAL = {}));
350
+ /**
351
+ * Admission status for student applications
352
+ */
353
+ export var ADMISSION_STATUS;
354
+ (function (ADMISSION_STATUS) {
355
+ ADMISSION_STATUS["PENDING"] = "PENDING";
356
+ ADMISSION_STATUS["APPROVED"] = "APPROVED";
357
+ ADMISSION_STATUS["REJECTED"] = "REJECTED";
358
+ ADMISSION_STATUS["ENROLLED"] = "ENROLLED";
359
+ ADMISSION_STATUS["CANCELLED"] = "CANCELLED";
360
+ })(ADMISSION_STATUS || (ADMISSION_STATUS = {}));
361
+ export var FEE_RISK_LEVEL;
362
+ (function (FEE_RISK_LEVEL) {
363
+ FEE_RISK_LEVEL["LOW"] = "LOW";
364
+ FEE_RISK_LEVEL["MEDIUM"] = "MEDIUM";
365
+ FEE_RISK_LEVEL["HIGH"] = "HIGH";
366
+ })(FEE_RISK_LEVEL || (FEE_RISK_LEVEL = {}));
367
+ export var FEE_AGENT_ACTION_TYPE;
368
+ (function (FEE_AGENT_ACTION_TYPE) {
369
+ FEE_AGENT_ACTION_TYPE["ANALYSIS"] = "ANALYSIS";
370
+ FEE_AGENT_ACTION_TYPE["MESSAGE"] = "MESSAGE";
371
+ FEE_AGENT_ACTION_TYPE["FOLLOW_UP"] = "FOLLOW_UP";
372
+ FEE_AGENT_ACTION_TYPE["RESPONSE"] = "RESPONSE";
373
+ })(FEE_AGENT_ACTION_TYPE || (FEE_AGENT_ACTION_TYPE = {}));
374
+ export var FEE_CONVERSATION_SENDER;
375
+ (function (FEE_CONVERSATION_SENDER) {
376
+ FEE_CONVERSATION_SENDER["AGENT"] = "AGENT";
377
+ FEE_CONVERSATION_SENDER["PARENT"] = "PARENT";
378
+ })(FEE_CONVERSATION_SENDER || (FEE_CONVERSATION_SENDER = {}));
379
+ export var FEE_CONVERSATION_INTENT;
380
+ (function (FEE_CONVERSATION_INTENT) {
381
+ FEE_CONVERSATION_INTENT["PROMISE"] = "PROMISE";
382
+ FEE_CONVERSATION_INTENT["PAID"] = "PAID";
383
+ FEE_CONVERSATION_INTENT["DISPUTE"] = "DISPUTE";
384
+ FEE_CONVERSATION_INTENT["UNKNOWN"] = "UNKNOWN";
385
+ })(FEE_CONVERSATION_INTENT || (FEE_CONVERSATION_INTENT = {}));
386
+ // ============================================================================
387
+ // COMMUNICATION
388
+ // ============================================================================
389
+ /**
390
+ * WhatsApp broadcast campaign status
391
+ */
392
+ export var CAMPAIGN_STATUS;
393
+ (function (CAMPAIGN_STATUS) {
394
+ CAMPAIGN_STATUS["DRAFT"] = "DRAFT";
395
+ CAMPAIGN_STATUS["RUNNING"] = "RUNNING";
396
+ CAMPAIGN_STATUS["COMPLETED"] = "COMPLETED";
397
+ CAMPAIGN_STATUS["FAILED"] = "FAILED";
398
+ CAMPAIGN_STATUS["PAUSED"] = "PAUSED";
399
+ })(CAMPAIGN_STATUS || (CAMPAIGN_STATUS = {}));
400
+ /**
401
+ * Delivery status for an individual campaign contact
402
+ */
403
+ export var CAMPAIGN_CONTACT_STATUS;
404
+ (function (CAMPAIGN_CONTACT_STATUS) {
405
+ CAMPAIGN_CONTACT_STATUS["PENDING"] = "PENDING";
406
+ CAMPAIGN_CONTACT_STATUS["SENT"] = "SENT";
407
+ CAMPAIGN_CONTACT_STATUS["FAILED"] = "FAILED";
408
+ CAMPAIGN_CONTACT_STATUS["SKIPPED"] = "SKIPPED";
409
+ })(CAMPAIGN_CONTACT_STATUS || (CAMPAIGN_CONTACT_STATUS = {}));
410
+ /**
411
+ * Channel through which a referral invite was sent
412
+ */
413
+ export var REFERRAL_CHANNEL;
414
+ (function (REFERRAL_CHANNEL) {
415
+ REFERRAL_CHANNEL["EMAIL"] = "EMAIL";
416
+ REFERRAL_CHANNEL["WHATSAPP"] = "WHATSAPP";
417
+ REFERRAL_CHANNEL["BOTH"] = "BOTH";
418
+ })(REFERRAL_CHANNEL || (REFERRAL_CHANNEL = {}));
419
+ /**
420
+ * Status of a school referral invite
421
+ */
422
+ export var REFERRAL_STATUS;
423
+ (function (REFERRAL_STATUS) {
424
+ REFERRAL_STATUS["PENDING"] = "PENDING";
425
+ REFERRAL_STATUS["SENT"] = "SENT";
426
+ REFERRAL_STATUS["FAILED"] = "FAILED";
427
+ })(REFERRAL_STATUS || (REFERRAL_STATUS = {}));
@@ -0,0 +1,78 @@
1
+ import { PDFTemplateData } from "./pdf-generator";
2
+ /**
3
+ * Admission PDF Generation Utilities
4
+ *
5
+ * Specialized functions for generating admission-related PDFs.
6
+ */
7
+ export interface AdmissionPDFData extends PDFTemplateData {
8
+ firstName: string;
9
+ lastName: string;
10
+ bForm: string;
11
+ gender: string;
12
+ dob: string;
13
+ registrationCode: string;
14
+ discountCode?: string;
15
+ fatherFirstName: string;
16
+ fatherLastName: string;
17
+ fatherCnic: string;
18
+ fatherMobile: string;
19
+ fatherOccupation?: string;
20
+ fatherOrganization?: string;
21
+ motherFirstName: string;
22
+ motherLastName: string;
23
+ motherCnic: string;
24
+ motherMobile: string;
25
+ address: string;
26
+ city: string;
27
+ state: string;
28
+ country: string;
29
+ classForAdmission: string;
30
+ previousSchool?: string;
31
+ siblings?: string;
32
+ notes?: string;
33
+ admissionNotes?: string;
34
+ schoolName?: string;
35
+ schoolAddress?: string;
36
+ schoolPhone?: string;
37
+ schoolEmail?: string;
38
+ submissionDate?: string;
39
+ admissionStatus?: string;
40
+ }
41
+ /**
42
+ * Generate admission form PDF
43
+ *
44
+ * @param admissionData - Admission form data
45
+ * @param options - Additional PDF options
46
+ * @returns Promise<Buffer> - PDF buffer
47
+ */
48
+ export declare function generateAdmissionPDF(admissionData: AdmissionPDFData, options?: {
49
+ filename?: string;
50
+ orientation?: "portrait" | "landscape";
51
+ format?: "a4" | "letter" | "legal";
52
+ }): Promise<Uint8Array>;
53
+ /**
54
+ * Download admission form PDF
55
+ *
56
+ * @param admissionData - Admission form data
57
+ * @param options - Additional PDF options
58
+ */
59
+ export declare function downloadAdmissionPDF(admissionData: AdmissionPDFData, options?: {
60
+ filename?: string;
61
+ orientation?: "portrait" | "landscape";
62
+ format?: "a4" | "letter" | "legal";
63
+ }): Promise<void>;
64
+ /**
65
+ * Print admission form PDF
66
+ *
67
+ * @param admissionData - Admission form data
68
+ * @param printerOptions - Printer options
69
+ */
70
+ export declare function printAdmissionPDF(admissionData: AdmissionPDFData): Promise<void>;
71
+ /**
72
+ * Generate admission receipt PDF
73
+ *
74
+ * @param admissionData - Admission form data with payment info
75
+ * @param paymentData - Payment information
76
+ * @returns Promise<Buffer> - PDF buffer
77
+ */
78
+ export declare function generateAdmissionReceiptPDF(admissionData: AdmissionPDFData): Promise<void>;
@@ -0,0 +1,73 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { schoolAdmissionTemplateV1 } from "@appcorp/app-corp-vista/pdf-templates/school-admission-template-v1";
13
+ import { generatePDF, downloadPDF, printPDF, } from "./pdf-generator";
14
+ /**
15
+ * Generate admission form PDF
16
+ *
17
+ * @param admissionData - Admission form data
18
+ * @param options - Additional PDF options
19
+ * @returns Promise<Buffer> - PDF buffer
20
+ */
21
+ export async function generateAdmissionPDF(admissionData, options) {
22
+ const _a = options || {}, { filename = `admission-${admissionData.registrationCode}.pdf` } = _a, pdfOptions = __rest(_a, ["filename"]);
23
+ return generatePDF(Object.assign({ template: schoolAdmissionTemplateV1, data: Object.assign(Object.assign({}, admissionData), { submissionDate: admissionData.submissionDate || new Date().toLocaleDateString(),
24
+ // Map admission data to template fields
25
+ heading: "Admission Form", studentName: `${admissionData.firstName} ${admissionData.lastName}`, bForm: admissionData.bForm, fatherName: `${admissionData.fatherFirstName} ${admissionData.fatherLastName}`, motherName: `${admissionData.motherFirstName} ${admissionData.motherLastName}`, address: admissionData.address, class: admissionData.classForAdmission }), filename }, pdfOptions));
26
+ }
27
+ /**
28
+ * Download admission form PDF
29
+ *
30
+ * @param admissionData - Admission form data
31
+ * @param options - Additional PDF options
32
+ */
33
+ export async function downloadAdmissionPDF(admissionData, options) {
34
+ const _a = options || {}, { filename = `admission-${admissionData.registrationCode}.pdf` } = _a, pdfOptions = __rest(_a, ["filename"]);
35
+ return downloadPDF(Object.assign({ template: schoolAdmissionTemplateV1, data: Object.assign(Object.assign({}, admissionData), { submissionDate: admissionData.submissionDate || new Date().toLocaleDateString(),
36
+ // Map admission data to template fields
37
+ heading: "Admission Form", studentName: `${admissionData.firstName} ${admissionData.lastName}`, bForm: admissionData.bForm, fatherName: `${admissionData.fatherFirstName} ${admissionData.fatherLastName}`, motherName: `${admissionData.motherFirstName} ${admissionData.motherLastName}`, address: admissionData.address, class: admissionData.classForAdmission }), filename }, pdfOptions));
38
+ }
39
+ /**
40
+ * Print admission form PDF
41
+ *
42
+ * @param admissionData - Admission form data
43
+ * @param printerOptions - Printer options
44
+ */
45
+ export async function printAdmissionPDF(admissionData) {
46
+ return printPDF({
47
+ template: schoolAdmissionTemplateV1,
48
+ data: Object.assign(Object.assign({}, admissionData), { submissionDate: admissionData.submissionDate || new Date().toLocaleDateString(),
49
+ // Map admission data to template fields
50
+ formHeading: "Admission Form", schoolName: "Lahore Garrison Grammar School", date: `Date: ${new Date().toLocaleDateString()}`, studentName: `Student Name: ${admissionData.firstName} ${admissionData.lastName}`, bForm: `B. Form: ${admissionData.bForm}`, fatherName: `Father's Name: ${admissionData.fatherFirstName} ${admissionData.fatherLastName}`, classToBeAdmitted: `Class for Admission: ${admissionData.classForAdmission}`, motherName: `Mother's Name: ${admissionData.motherFirstName} ${admissionData.motherLastName}`, address: `Address: ${admissionData.address}`, class: `Class for Admission: ${admissionData.classForAdmission}`, schoolAddress: "123 Main Street, Lahore", registration: `Registration Code: ${admissionData.registrationCode}`,
51
+ // logo: await convertUrlToBase64(
52
+ // admissionData.schoolLogoUrl ||
53
+ // "https://lggs.edu.pk/wp-content/uploads/2019/12/lggs-150.jpg"
54
+ // ),
55
+ gender: `Gender: ${admissionData.gender}`, dob: `DoB: ${admissionData.dob}`, fatherCNIC: `Father's CNIC: ${admissionData.fatherCnic}`, fatherMobile: `Father's Mobile: ${admissionData.fatherMobile}`, fatherOccupation: `Father's Occupation: ${admissionData.fatherOccupation || "N/A"}`, fatherOrganization: `Father's Organization: ${admissionData.fatherOrganization || "N/A"}`, motherCNIC: `Mother's CNIC: ${admissionData.motherCnic}`, motherMobile: `Mother's Mobile: ${admissionData.motherMobile}`, homeAddress: `Home Address: ${admissionData.address}, ${admissionData.city}, ${admissionData.state}, ${admissionData.country}`, relation: `Who to contact: ${admissionData.emergencyContact === "Mother" ? "Mother" : "Father"}`, notes: `Additional Notes: ${admissionData.notes || "N/A"}`, student: "Student:", startDate: "Start Date:", section: "Section:", logo: `data:image/jpeg;base64,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` }),
56
+ });
57
+ }
58
+ /**
59
+ * Generate admission receipt PDF
60
+ *
61
+ * @param admissionData - Admission form data with payment info
62
+ * @param paymentData - Payment information
63
+ * @returns Promise<Buffer> - PDF buffer
64
+ */
65
+ export async function generateAdmissionReceiptPDF(admissionData) {
66
+ await downloadPDF({
67
+ template: schoolAdmissionTemplateV1,
68
+ data: Object.assign(Object.assign({}, admissionData), { submissionDate: admissionData.submissionDate || new Date().toLocaleDateString(),
69
+ // Map admission data to template fields
70
+ formHeading: "Admission Form", schoolName: "Lahore Garrison Grammar School", date: `Date: ${new Date().toLocaleDateString()}`, studentName: `Student Name: ${admissionData.firstName} ${admissionData.lastName}`, bForm: `B. Form: ${admissionData.bForm}`, fatherName: `Father's Name: ${admissionData.fatherFirstName} ${admissionData.fatherLastName}`, classToBeAdmitted: `Class for Admission: ${admissionData.classForAdmission}`, motherName: `Mother's Name: ${admissionData.motherFirstName} ${admissionData.motherLastName}`, address: `Address: ${admissionData.address}`, class: `Class for Admission: ${admissionData.classForAdmission}`, schoolAddress: "123 Main Street, Lahore", registration: `Registration Code: ${admissionData.registrationCode}`, gender: `Gender: ${admissionData.gender}`, dob: `DoB: ${admissionData.dob}`, fatherCNIC: `Father's CNIC: ${admissionData.fatherCnic}`, fatherMobile: `Father's Mobile: ${admissionData.fatherMobile}`, fatherOccupation: `Father's Occupation: ${admissionData.fatherOccupation || "N/A"}`, fatherOrganization: `Father's Organization: ${admissionData.fatherOrganization || "N/A"}`, motherCNIC: `Mother's CNIC: ${admissionData.motherCnic}`, motherMobile: `Mother's Mobile: ${admissionData.motherMobile}`, homeAddress: `Home Address: ${admissionData.address}, ${admissionData.city}, ${admissionData.state}, ${admissionData.country}`, relation: `Who to contact: ${admissionData.emergencyContact === "Mother" ? "Mother" : "Father"}`, notes: `Additional Notes: ${admissionData.notes || "N/A"}`, student: "Student:", startDate: "Start Date:", section: "Section:", logo: admissionData.logo }),
71
+ filename: `admission-${admissionData.registrationCode}.pdf`,
72
+ });
73
+ }
@@ -0,0 +1 @@
1
+ export declare const clearCache: () => void;
@@ -0,0 +1,8 @@
1
+ import { LS_KEYS } from "@/constants";
2
+ export const clearCache = () => {
3
+ Object.keys(LS_KEYS).forEach((key) => {
4
+ localStorage.removeItem(LS_KEYS[key]);
5
+ });
6
+ // reload window to reflect cleared cache
7
+ window.location.reload();
8
+ };
@@ -0,0 +1 @@
1
+ export declare const formatValue: (v?: string | number | null) => string;
@@ -0,0 +1 @@
1
+ export const formatValue = (v) => v === undefined || v === null || v === "" ? "—" : String(v);