kaafil-react-uikit 0.4.2 → 0.6.0

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 (49) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/admin/index.cjs +394 -355
  3. package/dist/admin/index.cjs.map +1 -1
  4. package/dist/admin/index.js +55 -16
  5. package/dist/admin/index.js.map +1 -1
  6. package/dist/{chunk-762SWUEG.js → chunk-4BPCKBLP.js} +3 -3
  7. package/dist/{chunk-762SWUEG.js.map → chunk-4BPCKBLP.js.map} +1 -1
  8. package/dist/{chunk-CK3L6Y43.cjs → chunk-4QMYUKW4.cjs} +10 -2
  9. package/dist/chunk-4QMYUKW4.cjs.map +1 -0
  10. package/dist/{chunk-LO3GQFQ6.cjs → chunk-53ITV6GF.cjs} +4 -4
  11. package/dist/{chunk-LO3GQFQ6.cjs.map → chunk-53ITV6GF.cjs.map} +1 -1
  12. package/dist/{chunk-V6UQ6GIM.cjs → chunk-77RKNRNH.cjs} +57 -58
  13. package/dist/chunk-77RKNRNH.cjs.map +1 -0
  14. package/dist/{chunk-DI77H7ED.cjs → chunk-AWOKWGTB.cjs} +83 -83
  15. package/dist/{chunk-DI77H7ED.cjs.map → chunk-AWOKWGTB.cjs.map} +1 -1
  16. package/dist/{chunk-EDLIJSMR.js → chunk-CJMUPBZ7.js} +5 -5
  17. package/dist/{chunk-EDLIJSMR.js.map → chunk-CJMUPBZ7.js.map} +1 -1
  18. package/dist/{chunk-ITGVRN2S.js → chunk-F6B4CDUL.js} +3 -3
  19. package/dist/{chunk-ITGVRN2S.js.map → chunk-F6B4CDUL.js.map} +1 -1
  20. package/dist/{chunk-XU7GP53M.js → chunk-F6YBM6EE.js} +3 -3
  21. package/dist/{chunk-XU7GP53M.js.map → chunk-F6YBM6EE.js.map} +1 -1
  22. package/dist/{chunk-QMUIZHJO.js → chunk-HNENKHHJ.js} +8 -9
  23. package/dist/chunk-HNENKHHJ.js.map +1 -0
  24. package/dist/{chunk-RW6TJMRK.js → chunk-JHLPO6LZ.js} +3 -3
  25. package/dist/{chunk-RW6TJMRK.js.map → chunk-JHLPO6LZ.js.map} +1 -1
  26. package/dist/{chunk-3RZDHDEY.cjs → chunk-OOHU3ECL.cjs} +17 -17
  27. package/dist/{chunk-3RZDHDEY.cjs.map → chunk-OOHU3ECL.cjs.map} +1 -1
  28. package/dist/{chunk-3E2FN5JJ.js → chunk-PWZNUXKT.js} +3 -3
  29. package/dist/{chunk-3E2FN5JJ.js.map → chunk-PWZNUXKT.js.map} +1 -1
  30. package/dist/{chunk-6FUVFVYY.js → chunk-SEPFCHBJ.js} +10 -2
  31. package/dist/chunk-SEPFCHBJ.js.map +1 -0
  32. package/dist/chunk-V45VFRBI.cjs +12 -0
  33. package/dist/{chunk-62HCQWZL.cjs.map → chunk-V45VFRBI.cjs.map} +1 -1
  34. package/dist/{chunk-QD4Z5DRT.cjs → chunk-XPCCR7OH.cjs} +12 -12
  35. package/dist/{chunk-QD4Z5DRT.cjs.map → chunk-XPCCR7OH.cjs.map} +1 -1
  36. package/dist/{chunk-XYIOM75D.cjs → chunk-XPF737RG.cjs} +9 -9
  37. package/dist/{chunk-XYIOM75D.cjs.map → chunk-XPF737RG.cjs.map} +1 -1
  38. package/dist/core/index.cjs +107 -107
  39. package/dist/core/index.js +10 -10
  40. package/dist/manager/index.cjs +239 -239
  41. package/dist/manager/index.js +6 -6
  42. package/dist/traveller/index.cjs +35 -35
  43. package/dist/traveller/index.js +5 -5
  44. package/package.json +2 -2
  45. package/dist/chunk-62HCQWZL.cjs +0 -12
  46. package/dist/chunk-6FUVFVYY.js.map +0 -1
  47. package/dist/chunk-CK3L6Y43.cjs.map +0 -1
  48. package/dist/chunk-QMUIZHJO.js.map +0 -1
  49. package/dist/chunk-V6UQ6GIM.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
- import { useAgencySettings, useAgencyChecklistTemplates, useAgencyForms, useAgencyManagerProfile, useAgencyJourneyTriggers, useBookings, useDirectories, useCapabilityStatuses, useAgencyTrip, useAgencyAdminMe, useTravellerFormResponses, useBuildShareUrl, familySafeSections, useShareLinks, usePaginatedList, useAgencyTrips, useAgencyTripManifest, resolveBlockerDeepLink } from '../chunk-QMUIZHJO.js';
2
- import { useChecklists, useFiles, useExpenses, useVendors, useFloat, useManagers, useForms, useItinerary, useCollections, useParties, usePickups, useRooming, useSeating, classifyError, useTravellerProfile, roomingHeuristicSeverity, useManagerToday, useCloseout, parseRoomingTone, TONE_FAMILIES, SHADES_PER_FAMILY, FALLBACK_GLYPH } from '../chunk-3E2FN5JJ.js';
3
- import '../chunk-ITGVRN2S.js';
4
- export { BootErrorScreen, LockedTripScreen, NotFoundScreen, OfflineFallbackScreen, PlanLockedScreen, SessionExpiredScreen } from '../chunk-762SWUEG.js';
5
- import { createRegistry, useKaafilChrome, tokenStyle, useSession, useKaafilClient } from '../chunk-6FUVFVYY.js';
1
+ import { useAgencySettings, useAgencyChecklistTemplates, useAgencyForms, useAgencyManagerProfile, useAgencyJourneyTriggers, useBookings, useDirectories, useCapabilityStatuses, useAgencyTrip, useAgencyAdminMe, useTravellerFormResponses, useBuildShareUrl, familySafeSections, useShareLinks, usePaginatedList, useAgencyTrips, useAgencyTripManifest, resolveBlockerDeepLink } from '../chunk-HNENKHHJ.js';
2
+ import { useChecklists, useFiles, useExpenses, useVendors, useFloat, useManagers, useForms, useItinerary, useCollections, useParties, usePickups, useRooming, useSeating, classifyError, useTravellerProfile, roomingHeuristicSeverity, useManagerToday, useCloseout, parseRoomingTone, TONE_FAMILIES, SHADES_PER_FAMILY, FALLBACK_GLYPH } from '../chunk-PWZNUXKT.js';
3
+ import '../chunk-F6B4CDUL.js';
4
+ export { BootErrorScreen, LockedTripScreen, NotFoundScreen, OfflineFallbackScreen, PlanLockedScreen, SessionExpiredScreen } from '../chunk-4BPCKBLP.js';
5
+ import { createRegistry, useKaafilChrome, tokenStyle, useSession, useKaafilClient } from '../chunk-SEPFCHBJ.js';
6
6
  import { useState, useEffect, useCallback, useMemo, useId, useRef, Children } from 'react';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
8
 
@@ -14444,6 +14444,7 @@ function deriveManifestGroups(rows) {
14444
14444
  }
14445
14445
  return groups;
14446
14446
  }
14447
+ var MIN_PARTY_MEMBERS = 2;
14447
14448
  var PARTY_KINDS = ["FAMILY", "COUPLE", "FRIENDS", "CORPORATE", "OTHER"];
14448
14449
  var KIND_LABEL_KEY = {
14449
14450
  FAMILY: "chrome.tripManifest.partyKind.family",
@@ -14461,19 +14462,21 @@ function EditPartyDialog({
14461
14462
  }) {
14462
14463
  const { t } = useKaafilChrome();
14463
14464
  const titleId = useId();
14464
- const { patchParty, deleteParty } = useDirectories();
14465
- const party = group.party;
14465
+ const { createParty, patchParty, deleteParty } = useDirectories();
14466
+ const party = group?.party ?? null;
14467
+ const creating = group === void 0;
14466
14468
  const [kind, setKind] = useState(
14467
14469
  party?.kind ?? "OTHER"
14468
14470
  );
14469
14471
  const [label, setLabel] = useState(party?.label ?? "");
14470
14472
  const [members, setMembers] = useState(
14471
- new Set(group.rows.map((row) => row.traveller.travellerId))
14473
+ new Set((group?.rows ?? []).map((row) => row.traveller.travellerId))
14472
14474
  );
14473
14475
  const [pending, setPending] = useState(false);
14474
14476
  const [errorCode, setErrorCode] = useState(void 0);
14475
- if (party === null) return null;
14477
+ if (!creating && party === null) return null;
14476
14478
  const editing = party;
14479
+ const enoughMembers = members.size >= MIN_PARTY_MEMBERS;
14477
14480
  function toggle(travellerId) {
14478
14481
  const next = new Set(members);
14479
14482
  if (next.has(travellerId)) next.delete(travellerId);
@@ -14489,6 +14492,16 @@ function EditPartyDialog({
14489
14492
  setErrorCode(void 0);
14490
14493
  try {
14491
14494
  const trimmed = label.trim();
14495
+ if (editing === null) {
14496
+ await createParty({
14497
+ tripRef,
14498
+ kind,
14499
+ ...trimmed.length === 0 ? {} : { label: trimmed },
14500
+ travellerRefs: [...members]
14501
+ });
14502
+ onSaved();
14503
+ return;
14504
+ }
14492
14505
  await patchParty({
14493
14506
  tripRef,
14494
14507
  partyId: editing.id,
@@ -14515,6 +14528,7 @@ function EditPartyDialog({
14515
14528
  setPending(true);
14516
14529
  setErrorCode(void 0);
14517
14530
  try {
14531
+ if (editing === null) return;
14518
14532
  await deleteParty({ tripRef, partyId: editing.id });
14519
14533
  onSaved();
14520
14534
  } catch (error) {
@@ -14527,8 +14541,12 @@ function EditPartyDialog({
14527
14541
  SheetDialog,
14528
14542
  {
14529
14543
  titleId,
14530
- title: t("chrome.tripManifest.editGroupTitle"),
14531
- description: t("chrome.tripManifest.editGroupBody"),
14544
+ title: t(
14545
+ creating ? "chrome.tripManifest.newGroupTitle" : "chrome.tripManifest.editGroupTitle"
14546
+ ),
14547
+ description: t(
14548
+ creating ? "chrome.tripManifest.newGroupBody" : "chrome.tripManifest.editGroupBody"
14549
+ ),
14532
14550
  onClose,
14533
14551
  closeLabel: t("chrome.tripManifest.close"),
14534
14552
  footer: /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -14548,13 +14566,13 @@ function EditPartyDialog({
14548
14566
  type: "button",
14549
14567
  className: "kf-trip-manifest-section__dialog-primary",
14550
14568
  onClick: () => void save(),
14551
- disabled: pending,
14552
- children: pending ? t("chrome.tripManifest.saving") : t("chrome.tripManifest.save")
14569
+ disabled: pending || creating && !enoughMembers,
14570
+ children: pending ? t("chrome.tripManifest.saving") : t(creating ? "chrome.tripManifest.createGroup" : "chrome.tripManifest.save")
14553
14571
  }
14554
14572
  )
14555
14573
  ] }),
14556
14574
  children: [
14557
- editing.source === "DERIVED" ? /* @__PURE__ */ jsx("p", { className: "kf-trip-manifest-section__dialog-note", "data-tone": "warn", children: t("chrome.tripManifest.pinNote") }) : null,
14575
+ editing !== null && editing.source === "DERIVED" ? /* @__PURE__ */ jsx("p", { className: "kf-trip-manifest-section__dialog-note", "data-tone": "warn", children: t("chrome.tripManifest.pinNote") }) : null,
14558
14576
  /* @__PURE__ */ jsxs("label", { className: "kf-trip-manifest-section__field", children: [
14559
14577
  /* @__PURE__ */ jsx("span", { className: "kf-trip-manifest-section__field-label", children: t("chrome.tripManifest.fieldGroupLabel") }),
14560
14578
  /* @__PURE__ */ jsx(
@@ -14603,7 +14621,7 @@ function EditPartyDialog({
14603
14621
  )) }),
14604
14622
  members.size < 2 ? /* @__PURE__ */ jsx("p", { className: "kf-trip-manifest-section__dialog-note", children: t("chrome.tripManifest.tooFewMembers") }) : null
14605
14623
  ] }),
14606
- /* @__PURE__ */ jsx("div", { className: "kf-trip-manifest-section__danger-lane", children: /* @__PURE__ */ jsx(
14624
+ creating ? null : /* @__PURE__ */ jsx("div", { className: "kf-trip-manifest-section__danger-lane", children: /* @__PURE__ */ jsx(
14607
14625
  "button",
14608
14626
  {
14609
14627
  type: "button",
@@ -16195,7 +16213,19 @@ function TripManifestSection({
16195
16213
  t("chrome.tripManifest.addTraveller")
16196
16214
  ]
16197
16215
  }
16198
- )
16216
+ ),
16217
+ visibleRows.length >= 2 ? /* @__PURE__ */ jsxs(
16218
+ "button",
16219
+ {
16220
+ type: "button",
16221
+ className: "kf-trip-manifest-section__toolbar-button",
16222
+ onClick: () => setOverlay({ kind: "newParty" }),
16223
+ children: [
16224
+ /* @__PURE__ */ jsx(PlusIcon7, {}),
16225
+ t("chrome.tripManifest.newGroup")
16226
+ ]
16227
+ }
16228
+ ) : null
16199
16229
  ] }),
16200
16230
  /* @__PURE__ */ jsx(
16201
16231
  ManifestResults,
@@ -16247,6 +16277,15 @@ function TripManifestSection({
16247
16277
  onSaved: afterWrite
16248
16278
  }
16249
16279
  ) : null,
16280
+ overlay.kind === "newParty" ? /* @__PURE__ */ jsx(
16281
+ EditPartyDialog,
16282
+ {
16283
+ tripRef,
16284
+ candidates: visibleRows,
16285
+ onClose: closeOverlay,
16286
+ onSaved: afterWrite
16287
+ }
16288
+ ) : null,
16250
16289
  overlay.kind === "shareFamily" ? /* @__PURE__ */ jsx(
16251
16290
  ShareLinkDialog,
16252
16291
  {