kaafil-react-uikit 0.8.0 → 0.10.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 (61) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/dist/admin/index.cjs +476 -362
  3. package/dist/admin/index.cjs.map +1 -1
  4. package/dist/admin/index.d.cts +112 -14
  5. package/dist/admin/index.d.ts +112 -14
  6. package/dist/admin/index.js +136 -22
  7. package/dist/admin/index.js.map +1 -1
  8. package/dist/{chunk-Q4B25EZO.js → chunk-2HGOHUFU.js} +3 -3
  9. package/dist/{chunk-Q4B25EZO.js.map → chunk-2HGOHUFU.js.map} +1 -1
  10. package/dist/{chunk-TDFM563X.cjs → chunk-AJEZMD64.cjs} +12 -12
  11. package/dist/{chunk-TDFM563X.cjs.map → chunk-AJEZMD64.cjs.map} +1 -1
  12. package/dist/{chunk-PQJGV3RE.cjs → chunk-APE4R2GB.cjs} +86 -86
  13. package/dist/chunk-APE4R2GB.cjs.map +1 -0
  14. package/dist/{chunk-7COMKJTM.cjs → chunk-BKDKXM3L.cjs} +11 -11
  15. package/dist/{chunk-7COMKJTM.cjs.map → chunk-BKDKXM3L.cjs.map} +1 -1
  16. package/dist/{chunk-7O3TPYK4.cjs → chunk-E6SI2S3L.cjs} +17 -17
  17. package/dist/{chunk-7O3TPYK4.cjs.map → chunk-E6SI2S3L.cjs.map} +1 -1
  18. package/dist/{chunk-YHGAFRN6.js → chunk-IDKRXLMY.js} +3 -3
  19. package/dist/{chunk-YHGAFRN6.js.map → chunk-IDKRXLMY.js.map} +1 -1
  20. package/dist/{chunk-4R7QBTNL.cjs → chunk-LYCN2BOH.cjs} +4 -4
  21. package/dist/{chunk-4R7QBTNL.cjs.map → chunk-LYCN2BOH.cjs.map} +1 -1
  22. package/dist/{chunk-57DYMIWS.js → chunk-OXCVTVBY.js} +5 -5
  23. package/dist/{chunk-57DYMIWS.js.map → chunk-OXCVTVBY.js.map} +1 -1
  24. package/dist/{chunk-ASFUY3IE.cjs → chunk-P5HF55MO.cjs} +12 -8
  25. package/dist/chunk-P5HF55MO.cjs.map +1 -0
  26. package/dist/chunk-PHVQIIOI.cjs +12 -0
  27. package/dist/{chunk-LBTAK5JA.cjs.map → chunk-PHVQIIOI.cjs.map} +1 -1
  28. package/dist/{chunk-VU5BCK2P.js → chunk-U2443I5Q.js} +6 -6
  29. package/dist/chunk-U2443I5Q.js.map +1 -0
  30. package/dist/{chunk-DYOAKTGJ.js → chunk-UMLJEBQV.js} +5 -5
  31. package/dist/{chunk-DYOAKTGJ.js.map → chunk-UMLJEBQV.js.map} +1 -1
  32. package/dist/{chunk-GKR52SVU.js → chunk-VAUGZOY6.js} +3 -3
  33. package/dist/{chunk-GKR52SVU.js.map → chunk-VAUGZOY6.js.map} +1 -1
  34. package/dist/{chunk-ZURCZQQ7.js → chunk-WMBFBZ7Q.js} +12 -8
  35. package/dist/chunk-WMBFBZ7Q.js.map +1 -0
  36. package/dist/{chunk-MP4IMAPF.cjs → chunk-X5EFVCYF.cjs} +55 -55
  37. package/dist/{chunk-MP4IMAPF.cjs.map → chunk-X5EFVCYF.cjs.map} +1 -1
  38. package/dist/{chunk-E3KOQYY2.js → chunk-ZVADVALQ.js} +5 -5
  39. package/dist/{chunk-E3KOQYY2.js.map → chunk-ZVADVALQ.js.map} +1 -1
  40. package/dist/core/index.cjs +107 -107
  41. package/dist/core/index.js +10 -10
  42. package/dist/manager/index.cjs +376 -264
  43. package/dist/manager/index.cjs.map +1 -1
  44. package/dist/manager/index.d.cts +152 -20
  45. package/dist/manager/index.d.ts +152 -20
  46. package/dist/manager/index.js +143 -31
  47. package/dist/manager/index.js.map +1 -1
  48. package/dist/offline/index.cjs +123 -0
  49. package/dist/offline/index.cjs.map +1 -0
  50. package/dist/offline/index.d.cts +177 -0
  51. package/dist/offline/index.d.ts +177 -0
  52. package/dist/offline/index.js +119 -0
  53. package/dist/offline/index.js.map +1 -0
  54. package/dist/traveller/index.cjs +35 -35
  55. package/dist/traveller/index.js +5 -5
  56. package/package.json +6 -1
  57. package/dist/chunk-ASFUY3IE.cjs.map +0 -1
  58. package/dist/chunk-LBTAK5JA.cjs +0 -12
  59. package/dist/chunk-PQJGV3RE.cjs.map +0 -1
  60. package/dist/chunk-VU5BCK2P.js.map +0 -1
  61. package/dist/chunk-ZURCZQQ7.js.map +0 -1
@@ -64,7 +64,14 @@ interface ManagerChecklistSectionProps {
64
64
  readonly style?: KaafilTokenOverrides;
65
65
  }
66
66
 
67
- declare function ManagerChecklistSection({ tripRef, components, style, }: ManagerChecklistSectionProps): ReactNode;
67
+ /**
68
+ * The session gate. `SessionShell` renders its children throughout the async
69
+ * open window with `SessionContext` populated but no client yet, so any
70
+ * client-backed hook below throws until the credential resolves. The split is
71
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
72
+ * in one component.
73
+ */
74
+ declare function ManagerChecklistSection(props: ManagerChecklistSectionProps): ReactNode;
68
75
 
69
76
  interface BlockerRowProps {
70
77
  readonly blocker: CloseoutBlockerRow;
@@ -94,21 +101,42 @@ interface ManagerCloseoutSectionProps {
94
101
  readonly style?: KaafilTokenOverrides;
95
102
  }
96
103
 
97
- declare function ManagerCloseoutSection({ tripRef, onBlockerAction, onSubmitUnlockRequest, components, style, }: ManagerCloseoutSectionProps): ReactNode;
104
+ /**
105
+ * The session gate. `SessionShell` renders its children throughout the async
106
+ * open window with `SessionContext` populated but no client yet, so any
107
+ * client-backed hook below throws until the credential resolves. The split is
108
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
109
+ * in one component.
110
+ */
111
+ declare function ManagerCloseoutSection(props: ManagerCloseoutSectionProps): ReactNode;
98
112
 
99
113
  interface ManagerDocumentsSectionProps {
100
114
  readonly tripRef: string;
101
115
  readonly style?: KaafilTokenOverrides;
102
116
  }
103
117
 
104
- declare function ManagerDocumentsSection({ tripRef, style, }: ManagerDocumentsSectionProps): ReactNode;
118
+ /**
119
+ * The session gate. `SessionShell` renders its children throughout the async
120
+ * open window with `SessionContext` populated but no client yet, so any
121
+ * client-backed hook below throws until the credential resolves. The split is
122
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
123
+ * in one component.
124
+ */
125
+ declare function ManagerDocumentsSection(props: ManagerDocumentsSectionProps): ReactNode;
105
126
 
106
127
  interface ManagerFloatLedgerSectionProps {
107
128
  readonly tripRef: string;
108
129
  readonly style?: KaafilTokenOverrides;
109
130
  }
110
131
 
111
- declare function ManagerFloatLedgerSection({ tripRef, style, }: ManagerFloatLedgerSectionProps): ReactNode;
132
+ /**
133
+ * The session gate. `SessionShell` renders its children throughout the async
134
+ * open window with `SessionContext` populated but no client yet, so any
135
+ * client-backed hook below throws until the credential resolves. The split is
136
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
137
+ * in one component.
138
+ */
139
+ declare function ManagerFloatLedgerSection(props: ManagerFloatLedgerSectionProps): ReactNode;
112
140
 
113
141
  /** One answer this composite is about to write back — mirrors
114
142
  * `SubmitFormResponseInput['answers'][number]` so nothing here hand-shapes
@@ -185,7 +213,14 @@ interface ManagerFormsSectionProps {
185
213
  readonly style?: KaafilTokenOverrides;
186
214
  }
187
215
 
188
- declare function ManagerFormsSection({ tripRef, initialFormRef, travellerRef, onSubmitted, components, style, }: ManagerFormsSectionProps): ReactNode;
216
+ /**
217
+ * The session gate. `SessionShell` renders its children throughout the async
218
+ * open window with `SessionContext` populated but no client yet, so any
219
+ * client-backed hook below throws until the credential resolves. The split is
220
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
221
+ * in one component.
222
+ */
223
+ declare function ManagerFormsSection(props: ManagerFormsSectionProps): ReactNode;
189
224
 
190
225
  interface DayStripProps {
191
226
  readonly days: readonly ItineraryDayRow[];
@@ -223,7 +258,14 @@ interface ManagerItinerarySectionProps {
223
258
  readonly style?: KaafilTokenOverrides;
224
259
  }
225
260
 
226
- declare function ManagerItinerarySection({ tripRef, emptyView, components, style, }: ManagerItinerarySectionProps): ReactNode;
261
+ /**
262
+ * The session gate. `SessionShell` renders its children throughout the async
263
+ * open window with `SessionContext` populated but no client yet, so any
264
+ * client-backed hook below throws until the credential resolves. The split is
265
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
266
+ * in one component.
267
+ */
268
+ declare function ManagerItinerarySection(props: ManagerItinerarySectionProps): ReactNode;
227
269
 
228
270
  interface TripBookingGroupCardProps {
229
271
  readonly group: ManifestBookingGroup;
@@ -318,7 +360,14 @@ interface ManifestBookingGroup {
318
360
  readonly currency: string;
319
361
  }
320
362
 
321
- declare function ManagerManifestSection({ tripRef, onCollectFromGroup, onOpenTraveller, emptyView, components, style, }: ManagerManifestSectionProps): ReactNode;
363
+ /**
364
+ * The session gate. `SessionShell` renders its children throughout the async
365
+ * open window with `SessionContext` populated but no client yet, so any
366
+ * client-backed hook below throws until the credential resolves. The split is
367
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
368
+ * in one component.
369
+ */
370
+ declare function ManagerManifestSection(props: ManagerManifestSectionProps): ReactNode;
322
371
 
323
372
  interface ManagerMeSectionProps {
324
373
  /** Fired when a recent-trip row is tapped — the host's own real
@@ -333,7 +382,14 @@ interface ManagerMeSectionProps {
333
382
  readonly style?: KaafilTokenOverrides;
334
383
  }
335
384
 
336
- declare function ManagerMeSection({ onOpenTrip, onSignOut, style, }: ManagerMeSectionProps): ReactNode;
385
+ /**
386
+ * The session gate. `SessionShell` renders its children throughout the async
387
+ * open window with `SessionContext` populated but no client yet, so any
388
+ * client-backed hook below throws until the credential resolves. The split is
389
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
390
+ * in one component.
391
+ */
392
+ declare function ManagerMeSection(props: ManagerMeSectionProps): ReactNode;
337
393
 
338
394
  interface BalanceDueDisplayRow {
339
395
  readonly travellerId: string;
@@ -404,7 +460,14 @@ interface ManagerMoneySectionProps {
404
460
  readonly style?: KaafilTokenOverrides;
405
461
  }
406
462
 
407
- declare function ManagerMoneySection({ tripRef, onViewFloatLedger, components, style, }: ManagerMoneySectionProps): ReactNode;
463
+ /**
464
+ * The session gate. `SessionShell` renders its children throughout the async
465
+ * open window with `SessionContext` populated but no client yet, so any
466
+ * client-backed hook below throws until the credential resolves. The split is
467
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
468
+ * in one component.
469
+ */
470
+ declare function ManagerMoneySection(props: ManagerMoneySectionProps): ReactNode;
408
471
 
409
472
  interface ManagerNotificationsSectionProps {
410
473
  /** Fired after a row marks itself read — the host decides what a non-null
@@ -419,7 +482,14 @@ interface ManagerNotificationsSectionProps {
419
482
  readonly style?: KaafilTokenOverrides;
420
483
  }
421
484
 
422
- declare function ManagerNotificationsSection({ onSelectNotification, style, }: ManagerNotificationsSectionProps): ReactNode;
485
+ /**
486
+ * The session gate. `SessionShell` renders its children throughout the async
487
+ * open window with `SessionContext` populated but no client yet, so any
488
+ * client-backed hook below throws until the credential resolves. The split is
489
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
490
+ * in one component.
491
+ */
492
+ declare function ManagerNotificationsSection(props: ManagerNotificationsSectionProps): ReactNode;
423
493
 
424
494
  type WireOnly<T> = T extends unknown ? Omit<T, 'status' | 'syncedAt'> : never;
425
495
  type ManagerTodayEngaged = Extract<WireOnly<ManagerTodayReady>, {
@@ -428,6 +498,13 @@ type ManagerTodayEngaged = Extract<WireOnly<ManagerTodayReady>, {
428
498
  type ManagerTodayIdle = Extract<WireOnly<ManagerTodayReady>, {
429
499
  kind: 'idle';
430
500
  }>;
501
+ /** The module a hero quick-link chip (or the closeout card's "still need
502
+ * closing" row) navigates to. Named rather than inlined because
503
+ * `KaafilManagerApp` maps every member onto a real `ManagerTripTabKey` and
504
+ * needs to refer to the union where its own `onNavigateModule` is optional —
505
+ * `Parameters<typeof onNavigateModule>[0]` cannot narrow through an optional
506
+ * prop. */
507
+ type ManagerModuleKey = 'manifest' | 'rooming' | 'checklist' | 'docs' | 'closing-day';
431
508
  interface ManagerNowSectionProps {
432
509
  /** The trip this section reads `useManagerToday(tripRef)` for — resolved
433
510
  * by the caller, typically off `useManagerMe()`'s own `defaultTripId`. */
@@ -438,7 +515,7 @@ interface ManagerNowSectionProps {
438
515
  * where each key routes to; a module whose composite doesn't exist yet
439
516
  * (`'closing-day'` included — `ClosingDayFlow` is a later wave) still
440
517
  * fires this callback, so the host can no-op it until it does. */
441
- readonly onNavigateModule: (moduleKey: 'manifest' | 'rooming' | 'checklist' | 'docs' | 'closing-day') => void;
518
+ readonly onNavigateModule: (moduleKey: ManagerModuleKey) => void;
442
519
  /** Fired once a Quick Actions "Log an expense" submit REALLY succeeds
443
520
  * (the FAB opens a real `LogExpenseSheet` internally, backed by
444
521
  * `useExpenses(tripRef).log()` — the same sheet `ManagerMoneySection`'s
@@ -472,7 +549,14 @@ interface ManagerOverviewSectionProps {
472
549
  readonly style?: KaafilTokenOverrides;
473
550
  }
474
551
 
475
- declare function ManagerOverviewSection({ tripRef, style }: ManagerOverviewSectionProps): ReactNode;
552
+ /**
553
+ * The session gate. `SessionShell` renders its children throughout the async
554
+ * open window with `SessionContext` populated but no client yet, so any
555
+ * client-backed hook below throws until the credential resolves. The split is
556
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
557
+ * in one component.
558
+ */
559
+ declare function ManagerOverviewSection(props: ManagerOverviewSectionProps): ReactNode;
476
560
 
477
561
  interface CloseStopResolution {
478
562
  readonly travellerId: string;
@@ -526,7 +610,14 @@ interface ManagerPickupsSectionProps {
526
610
  readonly style?: KaafilTokenOverrides;
527
611
  }
528
612
 
529
- declare function ManagerPickupsSection({ tripRef, eventType, components, style, }: ManagerPickupsSectionProps): ReactNode;
613
+ /**
614
+ * The session gate. `SessionShell` renders its children throughout the async
615
+ * open window with `SessionContext` populated but no client yet, so any
616
+ * client-backed hook below throws until the credential resolves. The split is
617
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
618
+ * in one component.
619
+ */
620
+ declare function ManagerPickupsSection(props: ManagerPickupsSectionProps): ReactNode;
530
621
 
531
622
  interface RoomCardProps {
532
623
  readonly room: RoomingRoom;
@@ -588,7 +679,14 @@ interface ManagerRoomingSectionProps {
588
679
  readonly style?: KaafilTokenOverrides;
589
680
  }
590
681
 
591
- declare function ManagerRoomingSection({ tripRef, onOpenTraveller, emptyView, components, style, }: ManagerRoomingSectionProps): ReactNode;
682
+ /**
683
+ * The session gate. `SessionShell` renders its children throughout the async
684
+ * open window with `SessionContext` populated but no client yet, so any
685
+ * client-backed hook below throws until the credential resolves. The split is
686
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
687
+ * in one component.
688
+ */
689
+ declare function ManagerRoomingSection(props: ManagerRoomingSectionProps): ReactNode;
592
690
 
593
691
  interface ManagerRosterSectionProps {
594
692
  readonly tripRef: string;
@@ -599,7 +697,14 @@ interface ManagerRosterSectionProps {
599
697
  readonly style?: KaafilTokenOverrides;
600
698
  }
601
699
 
602
- declare function ManagerRosterSection({ tripRef, onOpenTraveller, style, }: ManagerRosterSectionProps): ReactNode;
700
+ /**
701
+ * The session gate. `SessionShell` renders its children throughout the async
702
+ * open window with `SessionContext` populated but no client yet, so any
703
+ * client-backed hook below throws until the credential resolves. The split is
704
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
705
+ * in one component.
706
+ */
707
+ declare function ManagerRosterSection(props: ManagerRosterSectionProps): ReactNode;
603
708
 
604
709
  interface ManagerSyncCenterSectionProps {
605
710
  /** Scopes the itemized outbox view to one trip's own lane — the real
@@ -684,7 +789,14 @@ interface ManagerTravellerProfileSectionProps {
684
789
  readonly style?: KaafilTokenOverrides;
685
790
  }
686
791
 
687
- declare function ManagerTravellerProfileSection({ tripRef, travellerRef, components, style, }: ManagerTravellerProfileSectionProps): ReactNode;
792
+ /**
793
+ * The session gate. `SessionShell` renders its children throughout the async
794
+ * open window with `SessionContext` populated but no client yet, so any
795
+ * client-backed hook below throws until the credential resolves. The split is
796
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
797
+ * in one component.
798
+ */
799
+ declare function ManagerTravellerProfileSection(props: ManagerTravellerProfileSectionProps): ReactNode;
688
800
 
689
801
  /** The one real trip-vs-trek field (`Trip.eventType`, no third value) —
690
802
  * derived structurally off `useManagerMe()`'s own trip row so this file
@@ -813,7 +925,14 @@ interface ManagerVehiclesSectionProps {
813
925
  readonly style?: KaafilTokenOverrides;
814
926
  }
815
927
 
816
- declare function ManagerVehiclesSection({ tripRef, onOpenTraveller, emptyView, components, style, }: ManagerVehiclesSectionProps): ReactNode;
928
+ /**
929
+ * The session gate. `SessionShell` renders its children throughout the async
930
+ * open window with `SessionContext` populated but no client yet, so any
931
+ * client-backed hook below throws until the credential resolves. The split is
932
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
933
+ * in one component.
934
+ */
935
+ declare function ManagerVehiclesSection(props: ManagerVehiclesSectionProps): ReactNode;
817
936
 
818
937
  interface VendorListSectionProps {
819
938
  readonly vendors: readonly TripVendorRow[];
@@ -851,7 +970,14 @@ interface ManagerVendorsSectionProps {
851
970
  readonly style?: KaafilTokenOverrides;
852
971
  }
853
972
 
854
- declare function ManagerVendorsSection({ tripRef, category, onVendorSelect, emptyView, components, style, }: ManagerVendorsSectionProps): ReactNode;
973
+ /**
974
+ * The session gate. `SessionShell` renders its children throughout the async
975
+ * open window with `SessionContext` populated but no client yet, so any
976
+ * client-backed hook below throws until the credential resolves. The split is
977
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
978
+ * in one component.
979
+ */
980
+ declare function ManagerVendorsSection(props: ManagerVendorsSectionProps): ReactNode;
855
981
 
856
982
  /** The 3 bottom-nav destinations this Surface owns — Trip/Trek merge into
857
983
  * one tab (icon/label switch off the selected trip's real `eventType`),
@@ -883,8 +1009,14 @@ interface KaafilManagerAppProps {
883
1009
  * deep-linking level below `initialTripRef`/`activeTab` (e.g. landing
884
1010
  * directly on the Money tab from a push notification). */
885
1011
  readonly initialTripTabKey?: ManagerTripTabKey;
886
- /** `ManagerNowSection.onNavigateModule` (required there). */
887
- readonly onNavigateModule: (moduleKey: 'manifest' | 'rooming' | 'checklist' | 'docs' | 'closing-day') => void;
1012
+ /** An analytics/URL-sync MIRROR, not the navigation itself — optional for
1013
+ * the same reason `onOpenTraveller` is, and unlike the four required
1014
+ * callbacks below. `ManagerNowSection.onNavigateModule` is required there
1015
+ * and is satisfied by this Surface's own `handleNavigateModule`, which maps
1016
+ * every key onto a real `ManagerTripTabKey` and performs the navigation
1017
+ * directly. Omit it and the quick-link chips still work; you lose only the
1018
+ * host-side hook. */
1019
+ readonly onNavigateModule?: (moduleKey: ManagerModuleKey) => void;
888
1020
  /** → `ManagerNowSection.onLogExpense` (required there). */
889
1021
  readonly onLogExpense: () => void;
890
1022
  /** → `ManagerNowSection.onCollectPayment` (required there). */
@@ -64,7 +64,14 @@ interface ManagerChecklistSectionProps {
64
64
  readonly style?: KaafilTokenOverrides;
65
65
  }
66
66
 
67
- declare function ManagerChecklistSection({ tripRef, components, style, }: ManagerChecklistSectionProps): ReactNode;
67
+ /**
68
+ * The session gate. `SessionShell` renders its children throughout the async
69
+ * open window with `SessionContext` populated but no client yet, so any
70
+ * client-backed hook below throws until the credential resolves. The split is
71
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
72
+ * in one component.
73
+ */
74
+ declare function ManagerChecklistSection(props: ManagerChecklistSectionProps): ReactNode;
68
75
 
69
76
  interface BlockerRowProps {
70
77
  readonly blocker: CloseoutBlockerRow;
@@ -94,21 +101,42 @@ interface ManagerCloseoutSectionProps {
94
101
  readonly style?: KaafilTokenOverrides;
95
102
  }
96
103
 
97
- declare function ManagerCloseoutSection({ tripRef, onBlockerAction, onSubmitUnlockRequest, components, style, }: ManagerCloseoutSectionProps): ReactNode;
104
+ /**
105
+ * The session gate. `SessionShell` renders its children throughout the async
106
+ * open window with `SessionContext` populated but no client yet, so any
107
+ * client-backed hook below throws until the credential resolves. The split is
108
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
109
+ * in one component.
110
+ */
111
+ declare function ManagerCloseoutSection(props: ManagerCloseoutSectionProps): ReactNode;
98
112
 
99
113
  interface ManagerDocumentsSectionProps {
100
114
  readonly tripRef: string;
101
115
  readonly style?: KaafilTokenOverrides;
102
116
  }
103
117
 
104
- declare function ManagerDocumentsSection({ tripRef, style, }: ManagerDocumentsSectionProps): ReactNode;
118
+ /**
119
+ * The session gate. `SessionShell` renders its children throughout the async
120
+ * open window with `SessionContext` populated but no client yet, so any
121
+ * client-backed hook below throws until the credential resolves. The split is
122
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
123
+ * in one component.
124
+ */
125
+ declare function ManagerDocumentsSection(props: ManagerDocumentsSectionProps): ReactNode;
105
126
 
106
127
  interface ManagerFloatLedgerSectionProps {
107
128
  readonly tripRef: string;
108
129
  readonly style?: KaafilTokenOverrides;
109
130
  }
110
131
 
111
- declare function ManagerFloatLedgerSection({ tripRef, style, }: ManagerFloatLedgerSectionProps): ReactNode;
132
+ /**
133
+ * The session gate. `SessionShell` renders its children throughout the async
134
+ * open window with `SessionContext` populated but no client yet, so any
135
+ * client-backed hook below throws until the credential resolves. The split is
136
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
137
+ * in one component.
138
+ */
139
+ declare function ManagerFloatLedgerSection(props: ManagerFloatLedgerSectionProps): ReactNode;
112
140
 
113
141
  /** One answer this composite is about to write back — mirrors
114
142
  * `SubmitFormResponseInput['answers'][number]` so nothing here hand-shapes
@@ -185,7 +213,14 @@ interface ManagerFormsSectionProps {
185
213
  readonly style?: KaafilTokenOverrides;
186
214
  }
187
215
 
188
- declare function ManagerFormsSection({ tripRef, initialFormRef, travellerRef, onSubmitted, components, style, }: ManagerFormsSectionProps): ReactNode;
216
+ /**
217
+ * The session gate. `SessionShell` renders its children throughout the async
218
+ * open window with `SessionContext` populated but no client yet, so any
219
+ * client-backed hook below throws until the credential resolves. The split is
220
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
221
+ * in one component.
222
+ */
223
+ declare function ManagerFormsSection(props: ManagerFormsSectionProps): ReactNode;
189
224
 
190
225
  interface DayStripProps {
191
226
  readonly days: readonly ItineraryDayRow[];
@@ -223,7 +258,14 @@ interface ManagerItinerarySectionProps {
223
258
  readonly style?: KaafilTokenOverrides;
224
259
  }
225
260
 
226
- declare function ManagerItinerarySection({ tripRef, emptyView, components, style, }: ManagerItinerarySectionProps): ReactNode;
261
+ /**
262
+ * The session gate. `SessionShell` renders its children throughout the async
263
+ * open window with `SessionContext` populated but no client yet, so any
264
+ * client-backed hook below throws until the credential resolves. The split is
265
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
266
+ * in one component.
267
+ */
268
+ declare function ManagerItinerarySection(props: ManagerItinerarySectionProps): ReactNode;
227
269
 
228
270
  interface TripBookingGroupCardProps {
229
271
  readonly group: ManifestBookingGroup;
@@ -318,7 +360,14 @@ interface ManifestBookingGroup {
318
360
  readonly currency: string;
319
361
  }
320
362
 
321
- declare function ManagerManifestSection({ tripRef, onCollectFromGroup, onOpenTraveller, emptyView, components, style, }: ManagerManifestSectionProps): ReactNode;
363
+ /**
364
+ * The session gate. `SessionShell` renders its children throughout the async
365
+ * open window with `SessionContext` populated but no client yet, so any
366
+ * client-backed hook below throws until the credential resolves. The split is
367
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
368
+ * in one component.
369
+ */
370
+ declare function ManagerManifestSection(props: ManagerManifestSectionProps): ReactNode;
322
371
 
323
372
  interface ManagerMeSectionProps {
324
373
  /** Fired when a recent-trip row is tapped — the host's own real
@@ -333,7 +382,14 @@ interface ManagerMeSectionProps {
333
382
  readonly style?: KaafilTokenOverrides;
334
383
  }
335
384
 
336
- declare function ManagerMeSection({ onOpenTrip, onSignOut, style, }: ManagerMeSectionProps): ReactNode;
385
+ /**
386
+ * The session gate. `SessionShell` renders its children throughout the async
387
+ * open window with `SessionContext` populated but no client yet, so any
388
+ * client-backed hook below throws until the credential resolves. The split is
389
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
390
+ * in one component.
391
+ */
392
+ declare function ManagerMeSection(props: ManagerMeSectionProps): ReactNode;
337
393
 
338
394
  interface BalanceDueDisplayRow {
339
395
  readonly travellerId: string;
@@ -404,7 +460,14 @@ interface ManagerMoneySectionProps {
404
460
  readonly style?: KaafilTokenOverrides;
405
461
  }
406
462
 
407
- declare function ManagerMoneySection({ tripRef, onViewFloatLedger, components, style, }: ManagerMoneySectionProps): ReactNode;
463
+ /**
464
+ * The session gate. `SessionShell` renders its children throughout the async
465
+ * open window with `SessionContext` populated but no client yet, so any
466
+ * client-backed hook below throws until the credential resolves. The split is
467
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
468
+ * in one component.
469
+ */
470
+ declare function ManagerMoneySection(props: ManagerMoneySectionProps): ReactNode;
408
471
 
409
472
  interface ManagerNotificationsSectionProps {
410
473
  /** Fired after a row marks itself read — the host decides what a non-null
@@ -419,7 +482,14 @@ interface ManagerNotificationsSectionProps {
419
482
  readonly style?: KaafilTokenOverrides;
420
483
  }
421
484
 
422
- declare function ManagerNotificationsSection({ onSelectNotification, style, }: ManagerNotificationsSectionProps): ReactNode;
485
+ /**
486
+ * The session gate. `SessionShell` renders its children throughout the async
487
+ * open window with `SessionContext` populated but no client yet, so any
488
+ * client-backed hook below throws until the credential resolves. The split is
489
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
490
+ * in one component.
491
+ */
492
+ declare function ManagerNotificationsSection(props: ManagerNotificationsSectionProps): ReactNode;
423
493
 
424
494
  type WireOnly<T> = T extends unknown ? Omit<T, 'status' | 'syncedAt'> : never;
425
495
  type ManagerTodayEngaged = Extract<WireOnly<ManagerTodayReady>, {
@@ -428,6 +498,13 @@ type ManagerTodayEngaged = Extract<WireOnly<ManagerTodayReady>, {
428
498
  type ManagerTodayIdle = Extract<WireOnly<ManagerTodayReady>, {
429
499
  kind: 'idle';
430
500
  }>;
501
+ /** The module a hero quick-link chip (or the closeout card's "still need
502
+ * closing" row) navigates to. Named rather than inlined because
503
+ * `KaafilManagerApp` maps every member onto a real `ManagerTripTabKey` and
504
+ * needs to refer to the union where its own `onNavigateModule` is optional —
505
+ * `Parameters<typeof onNavigateModule>[0]` cannot narrow through an optional
506
+ * prop. */
507
+ type ManagerModuleKey = 'manifest' | 'rooming' | 'checklist' | 'docs' | 'closing-day';
431
508
  interface ManagerNowSectionProps {
432
509
  /** The trip this section reads `useManagerToday(tripRef)` for — resolved
433
510
  * by the caller, typically off `useManagerMe()`'s own `defaultTripId`. */
@@ -438,7 +515,7 @@ interface ManagerNowSectionProps {
438
515
  * where each key routes to; a module whose composite doesn't exist yet
439
516
  * (`'closing-day'` included — `ClosingDayFlow` is a later wave) still
440
517
  * fires this callback, so the host can no-op it until it does. */
441
- readonly onNavigateModule: (moduleKey: 'manifest' | 'rooming' | 'checklist' | 'docs' | 'closing-day') => void;
518
+ readonly onNavigateModule: (moduleKey: ManagerModuleKey) => void;
442
519
  /** Fired once a Quick Actions "Log an expense" submit REALLY succeeds
443
520
  * (the FAB opens a real `LogExpenseSheet` internally, backed by
444
521
  * `useExpenses(tripRef).log()` — the same sheet `ManagerMoneySection`'s
@@ -472,7 +549,14 @@ interface ManagerOverviewSectionProps {
472
549
  readonly style?: KaafilTokenOverrides;
473
550
  }
474
551
 
475
- declare function ManagerOverviewSection({ tripRef, style }: ManagerOverviewSectionProps): ReactNode;
552
+ /**
553
+ * The session gate. `SessionShell` renders its children throughout the async
554
+ * open window with `SessionContext` populated but no client yet, so any
555
+ * client-backed hook below throws until the credential resolves. The split is
556
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
557
+ * in one component.
558
+ */
559
+ declare function ManagerOverviewSection(props: ManagerOverviewSectionProps): ReactNode;
476
560
 
477
561
  interface CloseStopResolution {
478
562
  readonly travellerId: string;
@@ -526,7 +610,14 @@ interface ManagerPickupsSectionProps {
526
610
  readonly style?: KaafilTokenOverrides;
527
611
  }
528
612
 
529
- declare function ManagerPickupsSection({ tripRef, eventType, components, style, }: ManagerPickupsSectionProps): ReactNode;
613
+ /**
614
+ * The session gate. `SessionShell` renders its children throughout the async
615
+ * open window with `SessionContext` populated but no client yet, so any
616
+ * client-backed hook below throws until the credential resolves. The split is
617
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
618
+ * in one component.
619
+ */
620
+ declare function ManagerPickupsSection(props: ManagerPickupsSectionProps): ReactNode;
530
621
 
531
622
  interface RoomCardProps {
532
623
  readonly room: RoomingRoom;
@@ -588,7 +679,14 @@ interface ManagerRoomingSectionProps {
588
679
  readonly style?: KaafilTokenOverrides;
589
680
  }
590
681
 
591
- declare function ManagerRoomingSection({ tripRef, onOpenTraveller, emptyView, components, style, }: ManagerRoomingSectionProps): ReactNode;
682
+ /**
683
+ * The session gate. `SessionShell` renders its children throughout the async
684
+ * open window with `SessionContext` populated but no client yet, so any
685
+ * client-backed hook below throws until the credential resolves. The split is
686
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
687
+ * in one component.
688
+ */
689
+ declare function ManagerRoomingSection(props: ManagerRoomingSectionProps): ReactNode;
592
690
 
593
691
  interface ManagerRosterSectionProps {
594
692
  readonly tripRef: string;
@@ -599,7 +697,14 @@ interface ManagerRosterSectionProps {
599
697
  readonly style?: KaafilTokenOverrides;
600
698
  }
601
699
 
602
- declare function ManagerRosterSection({ tripRef, onOpenTraveller, style, }: ManagerRosterSectionProps): ReactNode;
700
+ /**
701
+ * The session gate. `SessionShell` renders its children throughout the async
702
+ * open window with `SessionContext` populated but no client yet, so any
703
+ * client-backed hook below throws until the credential resolves. The split is
704
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
705
+ * in one component.
706
+ */
707
+ declare function ManagerRosterSection(props: ManagerRosterSectionProps): ReactNode;
603
708
 
604
709
  interface ManagerSyncCenterSectionProps {
605
710
  /** Scopes the itemized outbox view to one trip's own lane — the real
@@ -684,7 +789,14 @@ interface ManagerTravellerProfileSectionProps {
684
789
  readonly style?: KaafilTokenOverrides;
685
790
  }
686
791
 
687
- declare function ManagerTravellerProfileSection({ tripRef, travellerRef, components, style, }: ManagerTravellerProfileSectionProps): ReactNode;
792
+ /**
793
+ * The session gate. `SessionShell` renders its children throughout the async
794
+ * open window with `SessionContext` populated but no client yet, so any
795
+ * client-backed hook below throws until the credential resolves. The split is
796
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
797
+ * in one component.
798
+ */
799
+ declare function ManagerTravellerProfileSection(props: ManagerTravellerProfileSectionProps): ReactNode;
688
800
 
689
801
  /** The one real trip-vs-trek field (`Trip.eventType`, no third value) —
690
802
  * derived structurally off `useManagerMe()`'s own trip row so this file
@@ -813,7 +925,14 @@ interface ManagerVehiclesSectionProps {
813
925
  readonly style?: KaafilTokenOverrides;
814
926
  }
815
927
 
816
- declare function ManagerVehiclesSection({ tripRef, onOpenTraveller, emptyView, components, style, }: ManagerVehiclesSectionProps): ReactNode;
928
+ /**
929
+ * The session gate. `SessionShell` renders its children throughout the async
930
+ * open window with `SessionContext` populated but no client yet, so any
931
+ * client-backed hook below throws until the credential resolves. The split is
932
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
933
+ * in one component.
934
+ */
935
+ declare function ManagerVehiclesSection(props: ManagerVehiclesSectionProps): ReactNode;
817
936
 
818
937
  interface VendorListSectionProps {
819
938
  readonly vendors: readonly TripVendorRow[];
@@ -851,7 +970,14 @@ interface ManagerVendorsSectionProps {
851
970
  readonly style?: KaafilTokenOverrides;
852
971
  }
853
972
 
854
- declare function ManagerVendorsSection({ tripRef, category, onVendorSelect, emptyView, components, style, }: ManagerVendorsSectionProps): ReactNode;
973
+ /**
974
+ * The session gate. `SessionShell` renders its children throughout the async
975
+ * open window with `SessionContext` populated but no client yet, so any
976
+ * client-backed hook below throws until the credential resolves. The split is
977
+ * not optional: Rules of Hooks forbid returning early before the inner hooks
978
+ * in one component.
979
+ */
980
+ declare function ManagerVendorsSection(props: ManagerVendorsSectionProps): ReactNode;
855
981
 
856
982
  /** The 3 bottom-nav destinations this Surface owns — Trip/Trek merge into
857
983
  * one tab (icon/label switch off the selected trip's real `eventType`),
@@ -883,8 +1009,14 @@ interface KaafilManagerAppProps {
883
1009
  * deep-linking level below `initialTripRef`/`activeTab` (e.g. landing
884
1010
  * directly on the Money tab from a push notification). */
885
1011
  readonly initialTripTabKey?: ManagerTripTabKey;
886
- /** `ManagerNowSection.onNavigateModule` (required there). */
887
- readonly onNavigateModule: (moduleKey: 'manifest' | 'rooming' | 'checklist' | 'docs' | 'closing-day') => void;
1012
+ /** An analytics/URL-sync MIRROR, not the navigation itself — optional for
1013
+ * the same reason `onOpenTraveller` is, and unlike the four required
1014
+ * callbacks below. `ManagerNowSection.onNavigateModule` is required there
1015
+ * and is satisfied by this Surface's own `handleNavigateModule`, which maps
1016
+ * every key onto a real `ManagerTripTabKey` and performs the navigation
1017
+ * directly. Omit it and the quick-link chips still work; you lose only the
1018
+ * host-side hook. */
1019
+ readonly onNavigateModule?: (moduleKey: ManagerModuleKey) => void;
888
1020
  /** → `ManagerNowSection.onLogExpense` (required there). */
889
1021
  readonly onLogExpense: () => void;
890
1022
  /** → `ManagerNowSection.onCollectPayment` (required there). */