@nanas-home/hub-common 0.56.1271 → 0.58.1306

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.
@@ -46,6 +46,71 @@ var monthTranslationKeyOrder = [
46
46
  "dec"
47
47
  ];
48
48
 
49
+ // src/constants/cdnAppImage.ts
50
+ var cdnUrl = (path) => `https://cdn.nanashome.club/${path}`;
51
+ var cdnWebUrl = (path) => cdnUrl(`web-app/${path}`);
52
+ var CdnAppImage = {
53
+ nav: {
54
+ logo: {
55
+ dark: cdnWebUrl("nav-dark.png"),
56
+ light: cdnWebUrl("nav-light.png")
57
+ },
58
+ logo96: {
59
+ dark: cdnUrl("favicon/favicon-96x96.png"),
60
+ light: cdnUrl("favicon/favicon-96x96.png")
61
+ }
62
+ },
63
+ membership: {
64
+ Club: cdnWebUrl("Club.svg"),
65
+ ClubPlus: cdnWebUrl("ClubPlus.svg")
66
+ },
67
+ illustration: {
68
+ catInPark: cdnWebUrl("illustration/cat_in_park.svg"),
69
+ emptyBed: cdnWebUrl("illustration/empty_bed.svg")
70
+ },
71
+ thirdParty: {
72
+ hubspot: cdnWebUrl("third-party/hubspot.svg"),
73
+ stripe: cdnWebUrl("third-party/stripe.svg")
74
+ },
75
+ email: {
76
+ defaultLayout: {
77
+ logo: cdnUrl("email/defaultLayoutLogo.png"),
78
+ banner: cdnUrl("email/defaultLayoutBanner.jpg")
79
+ },
80
+ icons: {
81
+ facebookIcon: cdnUrl("email/icon/facebookIcon.png"),
82
+ instagramIcon: cdnUrl("email/icon/instagramIcon.png"),
83
+ linkedInIcon: cdnUrl("email/icon/linkedInIcon.png")
84
+ },
85
+ sentSuccessfully: cdnWebUrl("mail-sent.svg")
86
+ },
87
+ map: {
88
+ pin: cdnWebUrl("map-pin.svg")
89
+ },
90
+ portal: {
91
+ admin: cdnWebUrl("portal/admin.png"),
92
+ cdn: cdnWebUrl("portal/cdn.png"),
93
+ client: cdnWebUrl("portal/client.png"),
94
+ coverage: cdnWebUrl("portal/coverage.png"),
95
+ databasus: cdnWebUrl("portal/databasus.svg"),
96
+ docs: cdnWebUrl("portal/docs.png"),
97
+ fileBrowser: cdnWebUrl("portal/file-browser.svg"),
98
+ healthchecks: cdnWebUrl("portal/healthchecks.png"),
99
+ hostCal: cdnWebUrl("portal/hostCal.png"),
100
+ landing: cdnWebUrl("portal/landing.png"),
101
+ newTab: cdnWebUrl("portal/new-tab.svg"),
102
+ passbolt: cdnWebUrl("portal/passbolt.svg"),
103
+ portal: cdnWebUrl("portal/portal.png"),
104
+ registry: cdnWebUrl("portal/registry.png"),
105
+ tolgee: cdnWebUrl("portal/tolgee.svg"),
106
+ traefik: cdnWebUrl("portal/traefik.png")
107
+ },
108
+ error: {
109
+ cat: cdnWebUrl("error_cat.svg"),
110
+ dog: cdnWebUrl("error_dog.svg")
111
+ }
112
+ };
113
+
49
114
  // src/constants/font.ts
50
115
  var nanasFonts = {
51
116
  default: "https://fonts.googleapis.com/css2?family=Hanken+Grotesk:ital,wght@0,100..900;1,100..900&display=swap"
@@ -128,6 +193,7 @@ var apiRouteParam = {
128
193
  petUuid: ":petUuid",
129
194
  addressUuid: ":addressUuid",
130
195
  bookingUuid: ":bookingUuid",
196
+ bookingHostUuid: ":bookingHostUuid",
131
197
  bookingAddonUuid: ":bookingAddonUuid",
132
198
  uploadUuid: ":uploadUuid",
133
199
  userMembershipUuid: ":userMembershipUuid",
@@ -148,6 +214,7 @@ var apiRoute = {
148
214
  signup: "/signup",
149
215
  signupProgress: "/signup-progress",
150
216
  signupQuestions: "/signup-questions",
217
+ signupTempPetImageUpload: "/signup-temp-pet-upload",
151
218
  confirmEmail: `/confirm-email/${apiRouteParam.linkUuid}`,
152
219
  requestPasswordResetLink: `/password-reset`,
153
220
  passwordResetFromTempLink: `/password-reset/${apiRouteParam.linkUuid}`,
@@ -188,7 +255,7 @@ var apiRoute = {
188
255
  byPet: `/pet/${apiRouteParam.petUuid}`,
189
256
  withRelationships: `/with-relationships/${apiRouteParam.bookingUuid}`,
190
257
  assignHost: `/assign-host/${apiRouteParam.bookingUuid}/${apiRouteParam.userUuid}`,
191
- removeHost: `/remove-host/${apiRouteParam.bookingUuid}`,
258
+ removeHost: `/remove-host/${apiRouteParam.bookingUuid}/${apiRouteParam.bookingHostUuid}`,
192
259
  calendarOverview: "/calendar-overview",
193
260
  swagger: { name: "Bookings", description: "Endpoints for managing bookings" }
194
261
  },
@@ -234,6 +301,7 @@ var apiRoute = {
234
301
  user: {
235
302
  prefix: "/admin/user",
236
303
  searchHosts: "/search-hosts",
304
+ migrationReport: "/migration-report",
237
305
  swagger: { name: "Users", description: "Endpoints for Admins to manage Users" }
238
306
  },
239
307
  userMembership: {
@@ -611,6 +679,7 @@ var UploadLinkType = /* @__PURE__ */ ((UploadLinkType2) => {
611
679
  UploadLinkType2[UploadLinkType2["Unknown"] = 0] = "Unknown";
612
680
  UploadLinkType2[UploadLinkType2["User"] = 1] = "User";
613
681
  UploadLinkType2[UploadLinkType2["Pet"] = 2] = "Pet";
682
+ UploadLinkType2[UploadLinkType2["UserRegistration"] = 3] = "UserRegistration";
614
683
  return UploadLinkType2;
615
684
  })(UploadLinkType || {});
616
685
  var UploadType = /* @__PURE__ */ ((UploadType2) => {
@@ -748,7 +817,15 @@ var AnswerRestriction = {
748
817
 
749
818
  // src/contracts/generated/restrictions/authRestriction.ts
750
819
  var AuthRegisterRestriction = {
751
- pets: { minItems: 1, maxItems: 5 },
820
+ pets: {
821
+ minItems: 1,
822
+ maxItems: 5,
823
+ upload: {
824
+ url: { minLength: 0, maxLength: 1e3 },
825
+ mimeType: { minLength: 3, maxLength: 50 },
826
+ extension: { minLength: 3, maxLength: 5 }
827
+ }
828
+ },
752
829
  answers: { minItems: 3, maxItems: 50 }
753
830
  };
754
831
 
@@ -1168,8 +1245,6 @@ var addToParallelTasks = async (tasks, newTask, numTasksInParallel = 5) => {
1168
1245
  tasks.push(newTask);
1169
1246
  return tasks;
1170
1247
  };
1171
-
1172
- // src/helpers/bookingCalendarHelper.ts
1173
1248
  var getBookingStatusLabelForAdmin = (status) => {
1174
1249
  switch (status) {
1175
1250
  case 0 /* Cancelled */:
@@ -1205,12 +1280,40 @@ var getMembershipTypeLabel = (type) => {
1205
1280
  return "None";
1206
1281
  }
1207
1282
  };
1283
+ var getPetTypeLabel = (type) => {
1284
+ switch (type) {
1285
+ case 1 /* Dog */:
1286
+ return "Dog";
1287
+ case 2 /* Cat */:
1288
+ return "Cat";
1289
+ case 3 /* Bird */:
1290
+ return "Bird";
1291
+ case 4 /* Rodent */:
1292
+ return "Rodent";
1293
+ case 5 /* Reptile */:
1294
+ return "Reptile";
1295
+ case 6 /* Other */:
1296
+ return "Other";
1297
+ case 0 /* Unknown */:
1298
+ default:
1299
+ return "Unknown";
1300
+ }
1301
+ };
1302
+ var formatPetTypesLabel = (types) => {
1303
+ const uniqueTypes = [];
1304
+ for (const type of types) {
1305
+ if (uniqueTypes.includes(type) == false) uniqueTypes.push(type);
1306
+ }
1307
+ const labels = uniqueTypes.map((type) => getPetTypeLabel(type)).filter((label) => label !== "Unknown");
1308
+ return labels.length > 0 ? labels.join(", ") : "Unknown";
1309
+ };
1208
1310
  var formatBookingCalendarLabel = (item) => {
1209
1311
  const status = getBookingStatusLabelForAdmin(item.status);
1210
- const pets = item.petNames.join(", ") || "No pets";
1312
+ const petNames = item.petNames.join(", ") || "No pets";
1211
1313
  const membership = getMembershipTypeLabel(item.ownerMembershipType);
1212
- const hostPart = item.hostNames.length > 0 ? ` with ${item.hostNames.join(", ")}` : "";
1213
- return `${status}: ${pets}, ${membership} (${item.ownerName})${hostPart}`;
1314
+ const petTypes = formatPetTypesLabel(item.petTypes);
1315
+ const hostPart = item.hostNames.length > 0 ? ` [with ${item.hostNames.join(", ")}]` : "";
1316
+ return `${status}: ${petNames}, ${membership} (${item.ownerName}) ${petTypes}${hostPart}`;
1214
1317
  };
1215
1318
  var BOOKING_OVERVIEW_STATUSES = [
1216
1319
  1 /* IntakeCall */,
@@ -1233,9 +1336,29 @@ var computeBookingStatusCounts = (bookings) => {
1233
1336
  }
1234
1337
  return counts;
1235
1338
  };
1236
- var filterBookingsByOverviewStatus = (bookings, status) => {
1237
- if (status == null) return bookings;
1238
- return bookings.filter((booking) => booking.status === status);
1339
+ var filterBookingsByOverviewStatus = (bookings, statuses) => {
1340
+ if (statuses == null || statuses.length === 0) return bookings;
1341
+ const allowed = new Set(statuses);
1342
+ return bookings.filter((booking) => allowed.has(booking.status));
1343
+ };
1344
+ var computeBookingNightCount = (startDate, endDate) => {
1345
+ const nights = Math.abs(
1346
+ dayjs(endDate).startOf("day").diff(dayjs(startDate).startOf("day"), "day")
1347
+ );
1348
+ return Math.max(1, nights);
1349
+ };
1350
+ var formatBookingNightsTooltip = (startDate, endDate) => {
1351
+ const nights = computeBookingNightCount(startDate, endDate);
1352
+ return nights === 1 ? "1 night" : `${nights} nights`;
1353
+ };
1354
+ var serializeBookingOverviewStatuses = (statuses) => {
1355
+ if (statuses.length === 0) return void 0;
1356
+ return statuses.join(",");
1357
+ };
1358
+ var parseBookingOverviewStatuses = (statuses) => {
1359
+ if (statuses == null || statuses.trim().length === 0) return void 0;
1360
+ const parsed = statuses.split(",").map((value) => value.trim()).filter((value) => value.length > 0).map((value) => Number(value)).filter((value) => Number.isFinite(value));
1361
+ return parsed.length > 0 ? parsed : void 0;
1239
1362
  };
1240
1363
 
1241
1364
  // src/components/form/calendar/calendarPicker.functions.ts
@@ -1660,6 +1783,13 @@ var urlRef = (url) => {
1660
1783
  }
1661
1784
  return url + `?ref=${ref}`;
1662
1785
  };
1786
+ var urlAddQueryParam = (url, queryParamName, queryParamValue) => {
1787
+ if (url.includes(`${queryParamName}=`)) return url;
1788
+ if (url.includes("?")) {
1789
+ return url + `&${queryParamName}=${queryParamValue}`;
1790
+ }
1791
+ return url + `?${queryParamName}=${queryParamValue}`;
1792
+ };
1663
1793
 
1664
1794
  // src/helpers/userAccountFlagHelper.ts
1665
1795
  var userMustChangePassword = (flags) => flags?.includes(1 /* ChangePassword */) === true;
@@ -2022,4 +2152,4 @@ var shouldBeYoutubeUrl = (value) => {
2022
2152
  };
2023
2153
  };
2024
2154
 
2025
- export { APP_TYPE_TOKEN, ActivityRestriction, ActivityType, AddressLinkType, AddressRestriction, AnswerLinkType, AnswerRestriction, AppType, AuthRegisterRestriction, BOOKING_OVERVIEW_STATUSES, BOT_PATH_TOKEN, BookingAddonRestriction, BookingAddonType, BookingRestriction, BookingStatusType, BugReportRestriction, BugReportStatusType, CommentLinkType, CommentRestriction, CommonConfigService, DependencyInjectionContainer, DrivingRouteRestriction, InvoiceRestriction, InvoiceStatusType, LogService, MembershipBillingCycleType, MembershipRestriction, MembershipStatus, MembershipType, MouseButton, NANAS_PALLETTE, NetworkState, OrderDirectionType, PermissionRestriction, PermissionType, PetRestriction, PetSexType, PetStatusType, PetType, QuestionForType, QuestionRestriction, QuestionType, SITE_CONFIG_TOKEN, SearchableColumnType, StripeRestriction, SupportedLanguageArray, TempLinkType, TempRegistrationStatus, UnavailabilityRestriction, UploadLinkType, UploadRestriction, UploadType, UserAccountFlagType, UserRestriction, UserType, UuidRestriction, activityShortCode, addDays, addMinutes, addMonths, addSeconds, addSpacesForEnum, addToParallelTasks, allowedNonNumericalValuesInContactNumber, anyObject, apiRoute, apiRouteParam, arrayContains, arrayOfNLength, capitalizeFirstLetter, changeMonth, colourPalette, commonEmailLinks, computeBookingStatusCounts, contactNumberCharValid, contactNumberValid, convertToDate, convertToFullDateSelection, createToken, cyrb53, dateDiffInDays, debounceLeading, defaultSiteColour, emailValid, fakePromise, filterBookingsByOverviewStatus, formatBookingCalendarLabel, formatDate, formatFileSize, formatForBookingDate, formatForDateDropdown, formatForDateLocal, formatForDateLocalDetailed, formatForDateOfBirth, formatForDateWithTime, getActiveUserMembership, getAgeInYears, getAllPetQuestionForType, getAppType, getArrFromEnum, getBookingStatusLabelForAdmin, getBotPath, getCalendarDropdownDisplayValue, getCalendarDropdownForDateOfBirthDisplayValue, getCommonConfig, getDayClassObject, getDayElements, getDayHeadingElements, getImageParams, getLog, getMembershipTypeLabel, getMimeTypeFromExtension, getPayloadFromJwt, getPerformanceTimer, getPetAvatarUrl, getQuestionGroups, getSiteColour, getSiteConfig, getUserAvatarUrl, getUsersName, getWeekNumber, hasRequiredPermissions, hubspotQuestionsExport, isBefore, isDateAfterStart, isDateBeforeEnd, isDateDisabledByDisabledDays, isDateEnabledByEnabledDays, isNumber, isSameDay, isWebApp, lowercaseFirstLetter, makeArrayOrDefault, maxDate, maxItems, maxLength, maxValue, mimeTypeLookup, minDate, minItems, minLength, minUrlLength, minValue, monthTranslationKeyOrder, multiValidation, nameof, nanasFonts, noValidation, notNull, onlyUnique, passwordValid, portalGlyphLength, postCodeValid, promiseFromValue, randomIntFromRange, randomItemFromArray, rootContainer, rootDependencyInjectionSetup, searchColumns, selectedItemsExist, selectedOptionIsInEnum, separateValidation, setContainerToken, setContainerTokenLazy, setSiteConfig, shouldBeUrl, shouldBeYoutubeUrl, showSecondCalendar, socialLinks, timeout, tryParseNumber, uploadsThatNeedEncryption, urlRef, userMustChangePassword, uuidv4, validUuidChars, validateForEach, webAppTypes, weekdayTranslationKeyOrder };
2155
+ export { APP_TYPE_TOKEN, ActivityRestriction, ActivityType, AddressLinkType, AddressRestriction, AnswerLinkType, AnswerRestriction, AppType, AuthRegisterRestriction, BOOKING_OVERVIEW_STATUSES, BOT_PATH_TOKEN, BookingAddonRestriction, BookingAddonType, BookingRestriction, BookingStatusType, BugReportRestriction, BugReportStatusType, CdnAppImage, CommentLinkType, CommentRestriction, CommonConfigService, DependencyInjectionContainer, DrivingRouteRestriction, InvoiceRestriction, InvoiceStatusType, LogService, MembershipBillingCycleType, MembershipRestriction, MembershipStatus, MembershipType, MouseButton, NANAS_PALLETTE, NetworkState, OrderDirectionType, PermissionRestriction, PermissionType, PetRestriction, PetSexType, PetStatusType, PetType, QuestionForType, QuestionRestriction, QuestionType, SITE_CONFIG_TOKEN, SearchableColumnType, StripeRestriction, SupportedLanguageArray, TempLinkType, TempRegistrationStatus, UnavailabilityRestriction, UploadLinkType, UploadRestriction, UploadType, UserAccountFlagType, UserRestriction, UserType, UuidRestriction, activityShortCode, addDays, addMinutes, addMonths, addSeconds, addSpacesForEnum, addToParallelTasks, allowedNonNumericalValuesInContactNumber, anyObject, apiRoute, apiRouteParam, arrayContains, arrayOfNLength, capitalizeFirstLetter, changeMonth, colourPalette, commonEmailLinks, computeBookingNightCount, computeBookingStatusCounts, contactNumberCharValid, contactNumberValid, convertToDate, convertToFullDateSelection, createToken, cyrb53, dateDiffInDays, debounceLeading, defaultSiteColour, emailValid, fakePromise, filterBookingsByOverviewStatus, formatBookingCalendarLabel, formatBookingNightsTooltip, formatDate, formatFileSize, formatForBookingDate, formatForDateDropdown, formatForDateLocal, formatForDateLocalDetailed, formatForDateOfBirth, formatForDateWithTime, formatPetTypesLabel, getActiveUserMembership, getAgeInYears, getAllPetQuestionForType, getAppType, getArrFromEnum, getBookingStatusLabelForAdmin, getBotPath, getCalendarDropdownDisplayValue, getCalendarDropdownForDateOfBirthDisplayValue, getCommonConfig, getDayClassObject, getDayElements, getDayHeadingElements, getImageParams, getLog, getMembershipTypeLabel, getMimeTypeFromExtension, getPayloadFromJwt, getPerformanceTimer, getPetAvatarUrl, getPetTypeLabel, getQuestionGroups, getSiteColour, getSiteConfig, getUserAvatarUrl, getUsersName, getWeekNumber, hasRequiredPermissions, hubspotQuestionsExport, isBefore, isDateAfterStart, isDateBeforeEnd, isDateDisabledByDisabledDays, isDateEnabledByEnabledDays, isNumber, isSameDay, isWebApp, lowercaseFirstLetter, makeArrayOrDefault, maxDate, maxItems, maxLength, maxValue, mimeTypeLookup, minDate, minItems, minLength, minUrlLength, minValue, monthTranslationKeyOrder, multiValidation, nameof, nanasFonts, noValidation, notNull, onlyUnique, parseBookingOverviewStatuses, passwordValid, portalGlyphLength, postCodeValid, promiseFromValue, randomIntFromRange, randomItemFromArray, rootContainer, rootDependencyInjectionSetup, searchColumns, selectedItemsExist, selectedOptionIsInEnum, separateValidation, serializeBookingOverviewStatuses, setContainerToken, setContainerTokenLazy, setSiteConfig, shouldBeUrl, shouldBeYoutubeUrl, showSecondCalendar, socialLinks, timeout, tryParseNumber, uploadsThatNeedEncryption, urlAddQueryParam, urlRef, userMustChangePassword, uuidv4, validUuidChars, validateForEach, webAppTypes, weekdayTranslationKeyOrder };