@burdenoff/microfe-eventfullymanaged 2026.703.1 → 2026.704.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 (75) hide show
  1. package/dist/eventfullymanaged/EventfullyManagedRoutes.js +154 -66
  2. package/dist/eventfullymanaged/EventfullyManagedRoutes.js.map +1 -1
  3. package/dist/eventfullymanaged/api/eventApi.js +546 -68
  4. package/dist/eventfullymanaged/api/eventApi.js.map +1 -1
  5. package/dist/eventfullymanaged/components/ActionMenu.js +113 -0
  6. package/dist/eventfullymanaged/components/ActionMenu.js.map +1 -0
  7. package/dist/eventfullymanaged/components/EntityFormShell.js +51 -0
  8. package/dist/eventfullymanaged/components/EntityFormShell.js.map +1 -0
  9. package/dist/eventfullymanaged/components/EntityTagsField.js +146 -0
  10. package/dist/eventfullymanaged/components/EntityTagsField.js.map +1 -0
  11. package/dist/eventfullymanaged/components/Pagination.js +84 -0
  12. package/dist/eventfullymanaged/components/Pagination.js.map +1 -0
  13. package/dist/eventfullymanaged/components/SafeLink.js +32 -0
  14. package/dist/eventfullymanaged/components/SafeLink.js.map +1 -0
  15. package/dist/eventfullymanaged/components/index.js +7 -0
  16. package/dist/eventfullymanaged/pages/events/EventDetailPage.js +458 -0
  17. package/dist/eventfullymanaged/pages/events/EventDetailPage.js.map +1 -0
  18. package/dist/eventfullymanaged/pages/events/EventFormPage.js +267 -0
  19. package/dist/eventfullymanaged/pages/events/EventFormPage.js.map +1 -0
  20. package/dist/eventfullymanaged/pages/events/SessionFormPage.js +308 -0
  21. package/dist/eventfullymanaged/pages/events/SessionFormPage.js.map +1 -0
  22. package/dist/eventfullymanaged/pages/events/TicketTypeFormPage.js +214 -0
  23. package/dist/eventfullymanaged/pages/events/TicketTypeFormPage.js.map +1 -0
  24. package/dist/eventfullymanaged/pages/events/eventFormUtils.js +128 -0
  25. package/dist/eventfullymanaged/pages/events/eventFormUtils.js.map +1 -0
  26. package/dist/eventfullymanaged/pages/exhibitors/ExhibitorFormPage.js +233 -0
  27. package/dist/eventfullymanaged/pages/exhibitors/ExhibitorFormPage.js.map +1 -0
  28. package/dist/eventfullymanaged/pages/exhibitors/ExhibitorsPage.js +165 -0
  29. package/dist/eventfullymanaged/pages/exhibitors/ExhibitorsPage.js.map +1 -0
  30. package/dist/eventfullymanaged/pages/leads/LeadCaptureDialog.js +141 -0
  31. package/dist/eventfullymanaged/pages/leads/LeadCaptureDialog.js.map +1 -0
  32. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js +178 -45
  33. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js.map +1 -1
  34. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js +240 -70
  35. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js.map +1 -1
  36. package/dist/eventfullymanaged/pages/modules/EventsPage.js +133 -97
  37. package/dist/eventfullymanaged/pages/modules/EventsPage.js.map +1 -1
  38. package/dist/eventfullymanaged/pages/modules/KioskPage.js +746 -36
  39. package/dist/eventfullymanaged/pages/modules/KioskPage.js.map +1 -1
  40. package/dist/eventfullymanaged/pages/modules/NetworkingPage.js +210 -69
  41. package/dist/eventfullymanaged/pages/modules/NetworkingPage.js.map +1 -1
  42. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js.map +1 -1
  43. package/dist/eventfullymanaged/pages/modules/RegistrationPage.js +289 -77
  44. package/dist/eventfullymanaged/pages/modules/RegistrationPage.js.map +1 -1
  45. package/dist/eventfullymanaged/pages/modules/RoadmapPanel.js +95 -0
  46. package/dist/eventfullymanaged/pages/modules/RoadmapPanel.js.map +1 -0
  47. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js +77 -56
  48. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js.map +1 -1
  49. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js +70 -36
  50. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js.map +1 -1
  51. package/dist/eventfullymanaged/pages/networking/MeetingFormPage.js +343 -0
  52. package/dist/eventfullymanaged/pages/networking/MeetingFormPage.js.map +1 -0
  53. package/dist/eventfullymanaged/pages/networking/NetworkingProfileFormPage.js +236 -0
  54. package/dist/eventfullymanaged/pages/networking/NetworkingProfileFormPage.js.map +1 -0
  55. package/dist/eventfullymanaged/pages/registration/AttendeeFormPage.js +181 -0
  56. package/dist/eventfullymanaged/pages/registration/AttendeeFormPage.js.map +1 -0
  57. package/dist/eventfullymanaged/pages/registration/PromoCodeFormPage.js +262 -0
  58. package/dist/eventfullymanaged/pages/registration/PromoCodeFormPage.js.map +1 -0
  59. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.js +414 -0
  60. package/dist/eventfullymanaged/pages/registration/RegisterAttendeePage.js.map +1 -0
  61. package/dist/eventfullymanaged/pages/speakers/SpeakerFormPage.js +224 -0
  62. package/dist/eventfullymanaged/pages/speakers/SpeakerFormPage.js.map +1 -0
  63. package/dist/eventfullymanaged/pages/speakers/SpeakersPage.js +96 -0
  64. package/dist/eventfullymanaged/pages/speakers/SpeakersPage.js.map +1 -0
  65. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js +149 -140
  66. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js.map +1 -1
  67. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js +97 -67
  68. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js.map +1 -1
  69. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js +93 -72
  70. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js.map +1 -1
  71. package/dist/eventfullymanaged/pages/venues/VenueFormPage.js +91 -89
  72. package/dist/eventfullymanaged/pages/venues/VenueFormPage.js.map +1 -1
  73. package/dist/eventfullymanaged/pages/venues/VenueListPage.js +83 -53
  74. package/dist/eventfullymanaged/pages/venues/VenueListPage.js.map +1 -1
  75. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"eventApi.js","names":[],"sources":["../../../src/eventfullymanaged/api/eventApi.ts"],"sourcesContent":["import { gql, type ErrorLike } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nimport { notify } from '../lib/toast';\n\n/**\n * Shared mutation error sink. The gateway client runs with `errorPolicy: 'all'`,\n * so in-band GraphQL errors also invoke `onError`; wiring this on every write\n * mutation guarantees a failure is always surfaced to the user even if a caller\n * forgets to inspect the resolved result.\n */\nconst onMutationError = (error: ErrorLike): void => {\n notify.error('Something went wrong', error.message || 'Please try again.');\n};\n\ntype DashboardSummaryResponse = {\n dashboardSummary: {\n totalEvents: number;\n activeEvents: number;\n totalRegistrations: number;\n totalAttendees: number;\n totalVenues: number;\n totalSponsors: number;\n upcomingSessions: number;\n };\n};\n\nexport type EventGql = {\n id: string;\n name: string;\n};\n\nexport type VenueGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n addressLine1?: string | null;\n city?: string | null;\n state?: string | null;\n country?: string | null;\n postalCode?: string | null;\n capacity?: number | null;\n amenities: string[];\n pricing?: Record<string, unknown> | null;\n openingHours?: Record<string, unknown> | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type FloorPlanGql = {\n id: string;\n venueId: string;\n name: string;\n imageUrl?: string | null;\n dimensions?: Record<string, unknown> | null;\n interactiveAreas?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type TicketTypeGql = {\n id: string;\n eventId: string;\n name: string;\n description?: string | null;\n price: string;\n currency: string;\n capacity?: number | null;\n soldCount: number;\n salesStartAt?: string | null;\n salesEndAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type PromoCodeGql = {\n id: string;\n eventId: string;\n code: string;\n description?: string | null;\n discountType: string;\n discountValue: string;\n maxUses?: number | null;\n usedCount: number;\n startsAt?: string | null;\n endsAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type ExhibitorGql = {\n id: string;\n eventId: string;\n name: string;\n boothCode?: string | null;\n category?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type LeadGql = {\n id: string;\n eventId: string;\n sponsorId?: string | null;\n exhibitorId?: string | null;\n attendeeName: string;\n attendeeEmail: string;\n score?: number | null;\n status: string;\n notes?: string | null;\n capturedAt: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInRecordGql = {\n id: string;\n eventId: string;\n stationId?: string | null;\n attendeeId?: string | null;\n registrationId?: string | null;\n method: string;\n status: string;\n direction: string;\n recordedAt: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingProfileGql = {\n id: string;\n eventId: string;\n attendeeId: string;\n interests: string[];\n lookingFor: string[];\n industry?: string | null;\n role?: string | null;\n visibility: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SponsorGql = {\n id: string;\n eventId: string;\n name: string;\n level: string;\n logoUrl?: string | null;\n website?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n contactPhone?: string | null;\n metrics?: { value?: number; leads?: number } | null;\n metadata?: Record<string, unknown> | null;\n};\n\ntype EventsResponse = { events: { total: number; items: EventGql[] } };\ntype VenuesResponse = { venues: { total: number; items: VenueGql[] } };\ntype VenueResponse = { venue: VenueGql | null; floorPlans: { total: number; items: FloorPlanGql[] } };\ntype SponsorsResponse = { sponsors: { total: number; items: SponsorGql[] } };\ntype CreateVenueResponse = { createVenue: VenueGql };\ntype UpdateVenueResponse = { updateVenue: VenueGql };\ntype CreateSponsorResponse = { createSponsor: SponsorGql };\ntype UpdateSponsorResponse = { updateSponsor: SponsorGql };\ntype CreateFloorPlanResponse = { createFloorPlan: FloorPlanGql };\ntype UpdateFloorPlanResponse = { updateFloorPlan: FloorPlanGql };\ntype TicketTypesResponse = { ticketTypes: { total: number; items: TicketTypeGql[] } };\ntype PromoCodesResponse = { promoCodes: { total: number; items: PromoCodeGql[] } };\ntype ExhibitorsResponse = { exhibitors: { total: number; items: ExhibitorGql[] } };\ntype LeadsResponse = { leads: { total: number; items: LeadGql[] } };\ntype CheckInRecordsResponse = { checkInRecords: { total: number; items: CheckInRecordGql[] } };\ntype NetworkingProfilesResponse = { networkingProfiles: { total: number; items: NetworkingProfileGql[] } };\ntype RegistrationsResponse = { registrations: { total: number; items: Array<Record<string, unknown>> } };\ntype AttendeesResponse = { attendees: { total: number; items: Array<Record<string, unknown>> } };\ntype EventSessionsResponse = { eventSessions: { total: number; items: Array<Record<string, unknown>> } };\ntype SpeakersResponse = { speakers: { total: number; items: Array<Record<string, unknown>> } };\ntype SimpleEntity = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\ntype SimpleEntityResponse = { total: number; items: SimpleEntity[] };\ntype CheckInStationsResponse = { checkInStations: SimpleEntityResponse };\ntype NetworkingMatchesResponse = { networkingMatches: SimpleEntityResponse };\ntype MeetingsResponse = { meetings: SimpleEntityResponse };\ntype AnnouncementsResponse = { announcements: SimpleEntityResponse };\ntype WorkflowTemplatesResponse = { workflowTemplates: SimpleEntityResponse };\ntype AutomationRulesResponse = { automationRules: SimpleEntityResponse };\ntype CommunicationCampaignsResponse = { communicationCampaigns: SimpleEntityResponse };\ntype AnalyticsSnapshotsResponse = { analyticsSnapshots: SimpleEntityResponse };\ntype UpsertSimpleEntityResponse = { [key: string]: SimpleEntity };\n\nexport const DASHBOARD_SUMMARY_QUERY = gql`\n query EventfullymanagedDashboardSummary {\n dashboardSummary: eventfullyManagedDashboardSummary {\n totalEvents\n activeEvents\n totalRegistrations\n totalAttendees\n totalVenues\n totalSponsors\n upcomingSessions\n }\n }\n`;\n\nexport const EVENTS_QUERY = gql`\n query EventfullymanagedEvents($search: String, $limit: Int, $offset: Int) {\n events: eventfullyManagedEvents(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n }\n`;\n\nexport const VENUES_QUERY = gql`\n query EventfullymanagedVenues($search: String, $limit: Int, $offset: Int) {\n venues: eventfullyManagedVenues(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n }\n }\n }\n`;\n\nexport const VENUE_QUERY = gql`\n query EventfullymanagedVenue($id: ID!) {\n venue: eventfullyManagedVenue(id: $id) {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n createdAt\n updatedAt\n }\n floorPlans: eventfullyManagedFloorPlans(venueId: $id, limit: 100, offset: 0) {\n total\n items {\n id\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n }\n }\n }\n`;\n\nexport const SPONSORS_QUERY = gql`\n query EventfullymanagedSponsors($search: String, $limit: Int, $offset: Int) {\n sponsors: eventfullyManagedSponsors(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n createdAt\n }\n }\n }\n`;\n\nexport const REGISTRATIONS_QUERY = gql`\n query EventfullymanagedRegistrations($eventId: ID, $limit: Int, $offset: Int) {\n registrations: eventfullyManagedRegistrations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n currency\n registeredAt\n checkedInAt\n }\n }\n }\n`;\n\nexport const ATTENDEES_QUERY = gql`\n query EventfullymanagedAttendees($eventId: ID, $limit: Int, $offset: Int) {\n attendees: eventfullyManagedAttendees(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n fullName\n email\n phone\n company\n role\n tags\n metadata\n }\n }\n }\n`;\n\nexport const EVENT_SESSIONS_QUERY = gql`\n query EventfullymanagedEventSessions($eventId: ID, $limit: Int, $offset: Int) {\n eventSessions: eventfullyManagedEventSessions(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n venueId\n title\n sessionType\n track\n startsAt\n endsAt\n status\n }\n }\n }\n`;\n\nexport const SPEAKERS_QUERY = gql`\n query EventfullymanagedSpeakers($limit: Int, $offset: Int) {\n speakers: eventfullyManagedSpeakers(limit: $limit, offset: $offset) {\n total\n items {\n id\n fullName\n title\n organization\n email\n }\n }\n }\n`;\n\nexport const TICKET_TYPES_QUERY = gql`\n query EventfullymanagedTicketTypes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n ticketTypes: eventfullyManagedTicketTypes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const PROMO_CODES_QUERY = gql`\n query EventfullymanagedPromoCodes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n promoCodes: eventfullyManagedPromoCodes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const EXHIBITORS_QUERY = gql`\n query EventfullymanagedExhibitors($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n exhibitors: eventfullyManagedExhibitors(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n }\n }\n }\n`;\n\nexport const LEADS_QUERY = gql`\n query EventfullymanagedLeads($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n leads: eventfullyManagedLeads(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_RECORDS_QUERY = gql`\n query EventfullymanagedCheckInRecords($eventId: ID, $limit: Int, $offset: Int) {\n checkInRecords: eventfullyManagedCheckInRecords(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n stationId\n attendeeId\n registrationId\n method\n status\n direction\n recordedAt\n metadata\n }\n }\n }\n`;\n\nexport const NETWORKING_PROFILES_QUERY = gql`\n query EventfullymanagedNetworkingProfiles($eventId: ID, $limit: Int, $offset: Int) {\n networkingProfiles: eventfullyManagedNetworkingProfiles(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_STATIONS_QUERY = gql`\n query EventfullymanagedCheckInStations($eventId: ID, $limit: Int, $offset: Int) {\n checkInStations: eventfullyManagedCheckInStations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const NETWORKING_MATCHES_QUERY = gql`\n query EventfullymanagedNetworkingMatches($eventId: ID, $limit: Int, $offset: Int) {\n networkingMatches: eventfullyManagedNetworkingMatches(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const MEETINGS_QUERY = gql`\n query EventfullymanagedMeetings($eventId: ID, $limit: Int, $offset: Int) {\n meetings: eventfullyManagedMeetings(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANNOUNCEMENTS_QUERY = gql`\n query EventfullymanagedAnnouncements($eventId: ID, $limit: Int, $offset: Int) {\n announcements: eventfullyManagedAnnouncements(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const WORKFLOW_TEMPLATES_QUERY = gql`\n query EventfullymanagedWorkflowTemplates($eventId: ID, $limit: Int, $offset: Int) {\n workflowTemplates: eventfullyManagedWorkflowTemplates(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const AUTOMATION_RULES_QUERY = gql`\n query EventfullymanagedAutomationRules($eventId: ID, $limit: Int, $offset: Int) {\n automationRules: eventfullyManagedAutomationRules(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const COMMUNICATION_CAMPAIGNS_QUERY = gql`\n query EventfullymanagedCommunicationCampaigns($eventId: ID, $limit: Int, $offset: Int) {\n communicationCampaigns: eventfullyManagedCommunicationCampaigns(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANALYTICS_SNAPSHOTS_QUERY = gql`\n query EventfullymanagedAnalyticsSnapshots($eventId: ID, $limit: Int, $offset: Int) {\n analyticsSnapshots: eventfullyManagedAnalyticsSnapshots(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const CREATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedCreateVenue($input: EventfullyManagedVenueInput!) {\n createVenue: eventfullyManagedCreateVenue(input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const UPDATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedUpdateVenue($id: ID!, $input: EventfullyManagedVenueInput!) {\n updateVenue: eventfullyManagedUpdateVenue(id: $id, input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const CREATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedCreateSponsor($input: EventfullyManagedSponsorInput!) {\n createSponsor: eventfullyManagedCreateSponsor(input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const UPDATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedUpdateSponsor($id: ID!, $input: EventfullyManagedSponsorInput!) {\n updateSponsor: eventfullyManagedUpdateSponsor(id: $id, input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const CREATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedCreateFloorPlan($input: EventfullyManagedFloorPlanInput!) {\n createFloorPlan: eventfullyManagedCreateFloorPlan(input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPDATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedUpdateFloorPlan($id: ID!, $input: EventfullyManagedFloorPlanInput!) {\n updateFloorPlan: eventfullyManagedUpdateFloorPlan(id: $id, input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const CREATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedCreateEvent($input: EventfullyManagedEventInput!) {\n createEvent: eventfullyManagedCreateEvent(input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPDATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedUpdateEvent($id: ID!, $input: EventfullyManagedEventInput!) {\n updateEvent: eventfullyManagedUpdateEvent(id: $id, input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPSERT_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnnouncement($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnnouncement: eventfullyManagedUpsertAnnouncement(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_WORKFLOW_TEMPLATE_MUTATION = gql`\n mutation EventfullymanagedUpsertWorkflowTemplate($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertWorkflowTemplate: eventfullyManagedUpsertWorkflowTemplate(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_AUTOMATION_RULE_MUTATION = gql`\n mutation EventfullymanagedUpsertAutomationRule($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAutomationRule: eventfullyManagedUpsertAutomationRule(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedUpsertCommunicationCampaign($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertCommunicationCampaign: eventfullyManagedUpsertCommunicationCampaign(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_ANALYTICS_SNAPSHOT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnalyticsSnapshot($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnalyticsSnapshot: eventfullyManagedUpsertAnalyticsSnapshot(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const useDashboardSummaryQuery = () => useQuery<DashboardSummaryResponse>(DASHBOARD_SUMMARY_QUERY);\nexport const useEventsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<EventsResponse, { search?: string; limit?: number; offset?: number }>(EVENTS_QUERY, { variables });\nexport const useVenuesQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<VenuesResponse, { search?: string; limit?: number; offset?: number }>(VENUES_QUERY, { variables });\nexport const useVenueQuery = (id: string) =>\n useQuery<VenueResponse, { id: string }>(VENUE_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<SponsorsResponse, { search?: string; limit?: number; offset?: number }>(SPONSORS_QUERY, { variables });\nexport const useRegistrationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<RegistrationsResponse, { eventId?: string; limit?: number; offset?: number }>(REGISTRATIONS_QUERY, {\n variables,\n });\nexport const useAttendeesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AttendeesResponse, { eventId?: string; limit?: number; offset?: number }>(ATTENDEES_QUERY, { variables });\nexport const useEventSessionsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<EventSessionsResponse, { eventId?: string; limit?: number; offset?: number }>(EVENT_SESSIONS_QUERY, {\n variables,\n });\nexport const useSpeakersQuery = (variables: { limit?: number; offset?: number }) =>\n useQuery<SpeakersResponse, { limit?: number; offset?: number }>(SPEAKERS_QUERY, { variables });\nexport const useTicketTypesQuery = (variables: {\n eventId?: string;\n search?: string;\n limit?: number;\n offset?: number;\n}) =>\n useQuery<TicketTypesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n TICKET_TYPES_QUERY,\n {\n variables,\n }\n );\nexport const usePromoCodesQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<PromoCodesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n PROMO_CODES_QUERY,\n {\n variables,\n }\n );\nexport const useExhibitorsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<ExhibitorsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n EXHIBITORS_QUERY,\n {\n variables,\n }\n );\nexport const useLeadsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<LeadsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(LEADS_QUERY, {\n variables,\n });\nexport const useCheckInStationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInStationsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_STATIONS_QUERY, {\n variables,\n });\nexport const useCheckInRecordsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInRecordsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_RECORDS_QUERY, {\n variables,\n });\nexport const useNetworkingProfilesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingProfilesResponse, { eventId?: string; limit?: number; offset?: number }>(\n NETWORKING_PROFILES_QUERY,\n {\n variables,\n }\n );\nexport const useNetworkingMatchesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingMatchesResponse, { eventId?: string; limit?: number; offset?: number }>(NETWORKING_MATCHES_QUERY, {\n variables,\n });\nexport const useMeetingsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<MeetingsResponse, { eventId?: string; limit?: number; offset?: number }>(MEETINGS_QUERY, { variables });\nexport const useAnnouncementsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnnouncementsResponse, { eventId?: string; limit?: number; offset?: number }>(ANNOUNCEMENTS_QUERY, {\n variables,\n });\nexport const useWorkflowTemplatesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<WorkflowTemplatesResponse, { eventId?: string; limit?: number; offset?: number }>(WORKFLOW_TEMPLATES_QUERY, {\n variables,\n });\nexport const useAutomationRulesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AutomationRulesResponse, { eventId?: string; limit?: number; offset?: number }>(AUTOMATION_RULES_QUERY, {\n variables,\n });\nexport const useCommunicationCampaignsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CommunicationCampaignsResponse, { eventId?: string; limit?: number; offset?: number }>(\n COMMUNICATION_CAMPAIGNS_QUERY,\n {\n variables,\n }\n );\nexport const useAnalyticsSnapshotsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnalyticsSnapshotsResponse, { eventId?: string; limit?: number; offset?: number }>(\n ANALYTICS_SNAPSHOTS_QUERY,\n {\n variables,\n }\n );\n\nexport const useCreateVenueMutation = () =>\n useMutation<CreateVenueResponse, { input: Record<string, unknown> }>(CREATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useUpdateVenueMutation = () =>\n useMutation<UpdateVenueResponse, { id: string; input: Record<string, unknown> }>(UPDATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useCreateSponsorMutation = () =>\n useMutation<CreateSponsorResponse, { input: Record<string, unknown> }>(CREATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useUpdateSponsorMutation = () =>\n useMutation<UpdateSponsorResponse, { id: string; input: Record<string, unknown> }>(UPDATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useCreateFloorPlanMutation = () =>\n useMutation<CreateFloorPlanResponse, { input: Record<string, unknown> }>(CREATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUpdateFloorPlanMutation = () =>\n useMutation<UpdateFloorPlanResponse, { id: string; input: Record<string, unknown> }>(UPDATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEventMutation = () =>\n useMutation<{ createEvent: EventGql }, { input: Record<string, unknown> }>(CREATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateEventMutation = () =>\n useMutation<{ updateEvent: EventGql }, { id: string; input: Record<string, unknown> }>(UPDATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpsertAnnouncementMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANNOUNCEMENT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n }\n );\nexport const useUpsertWorkflowTemplateMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_WORKFLOW_TEMPLATE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: WORKFLOW_TEMPLATES_QUERY }],\n }\n );\nexport const useUpsertAutomationRuleMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_AUTOMATION_RULE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AUTOMATION_RULES_QUERY }],\n }\n );\nexport const useUpsertCommunicationCampaignMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_COMMUNICATION_CAMPAIGN_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n }\n );\nexport const useUpsertAnalyticsSnapshotMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANALYTICS_SNAPSHOT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANALYTICS_SNAPSHOTS_QUERY }],\n }\n );\n"],"mappings":";;;;;AAWA,IAAM,KAAmB,MAA2B;AAClD,GAAO,MAAM,wBAAwB,EAAM,WAAW,oBAAoB;GA0L/D,IAA0B,CAAG;;;;;;;;;;;;GAc7B,IAAe,CAAG;;;;;;;;;;;;;;;;;;;;GAsBlB,IAAe,CAAG;;;;;;;;;;;;;;;;;;;;;;;GAyBlB,IAAc,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCjB,IAAiB,CAAG;;;;;;;;;;;;;;;;;;;;GAsBpB,IAAsB,CAAG;;;;;;;;;;;;;;;;;;GAoBzB,IAAkB,CAAG;;;;;;;;;;;;;;;;;GAmBrB,KAAuB,CAAG;;;;;;;;;;;;;;;;;;AAmBT,CAAG;;;;;;;;;;;;;;AAejC,IAAa,IAAqB,CAAG;;;;;;;;;;;;;;;;;;;;GAsBxB,IAAoB,CAAG;;;;;;;;;;;;;;;;;;;;GAsBvB,IAAmB,CAAG;;;;;;;;;;;;;;;;;GAmBtB,IAAc,CAAG;;;;;;;;;;;;;;;;;;;GAqBjB,IAAwB,CAAG;;;;;;;;;;;;;;;;;;GAoB3B,IAA4B,CAAG;;;;;;;;;;;;;;;;;GAmB/B,IAAyB,CAAG;;;;;;;;;;;;;;;;;GAmB5B,IAA2B,CAAG;;;;;;;;;;;;;;;;;GAmB9B,IAAiB,CAAG;;;;;;;;;;;;;;;;;GAmBpB,IAAsB,CAAG;;;;;;;;;;;;;;;;;GAmBzB,IAA2B,CAAG;;;;;;;;;;;;;;;;;GAmB9B,IAAyB,CAAG;;;;;;;;;;;;;;;;;GAmB5B,IAAgC,CAAG;;;;;;;;;;;;;;;;;GAmBnC,IAA4B,CAAG;;;;;;;;;;;;;;;;;GAmB/B,IAAwB,CAAG;;;;;;;;;;;;;;;;;GAmB3B,IAAwB,CAAG;;;;;;;;;;;;;;;;;GAmB3B,IAA0B,CAAG;;;;;;;;;;;;;;;;GAkB7B,IAA0B,CAAG;;;;;;;;;;;;;;;;GAkB7B,IAA6B,CAAG;;;;;;;;;;;;;GAehC,IAA6B,CAAG;;;;;;;;;;;;;GAehC,IAAwB,CAAG;;;;;;;;;;;;;;;;AAiBH,CAAG;;;;;;;;;;;;;;;;AAiBxC,IAAa,IAA+B,CAAG;;;;;;;;;;;;;;GAgBlC,IAAoC,CAAG;;;;;;;;;;;;;;GAgBvC,IAAkC,CAAG;;;;;;;;;;;;;;;AAgBI,CAAG;;;;;;;;;;;;;;;AAgBzD,IAAa,IAAqC,CAAG;;;;;;;;;;;;;;GAgBxC,UAAiC,EAAmC,EAAwB,EAC5F,KAAkB,MAC7B,EAA+E,GAAc,EAAE,cAAW,CAAC,EAChG,KAAkB,MAC7B,EAA+E,GAAc,EAAE,cAAW,CAAC,EAChG,MAAiB,MAC5B,EAAwC,GAAa;CAAE,WAAW,EAAE,OAAI;CAAE,MAAM,CAAC;CAAI,CAAC,EAC3E,KAAoB,MAC/B,EAAiF,GAAgB,EAAE,cAAW,CAAC,EACpG,KAAyB,MACpC,EAAuF,GAAqB,EAC1G,cACD,CAAC,EACS,KAAqB,MAChC,EAAmF,GAAiB,EAAE,cAAW,CAAC,EACvG,KAAyB,MACpC,EAAuF,IAAsB,EAC3G,cACD,CAAC,EAGS,KAAuB,MAMlC,EACE,GACA,EACE,cACD,CACF,EACU,KAAsB,MACjC,EACE,GACA,EACE,cACD,CACF,EACU,KAAsB,MACjC,EACE,GACA,EACE,cACD,CACF,EACU,KAAiB,MAC5B,EAAgG,GAAa,EAC3G,cACD,CAAC,EACS,KAA2B,MACtC,EAAyF,GAAwB,EAC/G,cACD,CAAC,EACS,KAA0B,MACrC,EAAwF,GAAuB,EAC7G,cACD,CAAC,EACS,KAA8B,MACzC,EACE,GACA,EACE,cACD,CACF,EACU,KAA6B,MACxC,EAA2F,GAA0B,EACnH,cACD,CAAC,EACS,KAAoB,MAC/B,EAAkF,GAAgB,EAAE,cAAW,CAAC,EACrG,MAAyB,MACpC,EAAuF,GAAqB,EAC1G,cACD,CAAC,EACS,MAA6B,MACxC,EAA2F,GAA0B,EACnH,cACD,CAAC,EACS,MAA2B,MACtC,EAAyF,GAAwB,EAC/G,cACD,CAAC,EACS,MAAkC,MAC7C,EACE,GACA,EACE,cACD,CACF,EACU,MAA8B,MACzC,EACE,GACA,EACE,cACD,CACF,EAEU,UACX,EAAqE,GAAuB;CAC1F,aAAa;CACb,SAAS;CACT,gBAAgB,CAAC,EAAE,OAAO,GAAc,CAAC;CAC1C,CAAC,EACS,WACX,EAAiF,GAAuB;CACtG,aAAa;CACb,SAAS;CACT,gBAAgB,CAAC,EAAE,OAAO,GAAc,CAAC;CAC1C,CAAC,EACS,WACX,EAAuE,GAAyB;CAC9F,aAAa;CACb,SAAS;CACT,gBAAgB,CAAC,EAAE,OAAO,GAAgB,CAAC;CAC5C,CAAC,EACS,WACX,EAAmF,GAAyB;CAC1G,aAAa;CACb,SAAS;CACT,gBAAgB,CAAC,EAAE,OAAO,GAAgB,CAAC;CAC5C,CAAC,EACS,WACX,EAAyE,GAA4B;CACnG,aAAa;CACb,SAAS;CACV,CAAC,EACS,WACX,EAAqF,GAA4B;CAC/G,aAAa;CACb,SAAS;CACV,CAAC,EACS,WACX,EAA2E,GAAuB;CAChG,aAAa;CACb,SAAS;CACT,gBAAgB,CAAC,EAAE,OAAO,GAAc,EAAE,EAAE,OAAO,GAAyB,CAAC;CAC9E,CAAC,EAOS,WACX,EACE,GACA;CACE,aAAa;CACb,SAAS;CACT,gBAAgB,CAAC,EAAE,OAAO,GAAqB,CAAC;CACjD,CACF,EACU,WACX,EACE,GACA;CACE,aAAa;CACb,SAAS;CACT,gBAAgB,CAAC,EAAE,OAAO,GAA0B,CAAC;CACtD,CACF,EACU,WACX,EACE,GACA;CACE,aAAa;CACb,SAAS;CACT,gBAAgB,CAAC,EAAE,OAAO,GAAwB,CAAC;CACpD,CACF,EAUU,WACX,EACE,GACA;CACE,aAAa;CACb,SAAS;CACT,gBAAgB,CAAC,EAAE,OAAO,GAA2B,CAAC;CACvD,CACF"}
1
+ {"version":3,"file":"eventApi.js","names":[],"sources":["../../../src/eventfullymanaged/api/eventApi.ts"],"sourcesContent":["import { gql, type ErrorLike } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nimport { notify } from '../lib/toast';\n\n/**\n * Shared mutation error sink. The gateway client runs with `errorPolicy: 'all'`,\n * so in-band GraphQL errors also invoke `onError`; wiring this on every write\n * mutation guarantees a failure is always surfaced to the user even if a caller\n * forgets to inspect the resolved result.\n */\nconst onMutationError = (error: ErrorLike): void => {\n notify.error('Something went wrong', error.message || 'Please try again.');\n};\n\ntype DashboardSummaryResponse = {\n dashboardSummary: {\n totalEvents: number;\n activeEvents: number;\n totalRegistrations: number;\n totalAttendees: number;\n totalVenues: number;\n totalSponsors: number;\n upcomingSessions: number;\n };\n};\n\nexport type EventGql = {\n id: string;\n name: string;\n};\n\nexport type VenueGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n addressLine1?: string | null;\n city?: string | null;\n state?: string | null;\n country?: string | null;\n postalCode?: string | null;\n capacity?: number | null;\n amenities: string[];\n pricing?: Record<string, unknown> | null;\n openingHours?: Record<string, unknown> | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type FloorPlanGql = {\n id: string;\n venueId: string;\n name: string;\n imageUrl?: string | null;\n dimensions?: Record<string, unknown> | null;\n interactiveAreas?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type TicketTypeGql = {\n id: string;\n eventId: string;\n name: string;\n description?: string | null;\n price: string;\n currency: string;\n capacity?: number | null;\n soldCount: number;\n salesStartAt?: string | null;\n salesEndAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type PromoCodeGql = {\n id: string;\n eventId: string;\n code: string;\n description?: string | null;\n discountType: string;\n discountValue: string;\n maxUses?: number | null;\n usedCount: number;\n startsAt?: string | null;\n endsAt?: string | null;\n isActive: boolean;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type ExhibitorGql = {\n id: string;\n eventId: string;\n name: string;\n boothCode?: string | null;\n category?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type LeadGql = {\n id: string;\n eventId: string;\n sponsorId?: string | null;\n exhibitorId?: string | null;\n attendeeName: string;\n attendeeEmail: string;\n score?: number | null;\n status: string;\n notes?: string | null;\n capturedAt: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInRecordGql = {\n id: string;\n eventId: string;\n stationId?: string | null;\n attendeeId?: string | null;\n registrationId?: string | null;\n method: string;\n status: string;\n direction: string;\n recordedAt: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingProfileGql = {\n id: string;\n eventId: string;\n attendeeId: string;\n interests: string[];\n lookingFor: string[];\n industry?: string | null;\n role?: string | null;\n visibility: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SponsorGql = {\n id: string;\n eventId: string;\n name: string;\n level: string;\n logoUrl?: string | null;\n website?: string | null;\n contactName?: string | null;\n contactEmail?: string | null;\n contactPhone?: string | null;\n metrics?: { value?: number; leads?: number } | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventDetailGql = {\n id: string;\n workspaceId: string;\n name: string;\n description?: string | null;\n type: string;\n status: string;\n timezone: string;\n startAt: string;\n endAt: string;\n visibility: string;\n capacity?: number | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type EventSessionGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n venueId?: string | null;\n title: string;\n description?: string | null;\n sessionType: string;\n track?: string | null;\n startsAt: string;\n endsAt: string;\n capacity?: number | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SpeakerGql = {\n id: string;\n workspaceId: string;\n fullName: string;\n title?: string | null;\n organization?: string | null;\n email?: string | null;\n phone?: string | null;\n bio?: string | null;\n avatarUrl?: string | null;\n socialLinks?: Record<string, unknown> | null;\n};\n\nexport type RegistrationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n attendeeId?: string | null;\n ticketTypeId?: string | null;\n status: string;\n quantity: number;\n totalAmount?: string | null;\n currency: string;\n registeredAt: string;\n checkedInAt?: string | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type AttendeeGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n fullName: string;\n email: string;\n phone?: string | null;\n company?: string | null;\n role?: string | null;\n profile?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type CheckInStationGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n name: string;\n code: string;\n location?: string | null;\n isActive: boolean;\n kioskConfig?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type MeetingGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n title: string;\n startsAt: string;\n endsAt: string;\n location?: string | null;\n notes?: string | null;\n sourceProfileId?: string | null;\n targetProfileId?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type NetworkingMatchGql = {\n id: string;\n workspaceId: string;\n eventId: string;\n sourceProfileId: string;\n targetProfileId: string;\n score: number;\n reason?: string | null;\n status: string;\n metadata?: Record<string, unknown> | null;\n};\n\nexport type SimpleEntityGql = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\n\nexport type EntityTagInfoGql = {\n id: string;\n key?: string | null;\n label?: string | null;\n color?: string | null;\n};\n\nexport type EntityTagAssignmentGql = {\n id: string;\n tagId: string;\n entityId: string;\n entityType: string;\n source: string;\n tagInfo?: EntityTagInfoGql | null;\n};\n\nexport type AvailableTagGql = {\n id: string;\n key: string;\n label: string;\n color?: string | null;\n};\n\ntype EventsResponse = { events: { total: number; items: EventGql[] } };\ntype VenuesResponse = { venues: { total: number; items: VenueGql[] } };\ntype VenueResponse = { venue: VenueGql | null; floorPlans: { total: number; items: FloorPlanGql[] } };\ntype SponsorsResponse = { sponsors: { total: number; items: SponsorGql[] } };\ntype CreateVenueResponse = { createVenue: VenueGql };\ntype UpdateVenueResponse = { updateVenue: VenueGql };\ntype CreateSponsorResponse = { createSponsor: SponsorGql };\ntype UpdateSponsorResponse = { updateSponsor: SponsorGql };\ntype CreateFloorPlanResponse = { createFloorPlan: FloorPlanGql };\ntype UpdateFloorPlanResponse = { updateFloorPlan: FloorPlanGql };\ntype TicketTypesResponse = { ticketTypes: { total: number; items: TicketTypeGql[] } };\ntype PromoCodesResponse = { promoCodes: { total: number; items: PromoCodeGql[] } };\ntype ExhibitorsResponse = { exhibitors: { total: number; items: ExhibitorGql[] } };\ntype LeadsResponse = { leads: { total: number; items: LeadGql[] } };\ntype CheckInRecordsResponse = { checkInRecords: { total: number; items: CheckInRecordGql[] } };\ntype NetworkingProfilesResponse = { networkingProfiles: { total: number; items: NetworkingProfileGql[] } };\ntype RegistrationsResponse = { registrations: { total: number; items: RegistrationGql[] } };\ntype AttendeesResponse = { attendees: { total: number; items: AttendeeGql[] } };\ntype EventSessionsResponse = { eventSessions: { total: number; items: EventSessionGql[] } };\ntype SpeakersResponse = { speakers: { total: number; items: SpeakerGql[] } };\ntype SimpleEntity = {\n id: string;\n workspaceId: string;\n eventId?: string | null;\n name?: string | null;\n title?: string | null;\n status?: string | null;\n metadata?: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n};\ntype SimpleEntityResponse = { total: number; items: SimpleEntity[] };\ntype CheckInStationsResponse = { checkInStations: SimpleEntityResponse };\ntype NetworkingMatchesResponse = { networkingMatches: SimpleEntityResponse };\ntype MeetingsResponse = { meetings: SimpleEntityResponse };\ntype AnnouncementsResponse = { announcements: SimpleEntityResponse };\ntype WorkflowTemplatesResponse = { workflowTemplates: SimpleEntityResponse };\ntype AutomationRulesResponse = { automationRules: SimpleEntityResponse };\ntype CommunicationCampaignsResponse = { communicationCampaigns: SimpleEntityResponse };\ntype AnalyticsSnapshotsResponse = { analyticsSnapshots: SimpleEntityResponse };\ntype UpsertSimpleEntityResponse = { [key: string]: SimpleEntity };\n\nexport const DASHBOARD_SUMMARY_QUERY = gql`\n query EventfullymanagedDashboardSummary {\n dashboardSummary: eventfullyManagedDashboardSummary {\n totalEvents\n activeEvents\n totalRegistrations\n totalAttendees\n totalVenues\n totalSponsors\n upcomingSessions\n }\n }\n`;\n\nexport const EVENTS_QUERY = gql`\n query EventfullymanagedEvents($search: String, $limit: Int, $offset: Int) {\n events: eventfullyManagedEvents(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n }\n`;\n\nexport const VENUES_QUERY = gql`\n query EventfullymanagedVenues($search: String, $limit: Int, $offset: Int) {\n venues: eventfullyManagedVenues(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n }\n }\n }\n`;\n\nexport const VENUE_QUERY = gql`\n query EventfullymanagedVenue($id: ID!) {\n venue: eventfullyManagedVenue(id: $id) {\n id\n workspaceId\n name\n description\n addressLine1\n city\n state\n country\n postalCode\n capacity\n amenities\n pricing\n openingHours\n status\n metadata\n createdAt\n updatedAt\n }\n floorPlans: eventfullyManagedFloorPlans(venueId: $id, limit: 100, offset: 0) {\n total\n items {\n id\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n }\n }\n }\n`;\n\nexport const SPONSORS_QUERY = gql`\n query EventfullymanagedSponsors($search: String, $limit: Int, $offset: Int) {\n sponsors: eventfullyManagedSponsors(search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n createdAt\n }\n }\n }\n`;\n\nexport const REGISTRATIONS_QUERY = gql`\n query EventfullymanagedRegistrations($eventId: ID, $limit: Int, $offset: Int) {\n registrations: eventfullyManagedRegistrations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n currency\n registeredAt\n checkedInAt\n }\n }\n }\n`;\n\nexport const ATTENDEES_QUERY = gql`\n query EventfullymanagedAttendees($eventId: ID, $limit: Int, $offset: Int) {\n attendees: eventfullyManagedAttendees(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n fullName\n email\n phone\n company\n role\n metadata\n }\n }\n }\n`;\n\nexport const EVENT_SESSIONS_QUERY = gql`\n query EventfullymanagedEventSessions($eventId: ID, $limit: Int, $offset: Int) {\n eventSessions: eventfullyManagedEventSessions(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n venueId\n title\n sessionType\n track\n startsAt\n endsAt\n status\n }\n }\n }\n`;\n\nexport const SPEAKERS_QUERY = gql`\n query EventfullymanagedSpeakers($limit: Int, $offset: Int) {\n speakers: eventfullyManagedSpeakers(limit: $limit, offset: $offset) {\n total\n items {\n id\n fullName\n title\n organization\n email\n }\n }\n }\n`;\n\nexport const TICKET_TYPES_QUERY = gql`\n query EventfullymanagedTicketTypes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n ticketTypes: eventfullyManagedTicketTypes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const PROMO_CODES_QUERY = gql`\n query EventfullymanagedPromoCodes($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n promoCodes: eventfullyManagedPromoCodes(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n }\n }\n }\n`;\n\nexport const EXHIBITORS_QUERY = gql`\n query EventfullymanagedExhibitors($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n exhibitors: eventfullyManagedExhibitors(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n }\n }\n }\n`;\n\nexport const LEADS_QUERY = gql`\n query EventfullymanagedLeads($eventId: ID, $search: String, $limit: Int, $offset: Int) {\n leads: eventfullyManagedLeads(eventId: $eventId, search: $search, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_RECORDS_QUERY = gql`\n query EventfullymanagedCheckInRecords($eventId: ID, $limit: Int, $offset: Int) {\n checkInRecords: eventfullyManagedCheckInRecords(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n stationId\n attendeeId\n registrationId\n method\n status\n direction\n recordedAt\n metadata\n }\n }\n }\n`;\n\nexport const NETWORKING_PROFILES_QUERY = gql`\n query EventfullymanagedNetworkingProfiles($eventId: ID, $limit: Int, $offset: Int) {\n networkingProfiles: eventfullyManagedNetworkingProfiles(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n }\n }\n }\n`;\n\nexport const CHECKIN_STATIONS_QUERY = gql`\n query EventfullymanagedCheckInStations($eventId: ID, $limit: Int, $offset: Int) {\n checkInStations: eventfullyManagedCheckInStations(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const NETWORKING_MATCHES_QUERY = gql`\n query EventfullymanagedNetworkingMatches($eventId: ID, $limit: Int, $offset: Int) {\n networkingMatches: eventfullyManagedNetworkingMatches(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const MEETINGS_QUERY = gql`\n query EventfullymanagedMeetings($eventId: ID, $limit: Int, $offset: Int) {\n meetings: eventfullyManagedMeetings(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANNOUNCEMENTS_QUERY = gql`\n query EventfullymanagedAnnouncements($eventId: ID, $limit: Int, $offset: Int) {\n announcements: eventfullyManagedAnnouncements(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const WORKFLOW_TEMPLATES_QUERY = gql`\n query EventfullymanagedWorkflowTemplates($eventId: ID, $limit: Int, $offset: Int) {\n workflowTemplates: eventfullyManagedWorkflowTemplates(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const AUTOMATION_RULES_QUERY = gql`\n query EventfullymanagedAutomationRules($eventId: ID, $limit: Int, $offset: Int) {\n automationRules: eventfullyManagedAutomationRules(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const COMMUNICATION_CAMPAIGNS_QUERY = gql`\n query EventfullymanagedCommunicationCampaigns($eventId: ID, $limit: Int, $offset: Int) {\n communicationCampaigns: eventfullyManagedCommunicationCampaigns(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const ANALYTICS_SNAPSHOTS_QUERY = gql`\n query EventfullymanagedAnalyticsSnapshots($eventId: ID, $limit: Int, $offset: Int) {\n analyticsSnapshots: eventfullyManagedAnalyticsSnapshots(eventId: $eventId, limit: $limit, offset: $offset) {\n total\n items {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n }\n`;\n\nexport const CREATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedCreateVenue($input: EventfullyManagedVenueInput!) {\n createVenue: eventfullyManagedCreateVenue(input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const UPDATE_VENUE_MUTATION = gql`\n mutation EventfullymanagedUpdateVenue($id: ID!, $input: EventfullyManagedVenueInput!) {\n updateVenue: eventfullyManagedUpdateVenue(id: $id, input: $input) {\n id\n name\n description\n city\n state\n country\n capacity\n amenities\n status\n pricing\n openingHours\n metadata\n }\n }\n`;\n\nexport const CREATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedCreateSponsor($input: EventfullyManagedSponsorInput!) {\n createSponsor: eventfullyManagedCreateSponsor(input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const UPDATE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedUpdateSponsor($id: ID!, $input: EventfullyManagedSponsorInput!) {\n updateSponsor: eventfullyManagedUpdateSponsor(id: $id, input: $input) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\nexport const CREATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedCreateFloorPlan($input: EventfullyManagedFloorPlanInput!) {\n createFloorPlan: eventfullyManagedCreateFloorPlan(input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPDATE_FLOOR_PLAN_MUTATION = gql`\n mutation EventfullymanagedUpdateFloorPlan($id: ID!, $input: EventfullyManagedFloorPlanInput!) {\n updateFloorPlan: eventfullyManagedUpdateFloorPlan(id: $id, input: $input) {\n id\n venueId\n name\n imageUrl\n dimensions\n interactiveAreas\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const CREATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedCreateEvent($input: EventfullyManagedEventInput!) {\n createEvent: eventfullyManagedCreateEvent(input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPDATE_EVENT_MUTATION = gql`\n mutation EventfullymanagedUpdateEvent($id: ID!, $input: EventfullyManagedEventInput!) {\n updateEvent: eventfullyManagedUpdateEvent(id: $id, input: $input) {\n id\n name\n type\n status\n startAt\n endAt\n timezone\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const UPSERT_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnnouncement($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnnouncement: eventfullyManagedUpsertAnnouncement(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_WORKFLOW_TEMPLATE_MUTATION = gql`\n mutation EventfullymanagedUpsertWorkflowTemplate($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertWorkflowTemplate: eventfullyManagedUpsertWorkflowTemplate(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_AUTOMATION_RULE_MUTATION = gql`\n mutation EventfullymanagedUpsertAutomationRule($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAutomationRule: eventfullyManagedUpsertAutomationRule(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedUpsertCommunicationCampaign($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertCommunicationCampaign: eventfullyManagedUpsertCommunicationCampaign(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const UPSERT_ANALYTICS_SNAPSHOT_MUTATION = gql`\n mutation EventfullymanagedUpsertAnalyticsSnapshot($id: ID, $input: EventfullyManagedSimpleEntityInput!) {\n upsertAnalyticsSnapshot: eventfullyManagedUpsertAnalyticsSnapshot(id: $id, input: $input) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const useDashboardSummaryQuery = () => useQuery<DashboardSummaryResponse>(DASHBOARD_SUMMARY_QUERY);\nexport const useEventsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<EventsResponse, { search?: string; limit?: number; offset?: number }>(EVENTS_QUERY, { variables });\nexport const useVenuesQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<VenuesResponse, { search?: string; limit?: number; offset?: number }>(VENUES_QUERY, { variables });\nexport const useVenueQuery = (id: string) =>\n useQuery<VenueResponse, { id: string }>(VENUE_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorsQuery = (variables: { search?: string; limit?: number; offset?: number }) =>\n useQuery<SponsorsResponse, { search?: string; limit?: number; offset?: number }>(SPONSORS_QUERY, { variables });\nexport const useRegistrationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<RegistrationsResponse, { eventId?: string; limit?: number; offset?: number }>(REGISTRATIONS_QUERY, {\n variables,\n });\nexport const useAttendeesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AttendeesResponse, { eventId?: string; limit?: number; offset?: number }>(ATTENDEES_QUERY, { variables });\nexport const useEventSessionsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<EventSessionsResponse, { eventId?: string; limit?: number; offset?: number }>(EVENT_SESSIONS_QUERY, {\n variables,\n });\nexport const useSpeakersQuery = (variables: { limit?: number; offset?: number }) =>\n useQuery<SpeakersResponse, { limit?: number; offset?: number }>(SPEAKERS_QUERY, { variables });\nexport const useTicketTypesQuery = (variables: {\n eventId?: string;\n search?: string;\n limit?: number;\n offset?: number;\n}) =>\n useQuery<TicketTypesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n TICKET_TYPES_QUERY,\n {\n variables,\n }\n );\nexport const usePromoCodesQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<PromoCodesResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n PROMO_CODES_QUERY,\n {\n variables,\n }\n );\nexport const useExhibitorsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<ExhibitorsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(\n EXHIBITORS_QUERY,\n {\n variables,\n }\n );\nexport const useLeadsQuery = (variables: { eventId?: string; search?: string; limit?: number; offset?: number }) =>\n useQuery<LeadsResponse, { eventId?: string; search?: string; limit?: number; offset?: number }>(LEADS_QUERY, {\n variables,\n });\nexport const useCheckInStationsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInStationsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_STATIONS_QUERY, {\n variables,\n });\nexport const useCheckInRecordsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CheckInRecordsResponse, { eventId?: string; limit?: number; offset?: number }>(CHECKIN_RECORDS_QUERY, {\n variables,\n });\nexport const useNetworkingProfilesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingProfilesResponse, { eventId?: string; limit?: number; offset?: number }>(\n NETWORKING_PROFILES_QUERY,\n {\n variables,\n }\n );\nexport const useNetworkingMatchesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<NetworkingMatchesResponse, { eventId?: string; limit?: number; offset?: number }>(NETWORKING_MATCHES_QUERY, {\n variables,\n });\nexport const useMeetingsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<MeetingsResponse, { eventId?: string; limit?: number; offset?: number }>(MEETINGS_QUERY, { variables });\nexport const useAnnouncementsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnnouncementsResponse, { eventId?: string; limit?: number; offset?: number }>(ANNOUNCEMENTS_QUERY, {\n variables,\n });\nexport const useWorkflowTemplatesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<WorkflowTemplatesResponse, { eventId?: string; limit?: number; offset?: number }>(WORKFLOW_TEMPLATES_QUERY, {\n variables,\n });\nexport const useAutomationRulesQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AutomationRulesResponse, { eventId?: string; limit?: number; offset?: number }>(AUTOMATION_RULES_QUERY, {\n variables,\n });\nexport const useCommunicationCampaignsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<CommunicationCampaignsResponse, { eventId?: string; limit?: number; offset?: number }>(\n COMMUNICATION_CAMPAIGNS_QUERY,\n {\n variables,\n }\n );\nexport const useAnalyticsSnapshotsQuery = (variables: { eventId?: string; limit?: number; offset?: number }) =>\n useQuery<AnalyticsSnapshotsResponse, { eventId?: string; limit?: number; offset?: number }>(\n ANALYTICS_SNAPSHOTS_QUERY,\n {\n variables,\n }\n );\n\nexport const useCreateVenueMutation = () =>\n useMutation<CreateVenueResponse, { input: Record<string, unknown> }>(CREATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useUpdateVenueMutation = () =>\n useMutation<UpdateVenueResponse, { id: string; input: Record<string, unknown> }>(UPDATE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useCreateSponsorMutation = () =>\n useMutation<CreateSponsorResponse, { input: Record<string, unknown> }>(CREATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useUpdateSponsorMutation = () =>\n useMutation<UpdateSponsorResponse, { id: string; input: Record<string, unknown> }>(UPDATE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\nexport const useCreateFloorPlanMutation = () =>\n useMutation<CreateFloorPlanResponse, { input: Record<string, unknown> }>(CREATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUpdateFloorPlanMutation = () =>\n useMutation<UpdateFloorPlanResponse, { id: string; input: Record<string, unknown> }>(UPDATE_FLOOR_PLAN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEventMutation = () =>\n useMutation<{ createEvent: EventGql }, { input: Record<string, unknown> }>(CREATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateEventMutation = () =>\n useMutation<{ updateEvent: EventGql }, { id: string; input: Record<string, unknown> }>(UPDATE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpsertAnnouncementMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANNOUNCEMENT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n }\n );\nexport const useUpsertWorkflowTemplateMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_WORKFLOW_TEMPLATE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: WORKFLOW_TEMPLATES_QUERY }],\n }\n );\nexport const useUpsertAutomationRuleMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_AUTOMATION_RULE_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AUTOMATION_RULES_QUERY }],\n }\n );\nexport const useUpsertCommunicationCampaignMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_COMMUNICATION_CAMPAIGN_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n }\n );\nexport const useUpsertAnalyticsSnapshotMutation = () =>\n useMutation<UpsertSimpleEntityResponse, { id?: string; input: Record<string, unknown> }>(\n UPSERT_ANALYTICS_SNAPSHOT_MUTATION,\n {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANALYTICS_SNAPSHOTS_QUERY }],\n }\n );\n\n// ---------------------------------------------------------------------------\n// Single-entity fetch queries (edit-form hydration).\n//\n// The supergraph only exposes single-entity reads for Event, Sponsor and Venue\n// (`eventfullyManagedEvent` / `eventfullyManagedSponsor` / `eventfullyManagedVenue`).\n// Edit forms for every OTHER entity derive their initial state from the matching\n// LIST query (see SponsorFormPage for the `.items.find(id)` pattern) because the\n// backend has no by-id resolver for them.\n// ---------------------------------------------------------------------------\n\nexport const EVENT_QUERY = gql`\n query EventfullymanagedEvent($id: ID!) {\n event: eventfullyManagedEvent(id: $id) {\n id\n workspaceId\n name\n description\n type\n status\n timezone\n startAt\n endAt\n visibility\n capacity\n metadata\n }\n }\n`;\n\nexport const SPONSOR_QUERY = gql`\n query EventfullymanagedSponsor($id: ID!) {\n sponsor: eventfullyManagedSponsor(id: $id) {\n id\n eventId\n name\n level\n logoUrl\n website\n contactName\n contactEmail\n contactPhone\n metrics\n metadata\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Entity tags (inline tagInfo, NOT the federated `tag {}` field).\n// ---------------------------------------------------------------------------\n\nexport const ENTITY_TAGS_QUERY = gql`\n query EventfullymanagedEntityTags($input: EventfullyManagedGetEntityTagsInput!) {\n eventfullyManagedEntityTags(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const AVAILABLE_TAGS_QUERY = gql`\n query EventfullymanagedAvailableTags($limit: Int) {\n availableEventfullyManagedTags(limit: $limit) {\n id\n key\n label\n color\n }\n }\n`;\n\nexport const TAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedTagEntity($input: EventfullyManagedTagEntityInput!) {\n tagEventfullyManagedEntity(input: $input) {\n id\n tagId\n entityId\n entityType\n source\n tagInfo {\n id\n key\n label\n color\n }\n }\n }\n`;\n\nexport const UNTAG_ENTITY_MUTATION = gql`\n mutation EventfullymanagedUntagEntity($input: EventfullyManagedUntagEntityInput!) {\n untagEventfullyManagedEntity(input: $input)\n }\n`;\n\nexport const CREATE_ENTITY_TAG_MUTATION = gql`\n mutation EventfullymanagedCreateEntityTag($input: EventfullyManagedCreateEntityTagInput!) {\n createEventfullyManagedEntityTag(input: $input) {\n id\n key\n label\n color\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// EventSession — create / update (no backend delete resolver).\n// ---------------------------------------------------------------------------\n\nconst EVENT_SESSION_FIELDS = `\n id\n workspaceId\n eventId\n venueId\n title\n description\n sessionType\n track\n startsAt\n endsAt\n capacity\n status\n metadata\n`;\n\nexport const CREATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedCreateEventSession($input: EventfullyManagedEventSessionInput!) {\n createEventSession: eventfullyManagedCreateEventSession(input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EVENT_SESSION_MUTATION = gql`\n mutation EventfullymanagedUpdateEventSession($id: ID!, $input: EventfullyManagedEventSessionInput!) {\n updateEventSession: eventfullyManagedUpdateEventSession(id: $id, input: $input) {\n ${EVENT_SESSION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Speaker — create / update (no backend delete resolver).\n// ---------------------------------------------------------------------------\n\nconst SPEAKER_FIELDS = `\n id\n workspaceId\n fullName\n title\n organization\n email\n phone\n bio\n avatarUrl\n socialLinks\n`;\n\nexport const CREATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedCreateSpeaker($input: EventfullyManagedSpeakerInput!) {\n createSpeaker: eventfullyManagedCreateSpeaker(input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SPEAKER_MUTATION = gql`\n mutation EventfullymanagedUpdateSpeaker($id: ID!, $input: EventfullyManagedSpeakerInput!) {\n updateSpeaker: eventfullyManagedUpdateSpeaker(id: $id, input: $input) {\n ${SPEAKER_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// TicketType — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst TICKET_TYPE_FIELDS = `\n id\n workspaceId\n eventId\n name\n description\n price\n currency\n capacity\n soldCount\n salesStartAt\n salesEndAt\n isActive\n metadata\n`;\n\nexport const CREATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedCreateTicketType($input: EventfullyManagedTicketTypeInput!) {\n createTicketType: eventfullyManagedCreateTicketType(input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedUpdateTicketType($id: ID!, $input: EventfullyManagedTicketTypeInput!) {\n updateTicketType: eventfullyManagedUpdateTicketType(id: $id, input: $input) {\n ${TICKET_TYPE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_TICKET_TYPE_MUTATION = gql`\n mutation EventfullymanagedDeleteTicketType($id: ID!) {\n deleteTicketType: eventfullyManagedDeleteTicketType(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// PromoCode — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst PROMO_CODE_FIELDS = `\n id\n workspaceId\n eventId\n code\n description\n discountType\n discountValue\n maxUses\n usedCount\n startsAt\n endsAt\n isActive\n metadata\n`;\n\nexport const CREATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedCreatePromoCode($input: EventfullyManagedPromoCodeInput!) {\n createPromoCode: eventfullyManagedCreatePromoCode(input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedUpdatePromoCode($id: ID!, $input: EventfullyManagedPromoCodeInput!) {\n updatePromoCode: eventfullyManagedUpdatePromoCode(id: $id, input: $input) {\n ${PROMO_CODE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_PROMO_CODE_MUTATION = gql`\n mutation EventfullymanagedDeletePromoCode($id: ID!) {\n deletePromoCode: eventfullyManagedDeletePromoCode(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Registration — create / update (no backend delete resolver).\n// ---------------------------------------------------------------------------\n\nconst REGISTRATION_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n ticketTypeId\n status\n quantity\n totalAmount\n currency\n registeredAt\n checkedInAt\n metadata\n`;\n\nexport const CREATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedCreateRegistration($input: EventfullyManagedRegistrationInput!) {\n createRegistration: eventfullyManagedCreateRegistration(input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_REGISTRATION_MUTATION = gql`\n mutation EventfullymanagedUpdateRegistration($id: ID!, $input: EventfullyManagedRegistrationInput!) {\n updateRegistration: eventfullyManagedUpdateRegistration(id: $id, input: $input) {\n ${REGISTRATION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Attendee — create / update (no backend delete resolver).\n// ---------------------------------------------------------------------------\n\nconst ATTENDEE_FIELDS = `\n id\n workspaceId\n eventId\n fullName\n email\n phone\n company\n role\n profile\n metadata\n`;\n\nexport const CREATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedCreateAttendee($input: EventfullyManagedAttendeeInput!) {\n createAttendee: eventfullyManagedCreateAttendee(input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_ATTENDEE_MUTATION = gql`\n mutation EventfullymanagedUpdateAttendee($id: ID!, $input: EventfullyManagedAttendeeInput!) {\n updateAttendee: eventfullyManagedUpdateAttendee(id: $id, input: $input) {\n ${ATTENDEE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Exhibitor — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst EXHIBITOR_FIELDS = `\n id\n workspaceId\n eventId\n name\n boothCode\n category\n contactName\n contactEmail\n status\n metadata\n`;\n\nexport const CREATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedCreateExhibitor($input: EventfullyManagedExhibitorInput!) {\n createExhibitor: eventfullyManagedCreateExhibitor(input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedUpdateExhibitor($id: ID!, $input: EventfullyManagedExhibitorInput!) {\n updateExhibitor: eventfullyManagedUpdateExhibitor(id: $id, input: $input) {\n ${EXHIBITOR_FIELDS}\n }\n }\n`;\n\nexport const DELETE_EXHIBITOR_MUTATION = gql`\n mutation EventfullymanagedDeleteExhibitor($id: ID!) {\n deleteExhibitor: eventfullyManagedDeleteExhibitor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Lead — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst LEAD_FIELDS = `\n id\n workspaceId\n eventId\n sponsorId\n exhibitorId\n attendeeName\n attendeeEmail\n score\n status\n notes\n capturedAt\n metadata\n`;\n\nexport const CREATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedCreateLead($input: EventfullyManagedLeadInput!) {\n createLead: eventfullyManagedCreateLead(input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LEAD_MUTATION = gql`\n mutation EventfullymanagedUpdateLead($id: ID!, $input: EventfullyManagedLeadInput!) {\n updateLead: eventfullyManagedUpdateLead(id: $id, input: $input) {\n ${LEAD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_LEAD_MUTATION = gql`\n mutation EventfullymanagedDeleteLead($id: ID!) {\n deleteLead: eventfullyManagedDeleteLead(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInStation — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_STATION_FIELDS = `\n id\n workspaceId\n eventId\n name\n code\n location\n isActive\n kioskConfig\n metadata\n`;\n\nexport const CREATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInStation($input: EventfullyManagedCheckInStationInput!) {\n createCheckInStation: eventfullyManagedCreateCheckInStation(input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInStation($id: ID!, $input: EventfullyManagedCheckInStationInput!) {\n updateCheckInStation: eventfullyManagedUpdateCheckInStation(id: $id, input: $input) {\n ${CHECKIN_STATION_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_STATION_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInStation($id: ID!) {\n deleteCheckInStation: eventfullyManagedDeleteCheckInStation(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// CheckInRecord — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst CHECKIN_RECORD_FIELDS = `\n id\n workspaceId\n eventId\n stationId\n attendeeId\n registrationId\n method\n status\n direction\n recordedAt\n metadata\n`;\n\nexport const CREATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedCreateCheckInRecord($input: EventfullyManagedCheckInRecordInput!) {\n createCheckInRecord: eventfullyManagedCreateCheckInRecord(input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedUpdateCheckInRecord($id: ID!, $input: EventfullyManagedCheckInRecordInput!) {\n updateCheckInRecord: eventfullyManagedUpdateCheckInRecord(id: $id, input: $input) {\n ${CHECKIN_RECORD_FIELDS}\n }\n }\n`;\n\nexport const DELETE_CHECKIN_RECORD_MUTATION = gql`\n mutation EventfullymanagedDeleteCheckInRecord($id: ID!) {\n deleteCheckInRecord: eventfullyManagedDeleteCheckInRecord(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingProfile — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_PROFILE_FIELDS = `\n id\n workspaceId\n eventId\n attendeeId\n interests\n lookingFor\n industry\n role\n visibility\n metadata\n`;\n\nexport const CREATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingProfile($input: EventfullyManagedNetworkingProfileInput!) {\n createNetworkingProfile: eventfullyManagedCreateNetworkingProfile(input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingProfile($id: ID!, $input: EventfullyManagedNetworkingProfileInput!) {\n updateNetworkingProfile: eventfullyManagedUpdateNetworkingProfile(id: $id, input: $input) {\n ${NETWORKING_PROFILE_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_PROFILE_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingProfile($id: ID!) {\n deleteNetworkingProfile: eventfullyManagedDeleteNetworkingProfile(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// NetworkingMatch — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst NETWORKING_MATCH_FIELDS = `\n id\n workspaceId\n eventId\n sourceProfileId\n targetProfileId\n score\n reason\n status\n metadata\n`;\n\nexport const CREATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedCreateNetworkingMatch($input: EventfullyManagedNetworkingMatchInput!) {\n createNetworkingMatch: eventfullyManagedCreateNetworkingMatch(input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedUpdateNetworkingMatch($id: ID!, $input: EventfullyManagedNetworkingMatchInput!) {\n updateNetworkingMatch: eventfullyManagedUpdateNetworkingMatch(id: $id, input: $input) {\n ${NETWORKING_MATCH_FIELDS}\n }\n }\n`;\n\nexport const DELETE_NETWORKING_MATCH_MUTATION = gql`\n mutation EventfullymanagedDeleteNetworkingMatch($id: ID!) {\n deleteNetworkingMatch: eventfullyManagedDeleteNetworkingMatch(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Meeting — create / update / delete.\n// ---------------------------------------------------------------------------\n\nconst MEETING_FIELDS = `\n id\n workspaceId\n eventId\n title\n startsAt\n endsAt\n location\n notes\n sourceProfileId\n targetProfileId\n status\n metadata\n`;\n\nexport const CREATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedCreateMeeting($input: EventfullyManagedMeetingInput!) {\n createMeeting: eventfullyManagedCreateMeeting(input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_MEETING_MUTATION = gql`\n mutation EventfullymanagedUpdateMeeting($id: ID!, $input: EventfullyManagedMeetingInput!) {\n updateMeeting: eventfullyManagedUpdateMeeting(id: $id, input: $input) {\n ${MEETING_FIELDS}\n }\n }\n`;\n\nexport const DELETE_MEETING_MUTATION = gql`\n mutation EventfullymanagedDeleteMeeting($id: ID!) {\n deleteMeeting: eventfullyManagedDeleteMeeting(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Delete-only for existing create/update entities (Event, Venue, Sponsor).\n// FloorPlan has NO backend delete resolver, so no delete hook is exposed for it.\n// ---------------------------------------------------------------------------\n\nexport const DELETE_EVENT_MUTATION = gql`\n mutation EventfullymanagedDeleteEvent($id: ID!) {\n deleteEvent: eventfullyManagedDeleteEvent(id: $id)\n }\n`;\n\nexport const DELETE_VENUE_MUTATION = gql`\n mutation EventfullymanagedDeleteVenue($id: ID!) {\n deleteVenue: eventfullyManagedDeleteVenue(id: $id)\n }\n`;\n\nexport const DELETE_SPONSOR_MUTATION = gql`\n mutation EventfullymanagedDeleteSponsor($id: ID!) {\n deleteSponsor: eventfullyManagedDeleteSponsor(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Communications — publish announcement / send campaign.\n// ---------------------------------------------------------------------------\n\nexport const PUBLISH_ANNOUNCEMENT_MUTATION = gql`\n mutation EventfullymanagedPublishAnnouncement($id: ID!) {\n publishAnnouncement: eventfullyManagedPublishAnnouncement(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\nexport const SEND_COMMUNICATION_CAMPAIGN_MUTATION = gql`\n mutation EventfullymanagedSendCommunicationCampaign($id: ID!) {\n sendCommunicationCampaign: eventfullyManagedSendCommunicationCampaign(id: $id) {\n id\n workspaceId\n eventId\n name\n title\n status\n metadata\n createdAt\n updatedAt\n }\n }\n`;\n\n// ===========================================================================\n// Response type aliases\n// ===========================================================================\n\ntype EventDetailResponse = { event: EventDetailGql | null };\ntype SponsorDetailResponse = { sponsor: SponsorGql | null };\ntype EntityTagsResponse = { eventfullyManagedEntityTags: EntityTagAssignmentGql[] };\ntype AvailableTagsResponse = { availableEventfullyManagedTags: AvailableTagGql[] };\ntype TagEntityResponse = { tagEventfullyManagedEntity: EntityTagAssignmentGql };\ntype UntagEntityResponse = { untagEventfullyManagedEntity: boolean };\ntype CreateEntityTagResponse = { createEventfullyManagedEntityTag: AvailableTagGql };\n\ntype CreateEventSessionResponse = { createEventSession: EventSessionGql };\ntype UpdateEventSessionResponse = { updateEventSession: EventSessionGql };\ntype CreateSpeakerResponse = { createSpeaker: SpeakerGql };\ntype UpdateSpeakerResponse = { updateSpeaker: SpeakerGql };\ntype CreateTicketTypeResponse = { createTicketType: TicketTypeGql };\ntype UpdateTicketTypeResponse = { updateTicketType: TicketTypeGql };\ntype DeleteTicketTypeResponse = { deleteTicketType: boolean };\ntype CreatePromoCodeResponse = { createPromoCode: PromoCodeGql };\ntype UpdatePromoCodeResponse = { updatePromoCode: PromoCodeGql };\ntype DeletePromoCodeResponse = { deletePromoCode: boolean };\ntype CreateRegistrationResponse = { createRegistration: RegistrationGql };\ntype UpdateRegistrationResponse = { updateRegistration: RegistrationGql };\ntype CreateAttendeeResponse = { createAttendee: AttendeeGql };\ntype UpdateAttendeeResponse = { updateAttendee: AttendeeGql };\ntype CreateExhibitorResponse = { createExhibitor: ExhibitorGql };\ntype UpdateExhibitorResponse = { updateExhibitor: ExhibitorGql };\ntype DeleteExhibitorResponse = { deleteExhibitor: boolean };\ntype CreateLeadResponse = { createLead: LeadGql };\ntype UpdateLeadResponse = { updateLead: LeadGql };\ntype DeleteLeadResponse = { deleteLead: boolean };\ntype CreateCheckInStationResponse = { createCheckInStation: CheckInStationGql };\ntype UpdateCheckInStationResponse = { updateCheckInStation: CheckInStationGql };\ntype DeleteCheckInStationResponse = { deleteCheckInStation: boolean };\ntype CreateCheckInRecordResponse = { createCheckInRecord: CheckInRecordGql };\ntype UpdateCheckInRecordResponse = { updateCheckInRecord: CheckInRecordGql };\ntype DeleteCheckInRecordResponse = { deleteCheckInRecord: boolean };\ntype CreateNetworkingProfileResponse = { createNetworkingProfile: NetworkingProfileGql };\ntype UpdateNetworkingProfileResponse = { updateNetworkingProfile: NetworkingProfileGql };\ntype DeleteNetworkingProfileResponse = { deleteNetworkingProfile: boolean };\ntype CreateNetworkingMatchResponse = { createNetworkingMatch: NetworkingMatchGql };\ntype UpdateNetworkingMatchResponse = { updateNetworkingMatch: NetworkingMatchGql };\ntype DeleteNetworkingMatchResponse = { deleteNetworkingMatch: boolean };\ntype CreateMeetingResponse = { createMeeting: MeetingGql };\ntype UpdateMeetingResponse = { updateMeeting: MeetingGql };\ntype DeleteMeetingResponse = { deleteMeeting: boolean };\ntype DeleteEventResponse = { deleteEvent: boolean };\ntype DeleteVenueResponse = { deleteVenue: boolean };\ntype DeleteSponsorResponse = { deleteSponsor: boolean };\ntype PublishAnnouncementResponse = { publishAnnouncement: SimpleEntityGql };\ntype SendCommunicationCampaignResponse = { sendCommunicationCampaign: SimpleEntityGql };\n\ntype CreateVars = { input: Record<string, unknown> };\ntype UpdateVars = { id: string; input: Record<string, unknown> };\ntype IdVar = { id: string };\n\n// ===========================================================================\n// Single-entity + tag query hooks\n// ===========================================================================\n\nexport const useEventQuery = (id: string) =>\n useQuery<EventDetailResponse, IdVar>(EVENT_QUERY, { variables: { id }, skip: !id });\nexport const useSponsorQuery = (id: string) =>\n useQuery<SponsorDetailResponse, IdVar>(SPONSOR_QUERY, { variables: { id }, skip: !id });\n\nexport const useEntityTagsQuery = (variables: { input: { entityType: string; entityId: string } }) =>\n useQuery<EntityTagsResponse, { input: { entityType: string; entityId: string } }>(ENTITY_TAGS_QUERY, {\n variables,\n skip: !variables.input.entityId,\n });\nexport const useAvailableTagsQuery = (variables: { limit?: number } = {}) =>\n useQuery<AvailableTagsResponse, { limit?: number }>(AVAILABLE_TAGS_QUERY, { variables });\n\n// ===========================================================================\n// Tag mutation hooks\n// ===========================================================================\n\nexport const useTagEntityMutation = () =>\n useMutation<TagEntityResponse, { input: Record<string, unknown> }>(TAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useUntagEntityMutation = () =>\n useMutation<UntagEntityResponse, { input: Record<string, unknown> }>(UNTAG_ENTITY_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n });\nexport const useCreateEntityTagMutation = () =>\n useMutation<CreateEntityTagResponse, { input: Record<string, unknown> }>(CREATE_ENTITY_TAG_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: AVAILABLE_TAGS_QUERY }],\n });\n\n// ===========================================================================\n// CRUD mutation hooks\n// ===========================================================================\n\nexport const useCreateEventSessionMutation = () =>\n useMutation<CreateEventSessionResponse, CreateVars>(CREATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\nexport const useUpdateEventSessionMutation = () =>\n useMutation<UpdateEventSessionResponse, UpdateVars>(UPDATE_EVENT_SESSION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENT_SESSIONS_QUERY }],\n });\n\nexport const useCreateSpeakerMutation = () =>\n useMutation<CreateSpeakerResponse, CreateVars>(CREATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\nexport const useUpdateSpeakerMutation = () =>\n useMutation<UpdateSpeakerResponse, UpdateVars>(UPDATE_SPEAKER_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPEAKERS_QUERY }],\n });\n\nexport const useCreateTicketTypeMutation = () =>\n useMutation<CreateTicketTypeResponse, CreateVars>(CREATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useUpdateTicketTypeMutation = () =>\n useMutation<UpdateTicketTypeResponse, UpdateVars>(UPDATE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\nexport const useDeleteTicketTypeMutation = () =>\n useMutation<DeleteTicketTypeResponse, IdVar>(DELETE_TICKET_TYPE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: TICKET_TYPES_QUERY }],\n });\n\nexport const useCreatePromoCodeMutation = () =>\n useMutation<CreatePromoCodeResponse, CreateVars>(CREATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useUpdatePromoCodeMutation = () =>\n useMutation<UpdatePromoCodeResponse, UpdateVars>(UPDATE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\nexport const useDeletePromoCodeMutation = () =>\n useMutation<DeletePromoCodeResponse, IdVar>(DELETE_PROMO_CODE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: PROMO_CODES_QUERY }],\n });\n\nexport const useCreateRegistrationMutation = () =>\n useMutation<CreateRegistrationResponse, CreateVars>(CREATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateRegistrationMutation = () =>\n useMutation<UpdateRegistrationResponse, UpdateVars>(UPDATE_REGISTRATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: REGISTRATIONS_QUERY }],\n });\n\nexport const useCreateAttendeeMutation = () =>\n useMutation<CreateAttendeeResponse, CreateVars>(CREATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useUpdateAttendeeMutation = () =>\n useMutation<UpdateAttendeeResponse, UpdateVars>(UPDATE_ATTENDEE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ATTENDEES_QUERY }],\n });\n\nexport const useCreateExhibitorMutation = () =>\n useMutation<CreateExhibitorResponse, CreateVars>(CREATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useUpdateExhibitorMutation = () =>\n useMutation<UpdateExhibitorResponse, UpdateVars>(UPDATE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\nexport const useDeleteExhibitorMutation = () =>\n useMutation<DeleteExhibitorResponse, IdVar>(DELETE_EXHIBITOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EXHIBITORS_QUERY }],\n });\n\nexport const useCreateLeadMutation = () =>\n useMutation<CreateLeadResponse, CreateVars>(CREATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useUpdateLeadMutation = () =>\n useMutation<UpdateLeadResponse, UpdateVars>(UPDATE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\nexport const useDeleteLeadMutation = () =>\n useMutation<DeleteLeadResponse, IdVar>(DELETE_LEAD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: LEADS_QUERY }],\n });\n\nexport const useCreateCheckInStationMutation = () =>\n useMutation<CreateCheckInStationResponse, CreateVars>(CREATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useUpdateCheckInStationMutation = () =>\n useMutation<UpdateCheckInStationResponse, UpdateVars>(UPDATE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\nexport const useDeleteCheckInStationMutation = () =>\n useMutation<DeleteCheckInStationResponse, IdVar>(DELETE_CHECKIN_STATION_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_STATIONS_QUERY }],\n });\n\nexport const useCreateCheckInRecordMutation = () =>\n useMutation<CreateCheckInRecordResponse, CreateVars>(CREATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useUpdateCheckInRecordMutation = () =>\n useMutation<UpdateCheckInRecordResponse, UpdateVars>(UPDATE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\nexport const useDeleteCheckInRecordMutation = () =>\n useMutation<DeleteCheckInRecordResponse, IdVar>(DELETE_CHECKIN_RECORD_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: CHECKIN_RECORDS_QUERY }],\n });\n\nexport const useCreateNetworkingProfileMutation = () =>\n useMutation<CreateNetworkingProfileResponse, CreateVars>(CREATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useUpdateNetworkingProfileMutation = () =>\n useMutation<UpdateNetworkingProfileResponse, UpdateVars>(UPDATE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\nexport const useDeleteNetworkingProfileMutation = () =>\n useMutation<DeleteNetworkingProfileResponse, IdVar>(DELETE_NETWORKING_PROFILE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_PROFILES_QUERY }],\n });\n\nexport const useCreateNetworkingMatchMutation = () =>\n useMutation<CreateNetworkingMatchResponse, CreateVars>(CREATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useUpdateNetworkingMatchMutation = () =>\n useMutation<UpdateNetworkingMatchResponse, UpdateVars>(UPDATE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\nexport const useDeleteNetworkingMatchMutation = () =>\n useMutation<DeleteNetworkingMatchResponse, IdVar>(DELETE_NETWORKING_MATCH_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: NETWORKING_MATCHES_QUERY }],\n });\n\nexport const useCreateMeetingMutation = () =>\n useMutation<CreateMeetingResponse, CreateVars>(CREATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useUpdateMeetingMutation = () =>\n useMutation<UpdateMeetingResponse, UpdateVars>(UPDATE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\nexport const useDeleteMeetingMutation = () =>\n useMutation<DeleteMeetingResponse, IdVar>(DELETE_MEETING_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: MEETINGS_QUERY }],\n });\n\nexport const useDeleteEventMutation = () =>\n useMutation<DeleteEventResponse, IdVar>(DELETE_EVENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: EVENTS_QUERY }, { query: DASHBOARD_SUMMARY_QUERY }],\n });\nexport const useDeleteVenueMutation = () =>\n useMutation<DeleteVenueResponse, IdVar>(DELETE_VENUE_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: VENUES_QUERY }],\n });\nexport const useDeleteSponsorMutation = () =>\n useMutation<DeleteSponsorResponse, IdVar>(DELETE_SPONSOR_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: SPONSORS_QUERY }],\n });\n\nexport const usePublishAnnouncementMutation = () =>\n useMutation<PublishAnnouncementResponse, IdVar>(PUBLISH_ANNOUNCEMENT_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: ANNOUNCEMENTS_QUERY }],\n });\nexport const useSendCommunicationCampaignMutation = () =>\n useMutation<SendCommunicationCampaignResponse, IdVar>(SEND_COMMUNICATION_CAMPAIGN_MUTATION, {\n errorPolicy: 'all',\n onError: onMutationError,\n refetchQueries: [{ query: COMMUNICATION_CAMPAIGNS_QUERY }],\n });\n"],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { useCallback as e, useId as t, useState as n } from "react";
2
+ import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ import { Eye as o, MoreVertical as s, Pencil as c, Trash2 as l } from "lucide-react";
4
+ import { AlertDialog as u, AlertDialogAction as d, AlertDialogCancel as f, AlertDialogContent as p, AlertDialogDescription as m, AlertDialogFooter as h, AlertDialogHeader as g, AlertDialogTitle as _, DropdownMenu as v, DropdownMenuContent as y, DropdownMenuItem as b, DropdownMenuSeparator as x, DropdownMenuTrigger as S, buttonVariants as C } from "@burdenoff/fe-libs/ui";
5
+ import { useExclusiveMenu as w } from "@burdenoff/fe-libs/shared/hooks";
6
+ //#region src/eventfullymanaged/components/ActionMenu.tsx
7
+ var T = "text-status-error-text focus:text-status-error-text";
8
+ function E({ ariaLabel: E, onView: D, onEdit: O, onDelete: k, entityName: A, deleteLabel: j = "Delete", extraItems: M = [], align: N = "end", trigger: P }) {
9
+ let F = t(), [I, L] = n(!1), [R, z] = n(!1), [B, V] = n(!1);
10
+ w(F, I, e(() => L(!1), []));
11
+ let H = async () => {
12
+ if (k) try {
13
+ V(!0), await k(), z(!1);
14
+ } catch {} finally {
15
+ V(!1);
16
+ }
17
+ }, U = P ?? /* @__PURE__ */ i("button", {
18
+ type: "button",
19
+ className: "inline-flex size-9 items-center justify-center rounded-button text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus max-md:size-11",
20
+ "aria-label": E,
21
+ children: /* @__PURE__ */ i(s, {
22
+ className: "size-4",
23
+ "aria-hidden": "true"
24
+ })
25
+ });
26
+ return D || O || M.length > 0 || k ? /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ a(v, {
27
+ open: I,
28
+ onOpenChange: L,
29
+ children: [/* @__PURE__ */ i(S, {
30
+ asChild: !0,
31
+ onClick: (e) => e.stopPropagation(),
32
+ onKeyDown: (e) => e.stopPropagation(),
33
+ children: U
34
+ }), /* @__PURE__ */ a(y, {
35
+ align: N,
36
+ className: "min-w-44",
37
+ onClick: (e) => e.stopPropagation(),
38
+ onKeyDown: (e) => e.stopPropagation(),
39
+ children: [
40
+ D ? /* @__PURE__ */ a(b, {
41
+ className: "cursor-pointer gap-2",
42
+ onSelect: () => D(),
43
+ children: [/* @__PURE__ */ i(o, {
44
+ className: "size-4 shrink-0",
45
+ "aria-hidden": "true"
46
+ }), /* @__PURE__ */ i("span", { children: "View" })]
47
+ }) : null,
48
+ O ? /* @__PURE__ */ a(b, {
49
+ className: "cursor-pointer gap-2",
50
+ onSelect: () => O(),
51
+ children: [/* @__PURE__ */ i(c, {
52
+ className: "size-4 shrink-0",
53
+ "aria-hidden": "true"
54
+ }), /* @__PURE__ */ i("span", { children: "Edit" })]
55
+ }) : null,
56
+ M.map((e) => {
57
+ let t = e.icon;
58
+ return /* @__PURE__ */ a("div", {
59
+ className: "contents",
60
+ children: [e.separatorBefore ? /* @__PURE__ */ i(x, {}) : null, /* @__PURE__ */ a(b, {
61
+ disabled: e.disabled,
62
+ onSelect: () => e.onSelect(),
63
+ className: `cursor-pointer gap-2 ${e.variant === "danger" ? T : ""}`,
64
+ children: [t ? /* @__PURE__ */ i(t, {
65
+ className: "size-4 shrink-0",
66
+ "aria-hidden": "true"
67
+ }) : null, /* @__PURE__ */ i("span", {
68
+ className: "min-w-0 truncate",
69
+ children: e.label
70
+ })]
71
+ })]
72
+ }, e.key);
73
+ }),
74
+ k ? /* @__PURE__ */ a("div", {
75
+ className: "contents",
76
+ children: [D || O || M.length > 0 ? /* @__PURE__ */ i(x, {}) : null, /* @__PURE__ */ a(b, {
77
+ className: `cursor-pointer gap-2 ${T}`,
78
+ onSelect: () => z(!0),
79
+ children: [/* @__PURE__ */ i(l, {
80
+ className: "size-4 shrink-0",
81
+ "aria-hidden": "true"
82
+ }), /* @__PURE__ */ i("span", { children: j })]
83
+ })]
84
+ }) : null
85
+ ]
86
+ })]
87
+ }), k ? /* @__PURE__ */ i(u, {
88
+ open: R,
89
+ onOpenChange: (e) => B ? void 0 : z(e),
90
+ children: /* @__PURE__ */ a(p, {
91
+ onClick: (e) => e.stopPropagation(),
92
+ children: [/* @__PURE__ */ a(g, { children: [/* @__PURE__ */ a(_, { children: [j, A ? ` “${A}”?` : "?"] }), /* @__PURE__ */ a(m, { children: [
93
+ "This action cannot be undone. ",
94
+ A ? `“${A}” ` : "This record ",
95
+ "will be permanently removed."
96
+ ] })] }), /* @__PURE__ */ a(h, { children: [/* @__PURE__ */ i(f, {
97
+ disabled: B,
98
+ children: "Cancel"
99
+ }), /* @__PURE__ */ i(d, {
100
+ onClick: (e) => {
101
+ e.preventDefault(), H();
102
+ },
103
+ disabled: B,
104
+ className: C({ variant: "destructive" }),
105
+ children: B ? "Deleting…" : j
106
+ })] })]
107
+ })
108
+ }) : null] }) : null;
109
+ }
110
+ //#endregion
111
+ export { E as ActionMenu };
112
+
113
+ //# sourceMappingURL=ActionMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionMenu.js","names":[],"sources":["../../../src/eventfullymanaged/components/ActionMenu.tsx"],"sourcesContent":["import { useCallback, useId, useState, type ReactNode } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { Eye, MoreVertical, Pencil, Trash2 } from 'lucide-react';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n buttonVariants,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@burdenoff/fe-libs/ui';\nimport { useExclusiveMenu } from '@burdenoff/fe-libs/shared/hooks';\n\nexport interface ActionMenuItem {\n key: string;\n label: string;\n icon?: LucideIcon;\n onSelect: () => void;\n variant?: 'default' | 'danger';\n disabled?: boolean;\n separatorBefore?: boolean;\n}\n\nexport interface ActionMenuProps {\n /** Accessible name for the trigger, e.g. \"Sponsor actions\". */\n ariaLabel: string;\n /** View handler — renders the \"View\" item when provided. */\n onView?: () => void;\n /** Edit handler — renders the \"Edit\" item when provided. */\n onEdit?: () => void;\n /**\n * Delete handler — renders a danger \"Delete\" item that first opens a confirm\n * dialog. May be async; the dialog stays open until it resolves.\n */\n onDelete?: () => void | Promise<void>;\n /** Name shown inside the delete confirmation (\"Delete \\\"Acme Corp\\\"?\"). */\n entityName?: string;\n /** Label for the danger item + confirm button. Defaults to \"Delete\". */\n deleteLabel?: string;\n /** Additional items inserted before the Delete action. */\n extraItems?: ActionMenuItem[];\n align?: 'start' | 'end';\n /** Custom trigger; defaults to a kebab icon button. */\n trigger?: ReactNode;\n}\n\nconst DANGER_ITEM_CLASS = 'text-status-error-text focus:text-status-error-text';\n\n/**\n * Canonical row overflow menu (View / Edit / Delete) for EventfullyManaged list\n * pages. Built on the fe-libs Radix DropdownMenu (keyboard nav, Escape,\n * outside-click, focus return) and coordinated across the page via\n * `useExclusiveMenu`, so opening one row's menu closes any other. Delete routes\n * through an AlertDialog confirm before the destructive handler fires.\n *\n * Safe inside clickable cards: the trigger and content stop click propagation.\n */\nexport function ActionMenu({\n ariaLabel,\n onView,\n onEdit,\n onDelete,\n entityName,\n deleteLabel = 'Delete',\n extraItems = [],\n align = 'end',\n trigger,\n}: ActionMenuProps) {\n const menuId = useId();\n const [open, setOpen] = useState(false);\n const [confirmOpen, setConfirmOpen] = useState(false);\n const [deleting, setDeleting] = useState(false);\n\n const close = useCallback(() => setOpen(false), []);\n // Close this menu whenever another exclusive menu on the page opens.\n useExclusiveMenu(menuId, open, close);\n\n const handleConfirmDelete = async () => {\n if (!onDelete) {\n return;\n }\n try {\n setDeleting(true);\n await onDelete();\n setConfirmOpen(false);\n } catch {\n // The handler surfaces its own error (toast); keep the dialog open so the\n // user can retry or cancel rather than silently dismissing.\n } finally {\n setDeleting(false);\n }\n };\n\n const triggerNode = trigger ?? (\n <button\n type=\"button\"\n className=\"inline-flex size-9 items-center justify-center rounded-button text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus max-md:size-11\"\n aria-label={ariaLabel}\n >\n <MoreVertical className=\"size-4\" aria-hidden=\"true\" />\n </button>\n );\n\n const hasAnyItem = Boolean(onView || onEdit || extraItems.length > 0 || onDelete);\n if (!hasAnyItem) {\n return null;\n }\n\n return (\n <>\n <DropdownMenu open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger\n asChild\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n >\n {triggerNode}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className=\"min-w-44\"\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n >\n {onView ? (\n <DropdownMenuItem className=\"cursor-pointer gap-2\" onSelect={() => onView()}>\n <Eye className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n <span>View</span>\n </DropdownMenuItem>\n ) : null}\n {onEdit ? (\n <DropdownMenuItem className=\"cursor-pointer gap-2\" onSelect={() => onEdit()}>\n <Pencil className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n <span>Edit</span>\n </DropdownMenuItem>\n ) : null}\n {extraItems.map((item) => {\n const Icon = item.icon;\n return (\n <div key={item.key} className=\"contents\">\n {item.separatorBefore ? <DropdownMenuSeparator /> : null}\n <DropdownMenuItem\n disabled={item.disabled}\n onSelect={() => item.onSelect()}\n className={`cursor-pointer gap-2 ${item.variant === 'danger' ? DANGER_ITEM_CLASS : ''}`}\n >\n {Icon ? <Icon className=\"size-4 shrink-0\" aria-hidden=\"true\" /> : null}\n <span className=\"min-w-0 truncate\">{item.label}</span>\n </DropdownMenuItem>\n </div>\n );\n })}\n {onDelete ? (\n <div className=\"contents\">\n {onView || onEdit || extraItems.length > 0 ? <DropdownMenuSeparator /> : null}\n <DropdownMenuItem\n className={`cursor-pointer gap-2 ${DANGER_ITEM_CLASS}`}\n onSelect={() => setConfirmOpen(true)}\n >\n <Trash2 className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n <span>{deleteLabel}</span>\n </DropdownMenuItem>\n </div>\n ) : null}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {onDelete ? (\n <AlertDialog open={confirmOpen} onOpenChange={(next) => (deleting ? undefined : setConfirmOpen(next))}>\n <AlertDialogContent onClick={(event) => event.stopPropagation()}>\n <AlertDialogHeader>\n <AlertDialogTitle>\n {deleteLabel}\n {entityName ? ` “${entityName}”?` : '?'}\n </AlertDialogTitle>\n <AlertDialogDescription>\n This action cannot be undone. {entityName ? `“${entityName}” ` : 'This record '}\n will be permanently removed.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={deleting}>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={(event) => {\n event.preventDefault();\n void handleConfirmDelete();\n }}\n disabled={deleting}\n className={buttonVariants({ variant: 'destructive' })}\n >\n {deleting ? 'Deleting…' : deleteLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n ) : null}\n </>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
+ import { ArrowLeft as n, Save as r } from "lucide-react";
3
+ import { Button as i, EmphasisPanel as a, PagePurpose as o } from "@burdenoff/fe-libs/ui";
4
+ //#region src/eventfullymanaged/components/EntityFormShell.tsx
5
+ function s({ title: s, description: c, purpose: l, backLabel: u, onBack: d, onSubmit: f, submitLabel: p, savingLabel: m, saving: h = !1, submitDisabled: g = !1, children: _ }) {
6
+ return /* @__PURE__ */ t("div", {
7
+ className: "space-y-6 p-6",
8
+ children: [
9
+ /* @__PURE__ */ t("div", { children: [
10
+ /* @__PURE__ */ t(i, {
11
+ type: "button",
12
+ variant: "ghost",
13
+ size: "sm",
14
+ onClick: d,
15
+ children: [/* @__PURE__ */ e(n, { className: "h-4 w-4" }), u]
16
+ }),
17
+ /* @__PURE__ */ e("h1", {
18
+ className: "mt-3 text-2xl font-bold text-text-primary",
19
+ children: s
20
+ }),
21
+ c ? /* @__PURE__ */ e("p", {
22
+ className: "mt-1 text-sm text-text-secondary",
23
+ children: c
24
+ }) : null
25
+ ] }),
26
+ l ? /* @__PURE__ */ e(o, { children: l }) : null,
27
+ /* @__PURE__ */ e(a, { children: /* @__PURE__ */ t("form", {
28
+ onSubmit: f,
29
+ className: "space-y-4",
30
+ children: [_, /* @__PURE__ */ t("div", {
31
+ className: "flex justify-end gap-3",
32
+ children: [/* @__PURE__ */ e(i, {
33
+ type: "button",
34
+ variant: "outline",
35
+ onClick: d,
36
+ disabled: h,
37
+ children: "Cancel"
38
+ }), /* @__PURE__ */ t(i, {
39
+ type: "submit",
40
+ disabled: h || g,
41
+ children: [/* @__PURE__ */ e(r, { className: "h-4 w-4" }), h ? m ?? "Saving…" : p]
42
+ })]
43
+ })]
44
+ }) })
45
+ ]
46
+ });
47
+ }
48
+ //#endregion
49
+ export { s as EntityFormShell };
50
+
51
+ //# sourceMappingURL=EntityFormShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityFormShell.js","names":[],"sources":["../../../src/eventfullymanaged/components/EntityFormShell.tsx"],"sourcesContent":["import type { FormEvent, ReactNode } from 'react';\nimport { ArrowLeft, Save } from 'lucide-react';\nimport { Button, EmphasisPanel, PagePurpose } from '@burdenoff/fe-libs/ui';\n\nexport interface EntityFormShellProps {\n title: string;\n description?: string;\n /** Guidance copy rendered in a PagePurpose banner above the form. */\n purpose?: ReactNode;\n backLabel: string;\n onBack: () => void;\n onSubmit: (event: FormEvent<HTMLFormElement>) => void;\n submitLabel: string;\n savingLabel?: string;\n saving?: boolean;\n submitDisabled?: boolean;\n /** The form fields. */\n children: ReactNode;\n}\n\n/**\n * Shared CRUD form scaffold mirroring VenueFormPage: a back link + heading,\n * an optional PagePurpose banner, and an EmphasisPanel wrapping the fields with\n * a consistent Cancel / Save footer. Keeps the many new entity forms visually\n * and behaviourally aligned. Error handling stays in the page via the\n * `mutationSucceeded` + `notify` helpers; this shell only owns layout and the\n * submit/cancel controls.\n */\nexport function EntityFormShell({\n title,\n description,\n purpose,\n backLabel,\n onBack,\n onSubmit,\n submitLabel,\n savingLabel,\n saving = false,\n submitDisabled = false,\n children,\n}: EntityFormShellProps) {\n return (\n <div className=\"space-y-6 p-6\">\n <div>\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={onBack}>\n <ArrowLeft className=\"h-4 w-4\" />\n {backLabel}\n </Button>\n <h1 className=\"mt-3 text-2xl font-bold text-text-primary\">{title}</h1>\n {description ? <p className=\"mt-1 text-sm text-text-secondary\">{description}</p> : null}\n </div>\n\n {purpose ? <PagePurpose>{purpose}</PagePurpose> : null}\n\n <EmphasisPanel>\n <form onSubmit={onSubmit} className=\"space-y-4\">\n {children}\n <div className=\"flex justify-end gap-3\">\n <Button type=\"button\" variant=\"outline\" onClick={onBack} disabled={saving}>\n Cancel\n </Button>\n <Button type=\"submit\" disabled={saving || submitDisabled}>\n <Save className=\"h-4 w-4\" />\n {saving ? (savingLabel ?? 'Saving…') : submitLabel}\n </Button>\n </div>\n </form>\n </EmphasisPanel>\n </div>\n );\n}\n"],"mappings":";;;;AA4BA,SAAgB,EAAgB,EAC9B,UACA,gBACA,YACA,cACA,WACA,aACA,gBACA,gBACA,YAAS,IACT,oBAAiB,IACjB,eACuB;AACvB,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,OAAD,EAAA,UAAA;IACE,kBAAC,GAAD;KAAQ,MAAK;KAAS,SAAQ;KAAQ,MAAK;KAAK,SAAS;eAAzD,CACE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAChC,EACM;;IACT,kBAAC,MAAD;KAAI,WAAU;eAA6C;KAAW,CAAA;IACrE,IAAc,kBAAC,KAAD;KAAG,WAAU;eAAoC;KAAgB,CAAA,GAAG;IAC/E,EAAA,CAAA;GAEL,IAAU,kBAAC,GAAD,EAAA,UAAc,GAAsB,CAAA,GAAG;GAElD,kBAAC,GAAD,EAAA,UACE,kBAAC,QAAD;IAAgB;IAAU,WAAU;cAApC,CACG,GACD,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MAAQ,MAAK;MAAS,SAAQ;MAAU,SAAS;MAAQ,UAAU;gBAAQ;MAElE,CAAA,EACT,kBAAC,GAAD;MAAQ,MAAK;MAAS,UAAU,KAAU;gBAA1C,CACE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,IAAU,KAAe,YAAa,EAChC;QACL;OACD;OACO,CAAA;GACZ"}
@@ -0,0 +1,146 @@
1
+ import { notify as e } from "../lib/toast.js";
2
+ import { useAvailableTagsQuery as t, useCreateEntityTagMutation as n, useEntityTagsQuery as r, useTagEntityMutation as i, useUntagEntityMutation as a } from "../api/eventApi.js";
3
+ import { describeError as o, mutationSucceeded as s } from "../lib/mutationResult.js";
4
+ import { useMemo as c, useState as l } from "react";
5
+ import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
6
+ import { Plus as p, Tag as m, X as h } from "lucide-react";
7
+ import { Badge as g, Button as _, Input as v, Select as y, SelectContent as b, SelectItem as x, SelectTrigger as S, SelectValue as C } from "@burdenoff/fe-libs/ui";
8
+ //#region src/eventfullymanaged/components/EntityTagsField.tsx
9
+ function w({ entityType: w, entityId: T, label: E = "Tags", className: D }) {
10
+ let [O, k] = l(""), [A, j] = l(""), M = !!T, N = r({ input: {
11
+ entityType: w,
12
+ entityId: T
13
+ } }), { data: P } = t({ limit: 100 }), [F, { loading: I }] = i(), [L, { loading: R }] = a(), [z, { loading: B }] = n(), V = c(() => N.data?.eventfullyManagedEntityTags ?? [], [N.data]), H = c(() => new Set(V.map((e) => e.tagId)), [V]), U = c(() => (P?.availableEventfullyManagedTags ?? []).filter((e) => !H.has(e.id)), [P, H]), W = I || R || B, G = async (e) => {
14
+ let t = await F({ variables: { input: {
15
+ entityType: w,
16
+ entityId: T,
17
+ tagId: e,
18
+ source: "manual"
19
+ } } });
20
+ return s(t, t.data?.tagEventfullyManagedEntity?.id, "Could not add tag") ? (await N.refetch(), !0) : !1;
21
+ }, K = async () => {
22
+ if (A) try {
23
+ await G(A) && j("");
24
+ } catch (t) {
25
+ e.error("Could not add tag", o(t));
26
+ }
27
+ }, q = async () => {
28
+ let t = O.trim();
29
+ if (t) try {
30
+ let e = await z({ variables: { input: { label: t } } }), n = e.data?.createEventfullyManagedEntityTag?.id;
31
+ if (!s(e, n, "Could not create tag") || !n) return;
32
+ await G(n) && k("");
33
+ } catch (t) {
34
+ e.error("Could not create tag", o(t));
35
+ }
36
+ }, J = async (t) => {
37
+ try {
38
+ let n = await L({ variables: { input: {
39
+ entityType: w,
40
+ entityId: T,
41
+ tagId: t
42
+ } } });
43
+ if (n.error) {
44
+ e.error("Could not remove tag", n.error.message);
45
+ return;
46
+ }
47
+ await N.refetch();
48
+ } catch (t) {
49
+ e.error("Could not remove tag", o(t));
50
+ }
51
+ };
52
+ return /* @__PURE__ */ f("div", {
53
+ className: `space-y-2 ${D ?? ""}`,
54
+ children: [/* @__PURE__ */ f("div", {
55
+ className: "flex items-center gap-2 text-sm font-medium text-text-primary",
56
+ children: [/* @__PURE__ */ d(m, {
57
+ className: "h-4 w-4 text-text-muted",
58
+ "aria-hidden": "true"
59
+ }), /* @__PURE__ */ d("span", { children: E })]
60
+ }), M ? /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("div", {
61
+ className: "flex flex-wrap gap-2",
62
+ role: "list",
63
+ "aria-label": E,
64
+ children: V.length === 0 ? /* @__PURE__ */ d("span", {
65
+ className: "text-sm text-text-secondary",
66
+ children: "No tags yet."
67
+ }) : V.map((e) => {
68
+ let t = e.tagInfo, n = t?.color ?? void 0;
69
+ return /* @__PURE__ */ f(g, {
70
+ variant: "secondary",
71
+ className: "gap-1.5",
72
+ role: "listitem",
73
+ children: [
74
+ n ? /* @__PURE__ */ d("span", {
75
+ className: "h-2 w-2 rounded-full",
76
+ style: { backgroundColor: n },
77
+ "aria-hidden": "true"
78
+ }) : null,
79
+ /* @__PURE__ */ d("span", { children: t?.label ?? t?.key ?? "Tag" }),
80
+ /* @__PURE__ */ d("button", {
81
+ type: "button",
82
+ onClick: () => J(e.tagId),
83
+ disabled: W,
84
+ "aria-label": `Remove ${t?.label ?? "tag"}`,
85
+ className: "rounded-full text-text-muted transition-colors hover:text-text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border-focus disabled:opacity-50",
86
+ children: /* @__PURE__ */ d(h, {
87
+ className: "h-3 w-3",
88
+ "aria-hidden": "true"
89
+ })
90
+ })
91
+ ]
92
+ }, e.id);
93
+ })
94
+ }), /* @__PURE__ */ f("div", {
95
+ className: "flex flex-col gap-2 sm:flex-row sm:items-center",
96
+ children: [U.length > 0 ? /* @__PURE__ */ f("div", {
97
+ className: "flex items-center gap-2",
98
+ children: [/* @__PURE__ */ f(y, {
99
+ value: A,
100
+ onValueChange: j,
101
+ children: [/* @__PURE__ */ d(S, {
102
+ className: "w-48",
103
+ "aria-label": "Choose an existing tag",
104
+ children: /* @__PURE__ */ d(C, { placeholder: "Add existing tag" })
105
+ }), /* @__PURE__ */ d(b, { children: U.map((e) => /* @__PURE__ */ d(x, {
106
+ value: e.id,
107
+ children: e.label
108
+ }, e.id)) })]
109
+ }), /* @__PURE__ */ d(_, {
110
+ type: "button",
111
+ variant: "outline",
112
+ size: "sm",
113
+ onClick: K,
114
+ disabled: !A || W,
115
+ children: "Add"
116
+ })]
117
+ }) : null, /* @__PURE__ */ f("div", {
118
+ className: "flex items-center gap-2",
119
+ children: [/* @__PURE__ */ d(v, {
120
+ value: O,
121
+ onChange: (e) => k(e.target.value),
122
+ placeholder: "New tag label",
123
+ "aria-label": "New tag label",
124
+ className: "w-48",
125
+ onKeyDown: (e) => {
126
+ e.key === "Enter" && (e.preventDefault(), q());
127
+ }
128
+ }), /* @__PURE__ */ f(_, {
129
+ type: "button",
130
+ variant: "outline",
131
+ size: "sm",
132
+ onClick: q,
133
+ disabled: !O.trim() || W,
134
+ children: [/* @__PURE__ */ d(p, { className: "h-4 w-4" }), "Create"]
135
+ })]
136
+ })]
137
+ })] }) : /* @__PURE__ */ d("p", {
138
+ className: "text-sm text-text-secondary",
139
+ children: "Save this record first to start adding tags."
140
+ })]
141
+ });
142
+ }
143
+ //#endregion
144
+ export { w as EntityTagsField };
145
+
146
+ //# sourceMappingURL=EntityTagsField.js.map