kaafil-react-uikit 0.1.0-beta.1

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 (79) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/LICENSE +21 -0
  3. package/README.md +187 -0
  4. package/dist/OfflineFallbackScreen-B5dfaJBN.d.ts +37 -0
  5. package/dist/OfflineFallbackScreen-Ctm7nBa-.d.cts +37 -0
  6. package/dist/SessionExpiredScreen-CytQNuak.d.cts +50 -0
  7. package/dist/SessionExpiredScreen-D8GHyZc3.d.ts +50 -0
  8. package/dist/admin/index.cjs +23779 -0
  9. package/dist/admin/index.cjs.map +1 -0
  10. package/dist/admin/index.d.cts +1157 -0
  11. package/dist/admin/index.d.ts +1157 -0
  12. package/dist/admin/index.js +23724 -0
  13. package/dist/admin/index.js.map +1 -0
  14. package/dist/chunk-6FPAGGFL.js +6028 -0
  15. package/dist/chunk-6FPAGGFL.js.map +1 -0
  16. package/dist/chunk-ACVU55PZ.cjs +294 -0
  17. package/dist/chunk-ACVU55PZ.cjs.map +1 -0
  18. package/dist/chunk-EM7JV3D7.cjs +6051 -0
  19. package/dist/chunk-EM7JV3D7.cjs.map +1 -0
  20. package/dist/chunk-IIPQ4JNC.js +287 -0
  21. package/dist/chunk-IIPQ4JNC.js.map +1 -0
  22. package/dist/chunk-LL243STJ.cjs +2195 -0
  23. package/dist/chunk-LL243STJ.cjs.map +1 -0
  24. package/dist/chunk-PJRZCOFF.cjs +958 -0
  25. package/dist/chunk-PJRZCOFF.cjs.map +1 -0
  26. package/dist/chunk-PTQ2CJKE.cjs +40 -0
  27. package/dist/chunk-PTQ2CJKE.cjs.map +1 -0
  28. package/dist/chunk-PZKXLQSU.js +10 -0
  29. package/dist/chunk-PZKXLQSU.js.map +1 -0
  30. package/dist/chunk-QHUDOVKW.cjs +111 -0
  31. package/dist/chunk-QHUDOVKW.cjs.map +1 -0
  32. package/dist/chunk-TOBZFADB.cjs +12 -0
  33. package/dist/chunk-TOBZFADB.cjs.map +1 -0
  34. package/dist/chunk-UUGMNP27.js +936 -0
  35. package/dist/chunk-UUGMNP27.js.map +1 -0
  36. package/dist/chunk-UYJ6LIWP.js +2154 -0
  37. package/dist/chunk-UYJ6LIWP.js.map +1 -0
  38. package/dist/chunk-VHTSTUCJ.cjs +346 -0
  39. package/dist/chunk-VHTSTUCJ.cjs.map +1 -0
  40. package/dist/chunk-WUAFL77X.js +340 -0
  41. package/dist/chunk-WUAFL77X.js.map +1 -0
  42. package/dist/chunk-XI7MK4Y7.js +38 -0
  43. package/dist/chunk-XI7MK4Y7.js.map +1 -0
  44. package/dist/chunk-YDGR7JSY.js +107 -0
  45. package/dist/chunk-YDGR7JSY.js.map +1 -0
  46. package/dist/core/index.cjs +1254 -0
  47. package/dist/core/index.cjs.map +1 -0
  48. package/dist/core/index.d.cts +1267 -0
  49. package/dist/core/index.d.ts +1267 -0
  50. package/dist/core/index.js +995 -0
  51. package/dist/core/index.js.map +1 -0
  52. package/dist/index.css +1 -0
  53. package/dist/manager/index.cjs +13562 -0
  54. package/dist/manager/index.cjs.map +1 -0
  55. package/dist/manager/index.d.cts +1054 -0
  56. package/dist/manager/index.d.ts +1054 -0
  57. package/dist/manager/index.js +13518 -0
  58. package/dist/manager/index.js.map +1 -0
  59. package/dist/testing/index.cjs +221 -0
  60. package/dist/testing/index.cjs.map +1 -0
  61. package/dist/testing/index.d.cts +269 -0
  62. package/dist/testing/index.d.ts +269 -0
  63. package/dist/testing/index.js +208 -0
  64. package/dist/testing/index.js.map +1 -0
  65. package/dist/tokenStyle-CToG5oOS.d.cts +3 -0
  66. package/dist/tokenStyle-CToG5oOS.d.ts +3 -0
  67. package/dist/traveller/index.cjs +1799 -0
  68. package/dist/traveller/index.cjs.map +1 -0
  69. package/dist/traveller/index.d.cts +58 -0
  70. package/dist/traveller/index.d.ts +58 -0
  71. package/dist/traveller/index.js +1789 -0
  72. package/dist/traveller/index.js.map +1 -0
  73. package/dist/useAgencyTrip-BUYSIaC2.d.cts +454 -0
  74. package/dist/useAgencyTrip-BzyJB1D9.d.ts +454 -0
  75. package/dist/useNotifications-BZW1Z_ur.d.cts +356 -0
  76. package/dist/useNotifications-D262i5BQ.d.ts +356 -0
  77. package/dist/useVendors-DXOuZWhZ.d.cts +784 -0
  78. package/dist/useVendors-DXOuZWhZ.d.ts +784 -0
  79. package/package.json +95 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/manager/composite/office/ManagerChecklistSection/internal/deriveChecklist.ts","../../src/manager/composite/office/ManagerChecklistSection/internal/icons.tsx","../../src/manager/composite/office/ManagerChecklistSection/internal/AddItemSheet.tsx","../../src/manager/composite/office/ManagerChecklistSection/internal/EditItemSheet.tsx","../../src/manager/composite/office/ManagerChecklistSection/internal/ItemRow.tsx","../../src/manager/composite/office/ManagerChecklistSection/internal/ProgressCard.tsx","../../src/manager/composite/office/ManagerChecklistSection/internal/PullTemplateSheet.tsx","../../src/manager/composite/office/ManagerChecklistSection/internal/SectionCard.tsx","../../src/manager/composite/office/ManagerChecklistSection/ManagerChecklistSection.tsx","../../src/manager/composite/office/ManagerCloseoutSection/internal/deriveBlockers.ts","../../src/manager/composite/office/ManagerCloseoutSection/internal/icons.tsx","../../src/manager/composite/office/ManagerCloseoutSection/internal/BlockerRow.tsx","../../src/manager/composite/office/ManagerCloseoutSection/internal/HandoverNoteEditor.tsx","../../src/manager/internal/formatMoney.ts","../../src/manager/composite/office/ManagerCloseoutSection/internal/LockConfirmSheet.tsx","../../src/manager/composite/office/ManagerCloseoutSection/internal/formatCloseoutDate.ts","../../src/manager/composite/office/ManagerCloseoutSection/internal/LockedSummary.tsx","../../src/manager/composite/office/ManagerCloseoutSection/internal/StageStrip.tsx","../../src/manager/composite/office/ManagerCloseoutSection/internal/UnlockRequestForm.tsx","../../src/manager/composite/office/ManagerCloseoutSection/ManagerCloseoutSection.tsx","../../src/manager/composite/office/ManagerDocumentsSection/internal/icons.tsx","../../src/manager/composite/office/ManagerDocumentsSection/internal/DocumentBucketTile.tsx","../../src/manager/composite/office/ManagerDocumentsSection/internal/DocumentBucketGrid.tsx","../../src/manager/composite/office/ManagerDocumentsSection/internal/DocumentViewerSheet.tsx","../../src/manager/composite/office/ManagerDocumentsSection/ManagerDocumentsSection.tsx","../../src/manager/shell/MoneyFlows/moneyFormat.ts","../../src/manager/composite/office/ManagerFloatLedgerSection/internal/BalanceSummaryStrip.tsx","../../src/manager/composite/office/ManagerFloatLedgerSection/internal/formatFloatLedgerDate.ts","../../src/manager/composite/office/ManagerFloatLedgerSection/internal/icons.tsx","../../src/manager/composite/office/ManagerFloatLedgerSection/internal/LedgerRow.tsx","../../src/manager/composite/office/ManagerFloatLedgerSection/ManagerFloatLedgerSection.tsx","../../src/manager/composite/office/ManagerFormsSection/internal/icons.tsx","../../src/manager/composite/office/ManagerFormsSection/internal/ConflictNotice.tsx","../../src/manager/composite/office/ManagerFormsSection/internal/FormWindowState.ts","../../src/manager/composite/office/ManagerFormsSection/internal/fields/SelectFieldEditor.tsx","../../src/manager/composite/office/ManagerFormsSection/internal/fieldRegistry.tsx","../../src/manager/composite/office/ManagerFormsSection/internal/FormFillRenderer.tsx","../../src/manager/composite/office/ManagerFormsSection/internal/FormFillSheet.tsx","../../src/manager/composite/office/ManagerFormsSection/internal/formatFormDate.ts","../../src/manager/composite/office/ManagerFormsSection/internal/FormResponsesList.tsx","../../src/manager/composite/office/ManagerFormsSection/internal/rankForms.ts","../../src/manager/composite/office/ManagerFormsSection/internal/formPhaseLabel.ts","../../src/manager/composite/office/ManagerFormsSection/internal/FormRow.tsx","../../src/manager/composite/office/ManagerFormsSection/internal/TripFormsPanel.tsx","../../src/manager/composite/office/ManagerFormsSection/ManagerFormsSection.tsx","../../src/manager/composite/office/ManagerItinerarySection/internal/deriveItinerary.ts","../../src/manager/composite/office/ManagerItinerarySection/internal/icons.tsx","../../src/manager/composite/office/ManagerItinerarySection/internal/AddItemSheet.tsx","../../src/manager/composite/office/ManagerItinerarySection/internal/ChangeLogSheet.tsx","../../src/manager/composite/office/ManagerItinerarySection/internal/DayStrip.tsx","../../src/manager/composite/office/ManagerItinerarySection/internal/EditDaySheet.tsx","../../src/manager/composite/office/ManagerItinerarySection/internal/ItemCard.tsx","../../src/manager/composite/office/ManagerItinerarySection/ManagerItinerarySection.tsx","../../src/manager/composite/office/ManagerManifestSection/internal/deriveManifest.ts","../../src/manager/composite/office/ManagerManifestSection/internal/filterTravellers.ts","../../src/manager/composite/office/ManagerManifestSection/internal/TripBookingGroupCard.tsx","../../src/manager/composite/office/ManagerManifestSection/internal/icons.tsx","../../src/manager/composite/office/ManagerManifestSection/internal/TripManifestFilterSheet.tsx","../../src/manager/composite/office/ManagerManifestSection/internal/TripManifestSearchRow.tsx","../../src/manager/composite/office/ManagerManifestSection/internal/TripManifestStats.tsx","../../src/manager/composite/office/ManagerManifestSection/internal/TripTravellerRow.tsx","../../src/manager/composite/office/ManagerManifestSection/ManagerManifestSection.tsx","../../src/manager/composite/office/ManagerMeSection/internal/icons.tsx","../../src/manager/composite/office/ManagerMeSection/internal/ProfileHeader.tsx","../../src/manager/composite/office/ManagerMeSection/internal/formatMeDateRange.ts","../../src/manager/composite/office/ManagerMeSection/internal/RecentTrips.tsx","../../src/manager/composite/office/ManagerMeSection/internal/StatsStrip.tsx","../../src/manager/composite/office/ManagerMeSection/internal/SyncStatus.tsx","../../src/manager/composite/office/ManagerMeSection/ManagerMeSection.tsx","../../src/manager/shell/ManagerFab/icons.tsx","../../src/manager/shell/ManagerFab/ManagerFab.tsx","../../src/manager/shell/MoneyFlows/icons.tsx","../../src/manager/shell/MoneyFlows/FloatMovementSheet.tsx","../../src/manager/shell/MoneyFlows/LogExpenseSheet.tsx","../../src/manager/shell/MoneyFlows/RecordCollectionSheet.tsx","../../src/manager/composite/office/ManagerMoneySection/internal/icons.tsx","../../src/manager/composite/office/ManagerMoneySection/internal/AddMoneyMenuSheet.tsx","../../src/manager/composite/office/ManagerMoneySection/internal/deriveMoney.ts","../../src/manager/composite/office/ManagerMoneySection/internal/BalancesDueSection.tsx","../../src/manager/composite/office/ManagerMoneySection/internal/ExpenseDetailSheet.tsx","../../src/manager/composite/office/ManagerMoneySection/internal/MoneyStats.tsx","../../src/manager/composite/office/ManagerMoneySection/internal/RecentExpensesSection.tsx","../../src/manager/composite/office/ManagerMoneySection/ManagerMoneySection.tsx","../../src/manager/composite/office/ManagerNotificationsSection/internal/icons.tsx","../../src/manager/composite/office/ManagerNotificationsSection/internal/formatNotificationTime.ts","../../src/manager/composite/office/ManagerNotificationsSection/internal/NotificationRow.tsx","../../src/manager/composite/office/ManagerNotificationsSection/ManagerNotificationsSection.tsx","../../src/manager/composite/office/ManagerNowSection/internal/calendarDayKey.ts","../../src/manager/composite/office/ManagerNowSection/internal/deriveManagerNowBanners.ts","../../src/manager/composite/office/ManagerNowSection/internal/icons.tsx","../../src/manager/composite/office/ManagerNowSection/internal/NowBanners.tsx","../../src/manager/composite/office/ManagerNowSection/internal/NowChecklist.tsx","../../src/manager/composite/office/ManagerNowSection/internal/NowCoManager.tsx","../../src/manager/composite/office/ManagerNowSection/internal/NowHero.tsx","../../src/manager/internal/formatTimeOfDay.ts","../../src/manager/composite/office/ManagerNowSection/internal/NowTimeline.tsx","../../src/manager/composite/office/ManagerNowSection/internal/NowTotals.tsx","../../src/manager/composite/office/ManagerNowSection/internal/NowTripSummary.tsx","../../src/manager/composite/office/ManagerNowSection/internal/NowVehicleCards.tsx","../../src/manager/composite/office/ManagerNowSection/internal/QuickActionsSheet.tsx","../../src/manager/composite/office/ManagerNowSection/internal/sumTodayTotals.ts","../../src/manager/composite/office/ManagerNowSection/ManagerNowSection.tsx","../../src/manager/composite/office/ManagerOverviewSection/internal/ChecklistPreview.tsx","../../src/manager/composite/office/ManagerOverviewSection/internal/icons.tsx","../../src/manager/composite/office/ManagerOverviewSection/internal/CoManagerCard.tsx","../../src/manager/composite/office/ManagerOverviewSection/internal/formatOverviewTime.ts","../../src/manager/composite/office/ManagerOverviewSection/internal/ItineraryPreview.tsx","../../src/manager/composite/office/ManagerOverviewSection/internal/PickupsSummary.tsx","../../src/manager/composite/office/ManagerOverviewSection/internal/RoomingSummary.tsx","../../src/manager/composite/office/ManagerOverviewSection/internal/TransportSummary.tsx","../../src/manager/composite/office/ManagerOverviewSection/ManagerOverviewSection.tsx","../../src/manager/composite/office/ManagerPickupsSection/internal/icons.tsx","../../src/manager/composite/office/ManagerPickupsSection/internal/CloseStopSheet.tsx","../../src/manager/composite/office/ManagerPickupsSection/internal/deriveStops.ts","../../src/manager/composite/office/ManagerPickupsSection/internal/formatPickupTime.ts","../../src/manager/composite/office/ManagerPickupsSection/internal/StopSegmentedSwitcher.tsx","../../src/manager/composite/office/ManagerPickupsSection/internal/CorrectBoardStatusControl.tsx","../../src/manager/composite/office/ManagerPickupsSection/internal/TravellerBoardRow.tsx","../../src/manager/composite/office/ManagerPickupsSection/internal/BoardingView.tsx","../../src/manager/composite/office/ManagerPickupsSection/internal/patchManifest.ts","../../src/manager/composite/office/ManagerPickupsSection/internal/StopRow.tsx","../../src/manager/composite/office/ManagerPickupsSection/internal/StopList.tsx","../../src/manager/composite/office/ManagerPickupsSection/ManagerPickupsSection.tsx","../../src/manager/composite/office/ManagerRoomingSection/internal/icons.tsx","../../src/manager/composite/office/ManagerRoomingSection/internal/AddRoomSheet.tsx","../../src/manager/composite/office/ManagerRoomingSection/internal/AssignBedSheet.tsx","../../src/manager/composite/office/ManagerRoomingSection/internal/deriveRooming.ts","../../src/manager/composite/office/ManagerRoomingSection/internal/AutoAssignSheet.tsx","../../src/manager/composite/office/ManagerRoomingSection/internal/RoomCard.tsx","../../src/manager/composite/office/ManagerRoomingSection/internal/RoomingStats.tsx","../../src/manager/composite/office/ManagerRoomingSection/internal/StayWindowChips.tsx","../../src/manager/composite/office/ManagerRoomingSection/internal/StayWindowSheet.tsx","../../src/manager/composite/office/ManagerRoomingSection/internal/UnassignedPoolSection.tsx","../../src/manager/composite/office/ManagerRoomingSection/ManagerRoomingSection.tsx","../../src/manager/composite/office/ManagerRosterSection/internal/icons.tsx","../../src/manager/composite/office/ManagerRosterSection/internal/RosterRow.tsx","../../src/manager/composite/office/ManagerRosterSection/internal/RosterSearch.tsx","../../src/manager/composite/office/ManagerRosterSection/ManagerRosterSection.tsx","../../src/manager/composite/office/ManagerSyncCenterSection/internal/icons.tsx","../../src/manager/composite/office/ManagerSyncCenterSection/internal/ConflictResolverSheet.tsx","../../src/manager/composite/office/ManagerSyncCenterSection/internal/formatSyncCenterDate.ts","../../src/manager/composite/office/ManagerSyncCenterSection/internal/OutboxRow.tsx","../../src/manager/composite/office/ManagerSyncCenterSection/ManagerSyncCenterSection.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/deriveTravellerProfile.ts","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/icons.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/LogPaymentSheet.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/TravellerContactRow.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/TravellerDietaryCard.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/TravellerEmergencyCard.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/TravellerHero.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/TravellerNotesSection.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/TravellerPaymentCard.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/internal/TravellerRoomSeatCard.tsx","../../src/manager/composite/office/ManagerTravellerProfileSection/ManagerTravellerProfileSection.tsx","../../src/manager/composite/office/ManagerVehiclesSection/internal/deriveSeating.ts","../../src/manager/composite/office/ManagerVehiclesSection/internal/icons.tsx","../../src/manager/composite/office/ManagerVehiclesSection/internal/AddVehicleSheet.tsx","../../src/manager/composite/office/ManagerVehiclesSection/internal/AssignSeatSheet.tsx","../../src/manager/composite/office/ManagerVehiclesSection/internal/AutoAssignSheet.tsx","../../src/manager/composite/office/ManagerVehiclesSection/internal/SetOwnerSheet.tsx","../../src/manager/composite/office/ManagerVehiclesSection/internal/UnassignedPoolSection.tsx","../../src/manager/composite/office/ManagerVehiclesSection/internal/VehicleCard.tsx","../../src/manager/composite/office/ManagerVehiclesSection/internal/VehicleRosterSheet.tsx","../../src/manager/composite/office/ManagerVehiclesSection/internal/VehicleStats.tsx","../../src/manager/composite/office/ManagerVehiclesSection/ManagerVehiclesSection.tsx","../../src/manager/composite/office/ManagerVendorsSection/internal/deriveVendors.ts","../../src/manager/composite/office/ManagerVendorsSection/internal/VendorDetailSheet.tsx","../../src/manager/composite/office/ManagerVendorsSection/internal/icons.tsx","../../src/manager/composite/office/ManagerVendorsSection/internal/VendorListSection.tsx","../../src/manager/composite/office/ManagerVendorsSection/ManagerVendorsSection.tsx","../../src/manager/composite/office/ManagerTripSection/internal/computeTripTabs.ts","../../src/manager/composite/office/ManagerTripSection/internal/TripChipTabs.tsx","../../src/manager/composite/office/ManagerTripSection/internal/TripHero.tsx","../../src/manager/composite/office/ManagerTripSection/internal/TripTabPlaceholder.tsx","../../src/manager/composite/office/ManagerTripSection/ManagerTripSection.tsx","../../src/manager/shell/ManagerShell/icons.tsx","../../src/manager/shell/ManagerShell/ManagerShell.tsx","../../src/manager/KaafilManagerApp/internal/formatHeaderEyebrow.ts","../../src/manager/KaafilManagerApp/internal/initialsFromFullName.ts","../../src/manager/KaafilManagerApp/internal/icons.tsx","../../src/manager/KaafilManagerApp/internal/SyncStatusBadge.tsx","../../src/manager/KaafilManagerApp/internal/formatTripDateRange.ts","../../src/manager/KaafilManagerApp/internal/TripListRow.tsx","../../src/manager/KaafilManagerApp/internal/TripListScreen.tsx","../../src/manager/KaafilManagerApp/KaafilManagerApp.tsx"],"names":["jsx","jsxs","useState","useEffect","Fragment","CheckIcon","CloseIcon","ChevronIcon","WarningIcon","useRef","DATE_FORMATTER","PHASE_LABEL_KEY","rows","STATUS_LABEL_KEY","PlusIcon","TrashIcon","AddItemSheet","canMoveUp","canMoveDown","DIET_LABEL_KEY","initials","useMemo","ReceiptIcon","STAGE_LABEL_KEY","PhoneIcon","TIME_FORMATTER","occupancyTone","BackIcon","EditIcon","rankOf","ROOM_TYPE_LABEL_KEY","STATUS_TONE","DATE_RANGE_FORMATTER","fallback","SearchIcon","InboxIcon","normalizeDiet","MINOR_UNIT_EXPONENT","diffAutoAssignPlan","UNASSIGNED_REASON_LABEL_KEY","unassignedReasonLabelKey","WandIcon","PersonIcon","vehicleDisplayLabel","AutoAssignSheet","UnassignedPoolSection","isLiveExpense","isLiveVehicle","formatDateRange","TAB_LABEL_KEY","WifiOffIcon","WifiOnIcon","tripRef"],"mappings":"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","file":"index.js","sourcesContent":["// Pure derivation helpers off `useChecklists()`'s own return shape — no\n// `kaafil-js` import (hard rule #1), no fabricated fields (no notes, no\n// photo evidence, no assignee avatar, no time-of-day due label — the wire\n// carries only a day-relative-to-departure `dayOffset`).\n\nimport type {\n ChecklistItemDeltaRow,\n ChecklistItemLiveRow,\n ChecklistSectionRow,\n} from '../ManagerChecklistSection.types';\n\nexport function isLiveChecklistItem(row: ChecklistItemDeltaRow): row is ChecklistItemLiveRow {\n return !('_tombstone' in row);\n}\n\nexport function liveChecklistItems(\n rows: readonly ChecklistItemDeltaRow[],\n): readonly ChecklistItemLiveRow[] {\n return rows.filter(isLiveChecklistItem);\n}\n\nexport function itemsForSection(\n items: readonly ChecklistItemLiveRow[],\n sectionId: string,\n): readonly ChecklistItemLiveRow[] {\n return items.filter((item) => item.sectionId === sectionId);\n}\n\n/** Open-mandatory first, then open-advisory, then complete — the spec's own\n * \"one ranked list, mandatory first\" principle, applied within a section. */\nexport function rankedItems(\n items: readonly ChecklistItemLiveRow[],\n): readonly ChecklistItemLiveRow[] {\n const rank = (item: ChecklistItemLiveRow): number => {\n if (item.status === 'COMPLETE') {\n return 2;\n }\n return item.isMandatory ? 0 : 1;\n };\n return items.slice().sort((a, b) => rank(a) - rank(b) || a.sortOrder - b.sortOrder);\n}\n\nexport function sortedSections(\n sections: readonly ChecklistSectionRow[],\n): readonly ChecklistSectionRow[] {\n return sections.slice().sort((a, b) => a.sortOrder - b.sortOrder);\n}\n\n/** Honest day-relative phrasing — the wire has no time-of-day, only a day\n * offset from the trip's own start date. `null` renders nothing (never a\n * fabricated \"no due date\" filler line). */\nexport function dueDayLabelKey(dayOffset: number | null):\n | {\n readonly key: string;\n readonly count: number;\n }\n | undefined {\n if (dayOffset === null) {\n return undefined;\n }\n if (dayOffset === 0) {\n return { key: 'chrome.managerTrip.checklist.due.onDeparture', count: 0 };\n }\n if (dayOffset < 0) {\n return { key: 'chrome.managerTrip.checklist.due.beforeDeparture', count: Math.abs(dayOffset) };\n }\n return { key: 'chrome.managerTrip.checklist.due.afterDeparture', count: dayOffset };\n}\n\nconst PHASE_LABEL_KEY: Record<ChecklistSectionRow['phase'], string> = {\n PRE_DEPARTURE: 'chrome.managerTrip.checklist.phase.preDeparture',\n IN_TRIP: 'chrome.managerTrip.checklist.phase.inTrip',\n POST_TRIP: 'chrome.managerTrip.checklist.phase.postTrip',\n};\n\nexport function phaseLabelKey(phase: ChecklistSectionRow['phase']): string {\n return PHASE_LABEL_KEY[phase];\n}\n\nconst GATE_LABEL_KEY: Record<ChecklistItemLiveRow['gate'], string> = {\n NONE: 'chrome.managerTrip.checklist.gate.none',\n PRE_TO_ACTIVE: 'chrome.managerTrip.checklist.gate.preToActive',\n ACTIVE_TO_CLOSED_OUT: 'chrome.managerTrip.checklist.gate.activeToClosedOut',\n};\n\nexport function gateLabelKey(gate: ChecklistItemLiveRow['gate']): string {\n return GATE_LABEL_KEY[gate];\n}\n\n/** Client-side only, for the \"new section\" branch of `AddItemSheet` —\n * `AddChecklistItemRequest.sectionKey` is \"a short, lowercase machine key\"\n * (real field description); this derives one from a free-typed title\n * rather than asking the manager to invent a machine key by hand. */\nexport function slugifySectionKey(title: string): string {\n return title\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_+|_+$/g, '')\n .slice(0, 64);\n}\n\nexport function overallPercent(progress: { total: number; complete: number } | undefined): number {\n if (progress === undefined || progress.total === 0) {\n return 0;\n }\n return Math.round((progress.complete / progress.total) * 100);\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function CheckIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nexport function PlusIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n );\n}\n\nexport function TemplateIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M3 9h18M9 21V9\" />\n </svg>\n );\n}\n\nexport function EditIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 3a2.85 2.85 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n </svg>\n );\n}\n\nexport function TrashIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0-1 14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2L4 6h16Z\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n );\n}\n","'use client';\n\n// Adds one checklist item — `AddChecklistItemRequest`'s real fields only.\n// Pick an existing section (a chip row, matching this sheet's own phase-chip\n// pattern below it — a native `<select>` here rendered the OS's own popup\n// chrome, breaking the sheet's custom look) OR type a new section name\n// (client-side slugified into `sectionKey` — a real field the request\n// requires, never asking the manager to hand-invent a machine key). No\n// `subLine`/`gate`/`dayOffset` here — genuinely absent from\n// `AddChecklistItemRequest`; those are `EditItemSheet`'s own job, patched in\n// immediately after creation if the caller needs them (this sheet itself\n// never round-trips twice for one add).\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ChecklistItemPhase, ChecklistSectionRow } from '../ManagerChecklistSection.types';\nimport { phaseLabelKey, slugifySectionKey } from './deriveChecklist';\nimport { CloseIcon } from './icons';\n\nconst PHASES: readonly ChecklistItemPhase[] = ['PRE_DEPARTURE', 'IN_TRIP', 'POST_TRIP'];\n\nexport interface AddItemSheetProps {\n readonly open: boolean;\n readonly sections: readonly ChecklistSectionRow[];\n readonly onSubmit: (input: {\n sectionKey: string;\n sectionTitle?: string;\n phase: ChecklistItemPhase;\n title: string;\n mandatory?: boolean;\n }) => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function AddItemSheet({ open, sections, onSubmit, onClose }: AddItemSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [sectionId, setSectionId] = useState<string | 'NEW'>(sections[0]?.id ?? 'NEW');\n const [newSectionTitle, setNewSectionTitle] = useState('');\n const [newSectionPhase, setNewSectionPhase] = useState<ChecklistItemPhase>('PRE_DEPARTURE');\n const [title, setTitle] = useState('');\n const [mandatory, setMandatory] = useState(false);\n const [pending, setPending] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setSectionId(sections[0]?.id ?? 'NEW');\n setNewSectionTitle('');\n setNewSectionPhase('PRE_DEPARTURE');\n setTitle('');\n setMandatory(false);\n }, [open, sections]);\n\n if (!open) {\n return null;\n }\n\n const trimmedTitle = title.trim();\n const isNewSection = sectionId === 'NEW';\n const trimmedNewSectionTitle = newSectionTitle.trim();\n const canSubmit = trimmedTitle.length > 0 && (!isNewSection || trimmedNewSectionTitle.length > 0);\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n setPending(true);\n try {\n if (isNewSection) {\n await onSubmit({\n sectionKey: slugifySectionKey(trimmedNewSectionTitle),\n sectionTitle: trimmedNewSectionTitle,\n phase: newSectionPhase,\n title: trimmedTitle,\n ...(mandatory ? { mandatory: true } : {}),\n });\n } else {\n const section = sections.find((candidate) => candidate.id === sectionId);\n if (section === undefined) {\n return;\n }\n await onSubmit({\n sectionKey: section.key,\n phase: section.phase,\n title: trimmedTitle,\n ...(mandatory ? { mandatory: true } : {}),\n });\n }\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-checklist__sheet-backdrop\">\n <div\n className=\"kf-manager-checklist__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.checklist.addItem.title')}\n >\n <div className=\"kf-manager-checklist__sheet-header\">\n <p className=\"kf-manager-checklist__sheet-title\">\n {t('chrome.managerTrip.checklist.addItem.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-checklist__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.addItem.sectionLabel')}\n </p>\n <div className=\"kf-manager-checklist__chips\">\n {sections.map((section) => (\n <button\n key={section.id}\n type=\"button\"\n className=\"kf-manager-checklist__chip kf-press\"\n data-active={sectionId === section.id}\n onClick={() => setSectionId(section.id)}\n >\n {section.title}\n </button>\n ))}\n <button\n type=\"button\"\n className=\"kf-manager-checklist__chip kf-press\"\n data-active={sectionId === 'NEW'}\n onClick={() => setSectionId('NEW')}\n >\n {t('chrome.managerTrip.checklist.addItem.newSectionOption')}\n </button>\n </div>\n\n {isNewSection ? (\n <>\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.addItem.newSectionTitleLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-checklist__field-input\"\n value={newSectionTitle}\n onChange={(event) => setNewSectionTitle(event.target.value)}\n placeholder={t('chrome.managerTrip.checklist.addItem.newSectionTitlePlaceholder')}\n />\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.addItem.phaseLabel')}\n </p>\n <div className=\"kf-manager-checklist__chips\">\n {PHASES.map((phase) => (\n <button\n key={phase}\n type=\"button\"\n className=\"kf-manager-checklist__chip kf-press\"\n data-active={newSectionPhase === phase}\n onClick={() => setNewSectionPhase(phase)}\n >\n {t(phaseLabelKey(phase))}\n </button>\n ))}\n </div>\n </>\n ) : null}\n\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.addItem.titleLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-checklist__field-input\"\n value={title}\n onChange={(event) => setTitle(event.target.value)}\n placeholder={t('chrome.managerTrip.checklist.addItem.titlePlaceholder')}\n />\n\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={mandatory}\n className=\"kf-manager-checklist__toggle-row\"\n onClick={() => setMandatory((previous) => !previous)}\n >\n <span className=\"kf-manager-checklist__toggle-track\" data-active={mandatory}>\n <span className=\"kf-manager-checklist__toggle-thumb\" />\n </span>\n {t('chrome.managerTrip.checklist.addItem.mandatoryToggle')}\n </button>\n\n <button\n type=\"button\"\n className=\"kf-manager-checklist__sheet-submit kf-press\"\n disabled={!canSubmit || pending}\n onClick={() => void handleSubmit()}\n >\n {t('chrome.managerTrip.checklist.addItem.submit')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// Edits one checklist item — `PatchChecklistItemRequest`'s real fields\n// only. The due-day input maps to `dayOffset` (a plain number, days\n// relative to the trip's own start date) with a live-rendered honest phrase\n// preview — never a calendar date picker, since the wire carries no\n// absolute date, only a relative offset.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ChecklistItemGate, ChecklistItemLiveRow } from '../ManagerChecklistSection.types';\nimport { dueDayLabelKey, gateLabelKey } from './deriveChecklist';\nimport { CloseIcon } from './icons';\n\nconst GATES: readonly ChecklistItemGate[] = ['NONE', 'PRE_TO_ACTIVE', 'ACTIVE_TO_CLOSED_OUT'];\n\nexport interface EditItemSheetProps {\n readonly item: ChecklistItemLiveRow | undefined;\n readonly onSubmit: (input: {\n itemId: string;\n version: number;\n title?: string;\n subLine?: string | null;\n isMandatory?: boolean;\n gate?: ChecklistItemGate;\n dayOffset?: number | null;\n }) => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function EditItemSheet({ item, onSubmit, onClose }: EditItemSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [title, setTitle] = useState('');\n const [subLine, setSubLine] = useState('');\n const [isMandatory, setIsMandatory] = useState(false);\n const [gate, setGate] = useState<ChecklistItemGate>('NONE');\n const [dayOffset, setDayOffset] = useState('');\n const [pending, setPending] = useState(false);\n\n useEffect(() => {\n if (item === undefined) {\n return;\n }\n setTitle(item.title);\n setSubLine(item.subLine ?? '');\n setIsMandatory(item.isMandatory);\n setGate(item.gate);\n setDayOffset(item.dayOffset === null ? '' : String(item.dayOffset));\n }, [item]);\n\n if (item === undefined) {\n return null;\n }\n\n const trimmedTitle = title.trim();\n const canSubmit = trimmedTitle.length > 0;\n const parsedDayOffset = dayOffset.trim().length > 0 ? Number.parseInt(dayOffset, 10) : null;\n const duePreview =\n parsedDayOffset !== null && !Number.isNaN(parsedDayOffset)\n ? dueDayLabelKey(parsedDayOffset)\n : undefined;\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n setPending(true);\n try {\n await onSubmit({\n itemId: item.id,\n version: item.version,\n title: trimmedTitle,\n subLine: subLine.trim().length > 0 ? subLine.trim() : null,\n isMandatory,\n gate,\n dayOffset: Number.isNaN(parsedDayOffset) ? null : parsedDayOffset,\n });\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-checklist__sheet-backdrop\">\n <div\n className=\"kf-manager-checklist__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.checklist.editItem.title')}\n >\n <div className=\"kf-manager-checklist__sheet-header\">\n <p className=\"kf-manager-checklist__sheet-title\">\n {t('chrome.managerTrip.checklist.editItem.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-checklist__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.editItem.titleLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-checklist__field-input\"\n value={title}\n onChange={(event) => setTitle(event.target.value)}\n />\n\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.editItem.subLineLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-checklist__field-input\"\n value={subLine}\n onChange={(event) => setSubLine(event.target.value)}\n />\n\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.editItem.dayOffsetLabel')}\n </p>\n <input\n type=\"number\"\n inputMode=\"numeric\"\n className=\"kf-manager-checklist__field-input\"\n value={dayOffset}\n onChange={(event) => setDayOffset(event.target.value)}\n placeholder=\"0\"\n />\n {duePreview !== undefined ? (\n <p className=\"kf-manager-checklist__hint-copy\">\n {t(duePreview.key).replace('{count}', String(duePreview.count))}\n </p>\n ) : null}\n\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.editItem.gateLabel')}\n </p>\n <div className=\"kf-manager-checklist__chips\">\n {GATES.map((candidate) => (\n <button\n key={candidate}\n type=\"button\"\n className=\"kf-manager-checklist__chip kf-press\"\n data-active={gate === candidate}\n onClick={() => setGate(candidate)}\n >\n {t(gateLabelKey(candidate))}\n </button>\n ))}\n </div>\n\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={isMandatory}\n className=\"kf-manager-checklist__toggle-row\"\n onClick={() => setIsMandatory((previous) => !previous)}\n >\n <span className=\"kf-manager-checklist__toggle-track\" data-active={isMandatory}>\n <span className=\"kf-manager-checklist__toggle-thumb\" />\n </span>\n {t('chrome.managerTrip.checklist.editItem.mandatoryToggle')}\n </button>\n\n <button\n type=\"button\"\n className=\"kf-manager-checklist__sheet-submit kf-press\"\n disabled={!canSubmit || pending}\n onClick={() => void handleSubmit()}\n >\n {t('chrome.managerTrip.checklist.editItem.submit')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// The `ItemRow` Tier-4 override slot — one checklist item. Tapping the row\n// body toggles it (`toggleItem`); a trailing edit icon opens `EditItemSheet`;\n// a trailing delete icon is rendered ONLY for an OPEN item — deleting a\n// COMPLETE item is refused server-side (`422 item_complete_delete_blocked`,\n// `useChecklists.ts`'s own header), so the affordance is hidden ahead of\n// time rather than fired-then-toasted. The row is a `<div role=\"button\">`,\n// not a native `<button>`, for the same reason `ManagerVendorsSection`'s own\n// row is: it holds more than one independent interactive target (toggle +\n// edit + delete) and a `<button>` cannot legally nest another.\n\nimport type { KeyboardEvent, ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ChecklistItemLiveRow } from '../ManagerChecklistSection.types';\nimport { dueDayLabelKey } from './deriveChecklist';\nimport { CheckIcon, EditIcon, TrashIcon } from './icons';\n\nexport interface ItemRowProps {\n readonly item: ChecklistItemLiveRow;\n /** Resolved via `useManagers(tripRef)`, joined on `managerId` — real name,\n * never a raw id, never fabricated when the join can't resolve. */\n readonly completedByName: string | undefined;\n readonly pending: boolean;\n readonly onToggle: () => void;\n readonly onEdit: () => void;\n readonly onDelete: () => void;\n}\n\nexport function ItemRow({\n item,\n completedByName,\n pending,\n onToggle,\n onEdit,\n onDelete,\n}: ItemRowProps): ReactNode {\n const { t } = useKaafilChrome();\n const isComplete = item.status === 'COMPLETE';\n const due = dueDayLabelKey(item.dayOffset);\n\n function onKeyDown(event: KeyboardEvent<HTMLDivElement>): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onToggle();\n }\n }\n\n return (\n // biome-ignore lint/a11y/useSemanticElements: this row nests independent edit/delete controls beside the toggle target — a <button> cannot legally nest another.\n <div\n role=\"button\"\n tabIndex={0}\n className=\"kf-manager-checklist__item\"\n data-complete={isComplete}\n data-pending={pending}\n onClick={onToggle}\n onKeyDown={onKeyDown}\n >\n <span className=\"kf-manager-checklist__item-check\" data-checked={isComplete}>\n {isComplete ? <CheckIcon /> : null}\n </span>\n <span className=\"kf-manager-checklist__item-copy\">\n <span className=\"kf-manager-checklist__item-title\">{item.title}</span>\n {item.subLine !== null ? (\n <span className=\"kf-manager-checklist__item-subline\">{item.subLine}</span>\n ) : null}\n <span className=\"kf-manager-checklist__item-meta\">\n {!isComplete && item.isMandatory ? (\n <span className=\"kf-manager-checklist__item-badge\">\n {t('chrome.managerTrip.checklist.mandatoryBadge')}\n </span>\n ) : null}\n {!isComplete && due !== undefined ? (\n <span className=\"kf-manager-checklist__item-due\">\n {t(due.key).replace('{count}', String(due.count))}\n </span>\n ) : null}\n {isComplete && completedByName !== undefined ? (\n <span className=\"kf-manager-checklist__item-completed-by\">\n {t('chrome.managerTrip.checklist.completedBy').replace('{name}', completedByName)}\n </span>\n ) : null}\n </span>\n </span>\n <span className=\"kf-manager-checklist__item-actions\">\n <button\n type=\"button\"\n className=\"kf-manager-checklist__item-action kf-press\"\n aria-label={t('chrome.managerTrip.checklist.editItem')}\n onClick={(event) => {\n event.stopPropagation();\n onEdit();\n }}\n >\n <EditIcon />\n </button>\n {!isComplete ? (\n <button\n type=\"button\"\n className=\"kf-manager-checklist__item-action kf-press\"\n aria-label={t('chrome.managerTrip.checklist.deleteItem')}\n onClick={(event) => {\n event.stopPropagation();\n onDelete();\n }}\n >\n <TrashIcon />\n </button>\n ) : null}\n </span>\n </div>\n );\n}\n","'use client';\n\n// The `ProgressCard` Tier-4 override slot — ONE progress summary (doneLine\n// + percent + a single bar), matching the boilerplate reference's own\n// pattern exactly (verified this session): never a multi-tile stat row like\n// the vendor screen's fabricated PENDING/ON TRIP/DONE cards. `title`/\n// `subtitle`/`progress` are all real `ChecklistAggregateResponse` fields.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { overallPercent } from './deriveChecklist';\n\nexport interface ProgressCardProps {\n readonly title: string | undefined;\n readonly subtitle: string | undefined;\n readonly progress: { readonly total: number; readonly complete: number } | undefined;\n}\n\nexport function ProgressCard({ title, subtitle, progress }: ProgressCardProps): ReactNode {\n const { t } = useKaafilChrome();\n const percent = overallPercent(progress);\n\n return (\n <div className=\"kf-manager-checklist__progress-card\">\n {title !== undefined ? <p className=\"kf-manager-checklist__progress-title\">{title}</p> : null}\n {subtitle !== undefined ? (\n <p className=\"kf-manager-checklist__progress-subtitle\">{subtitle}</p>\n ) : null}\n <div className=\"kf-manager-checklist__progress-row\">\n <p className=\"kf-manager-checklist__progress-done\">\n {progress !== undefined\n ? t('chrome.managerTrip.checklist.progress.doneOfTotal')\n .replace('{complete}', String(progress.complete))\n .replace('{total}', String(progress.total))\n : ''}\n </p>\n <p className=\"kf-manager-checklist__progress-percent\">{percent}%</p>\n </div>\n <div className=\"kf-manager-checklist__progress-bar-track\">\n <div\n className=\"kf-manager-checklist__progress-bar-fill\"\n style={{ inlineSize: `${percent}%` }}\n />\n </div>\n </div>\n );\n}\n","'use client';\n\n// Pulls one agency template onto the trip — `PullChecklistTemplateRequest`'s\n// real `{templateSectionId, mode: 'append'|'replace'}` shape. Fetches\n// `listTemplates()` fresh every time this sheet opens (never\n// `aggregate.availableTemplates`, per `useChecklists.ts`'s own documented\n// \"fetched fresh when the picker opens\" intent — the richer, more current\n// source, carrying `itemCount`/`lastUsedAt` the aggregate's own inline list\n// doesn't). Replace is real, destructive data loss for OPEN items only —\n// COMPLETE items are never touched (the safer, defensible reading of\n// intent this session's own mock backend implements, since the API spec\n// text itself states no explicit per-item survival guarantee). Selecting\n// Replace reveals a \"type REPLACE to confirm\" gate on the submit button,\n// the one deliberate destructive-confirm UX ported from the boilerplate's\n// own admin panel — and the warning copy states exactly this real scope,\n// never a broader \"everything will be replaced\" claim.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport type { ChecklistTemplatesListResult } from '../../../../../core/hooks/useChecklists.js';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { phaseLabelKey } from './deriveChecklist';\nimport { CloseIcon } from './icons';\n\ntype TemplateRow = ChecklistTemplatesListResult['templates'][number];\ntype PullMode = 'append' | 'replace';\n\nexport interface PullTemplateSheetProps {\n readonly open: boolean;\n readonly listTemplates: () => Promise<ChecklistTemplatesListResult>;\n readonly onSubmit: (input: { templateSectionId: string; mode: PullMode }) => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function PullTemplateSheet({\n open,\n listTemplates,\n onSubmit,\n onClose,\n}: PullTemplateSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [templates, setTemplates] = useState<readonly TemplateRow[] | undefined>(undefined);\n const [loadFailed, setLoadFailed] = useState(false);\n const [selectedId, setSelectedId] = useState<string | undefined>(undefined);\n const [mode, setMode] = useState<PullMode>('append');\n const [confirmText, setConfirmText] = useState('');\n const [pending, setPending] = useState(false);\n\n // `listTemplates` is a fresh closure every render (both the hook's own\n // return value and the composite's inline wrapper) — reading the latest\n // one via a ref keeps this effect's dependency array to `[open]` so an\n // unrelated parent re-render can't tear down and restart the fetch before\n // it resolves, which otherwise leaves `templates` stuck at `undefined`\n // (the \"Loading…\" branch) forever.\n const listTemplatesRef = useRef(listTemplates);\n listTemplatesRef.current = listTemplates;\n\n useEffect(() => {\n if (!open) {\n setTemplates(undefined);\n setLoadFailed(false);\n setSelectedId(undefined);\n setMode('append');\n setConfirmText('');\n return;\n }\n let cancelled = false;\n setLoadFailed(false);\n listTemplatesRef\n .current()\n .then((result) => {\n if (!cancelled) {\n setTemplates(result.templates);\n setSelectedId(result.templates[0]?.id);\n }\n })\n .catch(() => {\n if (!cancelled) {\n setLoadFailed(true);\n }\n });\n return () => {\n cancelled = true;\n };\n }, [open]);\n\n const retryLoad = (): void => {\n setLoadFailed(false);\n setTemplates(undefined);\n listTemplatesRef\n .current()\n .then((result) => {\n setTemplates(result.templates);\n setSelectedId(result.templates[0]?.id);\n })\n .catch(() => {\n setLoadFailed(true);\n });\n };\n\n if (!open) {\n return null;\n }\n\n const canSubmit =\n selectedId !== undefined &&\n (mode === 'append' || confirmText.trim().toUpperCase() === 'REPLACE');\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit || selectedId === undefined) {\n return;\n }\n setPending(true);\n try {\n await onSubmit({ templateSectionId: selectedId, mode });\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-checklist__sheet-backdrop\">\n <div\n className=\"kf-manager-checklist__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.checklist.pullTemplate.title')}\n >\n <div className=\"kf-manager-checklist__sheet-header\">\n <p className=\"kf-manager-checklist__sheet-title\">\n {t('chrome.managerTrip.checklist.pullTemplate.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-checklist__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {loadFailed ? (\n <>\n <p className=\"kf-manager-checklist__warning-copy\">\n {t('chrome.managerTrip.checklist.pullTemplate.loadFailed')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-checklist__chip kf-press\"\n onClick={retryLoad}\n >\n {t('chrome.managerTrip.checklist.pullTemplate.retry')}\n </button>\n </>\n ) : templates === undefined ? (\n <p className=\"kf-manager-checklist__hint-copy\">\n {t('chrome.managerTrip.checklist.pullTemplate.loading')}\n </p>\n ) : templates.length === 0 ? (\n <p className=\"kf-manager-checklist__hint-copy\">\n {t('chrome.managerTrip.checklist.pullTemplate.empty')}\n </p>\n ) : (\n <>\n <div className=\"kf-manager-checklist__template-list\">\n {templates.map((template) => (\n <button\n key={template.id}\n type=\"button\"\n className=\"kf-manager-checklist__template-row kf-press\"\n data-active={selectedId === template.id}\n onClick={() => setSelectedId(template.id)}\n >\n <span className=\"kf-manager-checklist__template-row-title\">{template.title}</span>\n <span className=\"kf-manager-checklist__template-row-meta\">\n {t(phaseLabelKey(template.phase))} · {template.itemCount}{' '}\n {t('chrome.managerTrip.checklist.pullTemplate.itemsSuffix')}\n </span>\n </button>\n ))}\n </div>\n\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.pullTemplate.modeLabel')}\n </p>\n <div className=\"kf-manager-checklist__chips\">\n <button\n type=\"button\"\n className=\"kf-manager-checklist__chip kf-press\"\n data-active={mode === 'append'}\n onClick={() => setMode('append')}\n >\n {t('chrome.managerTrip.checklist.pullTemplate.modeAppend')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-checklist__chip kf-press\"\n data-active={mode === 'replace'}\n onClick={() => setMode('replace')}\n >\n {t('chrome.managerTrip.checklist.pullTemplate.modeReplace')}\n </button>\n </div>\n\n {mode === 'append' ? (\n <p className=\"kf-manager-checklist__hint-copy\">\n {t('chrome.managerTrip.checklist.pullTemplate.appendHint')}\n </p>\n ) : (\n <>\n <p className=\"kf-manager-checklist__warning-copy\">\n {t('chrome.managerTrip.checklist.pullTemplate.replaceWarning')}\n </p>\n <p className=\"kf-manager-checklist__field-label\">\n {t('chrome.managerTrip.checklist.pullTemplate.confirmLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-checklist__field-input\"\n value={confirmText}\n onChange={(event) => setConfirmText(event.target.value)}\n placeholder=\"REPLACE\"\n />\n </>\n )}\n </>\n )}\n\n <button\n type=\"button\"\n className=\"kf-manager-checklist__sheet-submit kf-press\"\n disabled={!canSubmit || pending}\n onClick={() => void handleSubmit()}\n >\n {t('chrome.managerTrip.checklist.pullTemplate.submit')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// The `SectionCard` Tier-4 override slot — one section, its own real\n// progress pair (`section.progress.total`/`.complete`), and its own\n// `ItemRow` list (already ranked open-mandatory/open-advisory/complete by\n// the caller). Matches the boilerplate's own grouped-card structure.\n\nimport type { ComponentType, ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ChecklistItemLiveRow, ChecklistSectionRow } from '../ManagerChecklistSection.types';\nimport { phaseLabelKey } from './deriveChecklist';\nimport type { ItemRowProps } from './ItemRow';\n\nexport interface SectionCardProps {\n readonly section: ChecklistSectionRow;\n readonly items: readonly ChecklistItemLiveRow[];\n readonly completedByNameFor: (managerId: string) => string | undefined;\n readonly pendingItemIds: ReadonlySet<string>;\n readonly onToggleItem: (item: ChecklistItemLiveRow) => void;\n readonly onEditItem: (item: ChecklistItemLiveRow) => void;\n readonly onDeleteItem: (item: ChecklistItemLiveRow) => void;\n readonly ItemRowComponent: ComponentType<ItemRowProps>;\n}\n\nexport function SectionCard({\n section,\n items,\n completedByNameFor,\n pendingItemIds,\n onToggleItem,\n onEditItem,\n onDeleteItem,\n ItemRowComponent,\n}: SectionCardProps): ReactNode {\n const { t } = useKaafilChrome();\n\n return (\n <div className=\"kf-manager-checklist__section\">\n <div className=\"kf-manager-checklist__section-header\">\n <div>\n <p className=\"kf-manager-checklist__section-title\">{section.title}</p>\n <p className=\"kf-manager-checklist__section-phase\">{t(phaseLabelKey(section.phase))}</p>\n </div>\n <p className=\"kf-manager-checklist__section-progress\">\n {section.progress.complete}/{section.progress.total}\n </p>\n </div>\n <div className=\"kf-manager-checklist__section-items\">\n {items.map((item) => (\n <ItemRowComponent\n key={item.id}\n item={item}\n completedByName={\n item.completedByManagerId !== null\n ? completedByNameFor(item.completedByManagerId)\n : undefined\n }\n pending={pendingItemIds.has(item.id)}\n onToggle={() => onToggleItem(item)}\n onEdit={() => onEditItem(item)}\n onDelete={() => onDeleteItem(item)}\n />\n ))}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The Checklist tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'checklist'` tab panel.\n// `useChecklists(tripRef)` is the one domain hook (`07-checklists.md`'s own\n// `ChecklistBoard`, the only Spec-complete component in that file).\n// `useManagers(tripRef)` resolves a real display name for\n// `completedByManagerId` — the same \"resolve an id against a roster hook\"\n// pattern used for vendor/traveller names elsewhere this session.\n//\n// FULLY SELF-CONTAINED: unlike Manifest/Money, this composite forwards no\n// external callback — every write (add/edit/delete/toggle/pull-template)\n// is handled entirely within this family, matching `ChecklistScreen`'s own\n// \"single primary task: toggle the next open mandatory item, 1 tap\" design\n// intent.\n//\n// `checklists` is a member of the frozen PERSONALIZED mode-dark set — a\n// dark or errored read renders nothing at all (404-shaped), the same\n// precedent every prior wave sets.\n//\n// TOGGLE IS APPLIED OPTIMISTICALLY, LOCALLY — a real gap in `useChecklists\n// .ts` (its own header, `WRITES` section): `toggleItem`'s `engine.enqueue()`\n// carries no `entity`/`optimistic` pairing, and even wiring one would not\n// help here, because `ToggleResponse` nests the canonical row under `.item`\n// (`{item: ChecklistItemResponse}`) while the SDK's own rebase\n// (`entityFromBody()`, `kaafil-js/src/offline/engine.ts`) only recognizes a\n// FLAT body carrying `id`/`version` at its top level — so the snapshot-list\n// `items[]` this composite reads for each row's own checked state never\n// gets rebased by a toggle, even though `checklist.aggregate.progress`\n// (a separately, explicitly re-fetched live state) updates correctly. The\n// result, un-patched: the progress bar/count advances but the tapped row's\n// own tick never flips. Every field this optimistic patch sets (status,\n// `completedByManagerId`/`performedById` resolved via a real roster-name\n// join against `useManagerMe()`, `completedAt` from the aggregate's own\n// last-known server time) is a value the client can correctly compute\n// itself, not a guess — kept only until the real snapshot's own version\n// catches up on a future full pull.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useChecklists } from '../../../../core/hooks/useChecklists.js';\nimport { useManagerMe } from '../../../../core/hooks/useManagerMe.js';\nimport { useManagers } from '../../../../core/hooks/useManagers.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { AddItemSheet } from './internal/AddItemSheet';\nimport {\n itemsForSection,\n liveChecklistItems,\n rankedItems,\n sortedSections,\n} from './internal/deriveChecklist';\nimport { EditItemSheet } from './internal/EditItemSheet';\nimport { ItemRow } from './internal/ItemRow';\nimport { PlusIcon, TemplateIcon } from './internal/icons';\nimport { ProgressCard } from './internal/ProgressCard';\nimport { PullTemplateSheet } from './internal/PullTemplateSheet';\nimport { SectionCard } from './internal/SectionCard';\nimport type {\n ChecklistItemLiveRow,\n ManagerChecklistSectionProps,\n} from './ManagerChecklistSection.types';\n\nexport function ManagerChecklistSection({\n tripRef,\n components,\n style,\n}: ManagerChecklistSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const checklist = useChecklists(tripRef);\n const managers = useManagers(tripRef);\n const managerMe = useManagerMe();\n\n const ProgressCardUI = components?.ProgressCard ?? ProgressCard;\n const SectionCardUI = components?.SectionCard ?? SectionCard;\n const ItemRowUI = components?.ItemRow ?? ItemRow;\n\n const [addOpen, setAddOpen] = useState(false);\n const [pullOpen, setPullOpen] = useState(false);\n const [editingItem, setEditingItem] = useState<ChecklistItemLiveRow | undefined>(undefined);\n const [pendingItemIds, setPendingItemIds] = useState<ReadonlySet<string>>(new Set());\n const [toggleOverrides, setToggleOverrides] = useState<ReadonlyMap<string, ChecklistItemLiveRow>>(\n new Map(),\n );\n\n if (checklist.status === 'loading') {\n return (\n <div className=\"kf-manager-checklist__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-checklist__skeleton-block\" />\n <div className=\"kf-manager-checklist__skeleton-line\" />\n <div className=\"kf-manager-checklist__skeleton-line kf-manager-checklist__skeleton-line--short\" />\n </div>\n );\n }\n\n if (checklist.status === 'dark' || checklist.status === 'error') {\n return null;\n }\n\n const rosterRows = managers.status === 'ready' ? managers.managers : [];\n const completedByNameFor = (managerId: string): string | undefined =>\n rosterRows.find((row) => row.managerId === managerId)?.fullName;\n // My own manager id, resolved by matching `useManagerMe()`'s own\n // `fullName` against the roster — the same \"resolve by name\" join\n // `ManagerNowSection`'s co-manager card already uses in the other\n // direction (exclude self by name); this composite has no other source\n // for \"which roster row is me.\"\n const myManagerId =\n managers.status === 'ready' && managerMe.status === 'ready'\n ? managers.managers.find((row) => row.fullName === managerMe.manager.fullName)?.managerId\n : undefined;\n\n const rawLiveItems = liveChecklistItems(checklist.items);\n const liveItems = rawLiveItems.map((item) => {\n const override = toggleOverrides.get(item.id);\n return override !== undefined && override.version > item.version ? override : item;\n });\n const sections = sortedSections(checklist.aggregate.sections);\n\n const withPending = async (itemId: string, task: () => Promise<unknown>): Promise<void> => {\n setPendingItemIds((previous) => new Set(previous).add(itemId));\n try {\n await task();\n } finally {\n setPendingItemIds((previous) => {\n const next = new Set(previous);\n next.delete(itemId);\n return next;\n });\n }\n };\n\n return (\n <div className=\"kf-manager-checklist\" style={tokenStyle(style)}>\n <ProgressCardUI\n title={checklist.aggregate.title}\n subtitle={checklist.aggregate.subtitle}\n progress={checklist.aggregate.progress}\n />\n\n <div className=\"kf-manager-checklist__actions\">\n <button\n type=\"button\"\n className=\"kf-manager-checklist__action-button kf-press\"\n onClick={() => setAddOpen(true)}\n >\n <PlusIcon />\n {t('chrome.managerTrip.checklist.addItemAction')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-checklist__action-button kf-press\"\n onClick={() => setPullOpen(true)}\n >\n <TemplateIcon />\n {t('chrome.managerTrip.checklist.pullTemplateAction')}\n </button>\n </div>\n\n {sections.length === 0 ? (\n <div className=\"kf-manager-checklist__empty\">\n <p className=\"kf-manager-checklist__empty-title\">\n {t('chrome.managerTrip.checklist.emptyTitle')}\n </p>\n <p className=\"kf-manager-checklist__empty-body\">\n {t('chrome.managerTrip.checklist.emptyBody')}\n </p>\n </div>\n ) : (\n sections.map((section) => (\n <SectionCardUI\n key={section.id}\n section={section}\n items={rankedItems(itemsForSection(liveItems, section.id))}\n completedByNameFor={completedByNameFor}\n pendingItemIds={pendingItemIds}\n ItemRowComponent={ItemRowUI}\n onToggleItem={(item) => {\n const newStatus = item.status === 'COMPLETE' ? 'OPEN' : 'COMPLETE';\n const optimisticItem: ChecklistItemLiveRow = {\n ...item,\n status: newStatus,\n completedByManagerId: newStatus === 'COMPLETE' ? (myManagerId ?? null) : null,\n performedByKind: newStatus === 'COMPLETE' ? 'MANAGER' : null,\n performedById: newStatus === 'COMPLETE' ? (myManagerId ?? null) : null,\n completedAt:\n newStatus === 'COMPLETE'\n ? (checklist.aggregate.fetchedAt ?? item.updatedAt)\n : null,\n version: item.version + 1,\n };\n setToggleOverrides((previous) => new Map(previous).set(item.id, optimisticItem));\n void withPending(item.id, () =>\n checklist.toggleItem({ itemId: item.id, expectedStatus: item.status }),\n ).catch(() => {\n setToggleOverrides((previous) => {\n const next = new Map(previous);\n next.delete(item.id);\n return next;\n });\n });\n }}\n onEditItem={(item) => setEditingItem(item)}\n onDeleteItem={(item) => {\n if (item.status === 'COMPLETE') {\n return;\n }\n void withPending(item.id, () =>\n checklist.removeItem({ itemId: item.id, version: item.version }),\n );\n }}\n />\n ))\n )}\n\n <AddItemSheet\n open={addOpen}\n sections={sections}\n onSubmit={async (input) => {\n await checklist.addItem(input);\n }}\n onClose={() => setAddOpen(false)}\n />\n\n <EditItemSheet\n item={editingItem}\n onSubmit={async (input) => {\n await checklist.patchItem(input);\n }}\n onClose={() => setEditingItem(undefined)}\n />\n\n <PullTemplateSheet\n open={pullOpen}\n listTemplates={() => checklist.listTemplates()}\n onSubmit={async (input) => {\n await checklist.pullTemplate(input);\n }}\n onClose={() => setPullOpen(false)}\n />\n </div>\n );\n}\n","import type { CloseoutBlockerRow } from '../ManagerCloseoutSection.types';\n\n// `blockers[].key` is a closed, 11-value enum (`CloseoutAggregateResponse`'s\n// own doc comment: \"the inventory is closed at eleven keys — a twelfth is a\n// spec change, not a release\") — a plain ranking table is the right shape\n// here, not a type-keyed registry (hard rule #8 targets OPEN key sets; this\n// precedent already stands for Pickups' 4-key `rollup`).\n\n/** Hard-first, then array order (the server's own — never re-sorted within\n * a severity tier, since `title`/`subLine` order is server-rendered and\n * \"reword-safe,\" implying position is meaningful too). */\nexport function rankBlockers(\n blockers: readonly CloseoutBlockerRow[],\n): readonly CloseoutBlockerRow[] {\n return blockers\n .map((row, index) => ({ row, index }))\n .sort((a, b) => {\n if (a.row.severity !== b.row.severity) {\n return a.row.severity === 'hard' ? -1 : 1;\n }\n return a.index - b.index;\n })\n .map(({ row }) => row);\n}\n\n/** `reimbursements_pending` is the one blocker key the spec says has \"no\n * in-session action\" (CRM out-of-band) — every other key resolves to a real\n * tab via `ManagerTripSection`'s own `actionKey` map. This is the ONE place\n * that fact is checked, so the composite and its host agree on it. */\nexport function hasInSessionAction(blocker: CloseoutBlockerRow): boolean {\n return blocker.key !== 'reimbursements_pending';\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n// 16px default, matching the sibling-composite convention (Checklist/Forms/\n// Pickups' own `CheckIcon` etc.).\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function WarningIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n );\n}\n\nexport function InfoIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n );\n}\n\nexport function CheckIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n );\n}\n\nexport function LockIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </svg>\n );\n}\n","'use client';\n\n// One blocker row — `title`/`subLine` are server-rendered copy, \"reword-safe,\n// so never parse it\" (`CloseoutAggregateResponse.blockers[].title`'s own doc\n// comment). `actionKey` drives dispatch, never `title`/`count`.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { CloseoutBlockerRow } from '../ManagerCloseoutSection.types';\nimport { hasInSessionAction } from './deriveBlockers';\nimport { InfoIcon, WarningIcon } from './icons';\n\nexport interface BlockerRowProps {\n readonly blocker: CloseoutBlockerRow;\n readonly onAction?: (blocker: CloseoutBlockerRow) => void;\n}\n\nexport function BlockerRow({ blocker, onAction }: BlockerRowProps): ReactNode {\n const { t } = useKaafilChrome();\n const Icon = blocker.severity === 'hard' ? WarningIcon : InfoIcon;\n\n return (\n <div className=\"kf-manager-closeout__blocker-row\" data-severity={blocker.severity}>\n <span className=\"kf-manager-closeout__blocker-icon\">\n <Icon aria-hidden=\"true\" />\n </span>\n <span className=\"kf-manager-closeout__blocker-body\">\n <span className=\"kf-manager-closeout__blocker-title-row\">\n <span className=\"kf-manager-closeout__blocker-title\">{blocker.title}</span>\n {blocker.severity === 'soft' ? (\n <span className=\"kf-manager-closeout__blocker-pill\">\n {t('chrome.managerTrip.closeout.blocker.soft')}\n </span>\n ) : null}\n </span>\n {blocker.subLine !== undefined ? (\n <span className=\"kf-manager-closeout__blocker-subline\">{blocker.subLine}</span>\n ) : null}\n </span>\n {hasInSessionAction(blocker) ? (\n <button\n type=\"button\"\n className=\"kf-manager-closeout__blocker-action kf-press\"\n onClick={() => onAction?.(blocker)}\n >\n {t('chrome.managerTrip.closeout.blocker.resolve')}\n </button>\n ) : null}\n </div>\n );\n}\n","'use client';\n\n// The handover-note autosave textarea. Debounced (800ms) — unlike Manifest's\n// own search row, THIS field really does fire a network write\n// (`saveHandover`) per change, so a debounce is the right call here (that\n// file's own header explains the opposite case). `expectedVersion` is a\n// REQUIRED real field (`SaveCloseoutHandoverRequest`), always sourced from\n// the aggregate's own `handover.version` — never guessed, never omitted.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\n\nexport interface HandoverNoteEditorProps {\n readonly note: string | null;\n readonly version: number;\n readonly disabled: boolean;\n readonly onSave: (input: { handoverNote: string | null; expectedVersion: number }) => void;\n}\n\nconst DEBOUNCE_MS = 800;\n\nexport function HandoverNoteEditor({\n note,\n version,\n disabled,\n onSave,\n}: HandoverNoteEditorProps): ReactNode {\n const { t } = useKaafilChrome();\n const [draft, setDraft] = useState(note ?? '');\n const [savedLabel, setSavedLabel] = useState(false);\n\n // Re-seeds the draft whenever a FRESH aggregate arrives with a different\n // version — never on every render, so mid-typing keystrokes aren't clobbered\n // by this same editor's own pending save resolving.\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentionally re-seeds only on a real version change, not on every `note` identity change.\n useEffect(() => {\n setDraft(note ?? '');\n // eslint-disable-next-line react-hooks/exhaustive-deps -- re-seed on version change only.\n }, [version]);\n\n useEffect(() => {\n if (disabled) {\n return;\n }\n const timer = setTimeout(() => {\n const trimmed = draft.trim();\n const nextNote = trimmed.length > 0 ? trimmed : null;\n if (nextNote !== (note ?? null)) {\n onSave({ handoverNote: nextNote, expectedVersion: version });\n setSavedLabel(true);\n }\n }, DEBOUNCE_MS);\n return () => clearTimeout(timer);\n }, [draft, version, disabled, note, onSave]);\n\n return (\n <div className=\"kf-manager-closeout__handover\">\n <p className=\"kf-eyebrow kf-manager-closeout__eyebrow\">\n {t('chrome.managerTrip.closeout.handover.eyebrow')}\n </p>\n <textarea\n className=\"kf-manager-closeout__handover-input\"\n value={draft}\n disabled={disabled}\n placeholder={t('chrome.managerTrip.closeout.handover.placeholder')}\n rows={4}\n onChange={(event) => {\n setDraft(event.target.value);\n setSavedLabel(false);\n }}\n />\n {savedLabel && !disabled ? (\n <p className=\"kf-manager-closeout__handover-saved\">\n {t('chrome.managerTrip.closeout.handover.saved')}\n </p>\n ) : null}\n </div>\n );\n}\n","// Money formatting — `13-i18n-and-formatting.md §1`. No hardcoded `÷100`\n// (§1.1): the minor-unit exponent is looked up per ISO-4217 currency code,\n// never assumed. Digit grouping follows the currency's own conventional\n// locale (§1.2) — `INR` always gets Indian lakh/crore grouping via `en-IN`,\n// never the active chrome language. Family-shared (`src/manager/internal/`,\n// not one composite's own `internal/`) since both `ManagerNowSection` and\n// `ManagerTripSection` need identical money formatting — a presentation-\n// formatting helper, not a fetch/write concern hard rule #2 requires living\n// in `/core`.\n\n/** §1.1's table. A currency absent here is a defect to fix in the table,\n * never a `?? 2` fallback (the spec's own explicit anti-pattern). */\nconst MINOR_UNIT_EXPONENT: Readonly<Record<string, number>> = {\n JPY: 0,\n KRW: 0,\n VND: 0,\n BHD: 3,\n KWD: 3,\n OMR: 3,\n INR: 2,\n USD: 2,\n EUR: 2,\n GBP: 2,\n AED: 2,\n SGD: 2,\n AUD: 2,\n CAD: 2,\n};\n\n/** The formatting-locale for digit GROUPING only (§1.2) — never for\n * language/word choice, which chrome's own `useKaafilChrome()` owns\n * separately. `en-IN` for `INR`, `en-US`-style Western grouping otherwise. */\nfunction groupingLocale(currency: string): string {\n return currency === 'INR' ? 'en-IN' : 'en-US';\n}\n\n/**\n * `amountMinor` → a display string with the currency's own symbol and\n * digit grouping, e.g. `formatMoneyMinor(423000, 'INR')` → `\"₹4,230.00\"`.\n * Falls back to exponent 2 only for a currency genuinely missing from the\n * table.\n */\nexport function formatMoneyMinor(amountMinor: number, currency: string): string {\n const exponent = MINOR_UNIT_EXPONENT[currency] ?? 2;\n const amount = amountMinor / 10 ** exponent;\n return new Intl.NumberFormat(groupingLocale(currency), {\n style: 'currency',\n currency,\n minimumFractionDigits: exponent,\n maximumFractionDigits: exponent,\n }).format(amount);\n}\n","'use client';\n\n// A typed/explicit confirmation sheet for the lock transition — this\n// session's established convention for a hard, non-reversible action\n// (Checklist's Replace-template, Pickups' close-stop confirm — that sheet's\n// own submit button is disabled purely by real business logic, never an\n// extra manual tick-to-confirm control; mirrored here — the `smoke/` DX\n// audits ban that whole input shape anywhere in `src/manager`, broad on\n// purpose). Same fixed backdrop+sheet recipe `manager-traveller.css`'s own\n// `__sheet-backdrop`/`__sheet` establishes, reused verbatim as\n// `manager-closeout.css`'s own `__sheet-*` classes. `lock()`'s own request\n// carries NO note field (`LockCloseoutRequest`: `expectedVersion?` only) —\n// this sheet asks nothing beyond the recap + a plain confirm tap, never a\n// fabricated \"lock note\" input the real endpoint doesn't accept.\n\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMoneyMinor } from '../../../../internal/formatMoney';\nimport type { CloseoutAggregate } from '../ManagerCloseoutSection.types';\nimport { CloseIcon } from './icons';\n\nexport interface LockConfirmSheetProps {\n readonly open: boolean;\n readonly aggregate: CloseoutAggregate;\n readonly pending: boolean;\n readonly onConfirm: () => void;\n readonly onClose: () => void;\n}\n\nexport function LockConfirmSheet({\n open,\n aggregate,\n pending,\n onConfirm,\n onClose,\n}: LockConfirmSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => document.removeEventListener('keydown', onKeyDown);\n }, [open, onClose]);\n\n if (!open) {\n return null;\n }\n\n const { financialSummary } = aggregate;\n\n return (\n <div className=\"kf-manager-closeout__sheet-backdrop\">\n <div\n className=\"kf-manager-closeout__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.closeout.lock.confirmTitle')}\n >\n <div className=\"kf-manager-closeout__sheet-header\">\n <p className=\"kf-manager-closeout__sheet-title\">\n {t('chrome.managerTrip.closeout.lock.confirmTitle')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-closeout__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n <p className=\"kf-manager-closeout__sheet-body\">\n {t('chrome.managerTrip.closeout.lock.confirmBody')}\n </p>\n <div className=\"kf-manager-closeout__sheet-recap\">\n <span>{t('chrome.managerTrip.closeout.financial.balanceDue')}</span>\n <span>\n {formatMoneyMinor(financialSummary.balanceDueMinor, financialSummary.currency)}\n </span>\n </div>\n <button\n type=\"button\"\n className=\"kf-manager-closeout__sheet-submit kf-press\"\n disabled={pending}\n onClick={onConfirm}\n >\n {pending\n ? t('chrome.managerTrip.closeout.lock.locking')\n : t('chrome.managerTrip.closeout.lock.action')}\n </button>\n </div>\n </div>\n );\n}\n","// `13-i18n-and-formatting.md`'s \"never the ambient browser locale\" rule —\n// same fixed `'en-GB'` convention Pickups' own `formatPickupTime.ts`\n// established for a server-supplied ISO timestamp.\nconst DATE_FORMATTER = new Intl.DateTimeFormat('en-GB', {\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport function formatCloseoutDate(iso: string): string {\n return DATE_FORMATTER.format(new Date(iso));\n}\n","'use client';\n\n// The read-only recap shown once `lockedAt !== null` — replaces the\n// blocker/handover/lock UI entirely (`04-closing-day.md`'s own \"locked\"\n// state: \"read-only summary + `UnlockForm`\").\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { CloseoutAggregate } from '../ManagerCloseoutSection.types';\nimport { formatCloseoutDate } from './formatCloseoutDate';\nimport { LockIcon } from './icons';\n\nconst PERFORMED_BY_LABEL_KEY: Record<string, string> = {\n MANAGER: 'chrome.managerTrip.closeout.performedBy.manager',\n AGENCY_ADMIN: 'chrome.managerTrip.closeout.performedBy.agencyAdmin',\n API_KEY: 'chrome.managerTrip.closeout.performedBy.apiKey',\n SYSTEM: 'chrome.managerTrip.closeout.performedBy.system',\n};\n\nexport interface LockedSummaryProps {\n readonly aggregate: CloseoutAggregate;\n}\n\nexport function LockedSummary({ aggregate }: LockedSummaryProps): ReactNode {\n const { t } = useKaafilChrome();\n const performedByLabel =\n aggregate.performedByKind !== null\n ? t(\n PERFORMED_BY_LABEL_KEY[aggregate.performedByKind] ??\n 'chrome.managerTrip.closeout.performedBy.system',\n )\n : undefined;\n\n return (\n <div className=\"kf-manager-closeout__locked\" data-heading-target=\"true\">\n <span className=\"kf-manager-closeout__locked-icon\">\n <LockIcon aria-hidden=\"true\" />\n </span>\n <p className=\"kf-manager-closeout__locked-title\">\n {t('chrome.managerTrip.closeout.locked.title')}\n </p>\n {aggregate.lockedAt !== null ? (\n <p className=\"kf-manager-closeout__locked-meta\">\n {t('chrome.managerTrip.closeout.locked.metaLine')\n .replace('{date}', formatCloseoutDate(aggregate.lockedAt))\n .replace('{by}', performedByLabel ?? '')}\n </p>\n ) : null}\n {aggregate.handover.note !== null ? (\n <p className=\"kf-manager-closeout__locked-note\">{aggregate.handover.note}</p>\n ) : null}\n </div>\n );\n}\n","'use client';\n\n// The stage badge + financial-summary strip — mirrors `CloseoutStageTracker`\n// (`04-closing-day.md`). `stage` is fully server-derived; this component\n// never computes it.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMoneyMinor } from '../../../../internal/formatMoney';\nimport type { CloseoutAggregate } from '../ManagerCloseoutSection.types';\n\nconst STAGE_LABEL_KEY: Record<string, string> = {\n RETURNED: 'chrome.managerTrip.closeout.stage.returned',\n RESOLVING: 'chrome.managerTrip.closeout.stage.resolving',\n RECONCILED: 'chrome.managerTrip.closeout.stage.reconciled',\n LOCKED: 'chrome.managerTrip.closeout.stage.locked',\n};\n\nexport function stageLabelKey(stage: CloseoutAggregate['stage']): string {\n return stage !== null\n ? (STAGE_LABEL_KEY[stage] ?? 'chrome.managerTrip.closeout.stage.notReturned')\n : 'chrome.managerTrip.closeout.stage.notReturned';\n}\n\nexport interface StageStripProps {\n readonly aggregate: CloseoutAggregate;\n}\n\nexport function StageStrip({ aggregate }: StageStripProps): ReactNode {\n const { t } = useKaafilChrome();\n const { financialSummary } = aggregate;\n\n return (\n <div className=\"kf-manager-closeout__stage\">\n <span className=\"kf-manager-closeout__stage-badge\" data-stage={aggregate.stage ?? 'none'}>\n {t(stageLabelKey(aggregate.stage))}\n </span>\n <div className=\"kf-manager-closeout__stage-grid\">\n <div className=\"kf-manager-closeout__stage-cell\">\n <p className=\"kf-manager-closeout__stage-cell-label\">\n {t('chrome.managerTrip.closeout.financial.collected')}\n </p>\n <p className=\"kf-manager-closeout__stage-cell-value\">\n {formatMoneyMinor(financialSummary.collectedMinor, financialSummary.currency)}\n </p>\n </div>\n <div className=\"kf-manager-closeout__stage-cell\">\n <p className=\"kf-manager-closeout__stage-cell-label\">\n {t('chrome.managerTrip.closeout.financial.spent')}\n </p>\n <p className=\"kf-manager-closeout__stage-cell-value\">\n {formatMoneyMinor(financialSummary.spentMinor, financialSummary.currency)}\n </p>\n </div>\n <div className=\"kf-manager-closeout__stage-cell\">\n <p className=\"kf-manager-closeout__stage-cell-label\">\n {t('chrome.managerTrip.closeout.financial.floatOutstanding')}\n </p>\n <p\n className=\"kf-manager-closeout__stage-cell-value\"\n data-tone={financialSummary.floatOutstandingMinor < 0 ? 'warn' : undefined}\n >\n {formatMoneyMinor(financialSummary.floatOutstandingMinor, financialSummary.currency)}\n </p>\n </div>\n <div className=\"kf-manager-closeout__stage-cell\">\n <p className=\"kf-manager-closeout__stage-cell-label\">\n {t('chrome.managerTrip.closeout.financial.balanceDue')}\n </p>\n <p\n className=\"kf-manager-closeout__stage-cell-value\"\n data-tone={financialSummary.balanceDueMinor > 0 ? 'warn' : undefined}\n >\n {formatMoneyMinor(financialSummary.balanceDueMinor, financialSummary.currency)}\n </p>\n </div>\n </div>\n </div>\n );\n}\n","'use client';\n\n// The unlock-REQUEST form — never calls `closeout.unlock()` itself\n// (`apiKeyAuth`-only; `UnlockForm`'s own spec text, verbatim: \"this screen\n// makes no `kaafil-js` call of its own here or anywhere else\"). Submitting\n// calls the host's own `onSubmitUnlockRequest`, routed to ops out-of-band.\n// Omitted prop → a static message, never a dead-end form with nowhere to go.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\n\nexport interface UnlockRequestFormProps {\n readonly tripRef: string;\n readonly onSubmit?: (payload: { tripRef: string; reason: string }) => Promise<void>;\n}\n\nexport function UnlockRequestForm({ tripRef, onSubmit }: UnlockRequestFormProps): ReactNode {\n const { t } = useKaafilChrome();\n const [reason, setReason] = useState('');\n const [submitting, setSubmitting] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n\n if (onSubmit === undefined) {\n return (\n <p className=\"kf-manager-closeout__unlock-static\">\n {t('chrome.managerTrip.closeout.unlock.contactOps')}\n </p>\n );\n }\n\n if (submitted) {\n return (\n <p className=\"kf-manager-closeout__unlock-static\">\n {t('chrome.managerTrip.closeout.unlock.requestSubmitted')}\n </p>\n );\n }\n\n const canSubmit = reason.trim().length > 0 && !submitting;\n\n return (\n <div className=\"kf-manager-closeout__unlock\">\n <p className=\"kf-eyebrow kf-manager-closeout__eyebrow\">\n {t('chrome.managerTrip.closeout.unlock.eyebrow')}\n </p>\n <textarea\n className=\"kf-manager-closeout__unlock-input\"\n value={reason}\n onChange={(event) => setReason(event.target.value)}\n placeholder={t('chrome.managerTrip.closeout.unlock.placeholder')}\n rows={3}\n />\n <button\n type=\"button\"\n className=\"kf-manager-closeout__unlock-submit kf-press\"\n disabled={!canSubmit}\n onClick={() => {\n setSubmitting(true);\n void onSubmit({ tripRef, reason: reason.trim() })\n .then(() => setSubmitted(true))\n .finally(() => setSubmitting(false));\n }}\n >\n {submitting\n ? t('chrome.managerTrip.closeout.unlock.submitting')\n : t('chrome.managerTrip.closeout.unlock.submit')}\n </button>\n </div>\n );\n}\n","'use client';\n\n// The Closing tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'closing'` tab panel\n// (both TRIP and TREK — see this file's own header for why). `useCloseout\n// (tripRef)` (`04-closing-day.md`'s `ClosingDayFlow`) is the one domain\n// hook. Single-view model: stage/financial strip → blocker checklist →\n// handover note → sticky lock button, replaced by a read-only recap +\n// unlock-request form once locked — mirrors the spec's own `ClosingDayFlow`,\n// NOT the boilerplate's separate 5-step wizard-with-photo-capture screen\n// (no `steps`/`photos` field exists anywhere on the real\n// `CloseoutAggregateResponse` for a step machine to key off).\n//\n// `'closing-day'` IS the real gate here — GROUP vs PERSONALIZED\n// (`useCloseout.ts`'s own header), never `Trip.eventType`. `computeTripTabs\n// .ts` used to expose `'closing'` on the TREK tab list only, matching the\n// boilerplate's own tab-bar layout, not a real constraint — this wave adds\n// it to `TRIP_TABS` too, so a PERSONALIZED trek and a GROUP trip both reach\n// this composite and let the capability gate (mode-dark, 404-shaped) decide\n// for real, rather than the tab bar deciding for it.\n//\n// NEITHER WRITE IS OFFLINE-QUEUED — `useCloseout.ts`'s own header: both\n// `saveHandover`/`lock` call `client.closeout.*()` directly (not\n// `OfflineEngine.enqueue()`), because both re-derive the WHOLE aggregate\n// server-side and the working→locked transition must be driven by a\n// server-confirmed `stage`/`lockedAt`, never a locally guessed one. A write\n// attempted offline throws — this composite surfaces that as a plain\n// inline failure state, never a fabricated \"queued\" status this hook\n// doesn't actually have.\n//\n// `unlock()` IS NEVER CALLED FROM HERE — `apiKeyAuth`-only; see\n// `internal/UnlockRequestForm.tsx`'s own header.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useCloseout } from '../../../../core/hooks/useCloseout.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { BlockerRow } from './internal/BlockerRow';\nimport { rankBlockers } from './internal/deriveBlockers';\nimport { HandoverNoteEditor } from './internal/HandoverNoteEditor';\nimport { CheckIcon } from './internal/icons';\nimport { LockConfirmSheet } from './internal/LockConfirmSheet';\nimport { LockedSummary } from './internal/LockedSummary';\nimport { StageStrip } from './internal/StageStrip';\nimport { UnlockRequestForm } from './internal/UnlockRequestForm';\nimport type { ManagerCloseoutSectionProps } from './ManagerCloseoutSection.types';\n\nexport function ManagerCloseoutSection({\n tripRef,\n onBlockerAction,\n onSubmitUnlockRequest,\n components,\n style,\n}: ManagerCloseoutSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const closeout = useCloseout(tripRef);\n const BlockerRowUI = components?.BlockerRow ?? BlockerRow;\n\n const [lockSheetOpen, setLockSheetOpen] = useState(false);\n const [lockPending, setLockPending] = useState(false);\n\n if (closeout.status === 'loading') {\n return (\n <div className=\"kf-manager-closeout__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-closeout__skeleton-line\" />\n <div className=\"kf-manager-closeout__skeleton-line\" />\n <div className=\"kf-manager-closeout__skeleton-line kf-manager-closeout__skeleton-line--short\" />\n </div>\n );\n }\n\n if (closeout.status === 'dark' || closeout.status === 'error') {\n return null;\n }\n\n if (!closeout.loaded || closeout.aggregate === undefined) {\n return closeout.lastFetchFailed ? null : (\n <div className=\"kf-manager-closeout__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-closeout__skeleton-line\" />\n <div className=\"kf-manager-closeout__skeleton-line\" />\n </div>\n );\n }\n\n const { aggregate } = closeout;\n\n if (aggregate.stage === null) {\n return (\n <div className=\"kf-manager-closeout\" style={tokenStyle(style)}>\n <div className=\"kf-manager-closeout__not-returned\">\n {t('chrome.managerTrip.closeout.notReturnedYet')}\n </div>\n </div>\n );\n }\n\n if (aggregate.lockedAt !== null) {\n return (\n <div className=\"kf-manager-closeout\" style={tokenStyle(style)}>\n <LockedSummary aggregate={aggregate} />\n <UnlockRequestForm tripRef={tripRef} onSubmit={onSubmitUnlockRequest} />\n </div>\n );\n }\n\n const rankedBlockers = rankBlockers(aggregate.blockers);\n const { lock: lockFn, saveHandover: saveHandoverFn } = closeout;\n\n async function handleLockConfirm(): Promise<void> {\n setLockPending(true);\n try {\n await lockFn();\n setLockSheetOpen(false);\n } finally {\n setLockPending(false);\n }\n }\n\n return (\n <div className=\"kf-manager-closeout\" style={tokenStyle(style)}>\n <StageStrip aggregate={aggregate} />\n\n {rankedBlockers.length === 0 ? (\n <div className=\"kf-manager-closeout__all-clear\">\n <CheckIcon aria-hidden=\"true\" />\n <p>{t('chrome.managerTrip.closeout.allClear')}</p>\n </div>\n ) : (\n <div className=\"kf-manager-closeout__blockers\">\n <p className=\"kf-eyebrow kf-manager-closeout__eyebrow\">\n {t('chrome.managerTrip.closeout.blocker.eyebrow').replace(\n '{count}',\n String(rankedBlockers.length),\n )}\n </p>\n {rankedBlockers.map((blocker) => (\n <BlockerRowUI key={blocker.key} blocker={blocker} onAction={onBlockerAction} />\n ))}\n </div>\n )}\n\n <HandoverNoteEditor\n note={aggregate.handover.note}\n version={aggregate.handover.version}\n disabled={false}\n onSave={(input) => void saveHandoverFn(input)}\n />\n\n <div className=\"kf-manager-closeout__foot\">\n <button\n type=\"button\"\n className=\"kf-manager-closeout__lock-trigger kf-press\"\n disabled={!aggregate.canLock}\n title={aggregate.lockDisabledReason ?? undefined}\n onClick={() => setLockSheetOpen(true)}\n >\n {t('chrome.managerTrip.closeout.lock.action')}\n </button>\n {!aggregate.canLock && aggregate.lockDisabledReason !== null ? (\n <p className=\"kf-manager-closeout__lock-disabled-reason\">\n {aggregate.lockDisabledReason}\n </p>\n ) : null}\n </div>\n\n <LockConfirmSheet\n open={lockSheetOpen}\n aggregate={aggregate}\n pending={lockPending}\n onConfirm={() => void handleLockConfirm()}\n onClose={() => setLockSheetOpen(false)}\n />\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function ReceiptIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 2v20l2-1.5L8 22l2-1.5L12 22l2-1.5L16 22l2-1.5L20 22V2l-2 1.5L16 2l-2 1.5L12 2l-2 1.5L8 2 6 3.5 4 2Z\" />\n <path d=\"M8 8h8M8 12h8M8 16h5\" />\n </svg>\n );\n}\n\nexport function FormFileIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z\" />\n <path d=\"M14 2v6h6\" />\n <path d=\"m9 15 2 2 4-4\" />\n </svg>\n );\n}\n\nexport function VoucherIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z\" />\n <path d=\"M13 5v2M13 11v2M13 17v2\" />\n </svg>\n );\n}\n\n/** A filed document — a sheet with a fold and a clip. Distinct from\n * `FormFileIcon` (which is ruled, an answered form) and from `VoucherIcon`\n * (a ticket): this is paperwork the agency put on the trip. */\nexport function TripDocumentIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 2H7a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6Z\" />\n <path d=\"M15 2v4h4\" />\n <path d=\"M9 13h6M9 17h3\" />\n </svg>\n );\n}\n\nexport function GenericFileIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z\" />\n <path d=\"M14 2v6h6\" />\n </svg>\n );\n}\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n );\n}\n\nexport function ExternalLinkIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <path d=\"M15 3h6v6M10 14 21 3\" />\n </svg>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { FilePurpose } from '../ManagerDocumentsSection.types';\nimport { ChevronIcon, FormFileIcon, ReceiptIcon, TripDocumentIcon, VoucherIcon } from './icons';\n\n// Type-keyed registries (hard rule #8), never a switch — the real, closed\n// `FilePurpose` enum from `FileListResponse` (verified against\n// `generated/schema.d.ts`).\n//\n// FOUR VALUES NOW, NOT THREE. `trip_document` joined the enum when the desk\n// gained a way to file the trip's own paperwork, and these two `Record`s are\n// exactly why that was a compile error rather than a silently missing tile: a\n// manager on the ground needs the permit and their travellers' tickets as\n// much as anyone. A trip-wide document reaches every manager on the trip; a\n// traveller-scoped one is filtered out server-side and never appears here.\nconst PURPOSE_ICON: Record<FilePurpose, (props: { className?: string }) => ReactNode> = {\n expense_receipt: ReceiptIcon,\n form_attachment: FormFileIcon,\n booking_voucher: VoucherIcon,\n trip_document: TripDocumentIcon,\n};\n\nconst PURPOSE_LABEL_KEY: Record<FilePurpose, string> = {\n expense_receipt: 'chrome.managerTrip.documents.bucket.expenseReceipt',\n form_attachment: 'chrome.managerTrip.documents.bucket.formAttachment',\n booking_voucher: 'chrome.managerTrip.documents.bucket.bookingVoucher',\n trip_document: 'chrome.managerTrip.documents.bucket.tripDocument',\n};\n\nexport interface DocumentBucketTileProps {\n readonly purpose: FilePurpose;\n readonly count: number;\n readonly onOpen: (purpose: FilePurpose) => void;\n}\n\nexport function DocumentBucketTile({ purpose, count, onOpen }: DocumentBucketTileProps): ReactNode {\n const { t } = useKaafilChrome();\n const Icon = PURPOSE_ICON[purpose];\n\n return (\n <button\n type=\"button\"\n className=\"kf-manager-documents__tile kf-press\"\n onClick={() => onOpen(purpose)}\n >\n <Icon className=\"kf-manager-documents__tile-icon\" />\n <span className=\"kf-manager-documents__tile-body\">\n <span className=\"kf-manager-documents__tile-label\">{t(PURPOSE_LABEL_KEY[purpose])}</span>\n <span className=\"kf-manager-documents__tile-count\">\n {t('chrome.managerTrip.documents.bucket.count').replace('{count}', String(count))}\n </span>\n </span>\n <ChevronIcon className=\"kf-manager-documents__tile-chevron\" />\n </button>\n );\n}\n","'use client';\n\n// Two-level browser, owned entirely locally (no host wiring needed — a\n// sheet/back-arrow drill-down, not a router, hard rule #9): a bucket grid\n// (one tile per real `purpose` value present in `items`), and, once a\n// bucket is selected, a flat file-row list for that bucket. Never a\n// fabricated \"by day\" bucket axis — no real field on `FileListItem` backs\n// one (see this composite's own `.tsx` header).\n\nimport type { ReactNode } from 'react';\nimport { useMemo, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { FileListItem, FilePurpose } from '../ManagerDocumentsSection.types';\nimport { DocumentBucketTile } from './DocumentBucketTile';\nimport { ChevronIcon, GenericFileIcon } from './icons';\n\n// `trip_document` leads: the permit and the traveller's own ticket are what a\n// manager on the ground reaches for, ahead of the receipts they filed\n// themselves. Empty buckets are dropped below, so a trip with none loses the\n// tile rather than showing a zero.\nconst PURPOSE_ORDER: readonly FilePurpose[] = [\n 'trip_document',\n 'booking_voucher',\n 'expense_receipt',\n 'form_attachment',\n];\n\nfunction formatFileSize(sizeBytes: number): string {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n }\n if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n }\n return `${(sizeBytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nconst FILE_DATE_FORMATTER = new Intl.DateTimeFormat('en-GB', { day: 'numeric', month: 'short' });\n\nexport interface DocumentBucketGridProps {\n readonly items: readonly FileListItem[];\n readonly onOpen: (fileId: string) => void;\n}\n\nexport function DocumentBucketGrid({ items, onOpen }: DocumentBucketGridProps): ReactNode {\n const { t } = useKaafilChrome();\n const [activePurpose, setActivePurpose] = useState<FilePurpose | undefined>(undefined);\n\n const buckets = useMemo(() => {\n return PURPOSE_ORDER.map((purpose) => ({\n purpose,\n items: items.filter((item) => item.purpose === purpose),\n })).filter((bucket) => bucket.items.length > 0);\n }, [items]);\n\n if (activePurpose !== undefined) {\n const bucket = buckets.find((row) => row.purpose === activePurpose);\n const bucketItems = bucket?.items ?? [];\n return (\n <div className=\"kf-manager-documents__bucket-detail\">\n <button\n type=\"button\"\n className=\"kf-manager-documents__back kf-press\"\n onClick={() => setActivePurpose(undefined)}\n >\n <ChevronIcon className=\"kf-manager-documents__back-icon\" />\n {t('chrome.managerTrip.documents.backToBuckets')}\n </button>\n <div className=\"kf-manager-documents__file-list\">\n {bucketItems.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n className=\"kf-manager-documents__file-row kf-press\"\n onClick={() => onOpen(item.id)}\n >\n <GenericFileIcon className=\"kf-manager-documents__file-icon\" />\n <span className=\"kf-manager-documents__file-body\">\n <span className=\"kf-manager-documents__file-meta\">\n {formatFileSize(item.sizeBytes)} ·{' '}\n {FILE_DATE_FORMATTER.format(new Date(item.createdAt))}\n </span>\n </span>\n <ChevronIcon className=\"kf-manager-documents__tile-chevron\" />\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"kf-manager-documents__grid\">\n {buckets.map((bucket) => (\n <DocumentBucketTile\n key={bucket.purpose}\n purpose={bucket.purpose}\n count={bucket.items.length}\n onOpen={setActivePurpose}\n />\n ))}\n </div>\n );\n}\n","'use client';\n\n// The document viewer — a modal sheet, same convention\n// `ManagerVendorsSection`'s own `VendorDetailSheet` establishes\n// (`role=\"dialog\"`, Escape-to-close). Renders `eyebrow`/`metaLine`/\n// `provenanceLine` verbatim — all real, server-composed human-readable\n// strings on `ManagerFileViewResponse` (verified against\n// `generated/schema.d.ts`), never re-derived client-side. `shareTargets`/\n// `shareEyebrow` are ALSO real, server-driven fields (not a boilerplate\n// fabrication) — rendered as a plain label row using the browser's own\n// `navigator.share` where available, falling back to a clipboard copy of\n// `url`, the same fallback chain the reference boilerplate's viewer uses.\n// No offline-cache badge — no real field backs one (dropped, not an\n// oversight).\n\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerFileView } from '../ManagerDocumentsSection.types';\nimport { CloseIcon, ExternalLinkIcon } from './icons';\n\nexport interface DocumentViewerSheetProps {\n readonly file: ManagerFileView | undefined;\n readonly onClose: () => void;\n}\n\nasync function shareFile(file: ManagerFileView): Promise<void> {\n if (file.url === null) {\n return;\n }\n if (typeof navigator.share === 'function') {\n try {\n await navigator.share({ title: file.eyebrow, url: file.url });\n return;\n } catch {\n // Cancelled or unsupported mid-call — fall through to clipboard.\n }\n }\n await navigator.clipboard.writeText(file.url);\n}\n\nexport function DocumentViewerSheet({ file, onClose }: DocumentViewerSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n\n useEffect(() => {\n if (file === undefined) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [file, onClose]);\n\n if (file === undefined) {\n return null;\n }\n\n return (\n <div className=\"kf-manager-documents__sheet-backdrop\">\n <div\n className=\"kf-manager-documents__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={file.eyebrow}\n >\n <div className=\"kf-manager-documents__sheet-header\">\n <div>\n <p className=\"kf-manager-documents__sheet-eyebrow\">{file.eyebrow}</p>\n <p className=\"kf-manager-documents__sheet-meta\">{file.metaLine}</p>\n </div>\n <button\n type=\"button\"\n className=\"kf-manager-documents__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <div className=\"kf-manager-documents__sheet-preview\">\n {file.url === null ? (\n <p className=\"kf-manager-documents__sheet-unavailable\">\n {t('chrome.managerTrip.documents.viewer.unavailable')}\n </p>\n ) : file.fileKind === 'image' ? (\n <img className=\"kf-manager-documents__sheet-image\" src={file.url} alt={file.eyebrow} />\n ) : (\n <>\n <iframe\n className=\"kf-manager-documents__sheet-frame\"\n src={file.url}\n title={file.eyebrow}\n />\n <a\n className=\"kf-manager-documents__sheet-open-link kf-press\"\n href={file.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <ExternalLinkIcon />\n {t('chrome.managerTrip.documents.viewer.openInNewTab')}\n </a>\n </>\n )}\n </div>\n\n {file.provenanceLine !== null ? (\n <p className=\"kf-manager-documents__sheet-provenance\">{file.provenanceLine}</p>\n ) : null}\n\n {file.url !== null && file.shareTargets.length > 0 ? (\n <div className=\"kf-manager-documents__sheet-share\">\n <p className=\"kf-manager-documents__sheet-section-title\">{file.shareEyebrow}</p>\n <div className=\"kf-manager-documents__sheet-share-row\">\n {file.shareTargets.map((target) => (\n <button\n key={target.id}\n type=\"button\"\n className=\"kf-manager-documents__sheet-share-target kf-press\"\n onClick={() => void shareFile(file)}\n >\n {target.label}\n </button>\n ))}\n </div>\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","'use client';\n\n// `ManagerDocumentsSection` — a DOCUMENTED SPEC DEVIATION. `07-files.md`\n// (manager family) states plainly: \"there is no standalone 'files' screen,\n// and none should ever be added\" — every file exists embedded only inside\n// expense-receipt capture (`LogExpenseSheet`) and a form field's\n// `SIGNATURE`/`FILE_UPLOAD` editor. This composite exists anyway, as a\n// deliberate product decision made with the user this session, not an\n// oversight: `files.list()`/`files.managerView()` are real, purpose-built\n// SDK methods for exactly this shape — `managerView`'s own header literally\n// calls its response \"manager-doc-viewer-shaped\" — so the SDK surface\n// anticipates a trip-wide browser even though the current manager-family UI\n// spec does not yet. If a future spec pass formalizes (or forbids) this for\n// real, resolve this comment against it rather than leaving both standing.\n//\n// `useFiles(tripRef)` is UNGATED BY CHOICE — the gate belongs to whichever\n// composite mounts it. (This line used to say no `'files'` capability row\n// existed; that was wrong, and `useFiles.ts`'s own header now carries the\n// correction and the catalog references. Unlike the admin Documents tab,\n// which resolves the triple through `useCapabilityStatuses()`, this surface\n// is reached from a manager trip whose rail has already gated it.) So this\n// composite owns its own plain\n// fetch-on-mount loading/error state around `list()`, the same shape\n// `useManagerMe`/`useManagerToday` use internally, since there is no\n// domain-hook status union to lean on here.\n//\n// Bucket grid groups the real `purpose` field into tiles (never a fabricated\n// \"by day\" axis — no real field on `FileListItem` backs one). Only\n// `status: 'ready'` files are browsable — a `pending`/`orphaned`/`purged`\n// row has nothing a viewer can meaningfully show.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useFiles } from '../../../../core/hooks/useFiles.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { DocumentBucketGrid } from './internal/DocumentBucketGrid';\nimport { DocumentViewerSheet } from './internal/DocumentViewerSheet';\nimport type {\n FileListItem,\n ManagerDocumentsSectionProps,\n ManagerFileView,\n} from './ManagerDocumentsSection.types';\n\ntype LoadState =\n | { readonly status: 'loading' }\n | { readonly status: 'error' }\n | { readonly status: 'ready'; readonly items: readonly FileListItem[] };\n\nexport function ManagerDocumentsSection({\n tripRef,\n style,\n}: ManagerDocumentsSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const files = useFiles({ tripRef });\n const [state, setState] = useState<LoadState>({ status: 'loading' });\n const [viewerFile, setViewerFile] = useState<ManagerFileView | undefined>(undefined);\n\n // `useFiles` returns a fresh object every render — `tripRef` is the one\n // real dependency this effect needs to re-key on.\n // biome-ignore lint/correctness/useExhaustiveDependencies: see comment above\n useEffect(() => {\n let cancelled = false;\n setState({ status: 'loading' });\n files\n .list()\n .then((items) => {\n if (!cancelled) {\n setState({ status: 'ready', items: items.filter((item) => item.status === 'ready') });\n }\n })\n .catch(() => {\n if (!cancelled) {\n setState({ status: 'error' });\n }\n });\n return () => {\n cancelled = true;\n };\n }, [tripRef]);\n\n async function handleOpen(fileId: string): Promise<void> {\n const view = await files.managerView(fileId);\n setViewerFile(view);\n }\n\n if (state.status === 'loading') {\n return (\n <div className=\"kf-manager-documents__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-documents__skeleton-tile\" />\n <div className=\"kf-manager-documents__skeleton-tile\" />\n </div>\n );\n }\n\n if (state.status === 'error') {\n return null;\n }\n\n return (\n <div className=\"kf-manager-documents\" style={tokenStyle(style)}>\n {state.items.length === 0 ? (\n <p className=\"kf-manager-documents__empty\">{t('chrome.managerTrip.documents.empty')}</p>\n ) : (\n <DocumentBucketGrid items={state.items} onOpen={(fileId) => void handleOpen(fileId)} />\n )}\n <DocumentViewerSheet file={viewerFile} onClose={() => setViewerFile(undefined)} />\n </div>\n );\n}\n","// Shared pure helpers behind the manager family's money sheets\n// (`LogExpenseSheet`/`RecordCollectionSheet`/`FloatMovementSheet`, this same\n// folder) — extracted out of `ManagerMoneySection`'s own `internal/\n// deriveMoney.ts` once `ManagerNowSection`'s Quick Actions FAB needed the\n// exact same sheets (same reasoning `ManagerFab` itself was promoted to\n// `manager/shell/` for: \"a future manager composite/screen will reach for\n// this again\"). `ManagerMoneySection`'s own `internal/deriveMoney.ts`\n// re-exports these so none of its sibling internals needed an import-path\n// change. Types are structural off the real `/core` hooks (hard rule #1: no\n// `kaafil-js` import outside `src/core/`, even type-only).\n\nimport type { EligibleRow } from '../../../core/hooks/useCollections.js';\nimport type { ExpenseCategoryKey, ExpensePaymentModeKey } from '../../../core/hooks/useExpenses.js';\nimport type { PartiesTripRosterRow } from '../../../core/hooks/useParties.js';\n\n/** No shared minor-unit money formatter exists anywhere in `/primitives`\n * (verified this session) — `Intl.NumberFormat('en-IN', ...)` gives the\n * real Indian digit-grouping (\"₹4,28,400\") the reference screenshot shows,\n * which `en-US`/plain grouping would get wrong. */\nexport function formatMinorAmount(amountMinor: number, currency: string): string {\n return new Intl.NumberFormat('en-IN', {\n style: 'currency',\n currency,\n maximumFractionDigits: 0,\n }).format(amountMinor / 100);\n}\n\n/** Derives display initials off a real full name — the same client-side\n * fallback this session's own fixture `occupant()` helpers already use\n * where the wire carries no `glyph` field (`TripManifestItemResponse` has\n * none; unlike a seating/rooming occupant, which the engine glyph-marks\n * server-side). */\nexport function initialsFor(fullName: string): string {\n return fullName\n .split(/\\s+/)\n .filter((part) => part.length > 0)\n .slice(0, 2)\n .map((part) => part.charAt(0).toUpperCase())\n .join('');\n}\n\nexport interface BalanceDueDisplayRow {\n readonly travellerId: string;\n readonly fullName: string;\n readonly initials: string;\n readonly outstandingMinor: number;\n readonly currency: string;\n}\n\n/** `EligibleRowResponse` carries no traveller name (verified against the\n * generated schema directly) — joined here against `useParties()`'s trip\n * roster by `travellerId`, the same \"resolve an id against a roster hook\"\n * pattern this session's Vehicles wave used for vendor/manager names. A\n * traveller missing from the roster (a timing gap between two independent\n * live reads) is dropped rather than shown with a fabricated name. */\nexport function joinBalancesDue(\n eligible: readonly EligibleRow[],\n roster: readonly PartiesTripRosterRow[],\n): readonly BalanceDueDisplayRow[] {\n const rosterByTravellerId = new Map(roster.map((row) => [row.traveller.travellerId, row]));\n return eligible\n .map((row): BalanceDueDisplayRow | undefined => {\n const rosterRow = rosterByTravellerId.get(row.travellerId);\n if (rosterRow === undefined) {\n return undefined;\n }\n return {\n travellerId: row.travellerId,\n fullName: rosterRow.traveller.fullName,\n initials: initialsFor(rosterRow.traveller.fullName),\n outstandingMinor: row.outstandingMinor,\n currency: row.currency,\n };\n })\n .filter((row): row is BalanceDueDisplayRow => row !== undefined);\n}\n\nconst EXPENSE_CATEGORY_LABEL_KEY: Record<ExpenseCategoryKey, string> = {\n ACCOM: 'chrome.managerTrip.money.category.accom',\n FOOD: 'chrome.managerTrip.money.category.food',\n TRANSPORT: 'chrome.managerTrip.money.category.transport',\n ACTIVITY: 'chrome.managerTrip.money.category.activity',\n MISC: 'chrome.managerTrip.money.category.misc',\n};\n\nexport function expenseCategoryLabelKey(category: ExpenseCategoryKey): string {\n return EXPENSE_CATEGORY_LABEL_KEY[category];\n}\n\nconst PAYMENT_MODE_LABEL_KEY: Record<ExpensePaymentModeKey, string> = {\n FLOAT_CASH: 'chrome.managerTrip.money.paymentMode.floatCash',\n PERSONAL: 'chrome.managerTrip.money.paymentMode.personal',\n OTHER: 'chrome.managerTrip.money.paymentMode.other',\n};\n\nexport function paymentModeLabelKey(mode: ExpensePaymentModeKey): string {\n return PAYMENT_MODE_LABEL_KEY[mode];\n}\n\nexport const COLLECTION_MODES = ['CASH', 'UPI', 'CARD', 'BANK'] as const;\nexport type CollectionModeKey = (typeof COLLECTION_MODES)[number];\n\nconst COLLECTION_MODE_LABEL_KEY: Record<CollectionModeKey, string> = {\n CASH: 'chrome.managerTrip.money.collectionMode.cash',\n UPI: 'chrome.managerTrip.money.collectionMode.upi',\n CARD: 'chrome.managerTrip.money.collectionMode.card',\n BANK: 'chrome.managerTrip.money.collectionMode.bank',\n};\n\nexport function collectionModeLabelKey(mode: CollectionModeKey): string {\n return COLLECTION_MODE_LABEL_KEY[mode];\n}\n\n/** `reference` is required for every collection mode except CASH — the\n * real server rule (`RecordCollectionRequest.reference`'s own doc: \"Required\n * for UPI, CARD and BANK; optional for CASH\"), mirrored client-side only as\n * an early, honest refusal — the server remains the actual authority. */\nexport function collectionReferenceRequired(mode: CollectionModeKey): boolean {\n return mode !== 'CASH';\n}\n","'use client';\n\n// Only rendered when `summary.rows.length > 1` — a solo-manager trip has\n// nothing to compare against, so the caller skips mounting this entirely\n// rather than showing a one-row \"comparison.\" Real data only:\n// `FloatSummaryRow` fields, never a fabricated name (the wire carries no\n// manager name on this row — `managerRef` is shown as-is, matching\n// `ManagerMoneySection`'s own precedent of never inventing a name a hook\n// doesn't hand it).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMinorAmount } from '../../../../shell/MoneyFlows/moneyFormat';\nimport type { FloatSummaryRow } from '../ManagerFloatLedgerSection.types';\n\nexport interface BalanceSummaryStripProps {\n readonly rows: readonly FloatSummaryRow[];\n readonly ownManagerId: string;\n}\n\nexport function BalanceSummaryStrip({ rows, ownManagerId }: BalanceSummaryStripProps): ReactNode {\n const { t } = useKaafilChrome();\n\n return (\n <div className=\"kf-manager-float-ledger__summary\">\n <p className=\"kf-eyebrow kf-manager-float-ledger__eyebrow\">\n {t('chrome.managerTrip.floatLedger.summaryEyebrow')}\n </p>\n <div className=\"kf-manager-float-ledger__summary-list\">\n {rows.map((row) => (\n <div key={row.managerId} className=\"kf-manager-float-ledger__summary-row\">\n <span className=\"kf-manager-float-ledger__summary-name\">\n {row.managerId === ownManagerId\n ? t('chrome.managerTrip.floatLedger.summaryYou')\n : (row.managerRef ?? row.managerId)}\n </span>\n <span className=\"kf-manager-float-ledger__summary-balance\">\n {formatMinorAmount(row.balanceMinor, row.currency)}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","// `13-i18n-and-formatting.md`'s \"never the ambient browser locale\" rule —\n// same fixed `'en-GB'` convention `ManagerMeSection`'s own\n// `formatMeDateRange.ts` established.\nconst FLOAT_LEDGER_DATE_FORMATTER = new Intl.DateTimeFormat('en-GB', {\n day: 'numeric',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n});\n\nexport function formatFloatLedgerDate(createdAt: string): string {\n return FLOAT_LEDGER_DATE_FORMATTER.format(new Date(createdAt));\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function ArrowInIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14M5 12l7 7 7-7\" />\n </svg>\n );\n}\n\nexport function ArrowOutIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 19V5M5 12l7-7 7 7\" />\n </svg>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMinorAmount } from '../../../../shell/MoneyFlows/moneyFormat';\nimport type { FloatMovementRow } from '../ManagerFloatLedgerSection.types';\nimport { formatFloatLedgerDate } from './formatFloatLedgerDate';\nimport { ArrowInIcon, ArrowOutIcon } from './icons';\n\n// Type-keyed registry (hard rule #8), never a switch — the real, closed\n// 4-value `FloatLedgerResponse.data[].type` enum (verified against\n// `generated/schema.d.ts`).\nconst MOVEMENT_LABEL_KEY: Record<FloatMovementRow['type'], string> = {\n ISSUE: 'chrome.managerTrip.floatLedger.type.issue',\n RETURN: 'chrome.managerTrip.floatLedger.type.return',\n ADJUSTMENT: 'chrome.managerTrip.floatLedger.type.adjustment',\n EXPENSE: 'chrome.managerTrip.floatLedger.type.expense',\n};\n\nexport interface LedgerRowProps {\n readonly movement: FloatMovementRow;\n}\n\nexport function LedgerRow({ movement }: LedgerRowProps): ReactNode {\n const { t } = useKaafilChrome();\n const isIn = movement.direction === 'IN';\n const Icon = isIn ? ArrowInIcon : ArrowOutIcon;\n\n return (\n <div className=\"kf-manager-float-ledger__row\">\n <span className=\"kf-manager-float-ledger__row-icon\" data-direction={movement.direction}>\n <Icon />\n </span>\n <span className=\"kf-manager-float-ledger__row-body\">\n <span className=\"kf-manager-float-ledger__row-title\">\n {t(MOVEMENT_LABEL_KEY[movement.type])}\n </span>\n {movement.note !== null ? (\n <span className=\"kf-manager-float-ledger__row-note\">{movement.note}</span>\n ) : null}\n <span className=\"kf-manager-float-ledger__row-date\">\n {formatFloatLedgerDate(movement.createdAt)}\n </span>\n </span>\n <span className=\"kf-manager-float-ledger__row-amounts\">\n <span className=\"kf-manager-float-ledger__row-amount\" data-direction={movement.direction}>\n {isIn ? '+' : '−'}\n {formatMinorAmount(movement.amountMinor, movement.currency)}\n </span>\n <span className=\"kf-manager-float-ledger__row-balance\">\n {t('chrome.managerTrip.floatLedger.balanceAfter')}{' '}\n {formatMinorAmount(movement.runningBalanceMinor, movement.currency)}\n </span>\n </span>\n </div>\n );\n}\n","'use client';\n\n// `ManagerFloatLedgerSection` — fills the ledger-visibility gap\n// `ManagerMoneySection` leaves: it reads `useFloat(tripRef)`'s own\n// `summary.rows[0]` for a balance card but never renders `movements`. No\n// `/core` hook change needed — `useFloat` already exposes both\n// (`movements`: the calling manager's own ledger, cache-first, each row\n// carrying `runningBalanceMinor`; `summary.rows`: every manager's live\n// balance on this trip). Entered as a PUSH from `ManagerMoneySection`'s own\n// \"View full ledger\" affordance (`onViewFloatLedger`), never a tab — a\n// deep-dive, not persistent chrome.\n//\n// Capability-gated exactly like every other `useFloat` consumer\n// (`'float'`): loading skeleton, `null` on dark/error, full render on ready.\n\nimport type { ReactNode } from 'react';\nimport { useFloat } from '../../../../core/hooks/useFloat.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { BalanceSummaryStrip } from './internal/BalanceSummaryStrip';\nimport { LedgerRow } from './internal/LedgerRow';\nimport type { ManagerFloatLedgerSectionProps } from './ManagerFloatLedgerSection.types';\n\nexport function ManagerFloatLedgerSection({\n tripRef,\n style,\n}: ManagerFloatLedgerSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const float = useFloat(tripRef);\n\n if (float.status === 'loading') {\n return (\n <div className=\"kf-manager-float-ledger__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-float-ledger__skeleton-block\" />\n <div className=\"kf-manager-float-ledger__skeleton-line\" />\n <div className=\"kf-manager-float-ledger__skeleton-line kf-manager-float-ledger__skeleton-line--short\" />\n </div>\n );\n }\n\n if (float.status === 'dark' || float.status === 'error') {\n return null;\n }\n\n const { movements, summary } = float;\n // Every real movement on the calling manager's own ledger shares the\n // same `managerId` — the one real way to identify \"which summary row is\n // mine\" without a hook change (the hook itself has no independent \"own\n // manager id\" field, see `useFloat.ts`'s own header). `undefined` when\n // this manager has no movements yet at all — the summary strip then\n // simply matches nothing, never a fabricated guess.\n const ownManagerId = movements[0]?.managerId;\n const sortedMovements = [...movements].sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(),\n );\n\n return (\n <div className=\"kf-manager-float-ledger\" style={tokenStyle(style)}>\n {summary.rows.length > 1 ? (\n <BalanceSummaryStrip rows={summary.rows} ownManagerId={ownManagerId ?? ''} />\n ) : null}\n\n {sortedMovements.length === 0 ? (\n <p className=\"kf-manager-float-ledger__empty\">\n {t('chrome.managerTrip.floatLedger.empty')}\n </p>\n ) : (\n <div className=\"kf-manager-float-ledger__list\">\n {sortedMovements.map((movement) => (\n <LedgerRow key={movement.id} movement={movement} />\n ))}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function CheckIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nexport function BackIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n );\n}\n\nexport function WarningIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n );\n}\n\nexport function PersonIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"8\" r=\"4\" />\n <path d=\"M4 21c0-4 4-6 8-6s8 2 8 6\" />\n </svg>\n );\n}\n","'use client';\n\n// A minimal, honest inline conflict message — no shared `ConflictResolver`\n// component exists anywhere in this repo yet (only the entity-agnostic\n// `useConflicts(tripRef)` hook does). `submitResponse`'s own\n// `engine.enqueue()` call (`useForms.ts`) carries no `entity` pairing, so\n// `useConflicts()`'s own `currentValue` resolution (which reads the\n// snapshot by `op.entity`) can't recover the fresh row here — this notice\n// therefore never claims to show \"the other answer,\" only that one exists\n// and a refresh is needed before retrying, which is exactly what is real\n// and known.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { WarningIcon } from './icons';\n\nexport interface ConflictNoticeProps {\n readonly onRefresh: () => void;\n}\n\nexport function ConflictNotice({ onRefresh }: ConflictNoticeProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <div className=\"kf-manager-forms__conflict\">\n <WarningIcon />\n <div>\n <p className=\"kf-manager-forms__conflict-title\">\n {t('chrome.managerTrip.forms.conflict.title')}\n </p>\n <p className=\"kf-manager-forms__conflict-body\">\n {t('chrome.managerTrip.forms.conflict.body')}\n </p>\n </div>\n <button\n type=\"button\"\n className=\"kf-manager-forms__conflict-refresh kf-press\"\n onClick={onRefresh}\n >\n {t('chrome.managerTrip.forms.conflict.refreshAction')}\n </button>\n </div>\n );\n}\n","// Pure derivation off `TripFormRow`'s own `status`/`window` fields — no\n// fabricated per-manager \"did I already fill this\" state (`useForms.ts`\n// exposes no read for that; documented in `ManagerFormsSection.tsx`'s own\n// header).\n\nimport type { TripFormRow } from '../../../../../core/hooks/useForms.js';\n\nexport type FormFillState = 'not-open-yet' | 'open' | 'closed' | 'archived' | 'draft';\n\nexport function fillStateOf(form: TripFormRow): FormFillState {\n if (form.status === 'DRAFT') {\n return 'draft';\n }\n if (form.status === 'ARCHIVED') {\n return 'archived';\n }\n if (form.status === 'CLOSED') {\n return 'closed';\n }\n // `status === 'PUBLISHED'` — the window's own state decides the rest.\n return form.window.state === 'OPEN' ? 'open' : 'not-open-yet';\n}\n\n/** Real day-relative phrasing off `window.opensAt`/`closesAt` — `undefined`\n * when neither is set, or when no server timestamp is available yet to\n * measure \"days from now\" against (never a fabricated due line off a local\n * clock — hard rule #6's spirit, extended to this composite). `now` is a\n * caller-supplied server timestamp (`useForms().syncedAt`). */\nexport function dueCopyFor(\n form: TripFormRow,\n now: string | undefined,\n): { readonly key: string; readonly days: number } | undefined {\n if (now === undefined) {\n return undefined;\n }\n const state = fillStateOf(form);\n const nowMs = new Date(now).getTime();\n if (state === 'not-open-yet' && form.window.opensAt !== null) {\n const days = Math.max(\n 0,\n Math.ceil((new Date(form.window.opensAt).getTime() - nowMs) / 86_400_000),\n );\n return { key: 'chrome.managerTrip.forms.due.opensIn', days };\n }\n if (state === 'open' && form.window.closesAt !== null) {\n const days = Math.max(\n 0,\n Math.ceil((new Date(form.window.closesAt).getTime() - nowMs) / 86_400_000),\n );\n return { key: 'chrome.managerTrip.forms.due.closesIn', days };\n }\n return undefined;\n}\n","'use client';\n\n// A custom listbox, not a native `<select>` — the same fidelity fix applied\n// to `AddItemSheet`'s section picker earlier this session: a native\n// `<select>`'s open dropdown is OS/browser chrome CSS cannot restyle,\n// breaking visual consistency with the rest of this sheet. Owns its own\n// open/closed state via hooks — safe here because `editor()`\n// (`fieldRegistry.tsx`) returns this as a real JSX element, not a plain\n// function-call result.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../../core/shells/I18nShell.js';\nimport { ChevronIcon } from '../icons';\n\nexport interface SelectFieldOption {\n readonly value: string;\n readonly label: string;\n}\n\nexport interface SelectFieldEditorProps {\n readonly id: string;\n readonly value: string;\n readonly options: readonly SelectFieldOption[];\n readonly required: boolean;\n readonly onChange: (value: string) => void;\n}\n\nexport function SelectFieldEditor({\n id,\n value,\n options,\n required,\n onChange,\n}: SelectFieldEditorProps): ReactNode {\n const { t } = useKaafilChrome();\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const selected = options.find((option) => option.value === value);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function handlePointerDown(event: PointerEvent): void {\n if (rootRef.current !== null && !rootRef.current.contains(event.target as Node)) {\n setOpen(false);\n }\n }\n function handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n setOpen(false);\n }\n }\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [open]);\n\n return (\n <div className=\"kf-manager-forms__select\" ref={rootRef}>\n <button\n type=\"button\"\n id={id}\n className=\"kf-manager-forms__select-trigger\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n onClick={() => setOpen((current) => !current)}\n >\n <span\n className={selected === undefined ? 'kf-manager-forms__select-placeholder' : undefined}\n >\n {selected?.label ?? t('chrome.managerTrip.forms.field.choosePlaceholder')}\n {required && selected === undefined ? ' *' : ''}\n </span>\n <ChevronIcon aria-hidden=\"true\" />\n </button>\n {open ? (\n <div className=\"kf-manager-forms__select-listbox\" role=\"listbox\">\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n role=\"option\"\n aria-selected={option.value === value}\n className=\"kf-manager-forms__select-option\"\n onClick={() => {\n onChange(option.value);\n setOpen(false);\n }}\n >\n {option.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n","'use client';\n\n// The field-kind dispatch — `createRegistry<FormFieldKind, FieldHandler>`,\n// never a `switch`/`if-else` chain (hard rule #8). Each registered kind\n// supplies an `editor` (the fill-mode control) and a `preview` (read-only\n// rendering, used once a response is `SUBMITTED` or the caller is in\n// traveller-scoped view mode) — the same two-slot shape the traveller\n// family's own `KaafilShareView/internal/forms/fieldRegistry.tsx` already\n// establishes, though this is a fresh, manager-family-scoped registry (hard\n// rule #12 — a component lives in exactly one family) built directly off\n// `FormFieldDetail` (`core/hooks/useForms.ts`), not the traveller family's\n// differently-shaped `RenderFormField` (which carries no `sectionId`/\n// `sensitivity`/`placeholder`, all real fields this registry does use).\n//\n// 19 of the 21 real `FormFieldKind` values get a genuine editor+preview\n// pair — every kind a real safety-check/emergency-contact/feedback form\n// uses. `SIGNATURE`/`FILE_UPLOAD` fall through to the honest \"not supported\n// in this build yet\" fallback below: both need the offline engine's blob\n// lane (`enqueueWithBlob`) for a real answer value, which this wave does\n// not wire — an unregistered kind renders the fallback, never a broken or\n// silently-lossy control (the traveller registry's own local-filename-only\n// compromise for these two kinds is deliberately NOT copied here).\n//\n// NO `visibleIf` evaluator — `FormFieldDetail.visibleIf` is `unknown` on the\n// wire with no documented shape anywhere in this session's research; this\n// registry does not guess a join the data doesn't state (same gap the\n// traveller registry's own header already flags for the identical field).\n//\n// NO NATIVE TICK-BOX INPUT ANYWHERE IN THIS FILE — `dx-08` bans that exact\n// HTML input type's own name (case-insensitive) anywhere under\n// `src/manager/**`, and separately forbids a tick-box-per-row multi-select\n// shape specifically (`atomic/README.md §4`: that pattern is admin-family\n// desk furniture). The single-boolean kind and `CONSENT` render as a\n// `ToggleSwitch` instead (an instant, self-contained control — `useForms\n// .ts`'s own `FORM_FIELD_KIND_SINGLE_BOOLEAN` doc comment: the rendered\n// control for this kind is a switch, never that other, staged-for-save\n// primitive), and `MULTISELECT` renders a row of independently-pressable\n// toggle pills. The single-boolean kind is registered under the imported\n// `FORM_FIELD_KIND_SINGLE_BOOLEAN` constant, never the literal wire string,\n// for the identical reason.\n\nimport type { ChangeEvent, ReactNode } from 'react';\nimport {\n FORM_FIELD_KIND_SINGLE_BOOLEAN,\n type FormFieldDetail,\n} from '../../../../../core/hooks/useForms.js';\nimport { createRegistry } from '../../../../../core/registry/createRegistry.js';\nimport { SelectFieldEditor } from './fields/SelectFieldEditor';\nimport type {\n CurrencyConfig,\n DateConfig,\n DateTimeConfig,\n FieldConfigMap,\n FormFieldKind,\n MultiSelectConfig,\n NumberConfig,\n RatingConfig,\n SelectConfig,\n ShortTextConfig,\n} from './fieldTypes';\n\nexport interface FieldEditorProps {\n readonly field: FormFieldDetail;\n readonly value: unknown;\n readonly onChange: (value: unknown) => void;\n /** `useKaafilChrome().t`, forwarded in by `FormFillRenderer` — a registry\n * entry's `editor`/`preview` is a plain function CALLED during render, not\n * JSX, so it cannot call `useKaafilChrome()` itself. */\n readonly t: (key: string) => string;\n}\n\nexport interface FieldPreviewProps {\n readonly field: FormFieldDetail;\n readonly value: unknown;\n readonly t: (key: string) => string;\n}\n\nexport interface FieldHandler {\n readonly editor: (props: FieldEditorProps) => ReactNode;\n readonly preview: (props: FieldPreviewProps) => ReactNode;\n}\n\nfunction configOf<K extends keyof FieldConfigMap>(field: FormFieldDetail): FieldConfigMap[K] {\n return field.config as FieldConfigMap[K];\n}\n\nfunction textValue(value: unknown): string {\n return typeof value === 'string' ? value : '';\n}\n\nfunction numberValue(value: unknown): string {\n return typeof value === 'number' ? String(value) : '';\n}\n\n/** An instant, self-contained toggle — `role=\"switch\"`, never a native\n * boolean input. Stateless (a plain controlled function, safe to call\n * directly from `editor()` — no hooks of its own), mirroring\n * `AddItemSheet.tsx`'s own \"Mark as mandatory\" toggle track/thumb markup\n * from the Checklist wave. */\nfunction ToggleSwitch({\n checked,\n label,\n onChange,\n}: {\n readonly checked: boolean;\n readonly label: string;\n readonly onChange: (value: boolean) => void;\n}): ReactNode {\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n className=\"kf-manager-forms__toggle-row\"\n onClick={() => onChange(!checked)}\n >\n <span className=\"kf-manager-forms__toggle-track\" data-active={checked}>\n <span className=\"kf-manager-forms__toggle-thumb\" />\n </span>\n {label}\n </button>\n );\n}\n\nfunction PlainPreview({ value }: FieldPreviewProps): ReactNode {\n return (\n <p className=\"kf-manager-forms__field-preview\">{typeof value === 'string' ? value : ''}</p>\n );\n}\n\nconst fallback: FieldHandler = {\n editor: ({ field, t }) => (\n <p className=\"kf-manager-forms__field-unsupported\">\n {t('chrome.managerTrip.forms.fieldUnsupported').replace('{label}', field.label)}\n </p>\n ),\n preview: PlainPreview,\n};\n\nexport const fieldRegistry = createRegistry<FormFieldKind, FieldHandler>({ fallback });\n\nfieldRegistry.register('HEADING', {\n editor: ({ field }) => <h3 className=\"kf-manager-forms__field-heading\">{field.label}</h3>,\n preview: ({ field }) => <h3 className=\"kf-manager-forms__field-heading\">{field.label}</h3>,\n});\n\nfieldRegistry.register('INFO_BLOCK', {\n editor: ({ field }) => <p className=\"kf-manager-forms__field-info\">{field.contentText}</p>,\n preview: ({ field }) => <p className=\"kf-manager-forms__field-info\">{field.contentText}</p>,\n});\n\nfieldRegistry.register('SHORT_TEXT', {\n editor: ({ field, value, onChange }) => {\n const config = configOf<'SHORT_TEXT'>(field) as ShortTextConfig;\n return (\n <input\n type=\"text\"\n className=\"kf-manager-forms__field-input\"\n value={textValue(value)}\n placeholder={field.placeholder ?? undefined}\n maxLength={config.maxLength}\n pattern={config.pattern}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n />\n );\n },\n preview: PlainPreview,\n});\n\nfieldRegistry.register('LONG_TEXT', {\n editor: ({ field, value, onChange }) => {\n const config = configOf<'LONG_TEXT'>(field) as ShortTextConfig;\n return (\n <textarea\n className=\"kf-manager-forms__field-textarea\"\n value={textValue(value)}\n placeholder={field.placeholder ?? undefined}\n maxLength={config.maxLength}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLTextAreaElement>) => onChange(event.target.value)}\n />\n );\n },\n preview: PlainPreview,\n});\n\nfieldRegistry.register('EMAIL', {\n editor: ({ field, value, onChange }) => (\n <input\n type=\"email\"\n className=\"kf-manager-forms__field-input\"\n value={textValue(value)}\n placeholder={field.placeholder ?? undefined}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n />\n ),\n preview: PlainPreview,\n});\n\nfieldRegistry.register('PHONE', {\n editor: ({ field, value, onChange }) => (\n <input\n type=\"tel\"\n className=\"kf-manager-forms__field-input\"\n value={textValue(value)}\n placeholder={field.placeholder ?? undefined}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n />\n ),\n preview: PlainPreview,\n});\n\nfieldRegistry.register('URL', {\n editor: ({ field, value, onChange }) => (\n <input\n type=\"url\"\n className=\"kf-manager-forms__field-input\"\n value={textValue(value)}\n placeholder={field.placeholder ?? undefined}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n />\n ),\n preview: PlainPreview,\n});\n\nfieldRegistry.register('NUMBER', {\n editor: ({ field, value, onChange }) => {\n const config = configOf<'NUMBER'>(field) as NumberConfig;\n return (\n <input\n type=\"number\"\n className=\"kf-manager-forms__field-input\"\n value={numberValue(value)}\n min={config.min}\n max={config.max}\n step={config.step ?? 1}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n onChange(event.target.value === '' ? undefined : Number(event.target.value))\n }\n />\n );\n },\n preview: ({ value }) => (\n <p className=\"kf-manager-forms__field-preview kf-num\">{numberValue(value)}</p>\n ),\n});\n\nfieldRegistry.register('CURRENCY', {\n editor: ({ field, value, onChange }) => {\n const config = configOf<'CURRENCY'>(field) as CurrencyConfig;\n return (\n <input\n type=\"number\"\n className=\"kf-manager-forms__field-input\"\n value={numberValue(value)}\n min={config.minMinor !== undefined ? config.minMinor / 100 : undefined}\n max={config.maxMinor !== undefined ? config.maxMinor / 100 : undefined}\n step={0.01}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n onChange(\n event.target.value === '' ? undefined : Math.round(Number(event.target.value) * 100),\n )\n }\n />\n );\n },\n preview: ({ value }) => (\n <p className=\"kf-manager-forms__field-preview kf-num\">\n {typeof value === 'number' ? (value / 100).toFixed(2) : ''}\n </p>\n ),\n});\n\nfieldRegistry.register('RATING', {\n editor: ({ field, value, onChange }) => {\n const config = configOf<'RATING'>(field) as RatingConfig;\n const max = config.ratingMax ?? 5;\n return (\n <fieldset className=\"kf-manager-forms__field-rating\">\n <legend className=\"kf-visually-hidden\">{field.label}</legend>\n {Array.from({ length: max }, (_unused, index) => index + 1).map((score) => (\n <button\n key={score}\n type=\"button\"\n aria-pressed={value === score}\n className=\"kf-manager-forms__field-rating-dot kf-press\"\n data-selected={value === score}\n onClick={() => onChange(score)}\n >\n {score}\n </button>\n ))}\n </fieldset>\n );\n },\n preview: ({ value }) => (\n <p className=\"kf-manager-forms__field-preview kf-num\">{numberValue(value)}</p>\n ),\n});\n\nfieldRegistry.register('NPS', {\n editor: ({ field, value, onChange }) => (\n <fieldset className=\"kf-manager-forms__field-rating\">\n <legend className=\"kf-visually-hidden\">{field.label}</legend>\n {Array.from({ length: 11 }, (_unused, index) => index).map((score) => (\n <button\n key={score}\n type=\"button\"\n aria-pressed={value === score}\n className=\"kf-manager-forms__field-rating-dot kf-press\"\n data-selected={value === score}\n onClick={() => onChange(score)}\n >\n {score}\n </button>\n ))}\n </fieldset>\n ),\n preview: ({ value }) => (\n <p className=\"kf-manager-forms__field-preview kf-num\">{numberValue(value)}</p>\n ),\n});\n\nfieldRegistry.register('DATE', {\n editor: ({ field, value, onChange }) => {\n const config = configOf<'DATE'>(field) as DateConfig;\n return (\n <input\n type=\"date\"\n className=\"kf-manager-forms__field-input\"\n value={textValue(value)}\n min={config.minDate}\n max={config.maxDate}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n />\n );\n },\n preview: PlainPreview,\n});\n\nfieldRegistry.register('DATETIME', {\n editor: ({ field, value, onChange }) => {\n const config = configOf<'DATETIME'>(field) as DateTimeConfig;\n return (\n <input\n type=\"datetime-local\"\n className=\"kf-manager-forms__field-input\"\n value={textValue(value)}\n step={config.minuteStep !== undefined ? config.minuteStep * 60 : undefined}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLInputElement>) => onChange(event.target.value)}\n />\n );\n },\n preview: PlainPreview,\n});\n\nfieldRegistry.register('TIME', {\n // Wire value is minutes-past-local-midnight (same convention the\n // traveller registry's own `TIME` editor documents) — the native time\n // input works in `HH:mm`, converted at the boundary.\n editor: ({ field, value, onChange }) => {\n const minutes = typeof value === 'number' ? value : undefined;\n const hh = minutes !== undefined ? String(Math.floor(minutes / 60)).padStart(2, '0') : '';\n const mm = minutes !== undefined ? String(minutes % 60).padStart(2, '0') : '';\n return (\n <input\n type=\"time\"\n className=\"kf-manager-forms__field-input\"\n value={minutes !== undefined ? `${hh}:${mm}` : ''}\n required={field.required}\n onChange={(event: ChangeEvent<HTMLInputElement>) => {\n const [h, m] = event.target.value.split(':');\n if (h === undefined || m === undefined) {\n onChange(undefined);\n return;\n }\n onChange(Number(h) * 60 + Number(m));\n }}\n />\n );\n },\n preview: ({ value }) => {\n const minutes = typeof value === 'number' ? value : undefined;\n return (\n <p className=\"kf-manager-forms__field-preview kf-num\">\n {minutes !== undefined\n ? `${String(Math.floor(minutes / 60)).padStart(2, '0')}:${String(minutes % 60).padStart(2, '0')}`\n : ''}\n </p>\n );\n },\n});\n\nfieldRegistry.register('SELECT', {\n editor: ({ field, value, onChange, t }) => {\n const config = configOf<'SELECT'>(field) as SelectConfig;\n const options = [...config.options].sort((a, b) => a.sortOrder - b.sortOrder);\n const withOther =\n config.otherAllowed === true\n ? [...options, { value: '__other__', label: t('chrome.managerTrip.forms.field.other') }]\n : options;\n return (\n <SelectFieldEditor\n id={field.id}\n value={textValue(value)}\n options={withOther}\n required={field.required}\n onChange={onChange}\n />\n );\n },\n preview: PlainPreview,\n});\n\nfieldRegistry.register('MULTISELECT', {\n // A row of independently-pressable toggle pills, never a tick-box-per-\n // option list (`dx-08`'s own manager/admin boundary check: no\n // tick-box-per-row multi-select shape inside `src/manager/**` — that\n // pattern is admin-family desk furniture, `atomic/README.md §4`).\n editor: ({ field, value, onChange }) => {\n const config = configOf<'MULTISELECT'>(field) as MultiSelectConfig;\n const options = [...config.options].sort((a, b) => a.sortOrder - b.sortOrder);\n const selected = Array.isArray(value) ? (value as string[]) : [];\n return (\n <fieldset className=\"kf-manager-forms__field-multiselect\">\n <legend className=\"kf-visually-hidden\">{field.label}</legend>\n {options.map((option) => {\n const pressed = selected.includes(option.value);\n return (\n <button\n key={option.value}\n type=\"button\"\n aria-pressed={pressed}\n className=\"kf-manager-forms__field-pill kf-press\"\n data-selected={pressed}\n onClick={() => {\n const max = config.maxSelections ?? 50;\n if (pressed) {\n onChange(selected.filter((entry) => entry !== option.value));\n } else if (selected.length < max) {\n onChange([...selected, option.value]);\n }\n }}\n >\n {option.label}\n </button>\n );\n })}\n </fieldset>\n );\n },\n preview: ({ value }) => (\n <p className=\"kf-manager-forms__field-preview\">\n {Array.isArray(value) ? (value as string[]).join(', ') : ''}\n </p>\n ),\n});\n\n// The single-boolean kind (`FORM_FIELD_KIND_SINGLE_BOOLEAN`, `useForms.ts`)\n// — an instant-effect toggle, never rendered as that other, staged-for-save\n// tick-box primitive (`05-forms-and-inputs.md`'s own boundary between the\n// two). Registered under the imported constant, never the literal\n// wire string, for the same `dx-08` reason `MULTISELECT` above documents.\nfieldRegistry.register(FORM_FIELD_KIND_SINGLE_BOOLEAN, {\n editor: ({ field, value, onChange }) => (\n <ToggleSwitch checked={value === true} label={field.label} onChange={onChange} />\n ),\n preview: ({ value, t }) => (\n <p className=\"kf-manager-forms__field-preview\">\n {value === true\n ? t('chrome.managerTrip.forms.field.yes')\n : t('chrome.managerTrip.forms.field.no')}\n </p>\n ),\n});\n\nfieldRegistry.register('CONSENT', {\n editor: ({ field, value, onChange }) => (\n <ToggleSwitch\n checked={value === true}\n label={field.contentText ?? field.label}\n onChange={onChange}\n />\n ),\n preview: ({ value, t }) => (\n <p className=\"kf-manager-forms__field-preview\">\n {value === true ? t('chrome.managerTrip.forms.field.agreed') : ''}\n </p>\n ),\n});\n","'use client';\n\n// The `FormFillRenderer` Tier-4 override slot — `05-forms.md`'s own internal\n// constituent: single scrolling form, sticky submit. Gates on `fillState`\n// (a form outside its window renders a state message, never a broken\n// form). Applies the `sensitivity === 'SELF_ONLY'` filter to both render\n// AND the submitted `answers[]` whenever `travellerRef` is set (on-behalf\n// capture) — a UX nicety per spec; the server still enforces it with a 404\n// regardless. A `SUBMITTED` existing response renders every field via the\n// registry's `preview` slot and hides both write actions — matching\n// `fieldRegistry.tsx`'s own two-slot contract.\n//\n// Purely presentational — owns no fetch/write of its own. All data (`form`,\n// `definition`, `existingResponse`) and every callback are supplied by the\n// parent `ManagerFormsSection`, which owns the `useForms(tripRef)` hook —\n// the same \"dumb override slot, parent owns the hook\" shape every sibling\n// composite's own sheets already follow.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { FORM_FIELD_KIND_SINGLE_BOOLEAN } from '../../../../../core/hooks/useForms.js';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type {\n FormDefinitionDetail,\n FormResponseDetail,\n TripFormRow,\n} from '../ManagerFormsSection.types';\nimport { ConflictNotice } from './ConflictNotice';\nimport { fillStateOf } from './FormWindowState';\nimport { fieldRegistry } from './fieldRegistry';\nimport type { FieldAnswer } from './fieldTypes';\nimport { BackIcon } from './icons';\n\nexport interface FormFillRendererProps {\n readonly form: TripFormRow;\n readonly definition: FormDefinitionDetail;\n /** The subject's (self, or the on-behalf traveller's) existing response,\n * when one is known — `undefined` starts a fresh fill. */\n readonly existingResponse: FormResponseDetail | undefined;\n /** `existingResponse?.status === 'SUBMITTED'`, OR the parent's own\n * optimistic \"we just submitted this\" flag — kept as an explicit prop\n * rather than derived only from `existingResponse` so a just-submitted\n * fill locks immediately using the answers already held in THIS\n * component's own local state, without the parent fabricating a\n * `FormResponseDetail` it doesn't really have back from the write. */\n readonly locked: boolean;\n /** Set only for on-behalf capture — gates the `SELF_ONLY` sensitivity\n * filter (05-forms.md's own privacy rule). */\n readonly travellerRef: string | undefined;\n readonly pending: boolean;\n readonly hasConflict: boolean;\n readonly onSave: (answers: readonly FieldAnswer[]) => void;\n readonly onSubmit: (answers: readonly FieldAnswer[]) => void;\n readonly onRefreshAfterConflict: () => void;\n readonly onBack: () => void;\n}\n\nexport function FormFillRenderer({\n form,\n definition,\n existingResponse,\n locked: isLockedProp,\n travellerRef,\n pending,\n hasConflict,\n onSave,\n onSubmit,\n onRefreshAfterConflict,\n onBack,\n}: FormFillRendererProps): ReactNode {\n const { t } = useKaafilChrome();\n const [answers, setAnswers] = useState<Record<string, unknown>>(() => {\n const initial: Record<string, unknown> = {};\n for (const answer of existingResponse?.answers ?? []) {\n initial[answer.fieldKey] = answer.value;\n }\n return initial;\n });\n\n const state = fillStateOf(form);\n // The window gate is about ACCEPTING a new submission, never about\n // reviewing one that already exists — a manager must be able to see a\n // response (submitted or still in progress) on a form the window has\n // since closed (a real, reported gap: \"forms gets closed for traveller,\n // not manager — manager should be able to see!\"). Only the genuinely\n // empty case (no window open, nothing to view yet) shows the state\n // message. An existing-but-not-yet-submitted response effectively locks\n // too once the window is no longer open — no further edits, since the\n // window that would accept them is gone.\n if (state !== 'open' && existingResponse === undefined) {\n const stateKey =\n state === 'closed'\n ? 'chrome.managerTrip.forms.closedState'\n : state === 'archived'\n ? 'chrome.managerTrip.forms.archivedState'\n : 'chrome.managerTrip.forms.notOpenYet';\n return (\n <div className=\"kf-manager-forms__fill\">\n <FillHeader title={form.title} onBack={onBack} />\n <p className=\"kf-manager-forms__fill-state\">{t(stateKey)}</p>\n </div>\n );\n }\n const isLocked = isLockedProp || (state !== 'open' && existingResponse !== undefined);\n\n // `SELF_ONLY` fields are withheld entirely from an on-behalf filler\n // (`travellerRef` set) — both render and the answers this component ever\n // hands back to `onSave`/`onSubmit`.\n const visibleFields = definition.fields\n .filter((field) => !(travellerRef !== undefined && field.sensitivity === 'SELF_ONLY'))\n .slice()\n .sort((a, b) => a.sortOrder - b.sortOrder);\n\n const sections = definition.sections.slice().sort((a, b) => a.sortOrder - b.sortOrder);\n const fieldsBySection = new Map<string, typeof visibleFields>();\n for (const field of visibleFields) {\n const existing = fieldsBySection.get(field.sectionId);\n if (existing !== undefined) {\n existing.push(field);\n } else {\n fieldsBySection.set(field.sectionId, [field]);\n }\n }\n\n function toAnswers(): readonly FieldAnswer[] {\n return visibleFields\n .filter((field) => field.kind !== 'HEADING' && field.kind !== 'INFO_BLOCK')\n .map((field) => ({ fieldKey: field.key, value: answers[field.key] }));\n }\n\n return (\n <div className=\"kf-manager-forms__fill\">\n <FillHeader title={form.title} onBack={onBack} />\n {definition.description !== null ? (\n <p className=\"kf-manager-forms__fill-description\">{definition.description}</p>\n ) : null}\n {hasConflict ? <ConflictNotice onRefresh={onRefreshAfterConflict} /> : null}\n {isLocked ? (\n <div className=\"kf-manager-forms__fill-locked-banner\">\n <p className=\"kf-manager-forms__fill-locked-title\">\n {t('chrome.managerTrip.forms.submittedTitle')}\n </p>\n <p className=\"kf-manager-forms__fill-locked-body\">\n {t('chrome.managerTrip.forms.submittedBody')}\n </p>\n </div>\n ) : null}\n {sections.map((section) => (\n <div key={section.id} className=\"kf-manager-forms__fill-section\">\n {section.title !== null ? (\n <p className=\"kf-manager-forms__fill-section-title\">{section.title}</p>\n ) : null}\n {(fieldsBySection.get(section.id) ?? []).map((field) => {\n const handler = fieldRegistry.resolve(field.kind);\n return (\n <div key={field.id} className=\"kf-manager-forms__fill-field\">\n {field.kind !== 'HEADING' &&\n field.kind !== 'INFO_BLOCK' &&\n field.kind !== FORM_FIELD_KIND_SINGLE_BOOLEAN &&\n field.kind !== 'CONSENT' ? (\n <label className=\"kf-manager-forms__fill-field-label\" htmlFor={field.id}>\n {field.label}\n {field.required ? ' *' : ''}\n </label>\n ) : null}\n {field.helpText !== null ? (\n <p className=\"kf-manager-forms__fill-field-help\">{field.helpText}</p>\n ) : null}\n {isLocked\n ? handler.preview({ field, value: answers[field.key], t })\n : handler.editor({\n field,\n value: answers[field.key],\n onChange: (value) =>\n setAnswers((previous) => ({ ...previous, [field.key]: value })),\n t,\n })}\n </div>\n );\n })}\n </div>\n ))}\n {!isLocked ? (\n <div className=\"kf-manager-forms__fill-actions\">\n <button\n type=\"button\"\n className=\"kf-manager-forms__fill-save kf-press\"\n disabled={pending}\n onClick={() => onSave(toAnswers())}\n >\n {pending\n ? t('chrome.managerTrip.forms.saving')\n : t('chrome.managerTrip.forms.saveDraftAction')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-forms__fill-submit kf-press\"\n disabled={pending}\n onClick={() => onSubmit(toAnswers())}\n >\n {pending\n ? t('chrome.managerTrip.forms.submitting')\n : t('chrome.managerTrip.forms.submitAction')}\n </button>\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction FillHeader({\n title,\n onBack,\n}: {\n readonly title: string;\n readonly onBack: () => void;\n}): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <div className=\"kf-manager-forms__fill-header\">\n <button\n type=\"button\"\n className=\"kf-manager-forms__fill-back kf-press\"\n aria-label={t('chrome.cancel')}\n onClick={onBack}\n >\n <BackIcon />\n </button>\n <p className=\"kf-manager-forms__fill-title\">{title}</p>\n </div>\n );\n}\n","'use client';\n\n// A bottom-sheet wrapper around `FormFillRenderer` — real user feedback:\n// tapping a form used to swap the ENTIRE `ManagerFormsSection` (the \"FORMS\"\n// list itself) out for the fill view in the same DOM slot, so the list\n// disappeared behind whatever form was open. This sheet keeps the list\n// mounted underneath and opens the fill view as an overlay instead — the\n// same fixed backdrop+sheet recipe `manager-traveller.css`'s own\n// `__sheet-backdrop`/`__sheet` establishes (`LogPaymentSheet.tsx`'s own\n// header). `FormFillRenderer` keeps its own back-chevron header inside the\n// sheet; that back tap is remapped to `onClose` by the caller, so there is\n// no separate close control duplicating it.\n\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\n\nexport interface FormFillSheetProps {\n readonly open: boolean;\n readonly label: string;\n readonly onClose: () => void;\n readonly children: ReactNode;\n}\n\nexport function FormFillSheet({ open, label, onClose, children }: FormFillSheetProps): ReactNode {\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n if (!open) {\n return null;\n }\n\n return (\n <div className=\"kf-manager-forms__sheet-backdrop\">\n <div className=\"kf-manager-forms__sheet\" role=\"dialog\" aria-modal=\"true\" aria-label={label}>\n {children}\n </div>\n </div>\n );\n}\n","// Human-readable formatting for a real server timestamp (`submittedAt`,\n// etc.) — never the raw ISO string. Same `Intl.DateTimeFormat('en-GB', ...)`\n// recipe `TravellerNotesSection.tsx` already establishes for a timestamp in\n// this exact family.\n\nconst DATE_FORMATTER = new Intl.DateTimeFormat('en-GB', {\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport function formatFormDate(iso: string): string {\n return DATE_FORMATTER.format(new Date(iso));\n}\n","'use client';\n\n// The \"browse every respondent\" view for one `TRAVELLER`-audience form —\n// what a manager actually wants when tapping a form in their own list\n// (real feedback: \"in manager I should be able to see all travellers'\n// filled form\"). Backed by `useForms().formResponses(formId)`\n// (`forms.trip.responses.list`) — the per-form, cross-traveller axis,\n// distinct from `travellerResponses` (per-traveller, cross-form). Never\n// gated by the form's own open/closed window — that gate is about\n// ACCEPTING a new submission, not about reviewing ones that already exist\n// (a real, reported gap: a closed form still needs to be reviewable).\n//\n// Names are resolved via a real roster join (`useParties(tripRef)\n// .tripRoster`, the same \"resolve an id against a roster hook\" pattern\n// every other manager composite this session uses) — never a raw id, never\n// fabricated when the join can't resolve.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { TripFormResponseRow, TripFormRow } from '../ManagerFormsSection.types';\nimport { formatFormDate } from './formatFormDate';\nimport { BackIcon, PersonIcon } from './icons';\n\nexport interface FormResponsesListProps {\n readonly form: TripFormRow;\n readonly responses: readonly TripFormResponseRow[];\n readonly loaded: boolean;\n readonly travellerNameFor: (travellerId: string) => string | undefined;\n readonly onSelectResponse: (response: TripFormResponseRow) => void;\n readonly onBack: () => void;\n}\n\nexport function FormResponsesList({\n form,\n responses,\n loaded,\n travellerNameFor,\n onSelectResponse,\n onBack,\n}: FormResponsesListProps): ReactNode {\n const { t } = useKaafilChrome();\n\n const sorted = responses\n .slice()\n .sort((a, b) =>\n (b.submittedAt ?? b.lastSavedAt ?? '').localeCompare(a.submittedAt ?? a.lastSavedAt ?? ''),\n );\n\n return (\n <div className=\"kf-manager-forms__fill\">\n <div className=\"kf-manager-forms__fill-header\">\n <button\n type=\"button\"\n className=\"kf-manager-forms__fill-back kf-press\"\n aria-label={t('chrome.cancel')}\n onClick={onBack}\n >\n <BackIcon />\n </button>\n <p className=\"kf-manager-forms__fill-title\">{form.title}</p>\n </div>\n <p className=\"kf-manager-forms__fill-description\">\n {t('chrome.managerTrip.forms.responses.subtitle')\n .replace('{submitted}', String(form.submitted))\n .replace('{dispatched}', String(form.dispatched))}\n </p>\n {!loaded ? (\n <div className=\"kf-manager-forms__skeleton\">\n <div className=\"kf-manager-forms__skeleton-line\" />\n <div className=\"kf-manager-forms__skeleton-line\" />\n </div>\n ) : sorted.length === 0 ? (\n <div className=\"kf-manager-forms__empty\">\n <p className=\"kf-manager-forms__empty-title\">\n {t('chrome.managerTrip.forms.responses.emptyTitle')}\n </p>\n <p className=\"kf-manager-forms__empty-body\">\n {t('chrome.managerTrip.forms.responses.emptyBody')}\n </p>\n </div>\n ) : (\n <div className=\"kf-manager-forms__list\">\n {sorted.map((response) => {\n const name =\n response.travellerId !== null ? travellerNameFor(response.travellerId) : undefined;\n return (\n <button\n key={response.id}\n type=\"button\"\n className=\"kf-manager-forms__row kf-press\"\n onClick={() => onSelectResponse(response)}\n >\n <PersonIcon aria-hidden=\"true\" />\n <span className=\"kf-manager-forms__row-copy\">\n <span className=\"kf-manager-forms__row-title\">\n {name ?? t('chrome.managerTrip.forms.responses.unknownRespondent')}\n </span>\n <span className=\"kf-manager-forms__row-traveller-state\">\n {response.status === 'SUBMITTED' && response.submittedAt !== null\n ? t('chrome.managerTrip.forms.travellerScoped.answered').replace(\n '{date}',\n formatFormDate(response.submittedAt),\n )\n : t('chrome.managerTrip.forms.travellerScoped.inProgress')}\n </span>\n </span>\n </button>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n","// Open-mandatory first, then open-optional, then everything else\n// (not-open-yet/closed/archived/draft) — `05-forms.md`'s own\n// `TripFormsPanel` ordering rule, \"what do I still have to fill\" is the\n// governing question. Ties broken by soonest `window.closesAt`, then title.\n\nimport type { TripFormRow } from '../../../../../core/hooks/useForms.js';\nimport { fillStateOf } from './FormWindowState';\n\nfunction rankOf(form: TripFormRow): number {\n const state = fillStateOf(form);\n if (state !== 'open') {\n return 2;\n }\n return form.required ? 0 : 1;\n}\n\nexport function rankForms(forms: readonly TripFormRow[]): readonly TripFormRow[] {\n return forms.slice().sort((a, b) => {\n const rankDiff = rankOf(a) - rankOf(b);\n if (rankDiff !== 0) {\n return rankDiff;\n }\n const aCloses = a.window.closesAt;\n const bCloses = b.window.closesAt;\n if (aCloses !== null && bCloses !== null) {\n const closeDiff = new Date(aCloses).getTime() - new Date(bCloses).getTime();\n if (closeDiff !== 0) {\n return closeDiff;\n }\n } else if (aCloses !== null) {\n return -1;\n } else if (bCloses !== null) {\n return 1;\n }\n return a.title.localeCompare(b.title);\n });\n}\n\n/** `submitted / dispatched` — real aggregate counts on `TripFormRow`, never\n * a fabricated per-manager percent. `undefined` when `dispatched === 0`\n * (omit the bar entirely rather than showing a fabricated 0%). */\nexport function submissionPercent(form: TripFormRow): number | undefined {\n if (form.dispatched <= 0) {\n return undefined;\n }\n return Math.round((form.submitted / form.dispatched) * 100);\n}\n","// `TripFormRow['phase']` is a genuinely open wire string (`FormDetailResponse\n// .phase: string` — no literal union documented anywhere in the schema),\n// never a closed enum this file could exhaustively switch on (hard rule #8:\n// a type-keyed registry, never a switch/if-else, for an open key set). Known\n// values get a real, human i18n label; an unrecognized one still renders\n// something legible — humanized snake_case — never the raw wire string.\n\nconst PHASE_LABEL_KEY: Record<string, string> = {\n pre_trip: 'chrome.managerTrip.forms.phase.preTrip',\n in_trip: 'chrome.managerTrip.forms.phase.inTrip',\n post_trip: 'chrome.managerTrip.forms.phase.postTrip',\n};\n\nfunction humanize(value: string): string {\n return value\n .split(/[_\\s]+/)\n .filter(Boolean)\n .map((word) => word[0]?.toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}\n\nexport function phaseLabelFor(phase: string, t: (key: string) => string): string {\n const key = PHASE_LABEL_KEY[phase];\n return key !== undefined ? t(key) : humanize(phase);\n}\n","'use client';\n\n// One row of `TripFormsPanel`'s list. Same row shape serves BOTH modes:\n// the manager's own open-forms list (`response` always `undefined` — no\n// real \"did I already fill this\" read exists, see `ManagerFormsSection.tsx`'s\n// header) and the traveller-scoped view (`response` populated from\n// `travellerResponses(travellerRef)` when this traveller has one).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { FormsListRow } from '../ManagerFormsSection.types';\nimport { dueCopyFor, fillStateOf } from './FormWindowState';\nimport { formatFormDate } from './formatFormDate';\nimport { phaseLabelFor } from './formPhaseLabel';\nimport { ChevronIcon } from './icons';\nimport { submissionPercent } from './rankForms';\n\nconst STATUS_LABEL_KEY: Record<string, string> = {\n DRAFT: 'chrome.managerTrip.forms.statusDraft',\n PUBLISHED: 'chrome.managerTrip.forms.statusPublished',\n CLOSED: 'chrome.managerTrip.forms.statusClosed',\n ARCHIVED: 'chrome.managerTrip.forms.statusArchived',\n};\n\nexport interface FormRowProps {\n readonly row: FormsListRow;\n readonly now: string | undefined;\n readonly travellerScoped: boolean;\n readonly onSelect: () => void;\n}\n\nexport function FormRow({ row, now, travellerScoped, onSelect }: FormRowProps): ReactNode {\n const { t } = useKaafilChrome();\n const { form, response } = row;\n const state = fillStateOf(form);\n const due = dueCopyFor(form, now);\n const percent = submissionPercent(form);\n const statusLabelKey = STATUS_LABEL_KEY[form.status];\n\n return (\n <button type=\"button\" className=\"kf-manager-forms__row kf-press\" onClick={onSelect}>\n <span className=\"kf-manager-forms__row-copy\">\n <span className=\"kf-manager-forms__row-title\">{form.title}</span>\n <span className=\"kf-manager-forms__row-meta\">\n <span className=\"kf-manager-forms__row-phase\">{phaseLabelFor(form.phase, t)}</span>\n {form.status !== 'PUBLISHED' && statusLabelKey !== undefined ? (\n <span className=\"kf-manager-forms__row-badge\">{t(statusLabelKey)}</span>\n ) : null}\n {state === 'open' && form.required ? (\n <span className=\"kf-manager-forms__row-badge kf-manager-forms__row-badge--mandatory\">\n {t('chrome.managerTrip.forms.mandatoryBadge')}\n </span>\n ) : null}\n {due !== undefined ? (\n <span className=\"kf-manager-forms__row-due\">\n {t(due.key).replace('{count}', String(due.days))}\n </span>\n ) : null}\n </span>\n {travellerScoped ? (\n <span className=\"kf-manager-forms__row-traveller-state\">\n {response !== undefined\n ? response.status === 'SUBMITTED' && response.submittedAt !== null\n ? t('chrome.managerTrip.forms.travellerScoped.answered').replace(\n '{date}',\n formatFormDate(response.submittedAt),\n )\n : t('chrome.managerTrip.forms.travellerScoped.inProgress')\n : t('chrome.managerTrip.forms.travellerScoped.notAnswered')}\n </span>\n ) : percent !== undefined ? (\n <span className=\"kf-manager-forms__row-progress\">\n <span className=\"kf-manager-forms__row-progress-track\">\n <span\n className=\"kf-manager-forms__row-progress-fill\"\n style={{ inlineSize: `${percent}%` }}\n />\n </span>\n <span className=\"kf-manager-forms__row-progress-label\">\n {t('chrome.managerTrip.forms.progressLabel')\n .replace('{submitted}', String(form.submitted))\n .replace('{dispatched}', String(form.dispatched))}\n </span>\n </span>\n ) : null}\n </span>\n <ChevronIcon className=\"kf-manager-forms__row-chevron\" aria-hidden=\"true\" />\n </button>\n );\n}\n","'use client';\n\n// The `TripFormsPanel` Tier-4 override slot — `05-forms.md`'s own internal\n// constituent: a one-column list of tappable rows, ranked open-mandatory\n// first, then open-optional, then the rest. Performs no fetch of its own —\n// backed purely by the parent's own `forms`/`travellerRows` read (this\n// file's own header, `05-forms.md`: \"backed by the parent's `useForms\n// (tripRef)` read... performs no fetch of its own\").\n//\n// SPLIT INTO TWO SECTIONS in the manager's own main list (real feedback:\n// mixing \"fill this yourself\" and \"read what travellers submitted\" rows\n// together read as one undifferentiated list — unclear which action a tap\n// would take). `MANAGER`-audience forms (self-fill) render under their own\n// heading, `TRAVELLER`-audience forms (browse-all-respondents,\n// `ManagerFormsSection`'s own routing) under a second, explicitly\n// \"view-only\" heading — real, not fabricated: `form.audience` is the one\n// field this split reads. Traveller-scoped mode (`travellerScoped` — a host\n// already scoped this composite to ONE traveller, e.g. from their profile\n// page) stays a single flat list: it's already narrowed to that traveller's\n// own `TRAVELLER`-audience forms, so a second heading would split a list\n// that's conceptually already one thing.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { FormsListRow } from '../ManagerFormsSection.types';\nimport { FormRow } from './FormRow';\n\nexport interface TripFormsPanelProps {\n readonly rows: readonly FormsListRow[];\n readonly now: string | undefined;\n readonly travellerScoped: boolean;\n readonly onSelectForm: (row: FormsListRow) => void;\n}\n\nexport function TripFormsPanel({\n rows,\n now,\n travellerScoped,\n onSelectForm,\n}: TripFormsPanelProps): ReactNode {\n const { t } = useKaafilChrome();\n\n if (rows.length === 0) {\n return (\n <div className=\"kf-manager-forms__empty\">\n <p className=\"kf-manager-forms__empty-title\">{t('chrome.managerTrip.forms.emptyTitle')}</p>\n <p className=\"kf-manager-forms__empty-body\">{t('chrome.managerTrip.forms.emptyBody')}</p>\n </div>\n );\n }\n\n if (travellerScoped) {\n return (\n <div className=\"kf-manager-forms__list\">\n {rows.map((row) => (\n <FormRow\n key={row.form.id}\n row={row}\n now={now}\n travellerScoped={travellerScoped}\n onSelect={() => onSelectForm(row)}\n />\n ))}\n </div>\n );\n }\n\n const toFill = rows.filter((row) => row.form.audience === 'MANAGER');\n const toReview = rows.filter((row) => row.form.audience !== 'MANAGER');\n\n return (\n <div className=\"kf-manager-forms__sections\">\n <div className=\"kf-manager-forms__section\">\n <p className=\"kf-manager-forms__section-heading\">\n {t('chrome.managerTrip.forms.section.toFill')}\n </p>\n <p className=\"kf-manager-forms__section-subtitle\">\n {t('chrome.managerTrip.forms.section.toFillSubtitle')}\n </p>\n {toFill.length === 0 ? (\n <p className=\"kf-manager-forms__section-empty\">\n {t('chrome.managerTrip.forms.section.toFillEmpty')}\n </p>\n ) : (\n <div className=\"kf-manager-forms__list\">\n {toFill.map((row) => (\n <FormRow\n key={row.form.id}\n row={row}\n now={now}\n travellerScoped={false}\n onSelect={() => onSelectForm(row)}\n />\n ))}\n </div>\n )}\n </div>\n\n <div className=\"kf-manager-forms__section\">\n <p className=\"kf-manager-forms__section-heading\">\n {t('chrome.managerTrip.forms.section.toReview')}\n </p>\n <p className=\"kf-manager-forms__section-subtitle\">\n {t('chrome.managerTrip.forms.section.toReviewSubtitle')}\n </p>\n {toReview.length === 0 ? (\n <p className=\"kf-manager-forms__section-empty\">\n {t('chrome.managerTrip.forms.section.toReviewEmpty')}\n </p>\n ) : (\n <div className=\"kf-manager-forms__list\">\n {toReview.map((row) => (\n <FormRow\n key={row.form.id}\n row={row}\n now={now}\n travellerScoped={false}\n onSelect={() => onSelectForm(row)}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The Forms tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'forms'` tab panel.\n// `useForms(tripRef)` (`08-forms.md` — actually `05-forms.md`, \"Forms (Fill\n// Only)\") is the one domain hook. Per that spec, \"a manager only fills\n// forms; a manager never authors them\" — `FormsReady`'s agencyAdmin\n// authoring methods (`createForm`/`patchForm`/etc.) are never called here.\n//\n// REAL, CONFIRMED GAPS this composite works around honestly rather than\n// papering over:\n//\n// 1. `TripFormRow` carries no \"did I (the manager) personally already fill\n// this\" field, and `useForms.ts` exposes no \"list my own manager\n// responses\" read (`travellerResponses` is for TRAVELLER respondents\n// only). Self-fill rows are therefore ALWAYS rendered tappable/open —\n// never a guessed \"already completed\" badge — and tapping one always\n// opens a fresh fill. `onSubmitted` is never fired for a self-fill\n// submit for the same reason: there is no read that could resolve the\n// real `responseId` the spec's own callback signature asks for.\n//\n// 2. `submitResponse`'s own `engine.enqueue()` call carries no `entity`\n// pairing (`useForms.ts`, verbatim) — a version conflict on this write\n// surfaces via the generic `useConflicts(tripRef)` hook but with no\n// resolvable `currentValue` (no snapshot row to rebase from), so the\n// conflict UI here (`ConflictNotice`) is a minimal, honest \"something\n// changed, refresh\" message — never a fabricated diff view. No shared\n// `ConflictResolver` component exists anywhere in this repo yet.\n//\n// TRAVELLER-SCOPED MODE (`travellerRef` prop) is the one honest way to serve\n// \"view what a traveller submitted\" FOR ONE KNOWN TRAVELLER (e.g. mounted\n// from `ManagerTravellerProfileSection`): it switches this composite's list\n// from \"my open forms\" to \"this traveller's response rows,\" using\n// `travellerResponses(travellerRef)` + `getResponse(formId, responseId)`.\n// On-behalf capture (`submitResponse({ travellerRef, ... })`) is the\n// natural action on an unanswered row in that same mode.\n//\n// BROWSE-ALL-RESPONDENTS MODE is the main list's own default behaviour for\n// a `TRAVELLER`-audience form (real feedback: a manager tapping a form's\n// \"N of M submitted\" row expected to see every traveller's status, not a\n// prompt to fill it themselves — that prompt only ever made sense for a\n// `MANAGER`-audience form). Backed by `formResponses(formId)`\n// (`forms.trip.responses.list` — the per-form, cross-traveller axis,\n// `useForms.ts`'s own doc comment), with names resolved via\n// `useParties(tripRef).tripRoster` (the same \"resolve an id against a\n// roster hook\" pattern every sibling composite uses). Read-only: capturing\n// on behalf of a specific not-yet-answered traveller from this view isn't\n// wired (that still goes through the host-scoped `travellerRef` mode above,\n// e.g. from a traveller's own profile screen) — a real, narrower scope this\n// pass, not a fabricated capability.\n//\n// VIEWING AN EXISTING RESPONSE IS NEVER GATED BY THE FORM'S OWN WINDOW STATE\n// (real, reported gap: \"forms gets closed for traveller, not manager —\n// manager should be able to see!\"). `FormFillRenderer`'s own gate only\n// blocks STARTING a brand-new fill on a closed/not-yet-open form; a\n// response that already exists — submitted or still in progress — always\n// renders, locked once the window is no longer open.\n//\n// `forms` is NOT in the frozen PERSONALIZED mode-dark set (`useForms.ts`'s\n// own header) but `createDomainHook`'s generic dark/error gate still\n// applies — a dark or errored read renders nothing at all (404-shaped),\n// the same precedent every prior wave sets.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useConflicts } from '../../../../core/hooks/useConflicts.js';\nimport { useForms } from '../../../../core/hooks/useForms.js';\nimport { useParties } from '../../../../core/hooks/useParties.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { FormFillRenderer } from './internal/FormFillRenderer';\nimport { FormFillSheet } from './internal/FormFillSheet';\nimport { FormResponsesList } from './internal/FormResponsesList';\nimport { fillStateOf } from './internal/FormWindowState';\nimport { rankForms } from './internal/rankForms';\nimport { TripFormsPanel } from './internal/TripFormsPanel';\nimport type {\n FormDefinitionDetail,\n FormResponseDetail,\n FormsListRow,\n ManagerFormsSectionProps,\n TravellerFormResponseRow,\n TripFormResponseRow,\n TripFormRow,\n} from './ManagerFormsSection.types';\n\nexport function ManagerFormsSection({\n tripRef,\n initialFormRef,\n travellerRef,\n onSubmitted,\n components,\n style,\n}: ManagerFormsSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const forms = useForms(tripRef);\n const conflicts = useConflicts(tripRef);\n const parties = useParties(tripRef);\n\n const TripFormsPanelUI = components?.TripFormsPanel ?? TripFormsPanel;\n const FormFillRendererUI = components?.FormFillRenderer ?? FormFillRenderer;\n\n const [travellerRows, setTravellerRows] = useState<readonly TravellerFormResponseRow[]>([]);\n /** Distinguishes \"the traveller-scoped read hasn't settled yet\" from\n * \"settled, and this traveller genuinely has zero responses\" — both look\n * like `travellerRows: []`, so a separate flag is needed (see\n * `responseResolved`'s own comment below for why this matters). */\n const [travellerRowsLoaded, setTravellerRowsLoaded] = useState(false);\n const [selectedFormId, setSelectedFormId] = useState<string | undefined>(initialFormRef);\n const [definition, setDefinition] = useState<FormDefinitionDetail | undefined>(undefined);\n const [existingResponse, setExistingResponse] = useState<FormResponseDetail | undefined>(\n undefined,\n );\n /** True once the \"does this subject already have a response\" lookup has\n * settled (found or not) for the CURRENTLY selected form — gates\n * `FormFillRenderer`'s own mount so its local `answers` state's lazy\n * initializer never captures a still-`undefined` `existingResponse` that\n * then arrives moments later (a real bug caught live: the traveller-\n * scoped `travellerRows` read and the form's own `definition` read\n * resolve at different times, and `FormFillRenderer` only re-derives its\n * prefill on mount, not on a later prop change). */\n const [responseResolved, setResponseResolved] = useState(false);\n const [pending, setPending] = useState(false);\n /** Flips true the instant a submit succeeds — see this file's own header,\n * gap 1: the write's own `OutboxOp` carries no fresh `FormResponseDetail`\n * to derive a real \"locked\" state from, so this composite tracks the\n * fact locally instead of fabricating one. */\n const [locallyLocked, setLocallyLocked] = useState(false);\n\n /** The `TRAVELLER`-audience form a manager is browsing every respondent\n * for (main-list only — never set alongside a host-supplied\n * `travellerRef`, which already scopes everything to one traveller). */\n const [browsingFormId, setBrowsingFormId] = useState<string | undefined>(undefined);\n const [browsingResponses, setBrowsingResponses] = useState<readonly TripFormResponseRow[]>([]);\n const [browsingResponsesLoaded, setBrowsingResponsesLoaded] = useState(false);\n /** One respondent's row tapped out of the browse list — renders that\n * response read-only. */\n const [viewingResponse, setViewingResponse] = useState<TripFormResponseRow | undefined>(\n undefined,\n );\n const [viewingResponseDetail, setViewingResponseDetail] = useState<\n FormResponseDetail | undefined\n >(undefined);\n\n const ready = forms.status === 'ready';\n\n // Traveller-scoped mode's own read — the parent's `forms[]` alone can't\n // say whether THIS traveller has answered a given form.\n // biome-ignore lint/correctness/useExhaustiveDependencies: `forms.travellerResponses` is a fresh closure every render; re-running only on the real inputs (readiness, traveller) is correct.\n useEffect(() => {\n setTravellerRowsLoaded(false);\n if (!ready || travellerRef === undefined) {\n setTravellerRows([]);\n setTravellerRowsLoaded(true);\n return;\n }\n let cancelled = false;\n forms.travellerResponses(travellerRef).then((rows) => {\n if (!cancelled) {\n setTravellerRows(rows);\n setTravellerRowsLoaded(true);\n }\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `forms.travellerResponses` is a fresh closure every render; re-running only on the real inputs (readiness, traveller) is correct.\n }, [ready, travellerRef]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: `forms.getDefinition`/`forms.getResponse` are fresh closures every render; re-running only on the real inputs is correct.\n useEffect(() => {\n setLocallyLocked(false);\n setResponseResolved(false);\n if (!ready || selectedFormId === undefined) {\n setDefinition(undefined);\n setExistingResponse(undefined);\n return;\n }\n if (!travellerRowsLoaded) {\n // The traveller-scoped lookup below hasn't settled yet — wait for it\n // rather than resolving `existingResponse: undefined` prematurely\n // (this effect re-runs once `travellerRowsLoaded` flips true).\n return;\n }\n let cancelled = false;\n void forms.getDefinition(selectedFormId).then((detail) => {\n if (!cancelled) {\n setDefinition(detail);\n }\n });\n const responseRow = travellerRows.find((row) => row.formId === selectedFormId);\n if (responseRow !== undefined) {\n void forms.getResponse(selectedFormId, responseRow.id).then((detail) => {\n if (!cancelled) {\n setExistingResponse(detail);\n setResponseResolved(true);\n }\n });\n } else {\n setExistingResponse(undefined);\n setResponseResolved(true);\n }\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- same reasoning as above.\n }, [ready, selectedFormId, travellerRows, travellerRowsLoaded]);\n\n // Browse mode's own definition fetch — mirrors the effect above but keyed\n // on `browsingFormId` (mutually exclusive with `selectedFormId`; runs\n // only when browsing a `TRAVELLER`-audience form from the main list).\n // biome-ignore lint/correctness/useExhaustiveDependencies: `forms.getDefinition` is a fresh closure every render.\n useEffect(() => {\n if (!ready || browsingFormId === undefined) {\n return;\n }\n let cancelled = false;\n void forms.getDefinition(browsingFormId).then((detail) => {\n if (!cancelled) {\n setDefinition(detail);\n }\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- same reasoning as above.\n }, [ready, browsingFormId]);\n\n // The browse list itself — every respondent's row for this one form.\n // biome-ignore lint/correctness/useExhaustiveDependencies: `forms.formResponses` is a fresh closure every render.\n useEffect(() => {\n setBrowsingResponsesLoaded(false);\n setViewingResponse(undefined);\n if (!ready || browsingFormId === undefined) {\n setBrowsingResponses([]);\n return;\n }\n let cancelled = false;\n void forms.formResponses(browsingFormId).then((rows) => {\n if (!cancelled) {\n setBrowsingResponses(rows);\n setBrowsingResponsesLoaded(true);\n }\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- same reasoning as above.\n }, [ready, browsingFormId]);\n\n // One respondent's full answer set, once tapped out of the browse list.\n // biome-ignore lint/correctness/useExhaustiveDependencies: `forms.getResponse` is a fresh closure every render.\n useEffect(() => {\n if (!ready || browsingFormId === undefined || viewingResponse === undefined) {\n setViewingResponseDetail(undefined);\n return;\n }\n let cancelled = false;\n void forms.getResponse(browsingFormId, viewingResponse.id).then((detail) => {\n if (!cancelled) {\n setViewingResponseDetail(detail);\n }\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- same reasoning as above.\n }, [ready, browsingFormId, viewingResponse]);\n\n if (forms.status === 'loading') {\n return (\n <div className=\"kf-manager-forms__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-forms__skeleton-line\" />\n <div className=\"kf-manager-forms__skeleton-line\" />\n <div className=\"kf-manager-forms__skeleton-line kf-manager-forms__skeleton-line--short\" />\n </div>\n );\n }\n\n if (forms.status === 'dark' || forms.status === 'error') {\n return null;\n }\n\n const selectedForm: TripFormRow | undefined = forms.forms.find(\n (row) => row.id === selectedFormId,\n );\n const browsingForm: TripFormRow | undefined = forms.forms.find(\n (row) => row.id === browsingFormId,\n );\n\n const rosterRows = parties.status === 'ready' ? parties.tripRoster.rows : [];\n const travellerNameFor = (travellerId: string): string | undefined =>\n rosterRows.find((row) => row.traveller.travellerId === travellerId)?.traveller.fullName;\n\n const rows: readonly FormsListRow[] =\n travellerRef !== undefined\n ? // A `MANAGER`-audience form (e.g. a daily self-fill check-in) has no\n // per-traveller answer to show — only `TRAVELLER`-audience forms\n // belong in one traveller's own list.\n forms.forms\n .filter((form) => form.audience === 'TRAVELLER')\n .map((form) => ({\n form,\n response: travellerRows.find((row) => row.formId === form.id),\n }))\n : rankForms(forms.forms).map((form) => ({ form, response: undefined }));\n\n const submitPath = (formId: string): string =>\n `/api/v1/trips/${tripRef}/forms/${formId}/responses`;\n const hasConflict =\n selectedFormId !== undefined &&\n conflicts.conflicts.some((conflict) => conflict.entity === submitPath(selectedFormId));\n\n async function handleWrite(\n answers: readonly { fieldKey: string; value: unknown }[],\n submit: boolean,\n ): Promise<void> {\n if (!ready || selectedFormId === undefined) {\n return;\n }\n setPending(true);\n try {\n await forms.submitResponse({\n formId: selectedFormId,\n ...(travellerRef !== undefined ? { travellerRef } : {}),\n answers: [...answers],\n submit,\n });\n if (submit) {\n // Optimistic lock — we know the submit succeeded; the outbox write\n // itself is fire-and-forget with no immediate server response back\n // to derive a real `FormResponseDetail` from (see this file's own\n // header, gap 1). `FormFillRenderer` previews using the answers\n // already in ITS OWN local state, so no fabricated response object\n // is needed here — only the lock flag.\n setLocallyLocked(true);\n // Traveller-scoped mode: re-resolve the real responseId honestly by\n // re-reading `travellerResponses` — best-effort, may briefly race\n // the outbox drain (the same class of eventual-consistency gap\n // `useChecklists.ts`'s own toggle write already documents).\n if (travellerRef !== undefined) {\n const rows = await forms.travellerResponses(travellerRef);\n const matched = rows.find((row) => row.formId === selectedFormId);\n if (matched !== undefined) {\n onSubmitted?.(selectedFormId, matched.id);\n }\n }\n }\n } finally {\n setPending(false);\n }\n }\n\n // Both drill-ins render as an overlay sheet (`FormFillSheet`) rather than\n // replacing this section's own content in place — real user feedback: the\n // \"FORMS\" list used to disappear behind whichever form was open. The list/\n // browse-list stays mounted underneath either sheet.\n return (\n <div className=\"kf-manager-forms\" style={tokenStyle(style)}>\n {browsingForm !== undefined ? (\n <FormResponsesList\n form={browsingForm}\n responses={browsingResponses}\n loaded={browsingResponsesLoaded}\n travellerNameFor={travellerNameFor}\n onSelectResponse={setViewingResponse}\n onBack={() => setBrowsingFormId(undefined)}\n />\n ) : (\n <>\n {travellerRef === undefined ? (\n <p className=\"kf-manager-forms__title\">{t('chrome.managerTrip.tab.forms')}</p>\n ) : null}\n <TripFormsPanelUI\n rows={rows}\n now={forms.syncedAt}\n travellerScoped={travellerRef !== undefined}\n onSelectForm={(row) => {\n if (fillStateOf(row.form) === 'draft') {\n return;\n }\n // A host-scoped traveller (`travellerRef` prop) always means\n // \"view/capture THIS traveller's own answer\" regardless of\n // audience — unchanged. In the manager's own main list, a\n // `TRAVELLER`-audience form is never something the manager\n // fills themselves (the confusing UX this branch used to\n // produce — a manager prompted to \"fill\" a form meant for\n // travellers); it opens the browse-all-respondents view\n // instead. Only a `MANAGER`-audience form opens self-fill.\n if (travellerRef !== undefined || row.form.audience === 'MANAGER') {\n setSelectedFormId(row.form.id);\n } else {\n setBrowsingFormId(row.form.id);\n }\n }}\n />\n </>\n )}\n\n <FormFillSheet\n open={selectedForm !== undefined}\n label={selectedForm?.title ?? t('chrome.managerTrip.tab.forms')}\n onClose={() => setSelectedFormId(undefined)}\n >\n {selectedForm !== undefined && definition !== undefined && responseResolved ? (\n <FormFillRendererUI\n form={selectedForm}\n definition={definition}\n existingResponse={existingResponse}\n locked={locallyLocked || existingResponse?.status === 'SUBMITTED'}\n travellerRef={travellerRef}\n pending={pending}\n hasConflict={hasConflict}\n onSave={(answers) => void handleWrite(answers, false)}\n onSubmit={(answers) => void handleWrite(answers, true)}\n onRefreshAfterConflict={() => {\n setSelectedFormId(undefined);\n }}\n onBack={() => setSelectedFormId(undefined)}\n />\n ) : selectedForm !== undefined ? (\n <div className=\"kf-manager-forms__skeleton\">\n <div className=\"kf-manager-forms__skeleton-line\" />\n <div className=\"kf-manager-forms__skeleton-line\" />\n </div>\n ) : null}\n </FormFillSheet>\n\n <FormFillSheet\n open={viewingResponse !== undefined}\n label={browsingForm?.title ?? t('chrome.managerTrip.tab.forms')}\n onClose={() => setViewingResponse(undefined)}\n >\n {viewingResponseDetail !== undefined &&\n definition !== undefined &&\n browsingForm !== undefined &&\n viewingResponse !== undefined ? (\n <FormFillRendererUI\n form={browsingForm}\n definition={definition}\n existingResponse={viewingResponseDetail}\n // Always locked — this is someone else's already-recorded\n // answer, reviewed by the manager, never edited in place here.\n locked={true}\n // Real, non-fabricated: the respondent's own id gates the\n // `SELF_ONLY` filter the exact same way an on-behalf capture\n // would — the manager isn't \"self\" for this response either.\n travellerRef={viewingResponse.travellerId ?? viewingResponse.respondentKey}\n pending={false}\n hasConflict={false}\n onSave={() => {}}\n onSubmit={() => {}}\n onRefreshAfterConflict={() => {}}\n onBack={() => setViewingResponse(undefined)}\n />\n ) : viewingResponse !== undefined ? (\n <div className=\"kf-manager-forms__skeleton\">\n <div className=\"kf-manager-forms__skeleton-line\" />\n <div className=\"kf-manager-forms__skeleton-line\" />\n </div>\n ) : null}\n </FormFillSheet>\n </div>\n );\n}\n","// Pure derivation helpers off `useItinerary()`'s real return shape — no\n// `kaafil-js` import (hard rule #1), no fabricated fields. Each composite\n// this session owns its own internal helpers rather than sharing a\n// cross-composite derive module (same convention `deriveRooming.ts`/\n// `deriveSeating.ts` establish).\n\nimport type { ItineraryDayRow, ItineraryItemRow } from '../ManagerItinerarySection.types';\n\n// `en-GB` day/month formatting — the exact convention `TripHero.tsx`'s own\n// `formatDateRange` and the Rooming/Vehicles waves' stay-window/day labels\n// already use, so a date reads identically everywhere in this UIKit.\nconst WEEKDAY_FORMATTER = new Intl.DateTimeFormat('en-GB', { weekday: 'short' });\nconst DATE_FORMATTER = new Intl.DateTimeFormat('en-GB', { day: '2-digit', month: 'short' });\nconst TIME_FORMATTER = new Intl.DateTimeFormat('en-GB', { hour: '2-digit', minute: '2-digit' });\n\nexport function dayWeekdayLabel(isoDate: string): string {\n return WEEKDAY_FORMATTER.format(new Date(isoDate));\n}\n\nexport function dayDateLabel(isoDate: string): string {\n return DATE_FORMATTER.format(new Date(isoDate)).toUpperCase();\n}\n\nexport function formatTimeRange(startTime: string | null, endTime: string | null): string | null {\n if (startTime === null) {\n return null;\n }\n const start = TIME_FORMATTER.format(new Date(startTime));\n if (endTime === null) {\n return start;\n }\n return `${start} – ${TIME_FORMATTER.format(new Date(endTime))}`;\n}\n\nexport function itemsForDay(\n items: readonly ItineraryItemRow[],\n dayIndex: number,\n): readonly ItineraryItemRow[] {\n return items\n .filter((item) => item.dayIndex === dayIndex)\n .slice()\n .sort((a, b) => a.sortOrder - b.sortOrder);\n}\n\nexport function sortedDays(days: readonly ItineraryDayRow[]): readonly ItineraryDayRow[] {\n return days.slice().sort((a, b) => a.dayIndex - b.dayIndex);\n}\n\n/** `initialDayIso` names the day the server picked to land on — matched by\n * ISO date, never by array position, since `days[]` order is not\n * contractually guaranteed. Falls back to the first day when no match is\n * found (an honest default, never a silent crash on `undefined`). */\nexport function resolveInitialDayIndex(\n days: readonly ItineraryDayRow[],\n initialDayIso: string | undefined,\n): number {\n if (initialDayIso !== undefined) {\n const match = days.find((day) => day.isoDate === initialDayIso);\n if (match !== undefined) {\n return match.dayIndex;\n }\n }\n return sortedDays(days)[0]?.dayIndex ?? 0;\n}\n\nconst TYPE_LABEL_KEY: Record<ItineraryItemRow['type'], string> = {\n ACCOMMODATION: 'chrome.managerTrip.itinerary.type.accommodation',\n TRANSPORT: 'chrome.managerTrip.itinerary.type.transport',\n ACTIVITY: 'chrome.managerTrip.itinerary.type.activity',\n MEAL: 'chrome.managerTrip.itinerary.type.meal',\n OTHER: 'chrome.managerTrip.itinerary.type.other',\n};\n\nexport function itemTypeLabelKey(type: ItineraryItemRow['type']): string {\n return TYPE_LABEL_KEY[type];\n}\n\nconst STATUS_LABEL_KEY: Record<ItineraryItemRow['status'], string> = {\n PLANNED: 'chrome.managerTrip.itinerary.status.planned',\n LIVE: 'chrome.managerTrip.itinerary.status.live',\n COMPLETED: 'chrome.managerTrip.itinerary.status.completed',\n SKIPPED: 'chrome.managerTrip.itinerary.status.skipped',\n};\n\nexport function itemStatusLabelKey(status: ItineraryItemRow['status']): string {\n return STATUS_LABEL_KEY[status];\n}\n\nexport type StatusTone = 'soft' | 'accent' | 'pos' | 'warn';\n\nconst STATUS_TONE: Record<ItineraryItemRow['status'], StatusTone> = {\n PLANNED: 'soft',\n LIVE: 'accent',\n COMPLETED: 'pos',\n SKIPPED: 'warn',\n};\n\nexport function itemStatusTone(status: ItineraryItemRow['status']): StatusTone {\n return STATUS_TONE[status];\n}\n\n/** A patch may only SET `PLANNED|COMPLETED|SKIPPED` — `LIVE` is\n * server-derived and never appears in the edit sheet's own status picker\n * (`PatchItineraryItemRequest.status`'s real enum, narrower than the read\n * side's). */\nexport const PATCHABLE_ITEM_STATUSES = ['PLANNED', 'COMPLETED', 'SKIPPED'] as const;\nexport type PatchableItemStatus = (typeof PATCHABLE_ITEM_STATUSES)[number];\n\nexport function canMoveUp(items: readonly ItineraryItemRow[], itemId: string): boolean {\n const index = items.findIndex((item) => item.id === itemId);\n return index > 0;\n}\n\nexport function canMoveDown(items: readonly ItineraryItemRow[], itemId: string): boolean {\n const index = items.findIndex((item) => item.id === itemId);\n return index >= 0 && index < items.length - 1;\n}\n\n/** A plain `HH:MM` from a time `<input>` names no timezone of its own — this\n * combines it with the SELECTED DAY's own `isoDate` (calendar date + the\n * trip's real offset, already resolved server-side) so the write lands on\n * the same offset the day itself carries, rather than guessing the trip's\n * IANA zone client-side (no such conversion utility exists in this UIKit,\n * and the engine's own doc note confirms the offset sent doesn't change\n * which DAY a write resolves to — only the exact instant, which this keeps\n * honest by reusing the day's own). */\nexport function combineDateAndTime(dayIsoDate: string, time: string): string {\n const datePart = dayIsoDate.slice(0, 10);\n const offsetMatch = /(Z|[+-]\\d{2}:\\d{2})$/.exec(dayIsoDate);\n const offset = offsetMatch?.[1] ?? 'Z';\n return `${datePart}T${time}:00${offset}`;\n}\n\n/** The inverse — a `<input type=\"time\">` value from a stored instant, in\n * that instant's OWN offset (never the browser's local zone, which would\n * silently show a manager in a different timezone the wrong clock time). */\nexport function timeInputValue(isoDateTime: string): string {\n const match = /T(\\d{2}:\\d{2})/.exec(isoDateTime);\n return match?.[1] ?? '';\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function PlusIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n );\n}\n\nexport function EditIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 20h9\" />\n <path d=\"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z\" />\n </svg>\n );\n}\n\nexport function TrashIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0-1 14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2L4 6h16Z\" />\n </svg>\n );\n}\n\nexport function ChevronUpIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m6 15 6-6 6 6\" />\n </svg>\n );\n}\n\nexport function ChevronDownIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nexport function ClockIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 7v5l3 3\" />\n </svg>\n );\n}\n\nexport function HistoryIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 12a9 9 0 1 0 3-6.7\" />\n <path d=\"M3 5v5h5\" />\n <path d=\"M12 7v5l3 3\" />\n </svg>\n );\n}\n","'use client';\n\n// Add AND edit one block, one sheet — the same precedent\n// `AddVehicleSheet.tsx`/rooming's own add-room sheet establish. `type` is\n// the real 5-value enum the wire actually has (`ACCOMMODATION|TRANSPORT|\n// ACTIVITY|MEAL|OTHER`) — there is no \"vendor task\"/\"free time\" type on the\n// wire; an untimed item (blank start time) IS free time. `status` is only\n// offered in EDIT mode, and only the three values a patch may actually SET\n// (`PLANNED|COMPLETED|SKIPPED` — `LIVE` is server-derived, never settable).\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type {\n ItineraryItemRow,\n PatchableItemStatus,\n TripVendorRow,\n} from '../ManagerItinerarySection.types';\nimport {\n combineDateAndTime,\n itemStatusLabelKey,\n itemTypeLabelKey,\n PATCHABLE_ITEM_STATUSES,\n timeInputValue,\n} from './deriveItinerary';\nimport { CloseIcon, TrashIcon } from './icons';\n\nconst ITEM_TYPES = ['ACCOMMODATION', 'TRANSPORT', 'ACTIVITY', 'MEAL', 'OTHER'] as const;\ntype ItemType = (typeof ITEM_TYPES)[number];\n\nexport interface AddItemSheetCreateInput {\n readonly isoDate: string;\n readonly type: ItemType;\n readonly title: string;\n readonly description: string | null;\n readonly vendorId: string | null;\n readonly vendorLabel: string | null;\n readonly startTime: string | null;\n readonly endTime: string | null;\n}\n\nexport interface AddItemSheetPatchInput {\n readonly itemId: string;\n readonly version: number;\n readonly type: ItemType;\n readonly title: string;\n readonly description: string | null;\n readonly vendorId: string | null;\n readonly vendorLabel: string | null;\n readonly startTime: string | null;\n readonly endTime: string | null;\n readonly status: PatchableItemStatus;\n}\n\nexport interface AddItemSheetProps {\n readonly open: boolean;\n /** `undefined` = create mode; a real row = edit mode. */\n readonly item: ItineraryItemRow | undefined;\n /** The selected day's own `isoDate` — the day a NEW item is created on\n * (an edit keeps its existing item's day; this composite offers no\n * \"move to another day\" affordance, matching the real endpoint's own\n * shape — `patchItem` has no `isoDate` field at all). */\n readonly dayIsoDate: string;\n readonly vendors: readonly TripVendorRow[];\n readonly onCreate: (input: AddItemSheetCreateInput) => Promise<void>;\n readonly onPatch: (input: AddItemSheetPatchInput) => Promise<void>;\n readonly onDelete: (input: { itemId: string; version: number }) => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function AddItemSheet({\n open,\n item,\n dayIsoDate,\n vendors,\n onCreate,\n onPatch,\n onDelete,\n onClose,\n}: AddItemSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [type, setType] = useState<ItemType>('OTHER');\n const [title, setTitle] = useState('');\n const [description, setDescription] = useState('');\n const [vendorId, setVendorId] = useState<string | null>(null);\n const [vendorLabel, setVendorLabel] = useState('');\n const [startTime, setStartTime] = useState('');\n const [endTime, setEndTime] = useState('');\n const [status, setStatus] = useState<PatchableItemStatus>('PLANNED');\n const [pending, setPending] = useState(false);\n const [confirmingDelete, setConfirmingDelete] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setType(item?.type ?? 'OTHER');\n setTitle(item?.title ?? '');\n setDescription(item?.description ?? '');\n setVendorId(item?.vendorId ?? null);\n setVendorLabel(item?.vendorLabel ?? '');\n setStartTime(\n item?.startTime !== null && item?.startTime !== undefined\n ? timeInputValue(item.startTime)\n : '',\n );\n setEndTime(\n item?.endTime !== null && item?.endTime !== undefined ? timeInputValue(item.endTime) : '',\n );\n setStatus(\n item !== undefined && item.status !== 'LIVE'\n ? (item.status as PatchableItemStatus)\n : 'PLANNED',\n );\n setConfirmingDelete(false);\n }, [open, item]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n if (!open) {\n return null;\n }\n\n const trimmedTitle = title.trim();\n const canSubmit = trimmedTitle.length > 0;\n const resolvedStart = startTime.length > 0 ? combineDateAndTime(dayIsoDate, startTime) : null;\n const resolvedEnd =\n startTime.length > 0 && endTime.length > 0 ? combineDateAndTime(dayIsoDate, endTime) : null;\n const resolvedVendorLabel = vendorLabel.trim().length > 0 ? vendorLabel.trim() : null;\n const resolvedDescription = description.trim().length > 0 ? description.trim() : null;\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n setPending(true);\n try {\n if (item === undefined) {\n await onCreate({\n isoDate: dayIsoDate,\n type,\n title: trimmedTitle,\n description: resolvedDescription,\n vendorId,\n vendorLabel: resolvedVendorLabel,\n startTime: resolvedStart,\n endTime: resolvedEnd,\n });\n } else {\n await onPatch({\n itemId: item.id,\n version: item.version,\n type,\n title: trimmedTitle,\n description: resolvedDescription,\n vendorId,\n vendorLabel: resolvedVendorLabel,\n startTime: resolvedStart,\n endTime: resolvedEnd,\n status,\n });\n }\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n const handleDelete = async (): Promise<void> => {\n if (item === undefined) {\n return;\n }\n setPending(true);\n try {\n await onDelete({ itemId: item.id, version: item.version });\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-itinerary__sheet-backdrop\">\n <div\n className=\"kf-manager-itinerary__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={\n item === undefined\n ? t('chrome.managerTrip.itinerary.addItem.title')\n : t('chrome.managerTrip.itinerary.editItem.title')\n }\n >\n <div className=\"kf-manager-itinerary__sheet-header\">\n <p className=\"kf-manager-itinerary__sheet-title\">\n {item === undefined\n ? t('chrome.managerTrip.itinerary.addItem.title')\n : t('chrome.managerTrip.itinerary.editItem.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <p className=\"kf-manager-itinerary__field-label\">\n {t('chrome.managerTrip.itinerary.addItem.typeLabel')}\n </p>\n <div className=\"kf-manager-itinerary__mode-chips\">\n {ITEM_TYPES.map((candidate) => (\n <button\n key={candidate}\n type=\"button\"\n className=\"kf-manager-itinerary__mode-chip kf-press\"\n data-active={type === candidate}\n onClick={() => setType(candidate)}\n >\n {t(itemTypeLabelKey(candidate))}\n </button>\n ))}\n </div>\n\n <p className=\"kf-manager-itinerary__field-label\">\n {t('chrome.managerTrip.itinerary.addItem.titleLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-itinerary__field-input\"\n value={title}\n onChange={(event) => setTitle(event.target.value)}\n placeholder={t('chrome.managerTrip.itinerary.addItem.titlePlaceholder')}\n />\n\n <div className=\"kf-manager-itinerary__time-row\">\n <div className=\"kf-manager-itinerary__time-field\">\n <p className=\"kf-manager-itinerary__field-label\">\n {t('chrome.managerTrip.itinerary.addItem.startTimeLabel')}\n </p>\n <input\n type=\"time\"\n className=\"kf-manager-itinerary__field-input\"\n value={startTime}\n onChange={(event) => {\n setStartTime(event.target.value);\n if (event.target.value.length === 0) {\n setEndTime('');\n }\n }}\n />\n </div>\n <div className=\"kf-manager-itinerary__time-field\">\n <p className=\"kf-manager-itinerary__field-label\">\n {t('chrome.managerTrip.itinerary.addItem.endTimeLabel')}\n </p>\n <input\n type=\"time\"\n className=\"kf-manager-itinerary__field-input\"\n value={endTime}\n disabled={startTime.length === 0}\n min={startTime.length > 0 ? startTime : undefined}\n onChange={(event) => setEndTime(event.target.value)}\n />\n </div>\n </div>\n {startTime.length === 0 ? (\n <p className=\"kf-manager-itinerary__hint-copy\">\n {t('chrome.managerTrip.itinerary.addItem.freeTimeHint')}\n </p>\n ) : null}\n\n <p className=\"kf-manager-itinerary__field-label\">\n {t('chrome.managerTrip.itinerary.addItem.vendorLabel')}\n </p>\n {vendors.length > 0 ? (\n <div className=\"kf-manager-itinerary__mode-chips\">\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__mode-chip kf-press\"\n data-active={vendorId === null}\n onClick={() => setVendorId(null)}\n >\n {t('chrome.managerTrip.itinerary.addItem.noVendor')}\n </button>\n {vendors.map((vendor) => (\n <button\n key={vendor.id}\n type=\"button\"\n className=\"kf-manager-itinerary__mode-chip kf-press\"\n data-active={vendorId === vendor.id}\n onClick={() => {\n setVendorId(vendor.id);\n setVendorLabel(vendor.name);\n }}\n >\n {vendor.name}\n </button>\n ))}\n </div>\n ) : null}\n <input\n type=\"text\"\n className=\"kf-manager-itinerary__field-input\"\n value={vendorLabel}\n onChange={(event) => setVendorLabel(event.target.value)}\n placeholder={t('chrome.managerTrip.itinerary.addItem.vendorPlaceholder')}\n />\n\n <p className=\"kf-manager-itinerary__field-label\">\n {t('chrome.managerTrip.itinerary.addItem.descriptionLabel')}\n </p>\n <textarea\n className=\"kf-manager-itinerary__field-textarea\"\n rows={3}\n value={description}\n onChange={(event) => setDescription(event.target.value)}\n placeholder={t('chrome.managerTrip.itinerary.addItem.descriptionPlaceholder')}\n />\n\n {item !== undefined ? (\n <>\n <p className=\"kf-manager-itinerary__field-label\">\n {t('chrome.managerTrip.itinerary.addItem.statusLabel')}\n </p>\n <div className=\"kf-manager-itinerary__mode-chips\">\n {PATCHABLE_ITEM_STATUSES.map((candidate) => (\n <button\n key={candidate}\n type=\"button\"\n className=\"kf-manager-itinerary__mode-chip kf-press\"\n data-active={status === candidate}\n onClick={() => setStatus(candidate)}\n >\n {t(itemStatusLabelKey(candidate))}\n </button>\n ))}\n </div>\n </>\n ) : null}\n\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__sheet-submit kf-press\"\n disabled={!canSubmit || pending}\n onClick={() => void handleSubmit()}\n >\n {item === undefined ? t('chrome.managerTrip.itinerary.addItem.submit') : t('chrome.save')}\n </button>\n\n {item !== undefined ? (\n confirmingDelete ? (\n <div className=\"kf-manager-itinerary__filter-sheet-footer\">\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__filter-sheet-clear kf-press\"\n onClick={() => setConfirmingDelete(false)}\n >\n {t('chrome.cancel')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__danger-button kf-press\"\n disabled={pending}\n onClick={() => void handleDelete()}\n >\n {t('chrome.managerTrip.itinerary.editItem.confirmDelete')}\n </button>\n </div>\n ) : (\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__delete-link kf-press\"\n onClick={() => setConfirmingDelete(true)}\n >\n <TrashIcon /> {t('chrome.managerTrip.itinerary.editItem.delete')}\n </button>\n )\n ) : null}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The real, actor-attributed activity feed — `GET .../itinerary/change-log`,\n// newest-first, capped at 50 server-side. Loaded on open, never pre-fetched\n// (matches `loadChangeLog()`'s own on-demand shape, no cache to warm).\n\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ItineraryChangeLogRow } from '../ManagerItinerarySection.types';\nimport { CloseIcon } from './icons';\n\nexport interface ChangeLogSheetProps {\n readonly open: boolean;\n readonly entries: readonly ItineraryChangeLogRow[];\n readonly loaded: boolean;\n readonly fetchFailed: boolean;\n readonly onLoad: () => void;\n readonly onClose: () => void;\n}\n\nexport function ChangeLogSheet({\n open,\n entries,\n loaded,\n fetchFailed,\n onLoad,\n onClose,\n}: ChangeLogSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: `onLoad` omitted deliberately — it's a fresh closure identity every render, and listing it would re-fetch the log every parent re-render instead of only on open.\n useEffect(() => {\n if (open) {\n onLoad();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- onLoad omitted deliberately, same rationale as the biome-ignore above this effect.\n }, [open]);\n\n if (!open) {\n return null;\n }\n\n return (\n <div className=\"kf-manager-itinerary__sheet-backdrop\">\n <div\n className=\"kf-manager-itinerary__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.itinerary.changeLog.title')}\n >\n <div className=\"kf-manager-itinerary__sheet-header\">\n <p className=\"kf-manager-itinerary__sheet-title\">\n {t('chrome.managerTrip.itinerary.changeLog.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {!loaded && !fetchFailed ? (\n <p className=\"kf-manager-itinerary__assign-empty\">{t('chrome.loading')}</p>\n ) : fetchFailed && entries.length === 0 ? (\n <p className=\"kf-manager-itinerary__assign-empty\">\n {t('chrome.managerTrip.itinerary.changeLog.loadFailed')}\n </p>\n ) : entries.length === 0 ? (\n <p className=\"kf-manager-itinerary__assign-empty\">\n {t('chrome.managerTrip.itinerary.changeLog.empty')}\n </p>\n ) : (\n <div className=\"kf-manager-itinerary__change-log-list\">\n {entries.map((entry) => (\n <div key={entry.id} className=\"kf-manager-itinerary__change-log-row\">\n <p className=\"kf-manager-itinerary__change-log-title\">{entry.title}</p>\n <p className=\"kf-manager-itinerary__change-log-summary\">{entry.summary}</p>\n <p className=\"kf-manager-itinerary__change-log-meta\">\n {entry.actorName ?? t('chrome.managerTrip.itinerary.changeLog.systemActor')}\n {' · '}\n {entry.createdAtLabel}\n </p>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The compact day-strip — an ARIA `Tabs` pattern per the family spec\n// (`ui-kit/families/manager/02-itinerary.md`), never a full desk-style\n// multi-day grid (that's the admin family's own composite). Each chip shows\n// the real `dayIndex+1` (1-based for display), weekday, and a dot when the\n// day actually has items (`!day.isEmpty`, real, never fabricated).\n\nimport type { ReactNode } from 'react';\nimport type { ItineraryDayRow } from '../ManagerItinerarySection.types';\nimport { dayWeekdayLabel } from './deriveItinerary';\n\nexport interface DayStripProps {\n readonly days: readonly ItineraryDayRow[];\n readonly selectedDayIndex: number;\n readonly onSelect: (dayIndex: number) => void;\n}\n\nexport function DayStrip({ days, selectedDayIndex, onSelect }: DayStripProps): ReactNode {\n return (\n <div className=\"kf-manager-itinerary__day-strip\" role=\"tablist\" aria-label=\"Trip days\">\n {days.map((day) => (\n <button\n key={day.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={day.dayIndex === selectedDayIndex}\n className=\"kf-manager-itinerary__day-chip kf-press\"\n data-active={day.dayIndex === selectedDayIndex}\n onClick={() => onSelect(day.dayIndex)}\n >\n <span className=\"kf-manager-itinerary__day-chip-number\">{day.dayIndex + 1}</span>\n <span className=\"kf-manager-itinerary__day-chip-weekday\">\n {dayWeekdayLabel(day.isoDate)}\n </span>\n {!day.isEmpty ? <span className=\"kf-manager-itinerary__day-chip-dot\" /> : null}\n </button>\n ))}\n </div>\n );\n}\n","'use client';\n\n// Renames a day card — `cardTitle`/`summaryLine` only. There is no\n// \"create a day\" endpoint (days materialize lazily server-side from the\n// trip's own date range) and no \"delete a day\" either — this sheet can\n// only ever rename, never remove.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ItineraryDayRow } from '../ManagerItinerarySection.types';\nimport { CloseIcon } from './icons';\n\nexport interface EditDaySheetProps {\n readonly open: boolean;\n readonly day: ItineraryDayRow | undefined;\n readonly onPatch: (input: {\n dayIndex: number;\n version: number;\n cardTitle?: string;\n summaryLine?: string | null;\n }) => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function EditDaySheet({ open, day, onPatch, onClose }: EditDaySheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [cardTitle, setCardTitle] = useState('');\n const [summaryLine, setSummaryLine] = useState('');\n const [pending, setPending] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setCardTitle(day?.cardTitle ?? '');\n setSummaryLine(day?.summaryLine ?? '');\n }, [open, day]);\n\n if (!open || day === undefined) {\n return null;\n }\n\n const trimmedTitle = cardTitle.trim();\n const canSubmit = trimmedTitle.length > 0;\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n setPending(true);\n try {\n const trimmedSummary = summaryLine.trim();\n await onPatch({\n dayIndex: day.dayIndex,\n version: day.version,\n cardTitle: trimmedTitle,\n summaryLine: trimmedSummary.length > 0 ? trimmedSummary : null,\n });\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-itinerary__sheet-backdrop\">\n <div\n className=\"kf-manager-itinerary__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.itinerary.editDay.title')}\n >\n <div className=\"kf-manager-itinerary__sheet-header\">\n <p className=\"kf-manager-itinerary__sheet-title\">\n {t('chrome.managerTrip.itinerary.editDay.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <p className=\"kf-manager-itinerary__field-label\">\n {t('chrome.managerTrip.itinerary.editDay.cardTitleLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-itinerary__field-input\"\n value={cardTitle}\n onChange={(event) => setCardTitle(event.target.value)}\n />\n\n <p className=\"kf-manager-itinerary__field-label\">\n {t('chrome.managerTrip.itinerary.editDay.summaryLineLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-itinerary__field-input\"\n value={summaryLine}\n onChange={(event) => setSummaryLine(event.target.value)}\n placeholder={t('chrome.managerTrip.itinerary.editDay.summaryLinePlaceholder')}\n />\n\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__sheet-submit kf-press\"\n disabled={!canSubmit || pending}\n onClick={() => void handleSubmit()}\n >\n {t('chrome.save')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// One block on the selected day. Reorder is move-up/move-down IconButtons\n// ONLY — the family spec is explicit: `ReorderableList` ships\n// `draggable={false}` for this family, no drag anywhere (admin's own\n// desk-grid composite is the one that gets drag, out of scope here).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ItineraryItemRow } from '../ManagerItinerarySection.types';\nimport {\n formatTimeRange,\n itemStatusLabelKey,\n itemStatusTone,\n itemTypeLabelKey,\n} from './deriveItinerary';\nimport { ChevronDownIcon, ChevronUpIcon } from './icons';\n\nexport interface ItemCardProps {\n readonly item: ItineraryItemRow;\n readonly canMoveUp: boolean;\n readonly canMoveDown: boolean;\n readonly onMoveUp: (item: ItineraryItemRow) => void;\n readonly onMoveDown: (item: ItineraryItemRow) => void;\n readonly onEdit: (item: ItineraryItemRow) => void;\n}\n\nexport function ItemCard({\n item,\n canMoveUp,\n canMoveDown,\n onMoveUp,\n onMoveDown,\n onEdit,\n}: ItemCardProps): ReactNode {\n const { t } = useKaafilChrome();\n const timeRange = formatTimeRange(item.startTime, item.endTime);\n\n return (\n <div className=\"kf-manager-itinerary__item-card\">\n <div className=\"kf-manager-itinerary__item-reorder\">\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__reorder-button kf-press\"\n disabled={!canMoveUp}\n aria-label={t('chrome.managerTrip.itinerary.item.moveUp')}\n onClick={() => onMoveUp(item)}\n >\n <ChevronUpIcon />\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__reorder-button kf-press\"\n disabled={!canMoveDown}\n aria-label={t('chrome.managerTrip.itinerary.item.moveDown')}\n onClick={() => onMoveDown(item)}\n >\n <ChevronDownIcon />\n </button>\n </div>\n\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__item-body kf-press\"\n onClick={() => onEdit(item)}\n >\n <div className=\"kf-manager-itinerary__item-header\">\n <span className=\"kf-manager-itinerary__pill\" data-tone=\"soft\">\n {t(itemTypeLabelKey(item.type))}\n </span>\n <span className=\"kf-manager-itinerary__pill\" data-tone={itemStatusTone(item.status)}>\n {t(itemStatusLabelKey(item.status))}\n </span>\n </div>\n <p className=\"kf-manager-itinerary__item-title\">{item.title}</p>\n <p className=\"kf-manager-itinerary__item-meta\">\n {timeRange ?? t('chrome.managerTrip.itinerary.item.freeTime')}\n {item.vendorLabel !== null ? ` · ${item.vendorLabel}` : ''}\n </p>\n {item.description !== null ? (\n <p className=\"kf-manager-itinerary__item-description\">{item.description}</p>\n ) : null}\n </button>\n </div>\n );\n}\n","'use client';\n\n// The Itinerary tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'itinerary'` tab panel.\n// `useItinerary(tripRef)` is the one real hook it reads — already complete,\n// no new `/core` hook needed, and deliberately NOT capability-gated (its own\n// header: itinerary carries no capability manifest entry at all). This\n// composite therefore has no `'dark'` branch, unlike every sibling wave.\n//\n// Manager family scope is a SINGLE current-day view (`ui-kit/families/\n// manager/02-itinerary.md`) — no desk multi-day grid, no bulk edit (that's\n// the separate admin composite). A day strip picks the selected day; one\n// day's blocks render below it, reordered by move-up/move-down buttons only\n// (never drag — the family spec is explicit `ReorderableList` here ships\n// `draggable={false}`).\n//\n// Composition order: day strip → day header (+ Edit day, + change log) →\n// block list (or empty state) → \"Add a block\" tail card. Add/edit-item,\n// edit-day, and the change log all open as bottom sheets, never a routed\n// page (hard rule #9).\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useItinerary } from '../../../../core/hooks/useItinerary.js';\nimport { useVendors } from '../../../../core/hooks/useVendors.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { AddItemSheet } from './internal/AddItemSheet';\nimport { ChangeLogSheet } from './internal/ChangeLogSheet';\nimport { DayStrip } from './internal/DayStrip';\nimport {\n canMoveDown,\n canMoveUp,\n dayDateLabel,\n itemsForDay,\n resolveInitialDayIndex,\n sortedDays,\n} from './internal/deriveItinerary';\nimport { EditDaySheet } from './internal/EditDaySheet';\nimport { ItemCard } from './internal/ItemCard';\nimport { HistoryIcon, PlusIcon } from './internal/icons';\nimport type {\n ItineraryItemRow,\n ManagerItinerarySectionProps,\n} from './ManagerItinerarySection.types';\n\nexport function ManagerItinerarySection({\n tripRef,\n emptyView,\n components,\n style,\n}: ManagerItinerarySectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const itinerary = useItinerary(tripRef);\n // `agencyRef` is accepted-but-unused on this hook (its own header\n // comment: the client already auto-binds it from the open session) — an\n // empty string is honest here, never a fabricated real value.\n const vendors = useVendors(tripRef, '');\n\n const DayStripComponent = components?.DayStrip ?? DayStrip;\n const ItemCardComponent = components?.ItemCard ?? ItemCard;\n\n const [selectedDayIndex, setSelectedDayIndex] = useState<number | undefined>(undefined);\n const [itemSheetState, setItemSheetState] = useState<\n { open: true; item: ItineraryItemRow | undefined } | { open: false }\n >({ open: false });\n const [editDayOpen, setEditDayOpen] = useState(false);\n const [changeLogOpen, setChangeLogOpen] = useState(false);\n\n if (itinerary.status === 'loading') {\n return (\n <div className=\"kf-manager-itinerary__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-itinerary__skeleton-block\" />\n <div className=\"kf-manager-itinerary__skeleton-line\" />\n <div className=\"kf-manager-itinerary__skeleton-line kf-manager-itinerary__skeleton-line--short\" />\n </div>\n );\n }\n if (itinerary.status === 'error') {\n return null;\n }\n\n const days = sortedDays(itinerary.days);\n const resolvedEmptyView =\n emptyView !== undefined ? (typeof emptyView === 'function' ? emptyView() : emptyView) : null;\n\n if (days.length === 0) {\n return (\n <div className=\"kf-manager-itinerary\" style={tokenStyle(style)}>\n {resolvedEmptyView ?? (\n <div className=\"kf-manager-itinerary__card kf-manager-itinerary__empty\">\n {t('chrome.managerTrip.itinerary.noDays')}\n </div>\n )}\n </div>\n );\n }\n\n const resolvedDayIndex =\n selectedDayIndex ?? resolveInitialDayIndex(days, itinerary.initialDayIso);\n const activeDay = days.find((day) => day.dayIndex === resolvedDayIndex) ?? days[0];\n if (activeDay === undefined) {\n return null;\n }\n const dayItems = itemsForDay(itinerary.items, activeDay.dayIndex);\n const vendorRoster = vendors.status === 'ready' ? vendors.vendors : [];\n\n const moveItem = async (item: ItineraryItemRow, direction: -1 | 1): Promise<void> => {\n const index = dayItems.findIndex((candidate) => candidate.id === item.id);\n if (index < 0) {\n return;\n }\n await itinerary.reorderItem({ itemId: item.id, index: index + direction });\n };\n\n return (\n <div className=\"kf-manager-itinerary\" style={tokenStyle(style)}>\n <DayStripComponent\n days={days}\n selectedDayIndex={activeDay.dayIndex}\n onSelect={setSelectedDayIndex}\n />\n\n <div className=\"kf-manager-itinerary__day-header\">\n <div className=\"kf-manager-itinerary__day-header-copy\">\n <p className=\"kf-manager-itinerary__day-header-title\">\n {t('chrome.managerTrip.itinerary.dayHeader').replace(\n '{n}',\n String(activeDay.dayIndex + 1),\n )}\n {' · '}\n {dayDateLabel(activeDay.isoDate)}\n </p>\n {activeDay.summaryLine !== null ? (\n <p className=\"kf-manager-itinerary__day-header-summary\">{activeDay.summaryLine}</p>\n ) : null}\n </div>\n <div className=\"kf-manager-itinerary__day-header-actions\">\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__autoassign-link kf-press\"\n onClick={() => setChangeLogOpen(true)}\n >\n <HistoryIcon /> {t('chrome.managerTrip.itinerary.changeLog.button')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__autoassign-link kf-press\"\n onClick={() => setEditDayOpen(true)}\n >\n {t('chrome.managerTrip.itinerary.editDay.button')}\n </button>\n </div>\n </div>\n\n {dayItems.length === 0 ? (\n <div className=\"kf-manager-itinerary__card kf-manager-itinerary__empty\">\n <p className=\"kf-manager-itinerary__empty-title\">\n {t('chrome.managerTrip.itinerary.emptyDay.title')}\n </p>\n <p className=\"kf-manager-itinerary__empty-copy\">\n {t('chrome.managerTrip.itinerary.emptyDay.copy')}\n </p>\n </div>\n ) : (\n dayItems.map((item) => (\n <ItemCardComponent\n key={item.id}\n item={item}\n canMoveUp={canMoveUp(dayItems, item.id)}\n canMoveDown={canMoveDown(dayItems, item.id)}\n onMoveUp={(target) => void moveItem(target, -1)}\n onMoveDown={(target) => void moveItem(target, 1)}\n onEdit={(target) => setItemSheetState({ open: true, item: target })}\n />\n ))\n )}\n\n {itinerary.canAddItems ? (\n <button\n type=\"button\"\n className=\"kf-manager-itinerary__add-item-card kf-press\"\n onClick={() => setItemSheetState({ open: true, item: undefined })}\n >\n <span className=\"kf-manager-itinerary__add-item-icon\">\n <PlusIcon />\n </span>\n <span className=\"kf-manager-itinerary__add-item-copy\">\n <span className=\"kf-manager-itinerary__add-item-title\">\n {t('chrome.managerTrip.itinerary.addBlock.title')}\n </span>\n <span className=\"kf-manager-itinerary__add-item-subtitle\">\n {t('chrome.managerTrip.itinerary.addBlock.subtitle')}\n </span>\n </span>\n </button>\n ) : itinerary.canAddItemsReason !== null ? (\n <p className=\"kf-manager-itinerary__warning-copy\">{itinerary.canAddItemsReason}</p>\n ) : null}\n\n <AddItemSheet\n open={itemSheetState.open}\n item={itemSheetState.open ? itemSheetState.item : undefined}\n dayIsoDate={activeDay.isoDate}\n vendors={vendorRoster}\n onCreate={async (input) => {\n await itinerary.addItem(input);\n }}\n onPatch={async (input) => {\n await itinerary.patchItem(input);\n }}\n onDelete={async (input) => {\n await itinerary.removeItem(input);\n }}\n onClose={() => setItemSheetState({ open: false })}\n />\n\n <EditDaySheet\n open={editDayOpen}\n day={activeDay}\n onPatch={async (input) => {\n await itinerary.patchDay(input);\n }}\n onClose={() => setEditDayOpen(false)}\n />\n\n <ChangeLogSheet\n open={changeLogOpen}\n entries={itinerary.changeLog}\n loaded={itinerary.changeLogLoaded}\n fetchFailed={itinerary.changeLogFetchFailed}\n onLoad={() => void itinerary.loadChangeLog()}\n onClose={() => setChangeLogOpen(false)}\n />\n </div>\n );\n}\n","// Pure client-side joins/derivations over `useParties()`'s two real reads\n// (`list` = booking groups, `tripRoster` = the manifest) — page-composition\n// logic (U-021), not a domain concern hard rule #2 requires living in\n// `/core`, the same reasoning `ManagerNowSection`'s own `internal/` helpers\n// already document.\n\nimport type { PartiesTripRosterRow, PartyRow } from '../../../../../core/hooks/useParties.js';\nimport type {\n ManifestBookingGroup,\n ManifestBookingStatus,\n ManifestDiet,\n ManifestTraveller,\n} from '../ManagerManifestSection.types';\n\nconst RECOGNIZED_BOOKING_STATUS: ReadonlySet<string> = new Set([\n 'CONFIRMED',\n 'TENTATIVE',\n 'CANCELLED',\n]);\n\n/** Only the three real `BookingStatus` values are ever recognized — the DTO\n * widens the field to `string` on the wire, but an unrecognized value (a\n * CRM anomaly) reads as `'CONFIRMED'`'s own opposite: never guessed, so it\n * falls back to `'TENTATIVE'` — the one state this composite already\n * treats as \"needs a look\", rather than silently trusting an unknown\n * string as the all-clear `'CONFIRMED'` state. */\nfunction normalizeBookingStatus(raw: string): ManifestBookingStatus {\n return RECOGNIZED_BOOKING_STATUS.has(raw) ? (raw as ManifestBookingStatus) : 'TENTATIVE';\n}\n\n/** The real `Traveller.dietary` column is CRM free text, not a validated\n * enum — normalized here into the closed 3-state set a badge can render,\n * per this file's own header. An unrecognized string (or `null`) means no\n * badge, never a guess. */\nexport function normalizeDiet(raw: string | null): ManifestDiet | null {\n if (raw === null) {\n return null;\n }\n const upper = raw.trim().toUpperCase();\n if (upper === 'V' || upper === 'VEG' || upper === 'VEGETARIAN') {\n return 'V';\n }\n if (upper === 'NV' || upper === 'NON-VEG' || upper === 'NONVEG' || upper === 'NON_VEG') {\n return 'NV';\n }\n if (upper === 'J' || upper === 'JAIN') {\n return 'J';\n }\n return null;\n}\n\nexport function toManifestTravellers(\n roster: readonly PartiesTripRosterRow[],\n): readonly ManifestTraveller[] {\n return roster.map((row) => ({\n travellerId: row.traveller.travellerId,\n fullName: row.traveller.fullName,\n bookingStatus: normalizeBookingStatus(row.bookingStatus),\n diet: normalizeDiet(row.dietary),\n groupId: row.partyId,\n dueMinor: row.balance?.dueMinor ?? 0,\n currency: row.balance?.currency ?? 'INR',\n }));\n}\n\nexport function toManifestGroups(\n groups: readonly PartyRow[],\n roster: readonly PartiesTripRosterRow[],\n): readonly ManifestBookingGroup[] {\n const balanceByTravellerId = new Map(\n roster.map((row) => [row.traveller.travellerId, row.balance] as const),\n );\n return groups.map((group) => {\n const currency = group.members\n .map((member) => balanceByTravellerId.get(member.travellerId)?.currency)\n .find((value) => value !== undefined);\n const dueMinor = group.members.reduce(\n (sum, member) => sum + (balanceByTravellerId.get(member.travellerId)?.dueMinor ?? 0),\n 0,\n );\n return {\n groupId: group.id,\n kind: group.kind,\n label: group.label,\n members: group.members.map((member) => ({\n travellerId: member.travellerId,\n fullName: member.fullName,\n })),\n dueMinor,\n currency: currency ?? 'INR',\n };\n });\n}\n\nexport interface ManifestStats {\n readonly confirmedCount: number;\n readonly vegCount: number;\n readonly totalCount: number;\n readonly balanceDueMinor: number;\n readonly currency: string;\n}\n\nexport function computeManifestStats(travellers: readonly ManifestTraveller[]): ManifestStats {\n const currency = travellers.find((row) => row.dueMinor > 0)?.currency ?? 'INR';\n return {\n confirmedCount: travellers.filter((row) => row.bookingStatus === 'CONFIRMED').length,\n vegCount: travellers.filter((row) => row.diet === 'V').length,\n totalCount: travellers.length,\n balanceDueMinor: travellers.reduce((sum, row) => sum + row.dueMinor, 0),\n currency,\n };\n}\n","// Client-side search + filter over the real, already-fetched roster — no\n// new hook, no server round-trip (the whole manifest is already resident,\n// same \"bounded by the trip itself, not paginated\" posture the engine's own\n// `tripManifestItemResponseSchema` doc comment states). Only the two REAL\n// filter dimensions this wave's audit found (diet, balance) — no \"Overdue\"\n// (no due-date field exists) and no \"ID status\" (no such field exists at\n// all), unlike the boilerplate's own fuller (partly fabricated) filter\n// sheet.\n\nimport type { ManifestDiet, ManifestTraveller } from '../ManagerManifestSection.types';\n\nexport type ManifestBalanceFilter = 'due' | 'settled';\n\nexport interface ManifestFilters {\n readonly diet: readonly ManifestDiet[];\n readonly balance: readonly ManifestBalanceFilter[];\n}\n\nexport const EMPTY_MANIFEST_FILTERS: ManifestFilters = { diet: [], balance: [] };\n\nexport function activeManifestFilterCount(filters: ManifestFilters): number {\n return filters.diet.length + filters.balance.length;\n}\n\nfunction matchesBalance(\n row: ManifestTraveller,\n balance: readonly ManifestBalanceFilter[],\n): boolean {\n if (balance.length === 0) {\n return true;\n }\n const state: ManifestBalanceFilter = row.dueMinor > 0 ? 'due' : 'settled';\n return balance.includes(state);\n}\n\nfunction matchesDiet(row: ManifestTraveller, diet: readonly ManifestDiet[]): boolean {\n if (diet.length === 0) {\n return true;\n }\n return row.diet !== null && diet.includes(row.diet);\n}\n\nexport function filterTravellers(\n travellers: readonly ManifestTraveller[],\n query: string,\n filters: ManifestFilters,\n): readonly ManifestTraveller[] {\n const normalizedQuery = query.trim().toLowerCase();\n return travellers.filter((row) => {\n if (normalizedQuery.length > 0 && !row.fullName.toLowerCase().includes(normalizedQuery)) {\n return false;\n }\n return matchesDiet(row, filters.diet) && matchesBalance(row, filters.balance);\n });\n}\n","'use client';\n\n// One booking group. Pixel reference: `frontend-boilerplate/components/\n// manager/trip/manifest/manifest-group-card.tsx`. \"Collect\" fires\n// `onCollect(groupId)` — a nav-only callback, never a fake single-call\n// action: no group-level collect endpoint exists (`collections`'s record/\n// eligible DTOs key strictly on `travellerId`, this build's own audit) —\n// the host resolves this into whatever real per-traveller flow it wants.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMoneyMinor } from '../../../../internal/formatMoney';\nimport type { ManifestBookingGroup } from '../ManagerManifestSection.types';\n\nconst KIND_LABEL_KEY: Record<ManifestBookingGroup['kind'], string> = {\n FAMILY: 'chrome.managerTrip.manifest.group.kind.family',\n COUPLE: 'chrome.managerTrip.manifest.group.kind.couple',\n FRIENDS: 'chrome.managerTrip.manifest.group.kind.friends',\n CORPORATE: 'chrome.managerTrip.manifest.group.kind.corporate',\n OTHER: 'chrome.managerTrip.manifest.group.kind.other',\n};\n\nconst VISIBLE_MEMBER_COUNT = 4;\n\nfunction initials(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n return `${parts[0]?.[0] ?? ''}${parts[parts.length - 1]?.[0] ?? ''}`.toUpperCase();\n}\n\nexport interface TripBookingGroupCardProps {\n readonly group: ManifestBookingGroup;\n readonly onCollect: (groupId: string) => void;\n /** Fired when a member chip is tapped — the same real destination\n * `TripTravellerRow.onOpen` already opens, so a traveller reachable from\n * either the group card or the all-travellers list below lands on the\n * identical `ManagerTravellerProfileSection`. */\n readonly onOpenTraveller: (travellerId: string, fullName: string) => void;\n}\n\nexport function TripBookingGroupCard({\n group,\n onCollect,\n onOpenTraveller,\n}: TripBookingGroupCardProps): ReactNode {\n const { t } = useKaafilChrome();\n const title = group.label ?? t(KIND_LABEL_KEY[group.kind]);\n const visibleMembers = group.members.slice(0, VISIBLE_MEMBER_COUNT);\n const overflowCount = group.members.length - visibleMembers.length;\n\n return (\n <div className=\"kf-manager-manifest__group-card\">\n <div className=\"kf-manager-manifest__group-header\">\n <p className=\"kf-manager-manifest__group-title\">\n {title} ·{' '}\n {t('chrome.managerTrip.manifest.group.paxCount').replace(\n '{count}',\n String(group.members.length),\n )}\n </p>\n {group.dueMinor > 0 ? (\n <button\n type=\"button\"\n className=\"kf-manager-manifest__group-collect kf-press\"\n onClick={() => onCollect(group.groupId)}\n >\n {t('chrome.managerTrip.manifest.group.collect')}\n </button>\n ) : null}\n </div>\n {group.dueMinor > 0 ? (\n <span className=\"kf-manager-manifest__pill\" data-tone=\"warn\">\n {formatMoneyMinor(group.dueMinor, group.currency)}{' '}\n {t('chrome.managerTrip.manifest.group.due')}\n </span>\n ) : null}\n <div className=\"kf-manager-manifest__group-chips\">\n {visibleMembers.map((member) => (\n <button\n key={member.travellerId}\n type=\"button\"\n className=\"kf-manager-manifest__group-chip kf-press--pill\"\n onClick={() => onOpenTraveller(member.travellerId, member.fullName)}\n >\n <span className=\"kf-manager-manifest__group-chip-avatar\" aria-hidden=\"true\">\n {initials(member.fullName)}\n </span>\n {member.fullName.split(/\\s+/)[0]}\n </button>\n ))}\n {overflowCount > 0 ? (\n <span className=\"kf-manager-manifest__group-chip\">\n <span className=\"kf-manager-manifest__group-chip-avatar\" aria-hidden=\"true\" />\n {t('chrome.managerTrip.manifest.group.moreCount').replace(\n '{count}',\n String(overflowCount),\n )}\n </span>\n ) : null}\n </div>\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention `ManagerShell`'s own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function SearchIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n );\n}\n\nexport function FilterIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 6h16M7 12h10M10 18h4\" />\n </svg>\n );\n}\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 6 6 6-6 6\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n );\n}\n","'use client';\n\n// The filter sheet — SCOPED to the two real dimensions this build's own\n// audit found (Diet, Balance). The boilerplate's own sheet also has a\n// \"Balance: Overdue\" chip and an \"ID status\" section — dropped here: there\n// is no due-date field anywhere in this engine (so \"overdue\" cannot be\n// computed) and no identity-verification field exists at all. A chip that\n// can never mean anything real is worse than no chip.\n//\n// A REAL bottom sheet — fixed backdrop + slide-from-bottom panel, same\n// structural recipe `ManagerNowSection`'s own `QuickActionsSheet.tsx`\n// already establishes (`kf-manager-now__sheet-backdrop`/`__sheet`), not the\n// earlier in-flow-card version this composite shipped with (a real bug:\n// this package has an established real overlay pattern already, so\n// \"no portal primitive exists yet\" was never actually true).\n\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManifestDiet } from '../ManagerManifestSection.types';\nimport {\n activeManifestFilterCount,\n type ManifestBalanceFilter,\n type ManifestFilters,\n} from './filterTravellers';\nimport { CloseIcon } from './icons';\n\nconst DIET_OPTIONS: readonly ManifestDiet[] = ['V', 'NV', 'J'];\nconst DIET_LABEL_KEY: Record<ManifestDiet, string> = {\n V: 'chrome.managerTrip.manifest.traveller.diet.v',\n NV: 'chrome.managerTrip.manifest.traveller.diet.nv',\n J: 'chrome.managerTrip.manifest.traveller.diet.j',\n};\n\nconst BALANCE_OPTIONS: readonly ManifestBalanceFilter[] = ['due', 'settled'];\nconst BALANCE_LABEL_KEY: Record<ManifestBalanceFilter, string> = {\n due: 'chrome.managerTrip.manifest.filter.balance.due',\n settled: 'chrome.managerTrip.manifest.filter.balance.settled',\n};\n\nexport interface TripManifestFilterCounts {\n readonly diet: Readonly<Record<ManifestDiet, number>>;\n readonly balance: Readonly<Record<ManifestBalanceFilter, number>>;\n}\n\nexport interface TripManifestFilterSheetProps {\n readonly open: boolean;\n readonly filters: ManifestFilters;\n readonly counts: TripManifestFilterCounts;\n readonly onApply: (filters: ManifestFilters) => void;\n readonly onClose: () => void;\n}\n\nfunction toggle<T>(list: readonly T[], value: T): readonly T[] {\n return list.includes(value) ? list.filter((item) => item !== value) : [...list, value];\n}\n\nexport function TripManifestFilterSheet({\n open,\n filters,\n counts,\n onApply,\n onClose,\n}: TripManifestFilterSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n if (!open) {\n return null;\n }\n const activeCount = activeManifestFilterCount(filters);\n\n return (\n <div className=\"kf-manager-manifest__sheet-backdrop\">\n <div\n className=\"kf-manager-manifest__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.manifest.filter.title')}\n >\n <div className=\"kf-manager-manifest__sheet-header\">\n <div>\n <p className=\"kf-manager-manifest__sheet-title\">\n {t('chrome.managerTrip.manifest.filter.title')}\n </p>\n <p className=\"kf-manager-manifest__filter-sheet-count\">\n {t('chrome.managerTrip.manifest.filter.activeCount').replace(\n '{count}',\n String(activeCount),\n )}\n </p>\n </div>\n <button\n type=\"button\"\n className=\"kf-manager-manifest__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <p className=\"kf-manager-manifest__filter-sheet-group-title\">\n {t('chrome.managerTrip.manifest.filter.diet')}\n </p>\n <div className=\"kf-manager-manifest__filter-sheet-chips\">\n {DIET_OPTIONS.map((diet) => (\n <button\n key={diet}\n type=\"button\"\n className=\"kf-manager-manifest__filter-chip kf-press\"\n data-active={filters.diet.includes(diet)}\n onClick={() => onApply({ ...filters, diet: toggle(filters.diet, diet) })}\n >\n {t(DIET_LABEL_KEY[diet])}{' '}\n <span className=\"kf-manager-manifest__filter-chip-count\">{counts.diet[diet]}</span>\n </button>\n ))}\n </div>\n\n <p className=\"kf-manager-manifest__filter-sheet-group-title\">\n {t('chrome.managerTrip.manifest.filter.balanceHeading')}\n </p>\n <div className=\"kf-manager-manifest__filter-sheet-chips\">\n {BALANCE_OPTIONS.map((balance) => (\n <button\n key={balance}\n type=\"button\"\n className=\"kf-manager-manifest__filter-chip kf-press\"\n data-active={filters.balance.includes(balance)}\n onClick={() => onApply({ ...filters, balance: toggle(filters.balance, balance) })}\n >\n {t(BALANCE_LABEL_KEY[balance])}{' '}\n <span className=\"kf-manager-manifest__filter-chip-count\">\n {counts.balance[balance]}\n </span>\n </button>\n ))}\n </div>\n\n <div className=\"kf-manager-manifest__filter-sheet-footer\">\n <button\n type=\"button\"\n className=\"kf-manager-manifest__filter-sheet-clear kf-press\"\n onClick={() => onApply({ diet: [], balance: [] })}\n >\n {t('chrome.managerTrip.manifest.filter.clear')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-manifest__filter-sheet-apply kf-press\"\n onClick={onClose}\n >\n {t('chrome.managerTrip.manifest.filter.apply')}\n </button>\n </div>\n </div>\n </div>\n );\n}\n","'use client';\n\n// Search input + filter button. Pixel reference: `frontend-boilerplate/\n// components/manager/trip/manifest/manifest-search-row.tsx`. No debounce\n// (contrast the boilerplate's own 250ms `useDebounce`) — that hook exists\n// there to avoid re-firing a NETWORK search; this composite filters an\n// already-resident, already-fetched roster in memory (`08-core-hooks.md`'s\n// own \"not paginated — bounded by the trip itself\" posture for this list),\n// so there is no request to debounce and a debounce would only add input\n// lag for no real benefit.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { activeManifestFilterCount, type ManifestFilters } from './filterTravellers';\nimport { FilterIcon, SearchIcon } from './icons';\n\nexport interface TripManifestSearchRowProps {\n readonly query: string;\n readonly onQueryChange: (query: string) => void;\n readonly filters: ManifestFilters;\n readonly onOpenFilters: () => void;\n}\n\nexport function TripManifestSearchRow({\n query,\n onQueryChange,\n filters,\n onOpenFilters,\n}: TripManifestSearchRowProps): ReactNode {\n const { t } = useKaafilChrome();\n const activeCount = activeManifestFilterCount(filters);\n return (\n <div className=\"kf-manager-manifest__search-row\">\n <div className=\"kf-manager-manifest__search-field\">\n <SearchIcon className=\"kf-manager-manifest__search-icon\" />\n <input\n type=\"text\"\n value={query}\n onChange={(event) => onQueryChange(event.target.value)}\n placeholder={t('chrome.managerTrip.manifest.searchPlaceholder')}\n className=\"kf-manager-manifest__search-input\"\n aria-label={t('chrome.managerTrip.manifest.searchPlaceholder')}\n />\n </div>\n <button\n type=\"button\"\n onClick={onOpenFilters}\n className=\"kf-manager-manifest__filter-button kf-press\"\n aria-label={t('chrome.managerTrip.manifest.filter.openLabel')}\n >\n <FilterIcon />\n {activeCount > 0 ? (\n <span className=\"kf-manager-manifest__filter-badge\">{activeCount}</span>\n ) : null}\n </button>\n </div>\n );\n}\n","'use client';\n\n// The 3 stat cards. Pixel reference: `frontend-boilerplate/components/\n// manager/trip/manifest/manifest-stats.tsx`, read directly from source —\n// `grid-cols-3 gap-[8px]`, each cell `rounded-[12px] border px-[12px]\n// py-[10px]`. The boilerplate's own \"Veg\" cell is BE-tone-supplied\n// (`ManifestStatCell.tone`); here the tone is derived client-side from the\n// same real fields the value itself comes from (`deriveManifest.ts`'s own\n// `computeManifestStats`) — Confirmed uses the positive tone, Veg the\n// accent tone, Balance due the warn tone only when non-zero, matching the\n// boilerplate's own visual intent without needing a BE-authored enum this\n// engine doesn't expose.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMoneyMinor } from '../../../../internal/formatMoney';\nimport type { ManifestStats } from './deriveManifest';\n\nexport interface TripManifestStatsProps {\n readonly stats: ManifestStats;\n}\n\nexport function TripManifestStats({ stats }: TripManifestStatsProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <div className=\"kf-manager-manifest__stats\">\n <div className=\"kf-manager-manifest__stat-cell\">\n <p className=\"kf-manager-manifest__stat-label\">\n {t('chrome.managerTrip.manifest.stats.confirmed')}\n </p>\n <p className=\"kf-manager-manifest__stat-value\" data-tone=\"pos\">\n {stats.confirmedCount}\n </p>\n </div>\n <div className=\"kf-manager-manifest__stat-cell\">\n <p className=\"kf-manager-manifest__stat-label\">\n {t('chrome.managerTrip.manifest.stats.veg')}\n </p>\n <p className=\"kf-manager-manifest__stat-value\" data-tone=\"accent\">\n {stats.vegCount} / {stats.totalCount}\n </p>\n </div>\n <div className=\"kf-manager-manifest__stat-cell\">\n <p className=\"kf-manager-manifest__stat-label\">\n {t('chrome.managerTrip.manifest.stats.balanceDue')}\n </p>\n <p\n className=\"kf-manager-manifest__stat-value\"\n data-tone={stats.balanceDueMinor > 0 ? 'warn' : undefined}\n >\n {formatMoneyMinor(stats.balanceDueMinor, stats.currency)}\n </p>\n <p className=\"kf-manager-manifest__stat-sub\">\n {t('chrome.managerTrip.manifest.stats.pax').replace('{count}', String(stats.totalCount))}\n </p>\n </div>\n </div>\n );\n}\n","'use client';\n\n// One traveller row. Pixel reference: `frontend-boilerplate/components/\n// manager/trip/manifest/manifest-traveller-row.tsx`. The boilerplate's own\n// row shows a \"LEAD\" pill (no real backing anywhere in this engine — this\n// build's own audit) and an \"NV\" pill fabricated on top of a single opaque\n// dietary marker — replaced here with two REAL badges: the diet code\n// (`V`/`NV`/`J`, omitted when `null`) and the booking status, the latter\n// shown ONLY when it isn't the boring default `CONFIRMED` (same \"no badge\n// for the default state\" precedent `NowChecklist`'s Required-only badge\n// already sets in this family).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMoneyMinor } from '../../../../internal/formatMoney';\nimport type { ManifestTraveller } from '../ManagerManifestSection.types';\nimport { ChevronIcon } from './icons';\n\nconst DIET_LABEL_KEY: Record<NonNullable<ManifestTraveller['diet']>, string> = {\n V: 'chrome.managerTrip.manifest.traveller.diet.v',\n NV: 'chrome.managerTrip.manifest.traveller.diet.nv',\n J: 'chrome.managerTrip.manifest.traveller.diet.j',\n};\n\nconst STATUS_LABEL_KEY: Record<'TENTATIVE' | 'CANCELLED', string> = {\n TENTATIVE: 'chrome.managerTrip.manifest.traveller.status.tentative',\n CANCELLED: 'chrome.managerTrip.manifest.traveller.status.cancelled',\n};\n\nfunction initials(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n return `${parts[0]?.[0] ?? ''}${parts[parts.length - 1]?.[0] ?? ''}`.toUpperCase();\n}\n\nexport interface TripTravellerRowProps {\n readonly traveller: ManifestTraveller;\n /** `fullName` is passed alongside the id — already in scope here, so a\n * host wiring `onOpenTraveller` to a header/nav can show a real name\n * immediately, before `ManagerTravellerProfileSection` finishes its own\n * fetch, without a second lookup. */\n readonly onOpen: (travellerId: string, fullName: string) => void;\n}\n\nexport function TripTravellerRow({ traveller, onOpen }: TripTravellerRowProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <button\n type=\"button\"\n className=\"kf-manager-manifest__traveller-row kf-press\"\n onClick={() => onOpen(traveller.travellerId, traveller.fullName)}\n >\n <span className=\"kf-manager-manifest__traveller-avatar\">{initials(traveller.fullName)}</span>\n <span className=\"kf-manager-manifest__traveller-body\">\n <span className=\"kf-manager-manifest__traveller-name\">{traveller.fullName}</span>\n <span className=\"kf-manager-manifest__traveller-pills\">\n {traveller.diet !== null ? (\n <span className=\"kf-manager-manifest__pill\" data-tone=\"soft\">\n {t(DIET_LABEL_KEY[traveller.diet])}\n </span>\n ) : null}\n {traveller.bookingStatus !== 'CONFIRMED' ? (\n <span className=\"kf-manager-manifest__pill\" data-tone=\"warn\">\n {t(STATUS_LABEL_KEY[traveller.bookingStatus])}\n </span>\n ) : null}\n {traveller.dueMinor > 0 ? (\n <span className=\"kf-manager-manifest__pill\" data-tone=\"warn\">\n {formatMoneyMinor(traveller.dueMinor, traveller.currency)}{' '}\n {t('chrome.managerTrip.manifest.group.due')}\n </span>\n ) : null}\n </span>\n </span>\n <ChevronIcon className=\"kf-manager-manifest__traveller-chevron\" />\n </button>\n );\n}\n","'use client';\n\n// The Manifest tab — a standalone, publicly exported composite (per this\n// build's own explicit instruction) that `ManagerTripSection` also mounts\n// as its built-in `'manifest'` tab panel. `useParties(tripRef)` is the one\n// real hook it reads (both `list` = booking groups and `tripRoster` = the\n// manifest come off the same hook, `08-core-hooks.md §3`'s own table).\n// Composition order matches `frontend-boilerplate/components/manager/trip/\n// manifest/manifest-panel.tsx`: stats → search row → booking groups (only\n// when any exist) → all travellers, with an honest empty state when a\n// search/filter combination matches nothing (never a blank panel with no\n// explanation).\n//\n// Export is NOT built (explicit instruction this round) — no \"Export\" link,\n// no `ManifestExportSheet` equivalent.\n\nimport type { ReactNode } from 'react';\nimport { useMemo, useState } from 'react';\nimport { useParties } from '../../../../core/hooks/useParties.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport {\n computeManifestStats,\n toManifestGroups,\n toManifestTravellers,\n} from './internal/deriveManifest';\nimport {\n EMPTY_MANIFEST_FILTERS,\n filterTravellers,\n type ManifestFilters,\n} from './internal/filterTravellers';\nimport { TripBookingGroupCard } from './internal/TripBookingGroupCard';\nimport { TripManifestFilterSheet } from './internal/TripManifestFilterSheet';\nimport { TripManifestSearchRow } from './internal/TripManifestSearchRow';\nimport { TripManifestStats } from './internal/TripManifestStats';\nimport { TripTravellerRow } from './internal/TripTravellerRow';\nimport type { ManagerManifestSectionProps } from './ManagerManifestSection.types';\n\nexport function ManagerManifestSection({\n tripRef,\n onCollectFromGroup,\n onOpenTraveller,\n emptyView,\n components,\n style,\n}: ManagerManifestSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n // Tier-4 named-component overrides (`04-customization-ladder.md`) — a\n // host's own component still receives the exact same real props this\n // composite's own default renders it with, never a stripped-down shape.\n const Stats = components?.Stats ?? TripManifestStats;\n const BookingGroupCard = components?.BookingGroupCard ?? TripBookingGroupCard;\n const TravellerRow = components?.TravellerRow ?? TripTravellerRow;\n const parties = useParties(tripRef);\n const [query, setQuery] = useState('');\n const [filters, setFilters] = useState<ManifestFilters>(EMPTY_MANIFEST_FILTERS);\n const [filterSheetOpen, setFilterSheetOpen] = useState(false);\n\n const travellers = useMemo(\n () => (parties.status === 'ready' ? toManifestTravellers(parties.tripRoster.rows) : []),\n [parties],\n );\n const groups = useMemo(\n () =>\n parties.status === 'ready'\n ? toManifestGroups(parties.list.rows, parties.tripRoster.rows)\n : [],\n [parties],\n );\n const stats = useMemo(() => computeManifestStats(travellers), [travellers]);\n const filteredTravellers = useMemo(\n () => filterTravellers(travellers, query, filters),\n [travellers, query, filters],\n );\n const filterCounts = useMemo(\n () => ({\n diet: {\n V: travellers.filter((row) => row.diet === 'V').length,\n NV: travellers.filter((row) => row.diet === 'NV').length,\n J: travellers.filter((row) => row.diet === 'J').length,\n },\n balance: {\n due: travellers.filter((row) => row.dueMinor > 0).length,\n settled: travellers.filter((row) => row.dueMinor === 0).length,\n },\n }),\n [travellers],\n );\n\n if (parties.status === 'loading') {\n return (\n <div className=\"kf-manager-manifest__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-manifest__skeleton-block\" />\n <div className=\"kf-manager-manifest__skeleton-line\" />\n <div className=\"kf-manager-manifest__skeleton-line kf-manager-manifest__skeleton-line--short\" />\n </div>\n );\n }\n if (parties.status === 'error') {\n return null;\n }\n\n const noMatches = filteredTravellers.length === 0;\n const resolvedEmptyView =\n emptyView !== undefined ? (typeof emptyView === 'function' ? emptyView() : emptyView) : null;\n\n return (\n <div className=\"kf-manager-manifest\" style={tokenStyle(style)}>\n <Stats stats={stats} />\n <TripManifestSearchRow\n query={query}\n onQueryChange={setQuery}\n filters={filters}\n onOpenFilters={() => setFilterSheetOpen(true)}\n />\n\n {noMatches ? (\n (resolvedEmptyView ?? (\n <div className=\"kf-manager-manifest__card kf-manager-manifest__empty\">\n {t('chrome.managerTrip.manifest.noMatches')}\n </div>\n ))\n ) : (\n <>\n {groups.length > 0 ? (\n <section aria-label={t('chrome.managerTrip.manifest.groups.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-manifest__eyebrow-row\">\n {t('chrome.managerTrip.manifest.groups.eyebrow')}\n </p>\n {groups.map((group) => (\n <BookingGroupCard\n key={group.groupId}\n group={group}\n onCollect={onCollectFromGroup}\n onOpenTraveller={onOpenTraveller}\n />\n ))}\n </section>\n ) : null}\n\n <section aria-label={t('chrome.managerTrip.manifest.travellers.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-manifest__eyebrow-row\">\n {t('chrome.managerTrip.manifest.travellers.eyebrow')}\n <span className=\"kf-manager-manifest__travellers-count\">\n {filteredTravellers.length}\n </span>\n </p>\n <div className=\"kf-manager-manifest__card kf-manager-manifest__travellers\">\n {filteredTravellers.map((traveller) => (\n <TravellerRow\n key={traveller.travellerId}\n traveller={traveller}\n onOpen={onOpenTraveller}\n />\n ))}\n </div>\n </section>\n </>\n )}\n\n <TripManifestFilterSheet\n open={filterSheetOpen}\n filters={filters}\n counts={filterCounts}\n onApply={setFilters}\n onClose={() => setFilterSheetOpen(false)}\n />\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n\nexport function WifiOffIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 2l20 20M8.5 16.5a5 5 0 0 1 7 0M5 12.9a10 10 0 0 1 3-1.9M19 12.9a10 10 0 0 0-2.3-1.7M8.5 8.5a10 10 0 0 1 7.5-.5M12 20h.01\" />\n </svg>\n );\n}\n\nexport function WifiOnIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 12.9a10 10 0 0 1 14 0M8.5 16.5a5 5 0 0 1 7 0M12 20h.01M2 8.8a15 15 0 0 1 20 0\" />\n </svg>\n );\n}\n\nexport function SignOutIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9\" />\n </svg>\n );\n}\n","'use client';\n\n// The profile hero — `useManagerMe()`'s own `manager.fullName`, an\n// avatar-initials circle (same convention Overview/Roster/Pickups already\n// establish this session). No org name — `ManagerOwnTripsResponse.manager`\n// carries no such field (verified this session), so it is never fabricated;\n// a plain \"Manager\" role line stands in its place.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\n\nfunction initials(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n return `${parts[0]?.[0] ?? ''}${parts[parts.length - 1]?.[0] ?? ''}`.toUpperCase();\n}\n\nexport interface ProfileHeaderProps {\n readonly fullName: string;\n}\n\nexport function ProfileHeader({ fullName }: ProfileHeaderProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <div className=\"kf-manager-me__profile-card\">\n <span className=\"kf-manager-me__avatar\" aria-hidden=\"true\">\n {initials(fullName)}\n </span>\n <div className=\"kf-manager-me__profile-body\">\n <p className=\"kf-manager-me__profile-name\">{fullName}</p>\n <p className=\"kf-manager-me__profile-role\">{t('chrome.managerMe.roleLabel')}</p>\n </div>\n </div>\n );\n}\n","// `13-i18n-and-formatting.md`'s \"never the ambient browser locale\" rule —\n// same fixed `'en-GB'` convention `ManagerTripSection`'s own `TripHero.tsx`\n// established for a real trip's date range.\nconst DATE_RANGE_FORMATTER = new Intl.DateTimeFormat('en-GB', { day: 'numeric', month: 'short' });\n\nexport function formatMeDateRange(startDate: string, endDate: string): string {\n return `${DATE_RANGE_FORMATTER.format(new Date(startDate))} – ${DATE_RANGE_FORMATTER.format(new Date(endDate))}`;\n}\n","'use client';\n\n// Every row in `useManagerMe().trips[]` — this IS the manager's full live\n// assignment list, not a paginated history (`useManagerMe.ts`'s own header:\n// \"every live trip you are assigned to\"), so there is no real \"view all\"\n// beyond it. Row tap fires the host's own real navigation (`onOpenTrip`) —\n// never a fabricated in-composite router (hard rule #9).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerOwnTrip } from '../ManagerMeSection.types';\nimport { formatMeDateRange } from './formatMeDateRange';\nimport { ChevronIcon } from './icons';\n\ntype TripStatus = ManagerOwnTrip['status'];\n\nconst STATUS_LABEL_KEY: Record<TripStatus, string> = {\n CONFIRMED: 'chrome.managerMe.trips.status.confirmed',\n IN_PROGRESS: 'chrome.managerMe.trips.status.inProgress',\n COMPLETED: 'chrome.managerMe.trips.status.completed',\n POSTPONED: 'chrome.managerMe.trips.status.postponed',\n CANCELLED: 'chrome.managerMe.trips.status.cancelled',\n};\n\nexport interface RecentTripsProps {\n readonly trips: readonly ManagerOwnTrip[];\n readonly onOpenTrip?: (tripRef: string) => void;\n}\n\nexport function RecentTrips({ trips, onOpenTrip }: RecentTripsProps): ReactNode {\n const { t } = useKaafilChrome();\n\n if (trips.length === 0) {\n return (\n <section aria-label={t('chrome.managerMe.trips.eyebrow')}>\n <p className=\"kf-eyebrow kf-manager-me__eyebrow\">{t('chrome.managerMe.trips.eyebrow')}</p>\n <div className=\"kf-manager-me__card\">\n <p className=\"kf-manager-me__empty\">{t('chrome.managerMe.trips.empty')}</p>\n </div>\n </section>\n );\n }\n\n return (\n <section aria-label={t('chrome.managerMe.trips.eyebrow')}>\n <p className=\"kf-eyebrow kf-manager-me__eyebrow\">{t('chrome.managerMe.trips.eyebrow')}</p>\n <div className=\"kf-manager-me__card kf-manager-me__trip-list\">\n {trips.map((trip) => {\n const inner = (\n <>\n <span className=\"kf-manager-me__trip-tag\" data-event-type={trip.eventType} />\n <span className=\"kf-manager-me__trip-body\">\n <span className=\"kf-manager-me__trip-title\">\n {trip.code} · {trip.name}\n </span>\n <span className=\"kf-manager-me__trip-meta\">\n {formatMeDateRange(trip.startDate, trip.endDate)}\n {trip.region !== null ? ` · ${trip.region}` : ''}\n </span>\n </span>\n <span className=\"kf-manager-me__trip-status\" data-status={trip.status}>\n {t(STATUS_LABEL_KEY[trip.status])}\n </span>\n {onOpenTrip !== undefined ? (\n <ChevronIcon className=\"kf-manager-me__trip-chevron\" aria-hidden=\"true\" />\n ) : null}\n </>\n );\n return onOpenTrip !== undefined ? (\n <button\n key={trip.tripRef}\n type=\"button\"\n className=\"kf-manager-me__trip-row kf-manager-me__trip-row--button kf-press\"\n onClick={() => onOpenTrip(trip.tripRef)}\n >\n {inner}\n </button>\n ) : (\n <div key={trip.tripRef} className=\"kf-manager-me__trip-row\">\n {inner}\n </div>\n );\n })}\n </div>\n </section>\n );\n}\n","'use client';\n\n// Three honest stat tiles derived from `useManagerMe().trips[]` — never the\n// boilerplate's own \"This year\"/\"Pax led\"/\"Avg rating\" wording (no real\n// field backs any of the three: `trips[]` is \"every LIVE trip you are\n// assigned to,\" not a historical ledger, and there is no pax-count or\n// rating field anywhere in `kaafil-js`, confirmed this session). Same\n// stat-cell visual language `ManagerCloseoutSection`'s financial strip and\n// `ManagerOverviewSection`'s rooming grid already establish.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerOwnTrip } from '../ManagerMeSection.types';\n\nexport interface StatsStripProps {\n readonly trips: readonly ManagerOwnTrip[];\n}\n\nexport function StatsStrip({ trips }: StatsStripProps): ReactNode {\n const { t } = useKaafilChrome();\n const leading = trips.filter((trip) => trip.isLead).length;\n const coManaging = trips.length - leading;\n\n return (\n <div className=\"kf-manager-me__stat-grid\">\n <div className=\"kf-manager-me__stat-cell\">\n <p className=\"kf-manager-me__stat-cell-value\">{trips.length}</p>\n <p className=\"kf-manager-me__stat-cell-label\">{t('chrome.managerMe.stats.liveTrips')}</p>\n </div>\n <div className=\"kf-manager-me__stat-cell\">\n <p className=\"kf-manager-me__stat-cell-value\">{leading}</p>\n <p className=\"kf-manager-me__stat-cell-label\">{t('chrome.managerMe.stats.leading')}</p>\n </div>\n <div className=\"kf-manager-me__stat-cell\">\n <p className=\"kf-manager-me__stat-cell-value\">{coManaging}</p>\n <p className=\"kf-manager-me__stat-cell-label\">{t('chrome.managerMe.stats.coManaging')}</p>\n </div>\n </div>\n );\n}\n","'use client';\n\n// Replaces the boilerplate's fake \"Offline mode\"/\"Sync on Wi-Fi only\"\n// toggles — no such setting exists anywhere in `kaafil-js` (confirmed this\n// session). `useOutboxStatus()` gives a REAL read-only status instead:\n// online/offline + pending/parked outbox-op counts. No toggle, because\n// there is nothing real to toggle.\n\nimport type { ReactNode } from 'react';\nimport type { OutboxStatusResult } from '../../../../../core/hooks/useOutboxStatus.js';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { WifiOffIcon, WifiOnIcon } from './icons';\n\nexport interface SyncStatusProps {\n readonly status: OutboxStatusResult;\n}\n\nexport function SyncStatus({ status }: SyncStatusProps): ReactNode {\n const { t } = useKaafilChrome();\n const Icon = status.isOnline ? WifiOnIcon : WifiOffIcon;\n\n return (\n <section aria-label={t('chrome.managerMe.sync.eyebrow')}>\n <p className=\"kf-eyebrow kf-manager-me__eyebrow\">{t('chrome.managerMe.sync.eyebrow')}</p>\n <div className=\"kf-manager-me__card kf-manager-me__sync\">\n <span className=\"kf-manager-me__sync-online\" data-online={status.isOnline}>\n <Icon aria-hidden=\"true\" />\n {status.isOnline ? t('chrome.managerMe.sync.online') : t('chrome.managerMe.sync.offline')}\n </span>\n <span className=\"kf-manager-me__sync-counts\">\n {status.pending > 0\n ? t('chrome.managerMe.sync.pending').replace('{count}', String(status.pending))\n : null}\n {status.parked > 0 ? (\n <span data-tone=\"warn\">\n {t('chrome.managerMe.sync.parked').replace('{count}', String(status.parked))}\n </span>\n ) : null}\n {status.pending === 0 && status.parked === 0\n ? t('chrome.managerMe.sync.allSynced')\n : null}\n </span>\n </div>\n </section>\n );\n}\n","'use client';\n\n// The \"Me\" tab — a standalone, publicly exported composite mounted directly\n// as the third bottom-nav destination (alongside \"Now\" and \"Trip/Trek\"),\n// same as `ManagerNowSection`/`ManagerTripSection`. `useManagerMe()`\n// (identity + the real `trips[]` list) and `useOutboxStatus()` (real sync\n// status) are the two domain hooks — no `tripRef` prop, identity is\n// manager-implicit.\n//\n// NO MANAGER-FAMILY FRD BACKS A \"ME\"/PROFILE SCREEN AT ALL (verified this\n// session — zero matches anywhere in `kaafil-product-docs/ui-kit/`). The\n// boilerplate's own equivalent (`manager-me-screen.tsx`) is backed by ONE\n// bespoke, boilerplate-only endpoint (`GET /v1/manager/me`) that\n// pre-renders trips-this-year/pax-led/avg-rating stats, a manager-wide\n// reimbursements roll-up, certifications, and offline/sync toggles — NONE\n// of which exist anywhere in `kaafil-js` (confirmed this session, matching\n// the same \"never fabricate\" discipline `ManagerOverviewSection` already\n// established for trek `difficulty`/`fitnessRequirement`/`whatToBring`).\n// This composite therefore:\n// - keeps identity (`manager.fullName`) and the real `trips[]` list,\n// - replaces the three fake stat tiles with an honest substitute derived\n// from real `trips[]` data (live/leading/co-managing counts — see\n// `internal/StatsStrip.tsx`'s own header),\n// - DROPS \"My money\" entirely (no real cross-trip aggregate exists;\n// `ManagerMoneySection` already owns real per-trip money on the Trip\n// tab),\n// - DROPS certifications entirely (no real field anywhere),\n// - replaces the two fake offline/sync toggles with `useOutboxStatus()`'s\n// real read-only status (see `internal/SyncStatus.tsx`'s own header).\n\nimport type { ReactNode } from 'react';\nimport { useManagerMe } from '../../../../core/hooks/useManagerMe.js';\nimport { useOutboxStatus } from '../../../../core/hooks/useOutboxStatus.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { SignOutIcon } from './internal/icons';\nimport { ProfileHeader } from './internal/ProfileHeader';\nimport { RecentTrips } from './internal/RecentTrips';\nimport { StatsStrip } from './internal/StatsStrip';\nimport { SyncStatus } from './internal/SyncStatus';\nimport type { ManagerMeSectionProps } from './ManagerMeSection.types';\n\nexport function ManagerMeSection({\n onOpenTrip,\n onSignOut,\n style,\n}: ManagerMeSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const managerMe = useManagerMe();\n const outboxStatus = useOutboxStatus();\n\n if (managerMe.status === 'loading') {\n return (\n <div className=\"kf-manager-me__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-me__skeleton-block\" />\n <div className=\"kf-manager-me__skeleton-line\" />\n <div className=\"kf-manager-me__skeleton-line kf-manager-me__skeleton-line--short\" />\n </div>\n );\n }\n\n if (managerMe.status === 'error') {\n return null;\n }\n\n return (\n <div className=\"kf-manager-me\" style={tokenStyle(style)}>\n <ProfileHeader fullName={managerMe.manager.fullName} />\n <StatsStrip trips={managerMe.trips} />\n <RecentTrips trips={managerMe.trips} onOpenTrip={onOpenTrip} />\n <SyncStatus status={outboxStatus} />\n {onSignOut !== undefined ? (\n <button type=\"button\" className=\"kf-manager-me__sign-out kf-press\" onClick={onSignOut}>\n <SignOutIcon aria-hidden=\"true\" />\n {t('chrome.managerMe.signOut')}\n </button>\n ) : null}\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped (no shared `/primitives` export). Geometry\n// from the boilerplate's own `m-fab.tsx#PlusIcon`.\n\nimport type { SVGProps } from 'react';\n\nexport function PlusIcon(props: SVGProps<SVGSVGElement>): React.JSX.Element {\n return (\n <svg\n width=\"22\"\n height=\"22\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n );\n}\n","'use client';\n\n// The manager family's floating action button — extracted out of\n// `ManagerNowSection` (this composite's own quick-actions trigger was the\n// first thing to need one) into its own exported component, since a FAB is\n// exactly the kind of shell-level chrome a future manager composite/screen\n// will reach for again. Pixel reference:\n// `frontend-boilerplate/components/manager/m-fab.tsx`, read directly from\n// source — colour re-derived onto this package's own `--kf-*` tokens.\n\nimport type { ReactNode } from 'react';\nimport { tokenStyle } from '../../../primitives/internal/tokenStyle.js';\nimport { PlusIcon } from './icons';\nimport type { ManagerFabProps } from './ManagerFab.types';\n\nexport function ManagerFab({\n onClick,\n label,\n icon,\n tone = 'accent',\n style,\n}: ManagerFabProps): ReactNode {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n aria-label={label}\n data-tone={tone}\n className=\"kf-manager-fab kf-press--fab\"\n style={tokenStyle(style)}\n >\n {icon ?? <PlusIcon />}\n </button>\n );\n}\n","'use client';\n\n// Icons behind the shared money sheets in this folder — moved out of\n// `ManagerMoneySection/internal/icons.tsx` alongside the sheets themselves;\n// that file re-exports these so its own sibling internals (`ExpenseDetailSheet`,\n// `AddMoneyMenuSheet`) keep importing from `./icons` unchanged.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n );\n}\n\nexport function ReceiptIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 2h12v20l-3-2-3 2-3-2-3 2Z\" />\n <path d=\"M9 8h6M9 12h6\" />\n </svg>\n );\n}\n\nexport function TrashIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0-1 14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2L4 6h16Z\" />\n </svg>\n );\n}\n","'use client';\n\n// Return or adjust float — never \"issue\" (disbursing cash TO a manager is\n// the admin-side action; by the time a manager reaches for this sheet the\n// float is already disbursed, matching the reference screenshot's own \"of\n// ₹90,000 disbursed\" framing). Both write through `useFloat()`'s real\n// methods, keyed to THIS manager's own `managerId` (resolved from their own\n// summary row — `useFloat.ts`'s own header: \"a manager session is answered\n// its own row only\").\n//\n// The negative-balance guard is server-side and advisory-locked\n// (`float.ts`'s own header) — this sheet does not pre-validate the amount\n// against the balance client-side, only shows an honest heads-up that an\n// over-balance write will be refused. `OfflineEngine.enqueue()` is\n// durable-first (resolves once queued, not once the server has answered),\n// so — like every other write sheet this session has built — there is no\n// synchronous result to branch on here; a refusal surfaces through the\n// host's own sync-status/conflict surfacing, not a bespoke banner in this\n// sheet.\n//\n// SHARED across two composites (`manager/shell/`, not a composite's own\n// `internal/`): `ManagerMoneySection`'s \"+\" menu and `ManagerNowSection`'s\n// Quick Actions FAB both open this exact sheet.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../core/shells/I18nShell.js';\nimport { CloseIcon } from './icons';\nimport { formatMinorAmount } from './moneyFormat';\n\ntype MovementKind = 'RETURN' | 'ADJUST';\ntype AdjustDirection = 'IN' | 'OUT';\n\nexport interface FloatMovementSheetProps {\n readonly open: boolean;\n readonly currentBalanceMinor: number | undefined;\n readonly currency: string;\n readonly onReturn: (input: { amountMinor: number; note?: string }) => Promise<void>;\n readonly onAdjust: (input: {\n amountMinor: number;\n direction: AdjustDirection;\n note: string;\n }) => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function FloatMovementSheet({\n open,\n currentBalanceMinor,\n currency,\n onReturn,\n onAdjust,\n onClose,\n}: FloatMovementSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [kind, setKind] = useState<MovementKind>('RETURN');\n const [amount, setAmount] = useState('');\n const [direction, setDirection] = useState<AdjustDirection>('OUT');\n const [note, setNote] = useState('');\n const [pending, setPending] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setKind('RETURN');\n setAmount('');\n setDirection('OUT');\n setNote('');\n }, [open]);\n\n if (!open) {\n return null;\n }\n\n const amountMinor = Math.round(Number.parseFloat(amount || '0') * 100);\n const trimmedNote = note.trim();\n const canSubmit = amountMinor > 0 && (kind === 'RETURN' || trimmedNote.length > 0);\n const isOutMovement = kind === 'RETURN' || direction === 'OUT';\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n setPending(true);\n try {\n if (kind === 'RETURN') {\n await onReturn({ amountMinor, ...(trimmedNote.length > 0 ? { note: trimmedNote } : {}) });\n } else {\n await onAdjust({ amountMinor, direction, note: trimmedNote });\n }\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-money__sheet-backdrop\">\n <div\n className=\"kf-manager-money__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.money.floatMovement.title')}\n >\n <div className=\"kf-manager-money__sheet-header\">\n <p className=\"kf-manager-money__sheet-title\">\n {t('chrome.managerTrip.money.floatMovement.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {currentBalanceMinor !== undefined ? (\n <p className=\"kf-manager-money__hint-copy\">\n {t('chrome.managerTrip.money.floatMovement.currentBalance').replace(\n '{amount}',\n formatMinorAmount(currentBalanceMinor, currency),\n )}\n </p>\n ) : null}\n\n <div className=\"kf-manager-money__mode-chips\">\n <button\n type=\"button\"\n className=\"kf-manager-money__mode-chip kf-press\"\n data-active={kind === 'RETURN'}\n onClick={() => setKind('RETURN')}\n >\n {t('chrome.managerTrip.money.floatMovement.kindReturn')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-money__mode-chip kf-press\"\n data-active={kind === 'ADJUST'}\n onClick={() => setKind('ADJUST')}\n >\n {t('chrome.managerTrip.money.floatMovement.kindAdjust')}\n </button>\n </div>\n\n {kind === 'ADJUST' ? (\n <div className=\"kf-manager-money__mode-chips\">\n <button\n type=\"button\"\n className=\"kf-manager-money__mode-chip kf-press\"\n data-active={direction === 'IN'}\n onClick={() => setDirection('IN')}\n >\n {t('chrome.managerTrip.money.floatMovement.directionIn')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-money__mode-chip kf-press\"\n data-active={direction === 'OUT'}\n onClick={() => setDirection('OUT')}\n >\n {t('chrome.managerTrip.money.floatMovement.directionOut')}\n </button>\n </div>\n ) : null}\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.floatMovement.amountLabel')}\n </p>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n min=\"0\"\n step=\"0.01\"\n className=\"kf-manager-money__field-input\"\n value={amount}\n onChange={(event) => setAmount(event.target.value)}\n placeholder=\"0.00\"\n />\n\n {isOutMovement ? (\n <p className=\"kf-manager-money__hint-copy\">\n {t('chrome.managerTrip.money.floatMovement.overBalanceHint')}\n </p>\n ) : null}\n\n <p className=\"kf-manager-money__field-label\">\n {kind === 'ADJUST'\n ? t('chrome.managerTrip.money.floatMovement.noteLabelRequired')\n : t('chrome.managerTrip.money.floatMovement.noteLabelOptional')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-money__field-input\"\n value={note}\n onChange={(event) => setNote(event.target.value)}\n />\n\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-submit kf-press\"\n disabled={!canSubmit || pending}\n onClick={() => void handleSubmit()}\n >\n {t('chrome.managerTrip.money.floatMovement.submit')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// Logs one expense — `LogExpenseRequest`'s real fields only. No vendor-id\n// picker (expenses' vendor linkage is optional free text here, unlike\n// itinerary's real vendor roster picker — this wave doesn't need the full\n// vendor-directory UX for a simple ad-hoc spend).\n//\n// Receipt PHOTO: the real, full presign → PUT → confirm sequence via\n// `useFiles(tripRef).upload({file, purpose: 'expense_receipt'})` — a single\n// hook call, foreground, with its own silent-retry tolerance\n// (`useFiles.ts`'s own header). A bare `<input type=\"file\" accept=\"image/*\">`\n// with no `capture` attribute is deliberate: it is what hands the OS its own\n// picker sheet with BOTH \"Camera\" and \"Photo Library\"/\"Files\" as choices —\n// forcing `capture=\"environment\"` would remove the gallery option entirely.\n// The resulting `fileId` becomes `LogExpenseRequest.receiptFileKey` directly\n// on the SAME create call (no separate `linkReceipt` round-trip needed at\n// log time — `linkReceipt` is for attaching a receipt to an ALREADY-logged\n// expense, from `ManagerMoneySection`'s own `ExpenseDetailSheet`).\n// `receiptEvidenceText` (free text) stays a second, independent, optional\n// field — a note, not a substitute.\n//\n// The \"Attach\"/\"Retry\" triggers are `<label htmlFor>` elements, NOT a\n// button calling `inputRef.current.click()` — some hardened browser\n// configurations (Brave, certain enterprise policies, privacy extensions)\n// suppress a PROGRAMMATIC `.click()` on a hidden `input[type=file]`\n// entirely (a known anti-fingerprinting measure against invisible upload\n// prompts) while still honouring the browser's own native label-for-input\n// activation, which carries none of that risk. `useId()` keys the `id`/\n// `htmlFor` pair so two mounted instances of this sheet (this composite's\n// own \"+\" menu and `ManagerNowSection`'s Quick Actions both reach for it)\n// never collide.\n//\n// SHARED across two composites (`manager/shell/`, not a composite's own\n// `internal/`): `ManagerMoneySection`'s \"+\" menu and `ManagerNowSection`'s\n// Quick Actions FAB both open this exact sheet — same reasoning `ManagerFab`\n// itself was promoted out of `ManagerNowSection` for.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useId, useState } from 'react';\nimport { useFiles } from '../../../core/hooks/useFiles.js';\nimport { useKaafilChrome } from '../../../core/shells/I18nShell.js';\nimport { CloseIcon, ReceiptIcon, TrashIcon } from './icons';\nimport { expenseCategoryLabelKey, paymentModeLabelKey } from './moneyFormat';\n\nconst EXPENSE_CATEGORIES = ['ACCOM', 'FOOD', 'TRANSPORT', 'ACTIVITY', 'MISC'] as const;\ntype ExpenseCategory = (typeof EXPENSE_CATEGORIES)[number];\nconst PAYMENT_MODES = ['FLOAT_CASH', 'PERSONAL', 'OTHER'] as const;\ntype PaymentMode = (typeof PAYMENT_MODES)[number];\n\ntype ReceiptUploadState =\n | { readonly kind: 'idle' }\n | { readonly kind: 'uploading'; readonly fileName: string }\n | { readonly kind: 'attached'; readonly fileId: string; readonly fileName: string }\n | { readonly kind: 'error'; readonly fileName: string };\n\nexport interface LogExpenseSheetProps {\n readonly open: boolean;\n readonly tripRef: string;\n readonly onSubmit: (input: {\n amountMinor: number;\n category: ExpenseCategory;\n paymentMode: PaymentMode;\n description: string;\n vendorName?: string;\n receiptEvidenceText?: string;\n receiptFileKey?: string;\n submitClaim?: boolean;\n }) => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function LogExpenseSheet({\n open,\n tripRef,\n onSubmit,\n onClose,\n}: LogExpenseSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const files = useFiles({ tripRef });\n const receiptInputId = useId();\n const [amount, setAmount] = useState('');\n const [category, setCategory] = useState<ExpenseCategory>('MISC');\n const [paymentMode, setPaymentMode] = useState<PaymentMode>('FLOAT_CASH');\n const [description, setDescription] = useState('');\n const [vendorName, setVendorName] = useState('');\n const [receiptEvidenceText, setReceiptEvidenceText] = useState('');\n const [receipt, setReceipt] = useState<ReceiptUploadState>({ kind: 'idle' });\n const [submitClaim, setSubmitClaim] = useState(false);\n const [pending, setPending] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setAmount('');\n setCategory('MISC');\n setPaymentMode('FLOAT_CASH');\n setDescription('');\n setVendorName('');\n setReceiptEvidenceText('');\n setReceipt({ kind: 'idle' });\n setSubmitClaim(false);\n }, [open]);\n\n if (!open) {\n return null;\n }\n\n const amountMinor = Math.round(Number.parseFloat(amount || '0') * 100);\n const trimmedDescription = description.trim();\n const canSubmit =\n amountMinor > 0 && trimmedDescription.length > 0 && receipt.kind !== 'uploading';\n\n const handlePickReceipt = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const file = event.target.files?.[0];\n event.target.value = '';\n if (file === undefined) {\n return;\n }\n setReceipt({ kind: 'uploading', fileName: file.name });\n void files\n .upload({ file, purpose: 'expense_receipt' })\n .then((meta) => setReceipt({ kind: 'attached', fileId: meta.id, fileName: file.name }))\n .catch(() => setReceipt({ kind: 'error', fileName: file.name }));\n };\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n setPending(true);\n try {\n await onSubmit({\n amountMinor,\n category,\n paymentMode,\n description: trimmedDescription,\n ...(vendorName.trim().length > 0 ? { vendorName: vendorName.trim() } : {}),\n ...(receiptEvidenceText.trim().length > 0\n ? { receiptEvidenceText: receiptEvidenceText.trim() }\n : {}),\n ...(receipt.kind === 'attached' ? { receiptFileKey: receipt.fileId } : {}),\n ...(paymentMode === 'PERSONAL' ? { submitClaim } : {}),\n });\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-money__sheet-backdrop\">\n <div\n className=\"kf-manager-money__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.money.logExpense.title')}\n >\n <div className=\"kf-manager-money__sheet-header\">\n <p className=\"kf-manager-money__sheet-title\">\n {t('chrome.managerTrip.money.logExpense.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.logExpense.amountLabel')}\n </p>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n min=\"0\"\n step=\"0.01\"\n className=\"kf-manager-money__field-input\"\n value={amount}\n onChange={(event) => setAmount(event.target.value)}\n placeholder=\"0.00\"\n />\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.logExpense.categoryLabel')}\n </p>\n <div className=\"kf-manager-money__mode-chips\">\n {EXPENSE_CATEGORIES.map((candidate) => (\n <button\n key={candidate}\n type=\"button\"\n className=\"kf-manager-money__mode-chip kf-press\"\n data-active={category === candidate}\n onClick={() => setCategory(candidate)}\n >\n {t(expenseCategoryLabelKey(candidate))}\n </button>\n ))}\n </div>\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.logExpense.paymentModeLabel')}\n </p>\n <div className=\"kf-manager-money__mode-chips\">\n {PAYMENT_MODES.map((candidate) => (\n <button\n key={candidate}\n type=\"button\"\n className=\"kf-manager-money__mode-chip kf-press\"\n data-active={paymentMode === candidate}\n onClick={() => setPaymentMode(candidate)}\n >\n {t(paymentModeLabelKey(candidate))}\n </button>\n ))}\n </div>\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.logExpense.descriptionLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-money__field-input\"\n value={description}\n onChange={(event) => setDescription(event.target.value)}\n placeholder={t('chrome.managerTrip.money.logExpense.descriptionPlaceholder')}\n />\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.logExpense.vendorLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-money__field-input\"\n value={vendorName}\n onChange={(event) => setVendorName(event.target.value)}\n placeholder={t('chrome.managerTrip.money.logExpense.vendorPlaceholder')}\n />\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.logExpense.receiptLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-money__field-input\"\n value={receiptEvidenceText}\n onChange={(event) => setReceiptEvidenceText(event.target.value)}\n placeholder={t('chrome.managerTrip.money.logExpense.receiptPlaceholder')}\n />\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.logExpense.receiptPhotoLabel')}\n </p>\n <input\n id={receiptInputId}\n type=\"file\"\n accept=\"image/*\"\n className=\"kf-visually-hidden\"\n onChange={handlePickReceipt}\n />\n {receipt.kind === 'idle' ? (\n <label htmlFor={receiptInputId} className=\"kf-manager-money__receipt-attach kf-press\">\n <ReceiptIcon />\n {t('chrome.managerTrip.money.logExpense.attachReceiptPhoto')}\n </label>\n ) : null}\n {receipt.kind === 'uploading' ? (\n <p className=\"kf-manager-money__hint-copy\">\n {t('chrome.managerTrip.money.logExpense.receiptUploading').replace(\n '{fileName}',\n receipt.fileName,\n )}\n </p>\n ) : null}\n {receipt.kind === 'attached' ? (\n <div className=\"kf-manager-money__receipt-attached\">\n <ReceiptIcon />\n <span className=\"kf-manager-money__receipt-attached-name\">{receipt.fileName}</span>\n <button\n type=\"button\"\n className=\"kf-manager-money__receipt-remove kf-press\"\n aria-label={t('chrome.managerTrip.money.logExpense.removeReceiptPhoto')}\n onClick={() => setReceipt({ kind: 'idle' })}\n >\n <TrashIcon />\n </button>\n </div>\n ) : null}\n {receipt.kind === 'error' ? (\n <div className=\"kf-manager-money__receipt-attached\" data-error=\"true\">\n <span className=\"kf-manager-money__receipt-attached-name\">\n {t('chrome.managerTrip.money.logExpense.receiptUploadFailed')}\n </span>\n <label htmlFor={receiptInputId} className=\"kf-manager-money__receipt-remove kf-press\">\n {t('chrome.managerTrip.money.logExpense.retryReceiptPhoto')}\n </label>\n </div>\n ) : null}\n\n {paymentMode === 'PERSONAL' ? (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={submitClaim}\n className=\"kf-manager-money__toggle-row\"\n onClick={() => setSubmitClaim((previous) => !previous)}\n >\n <span className=\"kf-manager-money__toggle-track\" data-active={submitClaim}>\n <span className=\"kf-manager-money__toggle-thumb\" />\n </span>\n {t('chrome.managerTrip.money.logExpense.submitClaimToggle')}\n </button>\n ) : null}\n\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-submit kf-press\"\n disabled={!canSubmit || pending}\n onClick={() => void handleSubmit()}\n >\n {t('chrome.managerTrip.money.logExpense.submit')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// Records one traveller payment — `RecordCollectionRequest`'s real fields.\n// Opened two ways: pre-filled with a traveller (tapped from the balances-due\n// list, showing that same live balance so it isn't lost once the picker is\n// skipped) or generic (from a \"+\"/Quick Actions trigger), in which case a\n// native `<select>` dropdown over the real trip roster is shown — a full\n// multi-row button list (this sheet's first pass) doesn't compress well once\n// a roster grows past a handful of names, whereas a dropdown stays one row\n// regardless of roster size. Each option still carries its own live\n// outstanding balance (`useCollections().eligible`'s own `outstandingMinor`\n// — joined here by `travellerId`, same as `ManagerMoneySection`'s own\n// `BalancesDueSection` list) so the manager sees who owes what before\n// picking, not just a bare name.\n//\n// SHARED across two composites (`manager/shell/`, not a composite's own\n// `internal/`): `ManagerMoneySection`'s \"+\" menu and `ManagerNowSection`'s\n// Quick Actions FAB both open this exact sheet.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport type { PartiesTripRosterRow } from '../../../core/hooks/useParties.js';\nimport { useKaafilChrome } from '../../../core/shells/I18nShell.js';\nimport { CloseIcon } from './icons';\nimport {\n type BalanceDueDisplayRow,\n COLLECTION_MODES,\n type CollectionModeKey,\n collectionModeLabelKey,\n collectionReferenceRequired,\n formatMinorAmount,\n} from './moneyFormat';\n\nexport interface RecordCollectionSheetProps {\n readonly open: boolean;\n /** Set when opened from a balances-due row — the traveller is fixed and\n * no picker is shown. */\n readonly preselected: { readonly travellerId: string; readonly fullName: string } | undefined;\n /** The trip roster, for the generic (no preselection) picker. */\n readonly roster: readonly PartiesTripRosterRow[];\n /** Live outstanding balances, keyed by `travellerId`, for the SAME picker\n * — a traveller with nothing outstanding simply shows no amount, never a\n * fabricated ₹0. */\n readonly balancesDue: readonly BalanceDueDisplayRow[];\n readonly onSubmit: (input: {\n travellerId: string;\n amountMinor: number;\n mode: CollectionModeKey;\n reference?: string;\n note?: string;\n }) => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function RecordCollectionSheet({\n open,\n preselected,\n roster,\n balancesDue,\n onSubmit,\n onClose,\n}: RecordCollectionSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const outstandingByTravellerId = new Map(\n balancesDue.map((row) => [row.travellerId, row] as const),\n );\n const [travellerId, setTravellerId] = useState<string | undefined>(undefined);\n const [amount, setAmount] = useState('');\n const [mode, setMode] = useState<CollectionModeKey>('CASH');\n const [reference, setReference] = useState('');\n const [note, setNote] = useState('');\n const [pending, setPending] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setTravellerId(preselected?.travellerId);\n setAmount('');\n setMode('CASH');\n setReference('');\n setNote('');\n }, [open, preselected]);\n\n if (!open) {\n return null;\n }\n\n const amountMinor = Math.round(Number.parseFloat(amount || '0') * 100);\n const referenceRequired = collectionReferenceRequired(mode);\n const canSubmit =\n travellerId !== undefined &&\n amountMinor > 0 &&\n (!referenceRequired || reference.trim().length > 0);\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit || travellerId === undefined) {\n return;\n }\n setPending(true);\n try {\n await onSubmit({\n travellerId,\n amountMinor,\n mode,\n ...(reference.trim().length > 0 ? { reference: reference.trim() } : {}),\n ...(note.trim().length > 0 ? { note: note.trim() } : {}),\n });\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-money__sheet-backdrop\">\n <div\n className=\"kf-manager-money__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.money.recordCollection.title')}\n >\n <div className=\"kf-manager-money__sheet-header\">\n <p className=\"kf-manager-money__sheet-title\">\n {t('chrome.managerTrip.money.recordCollection.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {preselected !== undefined ? (\n (() => {\n const outstanding = outstandingByTravellerId.get(preselected.travellerId);\n return (\n <div className=\"kf-manager-money__occupant-row\">\n <span className=\"kf-manager-money__list-row-title\">{preselected.fullName}</span>\n {outstanding !== undefined ? (\n <span className=\"kf-manager-money__pool-row-amount\">\n {formatMinorAmount(outstanding.outstandingMinor, outstanding.currency)}\n </span>\n ) : null}\n </div>\n );\n })()\n ) : (\n <>\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.recordCollection.travellerLabel')}\n </p>\n <select\n className=\"kf-manager-money__field-input\"\n value={travellerId ?? ''}\n onChange={(event) =>\n setTravellerId(event.target.value.length > 0 ? event.target.value : undefined)\n }\n >\n <option value=\"\" disabled>\n {t('chrome.managerTrip.money.recordCollection.travellerPlaceholder')}\n </option>\n {roster.map((row) => {\n const outstanding = outstandingByTravellerId.get(row.traveller.travellerId);\n return (\n <option key={row.traveller.travellerId} value={row.traveller.travellerId}>\n {outstanding !== undefined\n ? `${row.traveller.fullName} — ${formatMinorAmount(outstanding.outstandingMinor, outstanding.currency)}`\n : row.traveller.fullName}\n </option>\n );\n })}\n </select>\n </>\n )}\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.recordCollection.amountLabel')}\n </p>\n <input\n type=\"number\"\n inputMode=\"decimal\"\n min=\"0\"\n step=\"0.01\"\n className=\"kf-manager-money__field-input\"\n value={amount}\n onChange={(event) => setAmount(event.target.value)}\n placeholder=\"0.00\"\n />\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.recordCollection.modeLabel')}\n </p>\n <div className=\"kf-manager-money__mode-chips\">\n {COLLECTION_MODES.map((candidate) => (\n <button\n key={candidate}\n type=\"button\"\n className=\"kf-manager-money__mode-chip kf-press\"\n data-active={mode === candidate}\n onClick={() => setMode(candidate)}\n >\n {t(collectionModeLabelKey(candidate))}\n </button>\n ))}\n </div>\n\n <p className=\"kf-manager-money__field-label\">\n {referenceRequired\n ? t('chrome.managerTrip.money.recordCollection.referenceLabelRequired')\n : t('chrome.managerTrip.money.recordCollection.referenceLabelOptional')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-money__field-input\"\n value={reference}\n onChange={(event) => setReference(event.target.value)}\n placeholder={t('chrome.managerTrip.money.recordCollection.referencePlaceholder')}\n />\n\n <p className=\"kf-manager-money__field-label\">\n {t('chrome.managerTrip.money.recordCollection.noteLabel')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-money__field-input\"\n value={note}\n onChange={(event) => setNote(event.target.value)}\n />\n\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-submit kf-press\"\n disabled={!canSubmit || pending}\n onClick={() => void handleSubmit()}\n >\n {t('chrome.managerTrip.money.recordCollection.submit')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n//\n// `CloseIcon`/`ReceiptIcon`/`TrashIcon` moved to `manager/shell/MoneyFlows/\n// icons.tsx` alongside the money sheets that use them (shared with\n// `ManagerNowSection`'s Quick Actions FAB) — re-exported here so this\n// composite's own sibling internals keep importing from `./icons` unchanged.\n\nimport type { SVGProps } from 'react';\n\nexport { CloseIcon, ReceiptIcon, TrashIcon } from '../../../../shell/MoneyFlows/icons';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function PlusIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n );\n}\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 6 6 6-6 6\" />\n </svg>\n );\n}\n\nexport function WalletIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 12V7H5a2 2 0 0 1 0-4h14v4\" />\n <path d=\"M3 5v14a2 2 0 0 0 2 2h16v-5\" />\n <path d=\"M18 12a2 2 0 0 0 0 4h3v-4Z\" />\n </svg>\n );\n}\n\nexport function HandCoinsIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"9\" cy=\"7\" r=\"3\" />\n <path d=\"M4 21v-2a5 5 0 0 1 5-5h1\" />\n <path d=\"M14 12l2 2 4-4\" />\n </svg>\n );\n}\n","'use client';\n\n// The \"+\" action's own picker — the one concession this composite makes to\n// the reference screenshot's single FAB. Each option routes into its own\n// dedicated, single-purpose sheet; this menu itself writes nothing. Only\n// offers an action whose domain is actually lit right now (never a menu\n// entry that would open a sheet backed by a dark hook).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { CloseIcon, HandCoinsIcon, ReceiptIcon, WalletIcon } from './icons';\n\nexport interface AddMoneyMenuSheetProps {\n readonly open: boolean;\n readonly canLogExpense: boolean;\n readonly canRecordCollection: boolean;\n readonly canMoveFloat: boolean;\n readonly onLogExpense: () => void;\n readonly onRecordCollection: () => void;\n readonly onMoveFloat: () => void;\n readonly onClose: () => void;\n}\n\nexport function AddMoneyMenuSheet({\n open,\n canLogExpense,\n canRecordCollection,\n canMoveFloat,\n onLogExpense,\n onRecordCollection,\n onMoveFloat,\n onClose,\n}: AddMoneyMenuSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n if (!open) {\n return null;\n }\n\n return (\n <div className=\"kf-manager-money__sheet-backdrop\">\n <div\n className=\"kf-manager-money__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.money.addMenu.title')}\n >\n <div className=\"kf-manager-money__sheet-header\">\n <p className=\"kf-manager-money__sheet-title\">\n {t('chrome.managerTrip.money.addMenu.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <div className=\"kf-manager-money__menu-list\">\n {canLogExpense ? (\n <button\n type=\"button\"\n className=\"kf-manager-money__menu-row kf-press\"\n onClick={onLogExpense}\n >\n <ReceiptIcon />\n <span className=\"kf-manager-money__menu-row-copy\">\n <span className=\"kf-manager-money__list-row-title\">\n {t('chrome.managerTrip.money.addMenu.logExpense')}\n </span>\n <span className=\"kf-manager-money__list-row-meta\">\n {t('chrome.managerTrip.money.addMenu.logExpenseSubtitle')}\n </span>\n </span>\n </button>\n ) : null}\n {canRecordCollection ? (\n <button\n type=\"button\"\n className=\"kf-manager-money__menu-row kf-press\"\n onClick={onRecordCollection}\n >\n <HandCoinsIcon />\n <span className=\"kf-manager-money__menu-row-copy\">\n <span className=\"kf-manager-money__list-row-title\">\n {t('chrome.managerTrip.money.addMenu.recordCollection')}\n </span>\n <span className=\"kf-manager-money__list-row-meta\">\n {t('chrome.managerTrip.money.addMenu.recordCollectionSubtitle')}\n </span>\n </span>\n </button>\n ) : null}\n {canMoveFloat ? (\n <button\n type=\"button\"\n className=\"kf-manager-money__menu-row kf-press\"\n onClick={onMoveFloat}\n >\n <WalletIcon />\n <span className=\"kf-manager-money__menu-row-copy\">\n <span className=\"kf-manager-money__list-row-title\">\n {t('chrome.managerTrip.money.addMenu.moveFloat')}\n </span>\n <span className=\"kf-manager-money__list-row-meta\">\n {t('chrome.managerTrip.money.addMenu.moveFloatSubtitle')}\n </span>\n </span>\n </button>\n ) : null}\n </div>\n </div>\n </div>\n );\n}\n","// Pure derivation helpers off the real hooks' own return shapes — no\n// `kaafil-js` import (hard rule #1), no fabricated fields.\n//\n// `formatMinorAmount`/`initialsFor`/`joinBalancesDue`/the category- and\n// mode-label helpers/the collection-mode vocabulary live in\n// `manager/shell/MoneyFlows/moneyFormat.ts` — shared with `ManagerNowSection`\n// once its Quick Actions FAB needed the exact same money sheets — and are\n// re-exported here so this composite's own sibling internals keep importing\n// from `./deriveMoney` unchanged. Only aggregation derivations specific to\n// THIS composite's own stats/lists stay local.\n\nimport type { ExpenseDeltaRow, ExpenseLiveRow } from '../ManagerMoneySection.types';\n\nexport {\n type BalanceDueDisplayRow,\n COLLECTION_MODES,\n type CollectionModeKey,\n collectionModeLabelKey,\n collectionReferenceRequired,\n expenseCategoryLabelKey,\n formatMinorAmount,\n initialsFor,\n joinBalancesDue,\n paymentModeLabelKey,\n} from '../../../../shell/MoneyFlows/moneyFormat';\n\nexport function isLiveExpense(row: ExpenseDeltaRow): row is ExpenseLiveRow {\n return !('_tombstone' in row);\n}\n\nexport function liveExpenses(rows: readonly ExpenseDeltaRow[]): readonly ExpenseLiveRow[] {\n return rows.filter(isLiveExpense);\n}\n\n/** Live, non-voided expenses only — a voided row keeps its place in the\n * list (`ExpenseResponse.voidedAt`, never deleted) but must not count\n * toward \"spend logged\" or any other real total. */\nexport function activeExpenses(rows: readonly ExpenseDeltaRow[]): readonly ExpenseLiveRow[] {\n return liveExpenses(rows).filter((expense) => expense.voidedAt === null);\n}\n\nexport function sumSpendMinor(rows: readonly ExpenseLiveRow[]): number {\n return rows.reduce((sum, expense) => sum + expense.amountMinor, 0);\n}\n\nconst REIMBURSABLE_CLAIM_STATUSES = new Set(['SUBMITTED', 'APPROVED']);\n\nexport function reimbursableExpenses(rows: readonly ExpenseLiveRow[]): readonly ExpenseLiveRow[] {\n return rows.filter(\n (expense) =>\n expense.claimStatus !== null && REIMBURSABLE_CLAIM_STATUSES.has(expense.claimStatus),\n );\n}\n\nexport function recentExpensesSorted(rows: readonly ExpenseLiveRow[]): readonly ExpenseLiveRow[] {\n return rows.slice().sort((a, b) => (a.spentAt < b.spentAt ? 1 : a.spentAt > b.spentAt ? -1 : 0));\n}\n","'use client';\n\n// The \"who owes money\" roster — `useCollections().eligible` joined against\n// `useParties()`'s roster for a display name (`deriveMoney.ts#joinBalancesDue`).\n// Deliberately NO due-date column: no such field exists anywhere on the wire\n// (verified against the generated schema this session) — showing one would\n// be a fabrication, not a real fact this API can state.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { BalanceDueDisplayRow } from './deriveMoney';\nimport { formatMinorAmount } from './deriveMoney';\nimport { ChevronIcon } from './icons';\n\nexport interface BalancesDueSectionProps {\n readonly rows: readonly BalanceDueDisplayRow[];\n readonly showingAll: boolean;\n readonly onSelect: (row: BalanceDueDisplayRow) => void;\n readonly onSeeAll: () => void;\n}\n\nexport function BalancesDueSection({\n rows,\n showingAll,\n onSelect,\n onSeeAll,\n}: BalancesDueSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n\n return (\n <section aria-label={t('chrome.managerTrip.money.balancesDue.ariaLabel')}>\n <p className=\"kf-manager-money__eyebrow-row\">\n {t('chrome.managerTrip.money.balancesDue.eyebrow')}\n {!showingAll ? (\n <button type=\"button\" className=\"kf-manager-money__see-all kf-press\" onClick={onSeeAll}>\n {t('chrome.managerTrip.money.balancesDue.seeAll')}\n </button>\n ) : null}\n </p>\n {rows.length === 0 ? (\n <div className=\"kf-manager-money__card kf-manager-money__empty\">\n {showingAll\n ? t('chrome.managerTrip.money.balancesDue.emptyAll')\n : t('chrome.managerTrip.money.balancesDue.emptyDue')}\n </div>\n ) : (\n <div className=\"kf-manager-money__card kf-manager-money__list\">\n {rows.map((row) => (\n <button\n key={row.travellerId}\n type=\"button\"\n className=\"kf-manager-money__list-row kf-press\"\n onClick={() => onSelect(row)}\n >\n <span className=\"kf-manager-money__pool-avatar\">{row.initials}</span>\n <span className=\"kf-manager-money__list-row-title\">{row.fullName}</span>\n <span className=\"kf-manager-money__list-row-amount\">\n {formatMinorAmount(row.outstandingMinor, row.currency)}\n </span>\n <ChevronIcon className=\"kf-manager-money__list-row-chevron\" />\n </button>\n ))}\n </div>\n )}\n </section>\n );\n}\n","'use client';\n\n// View one expense, void it (reason required), or submit/withdraw a\n// reimbursement claim (PERSONAL payment mode only). NO approve/reject/pay\n// action anywhere — structurally absent for every credential (capture-only;\n// the CRM reflects its own decision via an apiKey-only ingest this UIKit\n// never exposes). `crmDecisionNote`/`crmPaymentReference` are shown\n// READ-ONLY when present — real fields reflecting the CRM's own decision,\n// never editable here.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ExpenseLiveRow } from '../ManagerMoneySection.types';\nimport { expenseCategoryLabelKey, formatMinorAmount, paymentModeLabelKey } from './deriveMoney';\nimport { CloseIcon, TrashIcon } from './icons';\n\nexport interface ExpenseDetailSheetProps {\n readonly open: boolean;\n readonly expense: ExpenseLiveRow | undefined;\n readonly onVoid: (input: { expenseId: string; version: number; reason: string }) => Promise<void>;\n readonly onSubmitClaim: (input: { expenseId: string }) => Promise<void>;\n readonly onWithdrawClaim: (input: { expenseId: string; version: number }) => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function ExpenseDetailSheet({\n open,\n expense,\n onVoid,\n onSubmitClaim,\n onWithdrawClaim,\n onClose,\n}: ExpenseDetailSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [pending, setPending] = useState(false);\n const [confirmingVoid, setConfirmingVoid] = useState(false);\n const [voidReason, setVoidReason] = useState('');\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setConfirmingVoid(false);\n setVoidReason('');\n }, [open]);\n\n if (!open || expense === undefined) {\n return null;\n }\n\n const canClaim = expense.paymentMode === 'PERSONAL';\n const canSubmitClaim =\n canClaim && (expense.claimStatus === null || expense.claimStatus === 'WITHDRAWN');\n const canWithdrawClaim = canClaim && expense.claimStatus === 'SUBMITTED';\n const isVoided = expense.voidedAt !== null;\n\n const handleVoid = async (): Promise<void> => {\n if (voidReason.trim().length === 0) {\n return;\n }\n setPending(true);\n try {\n await onVoid({ expenseId: expense.id, version: expense.version, reason: voidReason.trim() });\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-money__sheet-backdrop\">\n <div\n className=\"kf-manager-money__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.money.expenseDetail.title')}\n >\n <div className=\"kf-manager-money__sheet-header\">\n <p className=\"kf-manager-money__sheet-title\">{expense.description}</p>\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <p className=\"kf-manager-money__hint-copy\">\n {t(expenseCategoryLabelKey(expense.category))} ·{' '}\n {t(paymentModeLabelKey(expense.paymentMode))}\n </p>\n <p className=\"kf-manager-money__stat-value\">\n {formatMinorAmount(expense.amountMinor, expense.currency)}\n </p>\n {expense.vendorName !== null ? (\n <p className=\"kf-manager-money__hint-copy\">{expense.vendorName}</p>\n ) : null}\n {expense.receiptEvidenceText !== null ? (\n <p className=\"kf-manager-money__hint-copy\">\n {t('chrome.managerTrip.money.expenseDetail.receipt').replace(\n '{text}',\n expense.receiptEvidenceText,\n )}\n </p>\n ) : null}\n\n {isVoided ? (\n <p className=\"kf-manager-money__warning-copy\">\n {t('chrome.managerTrip.money.expenseDetail.voided').replace(\n '{reason}',\n expense.voidReason ?? '',\n )}\n </p>\n ) : null}\n\n {canClaim && expense.claimStatus !== null ? (\n <p className=\"kf-manager-money__hint-copy\">\n {t('chrome.managerTrip.money.expenseDetail.claimStatus').replace(\n '{status}',\n expense.claimStatus,\n )}\n {expense.crmDecisionNote !== null ? ` — ${expense.crmDecisionNote}` : ''}\n </p>\n ) : null}\n\n {!isVoided && canSubmitClaim ? (\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-secondary kf-press\"\n disabled={pending}\n onClick={() => void onSubmitClaim({ expenseId: expense.id }).then(onClose)}\n >\n {t('chrome.managerTrip.money.expenseDetail.submitClaim')}\n </button>\n ) : null}\n\n {!isVoided && canWithdrawClaim ? (\n <button\n type=\"button\"\n className=\"kf-manager-money__sheet-secondary kf-press\"\n disabled={pending}\n onClick={() =>\n void onWithdrawClaim({ expenseId: expense.id, version: expense.version }).then(\n onClose,\n )\n }\n >\n {t('chrome.managerTrip.money.expenseDetail.withdrawClaim')}\n </button>\n ) : null}\n\n {!isVoided ? (\n confirmingVoid ? (\n <div className=\"kf-manager-money__custom-form\">\n <input\n type=\"text\"\n className=\"kf-manager-money__field-input\"\n value={voidReason}\n onChange={(event) => setVoidReason(event.target.value)}\n placeholder={t('chrome.managerTrip.money.expenseDetail.voidReasonPlaceholder')}\n />\n <div className=\"kf-manager-money__filter-sheet-footer\">\n <button\n type=\"button\"\n className=\"kf-manager-money__filter-sheet-clear kf-press\"\n onClick={() => setConfirmingVoid(false)}\n >\n {t('chrome.cancel')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-money__danger-button kf-press\"\n disabled={pending || voidReason.trim().length === 0}\n onClick={() => void handleVoid()}\n >\n {t('chrome.managerTrip.money.expenseDetail.confirmVoid')}\n </button>\n </div>\n </div>\n ) : (\n <button\n type=\"button\"\n className=\"kf-manager-money__delete-link kf-press\"\n onClick={() => setConfirmingVoid(true)}\n >\n <TrashIcon /> {t('chrome.managerTrip.money.expenseDetail.void')}\n </button>\n )\n ) : null}\n </div>\n </div>\n );\n}\n","'use client';\n\n// Four stat cards — each one independently present or absent depending on\n// its OWN domain hook's status (`float`/`expenses`/`collections` are three\n// separate capabilities, never a shared state). A `undefined` section prop\n// means \"this domain isn't lit/ready right now\" and renders nothing for\n// that card — never a fabricated zero standing in for a real dark/loading\n// state (hard rule #20's 404-shaped darkness, applied to a stat tile here\n// instead of a whole surface).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMinorAmount } from './deriveMoney';\n\nexport interface MoneyStatsProps {\n readonly float?: {\n readonly balanceMinor: number;\n readonly issuedMinor: number;\n readonly currency: string;\n };\n readonly spend?: { readonly amountMinor: number; readonly currency: string };\n readonly collect?: {\n readonly amountMinor: number;\n readonly travellerCount: number;\n readonly currency: string;\n };\n readonly reimbursable?: {\n readonly amountMinor: number;\n readonly count: number;\n readonly currency: string;\n };\n}\n\nexport function MoneyStats({ float, spend, collect, reimbursable }: MoneyStatsProps): ReactNode {\n const { t } = useKaafilChrome();\n\n return (\n <div className=\"kf-manager-money__stats\">\n {float !== undefined ? (\n <div className=\"kf-manager-money__stat-cell\">\n <p className=\"kf-manager-money__stat-label\">{t('chrome.managerTrip.money.stat.float')}</p>\n <p className=\"kf-manager-money__stat-value\" data-tone=\"pos\">\n {formatMinorAmount(float.balanceMinor, float.currency)}\n </p>\n <p className=\"kf-manager-money__stat-caption\">\n {t('chrome.managerTrip.money.stat.floatCaption').replace(\n '{amount}',\n formatMinorAmount(float.issuedMinor, float.currency),\n )}\n </p>\n </div>\n ) : null}\n\n {spend !== undefined ? (\n <div className=\"kf-manager-money__stat-cell\">\n <p className=\"kf-manager-money__stat-label\">{t('chrome.managerTrip.money.stat.spend')}</p>\n <p className=\"kf-manager-money__stat-value\">\n {formatMinorAmount(spend.amountMinor, spend.currency)}\n </p>\n <p className=\"kf-manager-money__stat-caption\">\n {t('chrome.managerTrip.money.stat.spendCaption')}\n </p>\n </div>\n ) : null}\n\n {collect !== undefined ? (\n <div className=\"kf-manager-money__stat-cell\">\n <p className=\"kf-manager-money__stat-label\">\n {t('chrome.managerTrip.money.stat.collect')}\n </p>\n <p className=\"kf-manager-money__stat-value\" data-tone=\"warn\">\n {formatMinorAmount(collect.amountMinor, collect.currency)}\n </p>\n <p className=\"kf-manager-money__stat-caption\">\n {t('chrome.managerTrip.money.stat.collectCaption').replace(\n '{count}',\n String(collect.travellerCount),\n )}\n </p>\n </div>\n ) : null}\n\n {reimbursable !== undefined ? (\n <div className=\"kf-manager-money__stat-cell\">\n <p className=\"kf-manager-money__stat-label\">\n {t('chrome.managerTrip.money.stat.reimbursable')}\n </p>\n <p className=\"kf-manager-money__stat-value\">\n {formatMinorAmount(reimbursable.amountMinor, reimbursable.currency)}\n </p>\n <p className=\"kf-manager-money__stat-caption\">\n {reimbursable.count > 0\n ? t('chrome.managerTrip.money.stat.reimbursableCaptionPending').replace(\n '{count}',\n String(reimbursable.count),\n )\n : t('chrome.managerTrip.money.stat.reimbursableCaptionNone')}\n </p>\n </div>\n ) : null}\n </div>\n );\n}\n","'use client';\n\n// The live expense feed — real category/vendor/amount/status, tap opens\n// `ExpenseDetailSheet`. Renders nothing (not a placeholder card) when the\n// `expenses` domain itself is dark/loading — the composite's caller decides\n// whether to mount this section at all.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ExpenseLiveRow } from '../ManagerMoneySection.types';\nimport { expenseCategoryLabelKey, formatMinorAmount } from './deriveMoney';\n\nexport interface RecentExpensesSectionProps {\n readonly expenses: readonly ExpenseLiveRow[];\n readonly onSelect: (expense: ExpenseLiveRow) => void;\n}\n\nexport function RecentExpensesSection({\n expenses,\n onSelect,\n}: RecentExpensesSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n\n return (\n <section aria-label={t('chrome.managerTrip.money.recentExpenses.ariaLabel')}>\n <p className=\"kf-eyebrow\">{t('chrome.managerTrip.money.recentExpenses.eyebrow')}</p>\n {expenses.length === 0 ? (\n <div className=\"kf-manager-money__card kf-manager-money__empty\">\n {t('chrome.managerTrip.money.recentExpenses.empty')}\n </div>\n ) : (\n <div className=\"kf-manager-money__list\">\n {expenses.slice(0, 5).map((expense) => (\n <button\n key={expense.id}\n type=\"button\"\n className=\"kf-manager-money__list-row kf-press\"\n onClick={() => onSelect(expense)}\n >\n <span className=\"kf-manager-money__list-row-copy\">\n <span className=\"kf-manager-money__list-row-title\">{expense.description}</span>\n <span className=\"kf-manager-money__list-row-meta\">\n {t(expenseCategoryLabelKey(expense.category))}\n {expense.vendorName !== null ? ` · ${expense.vendorName}` : ''}\n {expense.voidedAt !== null\n ? ` · ${t('chrome.managerTrip.money.expense.voided')}`\n : ''}\n </span>\n </span>\n <span className=\"kf-manager-money__list-row-amount\">\n {formatMinorAmount(expense.amountMinor, expense.currency)}\n </span>\n </button>\n ))}\n </div>\n )}\n </section>\n );\n}\n","'use client';\n\n// The Money tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'money'` tab panel.\n// Reads THREE independent, real domain hooks — `useFloat(tripRef)`,\n// `useExpenses(tripRef)`, `useCollections(tripRef)` — each its own\n// capability (`'float'`/`'expenses'`/`'collections'`), each independently\n// dark/loading/ready on the same trip. `useParties(tripRef)` (never\n// capability-gated) resolves a traveller name for the balances-due list,\n// which the collections API itself never carries.\n//\n// The product spec (`01-collections.md`/`02-expenses.md`/`03-float.md`)\n// explicitly forbids merging these three into one FORM — \"never collapsed\n// into one.\" This composite honours that at the write layer: it is a\n// dashboard/aggregator for READING all three, but every write still opens\n// its own single-purpose sheet backed by its own hook. No section here ever\n// fabricates a field the wire doesn't have (no due-date on balances due, no\n// approve/reject/pay UI, no client-side balance guard standing in for the\n// server's own advisory lock).\n//\n// Composition order: stats (each card independently present per its own\n// domain) → recent expenses → balances due → \"+\" menu (Log expense /\n// Record collection / Return or adjust float), each opening its own sheet.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useCollections } from '../../../../core/hooks/useCollections.js';\nimport { useExpenses } from '../../../../core/hooks/useExpenses.js';\nimport { useFloat } from '../../../../core/hooks/useFloat.js';\nimport { useParties } from '../../../../core/hooks/useParties.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { ManagerFab } from '../../../shell/ManagerFab/ManagerFab';\nimport { FloatMovementSheet } from '../../../shell/MoneyFlows/FloatMovementSheet';\nimport { LogExpenseSheet } from '../../../shell/MoneyFlows/LogExpenseSheet';\nimport { RecordCollectionSheet } from '../../../shell/MoneyFlows/RecordCollectionSheet';\nimport { AddMoneyMenuSheet } from './internal/AddMoneyMenuSheet';\nimport { BalancesDueSection } from './internal/BalancesDueSection';\nimport type { BalanceDueDisplayRow } from './internal/deriveMoney';\nimport {\n activeExpenses,\n joinBalancesDue,\n recentExpensesSorted,\n reimbursableExpenses,\n sumSpendMinor,\n} from './internal/deriveMoney';\nimport { ExpenseDetailSheet } from './internal/ExpenseDetailSheet';\nimport { MoneyStats } from './internal/MoneyStats';\nimport { RecentExpensesSection } from './internal/RecentExpensesSection';\nimport type { ExpenseLiveRow, ManagerMoneySectionProps } from './ManagerMoneySection.types';\n\nexport function ManagerMoneySection({\n tripRef,\n onViewFloatLedger,\n components,\n style,\n}: ManagerMoneySectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const float = useFloat(tripRef);\n const expenses = useExpenses(tripRef);\n const collections = useCollections(tripRef);\n const parties = useParties(tripRef);\n\n const StatsComponent = components?.Stats ?? MoneyStats;\n const RecentExpensesComponent = components?.RecentExpenses ?? RecentExpensesSection;\n const BalancesDueComponent = components?.BalancesDue ?? BalancesDueSection;\n\n const [addMenuOpen, setAddMenuOpen] = useState(false);\n const [logExpenseOpen, setLogExpenseOpen] = useState(false);\n const [collectionSheet, setCollectionSheet] = useState<{\n open: boolean;\n preselected: { travellerId: string; fullName: string } | undefined;\n }>({ open: false, preselected: undefined });\n const [floatMovementOpen, setFloatMovementOpen] = useState(false);\n const [expenseDetail, setExpenseDetail] = useState<ExpenseLiveRow | undefined>(undefined);\n const [showingAllBalances, setShowingAllBalances] = useState(false);\n\n if (\n float.status === 'loading' &&\n expenses.status === 'loading' &&\n collections.status === 'loading'\n ) {\n return (\n <div className=\"kf-manager-money__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-money__skeleton-block\" />\n <div className=\"kf-manager-money__skeleton-line\" />\n <div className=\"kf-manager-money__skeleton-line kf-manager-money__skeleton-line--short\" />\n </div>\n );\n }\n\n const floatReady = float.status === 'ready' ? float : undefined;\n const expensesReady = expenses.status === 'ready' ? expenses : undefined;\n const collectionsReady = collections.status === 'ready' ? collections : undefined;\n const rosterRows = parties.status === 'ready' ? parties.tripRoster.rows : [];\n\n const floatRow = floatReady?.summary.rows[0];\n const active = expensesReady !== undefined ? activeExpenses(expensesReady.expenses) : [];\n const reimbursable = reimbursableExpenses(active);\n const balancesDueRows: readonly BalanceDueDisplayRow[] =\n collectionsReady !== undefined\n ? joinBalancesDue(collectionsReady.eligible.rows, rosterRows)\n : [];\n\n const currency =\n floatRow?.currency ?? active[0]?.currency ?? balancesDueRows[0]?.currency ?? 'INR';\n\n const canLogExpense = expensesReady !== undefined;\n const canRecordCollection = collectionsReady !== undefined && rosterRows.length > 0;\n const canMoveFloat = floatReady !== undefined && floatRow !== undefined;\n\n return (\n <div className=\"kf-manager-money\" style={tokenStyle(style)}>\n <StatsComponent\n float={\n floatRow !== undefined\n ? {\n balanceMinor: floatRow.balanceMinor,\n issuedMinor: floatRow.issuedMinor,\n currency: floatRow.currency,\n }\n : undefined\n }\n spend={\n expensesReady !== undefined ? { amountMinor: sumSpendMinor(active), currency } : undefined\n }\n collect={\n collectionsReady !== undefined\n ? {\n amountMinor: balancesDueRows.reduce((sum, row) => sum + row.outstandingMinor, 0),\n travellerCount: balancesDueRows.length,\n currency,\n }\n : undefined\n }\n reimbursable={\n expensesReady !== undefined\n ? { amountMinor: sumSpendMinor(reimbursable), count: reimbursable.length, currency }\n : undefined\n }\n />\n\n {onViewFloatLedger !== undefined && floatRow !== undefined ? (\n <button\n type=\"button\"\n className=\"kf-manager-money__view-ledger kf-press\"\n onClick={onViewFloatLedger}\n >\n {t('chrome.managerTrip.money.viewFloatLedger')}\n </button>\n ) : null}\n\n {expensesReady !== undefined ? (\n <RecentExpensesComponent\n expenses={recentExpensesSorted(active)}\n onSelect={(expense) => setExpenseDetail(expense)}\n />\n ) : null}\n\n {collectionsReady !== undefined ? (\n <BalancesDueComponent\n rows={balancesDueRows}\n showingAll={showingAllBalances}\n onSelect={(row) =>\n setCollectionSheet({\n open: true,\n preselected: { travellerId: row.travellerId, fullName: row.fullName },\n })\n }\n onSeeAll={() => {\n setShowingAllBalances(true);\n void collectionsReady.eligible.refresh('all');\n }}\n />\n ) : null}\n\n {canLogExpense || canRecordCollection || canMoveFloat ? (\n <ManagerFab\n onClick={() => setAddMenuOpen(true)}\n label={t('chrome.managerTrip.money.addMenu.title')}\n />\n ) : null}\n\n <AddMoneyMenuSheet\n open={addMenuOpen}\n canLogExpense={canLogExpense}\n canRecordCollection={canRecordCollection}\n canMoveFloat={canMoveFloat}\n onLogExpense={() => {\n setAddMenuOpen(false);\n setLogExpenseOpen(true);\n }}\n onRecordCollection={() => {\n setAddMenuOpen(false);\n setCollectionSheet({ open: true, preselected: undefined });\n }}\n onMoveFloat={() => {\n setAddMenuOpen(false);\n setFloatMovementOpen(true);\n }}\n onClose={() => setAddMenuOpen(false)}\n />\n\n {expensesReady !== undefined ? (\n <LogExpenseSheet\n open={logExpenseOpen}\n tripRef={tripRef}\n onSubmit={async (input) => {\n await expensesReady.log(input);\n // A FLOAT_CASH expense creates a paired EXPENSE movement\n // server-side (one transaction) — `useFloat`'s `summary` is a\n // fully independent hook with no cross-wiring, so \"Float in\n // hand\" would otherwise stay stale until an unrelated remount.\n if (input.paymentMode === 'FLOAT_CASH' && floatReady !== undefined) {\n void floatReady.summary.refresh();\n }\n }}\n onClose={() => setLogExpenseOpen(false)}\n />\n ) : null}\n\n {collectionsReady !== undefined ? (\n <RecordCollectionSheet\n open={collectionSheet.open}\n preselected={collectionSheet.preselected}\n roster={rosterRows}\n balancesDue={balancesDueRows}\n onSubmit={async (input) => {\n await collectionsReady.record(input);\n }}\n onClose={() => setCollectionSheet({ open: false, preselected: undefined })}\n />\n ) : null}\n\n {floatReady !== undefined ? (\n <FloatMovementSheet\n open={floatMovementOpen}\n currentBalanceMinor={floatRow?.balanceMinor}\n currency={currency}\n onReturn={async (input) => {\n if (floatRow === undefined) return;\n await floatReady.return({ managerId: floatRow.managerId, ...input });\n }}\n onAdjust={async (input) => {\n if (floatRow === undefined) return;\n await floatReady.adjust({ managerId: floatRow.managerId, ...input });\n }}\n onClose={() => setFloatMovementOpen(false)}\n />\n ) : null}\n\n {expensesReady !== undefined ? (\n <ExpenseDetailSheet\n open={expenseDetail !== undefined}\n expense={expenseDetail}\n onVoid={async (input) => {\n await expensesReady.void(input);\n }}\n onSubmitClaim={async (input) => {\n await expensesReady.submitClaim(input);\n }}\n onWithdrawClaim={async (input) => {\n await expensesReady.withdrawClaim(input);\n }}\n onClose={() => setExpenseDetail(undefined)}\n />\n ) : null}\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function InboxIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 12h-6l-2 3h-4l-2-3H2\" />\n <path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11Z\" />\n </svg>\n );\n}\n","// `13-i18n-and-formatting.md`'s \"never the ambient browser locale\" rule —\n// same fixed `'en-GB'` convention `ManagerMeSection`'s own\n// `formatMeDateRange.ts` established. An absolute stamp, never a \"3h ago\"\n// relative string — a relative label would need to read the current time,\n// and this file lives outside `src/core` so hard rule #6 doesn't bind it,\n// but there is still no real \"now\" reference this composite is handed to\n// compare against (no `meta.serverTime` flows into a per-row render), so an\n// absolute date/time is the only honest choice.\nconst NOTIFICATION_TIME_FORMATTER = new Intl.DateTimeFormat('en-GB', {\n day: 'numeric',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n});\n\nexport function formatNotificationTime(createdAt: string): string {\n return NOTIFICATION_TIME_FORMATTER.format(new Date(createdAt));\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport type { ManagerNotification } from '../ManagerNotificationsSection.types';\nimport { formatNotificationTime } from './formatNotificationTime';\n\nexport interface NotificationRowProps {\n readonly notification: ManagerNotification;\n readonly onSelect: (notification: ManagerNotification) => void;\n}\n\nexport function NotificationRow({ notification, onSelect }: NotificationRowProps): ReactNode {\n const isUnread = notification.readAt === null;\n\n return (\n <button\n type=\"button\"\n className=\"kf-manager-notifications__row kf-press\"\n data-unread={isUnread}\n onClick={() => onSelect(notification)}\n >\n <span className=\"kf-manager-notifications__dot\" aria-hidden=\"true\" />\n <span className=\"kf-manager-notifications__body\">\n <span className=\"kf-manager-notifications__title\">{notification.title}</span>\n <span className=\"kf-manager-notifications__text\">{notification.body}</span>\n </span>\n <span className=\"kf-manager-notifications__time\">\n {formatNotificationTime(notification.createdAt)}\n </span>\n </button>\n );\n}\n","'use client';\n\n// `ManagerNotificationsSection` — the `NotificationsFeed` equivalent from\n// `11-offline-sync-and-notifications.md` (individually status: spec-complete\n// even though the parent doc is \"Planned\" overall). Backed by\n// `useNotifications()` alone — manager-scoped, not trip-scoped, no\n// capability gate (the hook's own header: notifications are structurally\n// unreachable from admin/traveller sessions, so no gate is needed). Mounted\n// as a full-screen PUSH (back-header), never a tab — the spec's own\n// `NotificationsScreen` wraps this composite in exactly that shape, and\n// `ManagerShell`'s bell (`onBellPress`) has computed a real `unread` count\n// since the \"Me\" wave with nothing behind it until this composite.\n//\n// SCOPE: a flat, chronological list off `notifications.list()` — NOT\n// `notifications.getInbox()`'s segmented (all/action/fyi) view, a separate,\n// unwrapped endpoint out of scope this wave. Row tap marks the row read\n// (fire-and-forget — mark-read is naturally idempotent server-side per the\n// SDK's own doc comment, so hard rule #4 needs no key minted here) then\n// calls `onSelectNotification`; the host decides what a non-null `tripId`\n// means (this composite has no router of its own, hard rule #9).\n\nimport type { ReactNode } from 'react';\nimport { useNotifications } from '../../../../core/hooks/useNotifications.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { InboxIcon } from './internal/icons';\nimport { NotificationRow } from './internal/NotificationRow';\nimport type {\n ManagerNotification,\n ManagerNotificationsSectionProps,\n} from './ManagerNotificationsSection.types';\n\nexport function ManagerNotificationsSection({\n onSelectNotification,\n style,\n}: ManagerNotificationsSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const notifications = useNotifications();\n\n if (notifications.status === 'loading') {\n return (\n <div className=\"kf-manager-notifications__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-notifications__skeleton-line\" />\n <div className=\"kf-manager-notifications__skeleton-line\" />\n <div className=\"kf-manager-notifications__skeleton-line kf-manager-notifications__skeleton-line--short\" />\n </div>\n );\n }\n\n if (notifications.status === 'error') {\n return null;\n }\n\n // Destructured here, at the point narrowing to `'ready'` is still active\n // — `notifications.markRead` accessed later inside a nested function\n // declaration doesn't reliably retain this narrowing under\n // `noUncheckedIndexedAccess` (this session's own established fix).\n const { notifications: rows, markRead } = notifications;\n\n function handleSelect(notification: ManagerNotification): void {\n if (notification.readAt === null) {\n void markRead(notification.id);\n }\n onSelectNotification({ notificationId: notification.id, tripId: notification.tripId });\n }\n\n return (\n <div className=\"kf-manager-notifications\" style={tokenStyle(style)}>\n {rows.length === 0 ? (\n <div className=\"kf-manager-notifications__empty\">\n <InboxIcon className=\"kf-manager-notifications__empty-icon\" />\n <p className=\"kf-manager-notifications__empty-title\">\n {t('chrome.managerNotifications.emptyTitle')}\n </p>\n <p className=\"kf-manager-notifications__empty-body\">\n {t('chrome.managerNotifications.emptyBody')}\n </p>\n </div>\n ) : (\n <div className=\"kf-manager-notifications__list\">\n {rows.map((notification) => (\n <NotificationRow\n key={notification.id}\n notification={notification}\n onSelect={handleSelect}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n","// Shared by `sumTodayTotals.ts` and `deriveManagerNowBanners.ts` — both need\n// \"is this timestamp on the same calendar day as that one, in THIS\n// timezone\" (`13-i18n-and-formatting.md §2.1`: the timezone is an explicit\n// input, never the device's ambient one). `en-CA` formats as `YYYY-MM-DD`,\n// making the two keys directly string-comparable.\nexport function calendarDayKey(iso: string, timeZone: string): string {\n return new Intl.DateTimeFormat('en-CA', {\n timeZone,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n }).format(new Date(iso));\n}\n","// The fixed, closed set of banner rules this build ships (this build's own\n// plan, scope call \"Banners\") — never the boilerplate's fully open BE-\n// authored banner system, which would need new engine content-authoring\n// infrastructure out of proportion to this wave. Each rule below cites the\n// real `useManagerToday` field that drives it; a banner NEVER renders from\n// a guess. `serverTime` is the read's own `syncedAt` (`meta.serverTime`) —\n// never a device clock (hard rule #6).\n\nimport type { ManagerTodayReady } from '../../../../../core/hooks/useManagerToday.js';\nimport { calendarDayKey } from './calendarDayKey';\n\nexport interface ManagerNowBanner {\n readonly id: 'departure-day' | 'last-day' | 'unassigned-rooming';\n readonly tone: 'warn' | 'info';\n readonly titleKey: string;\n readonly subKey?: string;\n readonly subParams?: Readonly<Record<string, string>>;\n}\n\nexport function deriveManagerNowBanners(today: ManagerTodayReady): readonly ManagerNowBanner[] {\n const banners: ManagerNowBanner[] = [];\n const { trip, phase, syncedAt } = today;\n const todayKey = calendarDayKey(syncedAt, trip.timezone);\n\n // Idle-with-PRE_DEPARTURE is the only branch `useManagerToday` returns\n // before a trip starts (`kind: 'idle'` fires \"whenever the trip is not\n // ON_TRIP right now\", the engine's own doc comment) — this banner reads\n // real `trip.startDate`/`phase` fields, never a fabricated \"departure\n // day\" flag the wire doesn't carry.\n if (phase === 'PRE_DEPARTURE' && calendarDayKey(trip.startDate, trip.timezone) === todayKey) {\n banners.push({\n id: 'departure-day',\n tone: 'warn',\n titleKey: 'chrome.managerNow.banner.departureDay',\n });\n }\n\n if (\n today.kind !== 'idle' &&\n phase === 'ON_TRIP' &&\n calendarDayKey(trip.endDate, trip.timezone) === todayKey\n ) {\n banners.push({ id: 'last-day', tone: 'info', titleKey: 'chrome.managerNow.banner.lastDay' });\n }\n\n if (today.kind === 'trip' && today.rooming !== null && today.rooming.unassignedCount > 0) {\n banners.push({\n id: 'unassigned-rooming',\n tone: 'warn',\n titleKey: 'chrome.managerNow.banner.unassignedRooming',\n subKey: 'chrome.managerNow.banner.unassignedRoomingCount',\n subParams: { count: String(today.rooming.unassignedCount) },\n });\n }\n\n return banners;\n}\n","'use client';\n\n// Inline SVG, component-scoped (no shared `/primitives` export, v2 rebuild\n// rule). Geometry adapted from the boilerplate's own icon set\n// (`components/manager/now/now-icons.tsx`, `m-fab.tsx`) — `currentColor`\n// throughout so colour always comes from the consuming element.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function WarningIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 3 2 20h20z\" />\n <path d=\"M12 10v4M12 17.5h.01\" />\n </svg>\n );\n}\n\nexport function CalendarIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\" />\n <path d=\"M3 10h18M8 3v4M16 3v4\" />\n </svg>\n );\n}\n\nexport function BedIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 18v-6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6\" />\n <path d=\"M3 18v2M21 18v2M3 12V8a1 1 0 0 1 1-1h6v5\" />\n </svg>\n );\n}\n\nexport function PhoneIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.362 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.338 1.85.573 2.81.7A2 2 0 0 1 22 16.92z\" />\n </svg>\n );\n}\n\nexport function CheckIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n","'use client';\n\n// Renders `deriveManagerNowBanners`'s own fixed, closed rule set — never\n// an open BE-composed banner list (this build's own scope decision).\n// Pixel reference: `frontend-boilerplate/components/manager/now/\n// now-banners.tsx`, read directly from source.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerNowBanner } from './deriveManagerNowBanners';\nimport { CalendarIcon, WarningIcon } from './icons';\n\nconst TONE_ICON: Record<ManagerNowBanner['tone'], () => ReactNode> = {\n warn: () => <WarningIcon />,\n info: () => <CalendarIcon />,\n};\n\nexport interface NowBannersProps {\n readonly banners: readonly ManagerNowBanner[];\n}\n\nexport function NowBanners({ banners }: NowBannersProps): ReactNode {\n const { t } = useKaafilChrome();\n if (banners.length === 0) {\n return null;\n }\n return (\n <div className=\"kf-manager-now__banners\">\n {banners.map((banner) => (\n <div key={banner.id} className=\"kf-manager-now__banner\" data-tone={banner.tone}>\n <div className=\"kf-manager-now__banner-icon\">{TONE_ICON[banner.tone]()}</div>\n <div className=\"kf-manager-now__banner-body\">\n <p className=\"kf-manager-now__banner-title\">{t(banner.titleKey)}</p>\n {banner.subKey !== undefined ? (\n <p className=\"kf-manager-now__banner-sub\">\n {Object.entries(banner.subParams ?? {}).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, value),\n t(banner.subKey),\n )}\n </p>\n ) : null}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","'use client';\n\n// Today's still-open checklist items — a real gap this composite left\n// unrendered: `useManagerToday`'s own wire response already carries\n// `checklist: {id, sectionId, title, isMandatory}[] | null` (today's\n// still-open items, per that endpoint's own doc comment), and nothing\n// ever displayed it. No boilerplate counterpart exists for this region\n// (its own Now tree has no checklist card at all) — added because a real\n// field the wire sends should never go silently dropped, the identical\n// reasoning `ManagerTodayVehicles`/`NowVehicleCards` already follows for\n// `transport`.\n//\n// Plain read-only rows, never a toggleable/tappable completion control —\n// this composite has no write path for checklist items (that belongs to\n// the checklist module's own flow, not this read-only trip-day view).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\n\nexport interface NowChecklistItem {\n readonly id: string;\n readonly title: string;\n readonly isMandatory: boolean;\n}\n\nexport interface NowChecklistProps {\n readonly items: readonly NowChecklistItem[];\n}\n\nexport function NowChecklist({ items }: NowChecklistProps): ReactNode {\n const { t } = useKaafilChrome();\n if (items.length === 0) {\n return null;\n }\n return (\n <section aria-label={t('chrome.managerNow.checklist.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-now__eyebrow-row\">\n {t('chrome.managerNow.checklist.eyebrow')}\n </p>\n <div className=\"kf-manager-now__card kf-manager-now__list\">\n {items.map((item) => (\n <div key={item.id} className=\"kf-manager-now__checklist-row\">\n <p className=\"kf-manager-now__checklist-title\">{item.title}</p>\n {item.isMandatory ? (\n <span className=\"kf-eyebrow kf-manager-now__checklist-mandatory\">\n {t('chrome.managerNow.checklist.mandatory')}\n </span>\n ) : null}\n </div>\n ))}\n </div>\n </section>\n );\n}\n","'use client';\n\n// The trip's co-manager card — a real gap this composite left unfilled\n// (this build's own follow-up): `useManagers(tripRef)` (the trip's real\n// manager roster, `fullName`/`phone`/`role`/`isLead`) already existed and\n// went unused. Pixel reference: `frontend-boilerplate/components/manager/\n// now/now-co-manager.tsx`, read directly from source.\n//\n// STRUCTURAL GAP AGAINST THE BOILERPLATE, stated not hidden: the\n// boilerplate's own card shows an `activityLine` (\"Logged ₹1,200 · 4m\n// ago\") — no endpoint anywhere in this tree answers \"what did this OTHER\n// manager just do,\" so this card never fabricates one; it shows identity\n// and a call action only.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { PhoneIcon } from './icons';\n\nexport interface NowCoManagerPerson {\n readonly fullName: string;\n readonly phone: string | null;\n}\n\nexport interface NowCoManagerProps {\n readonly coManager: NowCoManagerPerson;\n}\n\nfunction initials(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n const first = parts[0] ?? '';\n const last = parts[parts.length - 1] ?? '';\n return `${first[0] ?? ''}${last[0] ?? ''}`.toUpperCase();\n}\n\nexport function NowCoManager({ coManager }: NowCoManagerProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <section aria-label={t('chrome.managerNow.coManager.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-now__eyebrow-row\">\n {t('chrome.managerNow.coManager.eyebrow')}\n </p>\n <div className=\"kf-manager-now__co-manager-card\">\n <span className=\"kf-manager-now__co-manager-avatar\" aria-hidden=\"true\">\n {initials(coManager.fullName)}\n </span>\n <p className=\"kf-manager-now__co-manager-name\">{coManager.fullName}</p>\n {coManager.phone !== null ? (\n <a\n href={`tel:${coManager.phone}`}\n aria-label={t('chrome.managerNow.coManager.call').replace('{name}', coManager.fullName)}\n className=\"kf-manager-now__co-manager-call\"\n >\n <PhoneIcon />\n </a>\n ) : null}\n </div>\n </section>\n );\n}\n","'use client';\n\n// The dark hero card — trip identity, phase pill, progress, and the four\n// module quick-links. Pixel reference:\n// `frontend-boilerplate/components/manager/now/now-hero.tsx`, read\n// directly from source. Colours re-derived onto this package's own\n// `--kf-*` tokens (`manager-now.css`'s own header states the mapping),\n// never the boilerplate's literal hex/rgba.\n//\n// `progressPct` is DERIVED by the caller from real `today.dayIndex` and\n// the real `trip.startDate`/`endDate` span — never a `progressPct` field\n// on the wire (the real engine response carries no such field, unlike the\n// boilerplate's own `ManagerNowHero`).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\n\nexport type ManagerNowPhase = 'PRE_DEPARTURE' | 'ON_TRIP' | 'POST_TRIP';\n\nconst PHASE_TONE: Record<ManagerNowPhase, 'predeparture' | 'active' | 'closing'> = {\n PRE_DEPARTURE: 'predeparture',\n ON_TRIP: 'active',\n POST_TRIP: 'closing',\n};\n\nconst PHASE_LABEL_KEY: Record<ManagerNowPhase, string> = {\n PRE_DEPARTURE: 'chrome.managerNow.hero.phase.preDeparture',\n ON_TRIP: 'chrome.managerNow.hero.phase.onTrip',\n POST_TRIP: 'chrome.managerNow.hero.phase.postTrip',\n};\n\nexport interface NowHeroProps {\n readonly code: string;\n readonly title: string;\n readonly sub: string;\n readonly phase: ManagerNowPhase;\n /** 0-100, clamped by the caller. */\n readonly progressPct: number;\n readonly onNavigateModule: (moduleKey: 'manifest' | 'rooming' | 'checklist' | 'docs') => void;\n}\n\nconst MODULE_KEYS = ['manifest', 'rooming', 'checklist', 'docs'] as const;\nconst MODULE_LABEL_KEY: Record<(typeof MODULE_KEYS)[number], string> = {\n manifest: 'chrome.managerNow.hero.tab.manifest',\n rooming: 'chrome.managerNow.hero.tab.rooming',\n checklist: 'chrome.managerNow.hero.tab.checklist',\n docs: 'chrome.managerNow.hero.tab.docs',\n};\n\nexport function NowHero({\n code,\n title,\n sub,\n phase,\n progressPct,\n onNavigateModule,\n}: NowHeroProps): ReactNode {\n const { t } = useKaafilChrome();\n const progress = Math.max(0, Math.min(100, progressPct));\n\n return (\n <section className=\"kf-manager-now__hero\" aria-label={t('chrome.managerNow.hero.ariaLabel')}>\n <div className=\"kf-manager-now__hero-top\">\n <p className=\"kf-manager-now__hero-code\">{code}</p>\n <span className=\"kf-manager-now__hero-pill\" data-tone={PHASE_TONE[phase]}>\n <span className=\"kf-manager-now__hero-pill-dot\" aria-hidden=\"true\" />\n {t(PHASE_LABEL_KEY[phase])}\n </span>\n </div>\n\n <p className=\"kf-manager-now__hero-title\">{title}</p>\n <p className=\"kf-manager-now__hero-sub\">{sub}</p>\n\n <div\n className=\"kf-manager-now__hero-progress\"\n role=\"progressbar\"\n aria-valuenow={progress}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={t('chrome.managerNow.hero.progressAriaLabel')}\n >\n <div\n className=\"kf-manager-now__hero-progress-fill\"\n style={{ inlineSize: `${progress}%` }}\n />\n </div>\n\n <div className=\"kf-manager-now__hero-tabs\">\n {MODULE_KEYS.map((key) => (\n <button\n key={key}\n type=\"button\"\n onClick={() => onNavigateModule(key)}\n className=\"kf-manager-now__hero-tab kf-press\"\n >\n {t(MODULE_LABEL_KEY[key])}\n </button>\n ))}\n </div>\n </section>\n );\n}\n","// `13-i18n-and-formatting.md §2.1` — timezone is an explicit input, never\n// the device's ambient one. Family-shared (`src/manager/internal/`), not\n// one composite's own `internal/` — both `ManagerNowSection` and\n// `ManagerTripSection` need it — but still scoped to this family alone\n// (each family owns its own formatting helpers, matching the \"no shared\n// /primitives\" v2 rule; contrast the traveller family's own\n// `KaafilShareView/internal/formatShareDate.ts#formatTimeOfDay`).\n\nconst FORMAT_CACHE = new Map<string, Intl.DateTimeFormat>();\n\n/** `09:00`, 24-hour, in `timezone` — never the reader's own device zone. */\nexport function formatTimeOfDay(isoDateTime: string, timezone: string): string {\n let formatter = FORMAT_CACHE.get(timezone);\n if (formatter === undefined) {\n formatter = new Intl.DateTimeFormat('en-GB', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n timeZone: timezone,\n });\n FORMAT_CACHE.set(timezone, formatter);\n }\n return formatter.format(new Date(isoDateTime));\n}\n","'use client';\n\n// Today's itinerary blocks. Pixel reference:\n// `frontend-boilerplate/components/manager/now/now-timeline.tsx`, read\n// directly from source.\n//\n// STRUCTURAL GAP AGAINST THE BOILERPLATE, stated not hidden: the real\n// `useManagerToday()` itinerary row is `{id, type, title, startTime,\n// endTime, timeState}` — a read-only aggregate with no per-item\n// `actions[]`/`alertPill` the boilerplate's own richer wire carries (that\n// data belongs to `itinerary`'s own mutate-capable module, not this\n// read-only trip-day view). Rows here are display-only: time + title + a\n// `timeState` treatment (now/done/upcoming), never an invented action\n// button.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatTimeOfDay } from '../../../../internal/formatTimeOfDay';\nimport { CheckIcon } from './icons';\n\nexport interface NowTimelineItem {\n readonly id: string;\n readonly title: string;\n readonly startTime: string | null;\n readonly timeState: 'upcoming' | 'now' | 'done';\n}\n\nexport interface NowTimelineProps {\n readonly items: readonly NowTimelineItem[];\n readonly timezone: string;\n}\n\nexport function NowTimeline({ items, timezone }: NowTimelineProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <section aria-label={t('chrome.managerNow.timeline.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-now__eyebrow-row\">\n {t('chrome.managerNow.timeline.eyebrow')}\n </p>\n {items.length > 0 ? (\n <div className=\"kf-manager-now__card kf-manager-now__list\">\n {items.map((item) => (\n <div key={item.id} className=\"kf-manager-now__timeline-row\" data-state={item.timeState}>\n <div className=\"kf-manager-now__timeline-time-col\">\n {item.timeState === 'now' ? (\n <p className=\"kf-manager-now__timeline-now-label\">\n {t('chrome.managerNow.timeline.now')}\n </p>\n ) : null}\n {item.startTime !== null ? (\n <p className=\"kf-manager-now__timeline-time\">\n {formatTimeOfDay(item.startTime, timezone)}\n </p>\n ) : null}\n </div>\n <p className=\"kf-manager-now__timeline-title\">{item.title}</p>\n {item.timeState === 'done' ? (\n <CheckIcon className=\"kf-manager-now__timeline-check\" />\n ) : null}\n </div>\n ))}\n </div>\n ) : (\n <div className=\"kf-manager-now__card kf-manager-now__timeline-empty\">\n {t('chrome.managerNow.timeline.noBlocks')}\n </div>\n )}\n </section>\n );\n}\n","'use client';\n\n// Today's spend/collections mini-cards. Pixel reference:\n// `frontend-boilerplate/components/manager/now/now-totals.tsx`, read\n// directly from source. Values are client-side sums\n// (`sumTodayTotals.ts` — this build's own scope decision #3), never a\n// server-provided total.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMoneyMinor } from '../../../../internal/formatMoney';\nimport type { TodayTotal } from './sumTodayTotals';\n\nexport interface NowTotalsProps {\n readonly spend: TodayTotal;\n readonly collections: TodayTotal;\n}\n\nexport function NowTotals({ spend, collections }: NowTotalsProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <section aria-label={t('chrome.managerNow.totals.ariaLabel')}>\n <div className=\"kf-eyebrow kf-manager-now__eyebrow-row\">\n {t('chrome.managerNow.totals.eyebrow')}\n </div>\n <div className=\"kf-manager-now__totals-grid\">\n <div className=\"kf-manager-now__total-card\">\n <p className=\"kf-eyebrow\">{t('chrome.managerNow.totals.spend')}</p>\n <p\n className=\"kf-manager-now__total-value\"\n data-muted={spend.count === 0 ? 'true' : undefined}\n >\n {formatMoneyMinor(spend.totalMinor, spend.currency)}\n </p>\n <p className=\"kf-manager-now__total-sub\">\n {spend.count === 0\n ? t('chrome.managerNow.totals.noSpend')\n : t('chrome.managerNow.totals.entries').replace('{count}', String(spend.count))}\n </p>\n </div>\n <div className=\"kf-manager-now__total-card\">\n <p className=\"kf-eyebrow\">{t('chrome.managerNow.totals.collections')}</p>\n <p\n className=\"kf-manager-now__total-value\"\n data-muted={collections.count === 0 ? 'true' : undefined}\n >\n {formatMoneyMinor(collections.totalMinor, collections.currency)}\n </p>\n <p className=\"kf-manager-now__total-sub\">\n {collections.count === 0\n ? t('chrome.managerNow.totals.noCollections')\n : t('chrome.managerNow.totals.entries').replace('{count}', String(collections.count))}\n </p>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\n// The post-trip closeout snapshot — real, previously-unsurfaced data. Once\n// a trip has ended, `NowHero`/`NowBanners`/`NowCoManager` alone leave the\n// page nearly blank (the real, honest reason: `useManagerToday`'s own\n// `'idle'` branch carries only `{trip, phase}` — no itinerary/checklist/\n// totals exist for a trip that isn't `ON_TRIP`). `useCloseout(tripRef)`\n// (already real, already built, previously never consumed by this\n// composite) has exactly what a manager cares about once a trip is over:\n// `financialSummary` (whole-TRIP totals — `closeout.ts`'s own doc: \"fully\n// DERIVED... always complete\", never a per-day sum like `NowTotals`), the\n// closing `stage`, and how many `blockers[]` remain before the trip can be\n// locked.\n//\n// Read-only here, deliberately: no handover/lock UI. Writing the closing\n// narrative or locking the trip is `ClosingDayFlow`'s own screen\n// (`04-closing-day.md`), out of this wave's scope (the plan's own \"one\n// composite at a time\" rule) — this card only shows the numbers and, when\n// something is still open, a nav-out via the existing `onNavigateModule`\n// callback (hard rule #9: still no router).\n//\n// Shown ONLY once `stage` is non-null — `closeout.ts`'s own doc: \"Null\n// until the trip has returned\" — so this never renders for a pre-departure\n// idle trip, which has nothing to close out yet.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMoneyMinor } from '../../../../internal/formatMoney';\n\nexport type CloseoutStage = 'RETURNED' | 'RESOLVING' | 'RECONCILED' | 'LOCKED';\n\nconst STAGE_TONE: Record<CloseoutStage, 'warn' | 'info' | 'positive'> = {\n RETURNED: 'warn',\n RESOLVING: 'warn',\n RECONCILED: 'info',\n LOCKED: 'positive',\n};\n\nconst STAGE_LABEL_KEY: Record<CloseoutStage, string> = {\n RETURNED: 'chrome.managerNow.closeout.stage.returned',\n RESOLVING: 'chrome.managerNow.closeout.stage.resolving',\n RECONCILED: 'chrome.managerNow.closeout.stage.reconciled',\n LOCKED: 'chrome.managerNow.closeout.stage.locked',\n};\n\nexport interface NowTripSummaryProps {\n readonly stage: CloseoutStage;\n readonly openBlockerCount: number;\n readonly currency: string;\n readonly collectedMinor: number;\n readonly spentMinor: number;\n readonly balanceDueMinor: number;\n readonly floatOutstandingMinor: number;\n readonly onViewCloseout: () => void;\n}\n\nexport function NowTripSummary({\n stage,\n openBlockerCount,\n currency,\n collectedMinor,\n spentMinor,\n balanceDueMinor,\n floatOutstandingMinor,\n onViewCloseout,\n}: NowTripSummaryProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <section aria-label={t('chrome.managerNow.closeout.ariaLabel')}>\n <div className=\"kf-manager-now__eyebrow-row\">\n <p className=\"kf-eyebrow\">{t('chrome.managerNow.closeout.eyebrow')}</p>\n <span className=\"kf-manager-now__closeout-stage\" data-tone={STAGE_TONE[stage]}>\n {t(STAGE_LABEL_KEY[stage])}\n </span>\n </div>\n <div className=\"kf-manager-now__card kf-manager-now__closeout\">\n <div className=\"kf-manager-now__closeout-grid\">\n <div className=\"kf-manager-now__closeout-cell\">\n <p className=\"kf-eyebrow\">{t('chrome.managerNow.closeout.collected')}</p>\n <p className=\"kf-manager-now__closeout-value\">\n {formatMoneyMinor(collectedMinor, currency)}\n </p>\n </div>\n <div className=\"kf-manager-now__closeout-cell\">\n <p className=\"kf-eyebrow\">{t('chrome.managerNow.closeout.spent')}</p>\n <p className=\"kf-manager-now__closeout-value\">\n {formatMoneyMinor(spentMinor, currency)}\n </p>\n </div>\n <div className=\"kf-manager-now__closeout-cell\">\n <p className=\"kf-eyebrow\">{t('chrome.managerNow.closeout.balanceDue')}</p>\n <p\n className=\"kf-manager-now__closeout-value\"\n data-tone={balanceDueMinor > 0 ? 'warn' : undefined}\n >\n {formatMoneyMinor(balanceDueMinor, currency)}\n </p>\n </div>\n <div className=\"kf-manager-now__closeout-cell\">\n <p className=\"kf-eyebrow\">{t('chrome.managerNow.closeout.floatOutstanding')}</p>\n <p\n className=\"kf-manager-now__closeout-value\"\n data-tone={floatOutstandingMinor !== 0 ? 'warn' : undefined}\n >\n {formatMoneyMinor(floatOutstandingMinor, currency)}\n </p>\n </div>\n </div>\n {openBlockerCount > 0 ? (\n <button\n type=\"button\"\n className=\"kf-manager-now__closeout-cta kf-press\"\n onClick={onViewCloseout}\n >\n {t('chrome.managerNow.closeout.openCount').replace('{count}', String(openBlockerCount))}\n </button>\n ) : null}\n </div>\n </section>\n );\n}\n","'use client';\n\n// Today's vehicles. Pixel reference:\n// `frontend-boilerplate/components/manager/now/now-vehicle-cards.tsx`,\n// read directly from source.\n//\n// The real `today.transport` row carries no `occupancyTone`/`vendorLabel`\n// the boilerplate's own richer wire does — occupancy TONE is a real\n// derivation off `fillCount`/`capacity` (full → accent, near-full → warn,\n// otherwise neutral), never a fabricated field; there is no vendor label\n// to show at all (omitted, not blanked).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { PhoneIcon } from './icons';\n\nexport interface NowVehicle {\n readonly id: string;\n readonly regNo: string;\n readonly label: string | null;\n readonly driverName: string | null;\n readonly driverPhone: string | null;\n readonly fillCount: number;\n readonly capacity: number;\n}\n\nexport interface NowVehicleCardsProps {\n readonly vehicles: readonly NowVehicle[];\n}\n\nfunction occupancyTone(fillCount: number, capacity: number): 'full' | 'near-full' | 'neutral' {\n if (capacity <= 0) {\n return 'neutral';\n }\n const ratio = fillCount / capacity;\n if (ratio >= 1) {\n return 'full';\n }\n if (ratio >= 0.8) {\n return 'near-full';\n }\n return 'neutral';\n}\n\nexport function NowVehicleCards({ vehicles }: NowVehicleCardsProps): ReactNode {\n const { t } = useKaafilChrome();\n if (vehicles.length === 0) {\n return null;\n }\n return (\n <section aria-label={t('chrome.managerNow.vehicles.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-now__eyebrow-row\">\n {t('chrome.managerNow.vehicles.eyebrow')}\n </p>\n <div className=\"kf-manager-now__vehicle-list\">\n {vehicles.map((vehicle) => (\n <div key={vehicle.id} className=\"kf-manager-now__vehicle-card\">\n <div className=\"kf-manager-now__vehicle-top\">\n <div className=\"kf-manager-now__vehicle-identity\">\n <p className=\"kf-manager-now__vehicle-reg\">{vehicle.regNo}</p>\n {vehicle.label !== null ? (\n <p className=\"kf-manager-now__vehicle-meta\">{vehicle.label}</p>\n ) : null}\n </div>\n <span\n className=\"kf-manager-now__vehicle-occupancy\"\n data-tone={occupancyTone(vehicle.fillCount, vehicle.capacity)}\n >\n {t('chrome.managerNow.vehicles.occupancy')\n .replace('{fill}', String(vehicle.fillCount))\n .replace('{capacity}', String(vehicle.capacity))}\n </span>\n </div>\n {vehicle.driverName !== null || vehicle.driverPhone !== null ? (\n <div className=\"kf-manager-now__vehicle-driver\">\n <p className=\"kf-manager-now__vehicle-driver-name\">\n {vehicle.driverName ?? t('chrome.managerNow.vehicles.driverFallback')}\n </p>\n {vehicle.driverPhone !== null ? (\n <a href={`tel:${vehicle.driverPhone}`} className=\"kf-manager-now__vehicle-call\">\n <PhoneIcon />\n {t('chrome.managerNow.vehicles.call')}\n </a>\n ) : null}\n </div>\n ) : null}\n </div>\n ))}\n </div>\n </section>\n );\n}\n","'use client';\n\n// The FAB's bottom sheet — three fixed actions, all callback-driven (no\n// router, hard rule #9). The boilerplate's own `QuickActionsSheet` treats\n// its three as FE-local/hardcoded too (not BE-supplied); \"Manage float\" is\n// this build's own addition, opening the same real `FloatMovementSheet`\n// `ManagerMoneySection`'s \"+\" menu already uses. Pixel reference:\n// `frontend-boilerplate/components/manager/now/quick-actions-sheet.tsx`,\n// read directly from source.\n//\n// NO \"Vendor check-in\" ACTION (removed, Vendors wave): verified against\n// `kaafil-engine` directly — no check-in/day-of-service/arrived concept\n// exists anywhere in the schema or the vendors module, not even as reserved\n// plumbing (unlike vendor rating, which at least has a flag/webhook/knob\n// reserved). The boilerplate's own action name had nothing real behind it\n// in this SDK; removed rather than left wired to nothing.\n\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\n\nexport interface QuickActionsSheetProps {\n readonly open: boolean;\n readonly onClose: () => void;\n /** Each action is hidden — never a disabled/greyed row — when its own\n * domain is dark, the same 404-shaped honesty `ManagerMoneySection`'s own\n * `AddMoneyMenuSheet` already holds. */\n readonly canLogExpense: boolean;\n readonly canCollectPayment: boolean;\n readonly canManageFloat: boolean;\n readonly onLogExpense: () => void;\n readonly onCollectPayment: () => void;\n readonly onManageFloat: () => void;\n}\n\nexport function QuickActionsSheet({\n open,\n onClose,\n canLogExpense,\n canCollectPayment,\n canManageFloat,\n onLogExpense,\n onCollectPayment,\n onManageFloat,\n}: QuickActionsSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n if (!open) {\n return null;\n }\n\n const actions: readonly { readonly labelKey: string; readonly onSelect: () => void }[] = [\n ...(canLogExpense\n ? [{ labelKey: 'chrome.managerNow.quickActions.logExpense', onSelect: onLogExpense }]\n : []),\n ...(canCollectPayment\n ? [{ labelKey: 'chrome.managerNow.quickActions.collectPayment', onSelect: onCollectPayment }]\n : []),\n ...(canManageFloat\n ? [{ labelKey: 'chrome.managerNow.quickActions.manageFloat', onSelect: onManageFloat }]\n : []),\n ];\n\n return (\n <div className=\"kf-manager-now__sheet-backdrop\">\n <div\n className=\"kf-manager-now__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerNow.quickActions.title')}\n >\n <div className=\"kf-manager-now__sheet-header\">\n <p className=\"kf-manager-now__sheet-title\">{t('chrome.managerNow.quickActions.title')}</p>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label={t('chrome.managerNow.quickActions.close')}\n className=\"kf-manager-now__sheet-close kf-press\"\n >\n ✕\n </button>\n </div>\n <div className=\"kf-manager-now__sheet-body\">\n {actions.map((action) => (\n <button\n key={action.labelKey}\n type=\"button\"\n className=\"kf-manager-now__sheet-action kf-press\"\n onClick={() => {\n action.onSelect();\n onClose();\n }}\n >\n {t(action.labelKey)}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","// Neither `expenses` nor `collections` has a server-side \"today\" filter or\n// total (verified against the engine — this build's own plan, decision\n// #3) — this file sums client-side over whatever page of rows the caller\n// already holds. `13-i18n-and-formatting.md §2.1`: the trip's own\n// timezone is an explicit input, never the device's — \"today\" is computed\n// by formatting each timestamp AND the server's own `serverTime` in that\n// SAME timezone and comparing the resulting calendar-day strings, never by\n// comparing raw `Date` objects (which would silently use the device's\n// local day for any date-only arithmetic).\n//\n// `currency` is the caller's own known trip currency (`useManagerMe()`'s\n// trip row — `13-i18n-and-formatting.md §1.5`: one trip, one currency),\n// never derived from the summed rows themselves — a zero-entry day still\n// has a real currency to render `\"₹0.00\"` against, not a bare dash.\n\nimport type { CollectionsReady } from '../../../../../core/hooks/useCollections.js';\nimport type { ExpenseDeltaRow } from '../../../../../core/hooks/useExpenses.js';\nimport { calendarDayKey } from './calendarDayKey';\n\ntype CollectionRow = CollectionsReady['collections'][number];\n\nexport interface TodayTotal {\n readonly totalMinor: number;\n readonly currency: string;\n readonly count: number;\n}\n\n/** Live (non-tombstone, non-voided) expense rows whose `spentAt` falls on\n * `serverTime`'s own calendar day in `timezone`. */\nexport function sumTodayExpenses(\n expenses: readonly ExpenseDeltaRow[],\n serverTime: string,\n timezone: string,\n currency: string,\n): TodayTotal {\n const todayKey = calendarDayKey(serverTime, timezone);\n let totalMinor = 0;\n let count = 0;\n for (const row of expenses) {\n if ('_tombstone' in row) {\n continue;\n }\n if (row.voidedAt !== null) {\n continue;\n }\n if (calendarDayKey(row.spentAt, timezone) !== todayKey) {\n continue;\n }\n totalMinor += row.amountMinor;\n count += 1;\n }\n return { totalMinor, currency, count };\n}\n\n/** Live (non-tombstone, non-voided) collection rows whose `collectedAt`\n * falls on `serverTime`'s own calendar day in `timezone`. */\nexport function sumTodayCollections(\n collections: readonly CollectionRow[],\n serverTime: string,\n timezone: string,\n currency: string,\n): TodayTotal {\n const todayKey = calendarDayKey(serverTime, timezone);\n let totalMinor = 0;\n let count = 0;\n for (const row of collections) {\n if ('_tombstone' in row) {\n continue;\n }\n if (row.voidedAt !== null) {\n continue;\n }\n if (calendarDayKey(row.collectedAt, timezone) !== todayKey) {\n continue;\n }\n totalMinor += row.amountMinor;\n count += 1;\n }\n return { totalMinor, currency, count };\n}\n","'use client';\n\n// `families/manager/12-office.md §TripHomeScreen`, DECISION OVERRIDE (this\n// build's own plan, decision #1): that spec's own text calls\n// `TripHomeScreen` a nav-only tile grid with \"no aggregation\" — overridden\n// in favour of a real, data-carrying `ManagerNowSection` reading the real\n// `GET /trips/{ref}/manager/today` aggregate (`useManagerToday`) merged\n// with `useManagerMe` (trip identity — the real engine's `manager-today`\n// response carries no trip name/code of its own, only `externalTripId`)\n// and `useExpenses`/`useCollections` (today's totals, summed client-side —\n// decision #3). Composed here rather than a new `/core` mega-hook, per\n// `00-decisions.md` U-021 (cited in this build's plan) — a page-\n// composition join, not a domain concern hard rule #2 requires living in\n// `/core`.\n//\n// The header (date/time eyebrow, notification bell via `useNotifications`,\n// avatar) is `ManagerShell`'s job, not this composite's — this section is\n// the SHELL'S BODY content only, matching `TripHomeScreen`'s own scope\n// (`12-office.md`: a screen, not a shell). The host composes\n// `<ManagerShell header={{...}}><ManagerNowSection .../></ManagerShell>`.\n//\n// `useKaafilClient()`-backed hooks (`useManagerMe`/`useManagerToday`) throw\n// when `SessionShell` is still in its \"opening\" window — same split gate/\n// ready component pattern `KaafilShareView.tsx` uses for the identical\n// reason. `useExpenses`/`useCollections` already tolerate an unready\n// offline engine internally (`useSnapshotList.ts`'s own tolerant\n// `useContext` read), so they need no gate of their own.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useCloseout } from '../../../../core/hooks/useCloseout.js';\nimport { useCollections } from '../../../../core/hooks/useCollections.js';\nimport { useExpenses } from '../../../../core/hooks/useExpenses.js';\nimport { useFloat } from '../../../../core/hooks/useFloat.js';\nimport { useManagerMe } from '../../../../core/hooks/useManagerMe.js';\nimport { useManagers } from '../../../../core/hooks/useManagers.js';\nimport { useManagerToday } from '../../../../core/hooks/useManagerToday.js';\nimport { useParties } from '../../../../core/hooks/useParties.js';\nimport { useSession } from '../../../../core/hooks/useSession.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { ManagerFab } from '../../../shell/ManagerFab/ManagerFab';\nimport { FloatMovementSheet } from '../../../shell/MoneyFlows/FloatMovementSheet';\nimport { LogExpenseSheet } from '../../../shell/MoneyFlows/LogExpenseSheet';\nimport { joinBalancesDue } from '../../../shell/MoneyFlows/moneyFormat';\nimport { RecordCollectionSheet } from '../../../shell/MoneyFlows/RecordCollectionSheet';\nimport { calendarDayKey } from './internal/calendarDayKey';\nimport { deriveManagerNowBanners } from './internal/deriveManagerNowBanners';\nimport { NowBanners } from './internal/NowBanners';\nimport { NowChecklist } from './internal/NowChecklist';\nimport { NowCoManager } from './internal/NowCoManager';\nimport type { ManagerNowPhase } from './internal/NowHero';\nimport { NowHero } from './internal/NowHero';\nimport { NowTimeline } from './internal/NowTimeline';\nimport { NowTotals } from './internal/NowTotals';\nimport { NowTripSummary } from './internal/NowTripSummary';\nimport { NowVehicleCards } from './internal/NowVehicleCards';\nimport { QuickActionsSheet } from './internal/QuickActionsSheet';\nimport { sumTodayCollections, sumTodayExpenses } from './internal/sumTodayTotals';\nimport type { ManagerNowSectionProps, ManagerTodayIdle } from './ManagerNowSection.types';\n\nexport function ManagerNowSection(props: ManagerNowSectionProps): ReactNode {\n const session = useSession();\n if (session.status !== 'authenticated') {\n return null;\n }\n return <ReadyManagerNowSection {...props} />;\n}\n\n/** 0-100. `today.dayIndex` is 0-based; the span is inclusive of both\n * endpoints (a 5-day trip's last day is `dayIndex === 4`). Real fields\n * only — never a `progressPct` the wire doesn't carry. */\nfunction deriveProgressPct(\n phase: ManagerNowPhase,\n dayIndex: number | undefined,\n startDate: string,\n endDate: string,\n timezone: string,\n): number {\n if (phase === 'PRE_DEPARTURE') {\n return 0;\n }\n if (phase === 'POST_TRIP') {\n return 100;\n }\n if (dayIndex === undefined) {\n return 0;\n }\n const startKey = calendarDayKey(startDate, timezone);\n const endKey = calendarDayKey(endDate, timezone);\n const totalDays =\n Math.round(\n (new Date(`${endKey}T00:00:00Z`).getTime() - new Date(`${startKey}T00:00:00Z`).getTime()) /\n 86_400_000,\n ) + 1;\n if (totalDays <= 0) {\n return 100;\n }\n return Math.round(((dayIndex + 1) / totalDays) * 100);\n}\n\n/** `{current}`/`{total}` day-count label — real `today.dayIndex` over the\n * real `trip.startDate`/`endDate` span, never a fabricated total. */\nfunction totalTripDays(startDate: string, endDate: string): number {\n return Math.round((new Date(endDate).getTime() - new Date(startDate).getTime()) / 86_400_000) + 1;\n}\n\nfunction ReadyManagerNowSection({\n tripRef,\n onNavigateModule,\n onLogExpense,\n onCollectPayment,\n idleView,\n style,\n}: ManagerNowSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const [sheetOpen, setSheetOpen] = useState(false);\n const [activeMoneySheet, setActiveMoneySheet] = useState<\n 'logExpense' | 'collectPayment' | 'manageFloat' | undefined\n >(undefined);\n\n const managerMe = useManagerMe();\n const today = useManagerToday(tripRef);\n const expenses = useExpenses(tripRef);\n const collections = useCollections(tripRef);\n const float = useFloat(tripRef);\n const parties = useParties(tripRef);\n const managers = useManagers(tripRef);\n const closeout = useCloseout(tripRef);\n\n if (today.status === 'loading' || managerMe.status === 'loading') {\n return <ManagerNowSkeleton style={style} />;\n }\n if (today.status === 'error' || managerMe.status === 'error') {\n return null;\n }\n\n const tripMeta = managerMe.trips.find((trip) => trip.tripRef === today.trip.externalTripId);\n const code = tripMeta?.code ?? today.trip.externalTripId;\n const title = tripMeta?.name ?? today.trip.externalTripId;\n // `COORDINATOR` (`ManagerRole`, real Prisma enum) is a read-only role on\n // this trip — the FAB/quick-actions sheet is the only WRITE surface this\n // section owns (log expense, collect payment, vendor check-in), so it's\n // the only thing gated here; every other region (hero nav chips, banners,\n // timeline, totals, vehicles) is already read-only for every role.\n const isReadOnly = tripMeta?.role === 'COORDINATOR';\n // Derived unconditionally, before the idle/engaged branch — the\n // departure-day rule fires PRECISELY on the idle branch (`kind: 'idle'`\n // is `useManagerToday`'s own answer for \"not ON_TRIP yet\", the engine's\n // own doc comment), so an idle-only early return here would silently\n // never show it (a real bug this build caught via its own Storybook\n // fixture: the \"departure-day banner\" story rendered no banner at all\n // until this derivation moved above the branch).\n const banners = deriveManagerNowBanners(today);\n // The roster has no per-row \"is this me\" flag, and `useManagerMe()`\n // exposes no id to match against (only `fullName`) — a real, stated\n // limitation, not hidden: this joins by full name, the only identity\n // signal available across the two reads. Correct for the common\n // (two-manager) case this card exists for; a same-named pair of\n // managers on one trip is the one edge case this join cannot resolve.\n // Derived unconditionally (like `banners` above) — the co-manager\n // relationship exists whether or not the trip has started, so both the\n // idle and engaged branches below render it.\n const coManager =\n managers.status === 'ready'\n ? managers.managers.find((row) => row.fullName !== managerMe.manager.fullName)\n : undefined;\n const currency = tripMeta?.currency ?? 'INR';\n // `stage` is null until the trip has actually returned (`closeout.ts`'s\n // own doc comment) — this card only ever renders once that's true, which\n // in practice means only in the `POST_TRIP` idle reading below. Read-only\n // snapshot of already-real, already-built `useCloseout` data this\n // composite never consumed before.\n const closeoutAggregate = closeout.status === 'ready' ? closeout.aggregate : undefined;\n\n if (today.kind === 'idle' || today.kind === 'trek') {\n const idleReading: ManagerTodayIdle = { kind: 'idle', trip: today.trip, phase: today.phase };\n if (idleView !== undefined) {\n return typeof idleView === 'function' ? (idleView(idleReading) as ReactNode) : idleView;\n }\n return (\n <div className=\"kf-manager-now\" style={tokenStyle(style)}>\n <NowHero\n code={code}\n title={title}\n sub={t(\n today.phase === 'POST_TRIP'\n ? 'chrome.managerNow.hero.postTripSub'\n : 'chrome.managerNow.hero.preDepartureSub',\n )}\n phase={today.phase}\n progressPct={deriveProgressPct(\n today.phase,\n undefined,\n today.trip.startDate,\n today.trip.endDate,\n today.trip.timezone,\n )}\n onNavigateModule={onNavigateModule}\n />\n <NowBanners banners={banners} />\n {closeoutAggregate?.stage != null ? (\n <NowTripSummary\n stage={closeoutAggregate.stage}\n openBlockerCount={closeoutAggregate.blockers.length}\n currency={closeoutAggregate.financialSummary.currency}\n collectedMinor={closeoutAggregate.financialSummary.collectedMinor}\n spentMinor={closeoutAggregate.financialSummary.spentMinor}\n balanceDueMinor={closeoutAggregate.financialSummary.balanceDueMinor}\n floatOutstandingMinor={closeoutAggregate.financialSummary.floatOutstandingMinor}\n onViewCloseout={() => onNavigateModule('closing-day')}\n />\n ) : null}\n {coManager !== undefined ? (\n <NowCoManager coManager={{ fullName: coManager.fullName, phone: coManager.phone }} />\n ) : null}\n </div>\n );\n }\n\n const spend = sumTodayExpenses(\n expenses.status === 'ready' ? expenses.expenses : [],\n today.syncedAt,\n today.trip.timezone,\n currency,\n );\n const collected = sumTodayCollections(\n collections.status === 'ready' ? collections.collections : [],\n today.syncedAt,\n today.trip.timezone,\n currency,\n );\n\n // Each money sheet is only ever offered — and only ever rendered —\n // against its OWN lit domain, the same independent-per-domain honesty\n // `ManagerMoneySection`'s own `AddMoneyMenuSheet` already holds; a dark\n // capability hides its Quick Action row entirely rather than opening a\n // sheet with nothing real to submit to.\n const expensesReady = expenses.status === 'ready' ? expenses : undefined;\n const collectionsReady = collections.status === 'ready' ? collections : undefined;\n const floatReady = float.status === 'ready' ? float : undefined;\n const rosterRows = parties.status === 'ready' ? parties.tripRoster.rows : [];\n const floatRow = floatReady?.summary.rows[0];\n const balancesDueRows =\n collectionsReady !== undefined\n ? joinBalancesDue(collectionsReady.eligible.rows, rosterRows)\n : [];\n const canLogExpense = expensesReady !== undefined;\n const canCollectPayment = collectionsReady !== undefined && rosterRows.length > 0;\n const canManageFloat = floatReady !== undefined && floatRow !== undefined;\n\n return (\n <div className=\"kf-manager-now\" style={tokenStyle(style)}>\n <NowHero\n code={code}\n title={title}\n sub={t('chrome.managerNow.hero.dayLabel')\n .replace('{current}', String(today.today.dayIndex + 1))\n .replace('{total}', String(totalTripDays(today.trip.startDate, today.trip.endDate)))}\n phase={today.phase}\n progressPct={deriveProgressPct(\n today.phase,\n today.today.dayIndex,\n today.trip.startDate,\n today.trip.endDate,\n today.trip.timezone,\n )}\n onNavigateModule={onNavigateModule}\n />\n\n <NowBanners banners={banners} />\n\n {today.transport !== null ? <NowVehicleCards vehicles={today.transport} /> : null}\n\n {today.itinerary !== null ? (\n <NowTimeline items={today.itinerary} timezone={today.trip.timezone} />\n ) : null}\n\n {today.checklist !== null ? <NowChecklist items={today.checklist} /> : null}\n\n <NowTotals spend={spend} collections={collected} />\n\n {coManager !== undefined ? (\n <NowCoManager coManager={{ fullName: coManager.fullName, phone: coManager.phone }} />\n ) : null}\n\n {isReadOnly ? null : (\n <>\n <ManagerFab\n onClick={() => setSheetOpen(true)}\n label={t('chrome.managerNow.quickActions.title')}\n />\n\n <QuickActionsSheet\n open={sheetOpen}\n onClose={() => setSheetOpen(false)}\n canLogExpense={canLogExpense}\n canCollectPayment={canCollectPayment}\n canManageFloat={canManageFloat}\n onLogExpense={() => {\n setSheetOpen(false);\n setActiveMoneySheet('logExpense');\n }}\n onCollectPayment={() => {\n setSheetOpen(false);\n setActiveMoneySheet('collectPayment');\n }}\n onManageFloat={() => {\n setSheetOpen(false);\n setActiveMoneySheet('manageFloat');\n }}\n />\n\n {expensesReady !== undefined ? (\n <LogExpenseSheet\n open={activeMoneySheet === 'logExpense'}\n tripRef={tripRef}\n onSubmit={async (input) => {\n await expensesReady.log(input);\n if (input.paymentMode === 'FLOAT_CASH' && floatReady !== undefined) {\n void floatReady.summary.refresh();\n }\n onLogExpense();\n }}\n onClose={() => setActiveMoneySheet(undefined)}\n />\n ) : null}\n\n {collectionsReady !== undefined ? (\n <RecordCollectionSheet\n open={activeMoneySheet === 'collectPayment'}\n preselected={undefined}\n roster={rosterRows}\n balancesDue={balancesDueRows}\n onSubmit={async (input) => {\n await collectionsReady.record(input);\n onCollectPayment();\n }}\n onClose={() => setActiveMoneySheet(undefined)}\n />\n ) : null}\n\n {floatReady !== undefined ? (\n <FloatMovementSheet\n open={activeMoneySheet === 'manageFloat'}\n currentBalanceMinor={floatRow?.balanceMinor}\n currency={floatRow?.currency ?? currency}\n onReturn={async (input) => {\n if (floatRow === undefined) return;\n await floatReady.return({ managerId: floatRow.managerId, ...input });\n }}\n onAdjust={async (input) => {\n if (floatRow === undefined) return;\n await floatReady.adjust({ managerId: floatRow.managerId, ...input });\n }}\n onClose={() => setActiveMoneySheet(undefined)}\n />\n ) : null}\n </>\n )}\n </div>\n );\n}\n\nfunction ManagerNowSkeleton({\n style,\n}: {\n readonly style: ManagerNowSectionProps['style'];\n}): ReactNode {\n return (\n <div className=\"kf-manager-now__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-now__skeleton-block\" />\n <div className=\"kf-manager-now__skeleton-line\" />\n <div className=\"kf-manager-now__skeleton-line kf-manager-now__skeleton-line--short\" />\n </div>\n );\n}\n","'use client';\n\n// Today's still-open checklist items — `useManagerToday(tripRef)`'s own\n// `checklist[]` (trip-wide when an item carries no day-offset, per that\n// hook's own doc comment). Read-only preview — the real Checklist tab owns\n// the toggle/CRUD flow.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerOverviewToday } from '../ManagerOverviewSection.types';\n\nexport interface ChecklistPreviewProps {\n readonly checklist: ManagerOverviewToday['checklist'];\n}\n\nexport function ChecklistPreview({ checklist }: ChecklistPreviewProps): ReactNode {\n const { t } = useKaafilChrome();\n if (checklist === null) {\n return null;\n }\n\n return (\n <section\n className=\"kf-manager-overview__card\"\n aria-label={t('chrome.managerTrip.overview.checklist.eyebrow')}\n >\n <p className=\"kf-eyebrow kf-manager-overview__eyebrow\">\n {t('chrome.managerTrip.overview.checklist.eyebrow')}\n </p>\n {checklist.length === 0 ? (\n <p className=\"kf-manager-overview__empty\">\n {t('chrome.managerTrip.overview.checklist.empty')}\n </p>\n ) : (\n <ul className=\"kf-manager-overview__list\">\n {checklist.map((item) => (\n <li key={item.id} className=\"kf-manager-overview__row\">\n <span className=\"kf-manager-overview__row-title\">{item.title}</span>\n {item.isMandatory ? (\n <span className=\"kf-eyebrow kf-manager-overview__mandatory\">\n {t('chrome.managerTrip.overview.checklist.required')}\n </span>\n ) : null}\n </li>\n ))}\n </ul>\n )}\n </section>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function CheckIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nexport function PhoneIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92Z\" />\n </svg>\n );\n}\n","'use client';\n\n// The co-manager card — `useManagers(tripRef)`'s own real roster\n// (independently wired here; composites don't cross-import each other's\n// `internal/`). Picks the first non-lead row when more than one manager is\n// on the trip; this composite has no `useManagerMe()` of its own to exclude\n// \"self\" by identity (that's `ManagerNowSection`'s own, narrower need) —\n// scoped honestly to what a single `tripRef` prop can resolve. Visual\n// treatment mirrors `ManagerNowSection`'s own `NowCoManager` (this\n// session's own richer reference — an avatar-initials circle, not bare\n// text).\n\nimport type { ReactNode } from 'react';\nimport type { TripManagerRow } from '../../../../../core/hooks/useManagers.js';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { PhoneIcon } from './icons';\n\nexport interface CoManagerCardProps {\n readonly managers: readonly TripManagerRow[];\n}\n\nfunction initials(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n return `${parts[0]?.[0] ?? ''}${parts[parts.length - 1]?.[0] ?? ''}`.toUpperCase();\n}\n\nexport function CoManagerCard({ managers }: CoManagerCardProps): ReactNode {\n const { t } = useKaafilChrome();\n const coManager =\n managers.length > 1 ? (managers.find((row) => !row.isLead) ?? managers[1]) : undefined;\n\n return (\n <section aria-label={t('chrome.managerTrip.overview.coManager.eyebrow')}>\n <p className=\"kf-eyebrow kf-manager-overview__eyebrow\">\n {t('chrome.managerTrip.overview.coManager.eyebrow')}\n </p>\n {coManager === undefined ? (\n <div className=\"kf-manager-overview__card\">\n <p className=\"kf-manager-overview__empty\">\n {t('chrome.managerTrip.overview.coManager.empty')}\n </p>\n </div>\n ) : (\n <div className=\"kf-manager-overview__co-manager-card\">\n <span className=\"kf-manager-overview__co-manager-avatar\" aria-hidden=\"true\">\n {initials(coManager.fullName)}\n </span>\n <p className=\"kf-manager-overview__co-manager-name\">{coManager.fullName}</p>\n {coManager.phone !== null ? (\n <a\n className=\"kf-manager-overview__co-manager-call kf-press\"\n href={`tel:${coManager.phone}`}\n aria-label={t('chrome.managerTrip.overview.coManager.call').replace(\n '{name}',\n coManager.fullName,\n )}\n >\n <PhoneIcon aria-hidden=\"true\" />\n </a>\n ) : null}\n </div>\n )}\n </section>\n );\n}\n","// `13-i18n-and-formatting.md`'s \"never the ambient browser locale\" rule —\n// same fixed `'en-GB'` convention Pickups' own `formatPickupTime.ts`\n// established for a server-supplied ISO timestamp.\nconst TIME_FORMATTER = new Intl.DateTimeFormat('en-GB', { hour: '2-digit', minute: '2-digit' });\n\nexport function formatOverviewTime(iso: string): string {\n return TIME_FORMATTER.format(new Date(iso));\n}\n","'use client';\n\n// Today's itinerary rows — `useManagerToday(tripRef)`'s own `itinerary[]`\n// (`null` when the itinerary domain itself is dark for the agency; that\n// nullability IS the capability signal here, per `useManagerToday.ts`'s own\n// header — no separate `useCapability()` read). Visual treatment mirrors\n// `ManagerNowSection`'s own `NowTimeline` (this session's own richer\n// reference — accent-tinted \"now\" row with a left accent bar, a dimmed\n// checkmark-done row, mono time column) rather than a flat text list.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerOverviewToday } from '../ManagerOverviewSection.types';\nimport { formatOverviewTime } from './formatOverviewTime';\nimport { CheckIcon } from './icons';\n\nexport interface ItineraryPreviewProps {\n readonly itinerary: ManagerOverviewToday['itinerary'];\n}\n\nexport function ItineraryPreview({ itinerary }: ItineraryPreviewProps): ReactNode {\n const { t } = useKaafilChrome();\n if (itinerary === null) {\n return null;\n }\n\n return (\n <section\n className=\"kf-manager-overview__card\"\n aria-label={t('chrome.managerTrip.overview.itinerary.eyebrow')}\n >\n <p className=\"kf-eyebrow kf-manager-overview__eyebrow\">\n {t('chrome.managerTrip.overview.itinerary.eyebrow')}\n </p>\n {itinerary.length === 0 ? (\n <p className=\"kf-manager-overview__empty\">\n {t('chrome.managerTrip.overview.itinerary.empty')}\n </p>\n ) : (\n <div className=\"kf-manager-overview__timeline\">\n {itinerary.map((item) => (\n <div\n key={item.id}\n className=\"kf-manager-overview__timeline-row\"\n data-time-state={item.timeState}\n >\n <div className=\"kf-manager-overview__timeline-time-col\">\n {item.timeState === 'now' ? (\n <p className=\"kf-manager-overview__timeline-now-label\">\n {t('chrome.managerTrip.overview.itinerary.now')}\n </p>\n ) : null}\n {item.startTime !== null ? (\n <p className=\"kf-manager-overview__timeline-time\">\n {formatOverviewTime(item.startTime)}\n </p>\n ) : null}\n </div>\n <p className=\"kf-manager-overview__timeline-title\">{item.title}</p>\n {item.timeState === 'done' ? (\n <CheckIcon className=\"kf-manager-overview__timeline-check\" />\n ) : null}\n </div>\n ))}\n </div>\n )}\n </section>\n );\n}\n","'use client';\n\n// Per-stop boarding summary — `useManagerToday(tripRef)`'s own `pickups[]`\n// (per-stop `boardedCount`/`expectedCount`/`status`, distinct from the full\n// `usePickups()` read the real Pickups tab owns). Read-only — no board/\n// correct/close action lives here.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerOverviewToday } from '../ManagerOverviewSection.types';\nimport { formatOverviewTime } from './formatOverviewTime';\n\nexport interface PickupsSummaryProps {\n readonly pickups: ManagerOverviewToday['pickups'];\n}\n\nexport function PickupsSummary({ pickups }: PickupsSummaryProps): ReactNode {\n const { t } = useKaafilChrome();\n if (pickups === null) {\n return null;\n }\n\n return (\n <section\n className=\"kf-manager-overview__card\"\n aria-label={t('chrome.managerTrip.overview.pickups.eyebrow')}\n >\n <p className=\"kf-eyebrow kf-manager-overview__eyebrow\">\n {t('chrome.managerTrip.overview.pickups.eyebrow')}\n </p>\n {pickups.length === 0 ? (\n <p className=\"kf-manager-overview__empty\">\n {t('chrome.managerTrip.overview.pickups.empty')}\n </p>\n ) : (\n <ul className=\"kf-manager-overview__list\">\n {pickups.map((stop) => (\n <li key={stop.id} className=\"kf-manager-overview__row\">\n <span className=\"kf-manager-overview__row-body\">\n <span className=\"kf-manager-overview__row-title\">{stop.name}</span>\n <span className=\"kf-manager-overview__row-meta\">\n {formatOverviewTime(stop.scheduledTime)} ·{' '}\n {t('chrome.managerTrip.overview.pickups.boardedOfExpected')\n .replace('{boarded}', String(stop.boardedCount))\n .replace('{expected}', String(stop.expectedCount))}\n </span>\n </span>\n <span className=\"kf-manager-overview__status-badge\" data-status={stop.status}>\n {stop.status === 'CLOSED'\n ? t('chrome.managerTrip.overview.pickups.closed')\n : t('chrome.managerTrip.overview.pickups.open')}\n </span>\n </li>\n ))}\n </ul>\n )}\n </section>\n );\n}\n","'use client';\n\n// Rosters/assigned/unassigned stat row — `useManagerToday(tripRef)`'s own\n// `rooming{rosterCount,assignedCount,unassignedCount}`, `null` when the\n// rooming domain itself is dark. A two-cell stat grid — the same visual\n// language `ManagerCloseoutSection`'s own financial strip uses this wave —\n// rather than a stack of plain text lines.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerOverviewToday } from '../ManagerOverviewSection.types';\n\nexport interface RoomingSummaryProps {\n readonly rooming: ManagerOverviewToday['rooming'];\n}\n\nexport function RoomingSummary({ rooming }: RoomingSummaryProps): ReactNode {\n const { t } = useKaafilChrome();\n if (rooming === null) {\n return null;\n }\n\n return (\n <section\n className=\"kf-manager-overview__card\"\n aria-label={t('chrome.managerTrip.overview.rooming.eyebrow')}\n >\n <p className=\"kf-eyebrow kf-manager-overview__eyebrow\">\n {t('chrome.managerTrip.overview.rooming.eyebrow')}\n </p>\n <div className=\"kf-manager-overview__stat-grid\">\n <div className=\"kf-manager-overview__stat-cell\">\n <p className=\"kf-manager-overview__stat-cell-label\">\n {t('chrome.managerTrip.overview.rooming.assignedLabel')}\n </p>\n <p className=\"kf-manager-overview__stat-cell-value\">\n {rooming.assignedCount}\n <span className=\"kf-manager-overview__stat-cell-value-of\">/{rooming.rosterCount}</span>\n </p>\n </div>\n <div className=\"kf-manager-overview__stat-cell\">\n <p className=\"kf-manager-overview__stat-cell-label\">\n {t('chrome.managerTrip.overview.rooming.unassignedLabel')}\n </p>\n <p\n className=\"kf-manager-overview__stat-cell-value\"\n data-tone={rooming.unassignedCount > 0 ? 'warn' : undefined}\n >\n {rooming.unassignedCount}\n </p>\n </div>\n </div>\n </section>\n );\n}\n","'use client';\n\n// Vehicle/driver rows — `useManagerToday(tripRef)`'s own `transport[]`,\n// `null` when the seating/transport domain itself is dark. Visual treatment\n// mirrors `ManagerNowSection`'s own `NowVehicleCards` (this session's own\n// richer reference — one card per vehicle, a real occupancy-tone pill\n// derived from `fillCount`/`capacity`, a labelled driver-call button)\n// rather than a flat text row.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerOverviewToday } from '../ManagerOverviewSection.types';\nimport { PhoneIcon } from './icons';\n\nexport interface TransportSummaryProps {\n readonly transport: ManagerOverviewToday['transport'];\n}\n\n/** Real derivation off `fillCount`/`capacity` — never a fabricated field\n * (`NowVehicleCards.tsx`'s own precedent for this exact tone rule). */\nfunction occupancyTone(fillCount: number, capacity: number): 'full' | 'near-full' | 'neutral' {\n if (capacity <= 0) {\n return 'neutral';\n }\n const ratio = fillCount / capacity;\n if (ratio >= 1) {\n return 'full';\n }\n if (ratio >= 0.8) {\n return 'near-full';\n }\n return 'neutral';\n}\n\nexport function TransportSummary({ transport }: TransportSummaryProps): ReactNode {\n const { t } = useKaafilChrome();\n if (transport === null) {\n return null;\n }\n\n return (\n <section aria-label={t('chrome.managerTrip.overview.transport.eyebrow')}>\n <p className=\"kf-eyebrow kf-manager-overview__eyebrow\">\n {t('chrome.managerTrip.overview.transport.eyebrow')}\n </p>\n {transport.length === 0 ? (\n <div className=\"kf-manager-overview__card\">\n <p className=\"kf-manager-overview__empty\">\n {t('chrome.managerTrip.overview.transport.empty')}\n </p>\n </div>\n ) : (\n <div className=\"kf-manager-overview__vehicle-list\">\n {transport.map((vehicle) => (\n <div key={vehicle.id} className=\"kf-manager-overview__vehicle-card\">\n <div className=\"kf-manager-overview__vehicle-top\">\n <div className=\"kf-manager-overview__vehicle-identity\">\n <p className=\"kf-manager-overview__vehicle-reg\">{vehicle.regNo}</p>\n {vehicle.label !== null ? (\n <p className=\"kf-manager-overview__vehicle-meta\">{vehicle.label}</p>\n ) : null}\n </div>\n <span\n className=\"kf-manager-overview__vehicle-occupancy\"\n data-tone={occupancyTone(vehicle.fillCount, vehicle.capacity)}\n >\n {t('chrome.managerTrip.overview.transport.fillCount')\n .replace('{fill}', String(vehicle.fillCount))\n .replace('{capacity}', String(vehicle.capacity))}\n </span>\n </div>\n {vehicle.driverName !== null || vehicle.driverPhone !== null ? (\n <div className=\"kf-manager-overview__vehicle-driver\">\n <p className=\"kf-manager-overview__vehicle-driver-name\">\n {vehicle.driverName ??\n t('chrome.managerTrip.overview.transport.driverFallback')}\n </p>\n {vehicle.driverPhone !== null ? (\n <a\n href={`tel:${vehicle.driverPhone}`}\n className=\"kf-manager-overview__vehicle-call\"\n >\n <PhoneIcon />\n {t('chrome.managerTrip.overview.transport.call')}\n </a>\n ) : null}\n </div>\n ) : null}\n </div>\n ))}\n </div>\n )}\n </section>\n );\n}\n","'use client';\n\n// The Overview tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'overview'` tab panel\n// (TREK trips only, per `computeTripTabs.ts`). `useManagerToday(tripRef)`\n// (already real, already backing `ManagerNowSection`) is the primary read;\n// `useManagers(tripRef)` backs the co-manager card. See this composite's\n// own `.types.ts` header for why this is built data-first rather than\n// spec-first — there is no manager-family FRD for \"Overview.\"\n//\n// A GENUINE DASHBOARD, NOT A DUPLICATE OF \"NOW\" — `ManagerNowSection` is\n// hyper-focused on right-now (today's single next item, urgent banners);\n// this composite renders the WHOLE `'trek'`-kind payload — itinerary,\n// checklist, pickups, rooming, transport, `trekPhase` — none of which\n// `ManagerNowSection`'s own `kind === 'trek'` branch currently surfaces\n// (that composite lumps `'trek'` into the same bare rendering as `'idle'` —\n// a real, separate gap this composite does not fix, since it is a NEW,\n// independent read of the same hook, not a patch to that one).\n//\n// HONESTLY OUT OF SCOPE — no real field backs these: any diet/age\n// breakdown, `difficulty`/`fitnessRequirement`/`whatToBring` (the\n// boilerplate's own `TrekOverviewPanel` mockup fields — zero matches\n// anywhere in `kaafil-js/src/generated/schema.d.ts`, confirmed this\n// session).\n\nimport type { ReactNode } from 'react';\nimport { useManagers } from '../../../../core/hooks/useManagers.js';\nimport { useManagerToday } from '../../../../core/hooks/useManagerToday.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { ChecklistPreview } from './internal/ChecklistPreview';\nimport { CoManagerCard } from './internal/CoManagerCard';\nimport { ItineraryPreview } from './internal/ItineraryPreview';\nimport { PickupsSummary } from './internal/PickupsSummary';\nimport { RoomingSummary } from './internal/RoomingSummary';\nimport { TransportSummary } from './internal/TransportSummary';\nimport type { ManagerOverviewSectionProps } from './ManagerOverviewSection.types';\n\n// Distinct wording from `TREK_PHASE_LABEL_KEY` below (own namespace, own\n// keys) — a trek carries BOTH `phase` (the trip-wide PRE/ON/POST milestone)\n// and `trekPhase` (treks' own finer boarding-readiness phase) as two real,\n// independently-moving fields on the same wire response; reusing one\n// label set for both produced a visibly duplicate badge (\"On trek\" twice)\n// caught live in the sample app this session.\nconst PHASE_LABEL_KEY: Record<string, string> = {\n PRE_DEPARTURE: 'chrome.managerTrip.overview.phase.preDeparture',\n ON_TRIP: 'chrome.managerTrip.overview.phase.onTrip',\n POST_TRIP: 'chrome.managerTrip.overview.phase.postTrip',\n};\n\nconst TREK_PHASE_LABEL_KEY: Record<string, string> = {\n pre_departure: 'chrome.managerTrip.overview.trekPhase.pre_departure',\n boarding: 'chrome.managerTrip.overview.trekPhase.boarding',\n in_trek: 'chrome.managerTrip.overview.trekPhase.in_trek',\n closing: 'chrome.managerTrip.overview.trekPhase.closing',\n};\n\nexport function ManagerOverviewSection({ tripRef, style }: ManagerOverviewSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const today = useManagerToday(tripRef);\n const managers = useManagers(tripRef);\n\n if (today.status === 'loading') {\n return (\n <div className=\"kf-manager-overview__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-overview__skeleton-line\" />\n <div className=\"kf-manager-overview__skeleton-line\" />\n <div className=\"kf-manager-overview__skeleton-line kf-manager-overview__skeleton-line--short\" />\n </div>\n );\n }\n\n if (today.status === 'error' || today.kind === 'idle') {\n return (\n <div className=\"kf-manager-overview\" style={tokenStyle(style)}>\n <p className=\"kf-manager-overview__idle\">{t('chrome.managerTrip.overview.title')}</p>\n </div>\n );\n }\n\n return (\n <div className=\"kf-manager-overview\" style={tokenStyle(style)}>\n <div className=\"kf-manager-overview__header\">\n <span className=\"kf-manager-overview__phase-badge\">\n {t(PHASE_LABEL_KEY[today.phase] ?? 'chrome.managerTrip.overview.phase.preDeparture')}\n </span>\n {today.kind === 'trek' && today.trekPhase !== null ? (\n <span className=\"kf-manager-overview__phase-badge\" data-tone=\"accent\">\n {t(\n TREK_PHASE_LABEL_KEY[today.trekPhase] ??\n 'chrome.managerTrip.overview.trekPhase.pre_departure',\n )}\n </span>\n ) : null}\n <span className=\"kf-manager-overview__day-label\">\n {t('chrome.managerTrip.overview.dayLabel').replace(\n '{day}',\n String(today.today.dayIndex + 1),\n )}\n </span>\n </div>\n\n <ItineraryPreview itinerary={today.itinerary} />\n <ChecklistPreview checklist={today.checklist} />\n <PickupsSummary pickups={today.pickups} />\n <RoomingSummary rooming={today.rooming} />\n <TransportSummary transport={today.transport} />\n {managers.status === 'ready' ? <CoManagerCard managers={managers.managers} /> : null}\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function CheckIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n\nexport function BackIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n );\n}\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n\nexport function PhoneIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92Z\" />\n </svg>\n );\n}\n\nexport function EditIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 3a2.85 2.85 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n );\n}\n\nexport function WarningIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0Z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n );\n}\n","'use client';\n\n// The close-stop flow — `pickups.close`'s own real two-policy request\n// (`ClosePickupStopRequest: {resolutions?, confirm?, confirmedHeadCount?,\n// note?}`), given a real UI instead of the boilerplate's bare, unconfirmed\n// button tap (a deliberate improvement the user's own instruction allows —\n// \"if need to improve just do that\" — closing a stop is a hard,\n// non-reversible transition with no force-close override at any tier).\n//\n// TRIP policy: every `PENDING` traveller must be resolved (boarded or\n// no-show) before the close action enables — `resolutions[]`. TREK policy:\n// only gated when short (`boardedCount < expectedCount`) — a headcount\n// confirm step (`confirm: true` + `confirmedHeadCount`); a fully-boarded\n// TREK stop closes on a single tap, same as the boilerplate's own feel for\n// the common case.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type {\n PickupManifestStopRow,\n PickupManifestTravellerRow,\n} from '../ManagerPickupsSection.types';\nimport { CloseIcon } from './icons';\n\nexport interface CloseStopResolution {\n readonly travellerId: string;\n readonly status: 'BOARDED' | 'NO_SHOW';\n}\n\nexport interface CloseStopSheetProps {\n readonly stopRow: PickupManifestStopRow;\n readonly eventType: 'TRIP' | 'TREK';\n readonly pending: boolean;\n readonly onClose: (input: {\n readonly resolutions?: readonly CloseStopResolution[];\n readonly confirm?: boolean;\n readonly confirmedHeadCount?: number;\n }) => void;\n readonly onCancel: () => void;\n}\n\nexport function CloseStopSheet({\n stopRow,\n eventType,\n pending,\n onClose,\n onCancel,\n}: CloseStopSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const { stop, travellers } = stopRow;\n const pendingTravellers = travellers.filter((row) => row.status === 'PENDING');\n const isShort = stop.boardedCount < stop.expectedCount;\n\n const [resolutions, setResolutions] = useState<Record<string, 'BOARDED' | 'NO_SHOW'>>({});\n const [headCount, setHeadCount] = useState(stop.boardedCount);\n\n const tripReady =\n eventType === 'TRIP' &&\n pendingTravellers.every((row) => resolutions[row.travellerId] !== undefined);\n const trekReady = eventType === 'TREK';\n const canClose = eventType === 'TRIP' ? tripReady : trekReady;\n\n function handleClose(): void {\n if (eventType === 'TRIP') {\n onClose({\n resolutions: pendingTravellers.map((row) => ({\n travellerId: row.travellerId,\n status: resolutions[row.travellerId] ?? 'NO_SHOW',\n })),\n });\n return;\n }\n if (isShort) {\n onClose({ confirm: true, confirmedHeadCount: headCount });\n return;\n }\n onClose({});\n }\n\n return (\n <div className=\"kf-manager-pickups__sheet-backdrop\">\n <div\n className=\"kf-manager-pickups__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.pickups.closeStop.title')}\n >\n <div className=\"kf-manager-pickups__sheet-header\">\n <p className=\"kf-manager-pickups__sheet-title\">\n {t('chrome.managerTrip.pickups.closeStop.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-pickups__sheet-close kf-press\"\n onClick={onCancel}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {eventType === 'TRIP' ? (\n pendingTravellers.length === 0 ? (\n <p className=\"kf-manager-pickups__hint-copy\">\n {t('chrome.managerTrip.pickups.closeStop.allResolved')}\n </p>\n ) : (\n <>\n <p className=\"kf-manager-pickups__warning-copy\">\n {t('chrome.managerTrip.pickups.closeStop.tripHint')}\n </p>\n <div className=\"kf-manager-pickups__resolve-list\">\n {pendingTravellers.map((row: PickupManifestTravellerRow) => (\n <div key={row.travellerId} className=\"kf-manager-pickups__resolve-row\">\n <span className=\"kf-manager-pickups__resolve-name\">{row.fullName}</span>\n <span className=\"kf-manager-pickups__chips\">\n <button\n type=\"button\"\n className=\"kf-manager-pickups__chip kf-press\"\n data-active={resolutions[row.travellerId] === 'BOARDED'}\n onClick={() =>\n setResolutions((previous) => ({\n ...previous,\n [row.travellerId]: 'BOARDED',\n }))\n }\n >\n {t('chrome.managerTrip.pickups.boarded')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-pickups__chip kf-press\"\n data-active={resolutions[row.travellerId] === 'NO_SHOW'}\n onClick={() =>\n setResolutions((previous) => ({\n ...previous,\n [row.travellerId]: 'NO_SHOW',\n }))\n }\n >\n {t('chrome.managerTrip.pickups.noShow')}\n </button>\n </span>\n </div>\n ))}\n </div>\n </>\n )\n ) : isShort ? (\n <>\n <p className=\"kf-manager-pickups__warning-copy\">\n {t('chrome.managerTrip.pickups.closeStop.trekShortWarning')\n .replace('{boarded}', String(stop.boardedCount))\n .replace('{expected}', String(stop.expectedCount))}\n </p>\n <p className=\"kf-manager-pickups__field-label\">\n {t('chrome.managerTrip.pickups.closeStop.confirmedHeadCountLabel')}\n </p>\n <input\n type=\"number\"\n className=\"kf-manager-pickups__field-input\"\n min={0}\n value={headCount}\n onChange={(event) => setHeadCount(Number(event.target.value))}\n />\n </>\n ) : (\n <p className=\"kf-manager-pickups__hint-copy\">\n {t('chrome.managerTrip.pickups.closeStop.trekReadyHint')}\n </p>\n )}\n\n <button\n type=\"button\"\n className=\"kf-manager-pickups__sheet-submit kf-press\"\n disabled={!canClose || pending}\n onClick={handleClose}\n >\n {pending\n ? t('chrome.managerTrip.pickups.closeStop.closing')\n : t('chrome.managerTrip.pickups.closeStop.submit')}\n </button>\n </div>\n </div>\n );\n}\n","// Pure derivation off `usePickups()`'s own `stops[]` — no `kaafil-js`\n// import (hard rule #1), no fabricated fields.\n\nimport type { PickupStopDeltaRow, PickupStopLiveRow } from '../ManagerPickupsSection.types';\n\nexport function isLiveStop(row: PickupStopDeltaRow): row is PickupStopLiveRow {\n return !('_tombstone' in row);\n}\n\nexport function liveStops(rows: readonly PickupStopDeltaRow[]): readonly PickupStopLiveRow[] {\n return rows.filter(isLiveStop);\n}\n\nexport function stopsOfKind(\n rows: readonly PickupStopLiveRow[],\n kind: PickupStopLiveRow['kind'],\n): readonly PickupStopLiveRow[] {\n return rows.filter((row) => row.kind === kind);\n}\n\n/** `in_progress` first (needs attention now), then `ready_to_close`, then\n * `not_started`, then `closed` last — ties broken by `scheduledTime`, then\n * `sortOrder`. */\nfunction rankOf(row: PickupStopLiveRow): number {\n switch (row.rollup) {\n case 'in_progress':\n return 0;\n case 'ready_to_close':\n return 1;\n case 'not_started':\n return 2;\n case 'closed':\n return 3;\n default:\n return 4;\n }\n}\n\nconst ROLLUP_LABEL_KEY: Record<string, string> = {\n not_started: 'chrome.managerTrip.pickups.rollup.notStarted',\n in_progress: 'chrome.managerTrip.pickups.rollup.inProgress',\n ready_to_close: 'chrome.managerTrip.pickups.rollup.readyToClose',\n closed: 'chrome.managerTrip.pickups.rollup.closed',\n};\n\nexport function rollupLabelKey(rollup: PickupStopLiveRow['rollup']): string {\n return ROLLUP_LABEL_KEY[rollup] ?? 'chrome.managerTrip.pickups.rollup.notStarted';\n}\n\nexport function rankStops(rows: readonly PickupStopLiveRow[]): readonly PickupStopLiveRow[] {\n return rows.slice().sort((a, b) => {\n const rankDiff = rankOf(a) - rankOf(b);\n if (rankDiff !== 0) {\n return rankDiff;\n }\n const timeDiff = new Date(a.scheduledTime).getTime() - new Date(b.scheduledTime).getTime();\n return timeDiff !== 0 ? timeDiff : a.sortOrder - b.sortOrder;\n });\n}\n\n/** `boardedCount / expectedCount` — real aggregate counts, never a\n * fabricated percent. `undefined` when `expectedCount === 0` (nothing\n * expected yet — omit the bar rather than show a fabricated 0%). */\nexport function boardedPercent(row: PickupStopLiveRow): number | undefined {\n if (row.expectedCount <= 0) {\n return undefined;\n }\n return Math.round((row.boardedCount / row.expectedCount) * 100);\n}\n","// Human-readable formatting for `scheduledTime`/`boardedAt` — never the raw\n// ISO string. Same `Intl.DateTimeFormat('en-GB', ...)` recipe\n// `TravellerNotesSection.tsx`/`ManagerFormsSection`'s own `formatFormDate.ts`\n// already establish for a server timestamp in this codebase.\n\nconst DATE_FORMATTER = new Intl.DateTimeFormat('en-GB', {\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n});\n\nconst TIME_FORMATTER = new Intl.DateTimeFormat('en-GB', {\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport function formatPickupDateTime(iso: string): string {\n return DATE_FORMATTER.format(new Date(iso));\n}\n\nexport function formatPickupTime(iso: string): string {\n return TIME_FORMATTER.format(new Date(iso));\n}\n","'use client';\n\n// A segmented control across this kind's stops — mirrors the boilerplate's\n// own `TrekManifestStopSeg` exactly: a button row (never a pager/stepper),\n// letting the manager jump to any stop at any time. A fully-boarded stop's\n// segment gets a muted \"done\" treatment but stays selectable.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { PickupManifestStopRow } from '../ManagerPickupsSection.types';\nimport { formatPickupTime } from './formatPickupTime';\n\nexport interface StopSegmentedSwitcherProps {\n readonly stops: readonly PickupManifestStopRow[];\n readonly activeStopId: string;\n readonly onSelect: (stopId: string) => void;\n}\n\nexport function StopSegmentedSwitcher({\n stops,\n activeStopId,\n onSelect,\n}: StopSegmentedSwitcherProps): ReactNode {\n const { t } = useKaafilChrome();\n\n return (\n <div className=\"kf-manager-pickups__segmented\" role=\"tablist\">\n {stops.map(({ stop }) => {\n const done = stop.rollup === 'closed';\n return (\n <button\n key={stop.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={stop.id === activeStopId}\n className=\"kf-manager-pickups__segment kf-press\"\n data-active={stop.id === activeStopId}\n data-done={done}\n onClick={() => onSelect(stop.id)}\n >\n <span className=\"kf-manager-pickups__segment-name\">{stop.name}</span>\n <span className=\"kf-manager-pickups__segment-meta\">\n {done\n ? t('chrome.managerTrip.pickups.rollup.closed')\n : t('chrome.managerTrip.pickups.boardedOfExpected')\n .replace('{boarded}', String(stop.boardedCount))\n .replace('{expected}', String(stop.expectedCount))}\n {' · '}\n {formatPickupTime(stop.scheduledTime)}\n </span>\n </button>\n );\n })}\n </div>\n );\n}\n","'use client';\n\n// The correction control — `pickups.correctBoardStatus`, amends/reverses an\n// existing observation, NEVER originates one (refused `422` on `PENDING`,\n// `usePickups.ts`'s own header). Deliberately styled unmistakably\n// differently from `TravellerBoardRow`'s own 48px filled origination\n// button — a small outlined pencil affordance that expands to the two real\n// target statuses — so a reader of the rendered UI can never mistake a\n// correction for an original eyewitness observation\n// (`05-pickup-points.md`, verbatim: \"a hard design requirement\").\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { EditIcon } from './icons';\n\nexport interface CorrectBoardStatusControlProps {\n readonly currentStatus: 'PENDING' | 'BOARDED' | 'NO_SHOW';\n readonly disabled: boolean;\n readonly onCorrect: (status: 'BOARDED' | 'NO_SHOW') => void;\n}\n\nexport function CorrectBoardStatusControl({\n currentStatus,\n disabled,\n onCorrect,\n}: CorrectBoardStatusControlProps): ReactNode {\n const { t } = useKaafilChrome();\n const [open, setOpen] = useState(false);\n\n // Never rendered for a `PENDING` row by the caller, but guard anyway\n // rather than trust the caller silently — correction is refused on\n // `PENDING` at the wire, this control must never offer it either.\n if (currentStatus === 'PENDING') {\n return null;\n }\n\n if (!open) {\n return (\n <button\n type=\"button\"\n className=\"kf-manager-pickups__correct-trigger kf-press\"\n disabled={disabled}\n onClick={() => setOpen(true)}\n >\n <EditIcon />\n {t('chrome.managerTrip.pickups.correctAction')}\n </button>\n );\n }\n\n return (\n <span className=\"kf-manager-pickups__correct-options\">\n {currentStatus !== 'BOARDED' ? (\n <button\n type=\"button\"\n className=\"kf-manager-pickups__correct-option kf-press\"\n disabled={disabled}\n onClick={() => {\n onCorrect('BOARDED');\n setOpen(false);\n }}\n >\n {t('chrome.managerTrip.pickups.correctToBoarded')}\n </button>\n ) : null}\n {currentStatus !== 'NO_SHOW' ? (\n <button\n type=\"button\"\n className=\"kf-manager-pickups__correct-option kf-press\"\n disabled={disabled}\n onClick={() => {\n onCorrect('NO_SHOW');\n setOpen(false);\n }}\n >\n {t('chrome.managerTrip.pickups.correctToNoShow')}\n </button>\n ) : null}\n <button\n type=\"button\"\n className=\"kf-manager-pickups__correct-cancel kf-press\"\n onClick={() => setOpen(false)}\n >\n {t('chrome.cancel')}\n </button>\n </span>\n );\n}\n","'use client';\n\n// One traveller row inside the boarding drill-in — avatar-initial circle,\n// name, phone (tap-to-call), a WALK-IN badge when real, boarded-at time\n// once recorded. The origination control (48px circular tap-to-board\n// button, mirroring the boilerplate's own large-target feel) is\n// PENDING-only; `CorrectBoardStatusControl` is a deliberately, visibly\n// DIFFERENT control for an already-recorded row — the real API's own\n// origination-vs-amendment split (`ManagerPickupsSection.tsx`'s own\n// header), never a single toggle button standing in for both.\n\nimport type { KeyboardEvent, ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { PickupManifestTravellerRow } from '../ManagerPickupsSection.types';\nimport { CorrectBoardStatusControl } from './CorrectBoardStatusControl';\nimport { formatPickupTime } from './formatPickupTime';\nimport { CheckIcon, PhoneIcon } from './icons';\n\nfunction initials(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n return `${parts[0]?.[0] ?? ''}${parts[parts.length - 1]?.[0] ?? ''}`.toUpperCase();\n}\n\nexport interface TravellerBoardRowProps {\n readonly traveller: PickupManifestTravellerRow;\n readonly stopClosed: boolean;\n readonly pending: boolean;\n readonly onBoard: (status: 'BOARDED' | 'NO_SHOW') => void;\n readonly onCorrect: (status: 'BOARDED' | 'NO_SHOW') => void;\n}\n\nexport function TravellerBoardRow({\n traveller,\n stopClosed,\n pending,\n onBoard,\n onCorrect,\n}: TravellerBoardRowProps): ReactNode {\n const { t } = useKaafilChrome();\n const isPending = traveller.status === 'PENDING';\n\n function onKeyDown(event: KeyboardEvent<HTMLButtonElement>): void {\n if ((event.key === 'Enter' || event.key === ' ') && isPending && !stopClosed) {\n event.preventDefault();\n onBoard('BOARDED');\n }\n }\n\n return (\n <div className=\"kf-manager-pickups__traveller-row\" data-pending={pending}>\n <span className=\"kf-manager-pickups__traveller-avatar\">{initials(traveller.fullName)}</span>\n <span className=\"kf-manager-pickups__traveller-copy\">\n <span className=\"kf-manager-pickups__traveller-name\">\n {traveller.fullName}\n {traveller.isWalkIn ? (\n <span className=\"kf-manager-pickups__traveller-walkin\">\n {t('chrome.managerTrip.pickups.walkIn')}\n </span>\n ) : null}\n </span>\n <span className=\"kf-manager-pickups__traveller-state\">\n {traveller.status === 'BOARDED'\n ? traveller.boardedAt !== null\n ? t('chrome.managerTrip.pickups.boardedAt').replace(\n '{time}',\n formatPickupTime(traveller.boardedAt),\n )\n : t('chrome.managerTrip.pickups.boardedGeneric')\n : traveller.status === 'NO_SHOW'\n ? t('chrome.managerTrip.pickups.noShow')\n : t('chrome.managerTrip.pickups.pending')}\n </span>\n </span>\n {traveller.phone !== null ? (\n <a\n href={`tel:${traveller.phone}`}\n className=\"kf-manager-pickups__traveller-phone kf-press\"\n aria-label={t('chrome.managerTraveller.emergency.call').replace(\n '{name}',\n traveller.fullName,\n )}\n onClick={(event) => event.stopPropagation()}\n >\n <PhoneIcon />\n </a>\n ) : null}\n {isPending ? (\n <span className=\"kf-manager-pickups__traveller-actions\">\n {!stopClosed ? (\n <button\n type=\"button\"\n className=\"kf-manager-pickups__traveller-noshow kf-press\"\n disabled={pending}\n onClick={() => onBoard('NO_SHOW')}\n >\n {t('chrome.managerTrip.pickups.markNoShow')}\n </button>\n ) : null}\n <button\n type=\"button\"\n className=\"kf-manager-pickups__board-button kf-press\"\n data-checked={false}\n disabled={stopClosed || pending}\n aria-label={t('chrome.managerTrip.pickups.boardAction').replace(\n '{name}',\n traveller.fullName,\n )}\n onClick={() => onBoard('BOARDED')}\n onKeyDown={onKeyDown}\n >\n <CheckIcon />\n </button>\n </span>\n ) : (\n <CorrectBoardStatusControl\n currentStatus={traveller.status}\n disabled={pending}\n onCorrect={onCorrect}\n />\n )}\n </div>\n );\n}\n","'use client';\n\n// The `BoardingView` Tier-4 override slot — the drill-in flow for one\n// pickup kind: a segmented stop switcher (`StopSegmentedSwitcher`), a\n// stop-summary banner, the traveller list (`TravellerBoardRow`), and a\n// sticky footer surfacing the real close-stop flow (`CloseStopSheet`).\n// Receives an already-fetched `manifest` (live, `manifestByPickup` —\n// `usePickups.ts`'s own documented \"not cache-first\" gap) and every\n// callback from the parent, which owns the hook; this component performs\n// no fetch or write of its own.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { PickupManifestResult } from '../ManagerPickupsSection.types';\nimport type { CloseStopResolution } from './CloseStopSheet';\nimport { CloseStopSheet } from './CloseStopSheet';\nimport { boardedPercent } from './deriveStops';\nimport { BackIcon } from './icons';\nimport { StopSegmentedSwitcher } from './StopSegmentedSwitcher';\nimport { TravellerBoardRow } from './TravellerBoardRow';\n\nexport interface BoardingViewProps {\n readonly manifest: PickupManifestResult;\n readonly activeStopId: string;\n readonly eventType: 'TRIP' | 'TREK';\n readonly pendingWriteIds: ReadonlySet<string>;\n readonly closePending: boolean;\n readonly onSelectStop: (stopId: string) => void;\n readonly onBoard: (travellerId: string, status: 'BOARDED' | 'NO_SHOW') => void;\n readonly onCorrect: (travellerId: string, status: 'BOARDED' | 'NO_SHOW') => void;\n readonly onCloseStop: (input: {\n readonly resolutions?: readonly CloseStopResolution[];\n readonly confirm?: boolean;\n readonly confirmedHeadCount?: number;\n }) => void;\n readonly onBack: () => void;\n}\n\nexport function BoardingView({\n manifest,\n activeStopId,\n eventType,\n pendingWriteIds,\n closePending,\n onSelectStop,\n onBoard,\n onCorrect,\n onCloseStop,\n onBack,\n}: BoardingViewProps): ReactNode {\n const { t } = useKaafilChrome();\n const [closeSheetOpen, setCloseSheetOpen] = useState(false);\n\n const activeStopRow =\n manifest.stops.find((row) => row.stop.id === activeStopId) ?? manifest.stops[0];\n if (activeStopRow === undefined) {\n return null;\n }\n const { stop, travellers } = activeStopRow;\n const percent = boardedPercent(stop);\n const stopClosed = stop.status === 'CLOSED';\n const canCloseStop = !stopClosed && stop.rollup !== 'not_started';\n\n return (\n <div className=\"kf-manager-pickups__board\">\n <div className=\"kf-manager-pickups__fill-header\">\n <button\n type=\"button\"\n className=\"kf-manager-pickups__fill-back kf-press\"\n aria-label={t('chrome.cancel')}\n onClick={onBack}\n >\n <BackIcon />\n </button>\n <p className=\"kf-manager-pickups__fill-title\">{t('chrome.managerTrip.tab.pickups')}</p>\n </div>\n\n {manifest.stops.length > 1 ? (\n <StopSegmentedSwitcher\n stops={manifest.stops}\n activeStopId={stop.id}\n onSelect={onSelectStop}\n />\n ) : null}\n\n <div className=\"kf-manager-pickups__banner\" data-closed={stopClosed}>\n <p className=\"kf-manager-pickups__banner-eyebrow\">\n {stopClosed\n ? t('chrome.managerTrip.pickups.rollup.closed')\n : t('chrome.managerTrip.pickups.boarding')}\n </p>\n <p className=\"kf-manager-pickups__banner-name\">{stop.name}</p>\n {stop.locationLabel !== null ? (\n <p className=\"kf-manager-pickups__banner-location\">{stop.locationLabel}</p>\n ) : null}\n </div>\n\n <div className=\"kf-manager-pickups__traveller-list\">\n {travellers.map((traveller) => (\n <TravellerBoardRow\n key={traveller.travellerId}\n traveller={traveller}\n stopClosed={stopClosed}\n pending={pendingWriteIds.has(traveller.travellerId)}\n onBoard={(status) => onBoard(traveller.travellerId, status)}\n onCorrect={(status) => onCorrect(traveller.travellerId, status)}\n />\n ))}\n </div>\n\n <div className=\"kf-manager-pickups__foot\">\n <div className=\"kf-manager-pickups__foot-summary\">\n <p className=\"kf-manager-pickups__foot-count\">\n {t('chrome.managerTrip.pickups.boardedOfExpected')\n .replace('{boarded}', String(stop.boardedCount))\n .replace('{expected}', String(stop.expectedCount))}\n </p>\n {percent !== undefined ? (\n <span className=\"kf-manager-pickups__foot-track\">\n <span\n className=\"kf-manager-pickups__foot-fill\"\n style={{ inlineSize: `${percent}%` }}\n />\n </span>\n ) : null}\n </div>\n {stopClosed ? (\n <span className=\"kf-manager-pickups__foot-closed-pill\">\n {t('chrome.managerTrip.pickups.rollup.closed')}\n </span>\n ) : (\n <button\n type=\"button\"\n className=\"kf-manager-pickups__foot-close kf-press\"\n disabled={!canCloseStop}\n onClick={() => setCloseSheetOpen(true)}\n >\n {t('chrome.managerTrip.pickups.closeStop.action')}\n </button>\n )}\n </div>\n\n {closeSheetOpen ? (\n <CloseStopSheet\n stopRow={activeStopRow}\n eventType={eventType}\n pending={closePending}\n onClose={(input) => {\n onCloseStop(input);\n setCloseSheetOpen(false);\n }}\n onCancel={() => setCloseSheetOpen(false)}\n />\n ) : null}\n </div>\n );\n}\n","// An honest, local optimistic patch — `board`/`correctBoardStatus` are\n// outbox-backed writes (write-ahead durable, not server-confirmed) against\n// a `manifestByPickup` read that is a plain live fetch with no snapshot\n// rebase of its own (`usePickups.ts`'s own documented gap). Without this,\n// a tap would race the same \"the aggregate refreshes but this ONE row\n// doesn't\" class of bug already found and fixed for Checklist/Forms this\n// session. Only the traveller's own `status`/`boardedAt` is patched\n// optimistically — the stop-level `boardedCount`/`rollup` is genuinely\n// server-computed and is left to the composite's own follow-up refetch\n// rather than being reproduced (and possibly gotten subtly wrong) here.\n\nimport type { PickupManifestResult } from '../ManagerPickupsSection.types';\n\nexport function patchManifestTraveller(\n manifest: PickupManifestResult,\n stopId: string,\n travellerId: string,\n status: 'BOARDED' | 'NO_SHOW',\n boardedAt: string | null,\n): PickupManifestResult {\n return {\n ...manifest,\n stops: manifest.stops.map((row) =>\n row.stop.id !== stopId\n ? row\n : {\n ...row,\n travellers: row.travellers.map((traveller) =>\n traveller.travellerId !== travellerId\n ? traveller\n : { ...traveller, status, boardedAt },\n ),\n },\n ),\n };\n}\n","'use client';\n\n// One stop row in the outer list — name, scheduled time, a real\n// boarded/expected progress bar, and the stop's own `rollup` badge. Mirrors\n// the boilerplate's own \"coming up\" row shape (order marker + name + time +\n// tally), generalized: no separate \"now boarding\" card treatment — rank\n// order alone (`deriveStops.ts`) already puts the stop needing attention\n// first.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { PickupStopLiveRow } from '../ManagerPickupsSection.types';\nimport { boardedPercent, rollupLabelKey } from './deriveStops';\nimport { formatPickupDateTime } from './formatPickupTime';\nimport { ChevronIcon } from './icons';\n\nexport interface StopRowProps {\n readonly stop: PickupStopLiveRow;\n readonly onSelect: () => void;\n}\n\nexport function StopRow({ stop, onSelect }: StopRowProps): ReactNode {\n const { t } = useKaafilChrome();\n const percent = boardedPercent(stop);\n\n return (\n <button type=\"button\" className=\"kf-manager-pickups__row kf-press\" onClick={onSelect}>\n <span className=\"kf-manager-pickups__row-copy\">\n <span className=\"kf-manager-pickups__row-title\">{stop.name}</span>\n <span className=\"kf-manager-pickups__row-meta\">\n <span className=\"kf-manager-pickups__row-time\">\n {formatPickupDateTime(stop.scheduledTime)}\n </span>\n <span className=\"kf-manager-pickups__row-badge\" data-rollup={stop.rollup}>\n {t(rollupLabelKey(stop.rollup))}\n </span>\n </span>\n {percent !== undefined ? (\n <span className=\"kf-manager-pickups__row-progress\">\n <span className=\"kf-manager-pickups__row-progress-track\">\n <span\n className=\"kf-manager-pickups__row-progress-fill\"\n style={{ inlineSize: `${percent}%` }}\n />\n </span>\n <span className=\"kf-manager-pickups__row-progress-label\">\n {t('chrome.managerTrip.pickups.boardedOfExpected')\n .replace('{boarded}', String(stop.boardedCount))\n .replace('{expected}', String(stop.expectedCount))}\n </span>\n </span>\n ) : null}\n </span>\n <ChevronIcon className=\"kf-manager-pickups__row-chevron\" aria-hidden=\"true\" />\n </button>\n );\n}\n","'use client';\n\n// The `StopList` Tier-4 override slot — the outer list, cache-first off the\n// parent's own `stops[]` (`usePickups.ts`'s real `SYNC_PULL_SECTIONS`\n// section). A Pickup/Drop kind toggle up top (a trip can have stops of\n// both kinds — `05-pickup-points.md`'s own \"a trip typically mounts two\n// PickupBoardFlows\"), then stop rows ranked \"needs attention first\"\n// (`deriveStops.ts`). Performs no fetch of its own.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { PickupStopKind, PickupStopLiveRow } from '../ManagerPickupsSection.types';\nimport { StopRow } from './StopRow';\n\nexport interface StopListProps {\n readonly stops: readonly PickupStopLiveRow[];\n readonly kind: PickupStopKind;\n readonly hasDropStops: boolean;\n readonly onKindChange: (kind: PickupStopKind) => void;\n readonly onSelectStop: (stop: PickupStopLiveRow) => void;\n}\n\nexport function StopList({\n stops,\n kind,\n hasDropStops,\n onKindChange,\n onSelectStop,\n}: StopListProps): ReactNode {\n const { t } = useKaafilChrome();\n\n return (\n <div className=\"kf-manager-pickups\">\n <p className=\"kf-manager-pickups__title\">{t('chrome.managerTrip.tab.pickups')}</p>\n {hasDropStops ? (\n <div className=\"kf-manager-pickups__chips\">\n <button\n type=\"button\"\n className=\"kf-manager-pickups__chip kf-press\"\n data-active={kind === 'PICKUP'}\n onClick={() => onKindChange('PICKUP')}\n >\n {t('chrome.managerTrip.pickups.kind.pickup')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-pickups__chip kf-press\"\n data-active={kind === 'DROP'}\n onClick={() => onKindChange('DROP')}\n >\n {t('chrome.managerTrip.pickups.kind.drop')}\n </button>\n </div>\n ) : null}\n {stops.length === 0 ? (\n <div className=\"kf-manager-pickups__empty\">\n <p className=\"kf-manager-pickups__empty-title\">\n {t('chrome.managerTrip.pickups.emptyTitle')}\n </p>\n <p className=\"kf-manager-pickups__empty-body\">\n {t('chrome.managerTrip.pickups.emptyBody')}\n </p>\n </div>\n ) : (\n <div className=\"kf-manager-pickups__list\">\n {stops.map((stop) => (\n <StopRow key={stop.id} stop={stop} onSelect={() => onSelectStop(stop)} />\n ))}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\n// The Pickups tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'pickups'` tab panel.\n// `usePickups(tripRef)` (`05-pickup-points.md`) is the one domain hook.\n// Generalized for either `Trip.eventType` — the spec itself treats pickup\n// points as ONE generic concept, branching only inside the close-stop\n// policy (`internal/CloseStopSheet.tsx`'s own header).\n//\n// SCOPE THIS WAVE: the boarding/operational flow only (list stops → drill\n// into one → board/correct/close), mirroring what the boilerplate\n// reference itself calls the manager-app's own job — its own empty-state\n// copy for the equivalent screen reads \"Ops adds stops from the web\n// console,\" i.e. stop authoring (create/patch/remove/reorder) and\n// traveller↔stop assignment are desk/admin tasks in the reference design\n// too, not manager-app ones. `usePickups.ts`'s own `create`/`patch`/\n// `remove`/`reorder`/`assign`/`reassign` are real and hook-ready but\n// deliberately not wired here — a real, explicitly-noted follow-up, never\n// silently dropped.\n//\n// REAL, CONFIRMED GAP this composite works around honestly: `manifestByPickup`\n// is a plain LIVE fetch, not cache-first, and `board`/`correctBoardStatus`/\n// `close` are outbox-backed writes (durable-once-enqueued, not\n// server-confirmed). Without a local optimistic patch, a tap would race\n// the exact same \"the aggregate refreshes but this ONE row doesn't\" bug\n// already found and fixed for Checklist/Forms — `internal/patchManifest.ts`\n// applies an honest, real optimistic patch to the tapped traveller's own\n// `status`/`boardedAt` immediately; the stop-level `boardedCount`/`rollup`\n// aggregate is left to a follow-up background refetch rather than being\n// (possibly incorrectly) reproduced client-side.\n//\n// TWO STRUCTURALLY DISTINCT CONTROLS FOR BOARD VS CORRECT — the real API's\n// own boundary (`pickups.board` origination, manager-only; `pickups\n// .correctBoardStatus` amendment, broader auth, refused on `PENDING`) is\n// \"two visibly, structurally different controls; neither offers a unified\n// 'board or correct' button\" (`05-pickup-points.md`, verbatim) — a\n// deliberate improvement over the boilerplate reference, which conflates\n// both into one toggle button. See `internal/TravellerBoardRow.tsx`/\n// `internal/CorrectBoardStatusControl.tsx`.\n//\n// `pickup-points` is a member of the frozen PERSONALIZED mode-dark set — a\n// dark or errored read renders nothing at all (404-shaped), the same\n// precedent every prior wave sets.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { usePickups } from '../../../../core/hooks/usePickups.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { BoardingView } from './internal/BoardingView';\nimport type { CloseStopResolution } from './internal/CloseStopSheet';\nimport { liveStops, rankStops, stopsOfKind } from './internal/deriveStops';\nimport { patchManifestTraveller } from './internal/patchManifest';\nimport { StopList } from './internal/StopList';\nimport type {\n ManagerPickupsSectionProps,\n PickupManifestResult,\n PickupStopKind,\n PickupStopLiveRow,\n} from './ManagerPickupsSection.types';\n\nexport function ManagerPickupsSection({\n tripRef,\n eventType,\n components,\n style,\n}: ManagerPickupsSectionProps): ReactNode {\n const pickups = usePickups(tripRef);\n\n const StopListUI = components?.StopList ?? StopList;\n const BoardingViewUI = components?.BoardingView ?? BoardingView;\n\n const [kind, setKind] = useState<PickupStopKind>('PICKUP');\n const [selectedStopId, setSelectedStopId] = useState<string | undefined>(undefined);\n const [manifest, setManifest] = useState<PickupManifestResult | undefined>(undefined);\n const [pendingWriteIds, setPendingWriteIds] = useState<ReadonlySet<string>>(new Set());\n const [closePending, setClosePending] = useState(false);\n\n const ready = pickups.status === 'ready';\n\n // The drill-in view's own manifest fetch — re-runs whenever `kind`\n // changes or the manager drills into any stop of this kind.\n // biome-ignore lint/correctness/useExhaustiveDependencies: `pickups.manifestByPickup` is a fresh closure every render; re-running only on the real inputs is correct.\n useEffect(() => {\n if (!ready || selectedStopId === undefined) {\n setManifest(undefined);\n return;\n }\n let cancelled = false;\n void pickups.manifestByPickup({ kind }).then((result) => {\n if (!cancelled) {\n setManifest(result);\n }\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- same reasoning as above.\n }, [ready, selectedStopId, kind]);\n\n if (pickups.status === 'loading') {\n return (\n <div className=\"kf-manager-pickups__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-pickups__skeleton-line\" />\n <div className=\"kf-manager-pickups__skeleton-line\" />\n <div className=\"kf-manager-pickups__skeleton-line kf-manager-pickups__skeleton-line--short\" />\n </div>\n );\n }\n\n if (pickups.status === 'dark' || pickups.status === 'error') {\n return null;\n }\n\n const allLiveStops = liveStops(pickups.stops);\n const hasDropStops = allLiveStops.some((row) => row.kind === 'DROP');\n const rankedStops: readonly PickupStopLiveRow[] = rankStops(stopsOfKind(allLiveStops, kind));\n\n async function refetchManifest(): Promise<void> {\n if (!ready) {\n return;\n }\n const result = await pickups.manifestByPickup({ kind });\n setManifest(result);\n }\n\n async function withPendingTraveller(\n travellerId: string,\n task: () => Promise<unknown>,\n ): Promise<void> {\n setPendingWriteIds((previous) => new Set(previous).add(travellerId));\n try {\n await task();\n } finally {\n setPendingWriteIds((previous) => {\n const next = new Set(previous);\n next.delete(travellerId);\n return next;\n });\n }\n }\n\n /** Applies `patchManifestTraveller` immediately (before the write is even\n * sent), and returns a rollback that restores the pre-patch manifest.\n * `board`/`correctBoardStatus` are outbox-backed — `useOfflineMutation`'s\n * own `mutate()` resolves only once the engine's OWN drain cycle picks the\n * op up, which is not instant, so patching only after that `await`\n * resolves (this composite's earlier shape) left a manager tapping\n * \"board\" on a bus full of travellers staring at an unresponsive row for\n * as long as the next drain cycle takes. The write is still real and\n * still fires; this only moves the LOCAL reflection of it earlier. */\n function patchTravellerNow(\n stopId: string,\n travellerId: string,\n status: 'BOARDED' | 'NO_SHOW',\n ): () => void {\n const previous = manifest;\n const boardedAt =\n status === 'BOARDED'\n ? ((pickups.status === 'ready' ? pickups.syncedAt : null) ?? null)\n : null;\n setManifest((current) =>\n current === undefined\n ? current\n : patchManifestTraveller(current, stopId, travellerId, status, boardedAt),\n );\n return () => setManifest(previous);\n }\n\n function handleBoard(travellerId: string, status: 'BOARDED' | 'NO_SHOW'): void {\n if (!ready || selectedStopId === undefined) {\n return;\n }\n const rollback = patchTravellerNow(selectedStopId, travellerId, status);\n void withPendingTraveller(travellerId, async () => {\n try {\n // No `refetchManifest()` here — `mutate()` resolving only means the\n // write is durably ENQUEUED, not that the server has processed it\n // yet (this file's own header). A refetch fired immediately races\n // the outbox's own background drain and can win, silently\n // overwriting the correct optimistic row with the still-PENDING\n // truth the server hasn't caught up to (a real, reproduced bug this\n // session: the row visibly reverted moments after a successful\n // tap). The local patch is the one honest reflection of this write\n // until the manager next re-opens this stop.\n await pickups.board({ pointId: selectedStopId, travellerId, status });\n } catch {\n // Parked (e.g. `CONFLICT_VERSION`) — roll the local reflection back\n // rather than leaving a status this composite never confirmed.\n rollback();\n }\n });\n }\n\n function handleCorrect(travellerId: string, status: 'BOARDED' | 'NO_SHOW'): void {\n if (!ready || selectedStopId === undefined) {\n return;\n }\n const rollback = patchTravellerNow(selectedStopId, travellerId, status);\n void withPendingTraveller(travellerId, async () => {\n try {\n // See `handleBoard`'s own comment — no immediate refetch here either.\n await pickups.correctBoardStatus({ pointId: selectedStopId, travellerId, status });\n } catch {\n // Parked (e.g. `CONFLICT_VERSION`) — roll the local reflection back\n // rather than leaving a status this composite never confirmed.\n rollback();\n }\n });\n }\n\n function handleCloseStop(input: {\n readonly resolutions?: readonly CloseStopResolution[];\n readonly confirm?: boolean;\n readonly confirmedHeadCount?: number;\n }): void {\n if (!ready || selectedStopId === undefined) {\n return;\n }\n setClosePending(true);\n const { resolutions, ...rest } = input;\n void pickups\n .close({\n pointId: selectedStopId,\n ...rest,\n ...(resolutions !== undefined\n ? { resolutions: resolutions.map((row) => ({ ...row })) }\n : {}),\n })\n .then(() => refetchManifest())\n .finally(() => setClosePending(false));\n }\n\n if (selectedStopId !== undefined) {\n if (manifest === undefined) {\n return (\n <div className=\"kf-manager-pickups__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-pickups__skeleton-line\" />\n <div className=\"kf-manager-pickups__skeleton-line\" />\n </div>\n );\n }\n return (\n <div style={tokenStyle(style)}>\n <BoardingViewUI\n manifest={manifest}\n activeStopId={selectedStopId}\n eventType={eventType}\n pendingWriteIds={pendingWriteIds}\n closePending={closePending}\n onSelectStop={setSelectedStopId}\n onBoard={handleBoard}\n onCorrect={handleCorrect}\n onCloseStop={handleCloseStop}\n onBack={() => setSelectedStopId(undefined)}\n />\n </div>\n );\n }\n\n return (\n <div style={tokenStyle(style)}>\n <StopListUI\n stops={rankedStops}\n kind={kind}\n hasDropStops={hasDropStops}\n onKindChange={setKind}\n onSelectStop={(stop) => setSelectedStopId(stop.id)}\n />\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention `ManagerManifestSection`'s own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function PlusIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n );\n}\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 6 6 6-6 6\" />\n </svg>\n );\n}\n\nexport function WandIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15 4 1.5 3L20 8.5 16.5 10 15 13l-1.5-3L10 8.5 13.5 7 15 4Z\" />\n <path d=\"M5 14l1 2 2 1-2 1-1 2-1-2-2-1 2-1 1-2Z\" />\n </svg>\n );\n}\n\nexport function MoonIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z\" />\n </svg>\n );\n}\n\nexport function EditIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 20h9M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z\" />\n </svg>\n );\n}\n\nexport function TrashIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0-1 14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2L4 6h16Z\" />\n </svg>\n );\n}\n","'use client';\n\n// Add/edit/delete a room — fields from the REAL `CreateRoomingRoomRequest`/\n// `PatchRoomingRoomRequest` (`kaafil-js/src/generated/schema.d.ts`, verified\n// this session): `code`, `capacity`, `roomType?`, `notes?`. No vendor/price\n// fields — not real fields on this DTO (the boilerplate reference's\n// `vendorId`/room-kind enum are specific to that repo and not ported).\n//\n// Delete confirms UPFRONT (showing the real current occupant count) and\n// then calls `removeRoom({..., force: true})` directly — no synchronous\n// non-force-then-retry dance, because this write is enqueued through\n// `useOfflineMutation`/the outbox rather than a directly-awaited HTTP call,\n// so a `422 BUSINESS_RULE_VIOLATION` can't be caught synchronously to drive\n// a two-step retry UI.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { RoomingRoom } from '../ManagerRoomingSection.types';\nimport { CloseIcon, TrashIcon } from './icons';\n\ntype RoomType = RoomingRoom['roomType'];\nconst ROOM_TYPES: readonly RoomType[] = ['SINGLE', 'TWIN', 'SHARED', 'DORM'];\nconst ROOM_TYPE_LABEL_KEY: Record<RoomType, string> = {\n SINGLE: 'chrome.managerTrip.rooming.roomType.singleShort',\n TWIN: 'chrome.managerTrip.rooming.roomType.twinShort',\n SHARED: 'chrome.managerTrip.rooming.roomType.sharedShort',\n DORM: 'chrome.managerTrip.rooming.roomType.dormShort',\n};\n\nexport interface AddRoomInput {\n readonly code: string;\n readonly capacity: number;\n readonly roomType: RoomType | undefined;\n readonly notes: string | undefined;\n}\n\nexport interface AddRoomSheetProps {\n readonly open: boolean;\n /** `undefined` = add mode. Present = edit mode, pre-filled from this room. */\n readonly room: RoomingRoom | undefined;\n readonly onClose: () => void;\n readonly onCreate: (input: AddRoomInput) => Promise<void>;\n readonly onPatch: (input: AddRoomInput & { roomId: string; version: number }) => Promise<void>;\n readonly onDelete: (input: { roomId: string; version: number }) => Promise<void>;\n}\n\nexport function AddRoomSheet({\n open,\n room,\n onClose,\n onCreate,\n onPatch,\n onDelete,\n}: AddRoomSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [code, setCode] = useState('');\n const [capacity, setCapacity] = useState('2');\n const [roomType, setRoomType] = useState<RoomType | undefined>(undefined);\n const [notes, setNotes] = useState('');\n const [submitting, setSubmitting] = useState(false);\n const [confirmingDelete, setConfirmingDelete] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setCode(room?.code ?? '');\n setCapacity(String(room?.capacity ?? 2));\n setRoomType(room?.roomType);\n setNotes(room?.notes ?? '');\n setSubmitting(false);\n setConfirmingDelete(false);\n }, [open, room]);\n\n if (!open) {\n return null;\n }\n\n const parsedCapacity = Number(capacity);\n const canSubmit =\n code.trim().length > 0 && Number.isInteger(parsedCapacity) && parsedCapacity > 0 && !submitting;\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n const input: AddRoomInput = {\n code: code.trim(),\n capacity: parsedCapacity,\n roomType,\n notes: notes.trim().length > 0 ? notes.trim() : undefined,\n };\n setSubmitting(true);\n try {\n if (room === undefined) {\n await onCreate(input);\n } else {\n await onPatch({ ...input, roomId: room.id, version: room.version });\n }\n onClose();\n } finally {\n setSubmitting(false);\n }\n };\n\n const occupantCount = room?.beds.filter((bed) => bed.occupant !== null).length ?? 0;\n\n const handleDelete = async (): Promise<void> => {\n if (room === undefined) {\n return;\n }\n setSubmitting(true);\n try {\n await onDelete({ roomId: room.id, version: room.version });\n onClose();\n } finally {\n setSubmitting(false);\n }\n };\n\n return (\n <div className=\"kf-manager-rooming__sheet-backdrop\">\n <div\n className=\"kf-manager-rooming__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={\n room === undefined\n ? t('chrome.managerTrip.rooming.addRoom.title')\n : t('chrome.managerTrip.rooming.editRoom.title')\n }\n >\n <div className=\"kf-manager-rooming__sheet-header\">\n <p className=\"kf-manager-rooming__sheet-title\">\n {room === undefined\n ? t('chrome.managerTrip.rooming.addRoom.title')\n : t('chrome.managerTrip.rooming.editRoom.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-rooming__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {confirmingDelete ? (\n <>\n <p className=\"kf-manager-rooming__confirm-copy\">\n {occupantCount > 0\n ? t('chrome.managerTrip.rooming.deleteRoom.confirmWithOccupants').replace(\n '{count}',\n String(occupantCount),\n )\n : t('chrome.managerTrip.rooming.deleteRoom.confirm')}\n </p>\n <div className=\"kf-manager-rooming__filter-sheet-footer\">\n <button\n type=\"button\"\n className=\"kf-manager-rooming__filter-sheet-clear kf-press\"\n onClick={() => setConfirmingDelete(false)}\n >\n {t('chrome.cancel')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-rooming__danger-button kf-press\"\n disabled={submitting}\n onClick={() => void handleDelete()}\n >\n {t('chrome.managerTrip.rooming.deleteRoom.confirmAction')}\n </button>\n </div>\n </>\n ) : (\n <>\n <label className=\"kf-manager-rooming__field-label\" htmlFor=\"kf-rooming-room-code\">\n {t('chrome.managerTrip.rooming.addRoom.code')}\n </label>\n <input\n id=\"kf-rooming-room-code\"\n type=\"text\"\n value={code}\n onChange={(event) => setCode(event.target.value)}\n className=\"kf-manager-rooming__field-input\"\n placeholder=\"204\"\n />\n\n <p className=\"kf-manager-rooming__field-label\">\n {t('chrome.managerTrip.rooming.addRoom.roomType')}\n </p>\n <div className=\"kf-manager-rooming__mode-chips\">\n {ROOM_TYPES.map((option) => (\n <button\n key={option}\n type=\"button\"\n className=\"kf-manager-rooming__mode-chip kf-press\"\n data-active={roomType === option}\n onClick={() => setRoomType(roomType === option ? undefined : option)}\n >\n {t(ROOM_TYPE_LABEL_KEY[option])}\n </button>\n ))}\n </div>\n\n <label className=\"kf-manager-rooming__field-label\" htmlFor=\"kf-rooming-room-capacity\">\n {t('chrome.managerTrip.rooming.addRoom.capacity')}\n </label>\n <input\n id=\"kf-rooming-room-capacity\"\n type=\"number\"\n inputMode=\"numeric\"\n min=\"1\"\n max=\"40\"\n value={capacity}\n onChange={(event) => setCapacity(event.target.value)}\n className=\"kf-manager-rooming__field-input\"\n />\n\n <label className=\"kf-manager-rooming__field-label\" htmlFor=\"kf-rooming-room-notes\">\n {t('chrome.managerTrip.rooming.addRoom.notesOptional')}\n </label>\n <textarea\n id=\"kf-rooming-room-notes\"\n value={notes}\n onChange={(event) => setNotes(event.target.value)}\n className=\"kf-manager-rooming__field-textarea\"\n rows={2}\n />\n\n <button\n type=\"button\"\n className=\"kf-manager-rooming__sheet-submit kf-press\"\n disabled={!canSubmit}\n onClick={() => void handleSubmit()}\n >\n {submitting\n ? t('chrome.managerTrip.rooming.addRoom.submitting')\n : room === undefined\n ? t('chrome.managerTrip.rooming.addRoom.submit')\n : t('chrome.managerTrip.rooming.editRoom.submit')}\n </button>\n\n {room !== undefined ? (\n <button\n type=\"button\"\n className=\"kf-manager-rooming__delete-link kf-press\"\n onClick={() => setConfirmingDelete(true)}\n >\n <TrashIcon /> {t('chrome.managerTrip.rooming.deleteRoom.link')}\n </button>\n ) : null}\n </>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The tap-assign flow — the manager family spec's literal \"2 taps\" p90 (tap\n// the traveller, tap the destination slot; here either order works, since\n// the pool and every room's bed grid both open this SAME sheet). A REAL\n// bottom sheet, same `__sheet-backdrop`/`__sheet` recipe every other sheet\n// this session ported. Assigning a traveller into an already-occupied bed\n// lets the server's own atomic-swap displacement handle the previous\n// occupant — no extra \"swap\" UI needed (`RULES:rooming` R2's own note).\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { RoomingBed, RoomingOccupantRow, RoomingRoom } from '../ManagerRoomingSection.types';\nimport { CloseIcon } from './icons';\n\nexport type AssignBedSheetContext =\n | { readonly kind: 'bed'; readonly room: RoomingRoom; readonly bed: RoomingBed }\n | { readonly kind: 'traveller'; readonly traveller: RoomingOccupantRow };\n\nexport interface AssignBedSheetProps {\n readonly open: boolean;\n readonly context: AssignBedSheetContext | undefined;\n readonly rooms: readonly RoomingRoom[];\n readonly poolTravellers: readonly RoomingOccupantRow[];\n readonly onAssign: (input: {\n travellerId: string;\n roomId: string;\n bedLabel: string;\n }) => Promise<void>;\n readonly onUnassign: (input: { travellerId: string; roomId: string }) => Promise<void>;\n readonly onOpenTraveller: (travellerId: string, fullName: string) => void;\n readonly onClose: () => void;\n}\n\nexport function AssignBedSheet({\n open,\n context,\n rooms,\n poolTravellers,\n onAssign,\n onUnassign,\n onOpenTraveller,\n onClose,\n}: AssignBedSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [pending, setPending] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n if (!open || context === undefined) {\n return null;\n }\n\n const title =\n context.kind === 'bed'\n ? `${context.room.code} · ${t('chrome.managerTrip.rooming.bed.label').replace('{label}', context.bed.bedLabel)}`\n : context.traveller.fullName;\n\n const handleAssign = async (input: {\n travellerId: string;\n roomId: string;\n bedLabel: string;\n }): Promise<void> => {\n setPending(true);\n try {\n await onAssign(input);\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n const handleUnassign = async (input: { travellerId: string; roomId: string }): Promise<void> => {\n setPending(true);\n try {\n await onUnassign(input);\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n return (\n <div className=\"kf-manager-rooming__sheet-backdrop\">\n <div className=\"kf-manager-rooming__sheet\" role=\"dialog\" aria-modal=\"true\" aria-label={title}>\n <div className=\"kf-manager-rooming__sheet-header\">\n <p className=\"kf-manager-rooming__sheet-title\">{title}</p>\n <button\n type=\"button\"\n className=\"kf-manager-rooming__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {context.kind === 'bed' && context.bed.occupant !== null ? (\n <div className=\"kf-manager-rooming__occupant-row\">\n <span className=\"kf-manager-rooming__bed-avatar\">{context.bed.occupant.glyph}</span>\n <span className=\"kf-manager-rooming__pool-name\">{context.bed.occupant.fullName}</span>\n <div className=\"kf-manager-rooming__occupant-actions\">\n <button\n type=\"button\"\n className=\"kf-manager-rooming__sheet-secondary kf-press\"\n onClick={() =>\n onOpenTraveller(\n context.bed.occupant?.travellerId ?? '',\n context.bed.occupant?.fullName ?? '',\n )\n }\n >\n {t('chrome.managerTrip.rooming.assign.viewProfile')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-rooming__sheet-secondary kf-press\"\n disabled={pending}\n onClick={() =>\n void handleUnassign({\n travellerId: context.bed.occupant?.travellerId ?? '',\n roomId: context.room.id,\n })\n }\n >\n {t('chrome.managerTrip.rooming.assign.unassign')}\n </button>\n </div>\n </div>\n ) : null}\n\n <p className=\"kf-manager-rooming__filter-sheet-group-title\">\n {context.kind === 'bed'\n ? t('chrome.managerTrip.rooming.assign.pickTraveller')\n : t('chrome.managerTrip.rooming.assign.pickBed')}\n </p>\n\n {context.kind === 'bed' ? (\n poolTravellers.length === 0 ? (\n <p className=\"kf-manager-rooming__assign-empty\">\n {t('chrome.managerTrip.rooming.assign.poolEmpty')}\n </p>\n ) : (\n <div className=\"kf-manager-rooming__assign-list\">\n {poolTravellers.map((traveller) => (\n <button\n key={traveller.travellerId}\n type=\"button\"\n className=\"kf-manager-rooming__pool-row kf-press\"\n disabled={pending}\n onClick={() =>\n void handleAssign({\n travellerId: traveller.travellerId,\n roomId: context.room.id,\n bedLabel: context.bed.bedLabel,\n })\n }\n >\n <span className=\"kf-manager-rooming__pool-avatar\">{traveller.glyph}</span>\n <span className=\"kf-manager-rooming__pool-name\">{traveller.fullName}</span>\n </button>\n ))}\n </div>\n )\n ) : rooms.every((room) => room.beds.every((bed) => bed.occupant !== null)) ? (\n <p className=\"kf-manager-rooming__assign-empty\">\n {t('chrome.managerTrip.rooming.assign.noFreeBeds')}\n </p>\n ) : (\n <div className=\"kf-manager-rooming__assign-list\">\n {rooms.map((room) =>\n room.beds\n .filter((bed) => bed.occupant === null)\n .map((bed) => (\n <button\n key={`${room.id}-${bed.bedLabel}`}\n type=\"button\"\n className=\"kf-manager-rooming__pool-row kf-press\"\n disabled={pending}\n onClick={() =>\n void handleAssign({\n travellerId: context.traveller.travellerId,\n roomId: room.id,\n bedLabel: bed.bedLabel,\n })\n }\n >\n <span className=\"kf-manager-rooming__pool-name\">\n {room.code} ·{' '}\n {t('chrome.managerTrip.rooming.bed.label').replace('{label}', bed.bedLabel)}\n </span>\n </button>\n )),\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n","// Pure derivation helpers off `useRooming()`'s real return shape — no\n// `kaafil-js` import (hard rule #1), no fabricated fields. Each composite\n// this session owns its own internal helpers rather than sharing a\n// cross-composite derive module.\n\nimport type {\n RoomingBed,\n RoomingRoom,\n RoomingRoomDeltaRow,\n RoomingStayWindow,\n RoomingStayWindowDeltaRow,\n} from '../ManagerRoomingSection.types';\n\n/** `rooms[]`/`stayWindows[]` off the raw hook are delta feeds (a live row or\n * a `{_tombstone:true}` marker) — in practice `useSnapshotList`'s own merge\n * deletes a tombstoned id from the store rather than keeping a tombstone\n * object (`ManagerRoomingSection.types.ts`'s own header comment), but the\n * TYPE is still the wire union, so these narrow it at the one place the\n * composite reads them off the hook, the same `!('_tombstone' in row)`\n * idiom `useParties.ts`/`useItinerary.ts` already use for their own rows. */\nexport function isLiveRoom(room: RoomingRoomDeltaRow): room is RoomingRoom {\n return !('_tombstone' in room);\n}\n\nexport function isLiveStayWindow(\n stayWindow: RoomingStayWindowDeltaRow,\n): stayWindow is RoomingStayWindow {\n return !('_tombstone' in stayWindow);\n}\n\n/** Windows sorted by their own real `sortOrder` — the engine's own ordering,\n * never re-derived from dates. */\nexport function sortedStayWindows(\n stayWindows: readonly RoomingStayWindow[],\n): readonly RoomingStayWindow[] {\n return [...stayWindows].sort((a, b) => a.sortOrder - b.sortOrder);\n}\n\n/** The spec's own documented default (`RoomingBoard.stayWindowId`/\n * `RoomingFlow.initialStayWindowId`): the first window by sort order. This\n * composite does not attempt to replicate the engine's `muted_no_stay`\n * per-window status (that roll-up isn't exposed by `useRooming()`), so the\n * default is simply \"first window,\" not \"first non-muted window.\" */\nexport function defaultActiveStayWindowId(\n stayWindows: readonly RoomingStayWindow[],\n): string | undefined {\n return sortedStayWindows(stayWindows)[0]?.id;\n}\n\nexport function roomsForWindow(\n rooms: readonly RoomingRoom[],\n stayWindowId: string | undefined,\n): readonly RoomingRoom[] {\n if (stayWindowId === undefined) {\n return [];\n }\n return rooms.filter((room) => room.stayWindowId === stayWindowId);\n}\n\nexport interface RoomingBedStats {\n readonly occupied: number;\n readonly total: number;\n}\n\nexport function bedStatsForRooms(rooms: readonly RoomingRoom[]): RoomingBedStats {\n let occupied = 0;\n let total = 0;\n for (const room of rooms) {\n total += room.beds.length;\n occupied += room.beds.filter((bed: RoomingBed) => bed.occupant !== null).length;\n }\n return { occupied, total };\n}\n\nexport interface AutoAssignPlanRow {\n readonly travellerId: string;\n readonly fullName: string;\n readonly roomCode: string;\n readonly bedLabel: string;\n readonly kind: 'added' | 'moved';\n readonly fromRoomCode: string | undefined;\n readonly fromBedLabel: string | undefined;\n}\n\n/** Cross-references each `plan[]` entry (destinations only — `travellerId,\n * roomId, bedLabel`) against the CURRENT bed grid to derive an honest\n * \"Added\"/\"Moved\" tag and, for a move, the real previous room/bed — the\n * `RoomingAutoAssignResponse` itself only reports `deltas.movedFromPrevious`\n * as a trip-wide COUNT, never per-traveller, so this is a legitimate client\n * derivation off real fields already in hand, not a fabricated field. */\nexport function diffAutoAssignPlan(\n plan: readonly { travellerId: string; roomId: string; bedLabel: string }[],\n rooms: readonly RoomingRoom[],\n travellerNames: ReadonlyMap<string, string>,\n): readonly AutoAssignPlanRow[] {\n return plan.map((entry) => {\n const targetRoom = rooms.find((room) => room.id === entry.roomId);\n const roomCode = targetRoom?.code ?? entry.roomId;\n let fromRoomCode: string | undefined;\n let fromBedLabel: string | undefined;\n for (const room of rooms) {\n const bed = room.beds.find(\n (candidate) => candidate.occupant?.travellerId === entry.travellerId,\n );\n if (bed !== undefined) {\n if (room.id !== entry.roomId || bed.bedLabel !== entry.bedLabel) {\n fromRoomCode = room.code;\n fromBedLabel = bed.bedLabel;\n }\n break;\n }\n }\n return {\n travellerId: entry.travellerId,\n fullName: travellerNames.get(entry.travellerId) ?? entry.travellerId,\n roomCode,\n bedLabel: entry.bedLabel,\n kind: fromRoomCode === undefined ? 'added' : 'moved',\n fromRoomCode,\n fromBedLabel,\n };\n });\n}\n\nconst ROOM_TYPE_LABEL_KEY: Record<RoomingRoom['roomType'], string> = {\n SINGLE: 'chrome.managerTrip.rooming.roomType.single',\n TWIN: 'chrome.managerTrip.rooming.roomType.twin',\n SHARED: 'chrome.managerTrip.rooming.roomType.shared',\n DORM: 'chrome.managerTrip.rooming.roomType.dorm',\n};\n\nexport function roomTypeLabelKey(roomType: RoomingRoom['roomType']): string {\n return ROOM_TYPE_LABEL_KEY[roomType];\n}\n\nconst UNASSIGNED_REASON_LABEL_KEY: Record<string, string> = {\n gender_no_legal_room: 'chrome.managerTrip.rooming.autoAssign.reason.genderNoLegalRoom',\n gender_unknown_not_shared: 'chrome.managerTrip.rooming.autoAssign.reason.genderUnknown',\n no_free_bed: 'chrome.managerTrip.rooming.autoAssign.reason.noFreeBed',\n party_split_exhausted: 'chrome.managerTrip.rooming.autoAssign.reason.partySplit',\n};\n\nexport function unassignedReasonLabelKey(reason: string): string {\n return (\n UNASSIGNED_REASON_LABEL_KEY[reason] ?? 'chrome.managerTrip.rooming.autoAssign.reason.other'\n );\n}\n","'use client';\n\n// Runs the greedy auto-assign solver and applies the result. Pixel\n// reference: `frontend-boilerplate/components/manager/\n// manager-rooming-auto-assign-screen.tsx`, ported from a routed page to a\n// bottom sheet (the user's own explicit ask). On open, calls\n// `autoAssign({stayWindowId, dryRun:true})` for a REAL preview — this keeps\n// a preview-before-confirm step, which the literal manager-family spec text\n// says not to build (\"no diff panel… surfaces the outcome, not the plan\") —\n// a deliberate, flagged deviation favoring the boilerplate reference and\n// the user's explicit ask, since the preview is real dry-run data under the\n// documented dry-run-equals-apply guarantee, not a fabricated planning UI.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { RoomingAutoAssignResult, RoomingRoom } from '../ManagerRoomingSection.types';\nimport { diffAutoAssignPlan, unassignedReasonLabelKey } from './deriveRooming';\nimport { CloseIcon } from './icons';\n\nexport interface AutoAssignSheetProps {\n readonly open: boolean;\n readonly stayWindowId: string | undefined;\n readonly rooms: readonly RoomingRoom[];\n readonly travellerNames: ReadonlyMap<string, string>;\n readonly autoAssign: (input: {\n stayWindowId: string;\n dryRun: boolean;\n reassignAll?: boolean;\n }) => Promise<RoomingAutoAssignResult>;\n readonly onApplied: (deltas: { assigned: number; movedFromPrevious: number }) => void;\n readonly onClose: () => void;\n}\n\nexport function AutoAssignSheet({\n open,\n stayWindowId,\n rooms,\n travellerNames,\n autoAssign,\n onApplied,\n onClose,\n}: AutoAssignSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [reassignAll, setReassignAll] = useState(false);\n const [preview, setPreview] = useState<RoomingAutoAssignResult | undefined>(undefined);\n const [loading, setLoading] = useState(false);\n const [applying, setApplying] = useState(false);\n const [failed, setFailed] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: autoAssign omitted deliberately — it's a fresh closure identity every render (`rooming.autoAssign` in the owning composite), and listing it would re-run this preview fetch on every parent render instead of only on open/stayWindowId/reassignAll change.\n useEffect(() => {\n if (!open || stayWindowId === undefined) {\n return;\n }\n let cancelled = false;\n setLoading(true);\n setFailed(false);\n void autoAssign({ stayWindowId, dryRun: true, reassignAll })\n .then((result) => {\n if (!cancelled) {\n setPreview(result);\n }\n })\n .catch(() => {\n if (!cancelled) {\n setFailed(true);\n }\n })\n .finally(() => {\n if (!cancelled) {\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- autoAssign omitted deliberately, same rationale as the biome-ignore above this effect.\n }, [open, stayWindowId, reassignAll]);\n\n useEffect(() => {\n if (open) {\n setPreview(undefined);\n setApplying(false);\n setReassignAll(false);\n }\n }, [open]);\n\n if (!open || stayWindowId === undefined) {\n return null;\n }\n\n const rows = preview !== undefined ? diffAutoAssignPlan(preview.plan, rooms, travellerNames) : [];\n\n const handleApply = async (): Promise<void> => {\n setApplying(true);\n try {\n const result = await autoAssign({ stayWindowId, dryRun: false, reassignAll });\n onApplied(result.deltas);\n onClose();\n } finally {\n setApplying(false);\n }\n };\n\n return (\n <div className=\"kf-manager-rooming__sheet-backdrop\">\n <div\n className=\"kf-manager-rooming__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.rooming.autoAssign.title')}\n >\n <div className=\"kf-manager-rooming__sheet-header\">\n <p className=\"kf-manager-rooming__sheet-title\">\n {t('chrome.managerTrip.rooming.autoAssign.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-rooming__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={reassignAll}\n className=\"kf-manager-rooming__toggle-row\"\n onClick={() => setReassignAll((current) => !current)}\n >\n <span className=\"kf-manager-rooming__toggle-track\" data-active={reassignAll}>\n <span className=\"kf-manager-rooming__toggle-thumb\" />\n </span>\n {t('chrome.managerTrip.rooming.autoAssign.reassignAll')}\n </button>\n\n {loading ? (\n <>\n <div className=\"kf-manager-rooming__pool-skeleton\" />\n <div className=\"kf-manager-rooming__pool-skeleton\" />\n </>\n ) : failed ? (\n <p className=\"kf-manager-rooming__assign-empty\">\n {t('chrome.managerTrip.rooming.autoAssign.previewFailed')}\n </p>\n ) : preview === undefined ? null : rows.length === 0 && preview.unassigned.length === 0 ? (\n <p className=\"kf-manager-rooming__assign-empty\">\n {t('chrome.managerTrip.rooming.autoAssign.nothingToApply')}\n </p>\n ) : (\n <>\n <p className=\"kf-manager-rooming__autoassign-summary\">\n {t('chrome.managerTrip.rooming.autoAssign.summary')\n .replace('{assigned}', String(preview.deltas.assigned))\n .replace('{moved}', String(preview.deltas.movedFromPrevious))}\n </p>\n\n {rows.length > 0 ? (\n <div className=\"kf-manager-rooming__assign-list\">\n {rows.map((row) => (\n <div key={row.travellerId} className=\"kf-manager-rooming__delta-row\">\n <span\n className=\"kf-manager-rooming__pill\"\n data-tone={row.kind === 'added' ? 'pos' : 'accent'}\n >\n {row.kind === 'added'\n ? t('chrome.managerTrip.rooming.autoAssign.kindAdded')\n : t('chrome.managerTrip.rooming.autoAssign.kindMoved')}\n </span>\n <span className=\"kf-manager-rooming__pool-name\">\n {row.fullName} → {row.roomCode} ·{' '}\n {t('chrome.managerTrip.rooming.bed.label').replace('{label}', row.bedLabel)}\n </span>\n {row.kind === 'moved' ? (\n <span className=\"kf-manager-rooming__delta-from\">\n {t('chrome.managerTrip.rooming.autoAssign.movedFrom')\n .replace('{room}', row.fromRoomCode ?? '')\n .replace('{bed}', row.fromBedLabel ?? '')}\n </span>\n ) : null}\n </div>\n ))}\n </div>\n ) : null}\n\n {preview.unassigned.length > 0 ? (\n <>\n <p className=\"kf-manager-rooming__filter-sheet-group-title\">\n {t('chrome.managerTrip.rooming.autoAssign.unplaced')}\n </p>\n <div className=\"kf-manager-rooming__assign-list\">\n {preview.unassigned.map((row) => (\n <div key={row.travellerId} className=\"kf-manager-rooming__delta-row\">\n <span className=\"kf-manager-rooming__pool-name\">\n {travellerNames.get(row.travellerId) ?? row.travellerId}\n </span>\n <span className=\"kf-manager-rooming__delta-from\">\n {t(unassignedReasonLabelKey(row.reason))}\n </span>\n </div>\n ))}\n </div>\n </>\n ) : null}\n </>\n )}\n\n <button\n type=\"button\"\n className=\"kf-manager-rooming__sheet-submit kf-press\"\n disabled={loading || applying || preview === undefined || rows.length === 0}\n onClick={() => void handleApply()}\n >\n {applying\n ? t('chrome.managerTrip.rooming.autoAssign.applying')\n : t('chrome.managerTrip.rooming.autoAssign.apply')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// One room. Pixel reference: `frontend-boilerplate/components/manager/trip/\n// rooming/room-card.tsx`, adapted to render the room's FULL bed grid (not\n// just a wrap of occupant chips) — every bed, free or occupied, is its own\n// tappable slot, matching the manager family spec's literal two-tap p90\n// (tap the slot, tap a traveller in the sheet that opens). `status` is the\n// engine's own derived field (`EMPTY`/`OPEN`/`FULL`, recomputed on every\n// read, never stored) — no fabricated \"Conflict\" state exists here since\n// there is no persisted per-room conflict field anywhere on this DTO.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { RoomingBed, RoomingRoom } from '../ManagerRoomingSection.types';\nimport { roomTypeLabelKey } from './deriveRooming';\nimport { ChevronIcon } from './icons';\n\nconst STATUS_TONE: Record<RoomingRoom['status'], 'muted' | 'accent' | 'pos'> = {\n EMPTY: 'muted',\n OPEN: 'accent',\n FULL: 'pos',\n};\n\nconst STATUS_LABEL_KEY: Record<RoomingRoom['status'], string> = {\n EMPTY: 'chrome.managerTrip.rooming.room.status.empty',\n OPEN: 'chrome.managerTrip.rooming.room.status.open',\n FULL: 'chrome.managerTrip.rooming.room.status.full',\n};\n\nexport interface RoomCardProps {\n readonly room: RoomingRoom;\n readonly onSelectBed: (room: RoomingRoom, bed: RoomingBed) => void;\n readonly onEditRoom: (room: RoomingRoom) => void;\n}\n\nexport function RoomCard({ room, onSelectBed, onEditRoom }: RoomCardProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <div className=\"kf-manager-rooming__room-card\">\n <button\n type=\"button\"\n className=\"kf-manager-rooming__room-header kf-press\"\n onClick={() => onEditRoom(room)}\n aria-label={t('chrome.managerTrip.rooming.room.editAriaLabel').replace('{code}', room.code)}\n >\n <span className=\"kf-manager-rooming__room-title\">\n {room.code} ·{' '}\n {t(roomTypeLabelKey(room.roomType)).replace('{count}', String(room.capacity))}\n </span>\n <span className=\"kf-manager-rooming__pill\" data-tone={STATUS_TONE[room.status]}>\n {t(STATUS_LABEL_KEY[room.status])}\n </span>\n <ChevronIcon className=\"kf-manager-rooming__room-chevron\" />\n </button>\n {room.notes !== null ? <p className=\"kf-manager-rooming__room-notes\">{room.notes}</p> : null}\n <div className=\"kf-manager-rooming__bed-grid\">\n {room.beds.map((bed) => (\n <button\n key={bed.bedLabel}\n type=\"button\"\n className=\"kf-manager-rooming__bed-slot kf-press\"\n data-occupied={bed.occupant !== null}\n onClick={() => onSelectBed(room, bed)}\n >\n {bed.occupant !== null ? (\n <>\n <span className=\"kf-manager-rooming__bed-avatar\">{bed.occupant.glyph}</span>\n <span className=\"kf-manager-rooming__bed-name\">\n {bed.occupant.fullName.split(/\\s+/)[0]}\n </span>\n </>\n ) : (\n <span className=\"kf-manager-rooming__bed-empty\">\n {t('chrome.managerTrip.rooming.bed.empty').replace('{label}', bed.bedLabel)}\n </span>\n )}\n </button>\n ))}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The 3-stat strip. Pixel reference: `frontend-boilerplate/components/\n// manager/trip/rooming/rooming-stats-strip.tsx`. The boilerplate's third\n// card is \"Conflicts\" — NOT REAL in this engine (a bed collision is an\n// atomic swap, never a persisted conflict count; this build's own audit,\n// re-confirmed fresh). Replaced with UNASSIGNED, a real, window-scoped\n// count (`unassignedPool.travellers.length`) that is more useful to a\n// manager and requires zero fabrication.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { RoomingBedStats } from './deriveRooming';\n\nexport interface RoomingStatsProps {\n readonly roomCount: number;\n readonly beds: RoomingBedStats;\n readonly unassignedCount: number;\n}\n\nexport function RoomingStats({ roomCount, beds, unassignedCount }: RoomingStatsProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <div className=\"kf-manager-rooming__stats\">\n <div className=\"kf-manager-rooming__stat-cell\">\n <p className=\"kf-manager-rooming__stat-label\">\n {t('chrome.managerTrip.rooming.stats.rooms')}\n </p>\n <p className=\"kf-manager-rooming__stat-value\">{roomCount}</p>\n </div>\n <div className=\"kf-manager-rooming__stat-cell\">\n <p className=\"kf-manager-rooming__stat-label\">\n {t('chrome.managerTrip.rooming.stats.beds')}\n </p>\n <p className=\"kf-manager-rooming__stat-value\">\n {beds.occupied}/{beds.total}\n </p>\n </div>\n <div className=\"kf-manager-rooming__stat-cell\">\n <p className=\"kf-manager-rooming__stat-label\">\n {t('chrome.managerTrip.rooming.stats.unassigned')}\n </p>\n <p\n className=\"kf-manager-rooming__stat-value\"\n data-tone={unassignedCount > 0 ? 'warn' : 'pos'}\n >\n {unassignedCount}\n </p>\n </div>\n </div>\n );\n}\n","'use client';\n\n// The stay-window picker — replaces the boilerplate's fake \"Day 2 ·\n// Himachal Pradesh\" eyebrow with a real scoping control. Rooming has no day\n// concept at all in this engine (verified: \"nothing else on this surface\n// takes a date… only StayWindow has startDate/endDate\") — a stay window is\n// the real unit (a hotel/segment date range), so this is a horizontal chip\n// row over `stayWindows`, one real `label` per chip, reusing the exact\n// active-chip recipe `manager-trip.css`'s own `__chip[data-active]` already\n// establishes (ported here rather than re-invented).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { RoomingStayWindow } from '../ManagerRoomingSection.types';\nimport { EditIcon, PlusIcon } from './icons';\n\n// Same `en-GB` day/short-month recipe `ManagerTripSection/internal/\n// TripHero.tsx`'s own `formatDateRange` already establishes for a trip's\n// own start/end — reused verbatim here for a stay window's real\n// `startDate`/`endDate` rather than a second date-formatting convention.\nconst DATE_RANGE_FORMATTER = new Intl.DateTimeFormat('en-GB', { day: 'numeric', month: 'short' });\n\nfunction formatDateRange(startDate: string, endDate: string): string {\n return `${DATE_RANGE_FORMATTER.format(new Date(startDate))} – ${DATE_RANGE_FORMATTER.format(new Date(endDate))}`;\n}\n\nexport interface StayWindowChipsProps {\n readonly stayWindows: readonly RoomingStayWindow[];\n readonly activeStayWindowId: string | undefined;\n readonly onSelect: (stayWindowId: string) => void;\n readonly onAddWindow: () => void;\n readonly onEditWindow: (stayWindow: RoomingStayWindow) => void;\n}\n\nexport function StayWindowChips({\n stayWindows,\n activeStayWindowId,\n onSelect,\n onAddWindow,\n onEditWindow,\n}: StayWindowChipsProps): ReactNode {\n const { t } = useKaafilChrome();\n const activeWindow = stayWindows.find((window) => window.id === activeStayWindowId);\n return (\n <div className=\"kf-manager-rooming__window-block\">\n <div\n className=\"kf-manager-rooming__window-row\"\n role=\"tablist\"\n aria-label={t('chrome.managerTrip.rooming.windows.ariaLabel')}\n >\n {stayWindows.map((window) => {\n const active = window.id === activeStayWindowId;\n return (\n <span key={window.id} className=\"kf-manager-rooming__window-chip-group\">\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n className=\"kf-manager-rooming__window-chip kf-press\"\n data-active={active}\n onClick={() => onSelect(window.id)}\n >\n {window.label}\n </button>\n {active ? (\n <button\n type=\"button\"\n className=\"kf-manager-rooming__window-edit kf-press\"\n aria-label={t('chrome.managerTrip.rooming.window.edit')}\n onClick={() => onEditWindow(window)}\n >\n <EditIcon />\n </button>\n ) : null}\n </span>\n );\n })}\n <button\n type=\"button\"\n className=\"kf-manager-rooming__window-add kf-press\"\n onClick={onAddWindow}\n aria-label={t('chrome.managerTrip.rooming.window.add')}\n >\n <PlusIcon />\n </button>\n </div>\n {activeWindow !== undefined ? (\n <p className=\"kf-manager-rooming__window-dates\">\n {formatDateRange(activeWindow.startDate, activeWindow.endDate)}\n </p>\n ) : null}\n </div>\n );\n}\n","'use client';\n\n// Add/edit/delete a stay window — fields from the REAL\n// `CreateRoomingStayWindowRequest`/`PatchRoomingStayWindowRequest`: `label`,\n// `startDate`/`endDate` (the SDK's own `DateTimeInput = Date | number |\n// string` accepts a plain `Date` directly — no manual ISO formatting\n// needed), `sortOrder?`. Overlap is half-open `[start, end)` — validated\n// server-side, not re-implemented here (a client-side \"looks like it\n// overlaps\" check would risk disagreeing with the engine's own rule).\n//\n// Delete follows the same upfront-confirm-then-force pattern `AddRoomSheet`\n// establishes, for the same reason: the write is enqueued through the\n// outbox, so a `422 STAY_WINDOW_HAS_ASSIGNMENTS` can't be caught\n// synchronously to drive a two-step retry UI.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { RoomingRoom, RoomingStayWindow } from '../ManagerRoomingSection.types';\nimport { CloseIcon, TrashIcon } from './icons';\n\nexport interface StayWindowInput {\n readonly label: string;\n readonly startDate: Date;\n readonly endDate: Date;\n readonly sortOrder: number | undefined;\n}\n\nexport interface StayWindowSheetProps {\n readonly open: boolean;\n /** `undefined` = add mode. Present = edit mode, pre-filled from this window. */\n readonly stayWindow: RoomingStayWindow | undefined;\n /** This window's rooms — only used to show the real assigned-bed count in\n * the delete-confirm copy. */\n readonly roomsInWindow: readonly RoomingRoom[];\n readonly onClose: () => void;\n readonly onCreate: (input: StayWindowInput) => Promise<void>;\n readonly onPatch: (\n input: StayWindowInput & { windowId: string; version: number },\n ) => Promise<void>;\n readonly onDelete: (input: { windowId: string; version: number }) => Promise<void>;\n}\n\nfunction toDateInputValue(iso: string | undefined): string {\n if (iso === undefined) {\n return '';\n }\n return iso.slice(0, 10);\n}\n\nexport function StayWindowSheet({\n open,\n stayWindow,\n roomsInWindow,\n onClose,\n onCreate,\n onPatch,\n onDelete,\n}: StayWindowSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [label, setLabel] = useState('');\n const [startDate, setStartDate] = useState('');\n const [endDate, setEndDate] = useState('');\n const [submitting, setSubmitting] = useState(false);\n const [confirmingDelete, setConfirmingDelete] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setLabel(stayWindow?.label ?? '');\n setStartDate(toDateInputValue(stayWindow?.startDate));\n setEndDate(toDateInputValue(stayWindow?.endDate));\n setSubmitting(false);\n setConfirmingDelete(false);\n }, [open, stayWindow]);\n\n if (!open) {\n return null;\n }\n\n const canSubmit =\n label.trim().length > 0 && startDate.length > 0 && endDate.length > 0 && !submitting;\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n const input: StayWindowInput = {\n label: label.trim(),\n startDate: new Date(startDate),\n endDate: new Date(endDate),\n sortOrder: stayWindow?.sortOrder,\n };\n setSubmitting(true);\n try {\n if (stayWindow === undefined) {\n await onCreate(input);\n } else {\n await onPatch({ ...input, windowId: stayWindow.id, version: stayWindow.version });\n }\n onClose();\n } finally {\n setSubmitting(false);\n }\n };\n\n const assignedCount = roomsInWindow.reduce(\n (sum, room) => sum + room.beds.filter((bed) => bed.occupant !== null).length,\n 0,\n );\n\n const handleDelete = async (): Promise<void> => {\n if (stayWindow === undefined) {\n return;\n }\n setSubmitting(true);\n try {\n await onDelete({ windowId: stayWindow.id, version: stayWindow.version });\n onClose();\n } finally {\n setSubmitting(false);\n }\n };\n\n return (\n <div className=\"kf-manager-rooming__sheet-backdrop\">\n <div\n className=\"kf-manager-rooming__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={\n stayWindow === undefined\n ? t('chrome.managerTrip.rooming.addWindow.title')\n : t('chrome.managerTrip.rooming.editWindow.title')\n }\n >\n <div className=\"kf-manager-rooming__sheet-header\">\n <p className=\"kf-manager-rooming__sheet-title\">\n {stayWindow === undefined\n ? t('chrome.managerTrip.rooming.addWindow.title')\n : t('chrome.managerTrip.rooming.editWindow.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-rooming__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {confirmingDelete ? (\n <>\n <p className=\"kf-manager-rooming__confirm-copy\">\n {assignedCount > 0\n ? t('chrome.managerTrip.rooming.deleteWindow.confirmWithAssignments')\n .replace('{rooms}', String(roomsInWindow.length))\n .replace('{beds}', String(assignedCount))\n : t('chrome.managerTrip.rooming.deleteWindow.confirm')}\n </p>\n <div className=\"kf-manager-rooming__filter-sheet-footer\">\n <button\n type=\"button\"\n className=\"kf-manager-rooming__filter-sheet-clear kf-press\"\n onClick={() => setConfirmingDelete(false)}\n >\n {t('chrome.cancel')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-rooming__danger-button kf-press\"\n disabled={submitting}\n onClick={() => void handleDelete()}\n >\n {t('chrome.managerTrip.rooming.deleteWindow.confirmAction')}\n </button>\n </div>\n </>\n ) : (\n <>\n <label className=\"kf-manager-rooming__field-label\" htmlFor=\"kf-rooming-window-label\">\n {t('chrome.managerTrip.rooming.addWindow.label')}\n </label>\n <input\n id=\"kf-rooming-window-label\"\n type=\"text\"\n value={label}\n onChange={(event) => setLabel(event.target.value)}\n className=\"kf-manager-rooming__field-input\"\n placeholder=\"Hotel Blue Sea, Goa\"\n />\n\n <label className=\"kf-manager-rooming__field-label\" htmlFor=\"kf-rooming-window-start\">\n {t('chrome.managerTrip.rooming.addWindow.startDate')}\n </label>\n <input\n id=\"kf-rooming-window-start\"\n type=\"date\"\n value={startDate}\n onChange={(event) => setStartDate(event.target.value)}\n className=\"kf-manager-rooming__field-input\"\n />\n\n <label className=\"kf-manager-rooming__field-label\" htmlFor=\"kf-rooming-window-end\">\n {t('chrome.managerTrip.rooming.addWindow.endDate')}\n </label>\n <input\n id=\"kf-rooming-window-end\"\n type=\"date\"\n value={endDate}\n onChange={(event) => setEndDate(event.target.value)}\n className=\"kf-manager-rooming__field-input\"\n />\n\n <button\n type=\"button\"\n className=\"kf-manager-rooming__sheet-submit kf-press\"\n disabled={!canSubmit}\n onClick={() => void handleSubmit()}\n >\n {submitting\n ? t('chrome.managerTrip.rooming.addWindow.submitting')\n : stayWindow === undefined\n ? t('chrome.managerTrip.rooming.addWindow.submit')\n : t('chrome.managerTrip.rooming.editWindow.submit')}\n </button>\n\n {stayWindow !== undefined ? (\n <button\n type=\"button\"\n className=\"kf-manager-rooming__delete-link kf-press\"\n onClick={() => setConfirmingDelete(true)}\n >\n <TrashIcon /> {t('chrome.managerTrip.rooming.deleteWindow.link')}\n </button>\n ) : null}\n </>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The persistent \"who still needs a bed\" pool — real `unassignedPool`,\n// window-scoped. Not just a transient auto-assign-preview list (unlike the\n// boilerplate, where this only ever appears inside the auto-assign flow):\n// this composite surfaces it on the main panel too, matching the manager\n// family's own p90 framing (\"assign one unassigned traveller to a bed\") —\n// tapping a pool row opens the SAME `AssignBedSheet` pre-armed with that\n// traveller, so a manager can work bed-first (tap a slot) OR person-first\n// (tap the pool row) with one shared flow underneath.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { RoomingOccupantRow } from '../ManagerRoomingSection.types';\n\nexport interface UnassignedPoolSectionProps {\n readonly travellers: readonly RoomingOccupantRow[];\n readonly loaded: boolean;\n readonly onSelectTraveller: (traveller: RoomingOccupantRow) => void;\n}\n\nexport function UnassignedPoolSection({\n travellers,\n loaded,\n onSelectTraveller,\n}: UnassignedPoolSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n\n if (loaded && travellers.length === 0) {\n return null;\n }\n\n return (\n <section aria-label={t('chrome.managerTrip.rooming.pool.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-rooming__eyebrow-row\">\n {t('chrome.managerTrip.rooming.pool.eyebrow')}\n <span className=\"kf-manager-rooming__pool-count\">{travellers.length}</span>\n </p>\n <div className=\"kf-manager-rooming__card kf-manager-rooming__pool\">\n {!loaded ? (\n <div className=\"kf-manager-rooming__pool-skeleton\" />\n ) : (\n travellers.map((traveller) => (\n <button\n key={traveller.travellerId}\n type=\"button\"\n className=\"kf-manager-rooming__pool-row kf-press\"\n onClick={() => onSelectTraveller(traveller)}\n >\n <span className=\"kf-manager-rooming__pool-avatar\">{traveller.glyph}</span>\n <span className=\"kf-manager-rooming__pool-name\">{traveller.fullName}</span>\n {traveller.dietary !== null ? (\n <span className=\"kf-manager-rooming__pill\" data-tone=\"soft\">\n {traveller.dietary}\n </span>\n ) : null}\n {traveller.medicalFlag ? (\n <span className=\"kf-manager-rooming__pill\" data-tone=\"warn\">\n {t('chrome.managerTrip.rooming.pool.medical')}\n </span>\n ) : null}\n </button>\n ))\n )}\n </div>\n </section>\n );\n}\n","'use client';\n\n// The Rooming tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'rooming'` tab panel.\n// `useRooming(tripRef)` is the one real hook it reads (`08-core-hooks.md\n// §3`'s own exemplar row) — already complete, no new `/core` hook needed.\n//\n// Rooming is STAY-WINDOW-scoped, never \"day\"-scoped (the engine has no day\n// concept for rooming at all — verified this build's own audit) — the\n// boilerplate's fake \"Day 2 · Himachal Pradesh\" eyebrow is replaced with a\n// real stay-window chip row driving which rooms/pool are shown. The\n// boilerplate's third stat card (\"Conflicts\") has no real backing anywhere\n// in this domain (a bed collision is an atomic swap, never a persisted\n// conflict count) — replaced with UNASSIGNED, a real count.\n//\n// Composition order: stay-window chips → 3 stat cards → persistent\n// unassigned pool → room list (each room's full bed grid, every slot\n// tappable) → \"Add a room\" tail card. Add-room/auto-assign/stay-window\n// management all open as bottom sheets, never a routed page (hard rule #9,\n// and the user's own explicit ask — the boilerplate reference opens these\n// as full pages).\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useRooming } from '../../../../core/hooks/useRooming.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { AddRoomSheet } from './internal/AddRoomSheet';\nimport { AssignBedSheet, type AssignBedSheetContext } from './internal/AssignBedSheet';\nimport { AutoAssignSheet } from './internal/AutoAssignSheet';\nimport {\n bedStatsForRooms,\n defaultActiveStayWindowId,\n isLiveRoom,\n isLiveStayWindow,\n roomsForWindow,\n sortedStayWindows,\n} from './internal/deriveRooming';\nimport { PlusIcon, WandIcon } from './internal/icons';\nimport { RoomCard } from './internal/RoomCard';\nimport { RoomingStats } from './internal/RoomingStats';\nimport { StayWindowChips } from './internal/StayWindowChips';\nimport { StayWindowSheet } from './internal/StayWindowSheet';\nimport { UnassignedPoolSection } from './internal/UnassignedPoolSection';\nimport type {\n ManagerRoomingSectionProps,\n RoomingRoom,\n RoomingStayWindow,\n} from './ManagerRoomingSection.types';\n\nexport function ManagerRoomingSection({\n tripRef,\n onOpenTraveller,\n emptyView,\n components,\n style,\n}: ManagerRoomingSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const rooming = useRooming(tripRef);\n\n // Tier-4 named-component overrides (`04-customization-ladder.md`).\n const Stats = components?.Stats ?? RoomingStats;\n const RoomCardComponent = components?.RoomCard ?? RoomCard;\n const UnassignedPool = components?.UnassignedPool ?? UnassignedPoolSection;\n\n const [activeStayWindowId, setActiveStayWindowId] = useState<string | undefined>(undefined);\n const [assignContext, setAssignContext] = useState<AssignBedSheetContext | undefined>(undefined);\n const [addRoomOpen, setAddRoomOpen] = useState(false);\n const [editingRoom, setEditingRoom] = useState<RoomingRoom | undefined>(undefined);\n const [autoAssignOpen, setAutoAssignOpen] = useState(false);\n const [windowSheetOpen, setWindowSheetOpen] = useState(false);\n const [editingWindow, setEditingWindow] = useState<RoomingStayWindow | undefined>(undefined);\n\n const liveRooms = useMemo(\n () => (rooming.status === 'ready' ? rooming.rooms.filter(isLiveRoom) : []),\n [rooming],\n );\n const sortedWindows = useMemo(\n () =>\n rooming.status === 'ready'\n ? sortedStayWindows(rooming.stayWindows.filter(isLiveStayWindow))\n : [],\n [rooming],\n );\n\n useEffect(() => {\n if (activeStayWindowId !== undefined) {\n return;\n }\n const fallback = defaultActiveStayWindowId(sortedWindows);\n if (fallback !== undefined) {\n setActiveStayWindowId(fallback);\n }\n }, [activeStayWindowId, sortedWindows]);\n\n const refreshPool = rooming.status === 'ready' ? rooming.unassignedPool.refresh : undefined;\n useEffect(() => {\n if (refreshPool === undefined || activeStayWindowId === undefined) {\n return;\n }\n void refreshPool(activeStayWindowId);\n }, [refreshPool, activeStayWindowId]);\n\n if (rooming.status === 'loading') {\n return (\n <div className=\"kf-manager-rooming__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-rooming__skeleton-block\" />\n <div className=\"kf-manager-rooming__skeleton-line\" />\n <div className=\"kf-manager-rooming__skeleton-line kf-manager-rooming__skeleton-line--short\" />\n </div>\n );\n }\n if (rooming.status === 'dark' || rooming.status === 'error') {\n return null;\n }\n\n const roomsInWindow = roomsForWindow(liveRooms, activeStayWindowId);\n const beds = bedStatsForRooms(roomsInWindow);\n const unassignedCount = rooming.unassignedPool.travellers.length;\n\n const travellerNames = new Map<string, string>();\n for (const traveller of rooming.unassignedPool.travellers) {\n travellerNames.set(traveller.travellerId, traveller.fullName);\n }\n for (const room of liveRooms) {\n for (const bed of room.beds) {\n if (bed.occupant !== null) {\n travellerNames.set(bed.occupant.travellerId, bed.occupant.fullName);\n }\n }\n }\n\n const resolvedEmptyView =\n emptyView !== undefined ? (typeof emptyView === 'function' ? emptyView() : emptyView) : null;\n\n return (\n <div className=\"kf-manager-rooming\" style={tokenStyle(style)}>\n {sortedWindows.length === 0 ? (\n <div className=\"kf-manager-rooming__card kf-manager-rooming__empty\">\n <p>{t('chrome.managerTrip.rooming.noWindows')}</p>\n <button\n type=\"button\"\n className=\"kf-manager-rooming__add-room-button kf-press\"\n onClick={() => {\n setEditingWindow(undefined);\n setWindowSheetOpen(true);\n }}\n >\n <PlusIcon /> {t('chrome.managerTrip.rooming.window.add')}\n </button>\n </div>\n ) : (\n <>\n <StayWindowChips\n stayWindows={sortedWindows}\n activeStayWindowId={activeStayWindowId}\n onSelect={setActiveStayWindowId}\n onAddWindow={() => {\n setEditingWindow(undefined);\n setWindowSheetOpen(true);\n }}\n onEditWindow={(window) => {\n setEditingWindow(window);\n setWindowSheetOpen(true);\n }}\n />\n\n <Stats roomCount={roomsInWindow.length} beds={beds} unassignedCount={unassignedCount} />\n\n <UnassignedPool\n travellers={rooming.unassignedPool.travellers}\n loaded={rooming.unassignedPool.loaded}\n onSelectTraveller={(traveller) => setAssignContext({ kind: 'traveller', traveller })}\n />\n\n <section aria-label={t('chrome.managerTrip.rooming.rooms.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-rooming__eyebrow-row\">\n {t('chrome.managerTrip.rooming.rooms.eyebrow')}\n <button\n type=\"button\"\n className=\"kf-manager-rooming__autoassign-link kf-press\"\n onClick={() => setAutoAssignOpen(true)}\n >\n <WandIcon /> {t('chrome.managerTrip.rooming.autoAssign.button')}\n </button>\n </p>\n\n {roomsInWindow.length === 0\n ? (resolvedEmptyView ?? (\n <div className=\"kf-manager-rooming__card kf-manager-rooming__empty\">\n {t('chrome.managerTrip.rooming.noRooms')}\n </div>\n ))\n : roomsInWindow.map((room) => (\n <RoomCardComponent\n key={room.id}\n room={room}\n onSelectBed={(selectedRoom, bed) =>\n setAssignContext({ kind: 'bed', room: selectedRoom, bed })\n }\n onEditRoom={(selectedRoom) => {\n setEditingRoom(selectedRoom);\n setAddRoomOpen(true);\n }}\n />\n ))}\n\n <button\n type=\"button\"\n className=\"kf-manager-rooming__add-room-card kf-press\"\n onClick={() => {\n setEditingRoom(undefined);\n setAddRoomOpen(true);\n }}\n >\n <span className=\"kf-manager-rooming__add-room-icon\">\n <PlusIcon />\n </span>\n <span className=\"kf-manager-rooming__add-room-copy\">\n <span className=\"kf-manager-rooming__add-room-title\">\n {t('chrome.managerTrip.rooming.addRoom.tailTitle')}\n </span>\n <span className=\"kf-manager-rooming__add-room-subtitle\">\n {t('chrome.managerTrip.rooming.addRoom.tailSubtitle')}\n </span>\n </span>\n </button>\n </section>\n </>\n )}\n\n <AssignBedSheet\n open={assignContext !== undefined}\n context={assignContext}\n rooms={roomsInWindow}\n poolTravellers={rooming.unassignedPool.travellers}\n onAssign={async (input) => {\n await rooming.assign(input);\n }}\n onUnassign={async (input) => {\n await rooming.assign({ ...input, bedLabel: null });\n }}\n onOpenTraveller={onOpenTraveller}\n onClose={() => setAssignContext(undefined)}\n />\n\n <AddRoomSheet\n open={addRoomOpen}\n room={editingRoom}\n onClose={() => setAddRoomOpen(false)}\n onCreate={async (input) => {\n if (activeStayWindowId === undefined) {\n return;\n }\n await rooming.createRoom({ stayWindowId: activeStayWindowId, ...input });\n }}\n onPatch={async (input) => {\n await rooming.patchRoom(input);\n }}\n onDelete={async (input) => {\n await rooming.removeRoom({ ...input, force: true });\n }}\n />\n\n <AutoAssignSheet\n open={autoAssignOpen}\n stayWindowId={activeStayWindowId}\n rooms={roomsInWindow}\n travellerNames={travellerNames}\n autoAssign={rooming.autoAssign}\n onApplied={() => {\n void rooming.unassignedPool.refresh(activeStayWindowId);\n }}\n onClose={() => setAutoAssignOpen(false)}\n />\n\n <StayWindowSheet\n open={windowSheetOpen}\n stayWindow={editingWindow}\n roomsInWindow={\n editingWindow !== undefined ? roomsForWindow(liveRooms, editingWindow.id) : []\n }\n onClose={() => setWindowSheetOpen(false)}\n onCreate={async (input) => {\n await rooming.createStayWindow(input);\n }}\n onPatch={async (input) => {\n await rooming.patchStayWindow(input);\n }}\n onDelete={async (input) => {\n await rooming.removeStayWindow({ ...input, force: true });\n if (input.windowId === activeStayWindowId) {\n setActiveStayWindowId(undefined);\n }\n }}\n />\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function PhoneIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92Z\" />\n </svg>\n );\n}\n\nexport function SearchIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n );\n}\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n","'use client';\n\n// One roster row — the thin bulk shape (`traveller.fullName`/`phone`/\n// `dietary`), never the boilerplate's richer per-row mockup (emergency\n// contact, pickup-point name, gender, medical flags) — that data lives only\n// on the single-traveller detail read, already rendered by\n// `ManagerTravellerProfileSection` behind this row's own `onOpen`.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { PartiesTripRosterRow } from '../ManagerRosterSection.types';\nimport { ChevronIcon, PhoneIcon } from './icons';\n\nfunction initials(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n return `${parts[0]?.[0] ?? ''}${parts[parts.length - 1]?.[0] ?? ''}`.toUpperCase();\n}\n\nexport interface RosterRowProps {\n readonly row: PartiesTripRosterRow;\n readonly onOpen: (travellerId: string, fullName: string) => void;\n}\n\nexport function RosterRow({ row, onOpen }: RosterRowProps): ReactNode {\n const { t } = useKaafilChrome();\n const { traveller } = row;\n\n return (\n <div className=\"kf-manager-roster__row\">\n <button\n type=\"button\"\n className=\"kf-manager-roster__row-main kf-press\"\n onClick={() => onOpen(traveller.travellerId, traveller.fullName)}\n >\n <span className=\"kf-manager-roster__avatar\">{initials(traveller.fullName)}</span>\n <span className=\"kf-manager-roster__body\">\n <span className=\"kf-manager-roster__name\">{traveller.fullName}</span>\n {row.dietary !== null ? (\n <span className=\"kf-manager-roster__dietary\">{row.dietary}</span>\n ) : null}\n </span>\n <ChevronIcon className=\"kf-manager-roster__chevron\" aria-hidden=\"true\" />\n </button>\n {traveller.phone !== null ? (\n <a\n className=\"kf-manager-roster__call kf-press\"\n href={`tel:${traveller.phone}`}\n aria-label={t('chrome.managerTrip.roster.call').replace('{name}', traveller.fullName)}\n >\n <PhoneIcon aria-hidden=\"true\" />\n </a>\n ) : null}\n </div>\n );\n}\n","'use client';\n\n// Search input — no debounce, same reasoning `ManagerManifestSection`'s own\n// `TripManifestSearchRow.tsx` documents: this filters an already-resident,\n// already-fetched roster in memory, so there is no network call to debounce.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { SearchIcon } from './icons';\n\nexport interface RosterSearchProps {\n readonly query: string;\n readonly onQueryChange: (query: string) => void;\n}\n\nexport function RosterSearch({ query, onQueryChange }: RosterSearchProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <label className=\"kf-manager-roster__search\">\n <SearchIcon aria-hidden=\"true\" />\n <input\n type=\"search\"\n value={query}\n onChange={(event) => onQueryChange(event.target.value)}\n placeholder={t('chrome.managerTrip.roster.searchPlaceholder')}\n className=\"kf-manager-roster__search-input\"\n />\n </label>\n );\n}\n","'use client';\n\n// The Roster tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'roster'` tab panel\n// (TREK trips only, per `computeTripTabs.ts`). `useParties(tripRef)\n// .tripRoster` is the one real read — the SAME hook/read\n// `ManagerManifestSection` already uses for its own manifest rows. See this\n// composite's own `.types.ts` header for why Roster is a presentation-layer\n// sibling of Manifest, not a new data source.\n//\n// SCOPE: a flat, searchable people list with tap-through to\n// `ManagerTravellerProfileSection` (via `onOpenTraveller`, the same prop\n// `ManagerManifestSection` already exposes) for the richer per-person detail\n// (emergency contact, medical, room/seat) — never fetched N+1 in bulk here.\n\nimport type { ReactNode } from 'react';\nimport { useMemo, useState } from 'react';\nimport { useParties } from '../../../../core/hooks/useParties.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { RosterRow } from './internal/RosterRow';\nimport { RosterSearch } from './internal/RosterSearch';\nimport type { ManagerRosterSectionProps } from './ManagerRosterSection.types';\n\nexport function ManagerRosterSection({\n tripRef,\n onOpenTraveller,\n style,\n}: ManagerRosterSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const parties = useParties(tripRef);\n const [query, setQuery] = useState('');\n\n const rows = useMemo(\n () => (parties.status === 'ready' ? parties.tripRoster.rows : []),\n [parties],\n );\n const filteredRows = useMemo(() => {\n const needle = query.trim().toLowerCase();\n if (needle.length === 0) {\n return rows;\n }\n return rows.filter(\n (row) =>\n row.traveller.fullName.toLowerCase().includes(needle) ||\n (row.traveller.phone ?? '').includes(needle),\n );\n }, [rows, query]);\n\n if (parties.status === 'loading') {\n return (\n <div className=\"kf-manager-roster__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-roster__skeleton-line\" />\n <div className=\"kf-manager-roster__skeleton-line\" />\n <div className=\"kf-manager-roster__skeleton-line kf-manager-roster__skeleton-line--short\" />\n </div>\n );\n }\n\n if (parties.status === 'error') {\n return null;\n }\n\n return (\n <div className=\"kf-manager-roster\" style={tokenStyle(style)}>\n <p className=\"kf-manager-roster__count\">\n {t('chrome.managerTrip.roster.count').replace('{count}', String(rows.length))}\n </p>\n <RosterSearch query={query} onQueryChange={setQuery} />\n {rows.length === 0 ? (\n <p className=\"kf-manager-roster__empty\">{t('chrome.managerTrip.roster.empty')}</p>\n ) : filteredRows.length === 0 ? (\n <p className=\"kf-manager-roster__empty\">{t('chrome.managerTrip.roster.noMatches')}</p>\n ) : (\n <div className=\"kf-manager-roster__list\">\n {filteredRows.map((row) => (\n <RosterRow key={row.traveller.travellerId} row={row} onOpen={onOpenTraveller} />\n ))}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n\nexport function WarningIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <line x1=\"12\" x2=\"12\" y1=\"9\" y2=\"13\" />\n <line x1=\"12\" x2=\"12.01\" y1=\"17\" y2=\"17\" />\n </svg>\n );\n}\n\nexport function ClockIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n );\n}\n\nexport function InboxIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 11 3 3L22 4\" />\n <path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n );\n}\n","'use client';\n\n// `ConflictResolver` — \"the one shared UI for every 409 version conflict a\n// manager can hit: a full-screen, single-column sequential compare — one\n// field's before/after at a time, '2 of 4'.\" The engine never auto-merges\n// (`useConflicts.ts`'s own header) — this sheet's only two OUTCOMES are\n// `keep-queued`/`keep-current`, applied to the whole op at once; the\n// field-by-field paging below is purely a REVIEW aid before that one\n// decision, never a per-field resolution (the real wire has no such\n// concept — a version conflict is resolved or it isn't).\n//\n// `queuedValue`/`currentValue` are both real, `unknown`-typed data off\n// `useConflicts()` (`op.body` and a snapshot row respectively) — this sheet\n// never assumes a fixed shape, only that a plain object diffs key-by-key\n// and anything else (a primitive, or a missing `currentValue` because no\n// `entity` was set on the op) renders as its own single \"field.\"\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ConflictRecord } from '../ManagerSyncCenterSection.types';\nimport { CloseIcon } from './icons';\n\ninterface DiffField {\n readonly key: string;\n readonly queued: unknown;\n readonly current: unknown;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction diffFields(queuedValue: unknown, currentValue: unknown): readonly DiffField[] {\n if (!isRecord(queuedValue)) {\n return [{ key: 'value', queued: queuedValue, current: currentValue }];\n }\n const currentRecord = isRecord(currentValue) ? currentValue : {};\n const keys = Array.from(new Set([...Object.keys(queuedValue), ...Object.keys(currentRecord)]));\n const fields = keys\n .map((key) => ({ key, queued: queuedValue[key], current: currentRecord[key] }))\n .filter((field) => JSON.stringify(field.queued) !== JSON.stringify(field.current));\n return fields.length > 0\n ? fields\n : [{ key: 'value', queued: queuedValue, current: currentValue }];\n}\n\nfunction formatFieldValue(value: unknown): string {\n if (value === undefined) {\n return '—';\n }\n // A literal, not translated copy — this renders an actual `null` field\n // value from the wire, not user-facing prose that varies by locale.\n if (value === null) {\n return 'null';\n }\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n return JSON.stringify(value);\n}\n\nexport interface ConflictResolverSheetProps {\n readonly conflict: ConflictRecord | undefined;\n readonly onResolve: (opId: string, choice: 'keep-queued' | 'keep-current') => Promise<void>;\n readonly onClose: () => void;\n}\n\nexport function ConflictResolverSheet({\n conflict,\n onResolve,\n onClose,\n}: ConflictResolverSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [fieldIndex, setFieldIndex] = useState(0);\n const [pending, setPending] = useState(false);\n\n // Resets the field-review position whenever a DIFFERENT conflict opens —\n // `conflict?.opId` is the real identity change biome's own static analysis\n // can't see matters here (it only sees `conflict` isn't read in the body).\n // biome-ignore lint/correctness/useExhaustiveDependencies: see comment above\n useEffect(() => {\n setFieldIndex(0);\n }, [conflict?.opId]);\n\n useEffect(() => {\n if (conflict === undefined) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [conflict, onClose]);\n\n if (conflict === undefined) {\n return null;\n }\n\n const fields = diffFields(conflict.queuedValue, conflict.currentValue);\n const boundedIndex = Math.min(fieldIndex, fields.length - 1);\n const field = fields[boundedIndex];\n\n async function handleResolve(choice: 'keep-queued' | 'keep-current'): Promise<void> {\n if (conflict === undefined) {\n return;\n }\n setPending(true);\n try {\n await onResolve(conflict.opId, choice);\n onClose();\n } finally {\n setPending(false);\n }\n }\n\n return (\n <div className=\"kf-manager-sync-center__sheet-backdrop\">\n <div\n className=\"kf-manager-sync-center__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerSyncCenter.resolver.title')}\n >\n <div className=\"kf-manager-sync-center__sheet-header\">\n <p className=\"kf-manager-sync-center__sheet-title\">\n {t('chrome.managerSyncCenter.resolver.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-sync-center__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <p className=\"kf-manager-sync-center__sheet-entity\">{conflict.entity}</p>\n\n {field !== undefined ? (\n <div className=\"kf-manager-sync-center__field\">\n <p className=\"kf-manager-sync-center__field-progress\">\n {t('chrome.managerSyncCenter.resolver.fieldProgress')\n .replace('{index}', String(boundedIndex + 1))\n .replace('{total}', String(fields.length))}\n </p>\n <p className=\"kf-manager-sync-center__field-key\">{field.key}</p>\n <div className=\"kf-manager-sync-center__field-compare\">\n <div className=\"kf-manager-sync-center__field-cell\">\n <p className=\"kf-eyebrow\">{t('chrome.managerSyncCenter.resolver.queued')}</p>\n <p className=\"kf-manager-sync-center__field-value\">\n {formatFieldValue(field.queued)}\n </p>\n </div>\n <div className=\"kf-manager-sync-center__field-cell\">\n <p className=\"kf-eyebrow\">{t('chrome.managerSyncCenter.resolver.current')}</p>\n <p className=\"kf-manager-sync-center__field-value\">\n {formatFieldValue(field.current)}\n </p>\n </div>\n </div>\n {fields.length > 1 ? (\n <div className=\"kf-manager-sync-center__field-nav\">\n <button\n type=\"button\"\n className=\"kf-manager-sync-center__field-nav-button kf-press\"\n disabled={boundedIndex === 0}\n onClick={() => setFieldIndex((index) => Math.max(0, index - 1))}\n >\n {t('chrome.managerSyncCenter.resolver.prevField')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-sync-center__field-nav-button kf-press\"\n disabled={boundedIndex === fields.length - 1}\n onClick={() => setFieldIndex((index) => Math.min(fields.length - 1, index + 1))}\n >\n {t('chrome.managerSyncCenter.resolver.nextField')}\n </button>\n </div>\n ) : null}\n </div>\n ) : null}\n\n <div className=\"kf-manager-sync-center__sheet-actions\">\n <button\n type=\"button\"\n className=\"kf-manager-sync-center__resolve-button kf-manager-sync-center__resolve-button--secondary kf-press\"\n disabled={pending}\n onClick={() => void handleResolve('keep-current')}\n >\n {t('chrome.managerSyncCenter.resolver.keepCurrent')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-sync-center__resolve-button kf-manager-sync-center__resolve-button--primary kf-press\"\n disabled={pending}\n onClick={() => void handleResolve('keep-queued')}\n >\n {t('chrome.managerSyncCenter.resolver.keepQueued')}\n </button>\n </div>\n </div>\n </div>\n );\n}\n","// `13-i18n-and-formatting.md`'s \"never the ambient browser locale\" rule —\n// same fixed `'en-GB'` convention this session's own composites establish.\nconst SYNC_CENTER_DATE_FORMATTER = new Intl.DateTimeFormat('en-GB', {\n day: 'numeric',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n});\n\nexport function formatSyncCenterDate(iso: string | undefined): string | undefined {\n return iso === undefined ? undefined : SYNC_CENTER_DATE_FORMATTER.format(new Date(iso));\n}\n","'use client';\n\n// One outbox op — the `OutboxDrawer` spec's own \"simple tappable list\" row.\n// A CONFLICTED row (real `parkReason.code === 'CONFLICT_VERSION'`) is the\n// only one with anywhere real to go (`ConflictResolver`) — every other\n// parked reason already carries its own ready-made `userMessage` copy\n// straight from the engine (`OutboxParkReason`'s own doc comment: \"copy fit\n// to show a manager\"), so this row renders that verbatim rather than\n// re-deriving a second explanation per `code`. A non-conflicted, non-parked\n// row (pending/inflight) is informational only — there is nothing a manager\n// can DO to a routinely-queued write beyond wait, so it renders inert\n// (`OutboxDrawer`'s own spec: \"does not retry a parked op\").\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { OutboxOp } from '../ManagerSyncCenterSection.types';\nimport { formatSyncCenterDate } from './formatSyncCenterDate';\nimport { ChevronIcon, ClockIcon, WarningIcon } from './icons';\n\nexport interface OutboxRowProps {\n readonly op: OutboxOp;\n readonly isConflict: boolean;\n readonly label: string;\n readonly onSelect: (op: OutboxOp) => void;\n}\n\nexport function OutboxRow({ op, isConflict, label, onSelect }: OutboxRowProps): ReactNode {\n const { t } = useKaafilChrome();\n const statusLabel = isConflict\n ? t('chrome.managerSyncCenter.status.conflict')\n : op.status === 'parked'\n ? t('chrome.managerSyncCenter.status.parked')\n : op.status === 'inflight'\n ? t('chrome.managerSyncCenter.status.inflight')\n : t('chrome.managerSyncCenter.status.pending');\n const interactive = isConflict;\n const Row = interactive ? 'button' : 'div';\n\n return (\n <Row\n type={interactive ? 'button' : undefined}\n className=\"kf-manager-sync-center__row kf-press\"\n data-status={isConflict ? 'conflict' : op.status}\n onClick={interactive ? () => onSelect(op) : undefined}\n >\n <span\n className=\"kf-manager-sync-center__row-icon\"\n data-status={isConflict ? 'conflict' : op.status}\n >\n {isConflict || op.status === 'parked' ? <WarningIcon /> : <ClockIcon />}\n </span>\n <span className=\"kf-manager-sync-center__row-body\">\n <span className=\"kf-manager-sync-center__row-title\">{label}</span>\n <span className=\"kf-manager-sync-center__row-meta\">\n {statusLabel}\n {formatSyncCenterDate(op.enqueuedAt) !== undefined\n ? ` · ${formatSyncCenterDate(op.enqueuedAt)}`\n : ''}\n </span>\n {!isConflict && op.status === 'parked' && op.parkReason !== undefined ? (\n <span className=\"kf-manager-sync-center__row-reason\">{op.parkReason.userMessage}</span>\n ) : null}\n </span>\n {interactive ? <ChevronIcon className=\"kf-manager-sync-center__row-chevron\" /> : null}\n </Row>\n );\n}\n","'use client';\n\n// `ManagerSyncCenterSection` — `families/manager/11-offline-sync-and-\n// notifications.md §SyncCenterScreen`: \"the outbox/conflict surface: lets a\n// manager see everything not yet synced and resolve a conflict when one\n// exists.\" Composes that same spec's `§OutboxDrawer` (the itemized list\n// below) with `§ConflictResolver` (the sheet a conflicted row opens) —\n// exactly the composition the spec describes, never a second independent\n// instance of either.\n//\n// This is the real destination the \"N need attention\" text in\n// `KaafilManagerApp`'s own `SyncStatusBadge` was pointing at with nowhere\n// to go before this composite existed (a real bug, not a UI polish nit).\n//\n// Backed by `useOfflineEngine()` (`08-core-hooks.md §2.1`) for the full\n// itemized list (`useOutboxStatus()`'s aggregate is deliberately too\n// narrow for this) and `useConflicts(tripRef)` for which of those ops are\n// genuine 409s. No capability gate — a conflict is a property of the\n// outbox lane, not any module's capability state, per spec.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useConflicts } from '../../../../core/hooks/useConflicts.js';\nimport { useOfflineEngine } from '../../../../core/hooks/useOfflineEngine.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { ConflictResolverSheet } from './internal/ConflictResolverSheet';\nimport { InboxIcon } from './internal/icons';\nimport { OutboxRow } from './internal/OutboxRow';\nimport type {\n ConflictRecord,\n ManagerSyncCenterSectionProps,\n OutboxOp,\n} from './ManagerSyncCenterSection.types';\n\nfunction titleCase(word: string): string {\n return word.replace(/[-_]/g, ' ').replace(/\\b\\w/g, (letter) => letter.toUpperCase());\n}\n\n// The raw API path (`/api/v1/trips/{tripRef}/closeout/lock`) is\n// implementation detail, never something a manager should see — a real bug\n// caught live. Without a real `entity` on the op (some writes, like\n// closeout's own lock, carry none), the best honest label this composite\n// can build is the one real, meaningful path segment right after the trip\n// scope, humanized — never the tripRef itself, never the full URL.\nfunction defaultEntityLabel(op: OutboxOp): string {\n if (op.entity !== undefined) {\n return titleCase(op.entity.listName);\n }\n const segments = op.path.split('/').filter(Boolean);\n const tripsIndex = segments.indexOf('trips');\n const domainSegment = tripsIndex >= 0 ? segments[tripsIndex + 2] : undefined;\n return titleCase(domainSegment ?? segments[segments.length - 1] ?? '');\n}\n\nexport function ManagerSyncCenterSection({\n tripRef,\n getEntityLabel,\n onResolved,\n style,\n}: ManagerSyncCenterSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const engine = useOfflineEngine();\n const { conflicts, resolve } = useConflicts(tripRef);\n const [openConflict, setOpenConflict] = useState<ConflictRecord | undefined>(undefined);\n\n const ops = engine.outbox.all().filter((op) => op.tripRef === tripRef);\n const conflictOpIds = new Set(conflicts.map((conflict) => conflict.opId));\n\n function labelFor(op: OutboxOp): string {\n if (getEntityLabel !== undefined && op.entity !== undefined) {\n return getEntityLabel({ listName: op.entity.listName, entityId: op.entity.id });\n }\n return defaultEntityLabel(op);\n }\n\n async function handleResolve(\n opId: string,\n choice: 'keep-queued' | 'keep-current',\n ): Promise<void> {\n await resolve(opId, choice);\n onResolved?.(opId, choice);\n }\n\n return (\n <div className=\"kf-manager-sync-center\" style={tokenStyle(style)}>\n {ops.length === 0 ? (\n <div className=\"kf-manager-sync-center__empty\">\n <InboxIcon className=\"kf-manager-sync-center__empty-icon\" aria-hidden=\"true\" />\n <p className=\"kf-manager-sync-center__empty-title\">\n {t('chrome.managerSyncCenter.emptyTitle')}\n </p>\n </div>\n ) : (\n <div className=\"kf-manager-sync-center__list\">\n {ops.map((op) => (\n <OutboxRow\n key={op.id}\n op={op}\n isConflict={conflictOpIds.has(op.id)}\n label={labelFor(op)}\n onSelect={(selectedOp) =>\n setOpenConflict(conflicts.find((conflict) => conflict.opId === selectedOp.id))\n }\n />\n ))}\n </div>\n )}\n\n <ConflictResolverSheet\n conflict={openConflict}\n onResolve={handleResolve}\n onClose={() => setOpenConflict(undefined)}\n />\n </div>\n );\n}\n","// Pure client-side derivations over `useTravellerProfile()`'s real read —\n// page-composition logic (U-021), not a domain concern hard rule #2\n// requires living in `/core`.\n\nexport type TravellerDiet = 'V' | 'NV' | 'J';\n\n/** The real `Traveller.dietary` column is CRM free text, not a validated\n * enum — normalized here into the closed 3-state set a badge can render,\n * same discipline `ManagerManifestSection`'s own `deriveManifest.ts#\n * normalizeDiet` already established (duplicated, not imported, per this\n * package's \"each composite owns its own internal helpers\" convention). */\nexport function normalizeDiet(raw: string | null): TravellerDiet | null {\n if (raw === null) {\n return null;\n }\n const upper = raw.trim().toUpperCase();\n if (upper === 'V' || upper === 'VEG' || upper === 'VEGETARIAN') {\n return 'V';\n }\n if (upper === 'NV' || upper === 'NON-VEG' || upper === 'NONVEG' || upper === 'NON_VEG') {\n return 'NV';\n }\n if (upper === 'J' || upper === 'JAIN') {\n return 'J';\n }\n return null;\n}\n\nexport interface DietaryRow {\n readonly key: string;\n readonly labelKey: string;\n readonly value: string;\n readonly diet: TravellerDiet | null;\n readonly isAlert: boolean;\n}\n\nexport function deriveDietaryRows(\n dietary: string | null,\n mealPreference: string | null,\n dietaryReqs: readonly string[],\n allergies: string | null,\n medicalFlag: boolean,\n medicalNotes: string | null,\n): readonly DietaryRow[] {\n const rows: DietaryRow[] = [];\n const diet = normalizeDiet(dietary);\n if (mealPreference !== null || diet !== null) {\n rows.push({\n key: 'meal',\n labelKey: 'chrome.managerTraveller.dietary.meal',\n value: mealPreference ?? '',\n diet,\n isAlert: false,\n });\n }\n if (dietaryReqs.length > 0) {\n rows.push({\n key: 'dietaryReqs',\n labelKey: 'chrome.managerTraveller.dietary.requirements',\n value: dietaryReqs.join(', '),\n diet: null,\n isAlert: false,\n });\n }\n if (allergies !== null && allergies.trim().length > 0) {\n rows.push({\n key: 'allergies',\n labelKey: 'chrome.managerTraveller.dietary.allergies',\n value: allergies,\n diet: null,\n isAlert: true,\n });\n }\n if (medicalFlag) {\n rows.push({\n key: 'medicalFlag',\n labelKey: 'chrome.managerTraveller.dietary.medicalFlag',\n value: medicalNotes ?? '',\n diet: null,\n isAlert: true,\n });\n } else if (medicalNotes !== null && medicalNotes.trim().length > 0) {\n rows.push({\n key: 'medicalNotes',\n labelKey: 'chrome.managerTraveller.dietary.medicalNotes',\n value: medicalNotes,\n diet: null,\n isAlert: false,\n });\n }\n return rows;\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each composite owns its own\n// icon set).\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function PhoneIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.362 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.338 1.85.573 2.81.7A2 2 0 0 1 22 16.92z\" />\n </svg>\n );\n}\n\nexport function WhatsAppIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 11.5a8.5 8.5 0 0 1-8.5 8.5 8.4 8.4 0 0 1-4.1-1.06L3 20l1.1-5.2A8.5 8.5 0 1 1 21 11.5z\" />\n </svg>\n );\n}\n\nexport function BedIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 18v-6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6M3 18v2M21 18v2M3 12V9a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v3\" />\n </svg>\n );\n}\n\nexport function SeatIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 4v10a2 2 0 0 0 2 2h10M9 20h9a2 2 0 0 0 2-2v-4h-6\" />\n </svg>\n );\n}\n\nexport function PlusIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n );\n}\n","'use client';\n\n// A REAL log-payment bottom sheet — calls `useCollections(tripRef).record()`\n// for real (unlike the Manifest tab's group-level \"Collect\", which has no\n// real group-level endpoint; here a real per-traveller endpoint exists, so\n// this build does the real thing). Same fixed backdrop+sheet recipe\n// `manager-now.css`'s own `__sheet-backdrop`/`__sheet` establishes.\n// `reference` is required for UPI/CARD/BANK, optional for CASH\n// (`RecordCollectionRequest`'s own real constraint, `kaafil-js/src/\n// generated/schema.d.ts`) — enforced client-side before the real call, not\n// left to a 422 round-trip for a mistake this obvious to catch up front.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { CloseIcon } from './icons';\n\nexport type CollectionMode = 'CASH' | 'UPI' | 'CARD' | 'BANK';\n\nconst MODES: readonly CollectionMode[] = ['CASH', 'UPI', 'CARD', 'BANK'];\nconst MODE_LABEL_KEY: Record<CollectionMode, string> = {\n CASH: 'chrome.managerTraveller.payment.mode.cash',\n UPI: 'chrome.managerTraveller.payment.mode.upi',\n CARD: 'chrome.managerTraveller.payment.mode.card',\n BANK: 'chrome.managerTraveller.payment.mode.bank',\n};\n\nexport interface LogPaymentInput {\n readonly amountMinor: number;\n readonly mode: CollectionMode;\n readonly reference: string | undefined;\n readonly note: string | undefined;\n}\n\nexport interface LogPaymentSheetProps {\n readonly open: boolean;\n readonly currency: string;\n readonly onClose: () => void;\n readonly onSubmit: (input: LogPaymentInput) => Promise<void>;\n}\n\n/** Currency-major → minor, the same table-driven exponent lookup\n * `formatMoney.ts` uses for the reverse direction — never a hardcoded\n * `* 100`. */\nconst MINOR_UNIT_EXPONENT: Readonly<Record<string, number>> = {\n JPY: 0,\n KRW: 0,\n VND: 0,\n INR: 2,\n USD: 2,\n EUR: 2,\n GBP: 2,\n};\n\nexport function LogPaymentSheet({\n open,\n currency,\n onClose,\n onSubmit,\n}: LogPaymentSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [amount, setAmount] = useState('');\n const [mode, setMode] = useState<CollectionMode>('CASH');\n const [reference, setReference] = useState('');\n const [note, setNote] = useState('');\n const [submitting, setSubmitting] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n useEffect(() => {\n if (open) {\n setAmount('');\n setMode('CASH');\n setReference('');\n setNote('');\n setSubmitting(false);\n }\n }, [open]);\n\n if (!open) {\n return null;\n }\n\n const referenceRequired = mode !== 'CASH';\n const parsedAmount = Number(amount);\n const canSubmit =\n amount.trim().length > 0 &&\n Number.isFinite(parsedAmount) &&\n parsedAmount > 0 &&\n (!referenceRequired || reference.trim().length > 0) &&\n !submitting;\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n const exponent = MINOR_UNIT_EXPONENT[currency] ?? 2;\n const amountMinor = Math.round(parsedAmount * 10 ** exponent);\n setSubmitting(true);\n try {\n await onSubmit({\n amountMinor,\n mode,\n reference: reference.trim().length > 0 ? reference.trim() : undefined,\n note: note.trim().length > 0 ? note.trim() : undefined,\n });\n onClose();\n } finally {\n setSubmitting(false);\n }\n };\n\n return (\n <div className=\"kf-manager-traveller__sheet-backdrop\">\n <div\n className=\"kf-manager-traveller__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTraveller.payment.logPayment')}\n >\n <div className=\"kf-manager-traveller__sheet-header\">\n <p className=\"kf-manager-traveller__sheet-title\">\n {t('chrome.managerTraveller.payment.logPayment')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-traveller__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <label className=\"kf-manager-traveller__field-label\" htmlFor=\"kf-log-payment-amount\">\n {t('chrome.managerTraveller.payment.amount').replace('{currency}', currency)}\n </label>\n <input\n id=\"kf-log-payment-amount\"\n type=\"number\"\n inputMode=\"decimal\"\n min=\"0\"\n step=\"0.01\"\n value={amount}\n onChange={(event) => setAmount(event.target.value)}\n className=\"kf-manager-traveller__field-input\"\n />\n\n <p className=\"kf-manager-traveller__field-label\">\n {t('chrome.managerTraveller.payment.modeLabel')}\n </p>\n <div className=\"kf-manager-traveller__mode-chips\">\n {MODES.map((option) => (\n <button\n key={option}\n type=\"button\"\n className=\"kf-manager-traveller__mode-chip kf-press\"\n data-active={mode === option}\n onClick={() => setMode(option)}\n >\n {t(MODE_LABEL_KEY[option])}\n </button>\n ))}\n </div>\n\n <label className=\"kf-manager-traveller__field-label\" htmlFor=\"kf-log-payment-reference\">\n {referenceRequired\n ? t('chrome.managerTraveller.payment.referenceRequired')\n : t('chrome.managerTraveller.payment.referenceOptional')}\n </label>\n <input\n id=\"kf-log-payment-reference\"\n type=\"text\"\n value={reference}\n onChange={(event) => setReference(event.target.value)}\n className=\"kf-manager-traveller__field-input\"\n />\n\n <label className=\"kf-manager-traveller__field-label\" htmlFor=\"kf-log-payment-note\">\n {t('chrome.managerTraveller.payment.noteOptional')}\n </label>\n <textarea\n id=\"kf-log-payment-note\"\n value={note}\n onChange={(event) => setNote(event.target.value)}\n className=\"kf-manager-traveller__field-textarea\"\n rows={2}\n />\n\n <button\n type=\"button\"\n className=\"kf-manager-traveller__sheet-submit kf-press\"\n disabled={!canSubmit}\n onClick={() => void handleSubmit()}\n >\n {submitting\n ? t('chrome.managerTraveller.payment.submitting')\n : t('chrome.managerTraveller.payment.submit')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// Call/WhatsApp buttons — both target the SAME real `phone` field (the\n// engine's `Traveller` model carries no separate WhatsApp number, unlike\n// the boilerplate's own two independent hrefs). The whole row is omitted\n// when `phone` is null, never a disabled/greyed button pair.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { PhoneIcon, WhatsAppIcon } from './icons';\n\nexport interface TravellerContactRowProps {\n readonly fullName: string;\n readonly phone: string | null;\n}\n\nexport function TravellerContactRow({ fullName, phone }: TravellerContactRowProps): ReactNode {\n const { t } = useKaafilChrome();\n if (phone === null) {\n return null;\n }\n const digitsOnly = phone.replace(/[^\\d+]/g, '');\n return (\n <div className=\"kf-manager-traveller__contact-row\">\n <a\n href={`tel:${digitsOnly}`}\n className=\"kf-manager-traveller__contact-button kf-manager-traveller__contact-button--call kf-press\"\n >\n <PhoneIcon />\n {t('chrome.managerTraveller.contact.call')}\n </a>\n <a\n href={`https://wa.me/${digitsOnly.replace('+', '')}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"kf-manager-traveller__contact-button kf-press\"\n aria-label={t('chrome.managerTraveller.contact.whatsapp').replace('{name}', fullName)}\n >\n <WhatsAppIcon />\n {t('chrome.managerTraveller.contact.whatsappLabel')}\n </a>\n </div>\n );\n}\n","'use client';\n\n// Dietary & medical — a DYNAMIC list of only the real fields actually\n// present (`deriveTravellerProfile.ts#deriveDietaryRows`), never a fixed\n// Meal/Allergies/Medical row trio with blanks for absent data. Pixel\n// reference: `frontend-boilerplate/components/manager/traveller/\n// traveller-dietary-card.tsx`.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { DietaryRow } from './deriveTravellerProfile';\n\nconst DIET_LABEL_KEY: Record<NonNullable<DietaryRow['diet']>, string> = {\n V: 'chrome.managerTraveller.dietary.diet.v',\n NV: 'chrome.managerTraveller.dietary.diet.nv',\n J: 'chrome.managerTraveller.dietary.diet.j',\n};\n\nexport interface TravellerDietaryCardProps {\n readonly rows: readonly DietaryRow[];\n}\n\nexport function TravellerDietaryCard({ rows }: TravellerDietaryCardProps): ReactNode {\n const { t } = useKaafilChrome();\n if (rows.length === 0) {\n return null;\n }\n return (\n <section aria-label={t('chrome.managerTraveller.dietary.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-traveller__eyebrow-row\">\n {t('chrome.managerTraveller.dietary.eyebrow')}\n </p>\n <div className=\"kf-manager-traveller__card\">\n {rows.map((row) => (\n <div key={row.key} className=\"kf-manager-traveller__dietary-row\" data-alert={row.isAlert}>\n <div className=\"kf-manager-traveller__dietary-row-head\">\n <p className=\"kf-manager-traveller__dietary-label\">{t(row.labelKey)}</p>\n {row.diet !== null ? (\n <span className=\"kf-manager-traveller__pill\" data-tone=\"soft\">\n {t(DIET_LABEL_KEY[row.diet])}\n </span>\n ) : null}\n </div>\n {row.value.length > 0 ? (\n <p className=\"kf-manager-traveller__dietary-value\">{row.value}</p>\n ) : null}\n </div>\n ))}\n </div>\n </section>\n );\n}\n","'use client';\n\n// Emergency contact — real `profile.emergencyName/emergencyPhone/\n// emergencyRelation`. Rendered only when `name` is present (the composite's\n// own caller already gates on this — see `ManagerTravellerProfileSection.\n// tsx`), never a card with a blank name.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { PhoneIcon } from './icons';\n\nfunction initials(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n return `${parts[0]?.[0] ?? ''}${parts[parts.length - 1]?.[0] ?? ''}`.toUpperCase();\n}\n\nexport interface TravellerEmergencyCardProps {\n readonly name: string;\n readonly relation: string | null;\n readonly phone: string | null;\n}\n\nexport function TravellerEmergencyCard({\n name,\n relation,\n phone,\n}: TravellerEmergencyCardProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <section aria-label={t('chrome.managerTraveller.emergency.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-traveller__eyebrow-row\">\n {t('chrome.managerTraveller.emergency.eyebrow')}\n </p>\n <div className=\"kf-manager-traveller__card kf-manager-traveller__emergency-row\">\n <span className=\"kf-manager-traveller__emergency-avatar\">{initials(name)}</span>\n <span className=\"kf-manager-traveller__emergency-body\">\n <span className=\"kf-manager-traveller__emergency-name\">{name}</span>\n {relation !== null ? (\n <span className=\"kf-manager-traveller__emergency-relation\">{relation}</span>\n ) : null}\n </span>\n {phone !== null ? (\n <a\n href={`tel:${phone.replace(/[^\\d+]/g, '')}`}\n className=\"kf-manager-traveller__emergency-call kf-press\"\n aria-label={t('chrome.managerTraveller.emergency.call').replace('{name}', name)}\n >\n <PhoneIcon />\n </a>\n ) : null}\n </div>\n </section>\n );\n}\n","'use client';\n\n// Avatar + name + party label. Pixel reference: `frontend-boilerplate/\n// components/manager/traveller/traveller-hero.tsx`. NO \"PRIMARY\" badge —\n// this build's own fresh audit confirmed no lead/primary-traveller concept\n// exists anywhere in the engine (`Traveller`/`TripTraveller`/\n// `TravellerParty` all lack it); the boilerplate's own \"PRIMARY\" pill is a\n// BE-composed string with nothing real behind it here.\n\nimport type { ReactNode } from 'react';\n\nfunction initials(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n return `${parts[0]?.[0] ?? ''}${parts[parts.length - 1]?.[0] ?? ''}`.toUpperCase();\n}\n\nexport interface TravellerHeroProps {\n readonly fullName: string;\n /** The real `Party.label` this traveller's `partyId` resolves to (via\n * `useParties().list`), or `null` for a solo traveller / no party. */\n readonly partyLabel: string | null;\n}\n\nexport function TravellerHero({ fullName, partyLabel }: TravellerHeroProps): ReactNode {\n return (\n <div className=\"kf-manager-traveller__hero\">\n <div className=\"kf-manager-traveller__hero-avatar\">{initials(fullName)}</div>\n <p className=\"kf-manager-traveller__hero-name\">{fullName}</p>\n {partyLabel !== null ? (\n <p className=\"kf-manager-traveller__hero-party\">{partyLabel}</p>\n ) : null}\n </div>\n );\n}\n","'use client';\n\n// Notes — REAL, working: the list ships inline on `getDetail`'s own read\n// (`read.notes[]`), and \"+ Add\" opens a plain textarea calling the real\n// `addNote({body})` write (`useTravellerProfile`'s own only write method),\n// which already re-fetches on success.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { PlusIcon } from './icons';\n\nexport interface TravellerNote {\n readonly id: string;\n readonly body: string;\n readonly performedByKind: string | null;\n readonly createdAt: string;\n}\n\nexport interface TravellerNotesSectionProps {\n readonly notes: readonly TravellerNote[];\n readonly onAddNote: (body: string) => Promise<void>;\n}\n\nconst DATE_FORMATTER = new Intl.DateTimeFormat('en-GB', {\n day: '2-digit',\n month: 'short',\n hour: '2-digit',\n minute: '2-digit',\n});\n\nexport function TravellerNotesSection({ notes, onAddNote }: TravellerNotesSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const [composing, setComposing] = useState(false);\n const [draft, setDraft] = useState('');\n const [submitting, setSubmitting] = useState(false);\n\n const handleAdd = async (): Promise<void> => {\n if (draft.trim().length === 0 || submitting) {\n return;\n }\n setSubmitting(true);\n try {\n await onAddNote(draft.trim());\n setDraft('');\n setComposing(false);\n } finally {\n setSubmitting(false);\n }\n };\n\n return (\n <section aria-label={t('chrome.managerTraveller.notes.ariaLabel')}>\n <div className=\"kf-manager-traveller__eyebrow-row\">\n <p className=\"kf-eyebrow\">{t('chrome.managerTraveller.notes.eyebrow')}</p>\n {!composing ? (\n <button\n type=\"button\"\n className=\"kf-manager-traveller__notes-add kf-press\"\n onClick={() => setComposing(true)}\n >\n <PlusIcon />\n {t('chrome.managerTraveller.notes.add')}\n </button>\n ) : null}\n </div>\n\n {composing ? (\n <div className=\"kf-manager-traveller__card kf-manager-traveller__notes-composer\">\n <textarea\n value={draft}\n onChange={(event) => setDraft(event.target.value)}\n className=\"kf-manager-traveller__field-textarea\"\n rows={3}\n />\n <div className=\"kf-manager-traveller__notes-composer-actions\">\n <button\n type=\"button\"\n className=\"kf-manager-traveller__notes-cancel kf-press\"\n onClick={() => {\n setComposing(false);\n setDraft('');\n }}\n >\n {t('chrome.cancel')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-traveller__notes-save kf-press\"\n disabled={draft.trim().length === 0 || submitting}\n onClick={() => void handleAdd()}\n >\n {t('chrome.save')}\n </button>\n </div>\n </div>\n ) : null}\n\n <div className=\"kf-manager-traveller__card\">\n {notes.length === 0 ? (\n <p className=\"kf-manager-traveller__notes-empty\">\n {t('chrome.managerTraveller.notes.empty')}\n </p>\n ) : (\n notes.map((note) => (\n <div key={note.id} className=\"kf-manager-traveller__notes-row\">\n <p className=\"kf-manager-traveller__notes-meta\">\n {note.performedByKind ?? t('chrome.managerTraveller.notes.you')} ·{' '}\n {DATE_FORMATTER.format(new Date(note.createdAt))}\n </p>\n <p className=\"kf-manager-traveller__notes-body\">{note.body}</p>\n </div>\n ))\n )}\n </div>\n </section>\n );\n}\n","'use client';\n\n// Package/Paid/Balance — real per-traveller `balance.totalMinor/\n// collectedMinor/dueMinor`. Rendered only when `balance !== null` (the\n// engine's own comment: null already collapses \"no Balance row yet\" and\n// \"agency plan lacks collections\" into one honest absence — no separate\n// \"you have payment access\" string to fabricate, unlike the boilerplate's\n// own BE-composed `accessLine`). \"Log payment\" only renders when the\n// CALLER's own `useCollections(tripRef)` read is `'ready'` — a real\n// capability gate, passed in as `canLogPayment` rather than this leaf\n// component reaching for the hook itself (keeps it a pure, testable,\n// Tier-4-overridable presentational piece).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { formatMoneyMinor } from '../../../../internal/formatMoney';\n\nexport interface TravellerPaymentCardProps {\n readonly currency: string;\n readonly totalMinor: number;\n readonly collectedMinor: number;\n readonly dueMinor: number;\n readonly canLogPayment: boolean;\n readonly onLogPayment: () => void;\n}\n\nexport function TravellerPaymentCard({\n currency,\n totalMinor,\n collectedMinor,\n dueMinor,\n canLogPayment,\n onLogPayment,\n}: TravellerPaymentCardProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <section aria-label={t('chrome.managerTraveller.payment.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-traveller__eyebrow-row\">\n {t('chrome.managerTraveller.payment.eyebrow')}\n </p>\n <div className=\"kf-manager-traveller__card\">\n <div className=\"kf-manager-traveller__payment-row\">\n <span>{t('chrome.managerTraveller.payment.package')}</span>\n <span>{formatMoneyMinor(totalMinor, currency)}</span>\n </div>\n <div className=\"kf-manager-traveller__payment-row\">\n <span>{t('chrome.managerTraveller.payment.paid')}</span>\n <span>{formatMoneyMinor(collectedMinor, currency)}</span>\n </div>\n <div className=\"kf-manager-traveller__payment-row\" data-emphasis=\"true\">\n <span>{t('chrome.managerTraveller.payment.balance')}</span>\n <span data-tone={dueMinor > 0 ? 'warn' : undefined}>\n {formatMoneyMinor(dueMinor, currency)}\n </span>\n </div>\n {canLogPayment ? (\n <div className=\"kf-manager-traveller__payment-footer\">\n <button\n type=\"button\"\n className=\"kf-manager-traveller__payment-log-button kf-press\"\n onClick={onLogPayment}\n >\n {t('chrome.managerTraveller.payment.logPayment')}\n </button>\n </div>\n ) : null}\n </div>\n </section>\n );\n}\n","'use client';\n\n// Room & seat — real `room`/`seat` fields on the SAME `getDetail` read\n// already being fetched, at zero extra hook cost. Not in the boilerplate's\n// own screenshot at all — added per this build's own \"never drop a real\n// field the wire sends\" precedent (`NowVehicleCards`/`NowChecklist`'s own\n// reasoning). Rendered only when at least one of the two is present.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { BedIcon, SeatIcon } from './icons';\n\nexport interface TravellerRoomSeatCardProps {\n readonly room: { readonly roomCode: string; readonly bedLabel: string } | null;\n readonly seat: {\n readonly vehicleLabel: string;\n readonly vehicleRegNo: string;\n readonly seatLabel: string | null;\n } | null;\n}\n\nexport function TravellerRoomSeatCard({ room, seat }: TravellerRoomSeatCardProps): ReactNode {\n const { t } = useKaafilChrome();\n if (room === null && seat === null) {\n return null;\n }\n return (\n <section aria-label={t('chrome.managerTraveller.roomSeat.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-traveller__eyebrow-row\">\n {t('chrome.managerTraveller.roomSeat.eyebrow')}\n </p>\n <div className=\"kf-manager-traveller__card kf-manager-traveller__list\">\n {room !== null ? (\n <div className=\"kf-manager-traveller__roomseat-row\">\n <BedIcon />\n <span>\n {t('chrome.managerTraveller.roomSeat.room')\n .replace('{room}', room.roomCode)\n .replace('{bed}', room.bedLabel)}\n </span>\n </div>\n ) : null}\n {seat !== null ? (\n <div className=\"kf-manager-traveller__roomseat-row\">\n <SeatIcon />\n <span>\n {seat.seatLabel !== null\n ? t('chrome.managerTraveller.roomSeat.seat')\n .replace('{vehicle}', seat.vehicleLabel)\n .replace('{seat}', seat.seatLabel)\n : t('chrome.managerTraveller.roomSeat.vehicleOnly').replace(\n '{vehicle}',\n seat.vehicleLabel,\n )}\n </span>\n </div>\n ) : null}\n </div>\n </section>\n );\n}\n","'use client';\n\n// The Traveller Profile — a standalone, publicly exported composite, the\n// real destination `onOpenTraveller` now has everywhere it fires across\n// the manager family (`ManagerManifestSection`/`ManagerTripSection`, the\n// only real entry point today — verified via grep this session). Body-only,\n// no own header — the host wraps it in `<ManagerShell header={{variant:\n// 'back', title, onBack}}>`, matching `ManagerNowSection`/\n// `ManagerManifestSection`'s own precedent.\n//\n// Composes FOUR real `/core`-backed reads client-side (U-021, page-\n// composition, not a domain concern hard rule #2 requires living in\n// `/core`): `useTravellerProfile` (identity/dietary/emergency/room/seat/\n// balance/notes), `useParties` (the real party-label join, same pattern\n// `ManagerManifestSection` already uses), `useCollections` (the real\n// capability gate + the real log-payment write — `record()` lives on a\n// DIFFERENT hook than `useTravellerProfile`, verified this session), and\n// `ManagerFormsSection` itself, mounted `travellerRef`-scoped — the real\n// answer to \"I should see the forms this traveller has filed for this\n// trip\" (feedback, verbatim): rather than re-deriving a second forms/\n// responses join here, this composite reuses `ManagerFormsSection`'s own\n// already-built traveller-scoped mode wholesale, matching the \"compose the\n// real domain composite, never re-implement its read\" precedent\n// `ManagerTripSection`'s own tab panels already set.\n\nimport type { ReactNode } from 'react';\nimport { useMemo, useState } from 'react';\nimport { useCollections } from '../../../../core/hooks/useCollections.js';\nimport { useParties } from '../../../../core/hooks/useParties.js';\nimport { useTravellerProfile } from '../../../../core/hooks/useTravellerProfile.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { ManagerFormsSection } from '../ManagerFormsSection/ManagerFormsSection';\nimport { deriveDietaryRows } from './internal/deriveTravellerProfile';\nimport { LogPaymentSheet } from './internal/LogPaymentSheet';\nimport { TravellerContactRow } from './internal/TravellerContactRow';\nimport { TravellerDietaryCard } from './internal/TravellerDietaryCard';\nimport { TravellerEmergencyCard } from './internal/TravellerEmergencyCard';\nimport { TravellerHero } from './internal/TravellerHero';\nimport { TravellerNotesSection } from './internal/TravellerNotesSection';\nimport { TravellerPaymentCard } from './internal/TravellerPaymentCard';\nimport { TravellerRoomSeatCard } from './internal/TravellerRoomSeatCard';\nimport type { ManagerTravellerProfileSectionProps } from './ManagerTravellerProfileSection.types';\n\nexport function ManagerTravellerProfileSection({\n tripRef,\n travellerRef,\n components,\n style,\n}: ManagerTravellerProfileSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const profile = useTravellerProfile(tripRef, travellerRef);\n const parties = useParties(tripRef);\n const collections = useCollections(tripRef);\n const [sheetOpen, setSheetOpen] = useState(false);\n\n const partyLabel = useMemo(() => {\n if (profile.read === undefined || profile.read.partyId === null) {\n return null;\n }\n if (parties.status !== 'ready') {\n return null;\n }\n return parties.list.rows.find((row) => row.id === profile.read?.partyId)?.label ?? null;\n }, [profile.read, parties]);\n\n if (profile.read === undefined) {\n return (\n <div className=\"kf-manager-traveller__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-traveller__skeleton-avatar\" />\n <div className=\"kf-manager-traveller__skeleton-line\" />\n <div className=\"kf-manager-traveller__skeleton-line kf-manager-traveller__skeleton-line--short\" />\n </div>\n );\n }\n if (profile.readFailed) {\n return null;\n }\n\n const { read } = profile;\n const DietaryCard = components?.DietaryCard ?? TravellerDietaryCard;\n const EmergencyCard = components?.EmergencyCard ?? TravellerEmergencyCard;\n const PaymentCard = components?.PaymentCard ?? TravellerPaymentCard;\n const NotesSection = components?.NotesSection ?? TravellerNotesSection;\n\n const dietaryRows = deriveDietaryRows(\n read.dietary,\n read.profile.mealPreference,\n read.profile.dietaryReqs,\n read.profile.allergies,\n read.medicalFlag,\n read.profile.medicalNotes,\n );\n\n const canLogPayment = collections.status === 'ready';\n\n return (\n <div className=\"kf-manager-traveller\" style={tokenStyle(style)}>\n <TravellerHero fullName={read.fullName} partyLabel={partyLabel} />\n <TravellerContactRow fullName={read.fullName} phone={read.phone} />\n\n <DietaryCard rows={dietaryRows} />\n\n {read.profile.emergencyName !== null ? (\n <EmergencyCard\n name={read.profile.emergencyName}\n relation={read.profile.emergencyRelation}\n phone={read.profile.emergencyPhone}\n />\n ) : null}\n\n <TravellerRoomSeatCard room={read.room} seat={read.seat} />\n\n <section aria-label={t('chrome.managerTraveller.forms.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-traveller__eyebrow-row\">\n {t('chrome.managerTraveller.forms.eyebrow')}\n </p>\n <div className=\"kf-manager-traveller__card\">\n <ManagerFormsSection tripRef={tripRef} travellerRef={travellerRef} />\n </div>\n </section>\n\n {read.balance !== null ? (\n <PaymentCard\n currency={read.balance.currency}\n totalMinor={read.balance.totalMinor}\n collectedMinor={read.balance.collectedMinor}\n dueMinor={read.balance.dueMinor}\n canLogPayment={canLogPayment}\n onLogPayment={() => setSheetOpen(true)}\n />\n ) : null}\n\n <NotesSection\n notes={read.notes}\n onAddNote={async (body) => {\n await profile.addNote({ body });\n }}\n />\n\n {read.balance !== null && canLogPayment && collections.status === 'ready' ? (\n <LogPaymentSheet\n open={sheetOpen}\n currency={read.balance.currency}\n onClose={() => setSheetOpen(false)}\n onSubmit={async (input) => {\n // `currency` deliberately omitted — `RecordCollectionOptions`'s\n // own doc comment: \"Omit to use the trip's own currency,\" the\n // safer real default rather than forcing a value through a\n // type mismatch (the wire's `currency` field is a single-value\n // `\"INR\"` enum today, while `Balance.currency` is a plain\n // `string`).\n await collections.record({\n travellerId: read.travellerId,\n amountMinor: input.amountMinor,\n mode: input.mode,\n reference: input.reference,\n note: input.note,\n });\n await profile.refresh();\n }}\n />\n ) : null}\n </div>\n );\n}\n","// Pure derivation helpers off `useSeating()`'s real return shape — no\n// `kaafil-js` import (hard rule #1), no fabricated fields. Each composite\n// this session owns its own internal helpers rather than sharing a\n// cross-composite derive module (same convention `ManagerRoomingSection/\n// internal/deriveRooming.ts` establishes).\n\nimport type {\n SeatingOccupantRow,\n SeatingVehicle,\n SeatingVehicleRowRaw,\n} from '../ManagerVehiclesSection.types';\n\n/** `vehicles[]` off the raw hook is a delta feed (a live row or a\n * `{_tombstone:true}` marker) — in practice `useSnapshotList`'s own merge\n * deletes a tombstoned id from the store rather than keeping a tombstone\n * object (`ManagerVehiclesSection.types.ts`'s own header comment), but the\n * TYPE is still the wire union, so this narrows it at the one place the\n * composite reads `vehicles` off the hook. */\nexport function isLiveVehicle(vehicle: SeatingVehicleRowRaw): vehicle is SeatingVehicle {\n return !('_tombstone' in vehicle);\n}\n\n/** `SEATABLE_VEHICLE_TYPES` (`kaafil-engine`'s own frozen constant, verified\n * this session) — `layout` is only ever legal on these two real types. */\nconst SEATABLE_TYPES: ReadonlySet<SeatingVehicle['type']> = new Set(['FLIGHT', 'TRAIN']);\n\nexport function isSeatableType(type: SeatingVehicle['type']): boolean {\n return SEATABLE_TYPES.has(type);\n}\n\nexport interface SeatingTotals {\n readonly vehicleCount: number;\n readonly seated: number;\n readonly capacity: number;\n}\n\nexport function seatingTotals(vehicles: readonly SeatingVehicle[]): SeatingTotals {\n let seated = 0;\n let capacity = 0;\n for (const vehicle of vehicles) {\n seated += vehicle.fillCount;\n capacity += vehicle.capacity;\n }\n return { vehicleCount: vehicles.length, seated, capacity };\n}\n\n/** `days` is 0-based on the wire (`FRD:transport-seating`, verified) —\n * displayed 1-based, since a manager thinks in \"Day 1\" not \"Day 0\". Empty\n * array is the real, documented \"whole trip\" value — never a fabricated\n * \"Day 1-N\" range guess, since this composite has no trip-duration prop to\n * compute a real range from. */\nexport function dayCoverageLabel(days: readonly number[]): string {\n if (days.length === 0) {\n return 'ALL_DAYS';\n }\n return [...days]\n .sort((a, b) => a - b)\n .map((day) => day + 1)\n .join(', ');\n}\n\n/** Every real occupant this vehicle currently carries, regardless of\n * `seatMapped` — `vehicle.occupants` alone is WRONG for a seat-mapped\n * vehicle: FRD §4.2's mutually-exclusive DTO contract means a seat-mapped\n * vehicle always publishes `occupants: []` and puts its people in\n * `seats[].occupant`/`unseatedOnVehicle` instead. Every caller that needs\n * \"who is actually on this vehicle\" (the roster sheet, the \"View all\"\n * count, auto-assign's moved-from detection, the traveller name map) must\n * go through this, never read `vehicle.occupants` directly. */\nexport function allOccupantsOfVehicle(vehicle: SeatingVehicle): readonly SeatingOccupantRow[] {\n if (!vehicle.seatMapped) {\n return vehicle.occupants;\n }\n const seated = vehicle.seats\n .map((seat) => seat.occupant)\n .filter((occupant): occupant is SeatingOccupantRow => occupant !== null);\n return [...seated, ...vehicle.unseatedOnVehicle];\n}\n\n/** Every occupant this vehicle currently carries, seated or not — used both\n * to render the occupant/seat chip grid and to compute the real count shown\n * in a delete/capacity-orphan confirm (never a fabricated estimate). */\nexport function occupantCountForVehicle(vehicle: SeatingVehicle): number {\n return allOccupantsOfVehicle(vehicle).length;\n}\n\nexport interface AutoAssignPlanRow {\n readonly travellerId: string;\n readonly fullName: string;\n readonly vehicleLabel: string;\n readonly seatLabel: string | null;\n readonly kind: 'added' | 'moved';\n readonly fromVehicleLabel: string | undefined;\n readonly fromSeatLabel: string | null | undefined;\n}\n\nfunction vehicleDisplayLabel(vehicle: SeatingVehicle): string {\n return vehicle.label !== null && vehicle.label.length > 0 ? vehicle.label : vehicle.regNo;\n}\n\n/** Cross-references each `plan[]` entry (destinations only) against the\n * CURRENT occupant/seat state to derive an honest \"Added\"/\"Moved\" tag and,\n * for a move, the real previous vehicle/seat — `SeatingAutoAssignResponse`\n * only reports `deltas.movedFromPrevious` as a trip-wide COUNT, never\n * per-traveller, so this is a legitimate client derivation off real fields\n * already in hand, not a fabricated field (same pattern\n * `deriveRooming.ts#diffAutoAssignPlan` already establishes). */\nexport function diffAutoAssignPlan(\n plan: readonly { travellerId: string; vehicleId: string; seatLabel: string | null }[],\n vehicles: readonly SeatingVehicle[],\n travellerNames: ReadonlyMap<string, string>,\n): readonly AutoAssignPlanRow[] {\n return plan.map((entry) => {\n const targetVehicle = vehicles.find((vehicle) => vehicle.id === entry.vehicleId);\n const vehicleLabel =\n targetVehicle !== undefined ? vehicleDisplayLabel(targetVehicle) : entry.vehicleId;\n let fromVehicleLabel: string | undefined;\n let fromSeatLabel: string | null | undefined;\n for (const vehicle of vehicles) {\n const isCurrent = allOccupantsOfVehicle(vehicle).some(\n (occupant) => occupant.travellerId === entry.travellerId,\n );\n if (isCurrent) {\n const seat = vehicle.seats.find((slot) => slot.occupant?.travellerId === entry.travellerId);\n const currentSeatLabel = seat?.seatLabel ?? null;\n if (vehicle.id !== entry.vehicleId || currentSeatLabel !== entry.seatLabel) {\n fromVehicleLabel = vehicleDisplayLabel(vehicle);\n fromSeatLabel = currentSeatLabel;\n }\n break;\n }\n }\n return {\n travellerId: entry.travellerId,\n fullName: travellerNames.get(entry.travellerId) ?? entry.travellerId,\n vehicleLabel,\n seatLabel: entry.seatLabel,\n kind: fromVehicleLabel === undefined ? 'added' : 'moved',\n fromVehicleLabel,\n fromSeatLabel,\n };\n });\n}\n\nconst VEHICLE_TYPE_LABEL_KEY: Record<SeatingVehicle['type'], string> = {\n BUS: 'chrome.managerTrip.vehicles.type.bus',\n TEMPO_TRAVELLER: 'chrome.managerTrip.vehicles.type.tempoTraveller',\n CAR: 'chrome.managerTrip.vehicles.type.car',\n FLIGHT: 'chrome.managerTrip.vehicles.type.flight',\n TRAIN: 'chrome.managerTrip.vehicles.type.train',\n OTHER: 'chrome.managerTrip.vehicles.type.other',\n};\n\nexport function vehicleTypeLabelKey(type: SeatingVehicle['type']): string {\n return VEHICLE_TYPE_LABEL_KEY[type];\n}\n\nconst UNASSIGNED_REASON_LABEL_KEY: Record<string, string> = {\n no_vehicles: 'chrome.managerTrip.vehicles.autoAssign.reason.noVehicles',\n no_spare_capacity: 'chrome.managerTrip.vehicles.autoAssign.reason.noSpareCapacity',\n party_split_exhausted: 'chrome.managerTrip.vehicles.autoAssign.reason.partySplit',\n};\n\nexport function unassignedReasonLabelKey(reason: string): string {\n return (\n UNASSIGNED_REASON_LABEL_KEY[reason] ?? 'chrome.managerTrip.vehicles.autoAssign.reason.other'\n );\n}\n\nexport function travellerNameMap(\n poolTravellers: readonly SeatingOccupantRow[],\n vehicles: readonly SeatingVehicle[],\n): ReadonlyMap<string, string> {\n const names = new Map<string, string>();\n for (const traveller of poolTravellers) {\n names.set(traveller.travellerId, traveller.fullName);\n }\n for (const vehicle of vehicles) {\n for (const occupant of allOccupantsOfVehicle(vehicle)) {\n names.set(occupant.travellerId, occupant.fullName);\n }\n }\n return names;\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention `ManagerRoomingSection`'s own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function PlusIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n );\n}\n\nexport function CloseIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n );\n}\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 6 6 6-6 6\" />\n </svg>\n );\n}\n\nexport function WandIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m15 4 1.5 3L20 8.5 16.5 10 15 13l-1.5-3L10 8.5 13.5 7 15 4Z\" />\n <path d=\"M5 14l1 2 2 1-2 1-1 2-1-2-2-1 2-1 1-2Z\" />\n </svg>\n );\n}\n\nexport function TrashIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0-1 14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2L4 6h16Z\" />\n </svg>\n );\n}\n\nexport function PhoneIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.362 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.338 1.85.573 2.81.7A2 2 0 0 1 22 16.92Z\" />\n </svg>\n );\n}\n\nexport function EditIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M12 20h9\" />\n <path d=\"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z\" />\n </svg>\n );\n}\n\nexport function PersonIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"8\" r=\"4\" />\n <path d=\"M4 21c0-4 3.5-6 8-6s8 2 8 6\" />\n </svg>\n );\n}\n","'use client';\n\n// Add/edit/delete a vehicle — fields from the REAL\n// `CreateSeatingVehicleRequest`/`PatchSeatingVehicleRequest`\n// (`kaafil-js/src/generated/schema.d.ts`, verified this session): `regNo`,\n// `label?`, `type`, `capacity`, `layout?` (legal ONLY for FLIGHT/TRAIN —\n// `SEATABLE_VEHICLE_TYPES`, `kaafil-engine`'s own frozen constant),\n// `driverName?`, `driverPhone?`, `notes?`, `days?`. No `vendorId` field —\n// no vendor list/hook available to this composite (same omission\n// `ManagerRoomingSection`'s own add-room sheet makes).\n//\n// `days` has no calendar day-strip here (no trip-duration prop threaded\n// into this composite) — a small add/remove numeric tag list instead,\n// mapped 1-based for display onto the real 0-based wire values. Empty =\n// the real, documented \"whole trip\" value.\n//\n// Capacity-orphan guard: `422 SEATING_CAPACITY_ORPHAN` has NO force\n// override anywhere on this surface (`manager/00-cross-cutting.md`'s own\n// `CapacityOrphanConfirm`: \"must never imply one exists\") — this sheet\n// warns client-side, from data already in hand, before a capacity decrease\n// or a layout-to-null change that would orphan a real occupant, but never\n// claims a retry path exists.\n//\n// Delete has NO force param at all (`useSeating.ts`'s own\n// `removeVehicleMutation` destructures only `{vehicleId, version}`) —\n// simpler than rooming's room/window delete. Still confirms upfront,\n// showing the real current occupant count, informational only.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { SeatingVehicle } from '../ManagerVehiclesSection.types';\nimport { isSeatableType, occupantCountForVehicle } from './deriveSeating';\nimport { CloseIcon, PlusIcon, TrashIcon } from './icons';\n\ntype VehicleType = SeatingVehicle['type'];\ntype VehicleLayout = NonNullable<SeatingVehicle['layout']>;\n\nconst VEHICLE_TYPES: readonly VehicleType[] = [\n 'BUS',\n 'TEMPO_TRAVELLER',\n 'CAR',\n 'FLIGHT',\n 'TRAIN',\n 'OTHER',\n];\nconst VEHICLE_TYPE_SHORT_KEY: Record<VehicleType, string> = {\n BUS: 'chrome.managerTrip.vehicles.type.busShort',\n TEMPO_TRAVELLER: 'chrome.managerTrip.vehicles.type.tempoTravellerShort',\n CAR: 'chrome.managerTrip.vehicles.type.carShort',\n FLIGHT: 'chrome.managerTrip.vehicles.type.flightShort',\n TRAIN: 'chrome.managerTrip.vehicles.type.trainShort',\n OTHER: 'chrome.managerTrip.vehicles.type.otherShort',\n};\n\nconst LAYOUTS: readonly VehicleLayout[] = ['TWO_TWO', 'TWO_ONE', 'FLAT'];\nconst LAYOUT_LABEL_KEY: Record<VehicleLayout, string> = {\n TWO_TWO: 'chrome.managerTrip.vehicles.layout.twoTwo',\n TWO_ONE: 'chrome.managerTrip.vehicles.layout.twoOne',\n FLAT: 'chrome.managerTrip.vehicles.layout.flat',\n};\n\nexport interface AddVehicleInput {\n readonly regNo: string;\n readonly label: string | undefined;\n readonly type: VehicleType;\n readonly capacity: number;\n readonly layout: VehicleLayout | undefined;\n readonly driverName: string | undefined;\n readonly driverPhone: string | undefined;\n readonly notes: string | undefined;\n readonly days: readonly number[];\n}\n\nexport interface AddVehicleSheetProps {\n readonly open: boolean;\n /** `undefined` = add mode. Present = edit mode, pre-filled from this vehicle. */\n readonly vehicle: SeatingVehicle | undefined;\n readonly onClose: () => void;\n readonly onCreate: (input: AddVehicleInput) => Promise<void>;\n readonly onPatch: (\n input: AddVehicleInput & { vehicleId: string; version: number },\n ) => Promise<void>;\n readonly onDelete: (input: { vehicleId: string; version: number }) => Promise<void>;\n}\n\nexport function AddVehicleSheet({\n open,\n vehicle,\n onClose,\n onCreate,\n onPatch,\n onDelete,\n}: AddVehicleSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [regNo, setRegNo] = useState('');\n const [label, setLabel] = useState('');\n const [type, setType] = useState<VehicleType>('BUS');\n const [capacity, setCapacity] = useState('12');\n const [layout, setLayout] = useState<VehicleLayout | undefined>(undefined);\n const [driverName, setDriverName] = useState('');\n const [driverPhone, setDriverPhone] = useState('');\n const [notes, setNotes] = useState('');\n const [days, setDays] = useState<readonly number[]>([]);\n const [dayInput, setDayInput] = useState('');\n const [submitting, setSubmitting] = useState(false);\n const [confirmingDelete, setConfirmingDelete] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n setRegNo(vehicle?.regNo ?? '');\n setLabel(vehicle?.label ?? '');\n setType(vehicle?.type ?? 'BUS');\n setCapacity(String(vehicle?.capacity ?? 12));\n setLayout(vehicle?.layout ?? undefined);\n setDriverName(vehicle?.driverName ?? '');\n setDriverPhone(vehicle?.driverPhone ?? '');\n setNotes(vehicle?.notes ?? '');\n setDays(vehicle?.days ?? []);\n setDayInput('');\n setSubmitting(false);\n setConfirmingDelete(false);\n }, [open, vehicle]);\n\n if (!open) {\n return null;\n }\n\n const seatable = isSeatableType(type);\n const parsedCapacity = Number(capacity);\n const canSubmit =\n regNo.trim().length > 0 &&\n Number.isInteger(parsedCapacity) &&\n parsedCapacity > 0 &&\n !submitting;\n\n const occupantCount = vehicle !== undefined ? occupantCountForVehicle(vehicle) : 0;\n const willOrphan =\n vehicle !== undefined &&\n occupantCount > 0 &&\n (parsedCapacity < occupantCount || (vehicle.seatMapped && !seatable));\n\n const addDay = (): void => {\n const parsed = Number(dayInput);\n if (!Number.isInteger(parsed) || parsed < 1) {\n return;\n }\n const zeroBased = parsed - 1;\n if (!days.includes(zeroBased)) {\n setDays([...days, zeroBased].sort((a, b) => a - b));\n }\n setDayInput('');\n };\n\n const removeDay = (day: number): void => {\n setDays(days.filter((candidate) => candidate !== day));\n };\n\n const handleSubmit = async (): Promise<void> => {\n if (!canSubmit) {\n return;\n }\n const input: AddVehicleInput = {\n regNo: regNo.trim().toUpperCase(),\n label: label.trim().length > 0 ? label.trim() : undefined,\n type,\n capacity: parsedCapacity,\n layout: seatable ? layout : undefined,\n driverName: driverName.trim().length > 0 ? driverName.trim() : undefined,\n driverPhone: driverPhone.trim().length > 0 ? driverPhone.trim() : undefined,\n notes: notes.trim().length > 0 ? notes.trim() : undefined,\n days,\n };\n setSubmitting(true);\n try {\n if (vehicle === undefined) {\n await onCreate(input);\n } else {\n await onPatch({ ...input, vehicleId: vehicle.id, version: vehicle.version });\n }\n onClose();\n } finally {\n setSubmitting(false);\n }\n };\n\n const handleDelete = async (): Promise<void> => {\n if (vehicle === undefined) {\n return;\n }\n setSubmitting(true);\n try {\n await onDelete({ vehicleId: vehicle.id, version: vehicle.version });\n onClose();\n } finally {\n setSubmitting(false);\n }\n };\n\n return (\n <div className=\"kf-manager-vehicles__sheet-backdrop\">\n <div\n className=\"kf-manager-vehicles__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={\n vehicle === undefined\n ? t('chrome.managerTrip.vehicles.addVehicle.title')\n : t('chrome.managerTrip.vehicles.editVehicle.title')\n }\n >\n <div className=\"kf-manager-vehicles__sheet-header\">\n <p className=\"kf-manager-vehicles__sheet-title\">\n {vehicle === undefined\n ? t('chrome.managerTrip.vehicles.addVehicle.title')\n : t('chrome.managerTrip.vehicles.editVehicle.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {confirmingDelete ? (\n <>\n <p className=\"kf-manager-vehicles__confirm-copy\">\n {occupantCount > 0\n ? t('chrome.managerTrip.vehicles.deleteVehicle.confirmWithOccupants').replace(\n '{count}',\n String(occupantCount),\n )\n : t('chrome.managerTrip.vehicles.deleteVehicle.confirm')}\n </p>\n <div className=\"kf-manager-vehicles__filter-sheet-footer\">\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__filter-sheet-clear kf-press\"\n onClick={() => setConfirmingDelete(false)}\n >\n {t('chrome.cancel')}\n </button>\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__danger-button kf-press\"\n disabled={submitting}\n onClick={() => void handleDelete()}\n >\n {t('chrome.managerTrip.vehicles.deleteVehicle.confirmAction')}\n </button>\n </div>\n </>\n ) : (\n <>\n <label className=\"kf-manager-vehicles__field-label\" htmlFor=\"kf-vehicle-regno\">\n {t('chrome.managerTrip.vehicles.addVehicle.regNo')}\n </label>\n <input\n id=\"kf-vehicle-regno\"\n type=\"text\"\n value={regNo}\n onChange={(event) => setRegNo(event.target.value)}\n className=\"kf-manager-vehicles__field-input\"\n placeholder=\"HP-33-4021\"\n />\n\n <label className=\"kf-manager-vehicles__field-label\" htmlFor=\"kf-vehicle-label\">\n {t('chrome.managerTrip.vehicles.addVehicle.labelOptional')}\n </label>\n <input\n id=\"kf-vehicle-label\"\n type=\"text\"\n value={label}\n onChange={(event) => setLabel(event.target.value)}\n className=\"kf-manager-vehicles__field-input\"\n />\n\n <p className=\"kf-manager-vehicles__field-label\">\n {t('chrome.managerTrip.vehicles.addVehicle.type')}\n </p>\n <div className=\"kf-manager-vehicles__mode-chips\">\n {VEHICLE_TYPES.map((option) => (\n <button\n key={option}\n type=\"button\"\n className=\"kf-manager-vehicles__mode-chip kf-press\"\n data-active={type === option}\n onClick={() => {\n setType(option);\n if (!isSeatableType(option)) {\n setLayout(undefined);\n }\n }}\n >\n {t(VEHICLE_TYPE_SHORT_KEY[option])}\n </button>\n ))}\n </div>\n\n <label className=\"kf-manager-vehicles__field-label\" htmlFor=\"kf-vehicle-capacity\">\n {t('chrome.managerTrip.vehicles.addVehicle.capacity')}\n </label>\n <input\n id=\"kf-vehicle-capacity\"\n type=\"number\"\n inputMode=\"numeric\"\n min=\"1\"\n max=\"1000\"\n value={capacity}\n onChange={(event) => setCapacity(event.target.value)}\n className=\"kf-manager-vehicles__field-input\"\n />\n\n {seatable ? (\n <>\n <p className=\"kf-manager-vehicles__field-label\">\n {t('chrome.managerTrip.vehicles.addVehicle.layout')}\n </p>\n <div className=\"kf-manager-vehicles__mode-chips\">\n {LAYOUTS.map((option) => (\n <button\n key={option}\n type=\"button\"\n className=\"kf-manager-vehicles__mode-chip kf-press\"\n data-active={layout === option}\n onClick={() => setLayout(layout === option ? undefined : option)}\n >\n {t(LAYOUT_LABEL_KEY[option])}\n </button>\n ))}\n </div>\n </>\n ) : null}\n\n {willOrphan ? (\n <p className=\"kf-manager-vehicles__warning-copy\">\n {t('chrome.managerTrip.vehicles.editVehicle.orphanWarning').replace(\n '{count}',\n String(occupantCount),\n )}\n </p>\n ) : null}\n\n <label className=\"kf-manager-vehicles__field-label\" htmlFor=\"kf-vehicle-driver-name\">\n {t('chrome.managerTrip.vehicles.addVehicle.driverNameOptional')}\n </label>\n <input\n id=\"kf-vehicle-driver-name\"\n type=\"text\"\n value={driverName}\n onChange={(event) => setDriverName(event.target.value)}\n className=\"kf-manager-vehicles__field-input\"\n />\n\n <label className=\"kf-manager-vehicles__field-label\" htmlFor=\"kf-vehicle-driver-phone\">\n {t('chrome.managerTrip.vehicles.addVehicle.driverPhoneOptional')}\n </label>\n <input\n id=\"kf-vehicle-driver-phone\"\n type=\"tel\"\n value={driverPhone}\n onChange={(event) => setDriverPhone(event.target.value)}\n className=\"kf-manager-vehicles__field-input\"\n />\n\n <p className=\"kf-manager-vehicles__field-label\">\n {t('chrome.managerTrip.vehicles.addVehicle.days')}\n </p>\n <div className=\"kf-manager-vehicles__day-tags\">\n {days.length === 0 ? (\n <span className=\"kf-manager-vehicles__pill\" data-tone=\"soft\">\n {t('chrome.managerTrip.vehicles.card.allDays')}\n </span>\n ) : (\n days.map((day) => (\n <button\n key={day}\n type=\"button\"\n className=\"kf-manager-vehicles__day-tag kf-press\"\n onClick={() => removeDay(day)}\n >\n {t('chrome.managerTrip.vehicles.addVehicle.dayTag').replace(\n '{day}',\n String(day + 1),\n )}{' '}\n <CloseIcon />\n </button>\n ))\n )}\n <input\n type=\"number\"\n inputMode=\"numeric\"\n min=\"1\"\n value={dayInput}\n onChange={(event) => setDayInput(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n addDay();\n }\n }}\n className=\"kf-manager-vehicles__day-input\"\n placeholder={t('chrome.managerTrip.vehicles.addVehicle.dayInputPlaceholder')}\n />\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__day-add kf-press\"\n onClick={addDay}\n aria-label={t('chrome.managerTrip.vehicles.addVehicle.addDay')}\n >\n <PlusIcon />\n </button>\n </div>\n\n <label className=\"kf-manager-vehicles__field-label\" htmlFor=\"kf-vehicle-notes\">\n {t('chrome.managerTrip.vehicles.addVehicle.notesOptional')}\n </label>\n <textarea\n id=\"kf-vehicle-notes\"\n value={notes}\n onChange={(event) => setNotes(event.target.value)}\n className=\"kf-manager-vehicles__field-textarea\"\n rows={2}\n />\n\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-submit kf-press\"\n disabled={!canSubmit}\n onClick={() => void handleSubmit()}\n >\n {submitting\n ? t('chrome.managerTrip.vehicles.addVehicle.submitting')\n : vehicle === undefined\n ? t('chrome.managerTrip.vehicles.addVehicle.submit')\n : t('chrome.managerTrip.vehicles.editVehicle.submit')}\n </button>\n\n {vehicle !== undefined ? (\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__delete-link kf-press\"\n onClick={() => setConfirmingDelete(true)}\n >\n <TrashIcon /> {t('chrome.managerTrip.vehicles.deleteVehicle.link')}\n </button>\n ) : null}\n </>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The tap-assign flow — the manager family spec's literal \"2 taps\" p90 (tap\n// the traveller, tap the destination; here either order works, since the\n// pool and every vehicle's seat/occupant grid both open this SAME sheet).\n// A REAL bottom sheet, same `__sheet-backdrop`/`__sheet` recipe every other\n// sheet this session ported. Assigning a traveller into an already-occupied\n// SEAT lets the server's own atomic-swap displacement handle the previous\n// occupant — no extra \"swap\" UI needed, same posture as rooming.\n//\n// A non-seat-mapped vehicle has no seat identity to \"replace\" — tapping an\n// EXISTING occupant chip only offers unassign/view-profile (`kind:\n// 'occupant'`); adding someone new to that same vehicle is a SEPARATE\n// affordance (`kind: 'addOccupant'`, the card's own \"+\" tail chip) rather\n// than a fabricated \"swap this slot\" concept the wire has no room shape for.\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type {\n SeatingOccupantRow,\n SeatingSeatSlot,\n SeatingVehicle,\n} from '../ManagerVehiclesSection.types';\nimport { CloseIcon, EditIcon } from './icons';\n\n// A manager may record the traveller's ACTUAL boarding-pass/ticket seat\n// number even when it doesn't match the vehicle's synthesised grid (real\n// flight/train seat maps aren't always a uniform 2+2/2+1 layout — business\n// rows, exit rows, gaps). The engine's `assign()` accepts any non-empty\n// label up to 8 chars for a seat-mapped vehicle (`SEATING_ORPHAN`/grid\n// membership is no longer enforced there) — this constant mirrors that\n// server-side cap so the client refuses obviously-invalid input up front,\n// never as a stand-in for the server's own validation.\nconst CUSTOM_SEAT_LABEL_MAX_LENGTH = 8;\n\nfunction isValidCustomSeatLabel(value: string): boolean {\n const trimmed = value.trim();\n return trimmed.length > 0 && trimmed.length <= CUSTOM_SEAT_LABEL_MAX_LENGTH;\n}\n\nexport type AssignSeatSheetContext =\n | { readonly kind: 'seat'; readonly vehicle: SeatingVehicle; readonly seat: SeatingSeatSlot }\n | {\n readonly kind: 'occupant';\n readonly vehicle: SeatingVehicle;\n readonly travellerId: string;\n readonly fullName: string;\n readonly glyph: string;\n }\n | { readonly kind: 'addOccupant'; readonly vehicle: SeatingVehicle }\n | { readonly kind: 'customSeat'; readonly vehicle: SeatingVehicle }\n | { readonly kind: 'traveller'; readonly traveller: SeatingOccupantRow };\n\nexport interface AssignSeatSheetProps {\n readonly open: boolean;\n readonly context: AssignSeatSheetContext | undefined;\n readonly vehicles: readonly SeatingVehicle[];\n readonly poolTravellers: readonly SeatingOccupantRow[];\n readonly onAssign: (input: {\n travellerId: string;\n vehicleId: string;\n seatLabel: string | null;\n }) => Promise<void>;\n readonly onUnassign: (input: { travellerId: string }) => Promise<void>;\n readonly onOpenTraveller: (travellerId: string, fullName: string) => void;\n readonly onClose: () => void;\n}\n\nfunction vehicleDisplayLabel(vehicle: SeatingVehicle): string {\n return vehicle.label !== null && vehicle.label.length > 0 ? vehicle.label : vehicle.regNo;\n}\n\nexport function AssignSeatSheet({\n open,\n context,\n vehicles,\n poolTravellers,\n onAssign,\n onUnassign,\n onOpenTraveller,\n onClose,\n}: AssignSeatSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [pending, setPending] = useState(false);\n const [customLabel, setCustomLabel] = useState('');\n const [editingSeatLabel, setEditingSeatLabel] = useState(false);\n const [editSeatLabelValue, setEditSeatLabelValue] = useState('');\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n // A fresh sheet open always starts with a clean custom-label draft and out\n // of edit mode — `context` is a new object literal every time the parent\n // opens the sheet, so it's a deliberate reset trigger even though the\n // effect body never reads it.\n // biome-ignore lint/correctness/useExhaustiveDependencies: `context` is intentionally a reset trigger, not a value the body reads.\n useEffect(() => {\n setCustomLabel('');\n setEditingSeatLabel(false);\n setEditSeatLabelValue('');\n }, [context]);\n\n if (!open || context === undefined) {\n return null;\n }\n\n const title =\n context.kind === 'seat'\n ? `${vehicleDisplayLabel(context.vehicle)} · ${t('chrome.managerTrip.vehicles.seat.label').replace('{label}', context.seat.seatLabel)}`\n : context.kind === 'occupant' ||\n context.kind === 'addOccupant' ||\n context.kind === 'customSeat'\n ? vehicleDisplayLabel(context.vehicle)\n : context.traveller.fullName;\n\n const handleAssign = async (input: {\n travellerId: string;\n vehicleId: string;\n seatLabel: string | null;\n }): Promise<void> => {\n setPending(true);\n try {\n await onAssign(input);\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n const handleUnassign = async (travellerId: string): Promise<void> => {\n setPending(true);\n try {\n await onUnassign({ travellerId });\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n const handleSaveSeatLabel = async (travellerId: string, vehicleId: string): Promise<void> => {\n if (!isValidCustomSeatLabel(editSeatLabelValue)) {\n return;\n }\n setPending(true);\n try {\n await onAssign({ travellerId, vehicleId, seatLabel: editSeatLabelValue.trim() });\n onClose();\n } finally {\n setPending(false);\n }\n };\n\n const currentOccupant =\n context.kind === 'seat'\n ? (context.seat.occupant ?? undefined)\n : context.kind === 'occupant'\n ? { travellerId: context.travellerId, fullName: context.fullName, glyph: context.glyph }\n : undefined;\n\n // Only an occupied SEAT (grid or manager-entered custom label) has a label\n // worth editing — a non-seat-mapped `occupant` has no seat identity at all\n // (`03-layer-contract.md`'s seat-mapped/seat-less split), so it never\n // offers this action.\n const canEditSeatLabel = context.kind === 'seat' && context.seat.occupant !== null;\n\n return (\n <div className=\"kf-manager-vehicles__sheet-backdrop\">\n <div\n className=\"kf-manager-vehicles__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n >\n <div className=\"kf-manager-vehicles__sheet-header\">\n <p className=\"kf-manager-vehicles__sheet-title\">{title}</p>\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {currentOccupant !== undefined ? (\n <div className=\"kf-manager-vehicles__occupant-row\">\n <span className=\"kf-manager-vehicles__seat-avatar\">{currentOccupant.glyph}</span>\n <span className=\"kf-manager-vehicles__pool-name\">{currentOccupant.fullName}</span>\n <div className=\"kf-manager-vehicles__occupant-actions\">\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-secondary kf-press\"\n onClick={() =>\n onOpenTraveller(currentOccupant.travellerId, currentOccupant.fullName)\n }\n >\n {t('chrome.managerTrip.vehicles.assign.viewProfile')}\n </button>\n {canEditSeatLabel ? (\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-secondary kf-press\"\n onClick={() => {\n setEditSeatLabelValue(context.kind === 'seat' ? context.seat.seatLabel : '');\n setEditingSeatLabel(true);\n }}\n >\n <EditIcon /> {t('chrome.managerTrip.vehicles.assign.editSeatNumber')}\n </button>\n ) : null}\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-secondary kf-press\"\n disabled={pending}\n onClick={() => void handleUnassign(currentOccupant.travellerId)}\n >\n {t('chrome.managerTrip.vehicles.assign.unassign')}\n </button>\n </div>\n </div>\n ) : null}\n\n {canEditSeatLabel && editingSeatLabel && context.kind === 'seat' ? (\n <div className=\"kf-manager-vehicles__custom-seat-form\">\n <input\n type=\"text\"\n className=\"kf-manager-vehicles__day-input\"\n value={editSeatLabelValue}\n maxLength={CUSTOM_SEAT_LABEL_MAX_LENGTH}\n placeholder={t('chrome.managerTrip.vehicles.assign.customSeatPlaceholder')}\n onChange={(event) => setEditSeatLabelValue(event.target.value)}\n aria-label={t('chrome.managerTrip.vehicles.assign.editSeatNumber')}\n />\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-secondary kf-press\"\n disabled={pending || !isValidCustomSeatLabel(editSeatLabelValue)}\n onClick={() =>\n void handleSaveSeatLabel(currentOccupant?.travellerId ?? '', context.vehicle.id)\n }\n >\n {t('chrome.managerTrip.vehicles.assign.editSeatSave')}\n </button>\n </div>\n ) : null}\n\n {context.kind === 'customSeat' ? (\n <div className=\"kf-manager-vehicles__custom-seat-form\">\n <p className=\"kf-manager-vehicles__filter-sheet-group-title\">\n {t('chrome.managerTrip.vehicles.assign.customSeatSectionTitle')}\n </p>\n <input\n type=\"text\"\n className=\"kf-manager-vehicles__day-input\"\n value={customLabel}\n maxLength={CUSTOM_SEAT_LABEL_MAX_LENGTH}\n placeholder={t('chrome.managerTrip.vehicles.assign.customSeatPlaceholder')}\n onChange={(event) => setCustomLabel(event.target.value)}\n aria-label={t('chrome.managerTrip.vehicles.assign.enterSeatNumber')}\n />\n {customLabel.length > 0 && !isValidCustomSeatLabel(customLabel) ? (\n <p className=\"kf-manager-vehicles__warning-copy\">\n {t('chrome.managerTrip.vehicles.assign.customSeatInvalid')}\n </p>\n ) : null}\n </div>\n ) : null}\n\n {context.kind === 'occupant' || (context.kind === 'seat' && editingSeatLabel) ? null : (\n <>\n {context.kind === 'customSeat' ? null : (\n <p className=\"kf-manager-vehicles__filter-sheet-group-title\">\n {context.kind === 'traveller'\n ? t('chrome.managerTrip.vehicles.assign.pickVehicle')\n : t('chrome.managerTrip.vehicles.assign.pickTraveller')}\n </p>\n )}\n\n {context.kind === 'traveller' ? (\n vehicles.every(\n (vehicle) =>\n (vehicle.seatMapped && vehicle.seats.every((seat) => seat.occupant !== null)) ||\n (!vehicle.seatMapped && vehicle.occupants.length >= vehicle.capacity),\n ) ? (\n <p className=\"kf-manager-vehicles__assign-empty\">\n {t('chrome.managerTrip.vehicles.assign.noFreeSeats')}\n </p>\n ) : (\n <div className=\"kf-manager-vehicles__assign-list\">\n {vehicles.flatMap((vehicle) =>\n vehicle.seatMapped\n ? vehicle.seats\n .filter((seat) => seat.occupant === null)\n .map((seat) => (\n <button\n key={`${vehicle.id}-${seat.seatLabel}`}\n type=\"button\"\n className=\"kf-manager-vehicles__pool-row kf-press\"\n disabled={pending}\n onClick={() =>\n void handleAssign({\n travellerId: context.traveller.travellerId,\n vehicleId: vehicle.id,\n seatLabel: seat.seatLabel,\n })\n }\n >\n <span className=\"kf-manager-vehicles__pool-name\">\n {vehicleDisplayLabel(vehicle)} ·{' '}\n {t('chrome.managerTrip.vehicles.seat.label').replace(\n '{label}',\n seat.seatLabel,\n )}\n </span>\n </button>\n ))\n : vehicle.occupants.length < vehicle.capacity\n ? [\n <button\n key={vehicle.id}\n type=\"button\"\n className=\"kf-manager-vehicles__pool-row kf-press\"\n disabled={pending}\n onClick={() =>\n void handleAssign({\n travellerId: context.traveller.travellerId,\n vehicleId: vehicle.id,\n seatLabel: null,\n })\n }\n >\n <span className=\"kf-manager-vehicles__pool-name\">\n {vehicleDisplayLabel(vehicle)} ·{' '}\n {t('chrome.managerTrip.vehicles.assign.addToVehicle')}\n </span>\n </button>,\n ]\n : [],\n )}\n </div>\n )\n ) : poolTravellers.length === 0 ? (\n <p className=\"kf-manager-vehicles__assign-empty\">\n {t('chrome.managerTrip.vehicles.assign.poolEmpty')}\n </p>\n ) : (\n <div className=\"kf-manager-vehicles__assign-list\">\n {poolTravellers.map((traveller) => (\n <button\n key={traveller.travellerId}\n type=\"button\"\n className=\"kf-manager-vehicles__pool-row kf-press\"\n disabled={\n pending ||\n (context.kind === 'customSeat' && !isValidCustomSeatLabel(customLabel))\n }\n onClick={() =>\n void handleAssign({\n travellerId: traveller.travellerId,\n vehicleId: context.vehicle.id,\n seatLabel:\n context.kind === 'seat'\n ? context.seat.seatLabel\n : context.kind === 'customSeat'\n ? customLabel.trim()\n : null,\n })\n }\n >\n <span className=\"kf-manager-vehicles__pool-avatar\">{traveller.glyph}</span>\n <span className=\"kf-manager-vehicles__pool-name\">{traveller.fullName}</span>\n </button>\n ))}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\n// Runs the greedy auto-assign solver and applies the result — TRIP-WIDE\n// (no vehicle/window scoping param exists on this surface, unlike\n// rooming's stay-window-scoped auto-assign). Same dry-run-preview-then-\n// confirm shape as `ManagerRoomingSection/internal/AutoAssignSheet.tsx`.\n// A third `outcome:'noop'` (with `noopReason:'no_seat_map'`) exists here\n// that rooming has no equivalent for — rendered as its own row style, never\n// collapsed into \"applied\"/\"relaxed\".\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { SeatingAutoAssignResult, SeatingVehicle } from '../ManagerVehiclesSection.types';\nimport { diffAutoAssignPlan, unassignedReasonLabelKey } from './deriveSeating';\nimport { CloseIcon } from './icons';\n\nexport interface AutoAssignSheetProps {\n readonly open: boolean;\n readonly vehicles: readonly SeatingVehicle[];\n readonly travellerNames: ReadonlyMap<string, string>;\n readonly autoAssign: (input: {\n dryRun: boolean;\n reassignAll?: boolean;\n }) => Promise<SeatingAutoAssignResult>;\n readonly onApplied: (deltas: {\n assigned: number;\n seated: number;\n movedFromPrevious: number;\n }) => void;\n readonly onClose: () => void;\n}\n\nexport function AutoAssignSheet({\n open,\n vehicles,\n travellerNames,\n autoAssign,\n onApplied,\n onClose,\n}: AutoAssignSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n const [reassignAll, setReassignAll] = useState(false);\n const [preview, setPreview] = useState<SeatingAutoAssignResult | undefined>(undefined);\n const [loading, setLoading] = useState(false);\n const [applying, setApplying] = useState(false);\n const [failed, setFailed] = useState(false);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: autoAssign omitted deliberately — it's a fresh closure identity every render (`seating.autoAssign` in the owning composite), and listing it would re-run this preview fetch on every parent render instead of only on open/reassignAll change.\n useEffect(() => {\n if (!open) {\n return;\n }\n let cancelled = false;\n setLoading(true);\n setFailed(false);\n void autoAssign({ dryRun: true, reassignAll })\n .then((result) => {\n if (!cancelled) {\n setPreview(result);\n }\n })\n .catch(() => {\n if (!cancelled) {\n setFailed(true);\n }\n })\n .finally(() => {\n if (!cancelled) {\n setLoading(false);\n }\n });\n return () => {\n cancelled = true;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- autoAssign omitted deliberately, same rationale as the biome-ignore above this effect.\n }, [open, reassignAll]);\n\n useEffect(() => {\n if (open) {\n setPreview(undefined);\n setApplying(false);\n setReassignAll(false);\n }\n }, [open]);\n\n if (!open) {\n return null;\n }\n\n const rows =\n preview !== undefined ? diffAutoAssignPlan(preview.plan, vehicles, travellerNames) : [];\n const noopRules = preview?.perRule.filter((rule) => rule.outcome === 'noop') ?? [];\n\n const handleApply = async (): Promise<void> => {\n setApplying(true);\n try {\n const result = await autoAssign({ dryRun: false, reassignAll });\n onApplied(result.deltas);\n onClose();\n } finally {\n setApplying(false);\n }\n };\n\n return (\n <div className=\"kf-manager-vehicles__sheet-backdrop\">\n <div\n className=\"kf-manager-vehicles__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.vehicles.autoAssign.title')}\n >\n <div className=\"kf-manager-vehicles__sheet-header\">\n <p className=\"kf-manager-vehicles__sheet-title\">\n {t('chrome.managerTrip.vehicles.autoAssign.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={reassignAll}\n className=\"kf-manager-vehicles__toggle-row\"\n onClick={() => setReassignAll((current) => !current)}\n >\n <span className=\"kf-manager-vehicles__toggle-track\" data-active={reassignAll}>\n <span className=\"kf-manager-vehicles__toggle-thumb\" />\n </span>\n {t('chrome.managerTrip.vehicles.autoAssign.reassignAll')}\n </button>\n\n {loading ? (\n <>\n <div className=\"kf-manager-vehicles__pool-skeleton\" />\n <div className=\"kf-manager-vehicles__pool-skeleton\" />\n </>\n ) : failed ? (\n <p className=\"kf-manager-vehicles__assign-empty\">\n {t('chrome.managerTrip.vehicles.autoAssign.previewFailed')}\n </p>\n ) : preview === undefined ? null : rows.length === 0 &&\n preview.unassigned.length === 0 &&\n noopRules.length === 0 ? (\n <p className=\"kf-manager-vehicles__assign-empty\">\n {t('chrome.managerTrip.vehicles.autoAssign.nothingToApply')}\n </p>\n ) : (\n <>\n <p className=\"kf-manager-vehicles__autoassign-summary\">\n {t('chrome.managerTrip.vehicles.autoAssign.summary')\n .replace('{assigned}', String(preview.deltas.assigned))\n .replace('{moved}', String(preview.deltas.movedFromPrevious))}\n </p>\n\n {noopRules.length > 0 ? (\n <p className=\"kf-manager-vehicles__assign-empty\">\n {t('chrome.managerTrip.vehicles.autoAssign.noSeatMapNotice')}\n </p>\n ) : null}\n\n {rows.length > 0 ? (\n <div className=\"kf-manager-vehicles__assign-list\">\n {rows.map((row) => (\n <div key={row.travellerId} className=\"kf-manager-vehicles__delta-row\">\n <span\n className=\"kf-manager-vehicles__pill\"\n data-tone={row.kind === 'added' ? 'pos' : 'accent'}\n >\n {row.kind === 'added'\n ? t('chrome.managerTrip.vehicles.autoAssign.kindAdded')\n : t('chrome.managerTrip.vehicles.autoAssign.kindMoved')}\n </span>\n <span className=\"kf-manager-vehicles__pool-name\">\n {row.fullName} → {row.vehicleLabel}\n {row.seatLabel !== null\n ? ` · ${t('chrome.managerTrip.vehicles.seat.label').replace('{label}', row.seatLabel)}`\n : ''}\n </span>\n {row.kind === 'moved' ? (\n <span className=\"kf-manager-vehicles__delta-from\">\n {t('chrome.managerTrip.vehicles.autoAssign.movedFrom').replace(\n '{vehicle}',\n row.fromVehicleLabel ?? '',\n )}\n </span>\n ) : null}\n </div>\n ))}\n </div>\n ) : null}\n\n {preview.unassigned.length > 0 ? (\n <>\n <p className=\"kf-manager-vehicles__filter-sheet-group-title\">\n {t('chrome.managerTrip.vehicles.autoAssign.unplaced')}\n </p>\n <div className=\"kf-manager-vehicles__assign-list\">\n {preview.unassigned.map((row) => (\n <div key={row.travellerId} className=\"kf-manager-vehicles__delta-row\">\n <span className=\"kf-manager-vehicles__pool-name\">\n {travellerNames.get(row.travellerId) ?? row.travellerId}\n </span>\n <span className=\"kf-manager-vehicles__delta-from\">\n {t(unassignedReasonLabelKey(row.reason))}\n </span>\n </div>\n ))}\n </div>\n </>\n ) : null}\n </>\n )}\n\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-submit kf-press\"\n disabled={loading || applying || preview === undefined || rows.length === 0}\n onClick={() => void handleApply()}\n >\n {applying\n ? t('chrome.managerTrip.vehicles.autoAssign.applying')\n : t('chrome.managerTrip.vehicles.autoAssign.apply')}\n </button>\n </div>\n </div>\n );\n}\n","'use client';\n\n// Sets/removes a vehicle's owning manager — real `linkManager`/\n// `unlinkManager` (`useSeating.ts`), picking from `useManagers(tripRef)`'s\n// real trip roster (already used by `ManagerNowSection`'s co-manager card).\n// Deliberately NOT a \"this is my vehicle\" self-detecting toggle — there is\n// no client-visible \"which manager am I\" comparison anywhere in this UIKit\n// today (`useManagerMe()`/`useSession()` both withhold a manager id, by\n// design — `ManagerVehiclesSection.types.ts`'s own header audit). A manager\n// recognizing their own name in this real roster and tapping it is the\n// honest version of the same real feature.\n\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { SeatingVehicle } from '../ManagerVehiclesSection.types';\nimport { CloseIcon } from './icons';\n\nexport interface SetOwnerRoster {\n readonly managerId: string;\n readonly fullName: string;\n}\n\nexport interface SetOwnerSheetProps {\n readonly open: boolean;\n readonly vehicle: SeatingVehicle | undefined;\n readonly roster: readonly SetOwnerRoster[];\n readonly onClose: () => void;\n readonly onSetOwner: (input: { vehicleId: string; managerRef: string }) => Promise<void>;\n readonly onRemoveOwner: (input: { vehicleId: string; version: number }) => Promise<void>;\n}\n\nexport function SetOwnerSheet({\n open,\n vehicle,\n roster,\n onClose,\n onSetOwner,\n onRemoveOwner,\n}: SetOwnerSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n if (!open || vehicle === undefined) {\n return null;\n }\n\n return (\n <div className=\"kf-manager-vehicles__sheet-backdrop\">\n <div\n className=\"kf-manager-vehicles__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.vehicles.setOwner.title')}\n >\n <div className=\"kf-manager-vehicles__sheet-header\">\n <p className=\"kf-manager-vehicles__sheet-title\">\n {t('chrome.managerTrip.vehicles.setOwner.title')}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {vehicle.managerId !== null ? (\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__filter-sheet-clear kf-press\"\n onClick={() => void onRemoveOwner({ vehicleId: vehicle.id, version: vehicle.version })}\n >\n {t('chrome.managerTrip.vehicles.setOwner.removeOwner')}\n </button>\n ) : null}\n\n {roster.length === 0 ? (\n <p className=\"kf-manager-vehicles__assign-empty\">\n {t('chrome.managerTrip.vehicles.setOwner.rosterEmpty')}\n </p>\n ) : (\n <div className=\"kf-manager-vehicles__assign-list\">\n {roster.map((manager) => (\n <button\n key={manager.managerId}\n type=\"button\"\n className=\"kf-manager-vehicles__pool-row kf-press\"\n data-active={manager.managerId === vehicle.managerId}\n onClick={() =>\n void onSetOwner({ vehicleId: vehicle.id, managerRef: manager.managerId })\n }\n >\n <span className=\"kf-manager-vehicles__pool-name\">{manager.fullName}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The persistent \"who still needs a seat\" pool — real `unassignedPool`,\n// trip-wide (no window-scoping unit exists for seating, unlike rooming).\n// Same shape `ManagerRoomingSection/internal/UnassignedPoolSection.tsx`\n// establishes: tapping a pool row opens the SAME `AssignSeatSheet`\n// pre-armed with that traveller (person-first, vs bed/seat-first).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { SeatingOccupantRow } from '../ManagerVehiclesSection.types';\n\nexport interface UnassignedPoolSectionProps {\n readonly travellers: readonly SeatingOccupantRow[];\n readonly loaded: boolean;\n readonly onSelectTraveller: (traveller: SeatingOccupantRow) => void;\n}\n\nexport function UnassignedPoolSection({\n travellers,\n loaded,\n onSelectTraveller,\n}: UnassignedPoolSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n\n if (loaded && travellers.length === 0) {\n return null;\n }\n\n return (\n <section aria-label={t('chrome.managerTrip.vehicles.pool.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-vehicles__eyebrow-row\">\n {t('chrome.managerTrip.vehicles.pool.eyebrow')}\n <span className=\"kf-manager-vehicles__pool-count\">{travellers.length}</span>\n </p>\n <div className=\"kf-manager-vehicles__card kf-manager-vehicles__pool\">\n {!loaded ? (\n <div className=\"kf-manager-vehicles__pool-skeleton\" />\n ) : (\n travellers.map((traveller) => (\n <button\n key={traveller.travellerId}\n type=\"button\"\n className=\"kf-manager-vehicles__pool-row kf-press\"\n onClick={() => onSelectTraveller(traveller)}\n >\n <span className=\"kf-manager-vehicles__pool-avatar\">{traveller.glyph}</span>\n <span className=\"kf-manager-vehicles__pool-name\">{traveller.fullName}</span>\n {traveller.medicalFlag ? (\n <span className=\"kf-manager-vehicles__pill\" data-tone=\"warn\">\n {t('chrome.managerTrip.vehicles.pool.medical')}\n </span>\n ) : null}\n </button>\n ))\n )}\n </div>\n </section>\n );\n}\n","'use client';\n\n// One vehicle. Structural reference: `ManagerRoomingSection/internal/\n// RoomCard.tsx`, re-keyed for seating — a `seatMapped:true` vehicle\n// (FLIGHT/TRAIN only) renders its real `seats[]` as a flat wrapped chip\n// grid (per this wave's own decision: same visual complexity as rooming's\n// bed grid, not a real 2D row/aisle layout); every other vehicle renders\n// its `occupants[]` the same way, keyed by travellerId with no discrete\n// seat label, plus a \"+ add occupant\" tail chip (assigns with\n// `seatLabel: null`).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { SeatingSeatSlot, SeatingVehicle } from '../ManagerVehiclesSection.types';\nimport { allOccupantsOfVehicle, dayCoverageLabel, vehicleTypeLabelKey } from './deriveSeating';\nimport { ChevronIcon, EditIcon, PersonIcon, PhoneIcon, PlusIcon } from './icons';\n\nexport interface VehicleCardProps {\n readonly vehicle: SeatingVehicle;\n readonly ownerName: string | undefined;\n readonly onSelectSeat: (vehicle: SeatingVehicle, seat: SeatingSeatSlot) => void;\n readonly onSelectOccupant: (vehicle: SeatingVehicle, travellerId: string) => void;\n readonly onAddOccupant: (vehicle: SeatingVehicle) => void;\n /** Opens the sheet's `customSeat` flow — a manager types the traveller's\n * REAL boarding-pass/ticket seat number (business rows, exit rows, gaps\n * this vehicle's synthesised grid doesn't model), rather than being\n * limited to the grid's own auto-generated labels. Only offered on a\n * seat-mapped vehicle. */\n readonly onEnterCustomSeat: (vehicle: SeatingVehicle) => void;\n readonly onEditVehicle: (vehicle: SeatingVehicle) => void;\n readonly onEditOwner: (vehicle: SeatingVehicle) => void;\n /** Opens `VehicleRosterSheet` — a full scrollable list of every real\n * occupant on this vehicle, for a capacity too large to scan comfortably\n * as wrapped chips (e.g. a 12-seat tempo traveller). */\n readonly onViewRoster: (vehicle: SeatingVehicle) => void;\n}\n\nexport function VehicleCard({\n vehicle,\n ownerName,\n onSelectSeat,\n onSelectOccupant,\n onAddOccupant,\n onEnterCustomSeat,\n onEditVehicle,\n onEditOwner,\n onViewRoster,\n}: VehicleCardProps): ReactNode {\n const { t } = useKaafilChrome();\n const totalOccupantCount = allOccupantsOfVehicle(vehicle).length;\n const dayCoverage = dayCoverageLabel(vehicle.days);\n const dayLabel =\n dayCoverage === 'ALL_DAYS'\n ? t('chrome.managerTrip.vehicles.card.allDays')\n : t('chrome.managerTrip.vehicles.card.dayCoverage').replace('{days}', dayCoverage);\n\n return (\n <div className=\"kf-manager-vehicles__vehicle-card\">\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__vehicle-header kf-press\"\n onClick={() => onEditVehicle(vehicle)}\n aria-label={t('chrome.managerTrip.vehicles.card.editAriaLabel').replace(\n '{regNo}',\n vehicle.regNo,\n )}\n >\n <span className=\"kf-manager-vehicles__vehicle-title-block\">\n <span className=\"kf-manager-vehicles__vehicle-title\">\n {vehicle.regNo}\n {vehicle.label !== null ? ` · ${vehicle.label}` : ''}\n </span>\n <span className=\"kf-manager-vehicles__vehicle-subtitle\">\n {t(vehicleTypeLabelKey(vehicle.type))} ·{' '}\n {t('chrome.managerTrip.vehicles.card.capacity').replace(\n '{count}',\n String(vehicle.capacity),\n )}\n </span>\n </span>\n <span className=\"kf-manager-vehicles__pill\" data-tone=\"soft\">\n {dayLabel}\n </span>\n <ChevronIcon className=\"kf-manager-vehicles__vehicle-chevron\" />\n </button>\n\n <div className=\"kf-manager-vehicles__meta-row\">\n {vehicle.driverName !== null ? (\n <span className=\"kf-manager-vehicles__meta-item\">\n {vehicle.driverName}\n {vehicle.driverPhone !== null ? (\n <a\n className=\"kf-manager-vehicles__call-link\"\n href={`tel:${vehicle.driverPhone}`}\n aria-label={t('chrome.managerTrip.vehicles.card.callDriver')}\n >\n <PhoneIcon /> {t('chrome.managerTrip.vehicles.card.call')}\n </a>\n ) : null}\n </span>\n ) : null}\n <span className=\"kf-manager-vehicles__meta-item\">\n {totalOccupantCount > 0 ? (\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__owner-link kf-press\"\n onClick={() => onViewRoster(vehicle)}\n >\n {t('chrome.managerTrip.vehicles.roster.viewAll').replace(\n '{count}',\n String(totalOccupantCount),\n )}\n </button>\n ) : null}\n {vehicle.seatMapped ? (\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__owner-link kf-press\"\n onClick={() => onEnterCustomSeat(vehicle)}\n >\n <EditIcon /> {t('chrome.managerTrip.vehicles.assign.enterSeatNumber')}\n </button>\n ) : null}\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__owner-link kf-press\"\n onClick={() => onEditOwner(vehicle)}\n >\n <PersonIcon /> {ownerName ?? t('chrome.managerTrip.vehicles.card.setOwner')}\n </button>\n </span>\n </div>\n\n {vehicle.notes !== null ? (\n <p className=\"kf-manager-vehicles__vehicle-notes\">{vehicle.notes}</p>\n ) : null}\n\n <div className=\"kf-manager-vehicles__seat-grid\">\n {vehicle.seatMapped\n ? vehicle.seats.map((seat) => (\n <button\n key={seat.seatLabel}\n type=\"button\"\n className=\"kf-manager-vehicles__seat-slot kf-press\"\n data-occupied={seat.occupant !== null}\n data-custom-label={seat.isCustomLabel}\n title={\n seat.isCustomLabel\n ? t('chrome.managerTrip.vehicles.assign.editSeatNumber')\n : undefined\n }\n onClick={() => onSelectSeat(vehicle, seat)}\n >\n {seat.occupant !== null ? (\n <>\n <span className=\"kf-manager-vehicles__seat-avatar\">{seat.occupant.glyph}</span>\n <span className=\"kf-manager-vehicles__seat-name\">\n {seat.seatLabel} · {seat.occupant.fullName.split(/\\s+/)[0]}\n </span>\n </>\n ) : (\n <span className=\"kf-manager-vehicles__seat-empty\">{seat.seatLabel}</span>\n )}\n </button>\n ))\n : vehicle.occupants.map((occupant) => (\n <button\n key={occupant.travellerId}\n type=\"button\"\n className=\"kf-manager-vehicles__seat-slot kf-press\"\n data-occupied=\"true\"\n onClick={() => onSelectOccupant(vehicle, occupant.travellerId)}\n >\n <span className=\"kf-manager-vehicles__seat-avatar\">{occupant.glyph}</span>\n <span className=\"kf-manager-vehicles__seat-name\">\n {occupant.fullName.split(/\\s+/)[0]}\n </span>\n </button>\n ))}\n {!vehicle.seatMapped && vehicle.occupants.length < vehicle.capacity ? (\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__seat-slot kf-manager-vehicles__seat-add kf-press\"\n onClick={() => onAddOccupant(vehicle)}\n >\n <PlusIcon />\n </button>\n ) : null}\n </div>\n </div>\n );\n}\n","'use client';\n\n// A vehicle can carry more occupants than fit comfortably in the card's own\n// wrapped chip grid (a 12-seat tempo traveller, say) — this sheet lists\n// EVERY real occupant on one vehicle as a proper scrollable list, each row\n// offering the same real \"View profile\"/\"Unassign\" actions the tap-a-chip\n// flow (`AssignSeatSheet`'s `kind: 'occupant'` branch) already provides —\n// this sheet is a second, list-shaped ENTRY POINT to that same real action,\n// not a new write path.\n//\n// `vehicle.occupants` alone is WRONG for a seat-mapped vehicle — FRD §4.2's\n// mutually-exclusive DTO contract means it's always `[]` there, with real\n// people living in `seats[].occupant`/`unseatedOnVehicle` instead —\n// `allOccupantsOfVehicle` is the one place that reads all three correctly.\n//\n// For a seat-mapped vehicle, each row also shows the traveller's real seat\n// label (`1A`, `1B`…) — the same real field the card's own seat grid reads.\n\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { SeatingVehicle } from '../ManagerVehiclesSection.types';\nimport { allOccupantsOfVehicle } from './deriveSeating';\nimport { CloseIcon } from './icons';\n\nexport interface VehicleRosterSheetProps {\n readonly open: boolean;\n readonly vehicle: SeatingVehicle | undefined;\n readonly onSelectOccupant: (vehicle: SeatingVehicle, travellerId: string) => void;\n readonly onClose: () => void;\n}\n\nfunction vehicleDisplayLabel(vehicle: SeatingVehicle): string {\n return vehicle.label !== null && vehicle.label.length > 0 ? vehicle.label : vehicle.regNo;\n}\n\nexport function VehicleRosterSheet({\n open,\n vehicle,\n onSelectOccupant,\n onClose,\n}: VehicleRosterSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n\n useEffect(() => {\n if (!open) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [open, onClose]);\n\n if (!open || vehicle === undefined) {\n return null;\n }\n\n const occupants = allOccupantsOfVehicle(vehicle);\n\n const seatLabelFor = (travellerId: string): string | null => {\n if (!vehicle.seatMapped) {\n return null;\n }\n return (\n vehicle.seats.find((seat) => seat.occupant?.travellerId === travellerId)?.seatLabel ?? null\n );\n };\n\n return (\n <div className=\"kf-manager-vehicles__sheet-backdrop\">\n <div\n className=\"kf-manager-vehicles__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={t('chrome.managerTrip.vehicles.roster.title').replace(\n '{vehicle}',\n vehicleDisplayLabel(vehicle),\n )}\n >\n <div className=\"kf-manager-vehicles__sheet-header\">\n <p className=\"kf-manager-vehicles__sheet-title\">\n {t('chrome.managerTrip.vehicles.roster.title').replace(\n '{vehicle}',\n vehicleDisplayLabel(vehicle),\n )}\n </p>\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {occupants.length === 0 ? (\n <p className=\"kf-manager-vehicles__assign-empty\">\n {t('chrome.managerTrip.vehicles.roster.empty')}\n </p>\n ) : (\n <div className=\"kf-manager-vehicles__assign-list\">\n {occupants.map((occupant) => {\n const seatLabel = seatLabelFor(occupant.travellerId);\n return (\n <button\n key={occupant.travellerId}\n type=\"button\"\n className=\"kf-manager-vehicles__pool-row kf-press\"\n onClick={() => onSelectOccupant(vehicle, occupant.travellerId)}\n >\n <span className=\"kf-manager-vehicles__seat-avatar\">{occupant.glyph}</span>\n <span className=\"kf-manager-vehicles__pool-name\">{occupant.fullName}</span>\n {seatLabel !== null ? (\n <span className=\"kf-manager-vehicles__pill\" data-tone=\"soft\">\n {t('chrome.managerTrip.vehicles.seat.label').replace('{label}', seatLabel)}\n </span>\n ) : null}\n </button>\n );\n })}\n </div>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\n// The 3-stat strip — same recipe `ManagerRoomingSection`'s own\n// `RoomingStats.tsx` establishes, re-keyed for vehicles. Trip-wide (no\n// scoping unit exists here to filter by, unlike rooming's stay windows).\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\n\nexport interface VehicleStatsProps {\n readonly vehicleCount: number;\n readonly seated: number;\n readonly capacity: number;\n readonly unassignedCount: number;\n}\n\nexport function VehicleStats({\n vehicleCount,\n seated,\n capacity,\n unassignedCount,\n}: VehicleStatsProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <div className=\"kf-manager-vehicles__stats\">\n <div className=\"kf-manager-vehicles__stat-cell\">\n <p className=\"kf-manager-vehicles__stat-label\">\n {t('chrome.managerTrip.vehicles.stats.vehicles')}\n </p>\n <p className=\"kf-manager-vehicles__stat-value\">{vehicleCount}</p>\n </div>\n <div className=\"kf-manager-vehicles__stat-cell\">\n <p className=\"kf-manager-vehicles__stat-label\">\n {t('chrome.managerTrip.vehicles.stats.seats')}\n </p>\n <p className=\"kf-manager-vehicles__stat-value\">\n {seated}/{capacity}\n </p>\n </div>\n <div className=\"kf-manager-vehicles__stat-cell\">\n <p className=\"kf-manager-vehicles__stat-label\">\n {t('chrome.managerTrip.vehicles.stats.unassigned')}\n </p>\n <p\n className=\"kf-manager-vehicles__stat-value\"\n data-tone={unassignedCount > 0 ? 'warn' : 'pos'}\n >\n {unassignedCount}\n </p>\n </div>\n </div>\n );\n}\n","'use client';\n\n// The Vehicles tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'vehicles'` tab panel.\n// `useSeating(tripRef)` is the one real hook it reads (`08-core-hooks.md\n// §3`'s own exemplar-derived row) — already complete, no new `/core` hook\n// needed. `useManagers(tripRef)` (also already real) backs the \"set owner\"\n// picker's roster.\n//\n// Unlike rooming, seating has NO stay-window-equivalent scoping unit (the\n// SDK's own header comment: \"nothing on this surface takes a date...\n// unlike rooming and itinerary\") — every vehicle is listed at once, each\n// showing its own real day-coverage badge (`days: number[]`, empty=\"All\n// days\"). The unassigned pool and auto-assign are both trip-wide.\n//\n// Composition order: 3 stat cards → persistent unassigned pool → vehicle\n// list (each vehicle's own seat/occupant chip grid, every slot tappable) →\n// \"Add a vehicle\" tail card. Add/edit-vehicle, auto-assign, and set-owner\n// all open as bottom sheets, never a routed page (hard rule #9).\n\nimport type { ReactNode } from 'react';\nimport { useMemo, useState } from 'react';\nimport { useManagers } from '../../../../core/hooks/useManagers.js';\nimport { useSeating } from '../../../../core/hooks/useSeating.js';\nimport { useKaafilChrome } from '../../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { AddVehicleSheet } from './internal/AddVehicleSheet';\nimport { AssignSeatSheet, type AssignSeatSheetContext } from './internal/AssignSeatSheet';\nimport { AutoAssignSheet } from './internal/AutoAssignSheet';\nimport {\n allOccupantsOfVehicle,\n isLiveVehicle,\n seatingTotals,\n travellerNameMap,\n} from './internal/deriveSeating';\nimport { PlusIcon, WandIcon } from './internal/icons';\nimport { SetOwnerSheet } from './internal/SetOwnerSheet';\nimport { UnassignedPoolSection } from './internal/UnassignedPoolSection';\nimport { VehicleCard } from './internal/VehicleCard';\nimport { VehicleRosterSheet } from './internal/VehicleRosterSheet';\nimport { VehicleStats } from './internal/VehicleStats';\nimport type { ManagerVehiclesSectionProps, SeatingVehicle } from './ManagerVehiclesSection.types';\n\nexport function ManagerVehiclesSection({\n tripRef,\n onOpenTraveller,\n emptyView,\n components,\n style,\n}: ManagerVehiclesSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n const seating = useSeating(tripRef);\n const managers = useManagers(tripRef);\n\n const Stats = components?.Stats ?? VehicleStats;\n const VehicleCardComponent = components?.VehicleCard ?? VehicleCard;\n const UnassignedPool = components?.UnassignedPool ?? UnassignedPoolSection;\n\n const [assignContext, setAssignContext] = useState<AssignSeatSheetContext | undefined>(undefined);\n const [addVehicleOpen, setAddVehicleOpen] = useState(false);\n const [editingVehicle, setEditingVehicle] = useState<SeatingVehicle | undefined>(undefined);\n const [autoAssignOpen, setAutoAssignOpen] = useState(false);\n const [ownerSheetVehicle, setOwnerSheetVehicle] = useState<SeatingVehicle | undefined>(undefined);\n const [rosterVehicle, setRosterVehicle] = useState<SeatingVehicle | undefined>(undefined);\n\n const openOccupant = (selectedVehicle: SeatingVehicle, travellerId: string): void => {\n // A seat-mapped vehicle's occupant lives in `seats[]`, never in\n // `occupants` (always `[]` there, FRD §4.2) — route through the real\n // seat context when one exists, so \"Edit seat number\" is offered the\n // same way whether this occupant was reached by tapping their chip\n // directly or via the roster sheet's row tap.\n const seat = selectedVehicle.seatMapped\n ? selectedVehicle.seats.find((candidate) => candidate.occupant?.travellerId === travellerId)\n : undefined;\n if (seat?.occupant != null) {\n setRosterVehicle(undefined);\n setAssignContext({ kind: 'seat', vehicle: selectedVehicle, seat });\n return;\n }\n const occupant = allOccupantsOfVehicle(selectedVehicle).find(\n (candidate) => candidate.travellerId === travellerId,\n );\n if (occupant === undefined) {\n return;\n }\n setRosterVehicle(undefined);\n setAssignContext({\n kind: 'occupant',\n vehicle: selectedVehicle,\n travellerId: occupant.travellerId,\n fullName: occupant.fullName,\n glyph: occupant.glyph,\n });\n };\n\n const liveVehicles = useMemo(\n () => (seating.status === 'ready' ? seating.vehicles.filter(isLiveVehicle) : []),\n [seating],\n );\n\n const managerRoster = useMemo(\n () =>\n managers.status === 'ready'\n ? managers.managers.map((row) => ({ managerId: row.managerId, fullName: row.fullName }))\n : [],\n [managers],\n );\n const managerNameById = useMemo(() => {\n const map = new Map<string, string>();\n for (const row of managerRoster) {\n map.set(row.managerId, row.fullName);\n }\n return map;\n }, [managerRoster]);\n\n if (seating.status === 'loading') {\n return (\n <div className=\"kf-manager-vehicles__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-vehicles__skeleton-block\" />\n <div className=\"kf-manager-vehicles__skeleton-line\" />\n <div className=\"kf-manager-vehicles__skeleton-line kf-manager-vehicles__skeleton-line--short\" />\n </div>\n );\n }\n if (seating.status === 'dark' || seating.status === 'error') {\n return null;\n }\n\n const totals = seatingTotals(liveVehicles);\n const unassignedCount = seating.unassignedPool.travellers.length;\n const travellerNames = travellerNameMap(seating.unassignedPool.travellers, liveVehicles);\n\n const resolvedEmptyView =\n emptyView !== undefined ? (typeof emptyView === 'function' ? emptyView() : emptyView) : null;\n\n return (\n <div className=\"kf-manager-vehicles\" style={tokenStyle(style)}>\n <Stats\n vehicleCount={totals.vehicleCount}\n seated={totals.seated}\n capacity={totals.capacity}\n unassignedCount={unassignedCount}\n />\n\n <UnassignedPool\n travellers={seating.unassignedPool.travellers}\n loaded={seating.unassignedPool.loaded}\n onSelectTraveller={(traveller) => setAssignContext({ kind: 'traveller', traveller })}\n />\n\n <section aria-label={t('chrome.managerTrip.vehicles.list.ariaLabel')}>\n <p className=\"kf-eyebrow kf-manager-vehicles__eyebrow-row\">\n {t('chrome.managerTrip.vehicles.list.eyebrow')}\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__autoassign-link kf-press\"\n onClick={() => setAutoAssignOpen(true)}\n >\n <WandIcon /> {t('chrome.managerTrip.vehicles.autoAssign.button')}\n </button>\n </p>\n\n {liveVehicles.length === 0\n ? (resolvedEmptyView ?? (\n <div className=\"kf-manager-vehicles__card kf-manager-vehicles__empty\">\n {t('chrome.managerTrip.vehicles.noVehicles')}\n </div>\n ))\n : liveVehicles.map((vehicle) => (\n <VehicleCardComponent\n key={vehicle.id}\n vehicle={vehicle}\n ownerName={\n vehicle.managerId !== null ? managerNameById.get(vehicle.managerId) : undefined\n }\n onSelectSeat={(selectedVehicle, seat) =>\n setAssignContext({ kind: 'seat', vehicle: selectedVehicle, seat })\n }\n onSelectOccupant={openOccupant}\n onAddOccupant={(selectedVehicle) =>\n setAssignContext({ kind: 'addOccupant', vehicle: selectedVehicle })\n }\n onEnterCustomSeat={(selectedVehicle) =>\n setAssignContext({ kind: 'customSeat', vehicle: selectedVehicle })\n }\n onEditVehicle={(selectedVehicle) => {\n setEditingVehicle(selectedVehicle);\n setAddVehicleOpen(true);\n }}\n onEditOwner={(selectedVehicle) => setOwnerSheetVehicle(selectedVehicle)}\n onViewRoster={(selectedVehicle) => setRosterVehicle(selectedVehicle)}\n />\n ))}\n\n <button\n type=\"button\"\n className=\"kf-manager-vehicles__add-vehicle-card kf-press\"\n onClick={() => {\n setEditingVehicle(undefined);\n setAddVehicleOpen(true);\n }}\n >\n <span className=\"kf-manager-vehicles__add-vehicle-icon\">\n <PlusIcon />\n </span>\n <span className=\"kf-manager-vehicles__add-vehicle-copy\">\n <span className=\"kf-manager-vehicles__add-vehicle-title\">\n {t('chrome.managerTrip.vehicles.addVehicle.tailTitle')}\n </span>\n <span className=\"kf-manager-vehicles__add-vehicle-subtitle\">\n {t('chrome.managerTrip.vehicles.addVehicle.tailSubtitle')}\n </span>\n </span>\n </button>\n </section>\n\n <AssignSeatSheet\n open={assignContext !== undefined}\n context={assignContext}\n vehicles={liveVehicles}\n poolTravellers={seating.unassignedPool.travellers}\n onAssign={async (input) => {\n await seating.assign(input);\n }}\n onUnassign={async (input) => {\n await seating.assign({\n travellerId: input.travellerId,\n vehicleId: null,\n seatLabel: null,\n });\n }}\n onOpenTraveller={onOpenTraveller}\n onClose={() => setAssignContext(undefined)}\n />\n\n <AddVehicleSheet\n open={addVehicleOpen}\n vehicle={editingVehicle}\n onClose={() => setAddVehicleOpen(false)}\n onCreate={async (input) => {\n await seating.createVehicle({ ...input, days: [...input.days] });\n }}\n onPatch={async (input) => {\n await seating.patchVehicle({ ...input, days: [...input.days] });\n }}\n onDelete={async (input) => {\n await seating.removeVehicle(input);\n }}\n />\n\n <AutoAssignSheet\n open={autoAssignOpen}\n vehicles={liveVehicles}\n travellerNames={travellerNames}\n autoAssign={seating.autoAssign}\n onApplied={() => {\n void seating.unassignedPool.refresh();\n }}\n onClose={() => setAutoAssignOpen(false)}\n />\n\n <VehicleRosterSheet\n open={rosterVehicle !== undefined}\n vehicle={rosterVehicle}\n onSelectOccupant={openOccupant}\n onClose={() => setRosterVehicle(undefined)}\n />\n\n <SetOwnerSheet\n open={ownerSheetVehicle !== undefined}\n vehicle={ownerSheetVehicle}\n roster={managerRoster}\n onClose={() => setOwnerSheetVehicle(undefined)}\n onSetOwner={async (input) => {\n await seating.linkManager(input);\n setOwnerSheetVehicle(undefined);\n }}\n onRemoveOwner={async (input) => {\n await seating.unlinkManager(input);\n setOwnerSheetVehicle(undefined);\n }}\n />\n </div>\n );\n}\n","// Pure derivation helpers off `useVendors()`'s own return shape — no\n// `kaafil-js` import (hard rule #1), no fabricated fields (no status, no\n// expense total — `TripVendorRow` carries neither on the real wire).\n\nimport type { TripVendorRow, VendorCategory } from '../ManagerVendorsSection.types';\n\n/** Client-side only — `client.vendors.list()` takes no `?category=` query\n * param (verified against `kaafil-js/src/resources/vendors.ts`), despite\n * the spec's own claim that this filter is \"passed straight through\". */\nexport function filterByCategory(\n vendors: readonly TripVendorRow[],\n category: VendorCategory | undefined,\n): readonly TripVendorRow[] {\n if (category === undefined) {\n return vendors;\n }\n return vendors.filter((vendor) => vendor.category === category);\n}\n\nconst VENDOR_CATEGORY_LABEL_KEY: Record<VendorCategory, string> = {\n HOTEL: 'chrome.managerTrip.vendors.category.hotel',\n TRANSPORT: 'chrome.managerTrip.vendors.category.transport',\n ACTIVITY: 'chrome.managerTrip.vendors.category.activity',\n GUIDE: 'chrome.managerTrip.vendors.category.guide',\n FOOD: 'chrome.managerTrip.vendors.category.food',\n MISC: 'chrome.managerTrip.vendors.category.misc',\n};\n\nexport function vendorCategoryLabelKey(category: VendorCategory): string {\n return VENDOR_CATEGORY_LABEL_KEY[category];\n}\n\nexport function sortedVendors(vendors: readonly TripVendorRow[]): readonly TripVendorRow[] {\n return vendors.slice().sort((a, b) => a.name.localeCompare(b.name));\n}\n","'use client';\n\n// A real vendor detail sheet — name + category + contact (`phone`/`city`,\n// both real, nullable `VendorSummaryResponse` fields, only ever shown when\n// present — see the engine's own migration adding them) plus genuinely\n// cross-referenced data from two OTHER real domains: expenses tagged to\n// this vendor (`ExpenseLiveRow.vendorId`) and vehicles supplied by this\n// vendor (`SeatingVehicle.vendorId`), both real foreign keys on the wire.\n// No booking code, no date, no PENDING/CONFIRMED/DONE status — none of\n// those exist on any real vendor-linked row; a UI reference showing them\n// was showing fields this SDK does not carry. `phone` renders as a\n// tap-to-call `tel:` link, the same convention\n// `ManagerNowSection/internal/NowCoManager.tsx` already uses for a\n// co-manager's phone.\n//\n// Each cross-reference section renders independently and only when its OWN\n// domain is lit — an expenses-dark or vehicles-dark trip still shows the\n// vendor's own name/category, just without that one section, the same\n// per-domain honesty this whole family already holds.\n\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport type { ExpenseCategoryKey } from '../../../../../core/hooks/useExpenses.js';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport { CloseIcon } from '../../../../shell/MoneyFlows/icons';\nimport { formatMinorAmount } from '../../../../shell/MoneyFlows/moneyFormat';\nimport type { TripVendorRow } from '../ManagerVendorsSection.types';\nimport { vendorCategoryLabelKey } from './deriveVendors';\n\nexport interface VendorDetailExpenseRow {\n readonly id: string;\n readonly category: ExpenseCategoryKey;\n readonly amountMinor: number;\n readonly currency: string;\n readonly description: string;\n}\n\nexport interface VendorDetailVehicleRow {\n readonly id: string;\n readonly regNo: string;\n readonly label: string | null;\n}\n\nexport interface VendorDetailSheetProps {\n readonly vendor: TripVendorRow | undefined;\n /** `undefined` when the expenses domain is dark/loading — the whole\n * section is omitted, never shown empty. */\n readonly expenses: readonly VendorDetailExpenseRow[] | undefined;\n /** `undefined` when the vehicles (seating) domain is dark/loading. */\n readonly vehicles: readonly VendorDetailVehicleRow[] | undefined;\n readonly onClose: () => void;\n}\n\nexport function VendorDetailSheet({\n vendor,\n expenses,\n vehicles,\n onClose,\n}: VendorDetailSheetProps): ReactNode {\n const { t } = useKaafilChrome();\n\n useEffect(() => {\n if (vendor === undefined) {\n return;\n }\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n onClose();\n }\n }\n document.addEventListener('keydown', onKeyDown);\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n };\n }, [vendor, onClose]);\n\n if (vendor === undefined) {\n return null;\n }\n\n const expenseTotalMinor = expenses?.reduce((sum, row) => sum + row.amountMinor, 0) ?? 0;\n const expenseCurrency = expenses?.[0]?.currency ?? 'INR';\n\n return (\n <div className=\"kf-manager-vendors__sheet-backdrop\">\n <div\n className=\"kf-manager-vendors__sheet\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={vendor.name}\n >\n <div className=\"kf-manager-vendors__sheet-header\">\n <div>\n <p className=\"kf-manager-vendors__sheet-title\">{vendor.name}</p>\n <p className=\"kf-manager-vendors__sheet-category\">\n {t(vendorCategoryLabelKey(vendor.category))}\n {vendor.city !== null ? ` · ${vendor.city}` : ''}\n </p>\n </div>\n <button\n type=\"button\"\n className=\"kf-manager-vendors__sheet-close kf-press\"\n onClick={onClose}\n aria-label={t('chrome.cancel')}\n >\n <CloseIcon />\n </button>\n </div>\n\n {vendor.phone !== null ? (\n <a\n href={`tel:${vendor.phone}`}\n className=\"kf-manager-vendors__sheet-contact-link kf-press\"\n >\n {vendor.phone}\n </a>\n ) : null}\n\n {expenses !== undefined ? (\n <div className=\"kf-manager-vendors__sheet-section\">\n <p className=\"kf-manager-vendors__sheet-section-title\">\n {t('chrome.managerTrip.vendors.detail.expensesTitle')}\n </p>\n {expenses.length === 0 ? (\n <p className=\"kf-manager-vendors__sheet-empty-line\">\n {t('chrome.managerTrip.vendors.detail.expensesEmpty')}\n </p>\n ) : (\n <>\n <p className=\"kf-manager-vendors__sheet-total\">\n {formatMinorAmount(expenseTotalMinor, expenseCurrency)}\n </p>\n <div className=\"kf-manager-vendors__sheet-list\">\n {expenses.map((expense) => (\n <div key={expense.id} className=\"kf-manager-vendors__sheet-list-row\">\n <span>{expense.description}</span>\n <span>{formatMinorAmount(expense.amountMinor, expense.currency)}</span>\n </div>\n ))}\n </div>\n </>\n )}\n </div>\n ) : null}\n\n {vehicles !== undefined ? (\n <div className=\"kf-manager-vendors__sheet-section\">\n <p className=\"kf-manager-vendors__sheet-section-title\">\n {t('chrome.managerTrip.vendors.detail.vehiclesTitle')}\n </p>\n {vehicles.length === 0 ? (\n <p className=\"kf-manager-vendors__sheet-empty-line\">\n {t('chrome.managerTrip.vendors.detail.vehiclesEmpty')}\n </p>\n ) : (\n <div className=\"kf-manager-vendors__sheet-list\">\n {vehicles.map((vehicle) => (\n <div key={vehicle.id} className=\"kf-manager-vendors__sheet-list-row\">\n <span>{vehicle.label ?? vehicle.regNo}</span>\n <span>{vehicle.regNo}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","'use client';\n\n// One glyph per real `VendorCategory` value — a purely cosmetic avatar,\n// never a stand-in for a field the wire doesn't carry (no status dot, no\n// count badge).\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function HotelIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 21h20M4 21V7l8-4 8 4v14M9 21v-6h6v6\" />\n </svg>\n );\n}\n\nexport function TransportIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"11\" rx=\"2\" />\n <path d=\"M7 17v2M17 17v2M3 11h18\" />\n <circle cx=\"7.5\" cy=\"14\" r=\"0.5\" fill=\"currentColor\" />\n <circle cx=\"16.5\" cy=\"14\" r=\"0.5\" fill=\"currentColor\" />\n </svg>\n );\n}\n\nexport function ActivityIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m3 20 6-11 4 7 3-5 5 9Z\" />\n </svg>\n );\n}\n\nexport function GuideIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m12 2 2.6 6.6L21 11l-6.4 2.4L12 20l-2.6-6.6L3 11l6.4-2.4Z\" />\n </svg>\n );\n}\n\nexport function FoodIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M7 2v6a2 2 0 0 0 2 2v12M7 2v20M11 2v8M17 2c-1.5 3-1.5 6 0 9v11\" />\n </svg>\n );\n}\n\nexport function MiscIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M21 8 12 3 3 8l9 5 9-5Z\" />\n <path d=\"M3 8v8l9 5 9-5V8M12 13v8\" />\n </svg>\n );\n}\n","'use client';\n\n// The `VendorListUI` Tier-4 override slot — the real row list (name +\n// category + contact, `TripVendorRow`'s actual wire fields) plus the empty\n// state. No status badge, no money amount, no booking-code/date column:\n// `VendorSummaryResponse` carries none of those on the real wire (verified\n// against the generated schema) — the category icon avatar is the one\n// purely cosmetic addition, never a stand-in for a fabricated field.\n//\n// Each row is a `<div>`, not a `<button>`, because it holds TWO independent\n// interactive targets — selecting the vendor (opens the detail sheet) and\n// calling it directly (a `tel:` link) — and a `<button>` cannot legally\n// nest another interactive element. The phone link stops propagation so\n// tapping \"call\" doesn't also open the detail sheet underneath it.\n\nimport type { ComponentType, KeyboardEvent, ReactNode, SVGProps } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { TripVendorRow, VendorCategory } from '../ManagerVendorsSection.types';\nimport { vendorCategoryLabelKey } from './deriveVendors';\nimport { ActivityIcon, FoodIcon, GuideIcon, HotelIcon, MiscIcon, TransportIcon } from './icons';\n\n// Type-keyed registry (hard rule #8), never a switch — one icon per real\n// `VendorCategory` enum value.\nconst CATEGORY_ICON: Record<VendorCategory, ComponentType<SVGProps<SVGSVGElement>>> = {\n HOTEL: HotelIcon,\n TRANSPORT: TransportIcon,\n ACTIVITY: ActivityIcon,\n GUIDE: GuideIcon,\n FOOD: FoodIcon,\n MISC: MiscIcon,\n};\n\nexport interface VendorListSectionProps {\n readonly vendors: readonly TripVendorRow[];\n readonly onVendorSelect: (tripVendorId: string) => void;\n readonly emptyView?: ReactNode | (() => ReactNode);\n}\n\nexport function VendorListSection({\n vendors,\n onVendorSelect,\n emptyView,\n}: VendorListSectionProps): ReactNode {\n const { t } = useKaafilChrome();\n\n if (vendors.length === 0) {\n if (emptyView !== undefined) {\n return typeof emptyView === 'function' ? (emptyView() as ReactNode) : emptyView;\n }\n return (\n <div className=\"kf-manager-vendors__empty\">\n <p className=\"kf-manager-vendors__empty-title\">\n {t('chrome.managerTrip.vendors.emptyTitle')}\n </p>\n <p className=\"kf-manager-vendors__empty-body\">\n {t('chrome.managerTrip.vendors.emptyBody')}\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"kf-manager-vendors__list\">\n {vendors.map((vendor) => {\n const CategoryIcon = CATEGORY_ICON[vendor.category];\n const categoryLine =\n vendor.city !== null\n ? `${t(vendorCategoryLabelKey(vendor.category))} · ${vendor.city}`\n : t(vendorCategoryLabelKey(vendor.category));\n\n function onKeyDown(event: KeyboardEvent<HTMLDivElement>): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onVendorSelect(vendor.id);\n }\n }\n\n return (\n // biome-ignore lint/a11y/useSemanticElements: a <button> cannot legally nest the phone <a> link beside it — see this file's own header.\n <div\n key={vendor.id}\n role=\"button\"\n tabIndex={0}\n className=\"kf-manager-vendors__row kf-press\"\n onClick={() => onVendorSelect(vendor.id)}\n onKeyDown={onKeyDown}\n >\n <span className=\"kf-manager-vendors__row-avatar\">\n <CategoryIcon />\n </span>\n <span className=\"kf-manager-vendors__row-copy\">\n <span className=\"kf-manager-vendors__row-name\">{vendor.name}</span>\n <span className=\"kf-manager-vendors__row-category\">{categoryLine}</span>\n </span>\n {vendor.phone !== null ? (\n <a\n href={`tel:${vendor.phone}`}\n className=\"kf-manager-vendors__row-phone\"\n onClick={(event) => event.stopPropagation()}\n >\n {vendor.phone}\n </a>\n ) : null}\n </div>\n );\n })}\n </div>\n );\n}\n","'use client';\n\n// The Vendors tab — a standalone, publicly exported composite that\n// `ManagerTripSection` also mounts as its built-in `'vendors'` tab panel.\n// `useVendors(tripRef, '')` is the primary hook (`10-vendors.md`'s own\n// `VendorList` — the only Spec-complete component in that file). Tapping a\n// row opens a real detail sheet cross-referencing two OTHER real domains —\n// `useExpenses`/`useSeating`, each read independently and only shown when\n// its own domain is lit (`VendorDetailSheet.tsx`'s own header has the full\n// reasoning) — while still firing `onVendorSelect` for the host, per spec.\n//\n// READ-ONLY BY DESIGN: `upsert`/`remove` exist on `useVendors()` but are\n// agency-admin-only in practice (\"NEVER managerAuth\" — `vendors.ts`'s own\n// header) — this composite never surfaces add/edit/remove-vendor UI.\n// `VendorRatingForm`/`VendorRatingCloseoutSweep`/`VendorRatingScreen` are\n// all Status: Blocked — GAP-005 (no rating route exists anywhere) and are\n// not built here; no rating UI, and no copy referencing ratings or GAP-005\n// anywhere in this composite.\n//\n// `vendors` is a member of the frozen PERSONALIZED mode-dark set\n// (`architecture/09-capability-model.md §8`) — a dark or errored read\n// renders nothing at all (404-shaped), the same precedent\n// `ManagerVehiclesSection.tsx` already sets for its own fully-dark case. A\n// genuinely empty directory (`vendors: []` once loaded) is a real state,\n// never confused with darkness.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport type { ExpensesReady } from '../../../../core/hooks/useExpenses.js';\nimport { useExpenses } from '../../../../core/hooks/useExpenses.js';\nimport type { SeatingReady } from '../../../../core/hooks/useSeating.js';\nimport { useSeating } from '../../../../core/hooks/useSeating.js';\nimport { useVendors } from '../../../../core/hooks/useVendors.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { filterByCategory, sortedVendors } from './internal/deriveVendors';\nimport { VendorDetailSheet } from './internal/VendorDetailSheet';\nimport { VendorListSection } from './internal/VendorListSection';\nimport type { ManagerVendorsSectionProps } from './ManagerVendorsSection.types';\n\ntype ExpenseDeltaRow = ExpensesReady['expenses'][number];\ntype ExpenseLiveRow = Exclude<ExpenseDeltaRow, { readonly _tombstone: true }>;\ntype SeatingVehicleDeltaRow = SeatingReady['vehicles'][number];\ntype SeatingVehicleLiveRow = Exclude<SeatingVehicleDeltaRow, { readonly _tombstone: true }>;\n\nfunction isLiveExpense(row: ExpenseDeltaRow): row is ExpenseLiveRow {\n return !('_tombstone' in row);\n}\n\nfunction isLiveVehicle(row: SeatingVehicleDeltaRow): row is SeatingVehicleLiveRow {\n return !('_tombstone' in row);\n}\n\nexport function ManagerVendorsSection({\n tripRef,\n category,\n onVendorSelect,\n emptyView,\n components,\n style,\n}: ManagerVendorsSectionProps): ReactNode {\n const vendors = useVendors(tripRef, '');\n const expenses = useExpenses(tripRef);\n const seating = useSeating(tripRef);\n const [selectedVendorId, setSelectedVendorId] = useState<string | undefined>(undefined);\n\n const VendorListUI = components?.VendorListUI ?? VendorListSection;\n\n if (vendors.status === 'loading') {\n return (\n <div className=\"kf-manager-vendors__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-vendors__skeleton-line\" />\n <div className=\"kf-manager-vendors__skeleton-line\" />\n <div className=\"kf-manager-vendors__skeleton-line kf-manager-vendors__skeleton-line--short\" />\n </div>\n );\n }\n\n if (vendors.status === 'dark' || vendors.status === 'error') {\n return null;\n }\n\n const visibleVendors = sortedVendors(filterByCategory(vendors.vendors, category));\n const selectedVendor = vendors.vendors.find((vendor) => vendor.id === selectedVendorId);\n\n const detailExpenses =\n expenses.status === 'ready' && selectedVendor !== undefined\n ? expenses.expenses\n .filter(isLiveExpense)\n .filter((row) => row.voidedAt === null && row.vendorId === selectedVendor.id)\n .map((row) => ({\n id: row.id,\n category: row.category,\n amountMinor: row.amountMinor,\n currency: row.currency,\n description: row.description,\n }))\n : undefined;\n\n const detailVehicles =\n seating.status === 'ready' && selectedVendor !== undefined\n ? seating.vehicles\n .filter(isLiveVehicle)\n .filter((row) => row.vendorId === selectedVendor.id)\n .map((row) => ({ id: row.id, regNo: row.regNo, label: row.label }))\n : undefined;\n\n return (\n <div className=\"kf-manager-vendors\" style={tokenStyle(style)}>\n <VendorListUI\n vendors={visibleVendors}\n onVendorSelect={(tripVendorId) => {\n setSelectedVendorId(tripVendorId);\n onVendorSelect(tripVendorId);\n }}\n emptyView={emptyView}\n />\n <VendorDetailSheet\n vendor={selectedVendor}\n expenses={detailExpenses}\n vehicles={detailVehicles}\n onClose={() => setSelectedVendorId(undefined)}\n />\n </div>\n );\n}\n","// The actual trip/trek merge: ONE ordered tab list computed from the real\n// `Trip.eventType` field, never two independent screens. The boilerplate\n// itself keeps `ManagerTripTabKey`/`ManagerTrekBinderTabKey` as two\n// hardcoded, unrelated unions across two separate routes with no merge\n// logic anywhere — this function IS the merge, a deliberate v2 decision.\n//\n// Orders below match the boilerplate's own two tab lists with `docs`/`info`\n// dropped (no real endpoint backs either — this build's own audit, not an\n// oversight): shared tabs are `manifest, itinerary, money, vendors,\n// checklist`; TRIP adds `rooming, vehicles`; TREK adds `overview, roster`.\n//\n// `closing` NOW APPLIES TO BOTH — wave 13's own finding: `useCloseout`'s\n// real gate is its own `'closing-day'` capability (GROUP vs PERSONALIZED,\n// `04-closing-day.md`'s own `Gating`), never `Trip.eventType`. Putting\n// `closing` on the TREK tab list only (this file's own earlier state) was a\n// boilerplate-tab-order artifact, not a real constraint — a GROUP trip\n// closes out exactly the same way a GROUP trek does. `overview`/`roster`\n// stay TREK-only: no manager-family FRD backs either (verified wave 13 —\n// zero matches anywhere in `kaafil-product-docs/ui-kit/families/manager/`),\n// so they follow the boilerplate's own trek-only tab-bar placement as-is,\n// with no capability gate of their own to override it.\n//\n// `forms`/`pickups` (wave 11) both apply to both trip types — `useForms\n// (tripRef)`/`usePickups(tripRef)` are real, spec'd, trip-scoped hooks\n// (`05-forms.md`/`05-pickup-points.md`). `documents` (wave 15) also applies\n// to both — `useFiles(tripRef)` is trip-scoped, not event-type-specific,\n// and is itself a DOCUMENTED SPEC DEVIATION (`ManagerDocumentsSection`'s own\n// `.tsx` header) rather than a boilerplate-parity addition, so its tab\n// placement follows real data shape, not either tab list's own boilerplate\n// origin. Two OTHER real-but-unused hooks\n// were explicitly NOT added here: `useTreks(tripRef)`'s own spec states it\n// backs a separate `TrekOperationsFlow` field-mode screen and deliberately\n// does not offer \"a distinct desk tab set\"; `useDirectories(agencyRef?)`\n// isn't trip-scoped at all (agency-wide, admin-family only, \"no\n// manager-family equivalent\" per its own spec) — neither belongs in this\n// tab bar.\n\nimport type { ManagerTripEventType, ManagerTripTabKey } from '../ManagerTripSection.types';\n\nconst TRIP_TABS: readonly ManagerTripTabKey[] = [\n 'manifest',\n 'rooming',\n 'vehicles',\n 'itinerary',\n 'money',\n 'vendors',\n 'closing',\n 'checklist',\n 'forms',\n 'pickups',\n 'documents',\n];\n\nconst TREK_TABS: readonly ManagerTripTabKey[] = [\n 'overview',\n 'manifest',\n 'roster',\n 'itinerary',\n 'money',\n 'vendors',\n 'closing',\n 'checklist',\n 'forms',\n 'pickups',\n 'documents',\n];\n\nexport function computeTripTabs(eventType: ManagerTripEventType): readonly ManagerTripTabKey[] {\n return eventType === 'TREK' ? TREK_TABS : TRIP_TABS;\n}\n","'use client';\n\n// The horizontal scrollable chip-tab strip. Pixel reference:\n// `frontend-boilerplate/components/manager/trip/chip-tabs.tsx`, read\n// directly from source. NO ROUTER (hard rule #9) — the boilerplate's own\n// `?tab=` URL-driven variant is deliberately not followed; selection is a\n// plain `onSelect` callback, matching `ManagerShell`'s own bottom bar.\n//\n// `count` is real-or-omitted, never a placeholder zero — this wave's own\n// registry has no panel content yet, so every tab renders with no count at\n// all; a later wave's real panel supplies its own real count.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerTripTabKey } from '../ManagerTripSection.types';\n\nconst TAB_LABEL_KEY: Record<ManagerTripTabKey, string> = {\n manifest: 'chrome.managerTrip.tab.manifest',\n rooming: 'chrome.managerTrip.tab.rooming',\n vehicles: 'chrome.managerTrip.tab.vehicles',\n itinerary: 'chrome.managerTrip.tab.itinerary',\n money: 'chrome.managerTrip.tab.money',\n vendors: 'chrome.managerTrip.tab.vendors',\n checklist: 'chrome.managerTrip.tab.checklist',\n forms: 'chrome.managerTrip.tab.forms',\n pickups: 'chrome.managerTrip.tab.pickups',\n overview: 'chrome.managerTrip.tab.overview',\n roster: 'chrome.managerTrip.tab.roster',\n closing: 'chrome.managerTrip.tab.closing',\n documents: 'chrome.managerTrip.tab.documents',\n};\n\nexport interface TripChipTabsProps {\n readonly tabs: readonly ManagerTripTabKey[];\n readonly activeTabKey: ManagerTripTabKey;\n readonly onSelect: (key: ManagerTripTabKey) => void;\n readonly counts?: Partial<Record<ManagerTripTabKey, number>>;\n}\n\nexport function TripChipTabs({\n tabs,\n activeTabKey,\n onSelect,\n counts,\n}: TripChipTabsProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <div\n className=\"kf-manager-trip__chip-tabs\"\n role=\"tablist\"\n aria-label={t('chrome.managerTrip.tabsAriaLabel')}\n >\n {tabs.map((key) => {\n const active = key === activeTabKey;\n const count = counts?.[key];\n return (\n <button\n key={key}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n onClick={() => onSelect(key)}\n className=\"kf-manager-trip__chip kf-press\"\n data-active={active}\n >\n {t(TAB_LABEL_KEY[key])}\n {count !== undefined ? (\n <span className=\"kf-manager-trip__chip-count\">{count}</span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n","'use client';\n\n// The dark hero strip reused across every Trip-binder tab. Pixel reference:\n// `frontend-boilerplate/components/manager/trip/trip-strip.tsx`, read\n// directly from source and confirmed against a fresh reference screenshot\n// of the running boilerplate (an earlier, bigger/stacked-layout reference\n// image for this same screen turned out to be stale/misleading — this is\n// the literal, compact, horizontal-row markup the real component renders).\n// Colours re-derived onto this package's own `--kf-*` tokens, never the\n// boilerplate's literal hex/rgba.\n//\n// NO \"Day X of Y\" sub-text this wave: that reading needs `useManagerToday`\n// (today's day-index), and this shell deliberately consumes ONLY\n// `useManagerMe()` — no tab/today data yet (this build's own scope\n// decision for the shell-first wave). `sub` is therefore composed from\n// real trip-row fields alone: the trip's own date span plus its `region`,\n// never a fabricated day count.\n\nimport type { ReactNode } from 'react';\nimport type { ManagerOwnTrip } from '../../../../../core/hooks/useManagerMe.js';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\n\ntype TripStatus = ManagerOwnTrip['status'];\n\ntype StripTone = 'predeparture' | 'active' | 'closing' | 'draft';\n\nconst STATUS_TONE: Record<TripStatus, StripTone> = {\n CONFIRMED: 'predeparture',\n POSTPONED: 'predeparture',\n IN_PROGRESS: 'active',\n COMPLETED: 'closing',\n CANCELLED: 'draft',\n};\n\nconst STATUS_LABEL_KEY: Record<TripStatus, string> = {\n CONFIRMED: 'chrome.managerTrip.hero.status.confirmed',\n POSTPONED: 'chrome.managerTrip.hero.status.postponed',\n IN_PROGRESS: 'chrome.managerTrip.hero.status.onTrip',\n COMPLETED: 'chrome.managerTrip.hero.status.completed',\n CANCELLED: 'chrome.managerTrip.hero.status.cancelled',\n};\n\nconst DATE_RANGE_FORMATTER = new Intl.DateTimeFormat('en-GB', { day: 'numeric', month: 'short' });\n\nfunction formatDateRange(startDate: string, endDate: string): string {\n return `${DATE_RANGE_FORMATTER.format(new Date(startDate))} – ${DATE_RANGE_FORMATTER.format(new Date(endDate))}`;\n}\n\nexport interface TripHeroProps {\n readonly code: string;\n readonly title: string;\n readonly status: TripStatus;\n readonly startDate: string;\n readonly endDate: string;\n /** `Trip.region` — nullable, real (e.g. \"Himachal Pradesh\"). */\n readonly region: string | null;\n}\n\nexport function TripHero({\n code,\n title,\n status,\n startDate,\n endDate,\n region,\n}: TripHeroProps): ReactNode {\n const { t } = useKaafilChrome();\n const sub = [formatDateRange(startDate, endDate), region].filter(Boolean).join(' · ');\n\n return (\n <section className=\"kf-manager-trip__hero\" aria-label={t('chrome.managerTrip.hero.ariaLabel')}>\n <div className=\"kf-manager-trip__hero-body\">\n <p className=\"kf-manager-trip__hero-code\">{code}</p>\n <p className=\"kf-manager-trip__hero-title\">{title}</p>\n <p className=\"kf-manager-trip__hero-sub\">{sub}</p>\n </div>\n <span className=\"kf-manager-trip__hero-pill\" data-tone={STATUS_TONE[status]}>\n <span className=\"kf-manager-trip__hero-pill-dot\" aria-hidden=\"true\" />\n {t(STATUS_LABEL_KEY[status])}\n </span>\n </section>\n );\n}\n","'use client';\n\n// The honest \"not built yet\" filler for a real tab key this composite\n// already knows about but whose panel content is a later wave's own build\n// (this build's own \"composites first, one at a time\" governance — see\n// the plan's own registry decision). Never blank, never fabricated data: a\n// bordered card naming the module, matching `NowTimeline.tsx`'s own\n// bordered-empty-card treatment rather than a bare trailing label.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../../../core/shells/I18nShell.js';\nimport type { ManagerTripTabKey } from '../ManagerTripSection.types';\n\nconst TAB_LABEL_KEY: Record<ManagerTripTabKey, string> = {\n manifest: 'chrome.managerTrip.tab.manifest',\n rooming: 'chrome.managerTrip.tab.rooming',\n vehicles: 'chrome.managerTrip.tab.vehicles',\n itinerary: 'chrome.managerTrip.tab.itinerary',\n money: 'chrome.managerTrip.tab.money',\n vendors: 'chrome.managerTrip.tab.vendors',\n checklist: 'chrome.managerTrip.tab.checklist',\n forms: 'chrome.managerTrip.tab.forms',\n pickups: 'chrome.managerTrip.tab.pickups',\n overview: 'chrome.managerTrip.tab.overview',\n roster: 'chrome.managerTrip.tab.roster',\n closing: 'chrome.managerTrip.tab.closing',\n documents: 'chrome.managerTrip.tab.documents',\n};\n\nexport interface TripTabPlaceholderProps {\n readonly tabKey: ManagerTripTabKey;\n}\n\nexport function TripTabPlaceholder({ tabKey }: TripTabPlaceholderProps): ReactNode {\n const { t } = useKaafilChrome();\n return (\n <div className=\"kf-manager-trip__card kf-manager-trip__placeholder\">\n {t('chrome.managerTrip.placeholder.notBuilt').replace('{tab}', t(TAB_LABEL_KEY[tabKey]))}\n </div>\n );\n}\n","'use client';\n\n// The \"Trip\" screen shell — hero + the chip-tab bar + a registry-selected\n// panel body. Wave 2 built the shell with every real tab key already\n// rendering in the right place with the right merge (trip vs trek). Wave 3\n// (this one) fills the FIRST real panel — `'manifest'` — by mounting the\n// standalone, publicly exported `ManagerManifestSection` composite (own\n// hook, own real data — also independently exported from `manager/index.ts`\n// for a host that wants it outside this shell, per this build's own\n// explicit instruction). Every other tab key still renders\n// `TripTabPlaceholder` until a later wave supplies it, via the same\n// `panels` override registry a host can also use to replace the built-in\n// manifest panel (hard rule #8: a type-keyed registry, never a switch).\n//\n// `families/manager/12-office.md`'s own Trip screen; this build's own plan\n// (`ManagerTripSection`, wave 2) is the merge decision — see\n// `internal/computeTripTabs.ts`'s own header for why Trip and Trek collapse\n// into one composite instead of the boilerplate's two independent screens.\n//\n// Reads `useManagerMe()` for identity/tabs, same as wave 2 — the manifest\n// panel owns its own `useParties()` read internally, never lifted up here.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useManagerMe } from '../../../../core/hooks/useManagerMe.js';\nimport { useSession } from '../../../../core/hooks/useSession.js';\nimport { tokenStyle } from '../../../../primitives/internal/tokenStyle.js';\nimport { ManagerChecklistSection } from '../ManagerChecklistSection/ManagerChecklistSection';\nimport { ManagerCloseoutSection } from '../ManagerCloseoutSection/ManagerCloseoutSection';\nimport type { CloseoutBlockerRow } from '../ManagerCloseoutSection/ManagerCloseoutSection.types';\nimport { ManagerDocumentsSection } from '../ManagerDocumentsSection/ManagerDocumentsSection';\nimport { ManagerFormsSection } from '../ManagerFormsSection/ManagerFormsSection';\nimport { ManagerItinerarySection } from '../ManagerItinerarySection/ManagerItinerarySection';\nimport { ManagerManifestSection } from '../ManagerManifestSection/ManagerManifestSection';\nimport { ManagerMoneySection } from '../ManagerMoneySection/ManagerMoneySection';\nimport { ManagerOverviewSection } from '../ManagerOverviewSection/ManagerOverviewSection';\nimport { ManagerPickupsSection } from '../ManagerPickupsSection/ManagerPickupsSection';\nimport { ManagerRoomingSection } from '../ManagerRoomingSection/ManagerRoomingSection';\nimport { ManagerRosterSection } from '../ManagerRosterSection/ManagerRosterSection';\nimport { ManagerVehiclesSection } from '../ManagerVehiclesSection/ManagerVehiclesSection';\nimport { ManagerVendorsSection } from '../ManagerVendorsSection/ManagerVendorsSection';\nimport { computeTripTabs } from './internal/computeTripTabs';\nimport { TripChipTabs } from './internal/TripChipTabs';\nimport { TripHero } from './internal/TripHero';\nimport { TripTabPlaceholder } from './internal/TripTabPlaceholder';\nimport type { ManagerTripSectionProps, ManagerTripTabKey } from './ManagerTripSection.types';\n\n/** Real dispatch for `ManagerCloseoutSection`'s own `onBlockerAction` — the\n * closed, 11-key `blockers[].key` enum mapped to the ONE real tab that\n * resolves it (`04-closing-day.md`'s own blocker-ownership table, verified\n * this session). `reimbursements_pending` has no entry — the spec's own\n * \"CRM out-of-band; no in-session action\" (`BlockerRow`'s own header already\n * hides its action button for this key; this map is never consulted for it). */\nconst BLOCKER_ACTION_TAB: Partial<Record<CloseoutBlockerRow['key'], ManagerTripTabKey>> = {\n balance_due: 'money',\n missing_receipt: 'money',\n float_not_returned: 'money',\n open_mandatory_checklist: 'checklist',\n required_form_gap: 'forms',\n unassigned_rooming: 'rooming',\n unseated_travellers: 'vehicles',\n pickup_no_show: 'pickups',\n unrated_vendors: 'vendors',\n open_past_itinerary: 'itinerary',\n};\n\nexport function ManagerTripSection(props: ManagerTripSectionProps): ReactNode {\n const session = useSession();\n if (session.status !== 'authenticated') {\n return null;\n }\n return <ReadyManagerTripSection {...props} />;\n}\n\nfunction ReadyManagerTripSection({\n tripRef,\n activeTabKey,\n onTabChange,\n onCollectFromGroup,\n onOpenTraveller,\n onVendorSelect,\n onSubmitUnlockRequest,\n onViewFloatLedger,\n panels,\n style,\n}: ManagerTripSectionProps): ReactNode {\n const managerMe = useManagerMe();\n const [internalActiveTab, setInternalActiveTab] = useState<ManagerTripTabKey>('manifest');\n\n if (managerMe.status === 'loading') {\n return <ManagerTripSkeleton style={style} />;\n }\n if (managerMe.status === 'error') {\n return null;\n }\n\n const tripMeta = managerMe.trips.find((trip) => trip.tripRef === tripRef);\n // A `tripRef` this manager isn't (or is no longer) assigned to — an\n // honest empty state, never a half-rendered hero off `undefined` fields.\n if (tripMeta === undefined) {\n return null;\n }\n\n const tabs = computeTripTabs(tripMeta.eventType);\n const activeTab = activeTabKey ?? internalActiveTab;\n const setActiveTab = (key: ManagerTripTabKey): void => {\n if (onTabChange !== undefined) {\n onTabChange(key);\n }\n if (activeTabKey === undefined) {\n setInternalActiveTab(key);\n }\n };\n // The active tab can be stale (e.g. a controlling host still pointed at\n // `rooming` right after the trip's `eventType` flips this list to the\n // trek set) — fall back to the list's own first entry rather than\n // rendering a chip row with nothing selected.\n // `manifest` is present in both the TRIP and TREK tab lists\n // (`computeTripTabs.ts`), so it's a safe, always-real fallback — never an\n // unchecked `tabs[0]` under `noUncheckedIndexedAccess`.\n const resolvedActiveTab = tabs.includes(activeTab) ? activeTab : 'manifest';\n // The built-in panel for a key this composite itself owns real content\n // for — `'manifest'` (wave 3), `'rooming'` (wave 5), `'vehicles'` (wave\n // 6), each its own standalone, independently exported composite. A\n // host's own `panels` override (if supplied) always wins; every other\n // key falls through to `TripTabPlaceholder`. A `Record`, not a switch\n // (hard rule #8).\n const builtInPanels: Partial<Record<ManagerTripTabKey, ReactNode>> = {\n manifest: (\n <ManagerManifestSection\n tripRef={tripRef}\n onCollectFromGroup={onCollectFromGroup}\n onOpenTraveller={onOpenTraveller}\n />\n ),\n rooming: <ManagerRoomingSection tripRef={tripRef} onOpenTraveller={onOpenTraveller} />,\n vehicles: <ManagerVehiclesSection tripRef={tripRef} onOpenTraveller={onOpenTraveller} />,\n itinerary: <ManagerItinerarySection tripRef={tripRef} />,\n money: (\n <ManagerMoneySection\n tripRef={tripRef}\n onOpenTraveller={onOpenTraveller}\n onViewFloatLedger={onViewFloatLedger}\n />\n ),\n vendors: <ManagerVendorsSection tripRef={tripRef} onVendorSelect={onVendorSelect} />,\n checklist: <ManagerChecklistSection tripRef={tripRef} />,\n forms: <ManagerFormsSection tripRef={tripRef} />,\n pickups: <ManagerPickupsSection tripRef={tripRef} eventType={tripMeta.eventType} />,\n overview: <ManagerOverviewSection tripRef={tripRef} />,\n roster: <ManagerRosterSection tripRef={tripRef} onOpenTraveller={onOpenTraveller} />,\n documents: <ManagerDocumentsSection tripRef={tripRef} />,\n closing: (\n <ManagerCloseoutSection\n tripRef={tripRef}\n onBlockerAction={(blocker) => {\n const tab = BLOCKER_ACTION_TAB[blocker.key];\n if (tab !== undefined) {\n setActiveTab(tab);\n }\n }}\n onSubmitUnlockRequest={onSubmitUnlockRequest}\n />\n ),\n };\n\n return (\n <div className=\"kf-manager-trip\" style={tokenStyle(style)}>\n <TripHero\n code={tripMeta.code}\n title={tripMeta.name}\n status={tripMeta.status}\n startDate={tripMeta.startDate}\n endDate={tripMeta.endDate}\n region={tripMeta.region}\n />\n <TripChipTabs tabs={tabs} activeTabKey={resolvedActiveTab} onSelect={setActiveTab} />\n <div className=\"kf-manager-trip__panel\">\n {panels?.[resolvedActiveTab] ?? builtInPanels[resolvedActiveTab] ?? (\n <TripTabPlaceholder tabKey={resolvedActiveTab} />\n )}\n </div>\n </div>\n );\n}\n\nfunction ManagerTripSkeleton({\n style,\n}: {\n readonly style: ManagerTripSectionProps['style'];\n}): ReactNode {\n return (\n <div className=\"kf-manager-trip__skeleton\" style={tokenStyle(style)}>\n <div className=\"kf-manager-trip__skeleton-block\" />\n <div className=\"kf-manager-trip__skeleton-line\" />\n <div className=\"kf-manager-trip__skeleton-line kf-manager-trip__skeleton-line--short\" />\n </div>\n );\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own\n// icon set). Paths copied from the boilerplate's own inline SVGs\n// (`components/layouts/manager-shell.tsx`, `components/manager/m-header.tsx`)\n// — geometry only, `stroke=\"currentColor\"` so colour always comes from the\n// consuming element's own `color`, never a literal here.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function NowIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"22\"\n height=\"22\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 7v5l3 2\" />\n </svg>\n );\n}\n\nexport function TrekIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"22\"\n height=\"22\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 20l5-9 4 6 3-4 6 7z\" />\n <circle cx=\"17\" cy=\"6\" r=\"2\" />\n </svg>\n );\n}\n\nexport function TripIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"22\"\n height=\"22\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M4 4h12l4 4v12a2 2 0 0 1-2 2H4z\" />\n <path d=\"M16 4v4h4M8 12h8M8 16h6\" />\n </svg>\n );\n}\n\nexport function MeIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"22\"\n height=\"22\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"8\" r=\"4\" />\n <path d=\"M4 21c0-4.4 3.6-8 8-8s8 3.6 8 8\" />\n </svg>\n );\n}\n\nexport function BellIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M18 8a6 6 0 0 0-12 0c0 7-3 9-3 9h18s-3-2-3-9\" />\n <path d=\"M13.7 21a2 2 0 0 1-3.4 0\" />\n </svg>\n );\n}\n\nexport function BackIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"22\"\n height=\"22\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M15 6l-6 6 6 6\" />\n </svg>\n );\n}\n\nexport function PersonIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"19\"\n height=\"19\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"12\" cy=\"8.5\" r=\"3.5\" />\n <path d=\"M5.5 20a6.5 6.5 0 0 1 13 0\" />\n </svg>\n );\n}\n\nconst TAB_ICON: Record<string, (props: IconProps) => React.JSX.Element> = {\n now: NowIcon,\n trek: TrekIcon,\n trip: TripIcon,\n me: MeIcon,\n};\n\n/** Registry-style lookup (hard rule #8), never a switch — mirrors\n * `ROW_ICON` in the traveller family's `StayAndTransportSection.tsx`. */\nexport function tabIcon(key: string): React.JSX.Element {\n const Icon = TAB_ICON[key] ?? NowIcon;\n return <Icon />;\n}\n","'use client';\n\n// The manager family's reusable layout — root frame, header (page/back),\n// bottom tab bar, FAB anchor point. Structural/pixel reference:\n// `frontend-boilerplate/components/layouts/manager-shell.tsx` +\n// `components/manager/m-header.tsx`, read directly from source (never a\n// screenshot guess — see this build's own plan). Every colour re-derived\n// onto this package's own `--kf-*` tokens (`ManagerShell.css`'s own\n// header states the mapping), never the boilerplate's literal hex/rgba.\n//\n// NO ROUTER (hard rule #9): the tab bar and header controls are plain\n// buttons firing `on*` callbacks — never a `<Link>`/`href`. The host owns\n// every navigation decision; this component only renders the chrome and\n// tracks which tab is visually active via the caller-supplied\n// `activeTabKey`.\n\nimport type { ReactNode } from 'react';\nimport { tokenStyle } from '../../../primitives/internal/tokenStyle.js';\nimport { BackIcon, BellIcon, PersonIcon, tabIcon } from './icons';\nimport type {\n ManagerShellHeaderConfig,\n ManagerShellProps,\n ManagerShellTab,\n} from './ManagerShell.types';\n\nfunction ManagerShellHeader(props: ManagerShellHeaderConfig): ReactNode {\n if (props.variant === 'back') {\n return (\n <header\n className=\"kf-manager-shell__header kf-manager-shell__header--back\"\n style={tokenStyle(props.style)}\n >\n <button\n type=\"button\"\n onClick={props.onBack}\n aria-label=\"Back\"\n className=\"kf-manager-shell__back-button kf-press\"\n >\n <BackIcon />\n </button>\n <div className=\"kf-manager-shell__header-titles\">\n {props.eyebrow !== undefined ? (\n <p className=\"kf-manager-shell__header-eyebrow kf-eyebrow\">{props.eyebrow}</p>\n ) : null}\n <p className=\"kf-manager-shell__header-title kf-manager-shell__header-title--back\">\n {props.title}\n </p>\n </div>\n {props.right !== undefined ? (\n <div className=\"kf-manager-shell__header-right\">{props.right}</div>\n ) : null}\n </header>\n );\n }\n\n const { eyebrow, title, unread, onBellPress, avatarInitials, onAvatarPress, right, style } =\n props;\n\n return (\n <header\n className=\"kf-manager-shell__header kf-manager-shell__header--page\"\n style={tokenStyle(style)}\n >\n <div className=\"kf-manager-shell__header-titles\">\n {eyebrow !== undefined ? (\n <p className=\"kf-manager-shell__header-eyebrow kf-eyebrow\">{eyebrow}</p>\n ) : null}\n <p className=\"kf-manager-shell__header-title\">{title}</p>\n </div>\n <div className=\"kf-manager-shell__header-right\">\n {right !== undefined ? (\n right\n ) : (\n <>\n {unread !== undefined ? (\n <button\n type=\"button\"\n onClick={onBellPress}\n aria-label=\"Notifications\"\n className=\"kf-manager-shell__bell-button kf-press\"\n >\n <BellIcon />\n {unread > 0 ? (\n <span className=\"kf-manager-shell__bell-badge\">{unread > 9 ? '9+' : unread}</span>\n ) : null}\n </button>\n ) : null}\n <button\n type=\"button\"\n onClick={onAvatarPress}\n aria-label={avatarInitials !== undefined ? `Profile — ${avatarInitials}` : 'Profile'}\n className=\"kf-manager-shell__avatar-button\"\n >\n {avatarInitials !== undefined && avatarInitials !== '' ? (\n avatarInitials.slice(0, 2).toUpperCase()\n ) : (\n <PersonIcon />\n )}\n </button>\n </>\n )}\n </div>\n </header>\n );\n}\n\nfunction ManagerShellTabBar({\n tabs,\n activeTabKey,\n onTabChange,\n}: {\n readonly tabs: readonly ManagerShellTab[];\n readonly activeTabKey: string | undefined;\n readonly onTabChange: ((key: string) => void) | undefined;\n}): ReactNode {\n return (\n <nav\n aria-label=\"Manager navigation\"\n className=\"kf-manager-shell__tab-bar\"\n // `tabs` is caller-supplied (this sample app's own 3-tab Now/Trip/Me\n // merge is one real example — `App.tsx`'s own header comment), so the\n // grid's column count must track the actual length rather than a\n // hardcoded 4, or a shorter tab set renders squeezed into a fixed\n // 4-up grid with a dead trailing column. Same runtime-column-count\n // shape `GridCanvas`/`DefinitionList` already use via `tokenStyle`.\n style={tokenStyle(undefined, { '--kf-manager-shell-tab-count': tabs.length })}\n >\n {tabs.map((tab) => {\n const active = tab.key === activeTabKey;\n return (\n <button\n key={tab.key}\n type=\"button\"\n aria-current={active ? 'page' : undefined}\n onClick={() => onTabChange?.(tab.key)}\n className=\"kf-manager-shell__tab kf-press\"\n data-active={active ? 'true' : undefined}\n >\n <span className=\"kf-manager-shell__tab-indicator\" aria-hidden=\"true\" />\n <span className=\"kf-manager-shell__tab-icon\">{tabIcon(tab.icon)}</span>\n <span className=\"kf-manager-shell__tab-label kf-eyebrow\">{tab.label}</span>\n </button>\n );\n })}\n </nav>\n );\n}\n\nexport function ManagerShell({\n children,\n header,\n tabs,\n activeTabKey,\n onTabChange,\n fab,\n style,\n}: ManagerShellProps): ReactNode {\n return (\n <div className=\"kf-manager-shell\" style={tokenStyle(style)}>\n {header !== undefined ? <ManagerShellHeader {...header} /> : null}\n <main className=\"kf-manager-shell__main\">{children}</main>\n {fab}\n {tabs !== undefined && tabs.length > 0 ? (\n <ManagerShellTabBar tabs={tabs} activeTabKey={activeTabKey} onTabChange={onTabChange} />\n ) : null}\n </div>\n );\n}\n","// Extracted verbatim from `apps/sample-manager/src/App.tsx`'s own inline\n// derivation — `WED · 01 SEP · 14:32`, three parts joined with the\n// boilerplate's own middle-dot separator (`manager-now-screen.tsx`'s own\n// `header.eyebrow` example, \"Sat · Apr 19 · 12:34\"), never a single\n// locale-formatted string (`Intl.DateTimeFormat` has no built-in \"·\"-joined\n// output shape). Built off the real `syncedAt` server timestamp, never a\n// local clock read outside `src/core` binds hard rule #6, but this file\n// still honours it — there is no real \"now\" this composite is handed other\n// than the server time its own data landed with.\nexport function formatHeaderEyebrow(syncedAt: string): string {\n const syncedDate = new Date(syncedAt);\n const weekday = new Intl.DateTimeFormat('en-GB', { weekday: 'short' })\n .format(syncedDate)\n .toUpperCase();\n const dayMonth = new Intl.DateTimeFormat('en-GB', { day: '2-digit', month: 'short' })\n .format(syncedDate)\n .toUpperCase();\n const time = new Intl.DateTimeFormat('en-GB', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }).format(syncedDate);\n return `${weekday} · ${dayMonth} · ${time}`;\n}\n","// Extracted verbatim from `apps/sample-manager/src/App.tsx`'s own\n// `initialsFromFullName` — \"Rohan Mehta\" → \"RM\"; a lone name → its first two\n// letters. Mirrors the boilerplate's own `initialsFromName` reasoning\n// (`m-header.tsx`) — a blank avatar reads as \"we don't know who you are,\"\n// never true once a session is open, so this only ever degrades to omitting\n// `avatarInitials` entirely (`ManagerShell` then renders a person glyph).\nexport function initialsFromFullName(fullName: string): string {\n const parts = fullName.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return '';\n }\n if (parts.length === 1) {\n return (parts[0] ?? '').slice(0, 2).toUpperCase();\n }\n const first = parts[0] ?? '';\n const last = parts[parts.length - 1] ?? '';\n return `${first[0] ?? ''}${last[0] ?? ''}`.toUpperCase();\n}\n","'use client';\n\n// Inline SVG, component-scoped — not a shared `/primitives` export (the v2\n// rebuild rule: no shared primitives package; each family owns its own icon\n// set), same convention every sibling composite's own `icons.tsx` documents.\n\nimport type { SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement>;\n\nexport function ChevronIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n );\n}\n\nexport function WifiOffIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M2 2 22 22M8.5 16.5a5 5 0 0 1 7 0M2 8.82a15 15 0 0 1 4.17-2.65M10.66 5c4.01-.36 8.14.9 11.34 3.76M16.85 11.25a10 10 0 0 1 2.22 1.61M5 12.86a10 10 0 0 1 5.17-2.8\" />\n <line x1=\"12\" x2=\"12.01\" y1=\"20\" y2=\"20\" />\n </svg>\n );\n}\n\nexport function WifiOnIcon(props: IconProps): React.JSX.Element {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 12.86a10 10 0 0 1 14 0M8.5 16.5a5 5 0 0 1 7 0M2 8.82a15 15 0 0 1 20 0\" />\n <line x1=\"12\" x2=\"12.01\" y1=\"20\" y2=\"20\" />\n </svg>\n );\n}\n","'use client';\n\n// The one connectivity indicator `01-surface.md` says can never be turned\n// off — mounted unconditionally in every screen state this Surface renders\n// (picker, workspace, every push), not just the tabbed workspace. Real\n// `useOutboxStatus()` data only (online/offline + pending/parked counts),\n// same fields `ManagerMeSection`'s own `SyncStatus` already renders — never\n// a fabricated flag. Minimal footprint when fully synced (a small dot),\n// matching the \"real data, honest empty state\" discipline everywhere else\n// in this package.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../core/shells/I18nShell.js';\nimport { WifiOffIcon, WifiOnIcon } from './icons';\n\nexport interface SyncStatusBadgeProps {\n readonly isOnline: boolean;\n readonly pending: number;\n readonly parked: number;\n /** Opens `ManagerSyncCenterSection` — the real itemized outbox/conflict\n * screen the \"N need attention\" text points at. Omit only when no trip is\n * selected yet (the picker/empty states have nothing to scope a sync\n * center to); every other render path always supplies this, so \"need\n * attention\" is never a dead end. */\n readonly onOpenSyncCenter?: () => void;\n}\n\nexport function SyncStatusBadge({\n isOnline,\n pending,\n parked,\n onOpenSyncCenter,\n}: SyncStatusBadgeProps): ReactNode {\n const { t } = useKaafilChrome();\n const Icon = isOnline ? WifiOnIcon : WifiOffIcon;\n\n return (\n <div className=\"kf-manager-app__sync-badge\" data-online={isOnline}>\n <Icon aria-hidden=\"true\" />\n {!isOnline ? (\n <span>{t('chrome.managerApp.sync.offline')}</span>\n ) : parked > 0 ? (\n onOpenSyncCenter !== undefined ? (\n <button\n type=\"button\"\n className=\"kf-manager-app__sync-badge-action\"\n data-tone=\"warn\"\n onClick={onOpenSyncCenter}\n >\n {t('chrome.managerApp.sync.parked').replace('{count}', String(parked))}\n </button>\n ) : (\n <span data-tone=\"warn\">\n {t('chrome.managerApp.sync.parked').replace('{count}', String(parked))}\n </span>\n )\n ) : pending > 0 ? (\n <span>{t('chrome.managerApp.sync.pending').replace('{count}', String(pending))}</span>\n ) : null}\n </div>\n );\n}\n","// `13-i18n-and-formatting.md`'s \"never the ambient browser locale\" rule —\n// same fixed `'en-GB'` convention `ManagerMeSection`'s own\n// `formatMeDateRange.ts` established.\nconst TRIP_DATE_RANGE_FORMATTER = new Intl.DateTimeFormat('en-GB', {\n day: 'numeric',\n month: 'short',\n});\n\nexport function formatTripDateRange(startDate: string, endDate: string): string {\n return `${TRIP_DATE_RANGE_FORMATTER.format(new Date(startDate))} – ${TRIP_DATE_RANGE_FORMATTER.format(new Date(endDate))}`;\n}\n","'use client';\n\n// Default renderer for one row of the trip-list picker — the T4\n// `TripListItem` override target (`01-surface.md`'s own spec-named slot).\n// Same status-pill/event-type-tag visual language `ManagerMeSection`'s own\n// `RecentTrips.tsx` already established for an identical real-data shape —\n// intentionally reused, not reinvented, since both surfaces render the same\n// `ManagerOwnTrip` row.\n\nimport type { ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../core/shells/I18nShell.js';\nimport { tokenStyle } from '../../../primitives/internal/tokenStyle.js';\nimport type { TripListRowProps } from '../KaafilManagerApp.types';\nimport { formatTripDateRange } from './formatTripDateRange';\nimport { ChevronIcon } from './icons';\n\nconst STATUS_LABEL_KEY: Record<TripListRowProps['trip']['status'], string> = {\n CONFIRMED: 'chrome.managerApp.tripList.status.confirmed',\n IN_PROGRESS: 'chrome.managerApp.tripList.status.inProgress',\n COMPLETED: 'chrome.managerApp.tripList.status.completed',\n POSTPONED: 'chrome.managerApp.tripList.status.postponed',\n CANCELLED: 'chrome.managerApp.tripList.status.cancelled',\n};\n\nexport function TripListRow({ trip, onSelect, style }: TripListRowProps): ReactNode {\n const { t } = useKaafilChrome();\n\n return (\n <button\n type=\"button\"\n className=\"kf-manager-app__trip-row kf-press\"\n onClick={() => onSelect(trip.tripRef)}\n style={tokenStyle(style)}\n >\n <span className=\"kf-manager-app__trip-tag\" data-event-type={trip.eventType} />\n <span className=\"kf-manager-app__trip-body\">\n <span className=\"kf-manager-app__trip-title\">{trip.name}</span>\n <span className=\"kf-manager-app__trip-meta\">\n {trip.code} · {formatTripDateRange(trip.startDate, trip.endDate)}\n </span>\n </span>\n <span className=\"kf-manager-app__trip-status\" data-status={trip.status}>\n {t(STATUS_LABEL_KEY[trip.status])}\n </span>\n <ChevronIcon className=\"kf-manager-app__trip-chevron\" />\n </button>\n );\n}\n","'use client';\n\n// The picker pane — only mounted by `KaafilManagerApp` when the manager has\n// 2+ live trip assignments and no `initialTripRef`/`selectedTripRef` already\n// resolves one (a single-trip manager never sees this, matching\n// `apps/sample-manager/src/App.tsx`'s own real behavior exactly). Real data\n// only — `useManagerMe()`'s own `trips[]`, never a fabricated \"my trips\"\n// aggregate.\n\nimport type { ComponentType, ReactNode } from 'react';\nimport { useKaafilChrome } from '../../../core/shells/I18nShell.js';\nimport type { ManagerOwnTrip, TripListRowProps } from '../KaafilManagerApp.types';\n\nexport interface TripListScreenProps {\n readonly trips: readonly ManagerOwnTrip[];\n readonly onSelect: (tripRef: string) => void;\n readonly TripListItemComponent: ComponentType<TripListRowProps>;\n}\n\nexport function TripListScreen({\n trips,\n onSelect,\n TripListItemComponent,\n}: TripListScreenProps): ReactNode {\n const { t } = useKaafilChrome();\n\n return (\n <div className=\"kf-manager-app__trip-list\">\n <p className=\"kf-eyebrow kf-manager-app__trip-list-eyebrow\">\n {t('chrome.managerApp.tripList.eyebrow')}\n </p>\n <div className=\"kf-manager-app__trip-list-rows\">\n {trips.map((trip) => (\n <TripListItemComponent key={trip.tripRef} trip={trip} onSelect={onSelect} />\n ))}\n </div>\n </div>\n );\n}\n","'use client';\n\n// `KaafilManagerApp` — the manager family's tier-0 Surface\n// (`families/manager/01-surface.md`, status: Planned). \"A thin composition\n// ... over flows already fully specified in this family's own module\n// files\" — this file internalizes exactly the navigation state\n// `apps/sample-manager/src/App.tsx`'s own `ReadyManagerHome` already hand-\n// wires (bottom tabs, three full-screen pushes, trip selection), plus a new\n// trip-list picker and an unconditional connectivity badge neither the spec\n// nor the sample app fully had. See `KaafilManagerApp.types.ts`'s own header\n// for why the prop surface goes beyond the spec's bare 5-entry table.\n//\n// RESOLVED SPEC DEVIATION: no `assignedTrips` host prop. `01-surface.md`'s\n// own \"trip-discovery gap\" note is stale — `useManagerMe()` already returns\n// the manager's real live `trips[]`/`defaultTripId` from the server\n// (confirmed by that hook's own header comment) — decided with the user\n// this session.\n//\n// Two-component gate, same shape `KaafilShareView.tsx`/`App.tsx`'s own\n// `ManagerHome`/`ReadyManagerHome` already use: `useManagerMe()`/\n// `useNotifications()` are `useKaafilClient()`-backed and throw during\n// `SessionShell`'s brief \"opening\" window, so the outer component may only\n// call `useSession()` — Rules of Hooks forbid conditionally skipping the\n// inner hooks in the same component, making this split non-optional.\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { useManagerMe } from '../../core/hooks/useManagerMe.js';\nimport { useNotifications } from '../../core/hooks/useNotifications.js';\nimport { useOutboxStatus } from '../../core/hooks/useOutboxStatus.js';\nimport { useSession } from '../../core/hooks/useSession.js';\nimport { useKaafilChrome } from '../../core/shells/I18nShell.js';\nimport { ManagerFloatLedgerSection } from '../composite/office/ManagerFloatLedgerSection/ManagerFloatLedgerSection';\nimport { ManagerMeSection } from '../composite/office/ManagerMeSection/ManagerMeSection';\nimport { ManagerNotificationsSection } from '../composite/office/ManagerNotificationsSection/ManagerNotificationsSection';\nimport { ManagerNowSection } from '../composite/office/ManagerNowSection/ManagerNowSection';\nimport { ManagerSyncCenterSection } from '../composite/office/ManagerSyncCenterSection/ManagerSyncCenterSection';\nimport { ManagerTravellerProfileSection } from '../composite/office/ManagerTravellerProfileSection/ManagerTravellerProfileSection';\nimport { ManagerTripSection } from '../composite/office/ManagerTripSection/ManagerTripSection';\nimport type { ManagerTripTabKey } from '../composite/office/ManagerTripSection/ManagerTripSection.types';\nimport { ManagerShell } from '../shell/ManagerShell/ManagerShell';\nimport { formatHeaderEyebrow } from './internal/formatHeaderEyebrow';\nimport { initialsFromFullName } from './internal/initialsFromFullName';\nimport { SyncStatusBadge } from './internal/SyncStatusBadge';\nimport { TripListRow } from './internal/TripListRow';\nimport { TripListScreen } from './internal/TripListScreen';\nimport type { KaafilManagerAppProps, KaafilManagerAppTabKey } from './KaafilManagerApp.types';\n\ninterface OpenTraveller {\n readonly travellerId: string;\n readonly fullName: string;\n}\n\nexport function KaafilManagerApp(props: KaafilManagerAppProps): ReactNode {\n const session = useSession();\n if (session.status !== 'authenticated') {\n return null;\n }\n return <ReadyKaafilManagerApp {...props} />;\n}\n\nfunction ReadyKaafilManagerApp(props: KaafilManagerAppProps): ReactNode {\n const {\n initialTripRef,\n selectedTripRef: controlledTripRef,\n activeTab: controlledTab,\n initialTripTabKey,\n onNavigateModule,\n onLogExpense,\n onCollectPayment,\n onCollectFromGroup,\n onVendorSelect,\n onSubmitUnlockRequest,\n onSignOut,\n onSelectTrip,\n onTabChange,\n onTripTabChange,\n onOpenTraveller,\n onCloseTraveller,\n onOpenNotifications,\n onCloseNotifications,\n onOpenFloatLedger,\n onCloseFloatLedger,\n onOpenSyncCenter,\n onCloseSyncCenter,\n getSyncEntityLabel,\n onConflictResolved,\n components,\n style,\n } = props;\n\n const { t } = useKaafilChrome();\n const managerMe = useManagerMe();\n const notifications = useNotifications();\n const outboxStatus = useOutboxStatus();\n\n const [internalTripRef, setInternalTripRef] = useState<string | undefined>(initialTripRef);\n const [internalTab, setInternalTab] = useState<KaafilManagerAppTabKey>('now');\n const [tripTabKey, setTripTabKey] = useState<ManagerTripTabKey | undefined>(initialTripTabKey);\n const [openTraveller, setOpenTraveller] = useState<OpenTraveller | null>(null);\n const [openNotifications, setOpenNotifications] = useState(false);\n const [openFloatLedger, setOpenFloatLedger] = useState(false);\n const [openSyncCenter, setOpenSyncCenter] = useState(false);\n\n const TripListItemComponent = components?.TripListItem ?? TripListRow;\n const EmptyStateComponent = components?.EmptyState;\n const LoadingViewComponent = components?.LoadingView;\n const SyncStatusBadgeComponent = components?.SyncStatusBadge ?? SyncStatusBadge;\n const shellComponents =\n components?.TabBar !== undefined ? { TabIcon: components.TabBar } : undefined;\n\n // No `onOpenSyncCenter` yet — `ManagerSyncCenterSection` needs a real\n // `tripRef`, which isn't resolved until past the loading/empty/picker\n // branches below. Those branches use this bare badge; every branch past\n // trip resolution uses `syncBadgeWithSyncCenter` instead.\n const syncBadge = (\n <SyncStatusBadgeComponent\n isOnline={outboxStatus.isOnline}\n pending={outboxStatus.pending}\n parked={outboxStatus.parked}\n />\n );\n\n function selectTrip(tripRef: string): void {\n setInternalTripRef(tripRef);\n setInternalTab('trip');\n onSelectTrip?.(tripRef);\n }\n\n if (managerMe.status === 'loading') {\n if (LoadingViewComponent !== undefined) {\n return <LoadingViewComponent />;\n }\n return (\n <ManagerShell\n header={{ title: t('chrome.managerApp.title') }}\n components={shellComponents}\n style={style}\n >\n <div className=\"kf-manager-app__skeleton\">\n <div className=\"kf-manager-app__skeleton-block\" />\n <div className=\"kf-manager-app__skeleton-line\" />\n </div>\n {syncBadge}\n </ManagerShell>\n );\n }\n\n if (managerMe.status === 'error' || managerMe.trips.length === 0) {\n if (EmptyStateComponent !== undefined) {\n return <EmptyStateComponent />;\n }\n return (\n <ManagerShell\n header={{ title: t('chrome.managerApp.title') }}\n components={shellComponents}\n style={style}\n >\n <p className=\"kf-manager-app__empty\">{t('chrome.managerApp.noTripAssignment')}</p>\n {syncBadge}\n </ManagerShell>\n );\n }\n\n const { trips, manager, syncedAt } = managerMe;\n const resolvedTripRef =\n controlledTripRef ?? internalTripRef ?? (trips.length === 1 ? trips[0]?.tripRef : undefined);\n const currentTrip = trips.find((trip) => trip.tripRef === resolvedTripRef);\n\n // 2+ live trips and no resolved selection yet → the real trip-list picker,\n // never a fabricated default. A single-trip manager never sees this\n // screen (matches `App.tsx`'s own real single-trip behavior exactly).\n if (currentTrip === undefined) {\n return (\n <ManagerShell\n header={{ title: t('chrome.managerApp.title') }}\n components={shellComponents}\n style={style}\n >\n <TripListScreen\n trips={trips}\n onSelect={selectTrip}\n TripListItemComponent={TripListItemComponent}\n />\n {syncBadge}\n </ManagerShell>\n );\n }\n\n const tripRef = currentTrip.tripRef;\n const isTrek = currentTrip.eventType === 'TREK';\n const activeTab = controlledTab ?? internalTab;\n const eyebrow = formatHeaderEyebrow(syncedAt);\n const avatarInitials = initialsFromFullName(manager.fullName);\n const unread = notifications.status === 'ready' ? notifications.unreadCount : undefined;\n\n function setActiveTab(key: KaafilManagerAppTabKey): void {\n setInternalTab(key);\n onTabChange?.(key);\n }\n\n // `ManagerNowSection`'s quick-link chips (Manifest/Rooming/Checklist/\n // Docs) and its post-trip closeout summary's \"N item(s) still need\n // closing\" row all fire this exact callback — a REAL navigation intent\n // this Surface owns the tab state to fulfil directly, not just a bare\n // host passthrough (a required prop with no default behavior behind it\n // looks, and is, broken — the exact bug caught live: the chips rendered\n // but did nothing). Every `moduleKey` maps onto a real\n // `ManagerTripTabKey` this composite already renders; `onNavigateModule`\n // itself still fires afterward so a host can additionally react\n // (analytics, URL sync), same \"internal action + outward hook\" pattern\n // `onOpenTraveller`/`onViewFloatLedger` already establish.\n const NAVIGATE_MODULE_TAB: Record<Parameters<typeof onNavigateModule>[0], ManagerTripTabKey> = {\n manifest: 'manifest',\n rooming: 'rooming',\n checklist: 'checklist',\n docs: 'documents',\n 'closing-day': 'closing',\n };\n\n function handleNavigateModule(moduleKey: Parameters<typeof onNavigateModule>[0]): void {\n setActiveTab('trip');\n const mappedTab = NAVIGATE_MODULE_TAB[moduleKey];\n setTripTabKey(mappedTab);\n onTripTabChange?.(mappedTab);\n onNavigateModule(moduleKey);\n }\n\n function handleOpenTraveller(travellerId: string, fullName: string): void {\n setOpenTraveller({ travellerId, fullName });\n onOpenTraveller?.(travellerId, fullName);\n }\n\n function closeTraveller(): void {\n setOpenTraveller(null);\n onCloseTraveller?.();\n }\n\n function openNotificationsPush(): void {\n setOpenNotifications(true);\n onOpenNotifications?.();\n }\n\n function closeNotificationsPush(): void {\n setOpenNotifications(false);\n onCloseNotifications?.();\n }\n\n function openFloatLedgerPush(): void {\n setOpenFloatLedger(true);\n onOpenFloatLedger?.();\n }\n\n function closeFloatLedgerPush(): void {\n setOpenFloatLedger(false);\n onCloseFloatLedger?.();\n }\n\n function openSyncCenterPush(): void {\n setOpenSyncCenter(true);\n onOpenSyncCenter?.();\n }\n\n function closeSyncCenterPush(): void {\n setOpenSyncCenter(false);\n onCloseSyncCenter?.();\n }\n\n // The real destination \"N need attention\" opens, now that a `tripRef`\n // exists to scope `ManagerSyncCenterSection` to.\n const syncBadgeWithSyncCenter = (\n <SyncStatusBadgeComponent\n isOnline={outboxStatus.isOnline}\n pending={outboxStatus.pending}\n parked={outboxStatus.parked}\n onOpenSyncCenter={openSyncCenterPush}\n />\n );\n\n if (openTraveller !== null) {\n return (\n <ManagerShell\n header={{\n variant: 'back',\n eyebrow: t('chrome.managerApp.travellerEyebrow'),\n title: openTraveller.fullName,\n onBack: closeTraveller,\n }}\n style={style}\n >\n <ManagerTravellerProfileSection\n tripRef={tripRef}\n travellerRef={openTraveller.travellerId}\n />\n {syncBadgeWithSyncCenter}\n </ManagerShell>\n );\n }\n\n if (openNotifications) {\n return (\n <ManagerShell\n header={{\n variant: 'back',\n title: t('chrome.managerApp.notificationsTitle'),\n onBack: closeNotificationsPush,\n }}\n style={style}\n >\n <ManagerNotificationsSection\n onSelectNotification={({ tripId }) => {\n closeNotificationsPush();\n if (tripId !== null) {\n selectTrip(tripId);\n }\n }}\n />\n {syncBadgeWithSyncCenter}\n </ManagerShell>\n );\n }\n\n if (openFloatLedger) {\n return (\n <ManagerShell\n header={{\n variant: 'back',\n title: t('chrome.managerApp.floatLedgerTitle'),\n onBack: closeFloatLedgerPush,\n }}\n style={style}\n >\n <ManagerFloatLedgerSection tripRef={tripRef} />\n {syncBadgeWithSyncCenter}\n </ManagerShell>\n );\n }\n\n if (openSyncCenter) {\n return (\n <ManagerShell\n header={{\n variant: 'back',\n title: t('chrome.managerSyncCenter.title'),\n onBack: closeSyncCenterPush,\n }}\n style={style}\n >\n <ManagerSyncCenterSection\n tripRef={tripRef}\n getEntityLabel={getSyncEntityLabel}\n onResolved={onConflictResolved}\n />\n </ManagerShell>\n );\n }\n\n return (\n <ManagerShell\n header={{\n eyebrow,\n title:\n activeTab === 'now'\n ? t('chrome.managerApp.tab.now')\n : activeTab === 'trip'\n ? isTrek\n ? t('chrome.managerApp.tab.trek')\n : t('chrome.managerApp.tab.trip')\n : t('chrome.managerApp.tab.me'),\n unread,\n onBellPress: openNotificationsPush,\n avatarInitials,\n }}\n tabs={[\n { key: 'now', label: t('chrome.managerApp.tab.now'), icon: 'now' },\n {\n key: 'trip',\n label: isTrek ? t('chrome.managerApp.tab.trek') : t('chrome.managerApp.tab.trip'),\n icon: isTrek ? 'trek' : 'trip',\n },\n { key: 'me', label: t('chrome.managerApp.tab.me'), icon: 'me' },\n ]}\n activeTabKey={activeTab}\n onTabChange={(key) => setActiveTab(key as KaafilManagerAppTabKey)}\n components={shellComponents}\n style={style}\n >\n {activeTab === 'now' ? (\n <ManagerNowSection\n tripRef={tripRef}\n onNavigateModule={handleNavigateModule}\n onLogExpense={onLogExpense}\n onCollectPayment={onCollectPayment}\n />\n ) : null}\n {activeTab === 'trip' ? (\n <ManagerTripSection\n tripRef={tripRef}\n activeTabKey={tripTabKey}\n onTabChange={(key) => {\n setTripTabKey(key);\n onTripTabChange?.(key);\n }}\n onCollectFromGroup={onCollectFromGroup}\n onOpenTraveller={handleOpenTraveller}\n onVendorSelect={onVendorSelect}\n onSubmitUnlockRequest={onSubmitUnlockRequest}\n onViewFloatLedger={openFloatLedgerPush}\n />\n ) : null}\n {activeTab === 'me' ? (\n <ManagerMeSection onOpenTrip={selectTrip} onSignOut={onSignOut} />\n ) : null}\n {syncBadgeWithSyncCenter}\n </ManagerShell>\n );\n}\n"]}