@burdenoff/microfe-tours 2026.830.2 → 2026.1002.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.
@@ -136,8 +136,8 @@ function m(e) {
136
136
  return t.useMutation(p, r);
137
137
  }
138
138
  var h = e`
139
- mutation UploadTourMedia($input: CreateTourMediaInput!) {
140
- uploadTourMedia(input: $input) {
139
+ mutation CreateTourMediaMetadata($input: CreateTourMediaInput!) {
140
+ createTourMediaMetadata(input: $input) {
141
141
  id
142
142
  name
143
143
  type
@@ -667,6 +667,6 @@ function q(e) {
667
667
  return t.useQuery(K, r);
668
668
  }
669
669
  //#endregion
670
- export { f as CreateTourDocument, a as DeleteTourDocument, M as GetTourDocument, V as GetToursDocument, s as SyncTourStepsDocument, j as UpdateTourDocument, l as useArchiveTourMutation, d as useAttachMediaToStepMutation, m as useCreateTourFromTemplateMutation, v as useCreateTourScheduleMutation, b as useDeleteTourMediaMutation, o as useDeleteTourMutation, S as useDeleteTourTemplateMutation, w as useDuplicateTourMutation, i as useGetPlatformProductsForToursQuery, P as useGetTourAnalyticsQuery, I as useGetTourMediaQuery, R as useGetTourSchedulesQuery, B as useGetTourTemplatesQuery, U as useGetToursForContextQuery, G as useGetUserTourProgressesQuery, q as useGetWorkspaceAnalyticsSummaryQuery, E as usePublishTourMutation, O as useSaveTourAsTemplateMutation, A as useUnpublishTourMutation, g as useUploadTourMediaMutation };
670
+ export { f as CreateTourDocument, a as DeleteTourDocument, M as GetTourDocument, V as GetToursDocument, s as SyncTourStepsDocument, j as UpdateTourDocument, l as useArchiveTourMutation, d as useAttachMediaToStepMutation, m as useCreateTourFromTemplateMutation, g as useCreateTourMediaMetadataMutation, v as useCreateTourScheduleMutation, b as useDeleteTourMediaMutation, o as useDeleteTourMutation, S as useDeleteTourTemplateMutation, w as useDuplicateTourMutation, i as useGetPlatformProductsForToursQuery, P as useGetTourAnalyticsQuery, I as useGetTourMediaQuery, R as useGetTourSchedulesQuery, B as useGetTourTemplatesQuery, U as useGetToursForContextQuery, G as useGetUserTourProgressesQuery, q as useGetWorkspaceAnalyticsSummaryQuery, E as usePublishTourMutation, O as useSaveTourAsTemplateMutation, A as useUnpublishTourMutation };
671
671
 
672
672
  //# sourceMappingURL=global-operations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-operations.js","names":[],"sources":["../../src/generated/global-operations.ts"],"sourcesContent":["// @ts-nocheck\nimport * as Types from './global-types';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nimport * as ApolloReactHooks from '@apollo/client/react';\nconst defaultOptions = {} as const;\nexport type GetPlatformProductsForToursQueryVariables = Types.Exact<{\n filter?: Types.InputMaybe<Types.PlatformProductFilterInput>;\n limit?: Types.InputMaybe<Types.Scalars['Int']['input']>;\n offset?: Types.InputMaybe<Types.Scalars['Int']['input']>;\n}>;\n\n\nexport type GetPlatformProductsForToursQuery = { __typename?: 'Query', platformProducts: { __typename?: 'PlatformProductList', items: Array<{ __typename?: 'PlatformProduct', id: string, name: string, slug: string, status: Types.PlatformProductStatus }> } };\n\nexport type DeleteTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type DeleteTourMutation = { __typename?: 'Mutation', deleteTour: boolean };\n\nexport type SyncTourStepsMutationVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n steps: Array<Types.SyncTourStepInput> | Types.SyncTourStepInput;\n}>;\n\n\nexport type SyncTourStepsMutation = { __typename?: 'Mutation', syncTourSteps: Array<{ __typename?: 'TourStep', id: string, tourId: string, title: string, content: string, stepOrder: number, targetSelector?: string | null, placement: Types.TourStepPlacement, targetSelectorMobile?: string | null, targetSelectorTablet?: string | null, targetSelectorDesktop?: string | null, customData?: Record<string, unknown> | null, actions?: Record<string, unknown> | null, requireInteraction: boolean, waitForSelector?: string | null, waitForEvent?: string | null, waitForTimeout?: number | null, skipConditions?: Record<string, unknown> | null, createdAt: string, updatedAt: string }> };\n\nexport type ArchiveTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type ArchiveTourMutation = { __typename?: 'Mutation', archiveTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, isActive: boolean, updatedAt: string } };\n\nexport type AttachMediaToStepMutationVariables = Types.Exact<{\n input: Types.AttachMediaToStepInput;\n}>;\n\n\nexport type AttachMediaToStepMutation = { __typename?: 'Mutation', attachMediaToStep: { __typename?: 'TourStepMedia', id: string, tourStepId: string, mediaId: string, position: Types.MediaPosition, createdAt: string, media: { __typename?: 'TourMedia', id: string, name: string, type: Types.TourMediaType, cdnUrl?: string | null } } };\n\nexport type CreateTourMutationVariables = Types.Exact<{\n input: Types.CreateTourInput;\n}>;\n\n\nexport type CreateTourMutation = { __typename?: 'Mutation', createTour: { __typename?: 'Tour', id: string, name: string, slug: string, productId: string, status: Types.TourStatus, createdAt: string } };\n\nexport type CreateTourFromTemplateMutationVariables = Types.Exact<{\n templateId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type CreateTourFromTemplateMutation = { __typename?: 'Mutation', createTourFromTemplate: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, steps: Array<{ __typename?: 'TourStep', id: string, title: string, stepOrder: number, content: string, targetSelector?: string | null, placement: Types.TourStepPlacement }> } };\n\nexport type UploadTourMediaMutationVariables = Types.Exact<{\n input: Types.CreateTourMediaInput;\n}>;\n\n\nexport type UploadTourMediaMutation = { __typename?: 'Mutation', uploadTourMedia: { __typename?: 'TourMedia', id: string, name: string, type: Types.TourMediaType, storageUrl: string, cdnUrl?: string | null, storagePath: string, mimeType: string, size: number, duration?: number | null, width?: number | null, height?: number | null, altText?: string | null, caption?: string | null, transcript?: string | null, uploadedBy?: string | null, createdAt: string } };\n\nexport type CreateTourScheduleMutationVariables = Types.Exact<{\n input: Types.CreateTourScheduleInput;\n}>;\n\n\nexport type CreateTourScheduleMutation = { __typename?: 'Mutation', createTourSchedule: { __typename?: 'TourSchedule', id: string, tourId: string, startDate: string, endDate?: string | null, recurrenceRule?: string | null, timezone: string, isActive: boolean, nextExecutionAt?: string | null, executionCount: number, createdAt: string } };\n\nexport type DeleteTourMediaMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type DeleteTourMediaMutation = { __typename?: 'Mutation', deleteTourMedia: boolean };\n\nexport type DeleteTourTemplateMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type DeleteTourTemplateMutation = { __typename?: 'Mutation', deleteTourTemplate: boolean };\n\nexport type DuplicateTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n newName?: Types.InputMaybe<Types.Scalars['String']['input']>;\n}>;\n\n\nexport type DuplicateTourMutation = { __typename?: 'Mutation', duplicateTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, productId: string, createdAt: string } };\n\nexport type PublishTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type PublishTourMutation = { __typename?: 'Mutation', publishTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, isActive: boolean, updatedAt: string } };\n\nexport type SaveTourAsTemplateMutationVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n input: Types.SaveTourAsTemplateInput;\n}>;\n\n\nexport type SaveTourAsTemplateMutation = { __typename?: 'Mutation', saveTourAsTemplate: { __typename?: 'TourTemplate', id: string, name: string, slug: string, description?: string | null, category?: string | null, isPublic: boolean, isPremium: boolean, useCount: number, createdAt: string } };\n\nexport type UnpublishTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type UnpublishTourMutation = { __typename?: 'Mutation', unpublishTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, isActive: boolean, updatedAt: string } };\n\nexport type UpdateTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n input: Types.UpdateTourInput;\n}>;\n\n\nexport type UpdateTourMutation = { __typename?: 'Mutation', updateTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, updatedAt: string } };\n\nexport type GetProductTourStatisticsQueryVariables = Types.Exact<{\n productId: Types.Scalars['String']['input'];\n}>;\n\n\nexport type GetProductTourStatisticsQuery = { __typename?: 'Query', productTourStatistics: { __typename?: 'ProductTourStatistics', productId: string, totalTours: number, publishedTours: number, totalViews: number, totalCompletions: number, totalSkips: number, averageCompletionRate: number, tourBreakdown: Array<{ __typename?: 'TourStatSummary', tourId: string, tourName: string, viewCount: number, completionCount: number, skipCount: number, completionRate: number }> } };\n\nexport type GetTourQueryVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetTourQuery = { __typename?: 'Query', tour?: { __typename?: 'Tour', id: string, name: string, slug: string, description?: string | null, productId: string, moduleId?: string | null, pageId?: string | null, status: Types.TourStatus, isActive: boolean, triggerType: Types.TourTriggerType, triggerConfig?: Record<string, unknown> | null, mobileConfig?: Record<string, unknown> | null, tabletConfig?: Record<string, unknown> | null, desktopConfig?: Record<string, unknown> | null, priority: number, displayOrder: number, startDate?: string | null, endDate?: string | null, viewCount: number, completionCount: number, skipCount: number, metadata?: Record<string, unknown> | null, version: number, createdBy?: string | null, updatedBy?: string | null, createdAt: string, updatedAt: string, steps: Array<{ __typename?: 'TourStep', id: string, tourId: string, title: string, content: string, stepOrder: number, targetSelector?: string | null, placement: Types.TourStepPlacement, targetSelectorMobile?: string | null, targetSelectorTablet?: string | null, targetSelectorDesktop?: string | null, customData?: Record<string, unknown> | null, actions?: Record<string, unknown> | null, requireInteraction: boolean, waitForSelector?: string | null, waitForEvent?: string | null, waitForTimeout?: number | null, skipConditions?: Record<string, unknown> | null, metadata?: Record<string, unknown> | null, createdAt: string, updatedAt: string, media?: Array<{ __typename?: 'TourStepMedia', id: string, position: Types.MediaPosition, mediaId: string, media: { __typename?: 'TourMedia', id: string, name: string, type: Types.TourMediaType, cdnUrl?: string | null, mimeType: string, size: number, duration?: number | null, width?: number | null, height?: number | null, altText?: string | null, caption?: string | null, transcript?: string | null } }> | null }>, schedules?: Array<{ __typename?: 'TourSchedule', id: string, startDate: string, endDate?: string | null, recurrenceRule?: string | null, timezone: string, isActive: boolean, nextExecutionAt?: string | null }> | null } | null };\n\nexport type GetTourAnalyticsQueryVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetTourAnalyticsQuery = { __typename?: 'Query', tourAnalytics: { __typename?: 'TourAnalyticsAggregation', totalViews: number, totalCompletions: number, totalSkips: number, averageCompletionRate: number, averageDuration: number, byDeviceType: Array<{ __typename?: 'DeviceTypeStats', deviceType: Types.DeviceType, count: number, completionRate: number }>, byEventType: Array<{ __typename?: 'TourEventTypeStats', eventType: Types.TourAnalyticsEventType, count: number }> }, tourStepAnalytics: Array<{ __typename?: 'TourStepAnalytics', stepId: string, viewCount: number, completionCount: number, skipCount: number, averageDuration: number }> };\n\nexport type GetTourMediaQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetTourMediaQuery = { __typename?: 'Query', tourMedia: Array<{ __typename?: 'TourMedia', id: string, name: string, type: Types.TourMediaType, storageUrl: string, cdnUrl?: string | null, storagePath: string, mimeType: string, size: number, duration?: number | null, width?: number | null, height?: number | null, altText?: string | null, caption?: string | null, transcript?: string | null, isPublic: boolean, metadata?: Record<string, unknown> | null, uploadedBy?: string | null, createdAt: string, updatedAt: string }> };\n\nexport type GetTourSchedulesQueryVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetTourSchedulesQuery = { __typename?: 'Query', tourSchedules: Array<{ __typename?: 'TourSchedule', id: string, tourId: string, startDate: string, endDate?: string | null, recurrenceRule?: string | null, timezone: string, isActive: boolean, lastExecutedAt?: string | null, nextExecutionAt?: string | null, executionCount: number, createdAt: string, updatedAt: string }> };\n\nexport type GetTourTemplatesQueryVariables = Types.Exact<{\n isPublic?: Types.InputMaybe<Types.Scalars['Boolean']['input']>;\n category?: Types.InputMaybe<Types.Scalars['String']['input']>;\n}>;\n\n\nexport type GetTourTemplatesQuery = { __typename?: 'Query', tourTemplates: Array<{ __typename?: 'TourTemplate', id: string, name: string, slug: string, description?: string | null, category?: string | null, tags: Array<string>, thumbnail?: string | null, config: Record<string, unknown>, isPublic: boolean, isPremium: boolean, useCount: number, createdBy?: string | null, createdAt: string, updatedAt: string }> };\n\nexport type GetTourUserProgressQueryVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n userId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetTourUserProgressQuery = { __typename?: 'Query', tourUserProgress?: { __typename?: 'TourUserProgress', id: string, tourId: string, userId: string, status: Types.TourUserStatus, currentStepId?: string | null, currentStepOrder?: number | null, completedSteps?: Record<string, unknown> | null, skippedSteps?: Record<string, unknown> | null, deviceType?: Types.DeviceType | null, startedAt?: string | null, completedAt?: string | null, lastViewedAt?: string | null } | null };\n\nexport type GetToursQueryVariables = Types.Exact<{\n filters?: Types.InputMaybe<Types.TourFilters>;\n pagination?: Types.InputMaybe<Types.TourPagination>;\n}>;\n\n\nexport type GetToursQuery = { __typename?: 'Query', tours: { __typename?: 'ToursResponse', total: number, hasMore: boolean, tours: Array<{ __typename?: 'Tour', id: string, name: string, slug: string, description?: string | null, productId: string, moduleId?: string | null, pageId?: string | null, status: Types.TourStatus, isActive: boolean, triggerType: Types.TourTriggerType, priority: number, displayOrder: number, startDate?: string | null, endDate?: string | null, viewCount: number, completionCount: number, skipCount: number, version: number, createdBy?: string | null, updatedBy?: string | null, createdAt: string, updatedAt: string, steps: Array<{ __typename?: 'TourStep', id: string }> }> } };\n\nexport type GetToursForContextQueryVariables = Types.Exact<{\n context: Types.TourContextInput;\n}>;\n\n\nexport type GetToursForContextQuery = { __typename?: 'Query', toursForContext: Array<{ __typename?: 'Tour', id: string, name: string, slug: string, description?: string | null, productId: string, moduleId?: string | null, pageId?: string | null, status: Types.TourStatus, isActive: boolean, triggerType: Types.TourTriggerType, priority: number, displayOrder: number, startDate?: string | null, endDate?: string | null, myProgress?: { __typename?: 'TourUserProgress', id: string, tourId: string, status: Types.TourUserStatus, currentStepId?: string | null, currentStepOrder?: number | null, startedAt?: string | null, completedAt?: string | null, lastViewedAt?: string | null } | null }> };\n\nexport type GetUserTourProgressesQueryVariables = Types.Exact<{\n userId?: Types.InputMaybe<Types.Scalars['ID']['input']>;\n pagination?: Types.InputMaybe<Types.TourPagination>;\n}>;\n\n\nexport type GetUserTourProgressesQuery = { __typename?: 'Query', userTourProgresses: Array<{ __typename?: 'TourUserProgress', id: string, tourId: string, userId: string, status: Types.TourUserStatus, currentStepId?: string | null, currentStepOrder?: number | null, completedSteps?: Record<string, unknown> | null, skippedSteps?: Record<string, unknown> | null, deviceType?: Types.DeviceType | null, startedAt?: string | null, completedAt?: string | null, lastViewedAt?: string | null, createdAt: string, updatedAt: string, tour: { __typename?: 'Tour', id: string, name: string, slug: string, description?: string | null, productId: string, moduleId?: string | null, pageId?: string | null, status: Types.TourStatus } }> };\n\nexport type GetWorkspaceAnalyticsSummaryQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetWorkspaceAnalyticsSummaryQuery = { __typename?: 'Query', workspaceAnalyticsSummary: { __typename?: 'WorkspaceTourAnalyticsSummary', totalTours: number, publishedTours: number, totalViews: number, totalCompletions: number, overallCompletionRate: number } };\n\n\nexport const GetPlatformProductsForToursDocument = gql`\n query GetPlatformProductsForTours($filter: PlatformProductFilterInput, $limit: Int, $offset: Int) {\n platformProducts(filter: $filter, limit: $limit, offset: $offset) {\n items {\n id\n name\n slug\n status\n }\n }\n}\n `;\n\n/**\n * __useGetPlatformProductsForToursQuery__\n *\n * To run a query within a React component, call `useGetPlatformProductsForToursQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetPlatformProductsForToursQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetPlatformProductsForToursQuery({\n * variables: {\n * filter: // value for 'filter'\n * limit: // value for 'limit'\n * offset: // value for 'offset'\n * },\n * });\n */\nexport function useGetPlatformProductsForToursQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>(GetPlatformProductsForToursDocument, options);\n }\nexport function useGetPlatformProductsForToursLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>(GetPlatformProductsForToursDocument, options);\n }\n// @ts-ignore\nexport function useGetPlatformProductsForToursSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>;\nexport function useGetPlatformProductsForToursSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetPlatformProductsForToursQuery | undefined, Types.GetPlatformProductsForToursQueryVariables>;\nexport function useGetPlatformProductsForToursSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>(GetPlatformProductsForToursDocument, options);\n }\nexport type GetPlatformProductsForToursQueryHookResult = ReturnType<typeof useGetPlatformProductsForToursQuery>;\nexport type GetPlatformProductsForToursLazyQueryHookResult = ReturnType<typeof useGetPlatformProductsForToursLazyQuery>;\nexport type GetPlatformProductsForToursSuspenseQueryHookResult = ReturnType<typeof useGetPlatformProductsForToursSuspenseQuery>;\nexport type GetPlatformProductsForToursQueryResult = Apollo.QueryResult<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>;\nexport const DeleteTourDocument = gql`\n mutation DeleteTour($id: ID!) {\n deleteTour(id: $id)\n}\n `;\nexport type DeleteTourMutationFn = Apollo.MutationFunction<Types.DeleteTourMutation, Types.DeleteTourMutationVariables>;\n\n/**\n * __useDeleteTourMutation__\n *\n * To run a mutation, you first call `useDeleteTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTourMutation, { data, loading, error }] = useDeleteTourMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDeleteTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DeleteTourMutation, Types.DeleteTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DeleteTourMutation, Types.DeleteTourMutationVariables>(DeleteTourDocument, options);\n }\nexport type DeleteTourMutationHookResult = ReturnType<typeof useDeleteTourMutation>;\nexport type DeleteTourMutationResult = Apollo.MutationResult<Types.DeleteTourMutation>;\nexport type DeleteTourMutationOptions = Apollo.BaseMutationOptions<Types.DeleteTourMutation, Types.DeleteTourMutationVariables>;\nexport const SyncTourStepsDocument = gql`\n mutation SyncTourSteps($tourId: ID!, $steps: [SyncTourStepInput!]!) {\n syncTourSteps(tourId: $tourId, steps: $steps) {\n id\n tourId\n title\n content\n stepOrder\n targetSelector\n placement\n targetSelectorMobile\n targetSelectorTablet\n targetSelectorDesktop\n customData\n actions\n requireInteraction\n waitForSelector\n waitForEvent\n waitForTimeout\n skipConditions\n createdAt\n updatedAt\n }\n}\n `;\nexport type SyncTourStepsMutationFn = Apollo.MutationFunction<Types.SyncTourStepsMutation, Types.SyncTourStepsMutationVariables>;\n\n/**\n * __useSyncTourStepsMutation__\n *\n * To run a mutation, you first call `useSyncTourStepsMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSyncTourStepsMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [syncTourStepsMutation, { data, loading, error }] = useSyncTourStepsMutation({\n * variables: {\n * tourId: // value for 'tourId'\n * steps: // value for 'steps'\n * },\n * });\n */\nexport function useSyncTourStepsMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.SyncTourStepsMutation, Types.SyncTourStepsMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.SyncTourStepsMutation, Types.SyncTourStepsMutationVariables>(SyncTourStepsDocument, options);\n }\nexport type SyncTourStepsMutationHookResult = ReturnType<typeof useSyncTourStepsMutation>;\nexport type SyncTourStepsMutationResult = Apollo.MutationResult<Types.SyncTourStepsMutation>;\nexport type SyncTourStepsMutationOptions = Apollo.BaseMutationOptions<Types.SyncTourStepsMutation, Types.SyncTourStepsMutationVariables>;\nexport const ArchiveTourDocument = gql`\n mutation ArchiveTour($id: ID!) {\n archiveTour(id: $id) {\n id\n name\n slug\n status\n isActive\n updatedAt\n }\n}\n `;\nexport type ArchiveTourMutationFn = Apollo.MutationFunction<Types.ArchiveTourMutation, Types.ArchiveTourMutationVariables>;\n\n/**\n * __useArchiveTourMutation__\n *\n * To run a mutation, you first call `useArchiveTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useArchiveTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [archiveTourMutation, { data, loading, error }] = useArchiveTourMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useArchiveTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.ArchiveTourMutation, Types.ArchiveTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.ArchiveTourMutation, Types.ArchiveTourMutationVariables>(ArchiveTourDocument, options);\n }\nexport type ArchiveTourMutationHookResult = ReturnType<typeof useArchiveTourMutation>;\nexport type ArchiveTourMutationResult = Apollo.MutationResult<Types.ArchiveTourMutation>;\nexport type ArchiveTourMutationOptions = Apollo.BaseMutationOptions<Types.ArchiveTourMutation, Types.ArchiveTourMutationVariables>;\nexport const AttachMediaToStepDocument = gql`\n mutation AttachMediaToStep($input: AttachMediaToStepInput!) {\n attachMediaToStep(input: $input) {\n id\n tourStepId\n mediaId\n position\n createdAt\n media {\n id\n name\n type\n cdnUrl\n }\n }\n}\n `;\nexport type AttachMediaToStepMutationFn = Apollo.MutationFunction<Types.AttachMediaToStepMutation, Types.AttachMediaToStepMutationVariables>;\n\n/**\n * __useAttachMediaToStepMutation__\n *\n * To run a mutation, you first call `useAttachMediaToStepMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useAttachMediaToStepMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [attachMediaToStepMutation, { data, loading, error }] = useAttachMediaToStepMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useAttachMediaToStepMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.AttachMediaToStepMutation, Types.AttachMediaToStepMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.AttachMediaToStepMutation, Types.AttachMediaToStepMutationVariables>(AttachMediaToStepDocument, options);\n }\nexport type AttachMediaToStepMutationHookResult = ReturnType<typeof useAttachMediaToStepMutation>;\nexport type AttachMediaToStepMutationResult = Apollo.MutationResult<Types.AttachMediaToStepMutation>;\nexport type AttachMediaToStepMutationOptions = Apollo.BaseMutationOptions<Types.AttachMediaToStepMutation, Types.AttachMediaToStepMutationVariables>;\nexport const CreateTourDocument = gql`\n mutation CreateTour($input: CreateTourInput!) {\n createTour(input: $input) {\n id\n name\n slug\n productId\n status\n createdAt\n }\n}\n `;\nexport type CreateTourMutationFn = Apollo.MutationFunction<Types.CreateTourMutation, Types.CreateTourMutationVariables>;\n\n/**\n * __useCreateTourMutation__\n *\n * To run a mutation, you first call `useCreateTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTourMutation, { data, loading, error }] = useCreateTourMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useCreateTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateTourMutation, Types.CreateTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateTourMutation, Types.CreateTourMutationVariables>(CreateTourDocument, options);\n }\nexport type CreateTourMutationHookResult = ReturnType<typeof useCreateTourMutation>;\nexport type CreateTourMutationResult = Apollo.MutationResult<Types.CreateTourMutation>;\nexport type CreateTourMutationOptions = Apollo.BaseMutationOptions<Types.CreateTourMutation, Types.CreateTourMutationVariables>;\nexport const CreateTourFromTemplateDocument = gql`\n mutation CreateTourFromTemplate($templateId: ID!) {\n createTourFromTemplate(templateId: $templateId) {\n id\n name\n slug\n status\n steps {\n id\n title\n stepOrder\n content\n targetSelector\n placement\n }\n }\n}\n `;\nexport type CreateTourFromTemplateMutationFn = Apollo.MutationFunction<Types.CreateTourFromTemplateMutation, Types.CreateTourFromTemplateMutationVariables>;\n\n/**\n * __useCreateTourFromTemplateMutation__\n *\n * To run a mutation, you first call `useCreateTourFromTemplateMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTourFromTemplateMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTourFromTemplateMutation, { data, loading, error }] = useCreateTourFromTemplateMutation({\n * variables: {\n * templateId: // value for 'templateId'\n * },\n * });\n */\nexport function useCreateTourFromTemplateMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateTourFromTemplateMutation, Types.CreateTourFromTemplateMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateTourFromTemplateMutation, Types.CreateTourFromTemplateMutationVariables>(CreateTourFromTemplateDocument, options);\n }\nexport type CreateTourFromTemplateMutationHookResult = ReturnType<typeof useCreateTourFromTemplateMutation>;\nexport type CreateTourFromTemplateMutationResult = Apollo.MutationResult<Types.CreateTourFromTemplateMutation>;\nexport type CreateTourFromTemplateMutationOptions = Apollo.BaseMutationOptions<Types.CreateTourFromTemplateMutation, Types.CreateTourFromTemplateMutationVariables>;\nexport const UploadTourMediaDocument = gql`\n mutation UploadTourMedia($input: CreateTourMediaInput!) {\n uploadTourMedia(input: $input) {\n id\n name\n type\n storageUrl\n cdnUrl\n storagePath\n mimeType\n size\n duration\n width\n height\n altText\n caption\n transcript\n uploadedBy\n createdAt\n }\n}\n `;\nexport type UploadTourMediaMutationFn = Apollo.MutationFunction<Types.UploadTourMediaMutation, Types.UploadTourMediaMutationVariables>;\n\n/**\n * __useUploadTourMediaMutation__\n *\n * To run a mutation, you first call `useUploadTourMediaMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUploadTourMediaMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [uploadTourMediaMutation, { data, loading, error }] = useUploadTourMediaMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useUploadTourMediaMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UploadTourMediaMutation, Types.UploadTourMediaMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UploadTourMediaMutation, Types.UploadTourMediaMutationVariables>(UploadTourMediaDocument, options);\n }\nexport type UploadTourMediaMutationHookResult = ReturnType<typeof useUploadTourMediaMutation>;\nexport type UploadTourMediaMutationResult = Apollo.MutationResult<Types.UploadTourMediaMutation>;\nexport type UploadTourMediaMutationOptions = Apollo.BaseMutationOptions<Types.UploadTourMediaMutation, Types.UploadTourMediaMutationVariables>;\nexport const CreateTourScheduleDocument = gql`\n mutation CreateTourSchedule($input: CreateTourScheduleInput!) {\n createTourSchedule(input: $input) {\n id\n tourId\n startDate\n endDate\n recurrenceRule\n timezone\n isActive\n nextExecutionAt\n executionCount\n createdAt\n }\n}\n `;\nexport type CreateTourScheduleMutationFn = Apollo.MutationFunction<Types.CreateTourScheduleMutation, Types.CreateTourScheduleMutationVariables>;\n\n/**\n * __useCreateTourScheduleMutation__\n *\n * To run a mutation, you first call `useCreateTourScheduleMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTourScheduleMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTourScheduleMutation, { data, loading, error }] = useCreateTourScheduleMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useCreateTourScheduleMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateTourScheduleMutation, Types.CreateTourScheduleMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateTourScheduleMutation, Types.CreateTourScheduleMutationVariables>(CreateTourScheduleDocument, options);\n }\nexport type CreateTourScheduleMutationHookResult = ReturnType<typeof useCreateTourScheduleMutation>;\nexport type CreateTourScheduleMutationResult = Apollo.MutationResult<Types.CreateTourScheduleMutation>;\nexport type CreateTourScheduleMutationOptions = Apollo.BaseMutationOptions<Types.CreateTourScheduleMutation, Types.CreateTourScheduleMutationVariables>;\nexport const DeleteTourMediaDocument = gql`\n mutation DeleteTourMedia($id: ID!) {\n deleteTourMedia(id: $id)\n}\n `;\nexport type DeleteTourMediaMutationFn = Apollo.MutationFunction<Types.DeleteTourMediaMutation, Types.DeleteTourMediaMutationVariables>;\n\n/**\n * __useDeleteTourMediaMutation__\n *\n * To run a mutation, you first call `useDeleteTourMediaMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTourMediaMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTourMediaMutation, { data, loading, error }] = useDeleteTourMediaMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDeleteTourMediaMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DeleteTourMediaMutation, Types.DeleteTourMediaMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DeleteTourMediaMutation, Types.DeleteTourMediaMutationVariables>(DeleteTourMediaDocument, options);\n }\nexport type DeleteTourMediaMutationHookResult = ReturnType<typeof useDeleteTourMediaMutation>;\nexport type DeleteTourMediaMutationResult = Apollo.MutationResult<Types.DeleteTourMediaMutation>;\nexport type DeleteTourMediaMutationOptions = Apollo.BaseMutationOptions<Types.DeleteTourMediaMutation, Types.DeleteTourMediaMutationVariables>;\nexport const DeleteTourTemplateDocument = gql`\n mutation DeleteTourTemplate($id: ID!) {\n deleteTourTemplate(id: $id)\n}\n `;\nexport type DeleteTourTemplateMutationFn = Apollo.MutationFunction<Types.DeleteTourTemplateMutation, Types.DeleteTourTemplateMutationVariables>;\n\n/**\n * __useDeleteTourTemplateMutation__\n *\n * To run a mutation, you first call `useDeleteTourTemplateMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTourTemplateMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTourTemplateMutation, { data, loading, error }] = useDeleteTourTemplateMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDeleteTourTemplateMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DeleteTourTemplateMutation, Types.DeleteTourTemplateMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DeleteTourTemplateMutation, Types.DeleteTourTemplateMutationVariables>(DeleteTourTemplateDocument, options);\n }\nexport type DeleteTourTemplateMutationHookResult = ReturnType<typeof useDeleteTourTemplateMutation>;\nexport type DeleteTourTemplateMutationResult = Apollo.MutationResult<Types.DeleteTourTemplateMutation>;\nexport type DeleteTourTemplateMutationOptions = Apollo.BaseMutationOptions<Types.DeleteTourTemplateMutation, Types.DeleteTourTemplateMutationVariables>;\nexport const DuplicateTourDocument = gql`\n mutation DuplicateTour($id: ID!, $newName: String) {\n duplicateTour(id: $id, newName: $newName) {\n id\n name\n slug\n status\n productId\n createdAt\n }\n}\n `;\nexport type DuplicateTourMutationFn = Apollo.MutationFunction<Types.DuplicateTourMutation, Types.DuplicateTourMutationVariables>;\n\n/**\n * __useDuplicateTourMutation__\n *\n * To run a mutation, you first call `useDuplicateTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDuplicateTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [duplicateTourMutation, { data, loading, error }] = useDuplicateTourMutation({\n * variables: {\n * id: // value for 'id'\n * newName: // value for 'newName'\n * },\n * });\n */\nexport function useDuplicateTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DuplicateTourMutation, Types.DuplicateTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DuplicateTourMutation, Types.DuplicateTourMutationVariables>(DuplicateTourDocument, options);\n }\nexport type DuplicateTourMutationHookResult = ReturnType<typeof useDuplicateTourMutation>;\nexport type DuplicateTourMutationResult = Apollo.MutationResult<Types.DuplicateTourMutation>;\nexport type DuplicateTourMutationOptions = Apollo.BaseMutationOptions<Types.DuplicateTourMutation, Types.DuplicateTourMutationVariables>;\nexport const PublishTourDocument = gql`\n mutation PublishTour($id: ID!) {\n publishTour(id: $id) {\n id\n name\n slug\n status\n isActive\n updatedAt\n }\n}\n `;\nexport type PublishTourMutationFn = Apollo.MutationFunction<Types.PublishTourMutation, Types.PublishTourMutationVariables>;\n\n/**\n * __usePublishTourMutation__\n *\n * To run a mutation, you first call `usePublishTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `usePublishTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [publishTourMutation, { data, loading, error }] = usePublishTourMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function usePublishTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.PublishTourMutation, Types.PublishTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.PublishTourMutation, Types.PublishTourMutationVariables>(PublishTourDocument, options);\n }\nexport type PublishTourMutationHookResult = ReturnType<typeof usePublishTourMutation>;\nexport type PublishTourMutationResult = Apollo.MutationResult<Types.PublishTourMutation>;\nexport type PublishTourMutationOptions = Apollo.BaseMutationOptions<Types.PublishTourMutation, Types.PublishTourMutationVariables>;\nexport const SaveTourAsTemplateDocument = gql`\n mutation SaveTourAsTemplate($tourId: ID!, $input: SaveTourAsTemplateInput!) {\n saveTourAsTemplate(tourId: $tourId, input: $input) {\n id\n name\n slug\n description\n category\n isPublic\n isPremium\n useCount\n createdAt\n }\n}\n `;\nexport type SaveTourAsTemplateMutationFn = Apollo.MutationFunction<Types.SaveTourAsTemplateMutation, Types.SaveTourAsTemplateMutationVariables>;\n\n/**\n * __useSaveTourAsTemplateMutation__\n *\n * To run a mutation, you first call `useSaveTourAsTemplateMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSaveTourAsTemplateMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [saveTourAsTemplateMutation, { data, loading, error }] = useSaveTourAsTemplateMutation({\n * variables: {\n * tourId: // value for 'tourId'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useSaveTourAsTemplateMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.SaveTourAsTemplateMutation, Types.SaveTourAsTemplateMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.SaveTourAsTemplateMutation, Types.SaveTourAsTemplateMutationVariables>(SaveTourAsTemplateDocument, options);\n }\nexport type SaveTourAsTemplateMutationHookResult = ReturnType<typeof useSaveTourAsTemplateMutation>;\nexport type SaveTourAsTemplateMutationResult = Apollo.MutationResult<Types.SaveTourAsTemplateMutation>;\nexport type SaveTourAsTemplateMutationOptions = Apollo.BaseMutationOptions<Types.SaveTourAsTemplateMutation, Types.SaveTourAsTemplateMutationVariables>;\nexport const UnpublishTourDocument = gql`\n mutation UnpublishTour($id: ID!) {\n unpublishTour(id: $id) {\n id\n name\n slug\n status\n isActive\n updatedAt\n }\n}\n `;\nexport type UnpublishTourMutationFn = Apollo.MutationFunction<Types.UnpublishTourMutation, Types.UnpublishTourMutationVariables>;\n\n/**\n * __useUnpublishTourMutation__\n *\n * To run a mutation, you first call `useUnpublishTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUnpublishTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [unpublishTourMutation, { data, loading, error }] = useUnpublishTourMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useUnpublishTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UnpublishTourMutation, Types.UnpublishTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UnpublishTourMutation, Types.UnpublishTourMutationVariables>(UnpublishTourDocument, options);\n }\nexport type UnpublishTourMutationHookResult = ReturnType<typeof useUnpublishTourMutation>;\nexport type UnpublishTourMutationResult = Apollo.MutationResult<Types.UnpublishTourMutation>;\nexport type UnpublishTourMutationOptions = Apollo.BaseMutationOptions<Types.UnpublishTourMutation, Types.UnpublishTourMutationVariables>;\nexport const UpdateTourDocument = gql`\n mutation UpdateTour($id: ID!, $input: UpdateTourInput!) {\n updateTour(id: $id, input: $input) {\n id\n name\n slug\n status\n updatedAt\n }\n}\n `;\nexport type UpdateTourMutationFn = Apollo.MutationFunction<Types.UpdateTourMutation, Types.UpdateTourMutationVariables>;\n\n/**\n * __useUpdateTourMutation__\n *\n * To run a mutation, you first call `useUpdateTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTourMutation, { data, loading, error }] = useUpdateTourMutation({\n * variables: {\n * id: // value for 'id'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useUpdateTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UpdateTourMutation, Types.UpdateTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UpdateTourMutation, Types.UpdateTourMutationVariables>(UpdateTourDocument, options);\n }\nexport type UpdateTourMutationHookResult = ReturnType<typeof useUpdateTourMutation>;\nexport type UpdateTourMutationResult = Apollo.MutationResult<Types.UpdateTourMutation>;\nexport type UpdateTourMutationOptions = Apollo.BaseMutationOptions<Types.UpdateTourMutation, Types.UpdateTourMutationVariables>;\nexport const GetProductTourStatisticsDocument = gql`\n query GetProductTourStatistics($productId: String!) {\n productTourStatistics(productId: $productId) {\n productId\n totalTours\n publishedTours\n totalViews\n totalCompletions\n totalSkips\n averageCompletionRate\n tourBreakdown {\n tourId\n tourName\n viewCount\n completionCount\n skipCount\n completionRate\n }\n }\n}\n `;\n\n/**\n * __useGetProductTourStatisticsQuery__\n *\n * To run a query within a React component, call `useGetProductTourStatisticsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetProductTourStatisticsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetProductTourStatisticsQuery({\n * variables: {\n * productId: // value for 'productId'\n * },\n * });\n */\nexport function useGetProductTourStatisticsQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables> & ({ variables: Types.GetProductTourStatisticsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>(GetProductTourStatisticsDocument, options);\n }\nexport function useGetProductTourStatisticsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>(GetProductTourStatisticsDocument, options);\n }\n// @ts-ignore\nexport function useGetProductTourStatisticsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>;\nexport function useGetProductTourStatisticsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProductTourStatisticsQuery | undefined, Types.GetProductTourStatisticsQueryVariables>;\nexport function useGetProductTourStatisticsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>(GetProductTourStatisticsDocument, options);\n }\nexport type GetProductTourStatisticsQueryHookResult = ReturnType<typeof useGetProductTourStatisticsQuery>;\nexport type GetProductTourStatisticsLazyQueryHookResult = ReturnType<typeof useGetProductTourStatisticsLazyQuery>;\nexport type GetProductTourStatisticsSuspenseQueryHookResult = ReturnType<typeof useGetProductTourStatisticsSuspenseQuery>;\nexport type GetProductTourStatisticsQueryResult = Apollo.QueryResult<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>;\nexport const GetTourDocument = gql`\n query GetTour($id: ID!) {\n tour(id: $id) {\n id\n name\n slug\n description\n productId\n moduleId\n pageId\n status\n isActive\n triggerType\n triggerConfig\n mobileConfig\n tabletConfig\n desktopConfig\n priority\n displayOrder\n startDate\n endDate\n viewCount\n completionCount\n skipCount\n steps {\n id\n tourId\n title\n content\n stepOrder\n targetSelector\n placement\n targetSelectorMobile\n targetSelectorTablet\n targetSelectorDesktop\n customData\n actions\n requireInteraction\n waitForSelector\n waitForEvent\n waitForTimeout\n skipConditions\n media {\n id\n position\n mediaId\n media {\n id\n name\n type\n cdnUrl\n mimeType\n size\n duration\n width\n height\n altText\n caption\n transcript\n }\n }\n metadata\n createdAt\n updatedAt\n }\n schedules {\n id\n startDate\n endDate\n recurrenceRule\n timezone\n isActive\n nextExecutionAt\n }\n metadata\n version\n createdBy\n updatedBy\n createdAt\n updatedAt\n }\n}\n `;\n\n/**\n * __useGetTourQuery__\n *\n * To run a query within a React component, call `useGetTourQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetTourQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables> & ({ variables: Types.GetTourQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourQuery, Types.GetTourQueryVariables>(GetTourDocument, options);\n }\nexport function useGetTourLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourQuery, Types.GetTourQueryVariables>(GetTourDocument, options);\n }\n// @ts-ignore\nexport function useGetTourSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourQuery, Types.GetTourQueryVariables>;\nexport function useGetTourSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourQuery | undefined, Types.GetTourQueryVariables>;\nexport function useGetTourSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourQuery, Types.GetTourQueryVariables>(GetTourDocument, options);\n }\nexport type GetTourQueryHookResult = ReturnType<typeof useGetTourQuery>;\nexport type GetTourLazyQueryHookResult = ReturnType<typeof useGetTourLazyQuery>;\nexport type GetTourSuspenseQueryHookResult = ReturnType<typeof useGetTourSuspenseQuery>;\nexport type GetTourQueryResult = Apollo.QueryResult<Types.GetTourQuery, Types.GetTourQueryVariables>;\nexport const GetTourAnalyticsDocument = gql`\n query GetTourAnalytics($tourId: ID!) {\n tourAnalytics(tourId: $tourId) {\n totalViews\n totalCompletions\n totalSkips\n averageCompletionRate\n averageDuration\n byDeviceType {\n deviceType\n count\n completionRate\n }\n byEventType {\n eventType\n count\n }\n }\n tourStepAnalytics(tourId: $tourId) {\n stepId\n viewCount\n completionCount\n skipCount\n averageDuration\n }\n}\n `;\n\n/**\n * __useGetTourAnalyticsQuery__\n *\n * To run a query within a React component, call `useGetTourAnalyticsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourAnalyticsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourAnalyticsQuery({\n * variables: {\n * tourId: // value for 'tourId'\n * },\n * });\n */\nexport function useGetTourAnalyticsQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables> & ({ variables: Types.GetTourAnalyticsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>(GetTourAnalyticsDocument, options);\n }\nexport function useGetTourAnalyticsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>(GetTourAnalyticsDocument, options);\n }\n// @ts-ignore\nexport function useGetTourAnalyticsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>;\nexport function useGetTourAnalyticsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourAnalyticsQuery | undefined, Types.GetTourAnalyticsQueryVariables>;\nexport function useGetTourAnalyticsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>(GetTourAnalyticsDocument, options);\n }\nexport type GetTourAnalyticsQueryHookResult = ReturnType<typeof useGetTourAnalyticsQuery>;\nexport type GetTourAnalyticsLazyQueryHookResult = ReturnType<typeof useGetTourAnalyticsLazyQuery>;\nexport type GetTourAnalyticsSuspenseQueryHookResult = ReturnType<typeof useGetTourAnalyticsSuspenseQuery>;\nexport type GetTourAnalyticsQueryResult = Apollo.QueryResult<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>;\nexport const GetTourMediaDocument = gql`\n query GetTourMedia {\n tourMedia {\n id\n name\n type\n storageUrl\n cdnUrl\n storagePath\n mimeType\n size\n duration\n width\n height\n altText\n caption\n transcript\n isPublic\n metadata\n uploadedBy\n createdAt\n updatedAt\n }\n}\n `;\n\n/**\n * __useGetTourMediaQuery__\n *\n * To run a query within a React component, call `useGetTourMediaQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourMediaQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourMediaQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetTourMediaQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>(GetTourMediaDocument, options);\n }\nexport function useGetTourMediaLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>(GetTourMediaDocument, options);\n }\n// @ts-ignore\nexport function useGetTourMediaSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>;\nexport function useGetTourMediaSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourMediaQuery | undefined, Types.GetTourMediaQueryVariables>;\nexport function useGetTourMediaSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>(GetTourMediaDocument, options);\n }\nexport type GetTourMediaQueryHookResult = ReturnType<typeof useGetTourMediaQuery>;\nexport type GetTourMediaLazyQueryHookResult = ReturnType<typeof useGetTourMediaLazyQuery>;\nexport type GetTourMediaSuspenseQueryHookResult = ReturnType<typeof useGetTourMediaSuspenseQuery>;\nexport type GetTourMediaQueryResult = Apollo.QueryResult<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>;\nexport const GetTourSchedulesDocument = gql`\n query GetTourSchedules($tourId: ID!) {\n tourSchedules(tourId: $tourId) {\n id\n tourId\n startDate\n endDate\n recurrenceRule\n timezone\n isActive\n lastExecutedAt\n nextExecutionAt\n executionCount\n createdAt\n updatedAt\n }\n}\n `;\n\n/**\n * __useGetTourSchedulesQuery__\n *\n * To run a query within a React component, call `useGetTourSchedulesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourSchedulesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourSchedulesQuery({\n * variables: {\n * tourId: // value for 'tourId'\n * },\n * });\n */\nexport function useGetTourSchedulesQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables> & ({ variables: Types.GetTourSchedulesQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>(GetTourSchedulesDocument, options);\n }\nexport function useGetTourSchedulesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>(GetTourSchedulesDocument, options);\n }\n// @ts-ignore\nexport function useGetTourSchedulesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>;\nexport function useGetTourSchedulesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourSchedulesQuery | undefined, Types.GetTourSchedulesQueryVariables>;\nexport function useGetTourSchedulesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>(GetTourSchedulesDocument, options);\n }\nexport type GetTourSchedulesQueryHookResult = ReturnType<typeof useGetTourSchedulesQuery>;\nexport type GetTourSchedulesLazyQueryHookResult = ReturnType<typeof useGetTourSchedulesLazyQuery>;\nexport type GetTourSchedulesSuspenseQueryHookResult = ReturnType<typeof useGetTourSchedulesSuspenseQuery>;\nexport type GetTourSchedulesQueryResult = Apollo.QueryResult<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>;\nexport const GetTourTemplatesDocument = gql`\n query GetTourTemplates($isPublic: Boolean, $category: String) {\n tourTemplates(isPublic: $isPublic, category: $category) {\n id\n name\n slug\n description\n category\n tags\n thumbnail\n config\n isPublic\n isPremium\n useCount\n createdBy\n createdAt\n updatedAt\n }\n}\n `;\n\n/**\n * __useGetTourTemplatesQuery__\n *\n * To run a query within a React component, call `useGetTourTemplatesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourTemplatesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourTemplatesQuery({\n * variables: {\n * isPublic: // value for 'isPublic'\n * category: // value for 'category'\n * },\n * });\n */\nexport function useGetTourTemplatesQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>(GetTourTemplatesDocument, options);\n }\nexport function useGetTourTemplatesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>(GetTourTemplatesDocument, options);\n }\n// @ts-ignore\nexport function useGetTourTemplatesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>;\nexport function useGetTourTemplatesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourTemplatesQuery | undefined, Types.GetTourTemplatesQueryVariables>;\nexport function useGetTourTemplatesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>(GetTourTemplatesDocument, options);\n }\nexport type GetTourTemplatesQueryHookResult = ReturnType<typeof useGetTourTemplatesQuery>;\nexport type GetTourTemplatesLazyQueryHookResult = ReturnType<typeof useGetTourTemplatesLazyQuery>;\nexport type GetTourTemplatesSuspenseQueryHookResult = ReturnType<typeof useGetTourTemplatesSuspenseQuery>;\nexport type GetTourTemplatesQueryResult = Apollo.QueryResult<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>;\nexport const GetTourUserProgressDocument = gql`\n query GetTourUserProgress($tourId: ID!, $userId: ID!) {\n tourUserProgress(tourId: $tourId, userId: $userId) {\n id\n tourId\n userId\n status\n currentStepId\n currentStepOrder\n completedSteps\n skippedSteps\n deviceType\n startedAt\n completedAt\n lastViewedAt\n }\n}\n `;\n\n/**\n * __useGetTourUserProgressQuery__\n *\n * To run a query within a React component, call `useGetTourUserProgressQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourUserProgressQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourUserProgressQuery({\n * variables: {\n * tourId: // value for 'tourId'\n * userId: // value for 'userId'\n * },\n * });\n */\nexport function useGetTourUserProgressQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables> & ({ variables: Types.GetTourUserProgressQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>(GetTourUserProgressDocument, options);\n }\nexport function useGetTourUserProgressLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>(GetTourUserProgressDocument, options);\n }\n// @ts-ignore\nexport function useGetTourUserProgressSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>;\nexport function useGetTourUserProgressSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourUserProgressQuery | undefined, Types.GetTourUserProgressQueryVariables>;\nexport function useGetTourUserProgressSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>(GetTourUserProgressDocument, options);\n }\nexport type GetTourUserProgressQueryHookResult = ReturnType<typeof useGetTourUserProgressQuery>;\nexport type GetTourUserProgressLazyQueryHookResult = ReturnType<typeof useGetTourUserProgressLazyQuery>;\nexport type GetTourUserProgressSuspenseQueryHookResult = ReturnType<typeof useGetTourUserProgressSuspenseQuery>;\nexport type GetTourUserProgressQueryResult = Apollo.QueryResult<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>;\nexport const GetToursDocument = gql`\n query GetTours($filters: TourFilters, $pagination: TourPagination) {\n tours(filters: $filters, pagination: $pagination) {\n tours {\n id\n name\n slug\n description\n productId\n moduleId\n pageId\n status\n isActive\n triggerType\n priority\n displayOrder\n startDate\n endDate\n viewCount\n completionCount\n skipCount\n steps {\n id\n }\n version\n createdBy\n updatedBy\n createdAt\n updatedAt\n }\n total\n hasMore\n }\n}\n `;\n\n/**\n * __useGetToursQuery__\n *\n * To run a query within a React component, call `useGetToursQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetToursQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetToursQuery({\n * variables: {\n * filters: // value for 'filters'\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetToursQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetToursQuery, Types.GetToursQueryVariables>(GetToursDocument, options);\n }\nexport function useGetToursLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetToursQuery, Types.GetToursQueryVariables>(GetToursDocument, options);\n }\n// @ts-ignore\nexport function useGetToursSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetToursQuery, Types.GetToursQueryVariables>;\nexport function useGetToursSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetToursQuery | undefined, Types.GetToursQueryVariables>;\nexport function useGetToursSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetToursQuery, Types.GetToursQueryVariables>(GetToursDocument, options);\n }\nexport type GetToursQueryHookResult = ReturnType<typeof useGetToursQuery>;\nexport type GetToursLazyQueryHookResult = ReturnType<typeof useGetToursLazyQuery>;\nexport type GetToursSuspenseQueryHookResult = ReturnType<typeof useGetToursSuspenseQuery>;\nexport type GetToursQueryResult = Apollo.QueryResult<Types.GetToursQuery, Types.GetToursQueryVariables>;\nexport const GetToursForContextDocument = gql`\n query GetToursForContext($context: TourContextInput!) {\n toursForContext(context: $context) {\n id\n name\n slug\n description\n productId\n moduleId\n pageId\n status\n isActive\n triggerType\n priority\n displayOrder\n startDate\n endDate\n myProgress {\n id\n tourId\n status\n currentStepId\n currentStepOrder\n startedAt\n completedAt\n lastViewedAt\n }\n }\n}\n `;\n\n/**\n * __useGetToursForContextQuery__\n *\n * To run a query within a React component, call `useGetToursForContextQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetToursForContextQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetToursForContextQuery({\n * variables: {\n * context: // value for 'context'\n * },\n * });\n */\nexport function useGetToursForContextQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables> & ({ variables: Types.GetToursForContextQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>(GetToursForContextDocument, options);\n }\nexport function useGetToursForContextLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>(GetToursForContextDocument, options);\n }\n// @ts-ignore\nexport function useGetToursForContextSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>;\nexport function useGetToursForContextSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetToursForContextQuery | undefined, Types.GetToursForContextQueryVariables>;\nexport function useGetToursForContextSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>(GetToursForContextDocument, options);\n }\nexport type GetToursForContextQueryHookResult = ReturnType<typeof useGetToursForContextQuery>;\nexport type GetToursForContextLazyQueryHookResult = ReturnType<typeof useGetToursForContextLazyQuery>;\nexport type GetToursForContextSuspenseQueryHookResult = ReturnType<typeof useGetToursForContextSuspenseQuery>;\nexport type GetToursForContextQueryResult = Apollo.QueryResult<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>;\nexport const GetUserTourProgressesDocument = gql`\n query GetUserTourProgresses($userId: ID, $pagination: TourPagination) {\n userTourProgresses(userId: $userId, pagination: $pagination) {\n id\n tourId\n userId\n status\n currentStepId\n currentStepOrder\n completedSteps\n skippedSteps\n deviceType\n startedAt\n completedAt\n lastViewedAt\n createdAt\n updatedAt\n tour {\n id\n name\n slug\n description\n productId\n moduleId\n pageId\n status\n }\n }\n}\n `;\n\n/**\n * __useGetUserTourProgressesQuery__\n *\n * To run a query within a React component, call `useGetUserTourProgressesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetUserTourProgressesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetUserTourProgressesQuery({\n * variables: {\n * userId: // value for 'userId'\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetUserTourProgressesQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>(GetUserTourProgressesDocument, options);\n }\nexport function useGetUserTourProgressesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>(GetUserTourProgressesDocument, options);\n }\n// @ts-ignore\nexport function useGetUserTourProgressesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>;\nexport function useGetUserTourProgressesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetUserTourProgressesQuery | undefined, Types.GetUserTourProgressesQueryVariables>;\nexport function useGetUserTourProgressesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>(GetUserTourProgressesDocument, options);\n }\nexport type GetUserTourProgressesQueryHookResult = ReturnType<typeof useGetUserTourProgressesQuery>;\nexport type GetUserTourProgressesLazyQueryHookResult = ReturnType<typeof useGetUserTourProgressesLazyQuery>;\nexport type GetUserTourProgressesSuspenseQueryHookResult = ReturnType<typeof useGetUserTourProgressesSuspenseQuery>;\nexport type GetUserTourProgressesQueryResult = Apollo.QueryResult<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>;\nexport const GetWorkspaceAnalyticsSummaryDocument = gql`\n query GetWorkspaceAnalyticsSummary {\n workspaceAnalyticsSummary {\n totalTours\n publishedTours\n totalViews\n totalCompletions\n overallCompletionRate\n }\n}\n `;\n\n/**\n * __useGetWorkspaceAnalyticsSummaryQuery__\n *\n * To run a query within a React component, call `useGetWorkspaceAnalyticsSummaryQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWorkspaceAnalyticsSummaryQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWorkspaceAnalyticsSummaryQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetWorkspaceAnalyticsSummaryQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>(GetWorkspaceAnalyticsSummaryDocument, options);\n }\nexport function useGetWorkspaceAnalyticsSummaryLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>(GetWorkspaceAnalyticsSummaryDocument, options);\n }\n// @ts-ignore\nexport function useGetWorkspaceAnalyticsSummarySuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>;\nexport function useGetWorkspaceAnalyticsSummarySuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceAnalyticsSummaryQuery | undefined, Types.GetWorkspaceAnalyticsSummaryQueryVariables>;\nexport function useGetWorkspaceAnalyticsSummarySuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>(GetWorkspaceAnalyticsSummaryDocument, options);\n }\nexport type GetWorkspaceAnalyticsSummaryQueryHookResult = ReturnType<typeof useGetWorkspaceAnalyticsSummaryQuery>;\nexport type GetWorkspaceAnalyticsSummaryLazyQueryHookResult = ReturnType<typeof useGetWorkspaceAnalyticsSummaryLazyQuery>;\nexport type GetWorkspaceAnalyticsSummarySuspenseQueryHookResult = ReturnType<typeof useGetWorkspaceAnalyticsSummarySuspenseQuery>;\nexport type GetWorkspaceAnalyticsSummaryQueryResult = Apollo.QueryResult<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>;"],"mappings":";;;AAMA,IAAM,IAAiB,EAAE,EAqMZ,IAAsC,CAAG;;;;;;;;;;;;AA+BtD,SAAgB,EAAoC,GAA0I;CACtL,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,SAAkG,GAAqC,EAAQ;;AAiB/K,IAAa,IAAqB,CAAG;;;;;AAwBrC,SAAgB,EAAsB,GAAiH;CAC/I,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAAyE,GAAoB,EAAQ;;AAKrI,IAAa,IAAwB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;OAoD3B,IAAsB,CAAG;;;;;;;;;;;;AA+BtC,SAAgB,EAAuB,GAAmH;CAClJ,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAA2E,GAAqB,EAAQ;;AAKxI,IAAa,IAA4B,CAAG;;;;;;;;;;;;;;;;;AAoC5C,SAAgB,EAA6B,GAA+H;CACpK,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAAuF,GAA2B,EAAQ;;AAK1J,IAAa,IAAqB,CAAG;;;;;;;;;;;OAsCxB,IAAiC,CAAG;;;;;;;;;;;;;;;;;;AAqCjD,SAAgB,EAAkC,GAAyI;CACnL,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAAiG,GAAgC,EAAQ;;AAKzK,IAAa,IAA0B,CAAG;;;;;;;;;;;;;;;;;;;;;;AAyC1C,SAAgB,EAA2B,GAA2H;CAC9J,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAAmF,GAAyB,EAAQ;;AAKpJ,IAAa,IAA6B,CAAG;;;;;;;;;;;;;;;;AAmC7C,SAAgB,EAA8B,GAAiI;CACvK,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAAyF,GAA4B,EAAQ;;AAK7J,IAAa,IAA0B,CAAG;;;;;AAwB1C,SAAgB,EAA2B,GAA2H;CAC9J,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAAmF,GAAyB,EAAQ;;AAKpJ,IAAa,IAA6B,CAAG;;;;;AAwB7C,SAAgB,EAA8B,GAAiI;CACvK,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAAyF,GAA4B,EAAQ;;AAK7J,IAAa,IAAwB,CAAG;;;;;;;;;;;;AAgCxC,SAAgB,EAAyB,GAAuH;CACxJ,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAA+E,GAAuB,EAAQ;;AAK9I,IAAa,IAAsB,CAAG;;;;;;;;;;;;AA+BtC,SAAgB,EAAuB,GAAmH;CAClJ,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAA2E,GAAqB,EAAQ;;AAKxI,IAAa,IAA6B,CAAG;;;;;;;;;;;;;;;AAmC7C,SAAgB,EAA8B,GAAiI;CACvK,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAAyF,GAA4B,EAAQ;;AAK7J,IAAa,IAAwB,CAAG;;;;;;;;;;;;AA+BxC,SAAgB,EAAyB,GAAuH;CACxJ,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,YAA+E,GAAuB,EAAQ;;AAK9I,IAAa,IAAqB,CAAG;;;;;;;;;;;AAsCW,CAAG;;;;;;;;;;;;;;;;;;;;;AAyDnD,IAAa,IAAkB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuHrB,IAA2B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4C3C,SAAgB,EAAyB,GAAkN;CACnP,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,SAA4E,GAA0B,EAAQ;;AAiB9I,IAAa,IAAuB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;AAyCvC,SAAgB,EAAqB,GAA4G;CACzI,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,SAAoE,GAAsB,EAAQ;;AAiBlI,IAAa,IAA2B,CAAG;;;;;;;;;;;;;;;;;;AAmC3C,SAAgB,EAAyB,GAAkN;CACnP,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,SAA4E,GAA0B,EAAQ;;AAiB9I,IAAa,IAA2B,CAAG;;;;;;;;;;;;;;;;;;;;AAsC3C,SAAgB,EAAyB,GAAoH;CACrJ,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,SAA4E,GAA0B,EAAQ;;AAiBnG,CAAG;;;;;;;;;;;;;;;;;;AAuD9C,IAAa,IAAmB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwEtB,IAA6B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+C7C,SAAgB,EAA2B,GAAwN;CAC3P,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,SAAgF,GAA4B,EAAQ;;AAiBpJ,IAAa,IAAgC,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDhD,SAAgB,EAA8B,GAA8H;CACpK,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,SAAsF,GAA+B,EAAQ;;AAiB7J,IAAa,IAAuC,CAAG;;;;;;;;;;;AA2BvD,SAAgB,EAAqC,GAA4I;CACzL,IAAM,IAAU;EAAC,GAAG;EAAgB,GAAG;EAAY;AACnD,QAAO,EAAiB,SAAoG,GAAsC,EAAQ"}
1
+ {"version":3,"file":"global-operations.js","names":[],"sources":["../../src/generated/global-operations.ts"],"sourcesContent":["// @ts-nocheck\nimport * as Types from './global-types';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nimport * as ApolloReactHooks from '@apollo/client/react';\nconst defaultOptions = {} as const;\nexport type GetPlatformProductsForToursQueryVariables = Types.Exact<{\n filter?: Types.InputMaybe<Types.PlatformProductFilterInput>;\n limit?: Types.InputMaybe<Types.Scalars['Int']['input']>;\n offset?: Types.InputMaybe<Types.Scalars['Int']['input']>;\n}>;\n\n\nexport type GetPlatformProductsForToursQuery = { __typename?: 'Query', platformProducts: { __typename?: 'PlatformProductList', items: Array<{ __typename?: 'PlatformProduct', id: string, name: string, slug: string, status: Types.PlatformProductStatus }> } };\n\nexport type DeleteTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type DeleteTourMutation = { __typename?: 'Mutation', deleteTour: boolean };\n\nexport type SyncTourStepsMutationVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n steps: Array<Types.SyncTourStepInput> | Types.SyncTourStepInput;\n}>;\n\n\nexport type SyncTourStepsMutation = { __typename?: 'Mutation', syncTourSteps: Array<{ __typename?: 'TourStep', id: string, tourId: string, title: string, content: string, stepOrder: number, targetSelector?: string | null, placement: Types.TourStepPlacement, targetSelectorMobile?: string | null, targetSelectorTablet?: string | null, targetSelectorDesktop?: string | null, customData?: Record<string, unknown> | null, actions?: Record<string, unknown> | null, requireInteraction: boolean, waitForSelector?: string | null, waitForEvent?: string | null, waitForTimeout?: number | null, skipConditions?: Record<string, unknown> | null, createdAt: string, updatedAt: string }> };\n\nexport type ArchiveTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type ArchiveTourMutation = { __typename?: 'Mutation', archiveTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, isActive: boolean, updatedAt: string } };\n\nexport type AttachMediaToStepMutationVariables = Types.Exact<{\n input: Types.AttachMediaToStepInput;\n}>;\n\n\nexport type AttachMediaToStepMutation = { __typename?: 'Mutation', attachMediaToStep: { __typename?: 'TourStepMedia', id: string, tourStepId: string, mediaId: string, position: Types.MediaPosition, createdAt: string, media: { __typename?: 'TourMedia', id: string, name: string, type: Types.TourMediaType, cdnUrl?: string | null } } };\n\nexport type CreateTourMutationVariables = Types.Exact<{\n input: Types.CreateTourInput;\n}>;\n\n\nexport type CreateTourMutation = { __typename?: 'Mutation', createTour: { __typename?: 'Tour', id: string, name: string, slug: string, productId: string, status: Types.TourStatus, createdAt: string } };\n\nexport type CreateTourFromTemplateMutationVariables = Types.Exact<{\n templateId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type CreateTourFromTemplateMutation = { __typename?: 'Mutation', createTourFromTemplate: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, steps: Array<{ __typename?: 'TourStep', id: string, title: string, stepOrder: number, content: string, targetSelector?: string | null, placement: Types.TourStepPlacement }> } };\n\nexport type CreateTourMediaMetadataMutationVariables = Types.Exact<{\n input: Types.CreateTourMediaInput;\n}>;\n\n\nexport type CreateTourMediaMetadataMutation = { __typename?: 'Mutation', createTourMediaMetadata: { __typename?: 'TourMedia', id: string, name: string, type: Types.TourMediaType, storageUrl: string, cdnUrl?: string | null, storagePath: string, mimeType: string, size: number, duration?: number | null, width?: number | null, height?: number | null, altText?: string | null, caption?: string | null, transcript?: string | null, uploadedBy?: string | null, createdAt: string } };\n\nexport type CreateTourScheduleMutationVariables = Types.Exact<{\n input: Types.CreateTourScheduleInput;\n}>;\n\n\nexport type CreateTourScheduleMutation = { __typename?: 'Mutation', createTourSchedule: { __typename?: 'TourSchedule', id: string, tourId: string, startDate: string, endDate?: string | null, recurrenceRule?: string | null, timezone: string, isActive: boolean, nextExecutionAt?: string | null, executionCount: number, createdAt: string } };\n\nexport type DeleteTourMediaMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type DeleteTourMediaMutation = { __typename?: 'Mutation', deleteTourMedia: boolean };\n\nexport type DeleteTourTemplateMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type DeleteTourTemplateMutation = { __typename?: 'Mutation', deleteTourTemplate: boolean };\n\nexport type DuplicateTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n newName?: Types.InputMaybe<Types.Scalars['String']['input']>;\n}>;\n\n\nexport type DuplicateTourMutation = { __typename?: 'Mutation', duplicateTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, productId: string, createdAt: string } };\n\nexport type PublishTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type PublishTourMutation = { __typename?: 'Mutation', publishTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, isActive: boolean, updatedAt: string } };\n\nexport type SaveTourAsTemplateMutationVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n input: Types.SaveTourAsTemplateInput;\n}>;\n\n\nexport type SaveTourAsTemplateMutation = { __typename?: 'Mutation', saveTourAsTemplate: { __typename?: 'TourTemplate', id: string, name: string, slug: string, description?: string | null, category?: string | null, isPublic: boolean, isPremium: boolean, useCount: number, createdAt: string } };\n\nexport type UnpublishTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type UnpublishTourMutation = { __typename?: 'Mutation', unpublishTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, isActive: boolean, updatedAt: string } };\n\nexport type UpdateTourMutationVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n input: Types.UpdateTourInput;\n}>;\n\n\nexport type UpdateTourMutation = { __typename?: 'Mutation', updateTour: { __typename?: 'Tour', id: string, name: string, slug: string, status: Types.TourStatus, updatedAt: string } };\n\nexport type GetProductTourStatisticsQueryVariables = Types.Exact<{\n productId: Types.Scalars['String']['input'];\n}>;\n\n\nexport type GetProductTourStatisticsQuery = { __typename?: 'Query', productTourStatistics: { __typename?: 'ProductTourStatistics', productId: string, totalTours: number, publishedTours: number, totalViews: number, totalCompletions: number, totalSkips: number, averageCompletionRate: number, tourBreakdown: Array<{ __typename?: 'TourStatSummary', tourId: string, tourName: string, viewCount: number, completionCount: number, skipCount: number, completionRate: number }> } };\n\nexport type GetTourQueryVariables = Types.Exact<{\n id: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetTourQuery = { __typename?: 'Query', tour?: { __typename?: 'Tour', id: string, name: string, slug: string, description?: string | null, productId: string, moduleId?: string | null, pageId?: string | null, status: Types.TourStatus, isActive: boolean, triggerType: Types.TourTriggerType, triggerConfig?: Record<string, unknown> | null, mobileConfig?: Record<string, unknown> | null, tabletConfig?: Record<string, unknown> | null, desktopConfig?: Record<string, unknown> | null, priority: number, displayOrder: number, startDate?: string | null, endDate?: string | null, viewCount: number, completionCount: number, skipCount: number, metadata?: Record<string, unknown> | null, version: number, createdBy?: string | null, updatedBy?: string | null, createdAt: string, updatedAt: string, steps: Array<{ __typename?: 'TourStep', id: string, tourId: string, title: string, content: string, stepOrder: number, targetSelector?: string | null, placement: Types.TourStepPlacement, targetSelectorMobile?: string | null, targetSelectorTablet?: string | null, targetSelectorDesktop?: string | null, customData?: Record<string, unknown> | null, actions?: Record<string, unknown> | null, requireInteraction: boolean, waitForSelector?: string | null, waitForEvent?: string | null, waitForTimeout?: number | null, skipConditions?: Record<string, unknown> | null, metadata?: Record<string, unknown> | null, createdAt: string, updatedAt: string, media?: Array<{ __typename?: 'TourStepMedia', id: string, position: Types.MediaPosition, mediaId: string, media: { __typename?: 'TourMedia', id: string, name: string, type: Types.TourMediaType, cdnUrl?: string | null, mimeType: string, size: number, duration?: number | null, width?: number | null, height?: number | null, altText?: string | null, caption?: string | null, transcript?: string | null } }> | null }>, schedules?: Array<{ __typename?: 'TourSchedule', id: string, startDate: string, endDate?: string | null, recurrenceRule?: string | null, timezone: string, isActive: boolean, nextExecutionAt?: string | null }> | null } | null };\n\nexport type GetTourAnalyticsQueryVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetTourAnalyticsQuery = { __typename?: 'Query', tourAnalytics: { __typename?: 'TourAnalyticsAggregation', totalViews: number, totalCompletions: number, totalSkips: number, averageCompletionRate: number, averageDuration: number, byDeviceType: Array<{ __typename?: 'DeviceTypeStats', deviceType: Types.DeviceType, count: number, completionRate: number }>, byEventType: Array<{ __typename?: 'TourEventTypeStats', eventType: Types.TourAnalyticsEventType, count: number }> }, tourStepAnalytics: Array<{ __typename?: 'TourStepAnalytics', stepId: string, viewCount: number, completionCount: number, skipCount: number, averageDuration: number }> };\n\nexport type GetTourMediaQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetTourMediaQuery = { __typename?: 'Query', tourMedia: Array<{ __typename?: 'TourMedia', id: string, name: string, type: Types.TourMediaType, storageUrl: string, cdnUrl?: string | null, storagePath: string, mimeType: string, size: number, duration?: number | null, width?: number | null, height?: number | null, altText?: string | null, caption?: string | null, transcript?: string | null, isPublic: boolean, metadata?: Record<string, unknown> | null, uploadedBy?: string | null, createdAt: string, updatedAt: string }> };\n\nexport type GetTourSchedulesQueryVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetTourSchedulesQuery = { __typename?: 'Query', tourSchedules: Array<{ __typename?: 'TourSchedule', id: string, tourId: string, startDate: string, endDate?: string | null, recurrenceRule?: string | null, timezone: string, isActive: boolean, lastExecutedAt?: string | null, nextExecutionAt?: string | null, executionCount: number, createdAt: string, updatedAt: string }> };\n\nexport type GetTourTemplatesQueryVariables = Types.Exact<{\n isPublic?: Types.InputMaybe<Types.Scalars['Boolean']['input']>;\n category?: Types.InputMaybe<Types.Scalars['String']['input']>;\n}>;\n\n\nexport type GetTourTemplatesQuery = { __typename?: 'Query', tourTemplates: Array<{ __typename?: 'TourTemplate', id: string, name: string, slug: string, description?: string | null, category?: string | null, tags: Array<string>, thumbnail?: string | null, config: Record<string, unknown>, isPublic: boolean, isPremium: boolean, useCount: number, createdBy?: string | null, createdAt: string, updatedAt: string }> };\n\nexport type GetTourUserProgressQueryVariables = Types.Exact<{\n tourId: Types.Scalars['ID']['input'];\n userId: Types.Scalars['ID']['input'];\n}>;\n\n\nexport type GetTourUserProgressQuery = { __typename?: 'Query', tourUserProgress?: { __typename?: 'TourUserProgress', id: string, tourId: string, userId: string, status: Types.TourUserStatus, currentStepId?: string | null, currentStepOrder?: number | null, completedSteps?: Record<string, unknown> | null, skippedSteps?: Record<string, unknown> | null, deviceType?: Types.DeviceType | null, startedAt?: string | null, completedAt?: string | null, lastViewedAt?: string | null } | null };\n\nexport type GetToursQueryVariables = Types.Exact<{\n filters?: Types.InputMaybe<Types.TourFilters>;\n pagination?: Types.InputMaybe<Types.TourPagination>;\n}>;\n\n\nexport type GetToursQuery = { __typename?: 'Query', tours: { __typename?: 'ToursResponse', total: number, hasMore: boolean, tours: Array<{ __typename?: 'Tour', id: string, name: string, slug: string, description?: string | null, productId: string, moduleId?: string | null, pageId?: string | null, status: Types.TourStatus, isActive: boolean, triggerType: Types.TourTriggerType, priority: number, displayOrder: number, startDate?: string | null, endDate?: string | null, viewCount: number, completionCount: number, skipCount: number, version: number, createdBy?: string | null, updatedBy?: string | null, createdAt: string, updatedAt: string, steps: Array<{ __typename?: 'TourStep', id: string }> }> } };\n\nexport type GetToursForContextQueryVariables = Types.Exact<{\n context: Types.TourContextInput;\n}>;\n\n\nexport type GetToursForContextQuery = { __typename?: 'Query', toursForContext: Array<{ __typename?: 'Tour', id: string, name: string, slug: string, description?: string | null, productId: string, moduleId?: string | null, pageId?: string | null, status: Types.TourStatus, isActive: boolean, triggerType: Types.TourTriggerType, priority: number, displayOrder: number, startDate?: string | null, endDate?: string | null, myProgress?: { __typename?: 'TourUserProgress', id: string, tourId: string, status: Types.TourUserStatus, currentStepId?: string | null, currentStepOrder?: number | null, startedAt?: string | null, completedAt?: string | null, lastViewedAt?: string | null } | null }> };\n\nexport type GetUserTourProgressesQueryVariables = Types.Exact<{\n userId?: Types.InputMaybe<Types.Scalars['ID']['input']>;\n pagination?: Types.InputMaybe<Types.TourPagination>;\n}>;\n\n\nexport type GetUserTourProgressesQuery = { __typename?: 'Query', userTourProgresses: Array<{ __typename?: 'TourUserProgress', id: string, tourId: string, userId: string, status: Types.TourUserStatus, currentStepId?: string | null, currentStepOrder?: number | null, completedSteps?: Record<string, unknown> | null, skippedSteps?: Record<string, unknown> | null, deviceType?: Types.DeviceType | null, startedAt?: string | null, completedAt?: string | null, lastViewedAt?: string | null, createdAt: string, updatedAt: string, tour: { __typename?: 'Tour', id: string, name: string, slug: string, description?: string | null, productId: string, moduleId?: string | null, pageId?: string | null, status: Types.TourStatus } }> };\n\nexport type GetWorkspaceAnalyticsSummaryQueryVariables = Types.Exact<{ [key: string]: never; }>;\n\n\nexport type GetWorkspaceAnalyticsSummaryQuery = { __typename?: 'Query', workspaceAnalyticsSummary: { __typename?: 'WorkspaceTourAnalyticsSummary', totalTours: number, publishedTours: number, totalViews: number, totalCompletions: number, overallCompletionRate: number } };\n\n\nexport const GetPlatformProductsForToursDocument = gql`\n query GetPlatformProductsForTours($filter: PlatformProductFilterInput, $limit: Int, $offset: Int) {\n platformProducts(filter: $filter, limit: $limit, offset: $offset) {\n items {\n id\n name\n slug\n status\n }\n }\n}\n `;\n\n/**\n * __useGetPlatformProductsForToursQuery__\n *\n * To run a query within a React component, call `useGetPlatformProductsForToursQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetPlatformProductsForToursQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetPlatformProductsForToursQuery({\n * variables: {\n * filter: // value for 'filter'\n * limit: // value for 'limit'\n * offset: // value for 'offset'\n * },\n * });\n */\nexport function useGetPlatformProductsForToursQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>(GetPlatformProductsForToursDocument, options);\n }\nexport function useGetPlatformProductsForToursLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>(GetPlatformProductsForToursDocument, options);\n }\n// @ts-ignore\nexport function useGetPlatformProductsForToursSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>;\nexport function useGetPlatformProductsForToursSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetPlatformProductsForToursQuery | undefined, Types.GetPlatformProductsForToursQueryVariables>;\nexport function useGetPlatformProductsForToursSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>(GetPlatformProductsForToursDocument, options);\n }\nexport type GetPlatformProductsForToursQueryHookResult = ReturnType<typeof useGetPlatformProductsForToursQuery>;\nexport type GetPlatformProductsForToursLazyQueryHookResult = ReturnType<typeof useGetPlatformProductsForToursLazyQuery>;\nexport type GetPlatformProductsForToursSuspenseQueryHookResult = ReturnType<typeof useGetPlatformProductsForToursSuspenseQuery>;\nexport type GetPlatformProductsForToursQueryResult = Apollo.QueryResult<Types.GetPlatformProductsForToursQuery, Types.GetPlatformProductsForToursQueryVariables>;\nexport const DeleteTourDocument = gql`\n mutation DeleteTour($id: ID!) {\n deleteTour(id: $id)\n}\n `;\nexport type DeleteTourMutationFn = Apollo.MutationFunction<Types.DeleteTourMutation, Types.DeleteTourMutationVariables>;\n\n/**\n * __useDeleteTourMutation__\n *\n * To run a mutation, you first call `useDeleteTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTourMutation, { data, loading, error }] = useDeleteTourMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDeleteTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DeleteTourMutation, Types.DeleteTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DeleteTourMutation, Types.DeleteTourMutationVariables>(DeleteTourDocument, options);\n }\nexport type DeleteTourMutationHookResult = ReturnType<typeof useDeleteTourMutation>;\nexport type DeleteTourMutationResult = Apollo.MutationResult<Types.DeleteTourMutation>;\nexport type DeleteTourMutationOptions = Apollo.BaseMutationOptions<Types.DeleteTourMutation, Types.DeleteTourMutationVariables>;\nexport const SyncTourStepsDocument = gql`\n mutation SyncTourSteps($tourId: ID!, $steps: [SyncTourStepInput!]!) {\n syncTourSteps(tourId: $tourId, steps: $steps) {\n id\n tourId\n title\n content\n stepOrder\n targetSelector\n placement\n targetSelectorMobile\n targetSelectorTablet\n targetSelectorDesktop\n customData\n actions\n requireInteraction\n waitForSelector\n waitForEvent\n waitForTimeout\n skipConditions\n createdAt\n updatedAt\n }\n}\n `;\nexport type SyncTourStepsMutationFn = Apollo.MutationFunction<Types.SyncTourStepsMutation, Types.SyncTourStepsMutationVariables>;\n\n/**\n * __useSyncTourStepsMutation__\n *\n * To run a mutation, you first call `useSyncTourStepsMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSyncTourStepsMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [syncTourStepsMutation, { data, loading, error }] = useSyncTourStepsMutation({\n * variables: {\n * tourId: // value for 'tourId'\n * steps: // value for 'steps'\n * },\n * });\n */\nexport function useSyncTourStepsMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.SyncTourStepsMutation, Types.SyncTourStepsMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.SyncTourStepsMutation, Types.SyncTourStepsMutationVariables>(SyncTourStepsDocument, options);\n }\nexport type SyncTourStepsMutationHookResult = ReturnType<typeof useSyncTourStepsMutation>;\nexport type SyncTourStepsMutationResult = Apollo.MutationResult<Types.SyncTourStepsMutation>;\nexport type SyncTourStepsMutationOptions = Apollo.BaseMutationOptions<Types.SyncTourStepsMutation, Types.SyncTourStepsMutationVariables>;\nexport const ArchiveTourDocument = gql`\n mutation ArchiveTour($id: ID!) {\n archiveTour(id: $id) {\n id\n name\n slug\n status\n isActive\n updatedAt\n }\n}\n `;\nexport type ArchiveTourMutationFn = Apollo.MutationFunction<Types.ArchiveTourMutation, Types.ArchiveTourMutationVariables>;\n\n/**\n * __useArchiveTourMutation__\n *\n * To run a mutation, you first call `useArchiveTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useArchiveTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [archiveTourMutation, { data, loading, error }] = useArchiveTourMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useArchiveTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.ArchiveTourMutation, Types.ArchiveTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.ArchiveTourMutation, Types.ArchiveTourMutationVariables>(ArchiveTourDocument, options);\n }\nexport type ArchiveTourMutationHookResult = ReturnType<typeof useArchiveTourMutation>;\nexport type ArchiveTourMutationResult = Apollo.MutationResult<Types.ArchiveTourMutation>;\nexport type ArchiveTourMutationOptions = Apollo.BaseMutationOptions<Types.ArchiveTourMutation, Types.ArchiveTourMutationVariables>;\nexport const AttachMediaToStepDocument = gql`\n mutation AttachMediaToStep($input: AttachMediaToStepInput!) {\n attachMediaToStep(input: $input) {\n id\n tourStepId\n mediaId\n position\n createdAt\n media {\n id\n name\n type\n cdnUrl\n }\n }\n}\n `;\nexport type AttachMediaToStepMutationFn = Apollo.MutationFunction<Types.AttachMediaToStepMutation, Types.AttachMediaToStepMutationVariables>;\n\n/**\n * __useAttachMediaToStepMutation__\n *\n * To run a mutation, you first call `useAttachMediaToStepMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useAttachMediaToStepMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [attachMediaToStepMutation, { data, loading, error }] = useAttachMediaToStepMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useAttachMediaToStepMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.AttachMediaToStepMutation, Types.AttachMediaToStepMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.AttachMediaToStepMutation, Types.AttachMediaToStepMutationVariables>(AttachMediaToStepDocument, options);\n }\nexport type AttachMediaToStepMutationHookResult = ReturnType<typeof useAttachMediaToStepMutation>;\nexport type AttachMediaToStepMutationResult = Apollo.MutationResult<Types.AttachMediaToStepMutation>;\nexport type AttachMediaToStepMutationOptions = Apollo.BaseMutationOptions<Types.AttachMediaToStepMutation, Types.AttachMediaToStepMutationVariables>;\nexport const CreateTourDocument = gql`\n mutation CreateTour($input: CreateTourInput!) {\n createTour(input: $input) {\n id\n name\n slug\n productId\n status\n createdAt\n }\n}\n `;\nexport type CreateTourMutationFn = Apollo.MutationFunction<Types.CreateTourMutation, Types.CreateTourMutationVariables>;\n\n/**\n * __useCreateTourMutation__\n *\n * To run a mutation, you first call `useCreateTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTourMutation, { data, loading, error }] = useCreateTourMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useCreateTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateTourMutation, Types.CreateTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateTourMutation, Types.CreateTourMutationVariables>(CreateTourDocument, options);\n }\nexport type CreateTourMutationHookResult = ReturnType<typeof useCreateTourMutation>;\nexport type CreateTourMutationResult = Apollo.MutationResult<Types.CreateTourMutation>;\nexport type CreateTourMutationOptions = Apollo.BaseMutationOptions<Types.CreateTourMutation, Types.CreateTourMutationVariables>;\nexport const CreateTourFromTemplateDocument = gql`\n mutation CreateTourFromTemplate($templateId: ID!) {\n createTourFromTemplate(templateId: $templateId) {\n id\n name\n slug\n status\n steps {\n id\n title\n stepOrder\n content\n targetSelector\n placement\n }\n }\n}\n `;\nexport type CreateTourFromTemplateMutationFn = Apollo.MutationFunction<Types.CreateTourFromTemplateMutation, Types.CreateTourFromTemplateMutationVariables>;\n\n/**\n * __useCreateTourFromTemplateMutation__\n *\n * To run a mutation, you first call `useCreateTourFromTemplateMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTourFromTemplateMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTourFromTemplateMutation, { data, loading, error }] = useCreateTourFromTemplateMutation({\n * variables: {\n * templateId: // value for 'templateId'\n * },\n * });\n */\nexport function useCreateTourFromTemplateMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateTourFromTemplateMutation, Types.CreateTourFromTemplateMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateTourFromTemplateMutation, Types.CreateTourFromTemplateMutationVariables>(CreateTourFromTemplateDocument, options);\n }\nexport type CreateTourFromTemplateMutationHookResult = ReturnType<typeof useCreateTourFromTemplateMutation>;\nexport type CreateTourFromTemplateMutationResult = Apollo.MutationResult<Types.CreateTourFromTemplateMutation>;\nexport type CreateTourFromTemplateMutationOptions = Apollo.BaseMutationOptions<Types.CreateTourFromTemplateMutation, Types.CreateTourFromTemplateMutationVariables>;\nexport const CreateTourMediaMetadataDocument = gql`\n mutation CreateTourMediaMetadata($input: CreateTourMediaInput!) {\n createTourMediaMetadata(input: $input) {\n id\n name\n type\n storageUrl\n cdnUrl\n storagePath\n mimeType\n size\n duration\n width\n height\n altText\n caption\n transcript\n uploadedBy\n createdAt\n }\n}\n `;\nexport type CreateTourMediaMetadataMutationFn = Apollo.MutationFunction<Types.CreateTourMediaMetadataMutation, Types.CreateTourMediaMetadataMutationVariables>;\n\n/**\n * __useCreateTourMediaMetadataMutation__\n *\n * To run a mutation, you first call `useCreateTourMediaMetadataMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTourMediaMetadataMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTourMediaMetadataMutation, { data, loading, error }] = useCreateTourMediaMetadataMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useCreateTourMediaMetadataMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateTourMediaMetadataMutation, Types.CreateTourMediaMetadataMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateTourMediaMetadataMutation, Types.CreateTourMediaMetadataMutationVariables>(CreateTourMediaMetadataDocument, options);\n }\nexport type CreateTourMediaMetadataMutationHookResult = ReturnType<typeof useCreateTourMediaMetadataMutation>;\nexport type CreateTourMediaMetadataMutationResult = Apollo.MutationResult<Types.CreateTourMediaMetadataMutation>;\nexport type CreateTourMediaMetadataMutationOptions = Apollo.BaseMutationOptions<Types.CreateTourMediaMetadataMutation, Types.CreateTourMediaMetadataMutationVariables>;\nexport const CreateTourScheduleDocument = gql`\n mutation CreateTourSchedule($input: CreateTourScheduleInput!) {\n createTourSchedule(input: $input) {\n id\n tourId\n startDate\n endDate\n recurrenceRule\n timezone\n isActive\n nextExecutionAt\n executionCount\n createdAt\n }\n}\n `;\nexport type CreateTourScheduleMutationFn = Apollo.MutationFunction<Types.CreateTourScheduleMutation, Types.CreateTourScheduleMutationVariables>;\n\n/**\n * __useCreateTourScheduleMutation__\n *\n * To run a mutation, you first call `useCreateTourScheduleMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTourScheduleMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTourScheduleMutation, { data, loading, error }] = useCreateTourScheduleMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useCreateTourScheduleMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.CreateTourScheduleMutation, Types.CreateTourScheduleMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.CreateTourScheduleMutation, Types.CreateTourScheduleMutationVariables>(CreateTourScheduleDocument, options);\n }\nexport type CreateTourScheduleMutationHookResult = ReturnType<typeof useCreateTourScheduleMutation>;\nexport type CreateTourScheduleMutationResult = Apollo.MutationResult<Types.CreateTourScheduleMutation>;\nexport type CreateTourScheduleMutationOptions = Apollo.BaseMutationOptions<Types.CreateTourScheduleMutation, Types.CreateTourScheduleMutationVariables>;\nexport const DeleteTourMediaDocument = gql`\n mutation DeleteTourMedia($id: ID!) {\n deleteTourMedia(id: $id)\n}\n `;\nexport type DeleteTourMediaMutationFn = Apollo.MutationFunction<Types.DeleteTourMediaMutation, Types.DeleteTourMediaMutationVariables>;\n\n/**\n * __useDeleteTourMediaMutation__\n *\n * To run a mutation, you first call `useDeleteTourMediaMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTourMediaMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTourMediaMutation, { data, loading, error }] = useDeleteTourMediaMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDeleteTourMediaMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DeleteTourMediaMutation, Types.DeleteTourMediaMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DeleteTourMediaMutation, Types.DeleteTourMediaMutationVariables>(DeleteTourMediaDocument, options);\n }\nexport type DeleteTourMediaMutationHookResult = ReturnType<typeof useDeleteTourMediaMutation>;\nexport type DeleteTourMediaMutationResult = Apollo.MutationResult<Types.DeleteTourMediaMutation>;\nexport type DeleteTourMediaMutationOptions = Apollo.BaseMutationOptions<Types.DeleteTourMediaMutation, Types.DeleteTourMediaMutationVariables>;\nexport const DeleteTourTemplateDocument = gql`\n mutation DeleteTourTemplate($id: ID!) {\n deleteTourTemplate(id: $id)\n}\n `;\nexport type DeleteTourTemplateMutationFn = Apollo.MutationFunction<Types.DeleteTourTemplateMutation, Types.DeleteTourTemplateMutationVariables>;\n\n/**\n * __useDeleteTourTemplateMutation__\n *\n * To run a mutation, you first call `useDeleteTourTemplateMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTourTemplateMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTourTemplateMutation, { data, loading, error }] = useDeleteTourTemplateMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useDeleteTourTemplateMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DeleteTourTemplateMutation, Types.DeleteTourTemplateMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DeleteTourTemplateMutation, Types.DeleteTourTemplateMutationVariables>(DeleteTourTemplateDocument, options);\n }\nexport type DeleteTourTemplateMutationHookResult = ReturnType<typeof useDeleteTourTemplateMutation>;\nexport type DeleteTourTemplateMutationResult = Apollo.MutationResult<Types.DeleteTourTemplateMutation>;\nexport type DeleteTourTemplateMutationOptions = Apollo.BaseMutationOptions<Types.DeleteTourTemplateMutation, Types.DeleteTourTemplateMutationVariables>;\nexport const DuplicateTourDocument = gql`\n mutation DuplicateTour($id: ID!, $newName: String) {\n duplicateTour(id: $id, newName: $newName) {\n id\n name\n slug\n status\n productId\n createdAt\n }\n}\n `;\nexport type DuplicateTourMutationFn = Apollo.MutationFunction<Types.DuplicateTourMutation, Types.DuplicateTourMutationVariables>;\n\n/**\n * __useDuplicateTourMutation__\n *\n * To run a mutation, you first call `useDuplicateTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDuplicateTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [duplicateTourMutation, { data, loading, error }] = useDuplicateTourMutation({\n * variables: {\n * id: // value for 'id'\n * newName: // value for 'newName'\n * },\n * });\n */\nexport function useDuplicateTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.DuplicateTourMutation, Types.DuplicateTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.DuplicateTourMutation, Types.DuplicateTourMutationVariables>(DuplicateTourDocument, options);\n }\nexport type DuplicateTourMutationHookResult = ReturnType<typeof useDuplicateTourMutation>;\nexport type DuplicateTourMutationResult = Apollo.MutationResult<Types.DuplicateTourMutation>;\nexport type DuplicateTourMutationOptions = Apollo.BaseMutationOptions<Types.DuplicateTourMutation, Types.DuplicateTourMutationVariables>;\nexport const PublishTourDocument = gql`\n mutation PublishTour($id: ID!) {\n publishTour(id: $id) {\n id\n name\n slug\n status\n isActive\n updatedAt\n }\n}\n `;\nexport type PublishTourMutationFn = Apollo.MutationFunction<Types.PublishTourMutation, Types.PublishTourMutationVariables>;\n\n/**\n * __usePublishTourMutation__\n *\n * To run a mutation, you first call `usePublishTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `usePublishTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [publishTourMutation, { data, loading, error }] = usePublishTourMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function usePublishTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.PublishTourMutation, Types.PublishTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.PublishTourMutation, Types.PublishTourMutationVariables>(PublishTourDocument, options);\n }\nexport type PublishTourMutationHookResult = ReturnType<typeof usePublishTourMutation>;\nexport type PublishTourMutationResult = Apollo.MutationResult<Types.PublishTourMutation>;\nexport type PublishTourMutationOptions = Apollo.BaseMutationOptions<Types.PublishTourMutation, Types.PublishTourMutationVariables>;\nexport const SaveTourAsTemplateDocument = gql`\n mutation SaveTourAsTemplate($tourId: ID!, $input: SaveTourAsTemplateInput!) {\n saveTourAsTemplate(tourId: $tourId, input: $input) {\n id\n name\n slug\n description\n category\n isPublic\n isPremium\n useCount\n createdAt\n }\n}\n `;\nexport type SaveTourAsTemplateMutationFn = Apollo.MutationFunction<Types.SaveTourAsTemplateMutation, Types.SaveTourAsTemplateMutationVariables>;\n\n/**\n * __useSaveTourAsTemplateMutation__\n *\n * To run a mutation, you first call `useSaveTourAsTemplateMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSaveTourAsTemplateMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [saveTourAsTemplateMutation, { data, loading, error }] = useSaveTourAsTemplateMutation({\n * variables: {\n * tourId: // value for 'tourId'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useSaveTourAsTemplateMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.SaveTourAsTemplateMutation, Types.SaveTourAsTemplateMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.SaveTourAsTemplateMutation, Types.SaveTourAsTemplateMutationVariables>(SaveTourAsTemplateDocument, options);\n }\nexport type SaveTourAsTemplateMutationHookResult = ReturnType<typeof useSaveTourAsTemplateMutation>;\nexport type SaveTourAsTemplateMutationResult = Apollo.MutationResult<Types.SaveTourAsTemplateMutation>;\nexport type SaveTourAsTemplateMutationOptions = Apollo.BaseMutationOptions<Types.SaveTourAsTemplateMutation, Types.SaveTourAsTemplateMutationVariables>;\nexport const UnpublishTourDocument = gql`\n mutation UnpublishTour($id: ID!) {\n unpublishTour(id: $id) {\n id\n name\n slug\n status\n isActive\n updatedAt\n }\n}\n `;\nexport type UnpublishTourMutationFn = Apollo.MutationFunction<Types.UnpublishTourMutation, Types.UnpublishTourMutationVariables>;\n\n/**\n * __useUnpublishTourMutation__\n *\n * To run a mutation, you first call `useUnpublishTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUnpublishTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [unpublishTourMutation, { data, loading, error }] = useUnpublishTourMutation({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useUnpublishTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UnpublishTourMutation, Types.UnpublishTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UnpublishTourMutation, Types.UnpublishTourMutationVariables>(UnpublishTourDocument, options);\n }\nexport type UnpublishTourMutationHookResult = ReturnType<typeof useUnpublishTourMutation>;\nexport type UnpublishTourMutationResult = Apollo.MutationResult<Types.UnpublishTourMutation>;\nexport type UnpublishTourMutationOptions = Apollo.BaseMutationOptions<Types.UnpublishTourMutation, Types.UnpublishTourMutationVariables>;\nexport const UpdateTourDocument = gql`\n mutation UpdateTour($id: ID!, $input: UpdateTourInput!) {\n updateTour(id: $id, input: $input) {\n id\n name\n slug\n status\n updatedAt\n }\n}\n `;\nexport type UpdateTourMutationFn = Apollo.MutationFunction<Types.UpdateTourMutation, Types.UpdateTourMutationVariables>;\n\n/**\n * __useUpdateTourMutation__\n *\n * To run a mutation, you first call `useUpdateTourMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTourMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTourMutation, { data, loading, error }] = useUpdateTourMutation({\n * variables: {\n * id: // value for 'id'\n * input: // value for 'input'\n * },\n * });\n */\nexport function useUpdateTourMutation(baseOptions?: ApolloReactHooks.MutationHookOptions<Types.UpdateTourMutation, Types.UpdateTourMutationVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useMutation<Types.UpdateTourMutation, Types.UpdateTourMutationVariables>(UpdateTourDocument, options);\n }\nexport type UpdateTourMutationHookResult = ReturnType<typeof useUpdateTourMutation>;\nexport type UpdateTourMutationResult = Apollo.MutationResult<Types.UpdateTourMutation>;\nexport type UpdateTourMutationOptions = Apollo.BaseMutationOptions<Types.UpdateTourMutation, Types.UpdateTourMutationVariables>;\nexport const GetProductTourStatisticsDocument = gql`\n query GetProductTourStatistics($productId: String!) {\n productTourStatistics(productId: $productId) {\n productId\n totalTours\n publishedTours\n totalViews\n totalCompletions\n totalSkips\n averageCompletionRate\n tourBreakdown {\n tourId\n tourName\n viewCount\n completionCount\n skipCount\n completionRate\n }\n }\n}\n `;\n\n/**\n * __useGetProductTourStatisticsQuery__\n *\n * To run a query within a React component, call `useGetProductTourStatisticsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetProductTourStatisticsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetProductTourStatisticsQuery({\n * variables: {\n * productId: // value for 'productId'\n * },\n * });\n */\nexport function useGetProductTourStatisticsQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables> & ({ variables: Types.GetProductTourStatisticsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>(GetProductTourStatisticsDocument, options);\n }\nexport function useGetProductTourStatisticsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>(GetProductTourStatisticsDocument, options);\n }\n// @ts-ignore\nexport function useGetProductTourStatisticsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>;\nexport function useGetProductTourStatisticsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetProductTourStatisticsQuery | undefined, Types.GetProductTourStatisticsQueryVariables>;\nexport function useGetProductTourStatisticsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>(GetProductTourStatisticsDocument, options);\n }\nexport type GetProductTourStatisticsQueryHookResult = ReturnType<typeof useGetProductTourStatisticsQuery>;\nexport type GetProductTourStatisticsLazyQueryHookResult = ReturnType<typeof useGetProductTourStatisticsLazyQuery>;\nexport type GetProductTourStatisticsSuspenseQueryHookResult = ReturnType<typeof useGetProductTourStatisticsSuspenseQuery>;\nexport type GetProductTourStatisticsQueryResult = Apollo.QueryResult<Types.GetProductTourStatisticsQuery, Types.GetProductTourStatisticsQueryVariables>;\nexport const GetTourDocument = gql`\n query GetTour($id: ID!) {\n tour(id: $id) {\n id\n name\n slug\n description\n productId\n moduleId\n pageId\n status\n isActive\n triggerType\n triggerConfig\n mobileConfig\n tabletConfig\n desktopConfig\n priority\n displayOrder\n startDate\n endDate\n viewCount\n completionCount\n skipCount\n steps {\n id\n tourId\n title\n content\n stepOrder\n targetSelector\n placement\n targetSelectorMobile\n targetSelectorTablet\n targetSelectorDesktop\n customData\n actions\n requireInteraction\n waitForSelector\n waitForEvent\n waitForTimeout\n skipConditions\n media {\n id\n position\n mediaId\n media {\n id\n name\n type\n cdnUrl\n mimeType\n size\n duration\n width\n height\n altText\n caption\n transcript\n }\n }\n metadata\n createdAt\n updatedAt\n }\n schedules {\n id\n startDate\n endDate\n recurrenceRule\n timezone\n isActive\n nextExecutionAt\n }\n metadata\n version\n createdBy\n updatedBy\n createdAt\n updatedAt\n }\n}\n `;\n\n/**\n * __useGetTourQuery__\n *\n * To run a query within a React component, call `useGetTourQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourQuery({\n * variables: {\n * id: // value for 'id'\n * },\n * });\n */\nexport function useGetTourQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables> & ({ variables: Types.GetTourQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourQuery, Types.GetTourQueryVariables>(GetTourDocument, options);\n }\nexport function useGetTourLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourQuery, Types.GetTourQueryVariables>(GetTourDocument, options);\n }\n// @ts-ignore\nexport function useGetTourSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourQuery, Types.GetTourQueryVariables>;\nexport function useGetTourSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourQuery | undefined, Types.GetTourQueryVariables>;\nexport function useGetTourSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourQuery, Types.GetTourQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourQuery, Types.GetTourQueryVariables>(GetTourDocument, options);\n }\nexport type GetTourQueryHookResult = ReturnType<typeof useGetTourQuery>;\nexport type GetTourLazyQueryHookResult = ReturnType<typeof useGetTourLazyQuery>;\nexport type GetTourSuspenseQueryHookResult = ReturnType<typeof useGetTourSuspenseQuery>;\nexport type GetTourQueryResult = Apollo.QueryResult<Types.GetTourQuery, Types.GetTourQueryVariables>;\nexport const GetTourAnalyticsDocument = gql`\n query GetTourAnalytics($tourId: ID!) {\n tourAnalytics(tourId: $tourId) {\n totalViews\n totalCompletions\n totalSkips\n averageCompletionRate\n averageDuration\n byDeviceType {\n deviceType\n count\n completionRate\n }\n byEventType {\n eventType\n count\n }\n }\n tourStepAnalytics(tourId: $tourId) {\n stepId\n viewCount\n completionCount\n skipCount\n averageDuration\n }\n}\n `;\n\n/**\n * __useGetTourAnalyticsQuery__\n *\n * To run a query within a React component, call `useGetTourAnalyticsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourAnalyticsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourAnalyticsQuery({\n * variables: {\n * tourId: // value for 'tourId'\n * },\n * });\n */\nexport function useGetTourAnalyticsQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables> & ({ variables: Types.GetTourAnalyticsQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>(GetTourAnalyticsDocument, options);\n }\nexport function useGetTourAnalyticsLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>(GetTourAnalyticsDocument, options);\n }\n// @ts-ignore\nexport function useGetTourAnalyticsSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>;\nexport function useGetTourAnalyticsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourAnalyticsQuery | undefined, Types.GetTourAnalyticsQueryVariables>;\nexport function useGetTourAnalyticsSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>(GetTourAnalyticsDocument, options);\n }\nexport type GetTourAnalyticsQueryHookResult = ReturnType<typeof useGetTourAnalyticsQuery>;\nexport type GetTourAnalyticsLazyQueryHookResult = ReturnType<typeof useGetTourAnalyticsLazyQuery>;\nexport type GetTourAnalyticsSuspenseQueryHookResult = ReturnType<typeof useGetTourAnalyticsSuspenseQuery>;\nexport type GetTourAnalyticsQueryResult = Apollo.QueryResult<Types.GetTourAnalyticsQuery, Types.GetTourAnalyticsQueryVariables>;\nexport const GetTourMediaDocument = gql`\n query GetTourMedia {\n tourMedia {\n id\n name\n type\n storageUrl\n cdnUrl\n storagePath\n mimeType\n size\n duration\n width\n height\n altText\n caption\n transcript\n isPublic\n metadata\n uploadedBy\n createdAt\n updatedAt\n }\n}\n `;\n\n/**\n * __useGetTourMediaQuery__\n *\n * To run a query within a React component, call `useGetTourMediaQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourMediaQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourMediaQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetTourMediaQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>(GetTourMediaDocument, options);\n }\nexport function useGetTourMediaLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>(GetTourMediaDocument, options);\n }\n// @ts-ignore\nexport function useGetTourMediaSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>;\nexport function useGetTourMediaSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourMediaQuery | undefined, Types.GetTourMediaQueryVariables>;\nexport function useGetTourMediaSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>(GetTourMediaDocument, options);\n }\nexport type GetTourMediaQueryHookResult = ReturnType<typeof useGetTourMediaQuery>;\nexport type GetTourMediaLazyQueryHookResult = ReturnType<typeof useGetTourMediaLazyQuery>;\nexport type GetTourMediaSuspenseQueryHookResult = ReturnType<typeof useGetTourMediaSuspenseQuery>;\nexport type GetTourMediaQueryResult = Apollo.QueryResult<Types.GetTourMediaQuery, Types.GetTourMediaQueryVariables>;\nexport const GetTourSchedulesDocument = gql`\n query GetTourSchedules($tourId: ID!) {\n tourSchedules(tourId: $tourId) {\n id\n tourId\n startDate\n endDate\n recurrenceRule\n timezone\n isActive\n lastExecutedAt\n nextExecutionAt\n executionCount\n createdAt\n updatedAt\n }\n}\n `;\n\n/**\n * __useGetTourSchedulesQuery__\n *\n * To run a query within a React component, call `useGetTourSchedulesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourSchedulesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourSchedulesQuery({\n * variables: {\n * tourId: // value for 'tourId'\n * },\n * });\n */\nexport function useGetTourSchedulesQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables> & ({ variables: Types.GetTourSchedulesQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>(GetTourSchedulesDocument, options);\n }\nexport function useGetTourSchedulesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>(GetTourSchedulesDocument, options);\n }\n// @ts-ignore\nexport function useGetTourSchedulesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>;\nexport function useGetTourSchedulesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourSchedulesQuery | undefined, Types.GetTourSchedulesQueryVariables>;\nexport function useGetTourSchedulesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>(GetTourSchedulesDocument, options);\n }\nexport type GetTourSchedulesQueryHookResult = ReturnType<typeof useGetTourSchedulesQuery>;\nexport type GetTourSchedulesLazyQueryHookResult = ReturnType<typeof useGetTourSchedulesLazyQuery>;\nexport type GetTourSchedulesSuspenseQueryHookResult = ReturnType<typeof useGetTourSchedulesSuspenseQuery>;\nexport type GetTourSchedulesQueryResult = Apollo.QueryResult<Types.GetTourSchedulesQuery, Types.GetTourSchedulesQueryVariables>;\nexport const GetTourTemplatesDocument = gql`\n query GetTourTemplates($isPublic: Boolean, $category: String) {\n tourTemplates(isPublic: $isPublic, category: $category) {\n id\n name\n slug\n description\n category\n tags\n thumbnail\n config\n isPublic\n isPremium\n useCount\n createdBy\n createdAt\n updatedAt\n }\n}\n `;\n\n/**\n * __useGetTourTemplatesQuery__\n *\n * To run a query within a React component, call `useGetTourTemplatesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourTemplatesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourTemplatesQuery({\n * variables: {\n * isPublic: // value for 'isPublic'\n * category: // value for 'category'\n * },\n * });\n */\nexport function useGetTourTemplatesQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>(GetTourTemplatesDocument, options);\n }\nexport function useGetTourTemplatesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>(GetTourTemplatesDocument, options);\n }\n// @ts-ignore\nexport function useGetTourTemplatesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>;\nexport function useGetTourTemplatesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourTemplatesQuery | undefined, Types.GetTourTemplatesQueryVariables>;\nexport function useGetTourTemplatesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>(GetTourTemplatesDocument, options);\n }\nexport type GetTourTemplatesQueryHookResult = ReturnType<typeof useGetTourTemplatesQuery>;\nexport type GetTourTemplatesLazyQueryHookResult = ReturnType<typeof useGetTourTemplatesLazyQuery>;\nexport type GetTourTemplatesSuspenseQueryHookResult = ReturnType<typeof useGetTourTemplatesSuspenseQuery>;\nexport type GetTourTemplatesQueryResult = Apollo.QueryResult<Types.GetTourTemplatesQuery, Types.GetTourTemplatesQueryVariables>;\nexport const GetTourUserProgressDocument = gql`\n query GetTourUserProgress($tourId: ID!, $userId: ID!) {\n tourUserProgress(tourId: $tourId, userId: $userId) {\n id\n tourId\n userId\n status\n currentStepId\n currentStepOrder\n completedSteps\n skippedSteps\n deviceType\n startedAt\n completedAt\n lastViewedAt\n }\n}\n `;\n\n/**\n * __useGetTourUserProgressQuery__\n *\n * To run a query within a React component, call `useGetTourUserProgressQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTourUserProgressQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTourUserProgressQuery({\n * variables: {\n * tourId: // value for 'tourId'\n * userId: // value for 'userId'\n * },\n * });\n */\nexport function useGetTourUserProgressQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables> & ({ variables: Types.GetTourUserProgressQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>(GetTourUserProgressDocument, options);\n }\nexport function useGetTourUserProgressLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>(GetTourUserProgressDocument, options);\n }\n// @ts-ignore\nexport function useGetTourUserProgressSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>;\nexport function useGetTourUserProgressSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetTourUserProgressQuery | undefined, Types.GetTourUserProgressQueryVariables>;\nexport function useGetTourUserProgressSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>(GetTourUserProgressDocument, options);\n }\nexport type GetTourUserProgressQueryHookResult = ReturnType<typeof useGetTourUserProgressQuery>;\nexport type GetTourUserProgressLazyQueryHookResult = ReturnType<typeof useGetTourUserProgressLazyQuery>;\nexport type GetTourUserProgressSuspenseQueryHookResult = ReturnType<typeof useGetTourUserProgressSuspenseQuery>;\nexport type GetTourUserProgressQueryResult = Apollo.QueryResult<Types.GetTourUserProgressQuery, Types.GetTourUserProgressQueryVariables>;\nexport const GetToursDocument = gql`\n query GetTours($filters: TourFilters, $pagination: TourPagination) {\n tours(filters: $filters, pagination: $pagination) {\n tours {\n id\n name\n slug\n description\n productId\n moduleId\n pageId\n status\n isActive\n triggerType\n priority\n displayOrder\n startDate\n endDate\n viewCount\n completionCount\n skipCount\n steps {\n id\n }\n version\n createdBy\n updatedBy\n createdAt\n updatedAt\n }\n total\n hasMore\n }\n}\n `;\n\n/**\n * __useGetToursQuery__\n *\n * To run a query within a React component, call `useGetToursQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetToursQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetToursQuery({\n * variables: {\n * filters: // value for 'filters'\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetToursQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetToursQuery, Types.GetToursQueryVariables>(GetToursDocument, options);\n }\nexport function useGetToursLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetToursQuery, Types.GetToursQueryVariables>(GetToursDocument, options);\n }\n// @ts-ignore\nexport function useGetToursSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetToursQuery, Types.GetToursQueryVariables>;\nexport function useGetToursSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetToursQuery | undefined, Types.GetToursQueryVariables>;\nexport function useGetToursSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursQuery, Types.GetToursQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetToursQuery, Types.GetToursQueryVariables>(GetToursDocument, options);\n }\nexport type GetToursQueryHookResult = ReturnType<typeof useGetToursQuery>;\nexport type GetToursLazyQueryHookResult = ReturnType<typeof useGetToursLazyQuery>;\nexport type GetToursSuspenseQueryHookResult = ReturnType<typeof useGetToursSuspenseQuery>;\nexport type GetToursQueryResult = Apollo.QueryResult<Types.GetToursQuery, Types.GetToursQueryVariables>;\nexport const GetToursForContextDocument = gql`\n query GetToursForContext($context: TourContextInput!) {\n toursForContext(context: $context) {\n id\n name\n slug\n description\n productId\n moduleId\n pageId\n status\n isActive\n triggerType\n priority\n displayOrder\n startDate\n endDate\n myProgress {\n id\n tourId\n status\n currentStepId\n currentStepOrder\n startedAt\n completedAt\n lastViewedAt\n }\n }\n}\n `;\n\n/**\n * __useGetToursForContextQuery__\n *\n * To run a query within a React component, call `useGetToursForContextQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetToursForContextQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetToursForContextQuery({\n * variables: {\n * context: // value for 'context'\n * },\n * });\n */\nexport function useGetToursForContextQuery(baseOptions: ApolloReactHooks.QueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables> & ({ variables: Types.GetToursForContextQueryVariables; skip?: boolean; } | { skip: boolean; }) ) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>(GetToursForContextDocument, options);\n }\nexport function useGetToursForContextLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>(GetToursForContextDocument, options);\n }\n// @ts-ignore\nexport function useGetToursForContextSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>;\nexport function useGetToursForContextSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetToursForContextQuery | undefined, Types.GetToursForContextQueryVariables>;\nexport function useGetToursForContextSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>(GetToursForContextDocument, options);\n }\nexport type GetToursForContextQueryHookResult = ReturnType<typeof useGetToursForContextQuery>;\nexport type GetToursForContextLazyQueryHookResult = ReturnType<typeof useGetToursForContextLazyQuery>;\nexport type GetToursForContextSuspenseQueryHookResult = ReturnType<typeof useGetToursForContextSuspenseQuery>;\nexport type GetToursForContextQueryResult = Apollo.QueryResult<Types.GetToursForContextQuery, Types.GetToursForContextQueryVariables>;\nexport const GetUserTourProgressesDocument = gql`\n query GetUserTourProgresses($userId: ID, $pagination: TourPagination) {\n userTourProgresses(userId: $userId, pagination: $pagination) {\n id\n tourId\n userId\n status\n currentStepId\n currentStepOrder\n completedSteps\n skippedSteps\n deviceType\n startedAt\n completedAt\n lastViewedAt\n createdAt\n updatedAt\n tour {\n id\n name\n slug\n description\n productId\n moduleId\n pageId\n status\n }\n }\n}\n `;\n\n/**\n * __useGetUserTourProgressesQuery__\n *\n * To run a query within a React component, call `useGetUserTourProgressesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetUserTourProgressesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetUserTourProgressesQuery({\n * variables: {\n * userId: // value for 'userId'\n * pagination: // value for 'pagination'\n * },\n * });\n */\nexport function useGetUserTourProgressesQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>(GetUserTourProgressesDocument, options);\n }\nexport function useGetUserTourProgressesLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>(GetUserTourProgressesDocument, options);\n }\n// @ts-ignore\nexport function useGetUserTourProgressesSuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>;\nexport function useGetUserTourProgressesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetUserTourProgressesQuery | undefined, Types.GetUserTourProgressesQueryVariables>;\nexport function useGetUserTourProgressesSuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>(GetUserTourProgressesDocument, options);\n }\nexport type GetUserTourProgressesQueryHookResult = ReturnType<typeof useGetUserTourProgressesQuery>;\nexport type GetUserTourProgressesLazyQueryHookResult = ReturnType<typeof useGetUserTourProgressesLazyQuery>;\nexport type GetUserTourProgressesSuspenseQueryHookResult = ReturnType<typeof useGetUserTourProgressesSuspenseQuery>;\nexport type GetUserTourProgressesQueryResult = Apollo.QueryResult<Types.GetUserTourProgressesQuery, Types.GetUserTourProgressesQueryVariables>;\nexport const GetWorkspaceAnalyticsSummaryDocument = gql`\n query GetWorkspaceAnalyticsSummary {\n workspaceAnalyticsSummary {\n totalTours\n publishedTours\n totalViews\n totalCompletions\n overallCompletionRate\n }\n}\n `;\n\n/**\n * __useGetWorkspaceAnalyticsSummaryQuery__\n *\n * To run a query within a React component, call `useGetWorkspaceAnalyticsSummaryQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetWorkspaceAnalyticsSummaryQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetWorkspaceAnalyticsSummaryQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetWorkspaceAnalyticsSummaryQuery(baseOptions?: ApolloReactHooks.QueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useQuery<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>(GetWorkspaceAnalyticsSummaryDocument, options);\n }\nexport function useGetWorkspaceAnalyticsSummaryLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>) {\n const options = {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useLazyQuery<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>(GetWorkspaceAnalyticsSummaryDocument, options);\n }\n// @ts-ignore\nexport function useGetWorkspaceAnalyticsSummarySuspenseQuery(baseOptions?: ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>;\nexport function useGetWorkspaceAnalyticsSummarySuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>): ApolloReactHooks.UseSuspenseQueryResult<Types.GetWorkspaceAnalyticsSummaryQuery | undefined, Types.GetWorkspaceAnalyticsSummaryQueryVariables>;\nexport function useGetWorkspaceAnalyticsSummarySuspenseQuery(baseOptions?: ApolloReactHooks.SkipToken | ApolloReactHooks.SuspenseQueryHookOptions<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>) {\n const options = baseOptions === ApolloReactHooks.skipToken ? baseOptions : {...defaultOptions, ...baseOptions}\n return ApolloReactHooks.useSuspenseQuery<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>(GetWorkspaceAnalyticsSummaryDocument, options);\n }\nexport type GetWorkspaceAnalyticsSummaryQueryHookResult = ReturnType<typeof useGetWorkspaceAnalyticsSummaryQuery>;\nexport type GetWorkspaceAnalyticsSummaryLazyQueryHookResult = ReturnType<typeof useGetWorkspaceAnalyticsSummaryLazyQuery>;\nexport type GetWorkspaceAnalyticsSummarySuspenseQueryHookResult = ReturnType<typeof useGetWorkspaceAnalyticsSummarySuspenseQuery>;\nexport type GetWorkspaceAnalyticsSummaryQueryResult = Apollo.QueryResult<Types.GetWorkspaceAnalyticsSummaryQuery, Types.GetWorkspaceAnalyticsSummaryQueryVariables>;"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { useToursStore as e } from "../store/toursStore.js";
2
- import { useAttachMediaToStepMutation as t, useDeleteTourMediaMutation as n, useGetTourMediaQuery as r, useUploadTourMediaMutation as i } from "../../generated/global-operations.js";
2
+ import { useAttachMediaToStepMutation as t, useCreateTourMediaMetadataMutation as n, useDeleteTourMediaMutation as r, useGetTourMediaQuery as i } from "../../generated/global-operations.js";
3
3
  import { useCallback as a, useMemo as o } from "react";
4
4
  //#region src/tours/hooks/useMediaLibrary.ts
5
5
  function s() {
6
- let { selectedMedia: s, uploadProgress: l, selectMedia: u, unselectMedia: d, clearSelectedMedia: f, updateUploadProgress: p, removeUploadProgress: m } = e(), { data: h, loading: g, error: _, refetch: v } = r(), [y] = i(), [b] = n(), [x] = t();
6
+ let { selectedMedia: s, uploadProgress: l, selectMedia: u, unselectMedia: d, clearSelectedMedia: f, updateUploadProgress: p, removeUploadProgress: m } = e(), { data: h, loading: g, error: _, refetch: v } = i(), [y] = n(), [b] = r(), [x] = t();
7
7
  return {
8
8
  media: o(() => h?.tourMedia ? h.tourMedia.map((e) => ({
9
9
  id: e.id,
@@ -45,7 +45,7 @@ function s() {
45
45
  altText: t?.altText,
46
46
  caption: t?.caption
47
47
  } } });
48
- return p(n, 100), m(n), await v(), r.data?.uploadTourMedia ?? null;
48
+ return p(n, 100), m(n), await v(), r.data?.createTourMediaMetadata ?? null;
49
49
  } catch (e) {
50
50
  throw m(n), e;
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useMediaLibrary.js","names":[],"sources":["../../../src/tours/hooks/useMediaLibrary.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { useToursStore } from '../store/toursStore';\nimport {\n useGetTourMediaQuery,\n useUploadTourMediaMutation,\n useDeleteTourMediaMutation,\n useAttachMediaToStepMutation,\n} from '../../generated/global-operations';\nimport type { TourMedia as ApiTourMedia } from '../../generated/global-types';\nimport type { TourMedia, TourMediaType, MediaPosition } from '../types';\n\n/**\n * Hook for media library functionality\n * Manages media upload, browsing, and attachment\n * All media is now global (no workspace scoping)\n */\nexport function useMediaLibrary() {\n const {\n selectedMedia,\n uploadProgress,\n selectMedia,\n unselectMedia,\n clearSelectedMedia,\n updateUploadProgress,\n removeUploadProgress,\n } = useToursStore();\n\n // Fetch media from API\n const { data, loading, error: queryError, refetch } = useGetTourMediaQuery();\n\n // Upload media mutation\n const [uploadTourMediaMutation] = useUploadTourMediaMutation();\n\n // Delete media mutation\n const [deleteTourMediaMutation] = useDeleteTourMediaMutation();\n\n // Attach media to step mutation\n const [attachMediaToStepMutation] = useAttachMediaToStepMutation();\n\n // Transform API response to match our TourMedia type\n const media: TourMedia[] = useMemo(() => {\n if (!data?.tourMedia) return [];\n return data.tourMedia.map((m: ApiTourMedia) => ({\n id: m.id,\n name: m.name,\n type: m.type as TourMediaType,\n cdnUrl: m.cdnUrl || m.storageUrl,\n mimeType: m.mimeType,\n size: m.size,\n duration: m.duration ?? undefined,\n width: m.width ?? undefined,\n height: m.height ?? undefined,\n altText: m.altText ?? undefined,\n caption: m.caption ?? undefined,\n transcript: m.transcript ?? undefined,\n metadata: m.metadata ?? undefined,\n createdBy: m.uploadedBy || '',\n createdAt: m.createdAt,\n updatedAt: m.updatedAt,\n }));\n }, [data]);\n\n const error = queryError ? new Error(queryError.message) : null;\n\n /**\n * Fetch/refetch media library\n */\n const fetchMedia = useCallback(\n async (_type?: TourMediaType, _search?: string) => {\n // Note: type and search filtering will be done client-side\n // since the API doesn't support these filters yet\n await refetch();\n },\n [refetch]\n );\n\n /**\n * Upload media file\n */\n const uploadMedia = useCallback(\n async (file: File, metadata?: Partial<TourMedia>) => {\n const fileId = `upload_${Date.now()}`;\n updateUploadProgress(fileId, 0);\n\n try {\n updateUploadProgress(fileId, 50);\n\n const result = await uploadTourMediaMutation({\n variables: {\n input: {\n name: metadata?.name || file.name,\n type: getMediaType(file.type),\n storageUrl: `/uploads/tours/${Date.now()}-${file.name}`,\n storagePath: `tours/${Date.now()}-${file.name}`,\n mimeType: file.type,\n size: file.size,\n altText: metadata?.altText,\n caption: metadata?.caption,\n },\n },\n });\n\n updateUploadProgress(fileId, 100);\n removeUploadProgress(fileId);\n await refetch();\n\n return result.data?.uploadTourMedia ?? null;\n } catch (err) {\n removeUploadProgress(fileId);\n throw err;\n }\n },\n [uploadTourMediaMutation, updateUploadProgress, removeUploadProgress, refetch]\n );\n\n /**\n * Delete media\n */\n const deleteMedia = useCallback(\n async (mediaId: string) => {\n await deleteTourMediaMutation({\n variables: { id: mediaId },\n });\n unselectMedia(mediaId);\n await refetch();\n },\n [deleteTourMediaMutation, unselectMedia, refetch]\n );\n\n /**\n * Attach media to step\n */\n const attachToStep = useCallback(\n async (stepId: string, mediaId: string, position: MediaPosition, displayOrder: number) => {\n const result = await attachMediaToStepMutation({\n variables: {\n input: {\n stepId,\n mediaId,\n position:\n position === 'body'\n ? 'INLINE'\n : (position.toUpperCase() as 'HEADER' | 'INLINE' | 'FOOTER'),\n metadata: displayOrder > 0 ? { displayOrder } : undefined,\n },\n },\n });\n return result.data?.attachMediaToStep ?? null;\n },\n [attachMediaToStepMutation]\n );\n\n return {\n media,\n selectedMedia,\n uploadProgress,\n loading,\n error,\n fetchMedia,\n uploadMedia,\n deleteMedia,\n selectMedia,\n unselectMedia,\n clearSelectedMedia,\n attachToStep,\n };\n}\n\n/**\n * Helper to determine media type from MIME type\n */\nfunction getMediaType(mimeType: string): 'IMAGE' | 'VIDEO' | 'AUDIO' | 'DOCUMENT' {\n if (mimeType.startsWith('image/')) return 'IMAGE';\n if (mimeType.startsWith('video/')) return 'VIDEO';\n if (mimeType.startsWith('audio/')) return 'AUDIO';\n return 'DOCUMENT';\n}\n"],"mappings":";;;;AAgBA,SAAgB,IAAkB;CAChC,IAAM,EACJ,kBACA,mBACA,gBACA,kBACA,uBACA,yBACA,4BACE,GAAe,EAGb,EAAE,SAAM,YAAS,OAAO,GAAY,eAAY,GAAsB,EAGtE,CAAC,KAA2B,GAA4B,EAGxD,CAAC,KAA2B,GAA4B,EAGxD,CAAC,KAA6B,GAA8B;AAmHlE,QAAO;EACL,OAjHyB,QACpB,GAAM,YACJ,EAAK,UAAU,KAAK,OAAqB;GAC9C,IAAI,EAAE;GACN,MAAM,EAAE;GACR,MAAM,EAAE;GACR,QAAQ,EAAE,UAAU,EAAE;GACtB,UAAU,EAAE;GACZ,MAAM,EAAE;GACR,UAAU,EAAE,YAAY,KAAA;GACxB,OAAO,EAAE,SAAS,KAAA;GAClB,QAAQ,EAAE,UAAU,KAAA;GACpB,SAAS,EAAE,WAAW,KAAA;GACtB,SAAS,EAAE,WAAW,KAAA;GACtB,YAAY,EAAE,cAAc,KAAA;GAC5B,UAAU,EAAE,YAAY,KAAA;GACxB,WAAW,EAAE,cAAc;GAC3B,WAAW,EAAE;GACb,WAAW,EAAE;GACd,EAAE,GAlB0B,EAAE,EAmB9B,CAAC,EAAK,CAAC;EA8FR;EACA;EACA;EACA,OA/FY,IAAiB,MAAM,EAAW,QAAQ,GAAG;EAgGzD,YA3FiB,EACjB,OAAO,GAAuB,MAAqB;AAGjD,SAAM,GAAS;KAEjB,CAAC,EAAQ,CACV;EAqFC,aAhFkB,EAClB,OAAO,GAAY,MAAkC;GACnD,IAAM,IAAS,UAAU,KAAK,KAAK;AACnC,KAAqB,GAAQ,EAAE;AAE/B,OAAI;AACF,MAAqB,GAAQ,GAAG;IAEhC,IAAM,IAAS,MAAM,EAAwB,EAC3C,WAAW,EACT,OAAO;KACL,MAAM,GAAU,QAAQ,EAAK;KAC7B,MAAM,EAAa,EAAK,KAAK;KAC7B,YAAY,kBAAkB,KAAK,KAAK,CAAC,GAAG,EAAK;KACjD,aAAa,SAAS,KAAK,KAAK,CAAC,GAAG,EAAK;KACzC,UAAU,EAAK;KACf,MAAM,EAAK;KACX,SAAS,GAAU;KACnB,SAAS,GAAU;KACpB,EACF,EACF,CAAC;AAMF,WAJA,EAAqB,GAAQ,IAAI,EACjC,EAAqB,EAAO,EAC5B,MAAM,GAAS,EAER,EAAO,MAAM,mBAAmB;YAChC,GAAK;AAEZ,UADA,EAAqB,EAAO,EACtB;;KAGV;GAAC;GAAyB;GAAsB;GAAsB;GAAQ,CAC/E;EA+CC,aA1CkB,EAClB,OAAO,MAAoB;AAKzB,GAJA,MAAM,EAAwB,EAC5B,WAAW,EAAE,IAAI,GAAS,EAC3B,CAAC,EACF,EAAc,EAAQ,EACtB,MAAM,GAAS;KAEjB;GAAC;GAAyB;GAAe;GAAQ,CAClD;EAkCC;EACA;EACA;EACA,cAhCmB,EACnB,OAAO,GAAgB,GAAiB,GAAyB,OAChD,MAAM,EAA0B,EAC7C,WAAW,EACT,OAAO;GACL;GACA;GACA,UACE,MAAa,SACT,WACC,EAAS,aAAa;GAC7B,UAAU,IAAe,IAAI,EAAE,iBAAc,GAAG,KAAA;GACjD,EACF,EACF,CAAC,EACY,MAAM,qBAAqB,MAE3C,CAAC,EAA0B,CAC5B;EAeA;;AAMH,SAAS,EAAa,GAA4D;AAIhF,QAHI,EAAS,WAAW,SAAS,GAAS,UACtC,EAAS,WAAW,SAAS,GAAS,UACtC,EAAS,WAAW,SAAS,GAAS,UACnC"}
1
+ {"version":3,"file":"useMediaLibrary.js","names":[],"sources":["../../../src/tours/hooks/useMediaLibrary.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { useToursStore } from '../store/toursStore';\nimport {\n useGetTourMediaQuery,\n useCreateTourMediaMetadataMutation,\n useDeleteTourMediaMutation,\n useAttachMediaToStepMutation,\n} from '../../generated/global-operations';\nimport type { TourMedia as ApiTourMedia } from '../../generated/global-types';\nimport type { TourMedia, TourMediaType, MediaPosition } from '../types';\n\n/**\n * Hook for media library functionality\n * Manages media upload, browsing, and attachment\n * All media is now global (no workspace scoping)\n */\nexport function useMediaLibrary() {\n const {\n selectedMedia,\n uploadProgress,\n selectMedia,\n unselectMedia,\n clearSelectedMedia,\n updateUploadProgress,\n removeUploadProgress,\n } = useToursStore();\n\n // Fetch media from API\n const { data, loading, error: queryError, refetch } = useGetTourMediaQuery();\n\n // Upload media mutation\n const [createTourMediaMetadataMutation] = useCreateTourMediaMetadataMutation();\n\n // Delete media mutation\n const [deleteTourMediaMutation] = useDeleteTourMediaMutation();\n\n // Attach media to step mutation\n const [attachMediaToStepMutation] = useAttachMediaToStepMutation();\n\n // Transform API response to match our TourMedia type\n const media: TourMedia[] = useMemo(() => {\n if (!data?.tourMedia) return [];\n return data.tourMedia.map((m: ApiTourMedia) => ({\n id: m.id,\n name: m.name,\n type: m.type as TourMediaType,\n cdnUrl: m.cdnUrl || m.storageUrl,\n mimeType: m.mimeType,\n size: m.size,\n duration: m.duration ?? undefined,\n width: m.width ?? undefined,\n height: m.height ?? undefined,\n altText: m.altText ?? undefined,\n caption: m.caption ?? undefined,\n transcript: m.transcript ?? undefined,\n metadata: m.metadata ?? undefined,\n createdBy: m.uploadedBy || '',\n createdAt: m.createdAt,\n updatedAt: m.updatedAt,\n }));\n }, [data]);\n\n const error = queryError ? new Error(queryError.message) : null;\n\n /**\n * Fetch/refetch media library\n */\n const fetchMedia = useCallback(\n async (_type?: TourMediaType, _search?: string) => {\n // Note: type and search filtering will be done client-side\n // since the API doesn't support these filters yet\n await refetch();\n },\n [refetch]\n );\n\n /**\n * Upload media file\n */\n const uploadMedia = useCallback(\n async (file: File, metadata?: Partial<TourMedia>) => {\n const fileId = `upload_${Date.now()}`;\n updateUploadProgress(fileId, 0);\n\n try {\n updateUploadProgress(fileId, 50);\n\n const result = await createTourMediaMetadataMutation({\n variables: {\n input: {\n name: metadata?.name || file.name,\n type: getMediaType(file.type),\n storageUrl: `/uploads/tours/${Date.now()}-${file.name}`,\n storagePath: `tours/${Date.now()}-${file.name}`,\n mimeType: file.type,\n size: file.size,\n altText: metadata?.altText,\n caption: metadata?.caption,\n },\n },\n });\n\n updateUploadProgress(fileId, 100);\n removeUploadProgress(fileId);\n await refetch();\n\n return result.data?.createTourMediaMetadata ?? null;\n } catch (err) {\n removeUploadProgress(fileId);\n throw err;\n }\n },\n [createTourMediaMetadataMutation, updateUploadProgress, removeUploadProgress, refetch]\n );\n\n /**\n * Delete media\n */\n const deleteMedia = useCallback(\n async (mediaId: string) => {\n await deleteTourMediaMutation({\n variables: { id: mediaId },\n });\n unselectMedia(mediaId);\n await refetch();\n },\n [deleteTourMediaMutation, unselectMedia, refetch]\n );\n\n /**\n * Attach media to step\n */\n const attachToStep = useCallback(\n async (stepId: string, mediaId: string, position: MediaPosition, displayOrder: number) => {\n const result = await attachMediaToStepMutation({\n variables: {\n input: {\n stepId,\n mediaId,\n position:\n position === 'body'\n ? 'INLINE'\n : (position.toUpperCase() as 'HEADER' | 'INLINE' | 'FOOTER'),\n metadata: displayOrder > 0 ? { displayOrder } : undefined,\n },\n },\n });\n return result.data?.attachMediaToStep ?? null;\n },\n [attachMediaToStepMutation]\n );\n\n return {\n media,\n selectedMedia,\n uploadProgress,\n loading,\n error,\n fetchMedia,\n uploadMedia,\n deleteMedia,\n selectMedia,\n unselectMedia,\n clearSelectedMedia,\n attachToStep,\n };\n}\n\n/**\n * Helper to determine media type from MIME type\n */\nfunction getMediaType(mimeType: string): 'IMAGE' | 'VIDEO' | 'AUDIO' | 'DOCUMENT' {\n if (mimeType.startsWith('image/')) return 'IMAGE';\n if (mimeType.startsWith('video/')) return 'VIDEO';\n if (mimeType.startsWith('audio/')) return 'AUDIO';\n return 'DOCUMENT';\n}\n"],"mappings":";;;;AAgBA,SAAgB,IAAkB;CAChC,IAAM,EACJ,kBACA,mBACA,gBACA,kBACA,uBACA,yBACA,4BACE,GAAe,EAGb,EAAE,SAAM,YAAS,OAAO,GAAY,eAAY,GAAsB,EAGtE,CAAC,KAAmC,GAAoC,EAGxE,CAAC,KAA2B,GAA4B,EAGxD,CAAC,KAA6B,GAA8B;AAmHlE,QAAO;EACL,OAjHyB,QACpB,GAAM,YACJ,EAAK,UAAU,KAAK,OAAqB;GAC9C,IAAI,EAAE;GACN,MAAM,EAAE;GACR,MAAM,EAAE;GACR,QAAQ,EAAE,UAAU,EAAE;GACtB,UAAU,EAAE;GACZ,MAAM,EAAE;GACR,UAAU,EAAE,YAAY,KAAA;GACxB,OAAO,EAAE,SAAS,KAAA;GAClB,QAAQ,EAAE,UAAU,KAAA;GACpB,SAAS,EAAE,WAAW,KAAA;GACtB,SAAS,EAAE,WAAW,KAAA;GACtB,YAAY,EAAE,cAAc,KAAA;GAC5B,UAAU,EAAE,YAAY,KAAA;GACxB,WAAW,EAAE,cAAc;GAC3B,WAAW,EAAE;GACb,WAAW,EAAE;GACd,EAAE,GAlB0B,EAAE,EAmB9B,CAAC,EAAK,CAAC;EA8FR;EACA;EACA;EACA,OA/FY,IAAiB,MAAM,EAAW,QAAQ,GAAG;EAgGzD,YA3FiB,EACjB,OAAO,GAAuB,MAAqB;AAGjD,SAAM,GAAS;KAEjB,CAAC,EAAQ,CACV;EAqFC,aAhFkB,EAClB,OAAO,GAAY,MAAkC;GACnD,IAAM,IAAS,UAAU,KAAK,KAAK;AACnC,KAAqB,GAAQ,EAAE;AAE/B,OAAI;AACF,MAAqB,GAAQ,GAAG;IAEhC,IAAM,IAAS,MAAM,EAAgC,EACnD,WAAW,EACT,OAAO;KACL,MAAM,GAAU,QAAQ,EAAK;KAC7B,MAAM,EAAa,EAAK,KAAK;KAC7B,YAAY,kBAAkB,KAAK,KAAK,CAAC,GAAG,EAAK;KACjD,aAAa,SAAS,KAAK,KAAK,CAAC,GAAG,EAAK;KACzC,UAAU,EAAK;KACf,MAAM,EAAK;KACX,SAAS,GAAU;KACnB,SAAS,GAAU;KACpB,EACF,EACF,CAAC;AAMF,WAJA,EAAqB,GAAQ,IAAI,EACjC,EAAqB,EAAO,EAC5B,MAAM,GAAS,EAER,EAAO,MAAM,2BAA2B;YACxC,GAAK;AAEZ,UADA,EAAqB,EAAO,EACtB;;KAGV;GAAC;GAAiC;GAAsB;GAAsB;GAAQ,CACvF;EA+CC,aA1CkB,EAClB,OAAO,MAAoB;AAKzB,GAJA,MAAM,EAAwB,EAC5B,WAAW,EAAE,IAAI,GAAS,EAC3B,CAAC,EACF,EAAc,EAAQ,EACtB,MAAM,GAAS;KAEjB;GAAC;GAAyB;GAAe;GAAQ,CAClD;EAkCC;EACA;EACA;EACA,cAhCmB,EACnB,OAAO,GAAgB,GAAiB,GAAyB,OAChD,MAAM,EAA0B,EAC7C,WAAW,EACT,OAAO;GACL;GACA;GACA,UACE,MAAa,SACT,WACC,EAAS,aAAa;GAC7B,UAAU,IAAe,IAAI,EAAE,iBAAc,GAAG,KAAA;GACjD,EACF,EACF,CAAC,EACY,MAAM,qBAAqB,MAE3C,CAAC,EAA0B,CAC5B;EAeA;;AAMH,SAAS,EAAa,GAA4D;AAIhF,QAHI,EAAS,WAAW,SAAS,GAAS,UACtC,EAAS,WAAW,SAAS,GAAS,UACtC,EAAS,WAAW,SAAS,GAAS,UACnC"}
@@ -467,6 +467,22 @@ var v = [
467
467
  pageLabel: "Runs",
468
468
  path: "/workflows/runs"
469
469
  },
470
+ {
471
+ productId: "fluidgrids",
472
+ moduleId: "workflows",
473
+ moduleLabel: "Workflows",
474
+ pageId: "history",
475
+ pageLabel: "History",
476
+ path: "/workflows/history"
477
+ },
478
+ {
479
+ productId: "fluidgrids",
480
+ moduleId: "workflows",
481
+ moduleLabel: "Workflows",
482
+ pageId: "templates",
483
+ pageLabel: "Templates",
484
+ path: "/workflows/templates"
485
+ },
470
486
  {
471
487
  productId: "buildmyiq",
472
488
  moduleId: "catalog",
@@ -1 +1 @@
1
- {"version":3,"file":"TourBuilderPage.js","names":[],"sources":["../../../src/tours/pages/TourBuilderPage.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useParams, useNavigate } from 'react-router';\nimport {\n Save,\n ArrowLeft,\n Eye,\n ListOrdered,\n BarChart3,\n Calendar,\n LayoutTemplate,\n Sparkles,\n} from 'lucide-react';\nimport { gql } from '@apollo/client/core';\nimport { PermissionGate } from '@burdenoff/fe-libs/shared/components';\nimport {\n Button,\n GlassCard,\n EmphasisPanel,\n PagePurpose,\n NextSteps,\n type NextStep,\n CTAOverflowMenu,\n type CTAAction,\n} from '@burdenoff/fe-libs/ui';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\nimport { MarkdownEditor } from '../components/MarkdownEditor';\nimport { useTourBuilder } from '../hooks/useTourBuilder';\nimport { useTourLifecycle } from '../hooks/useTourLifecycle';\nimport { useToursPermissionAccess } from '../hooks/useToursPermissionAccess';\nimport { useToursContext } from '../providers/ToursProvider';\nimport { TOUR_PERMISSIONS } from '../../constants/permissions';\nimport type { Tour, TourTriggerType } from '../types';\nimport { useToursI18n } from '../i18n';\nimport { emitToursApiFailed } from '../telemetry';\nimport { useGetPlatformProductsForToursQuery } from '../../generated/global-operations';\n\n// Covers the current platform catalog with room for planned products; custom slug entry remains the fallback.\nconst PLATFORM_PRODUCTS_QUERY_LIMIT = 250;\n\nconst SEED_VIBECONTROLS_USER_TOURS = gql`\n mutation SeedVibeControlsUserTours {\n seedVibeControlsUserTours {\n productId\n workspaceId\n createdCount\n updatedCount\n totalCount\n tours {\n tourId\n slug\n name\n action\n stepCount\n }\n }\n }\n`;\n\nconst SEED_BUILDMYIQ_USER_TOURS = gql`\n mutation SeedBuildmyiqUserTours {\n seedBuildmyiqUserTours {\n productId\n workspaceId\n createdCount\n updatedCount\n totalCount\n tours {\n tourId\n slug\n name\n action\n stepCount\n }\n }\n }\n`;\n\ninterface SeededUserTourResult {\n tourId: string;\n slug: string;\n name: string;\n action: string;\n stepCount: number;\n}\n\ninterface SeedVibeControlsUserToursPayload {\n productId: string;\n workspaceId: string;\n createdCount: number;\n updatedCount: number;\n totalCount: number;\n tours: SeededUserTourResult[];\n}\n\ninterface SeedVibeControlsUserToursMutation {\n seedVibeControlsUserTours: SeedVibeControlsUserToursPayload;\n}\n\ninterface SeedBuildmyiqUserToursMutation {\n seedBuildmyiqUserTours: SeedVibeControlsUserToursPayload;\n}\n\nfunction getMutationErrorMessage(result: unknown, fallbackMessage: string): string | null {\n if (!result || typeof result !== 'object') return null;\n\n const record = result as Record<string, unknown>;\n const singleError = record.error;\n if (singleError instanceof Error) return singleError.message;\n\n const errors = record.errors;\n if (!Array.isArray(errors) || errors.length === 0) return null;\n\n const messages = errors\n .map((error) => {\n if (error instanceof Error) return error.message;\n if (!error || typeof error !== 'object') return null;\n\n const message = (error as { message?: unknown }).message;\n return typeof message === 'string' ? message : null;\n })\n .filter((message): message is string => Boolean(message));\n\n return messages.length > 0 ? messages.join('; ') : fallbackMessage;\n}\n\ninterface TourRouteModuleOption {\n moduleId: string;\n label: string;\n path: string;\n}\n\ninterface TourRoutePageOption {\n pageId: string;\n label: string;\n path: string;\n}\n\ninterface TourRouteCatalogEntry {\n productId: string;\n moduleId: string;\n moduleLabel: string;\n pageId: string;\n pageLabel: string;\n path: string;\n isModuleHome?: boolean;\n}\n\nconst TOUR_ROUTE_CATALOG: readonly TourRouteCatalogEntry[] = [\n {\n productId: 'vibecontrols',\n moduleId: 'dashboard',\n moduleLabel: 'Dashboard',\n pageId: 'dashboard',\n pageLabel: 'Dashboard',\n path: '/dashboard',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'home',\n pageLabel: 'Overview',\n path: '/vibecontrols',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'agents',\n pageLabel: 'Targets & Agents',\n path: '/vibecontrols/agents',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'vibes',\n pageLabel: 'Vibes',\n path: '/vibecontrols/vibes',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'sessions',\n pageLabel: 'Sessions',\n path: '/vibecontrols/sessions',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'ai',\n pageLabel: 'AI',\n path: '/vibecontrols/ai',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'catalogs',\n pageLabel: 'Catalogs',\n path: '/vibecontrols/catalogs',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'components',\n pageLabel: 'Components',\n path: '/vibecontrols/components',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'templates',\n pageLabel: 'Templates',\n path: '/vibecontrols/templates',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'actions',\n pageLabel: 'Actions',\n path: '/vibecontrols/actions',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'vibedeck',\n pageLabel: 'Decks',\n path: '/vibecontrols/vibedeck',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'calendar',\n pageLabel: 'Calendar',\n path: '/vibecontrols/calendar',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'tunnels',\n pageLabel: 'Tunnels',\n path: '/vibecontrols/tunnels',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'analytics',\n pageLabel: 'Analytics',\n path: '/vibecontrols/analytics',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'audit',\n pageLabel: 'Audit Log',\n path: '/vibecontrols/audit',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'health',\n pageLabel: 'Health',\n path: '/vibecontrols/health',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'settings',\n pageLabel: 'Settings',\n path: '/vibecontrols/settings',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'scheduler',\n moduleLabel: 'Scheduler',\n pageId: 'scheduler',\n pageLabel: 'Scheduler',\n path: '/scheduler',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'sandbox',\n moduleLabel: 'Sandbox',\n pageId: 'sandbox',\n pageLabel: 'Sandbox',\n path: '/sandbox',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'support',\n moduleLabel: 'Support',\n pageId: 'tickets',\n pageLabel: 'Tickets',\n path: '/support/tickets',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'support',\n moduleLabel: 'Support',\n pageId: 'knowledge-base',\n pageLabel: 'Knowledge Base',\n path: '/support/kb',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'notifications',\n moduleLabel: 'Notifications',\n pageId: 'center',\n pageLabel: 'Notification Center',\n path: '/notifications/center',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'notifications',\n moduleLabel: 'Notifications',\n pageId: 'history',\n pageLabel: 'History',\n path: '/notifications/history',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'notifications',\n moduleLabel: 'Notifications',\n pageId: 'preferences',\n pageLabel: 'Preferences',\n path: '/notifications/preferences',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'conversations',\n moduleLabel: 'Conversations',\n pageId: 'home',\n pageLabel: 'All Conversations',\n path: '/conversations',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'conversations',\n moduleLabel: 'Conversations',\n pageId: 'list',\n pageLabel: 'Conversation List',\n path: '/conversations/list',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'conversations',\n moduleLabel: 'Conversations',\n pageId: 'new',\n pageLabel: 'New Conversation',\n path: '/conversations/new',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'conversations',\n moduleLabel: 'Conversations',\n pageId: 'settings',\n pageLabel: 'Settings',\n path: '/conversations/settings',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'auth',\n moduleLabel: 'Auth',\n pageId: 'home',\n pageLabel: 'Auth',\n path: '/auth/security',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'groups',\n moduleLabel: 'Groups and Teams',\n pageId: 'home',\n pageLabel: 'Groups and Teams',\n path: '/groups',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'tags',\n moduleLabel: 'Tags',\n pageId: 'home',\n pageLabel: 'Tags',\n path: '/tags',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'files',\n moduleLabel: 'Files',\n pageId: 'home',\n pageLabel: 'Files',\n path: '/files/browse',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'security',\n moduleLabel: 'Vault',\n pageId: 'home',\n pageLabel: 'Vault',\n path: '/security',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'integrations',\n moduleLabel: 'Integrations',\n pageId: 'home',\n pageLabel: 'Integrations',\n path: '/integrations',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'export',\n moduleLabel: 'Exports',\n pageId: 'home',\n pageLabel: 'Exports',\n path: '/export',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'organizations',\n moduleLabel: 'Organizations',\n pageId: 'home',\n pageLabel: 'Organizations',\n path: '/organizations',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'workspaces',\n moduleLabel: 'Workspaces',\n pageId: 'home',\n pageLabel: 'Workspaces',\n path: '/workspaces',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'billing',\n moduleLabel: 'Billing',\n pageId: 'home',\n pageLabel: 'Billing',\n path: '/billing/overview',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'store',\n moduleLabel: 'Marketplace',\n pageId: 'home',\n pageLabel: 'Marketplace',\n path: '/store/marketplace',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'channels',\n moduleLabel: 'Channels',\n pageId: 'home',\n pageLabel: 'Channels',\n path: '/channels',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'devportal',\n moduleLabel: 'Developer Portal',\n pageId: 'home',\n pageLabel: 'Developer Portal',\n path: '/devportal',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'feature-previews',\n moduleLabel: 'Feature Previews',\n pageId: 'home',\n pageLabel: 'Feature Previews',\n path: '/feature-previews',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'search',\n moduleLabel: 'Search',\n pageId: 'home',\n pageLabel: 'Search',\n path: '/search',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'dashboard',\n moduleLabel: 'Dashboard',\n pageId: 'dashboard',\n pageLabel: 'Dashboard',\n path: '/dashboard',\n isModuleHome: true,\n },\n {\n productId: 'fluidgrids',\n moduleId: 'workflows',\n moduleLabel: 'Workflows',\n pageId: 'list',\n pageLabel: 'My Workflows',\n path: '/workflows/list',\n isModuleHome: true,\n },\n {\n productId: 'fluidgrids',\n moduleId: 'workflows',\n moduleLabel: 'Workflows',\n pageId: 'builder',\n pageLabel: 'Workflow Builder',\n path: '/workflows/workflow',\n },\n {\n productId: 'fluidgrids',\n moduleId: 'workflows',\n moduleLabel: 'Workflows',\n pageId: 'runs',\n pageLabel: 'Runs',\n path: '/workflows/runs',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'catalog',\n moduleLabel: 'Course Catalog',\n pageId: 'home',\n pageLabel: 'Catalog',\n path: '/catalog',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'catalog',\n moduleLabel: 'Course Catalog',\n pageId: 'detail',\n pageLabel: 'Course Detail',\n path: '/catalog/:courseId',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'learning',\n moduleLabel: 'My Learning',\n pageId: 'home',\n pageLabel: 'My Learning',\n path: '/learning',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'learning',\n moduleLabel: 'My Learning',\n pageId: 'player',\n pageLabel: 'Lesson Player',\n path: '/learning/:enrollmentId',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'paths',\n moduleLabel: 'Skill Journeys',\n pageId: 'home',\n pageLabel: 'Skill Journeys',\n path: '/paths',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'authoring',\n moduleLabel: 'Authoring',\n pageId: 'home',\n pageLabel: 'Authoring',\n path: '/authoring',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'authoring',\n moduleLabel: 'Authoring',\n pageId: 'builder',\n pageLabel: 'Course Builder',\n path: '/authoring/:courseId',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'assessments',\n moduleLabel: 'Assessments',\n pageId: 'home',\n pageLabel: 'Assessments',\n path: '/assessments',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'assessments',\n moduleLabel: 'Assessments',\n pageId: 'detail',\n pageLabel: 'Assessment Detail',\n path: '/assessments/:assessmentId',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'assessments',\n moduleLabel: 'Assessments',\n pageId: 'take',\n pageLabel: 'Take Assessment',\n path: '/assessments/:assessmentId/take',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'insights',\n moduleLabel: 'Insights',\n pageId: 'home',\n pageLabel: 'Insights',\n path: '/insights',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'submissions',\n moduleLabel: 'Submissions',\n pageId: 'home',\n pageLabel: 'Submissions',\n path: '/submissions',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'cohorts',\n moduleLabel: 'Cohorts',\n pageId: 'home',\n pageLabel: 'Cohorts',\n path: '/cohorts',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'skills',\n moduleLabel: 'Skills',\n pageId: 'home',\n pageLabel: 'Skills',\n path: '/skills',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'certificates',\n moduleLabel: 'Certificates',\n pageId: 'home',\n pageLabel: 'Certificates',\n path: '/certificates',\n isModuleHome: true,\n },\n // moduleId/pageId values match the shell's runtime route derivation\n // (deriveRouteContext): moduleId is the product slug, pageId the second\n // path segment ('home' at the root) — same convention as vibecontrols.\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'home',\n pageLabel: 'Dashboard',\n path: '/collabkin',\n isModuleHome: true,\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'trees',\n pageLabel: 'Family Trees',\n path: '/collabkin/trees',\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'people',\n pageLabel: 'People',\n path: '/collabkin/people',\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'memories',\n pageLabel: 'Memories',\n path: '/collabkin/memories',\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'stories',\n pageLabel: 'Stories',\n path: '/collabkin/stories',\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'timeline',\n pageLabel: 'Timeline',\n path: '/collabkin/timeline',\n },\n] as const;\n\nfunction normalizeCatalogValue(value: string | null | undefined): string | undefined {\n const normalized = value?.trim();\n return normalized ? normalized : undefined;\n}\n\nfunction getRouteCatalog(productId: string | null | undefined): TourRouteCatalogEntry[] {\n const productKey = normalizeCatalogValue(productId);\n if (!productKey) return [];\n return TOUR_ROUTE_CATALOG.filter((entry) => entry.productId === productKey);\n}\n\nfunction getTourRouteModules(productId: string | null | undefined): TourRouteModuleOption[] {\n const modules = new Map<string, TourRouteModuleOption>();\n\n for (const entry of getRouteCatalog(productId)) {\n const existing = modules.get(entry.moduleId);\n if (!existing || entry.isModuleHome) {\n modules.set(entry.moduleId, {\n moduleId: entry.moduleId,\n label: entry.moduleLabel,\n path: entry.path,\n });\n }\n }\n\n return [...modules.values()];\n}\n\nfunction getTourRoutePages(\n productId: string | null | undefined,\n moduleId: string | null | undefined\n): TourRoutePageOption[] {\n const moduleKey = normalizeCatalogValue(moduleId);\n if (!moduleKey) return [];\n\n return getRouteCatalog(productId).flatMap((entry) =>\n entry.moduleId === moduleKey\n ? [{ pageId: entry.pageId, label: entry.pageLabel, path: entry.path }]\n : []\n );\n}\n\n/**\n * Tour builder page\n * Create or edit tour metadata\n */\nexport function TourBuilderPage() {\n const { tr } = useToursI18n();\n const { tourId } = useParams();\n const navigate = useNavigate();\n const toursContext = useToursContext();\n const { basePath = '/' } = toursContext;\n const eventBus = useEventBus();\n const globalClient = useGatewayClient('global');\n const { hasPermission, isLoading: permissionsLoading } = useToursPermissionAccess();\n const isNew = !tourId || tourId === 'new';\n const canCreate = hasPermission(TOUR_PERMISSIONS.TOUR_CREATE);\n const canUpdate = hasPermission(TOUR_PERMISSIONS.TOUR_UPDATE);\n const canCreateTemplate = hasPermission(TOUR_PERMISSIONS.TOUR_TEMPLATE_CREATE);\n const canSave = isNew ? canCreate : canUpdate;\n const canSeedVibeControlsUserTours = canCreate && canUpdate;\n const canSeedBuildmyiqUserTours = canCreate && canUpdate;\n\n const { tour, loadTour, createTour, updateTour, saving, validationErrors, error } =\n useTourBuilder(tourId);\n const { saveAsTemplate } = useTourLifecycle();\n const { data: productsData, loading: productsLoading } = useGetPlatformProductsForToursQuery({\n variables: { limit: PLATFORM_PRODUCTS_QUERY_LIMIT, offset: 0 },\n fetchPolicy: 'cache-and-network',\n skip: permissionsLoading || !canSave,\n });\n\n const defaultFormData = {\n name: '',\n description: '',\n productId: '',\n moduleId: '',\n pageId: '',\n isActive: true,\n status: 'DRAFT' as const,\n triggerType: 'MANUAL' as const,\n priority: 50,\n displayOrder: 1,\n startDate: '',\n endDate: '',\n };\n\n const [formData, setFormData] = useState<Partial<Tour>>(defaultFormData);\n const [customProductEntry, setCustomProductEntry] = useState(false);\n const [customModuleEntry, setCustomModuleEntry] = useState(false);\n const [customPageEntry, setCustomPageEntry] = useState(false);\n const [seedLoading, setSeedLoading] = useState(false);\n const [seedResult, setSeedResult] = useState<SeedVibeControlsUserToursPayload | null>(null);\n const [seedError, setSeedError] = useState<string | null>(null);\n const [seedBuildmyiqLoading, setSeedBuildmyiqLoading] = useState(false);\n const [seedBuildmyiqResult, setSeedBuildmyiqResult] =\n useState<SeedVibeControlsUserToursPayload | null>(null);\n const [seedBuildmyiqError, setSeedBuildmyiqError] = useState<string | null>(null);\n\n const formInitializedRef = useRef(false);\n\n const productOptions = useMemo(() => {\n return [...(productsData?.platformProducts.items ?? [])].sort((a, b) =>\n a.name.localeCompare(b.name)\n );\n }, [productsData]);\n\n const productOptionSlugs = useMemo(\n () => new Set(productOptions.map((product) => product.slug)),\n [productOptions]\n );\n\n const moduleOptions = useMemo(\n () => getTourRouteModules(formData.productId),\n [formData.productId]\n );\n\n const moduleOptionIds = useMemo(\n () => new Set(moduleOptions.map((moduleOption) => moduleOption.moduleId)),\n [moduleOptions]\n );\n\n const pageOptions = useMemo(\n () => getTourRoutePages(formData.productId, formData.moduleId),\n [formData.moduleId, formData.productId]\n );\n\n const pageOptionIds = useMemo(\n () => new Set(pageOptions.map((pageOption) => pageOption.pageId)),\n [pageOptions]\n );\n\n useEffect(() => {\n if (formInitializedRef.current) return;\n if (!permissionsLoading && canSave && tourId && tourId !== 'new') {\n loadTour(tourId);\n }\n }, [canSave, loadTour, permissionsLoading, tourId]);\n\n useEffect(() => {\n if (tour && !formInitializedRef.current) {\n setFormData(tour);\n formInitializedRef.current = true;\n }\n }, [tour]);\n\n useEffect(() => {\n if (!formData.productId || productsLoading) {\n setCustomProductEntry(false);\n return;\n }\n setCustomProductEntry(productOptions.length > 0 && !productOptionSlugs.has(formData.productId));\n }, [formData.productId, productOptionSlugs, productOptions.length, productsLoading]);\n\n useEffect(() => {\n if (!formData.productId || !formData.moduleId) {\n setCustomModuleEntry(false);\n return;\n }\n setCustomModuleEntry(moduleOptions.length === 0 || !moduleOptionIds.has(formData.moduleId));\n }, [formData.moduleId, formData.productId, moduleOptionIds, moduleOptions.length]);\n\n useEffect(() => {\n if (!formData.productId || !formData.pageId) {\n setCustomPageEntry(false);\n return;\n }\n setCustomPageEntry(pageOptions.length === 0 || !pageOptionIds.has(formData.pageId));\n }, [formData.pageId, formData.productId, pageOptionIds, pageOptions.length]);\n\n const showCurrentProductOption = Boolean(\n formData.productId && !customProductEntry && !productOptionSlugs.has(formData.productId)\n );\n const showCurrentModuleOption = Boolean(\n formData.moduleId && !customModuleEntry && !moduleOptionIds.has(formData.moduleId)\n );\n const showCurrentPageOption = Boolean(\n formData.pageId && !customPageEntry && !pageOptionIds.has(formData.pageId)\n );\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n try {\n if (tourId && tourId !== 'new') {\n await updateTour(tourId, formData);\n } else {\n await createTour(formData);\n }\n } catch {\n emitToursApiFailed(eventBus, 'tour.save', toursContext);\n }\n };\n\n const handleBack = () => {\n navigate(`${basePath}/list`);\n };\n\n const formatDateTimeLocal = (value?: string) => {\n if (!value) return '';\n\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) {\n return '';\n }\n\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().slice(0, 16);\n };\n\n const handleSaveTemplate = async () => {\n if (!tourId || tourId === 'new') return;\n\n const defaultName = tr('tourBuilder.templateDefaultName', '{{name}} Template', {\n name: formData.name || tour?.name || 'Tour',\n });\n const name = window.prompt(tr('tourBuilder.templateNamePrompt', 'Template name'), defaultName);\n if (!name) return;\n\n const category =\n window.prompt(\n tr(\n 'tourBuilder.templateCategoryPrompt',\n 'Template category (ONBOARDING, FEATURE_ANNOUNCEMENT, HELP, CUSTOM)'\n ),\n 'ONBOARDING'\n ) || 'ONBOARDING';\n\n try {\n await saveAsTemplate(tourId, {\n name,\n description: formData.description,\n category,\n isPublic: false,\n });\n navigate(`${basePath}/templates`);\n } catch {\n emitToursApiFailed(eventBus, 'template.save', toursContext);\n }\n };\n\n const handleSeedVibeControlsUserTours = async () => {\n const confirmed = window.confirm(tr('tourBuilder.seedVibeControls.confirm'));\n if (!confirmed) return;\n\n setSeedLoading(true);\n setSeedResult(null);\n setSeedError(null);\n\n try {\n const result = await globalClient.mutate<SeedVibeControlsUserToursMutation>({\n mutation: SEED_VIBECONTROLS_USER_TOURS,\n });\n\n const mutationErrorMessage = getMutationErrorMessage(\n result,\n tr('tourBuilder.seedMutationErrors', 'Seed mutation returned errors.')\n );\n if (mutationErrorMessage) {\n throw new Error(mutationErrorMessage);\n }\n\n const payload = result.data?.seedVibeControlsUserTours;\n if (!payload) {\n throw new Error(\n tr('tourBuilder.seedMutationNoResult', 'Seed mutation returned no result.')\n );\n }\n\n setSeedResult(payload);\n } catch (seedMutationError) {\n const errorMessage =\n seedMutationError instanceof Error\n ? seedMutationError.message\n : tr('tourBuilder.seedVibeControls.error');\n setSeedError(errorMessage);\n eventBus.emit(\n 'tours.api.failed',\n {\n route: '/tours',\n operation: 'tour.seed_vibecontrols_user_tours',\n errorMessage,\n productId: toursContext.productId,\n workspaceId: toursContext.workspaceId,\n },\n { component: 'microfe-tours' }\n );\n } finally {\n setSeedLoading(false);\n }\n };\n\n const handleSeedBuildmyiqUserTours = async () => {\n const confirmed = window.confirm(tr('tourBuilder.seedBuildmyiq.confirm'));\n if (!confirmed) return;\n\n setSeedBuildmyiqLoading(true);\n setSeedBuildmyiqResult(null);\n setSeedBuildmyiqError(null);\n\n try {\n const result = await globalClient.mutate<SeedBuildmyiqUserToursMutation>({\n mutation: SEED_BUILDMYIQ_USER_TOURS,\n });\n\n const mutationErrorMessage = getMutationErrorMessage(\n result,\n tr('tourBuilder.seedMutationErrors', 'Seed mutation returned errors.')\n );\n if (mutationErrorMessage) {\n throw new Error(mutationErrorMessage);\n }\n\n const payload = result.data?.seedBuildmyiqUserTours;\n if (!payload) {\n throw new Error(\n tr('tourBuilder.seedMutationNoResult', 'Seed mutation returned no result.')\n );\n }\n\n setSeedBuildmyiqResult(payload);\n } catch (seedMutationError) {\n const errorMessage =\n seedMutationError instanceof Error\n ? seedMutationError.message\n : tr('tourBuilder.seedBuildmyiq.error');\n setSeedBuildmyiqError(errorMessage);\n eventBus.emit(\n 'tours.api.failed',\n {\n route: '/tours',\n operation: 'tour.seed_buildmyiq_user_tours',\n errorMessage,\n productId: toursContext.productId,\n workspaceId: toursContext.workspaceId,\n },\n { component: 'microfe-tours' }\n );\n } finally {\n setSeedBuildmyiqLoading(false);\n }\n };\n\n const secondaryActions: CTAAction[] =\n tourId && tourId !== 'new'\n ? [\n {\n label:\n tour?.steps && tour.steps.length > 0\n ? `${tr('tourBuilder.editSteps')} (${tour.steps.length})`\n : tr('tourBuilder.editSteps'),\n onSelect: () => navigate(`${basePath}/${tourId}/steps`),\n icon: <ListOrdered size={16} />,\n },\n {\n label: tr('tourBuilder.preview'),\n onSelect: () => navigate(`${basePath}/${tourId}/preview`),\n icon: <Eye size={16} />,\n },\n {\n label: tr('tourBuilder.analytics'),\n onSelect: () => navigate(`${basePath}/${tourId}/analytics`),\n icon: <BarChart3 size={16} />,\n },\n {\n label: tr('tourBuilder.schedule', 'Schedule'),\n onSelect: () => navigate(`${basePath}/${tourId}/schedule`),\n icon: <Calendar size={16} />,\n },\n ...(canCreateTemplate\n ? [\n {\n label: tr('tourBuilder.saveAsTemplate', 'Save as Template'),\n onSelect: () => void handleSaveTemplate(),\n icon: <LayoutTemplate size={16} />,\n } satisfies CTAAction,\n ]\n : []),\n ]\n : [];\n\n // Concrete, real-handler next steps for the (complex) edit view so a new\n // author isn't left guessing what to do after saving the tour's metadata.\n const isExistingTour = Boolean(tourId && tourId !== 'new');\n const nextSteps: NextStep[] =\n isExistingTour && canUpdate\n ? [\n {\n id: 'edit-steps',\n label: tr('tourBuilder.nextStepEditSteps'),\n description: tr('tourBuilder.nextStepEditStepsDesc'),\n icon: <ListOrdered size={16} />,\n onClick: () => navigate(`${basePath}/${tourId}/steps`),\n },\n {\n id: 'preview',\n label: tr('tourBuilder.nextStepPreview'),\n description: tr('tourBuilder.nextStepPreviewDesc'),\n icon: <Eye size={16} />,\n onClick: () => navigate(`${basePath}/${tourId}/preview`),\n },\n {\n id: 'schedule',\n label: tr('tourBuilder.nextStepSchedule'),\n description: tr('tourBuilder.nextStepScheduleDesc'),\n icon: <Calendar size={16} />,\n onClick: () => navigate(`${basePath}/${tourId}/schedule`),\n },\n {\n id: 'analytics',\n label: tr('tourBuilder.nextStepAnalytics'),\n description: tr('tourBuilder.nextStepAnalyticsDesc'),\n icon: <BarChart3 size={16} />,\n onClick: () => navigate(`${basePath}/${tourId}/analytics`),\n },\n ]\n : [];\n\n if (permissionsLoading) {\n return (\n <div className=\"flex h-full items-center justify-center p-3 sm:p-6\">\n <p className=\"text-sm text-text-secondary\">{tr('tourBuilder.loading')}</p>\n </div>\n );\n }\n\n if (!canSave) {\n return (\n <div className=\"flex h-full items-center justify-center p-3 sm:p-6\">\n <div className=\"text-center space-y-4\">\n <div>\n <h2 className=\"text-lg font-semibold text-text-primary mb-2\">\n {tr('tourBuilder.accessDeniedTitle')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {isNew\n ? tr('tourBuilder.createAccessDeniedMessage')\n : tr('tourBuilder.updateAccessDeniedMessage')}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={handleBack}\n className=\"inline-flex items-center justify-center rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent\"\n >\n {tr('tourBuilder.goBack')}\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-4 sm:space-y-6 p-3 sm:p-6 max-w-4xl mx-auto\">\n {/* Header */}\n <div className=\"flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={handleBack}\n className=\"p-2 hover:bg-accent rounded-md\"\n aria-label={tr('tourBuilder.goBack')}\n >\n <ArrowLeft size={20} />\n </button>\n <div className=\"flex-1\">\n <h1 className=\"text-xl sm:text-2xl font-bold text-text-primary\">\n {tourId && tourId !== 'new'\n ? tr('tourBuilder.titleEdit')\n : tr('tourBuilder.titleCreate')}\n </h1>\n <p className=\"text-sm text-text-secondary\">{tr('tourBuilder.subtitle')}</p>\n </div>\n </div>\n\n <PagePurpose>{tr('tourBuilder.purpose')}</PagePurpose>\n\n {nextSteps.length > 0 ? (\n <NextSteps\n storageKey=\"tours-builder\"\n title={tr('tourBuilder.nextStepsTitle')}\n steps={nextSteps}\n />\n ) : null}\n\n {isNew ? (\n <>\n <EmphasisPanel className=\"p-4 sm:p-6\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"space-y-1\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {tr('tourBuilder.seedVibeControls.title')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tr('tourBuilder.seedVibeControls.description')}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => void handleSeedVibeControlsUserTours()}\n disabled={seedLoading || !canSeedVibeControlsUserTours}\n className=\"inline-flex min-h-11 items-center justify-center gap-2 rounded-md border border-border-subtle bg-secondary px-4 py-2 text-sm font-medium text-secondary-foreground hover:bg-secondary/80 disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <Sparkles size={18} />\n {seedLoading\n ? tr('tourBuilder.seedVibeControls.loading')\n : tr('tourBuilder.seedVibeControls.button')}\n </button>\n </div>\n {!canSeedVibeControlsUserTours ? (\n <p className=\"mt-3 text-sm text-text-secondary\">\n {tr('tourBuilder.seedVibeControls.permissionHint')}\n </p>\n ) : null}\n {seedError ? <p className=\"mt-3 text-sm text-status-error-text\">{seedError}</p> : null}\n {seedResult ? (\n <div className=\"mt-3 rounded-md border border-border-seam bg-bg-surface p-3 text-sm text-text-secondary\">\n {tr('tourBuilder.seedVibeControls.result', {\n totalCount: seedResult.totalCount,\n productId: seedResult.productId,\n workspaceId: seedResult.workspaceId,\n createdCount: seedResult.createdCount,\n updatedCount: seedResult.updatedCount,\n })}\n </div>\n ) : null}\n </EmphasisPanel>\n\n <EmphasisPanel className=\"p-4 sm:p-6\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"space-y-1\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {tr('tourBuilder.seedBuildmyiq.title')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tr('tourBuilder.seedBuildmyiq.description')}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => void handleSeedBuildmyiqUserTours()}\n disabled={seedBuildmyiqLoading || !canSeedBuildmyiqUserTours}\n className=\"inline-flex min-h-11 items-center justify-center gap-2 rounded-md border border-border-subtle bg-secondary px-4 py-2 text-sm font-medium text-secondary-foreground hover:bg-secondary/80 disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <Sparkles size={18} />\n {seedBuildmyiqLoading\n ? tr('tourBuilder.seedBuildmyiq.loading')\n : tr('tourBuilder.seedBuildmyiq.button')}\n </button>\n </div>\n {!canSeedBuildmyiqUserTours ? (\n <p className=\"mt-3 text-sm text-text-secondary\">\n {tr('tourBuilder.seedBuildmyiq.permissionHint')}\n </p>\n ) : null}\n {seedBuildmyiqError ? (\n <p className=\"mt-3 text-sm text-status-error-text\">{seedBuildmyiqError}</p>\n ) : null}\n {seedBuildmyiqResult ? (\n <div className=\"mt-3 rounded-md border border-border-seam bg-bg-surface p-3 text-sm text-text-secondary\">\n {tr('tourBuilder.seedBuildmyiq.result', {\n totalCount: seedBuildmyiqResult.totalCount,\n productId: seedBuildmyiqResult.productId,\n workspaceId: seedBuildmyiqResult.workspaceId,\n createdCount: seedBuildmyiqResult.createdCount,\n updatedCount: seedBuildmyiqResult.updatedCount,\n })}\n </div>\n ) : null}\n </EmphasisPanel>\n </>\n ) : null}\n\n {/* Form */}\n <form onSubmit={handleSubmit} className=\"space-y-6\">\n {/* Basic Info */}\n <GlassCard treatment=\"plain\" className=\"p-4 sm:p-6 border-border-seam\">\n <h2 className=\"text-lg font-semibold mb-4\">{tr('tourBuilder.sectionBasicInfo')}</h2>\n\n <div className=\"space-y-4\">\n {/* Name */}\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"tour-name\">\n {tr('tourBuilder.labelName')}\n </label>\n <input\n id=\"tour-name\"\n type=\"text\"\n value={formData.name || ''}\n onChange={(e) => setFormData({ ...formData, name: e.target.value })}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n required\n aria-label={tr('tourBuilder.labelName')}\n />\n </div>\n\n {/* Description */}\n <MarkdownEditor\n id=\"tour-description\"\n label={tr('tourBuilder.labelDescription')}\n value={formData.description || ''}\n onChange={(description) => setFormData({ ...formData, description })}\n rows={4}\n aria-label={tr('tourBuilder.labelDescription')}\n />\n\n {/* Product ID */}\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"product-id\">\n {tr('tourBuilder.labelProductId')}\n </label>\n <select\n id=\"product-id\"\n value={customProductEntry ? '__custom__' : formData.productId || ''}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n setCustomProductEntry(true);\n setFormData({\n ...formData,\n productId: '',\n moduleId: undefined,\n pageId: undefined,\n });\n return;\n }\n\n setCustomProductEntry(false);\n setCustomModuleEntry(false);\n setCustomPageEntry(false);\n setFormData({\n ...formData,\n productId: e.target.value,\n moduleId: undefined,\n pageId: undefined,\n });\n }}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n required\n aria-label={tr('tourBuilder.labelProductId')}\n >\n <option value=\"\">{tr('tourBuilder.selectProduct', 'Select product')}</option>\n {productsLoading ? (\n <option disabled>{tr('tourBuilder.loadingProducts', 'Loading products…')}</option>\n ) : null}\n {productOptions.map((product) => (\n <option key={product.id} value={product.slug}>\n {product.name} ({product.slug})\n </option>\n ))}\n {showCurrentProductOption ? (\n <option value={formData.productId}>\n {tr('tourBuilder.currentValue', 'Current: {{value}}', {\n value: formData.productId ?? '',\n })}\n </option>\n ) : null}\n <option value=\"__custom__\">\n {tr('tourBuilder.customProductSlug', 'Custom product slug')}\n </option>\n </select>\n {customProductEntry ? (\n <input\n id=\"product-id-custom\"\n aria-label={tr('tourBuilder.customProductSlug', 'Custom product slug')}\n type=\"text\"\n value={formData.productId || ''}\n onChange={(e) =>\n setFormData({\n ...formData,\n productId: e.target.value,\n moduleId: undefined,\n pageId: undefined,\n })\n }\n className=\"mt-2 w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n placeholder={tr('tourBuilder.productSlugPlaceholder', 'vibecontrols')}\n required\n />\n ) : null}\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"module-id\">\n {tr('tourBuilder.labelModuleId', 'Module ID')}\n </label>\n <select\n id=\"module-id\"\n value={customModuleEntry ? '__custom__' : formData.moduleId || ''}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n setCustomModuleEntry(true);\n setFormData({ ...formData, moduleId: '', pageId: undefined });\n return;\n }\n\n setCustomModuleEntry(false);\n setCustomPageEntry(false);\n setFormData({\n ...formData,\n moduleId: e.target.value || undefined,\n pageId: undefined,\n });\n }}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n disabled={!formData.productId}\n aria-label={tr('tourBuilder.labelModuleId', 'Module ID')}\n >\n <option value=\"\">{tr('tourBuilder.allModules', 'All modules')}</option>\n {moduleOptions.map((moduleOption) => (\n <option key={moduleOption.moduleId} value={moduleOption.moduleId}>\n {moduleOption.label} ({moduleOption.moduleId})\n </option>\n ))}\n {showCurrentModuleOption ? (\n <option value={formData.moduleId}>\n {tr('tourBuilder.currentValue', 'Current: {{value}}', {\n value: formData.moduleId ?? '',\n })}\n </option>\n ) : null}\n <option value=\"__custom__\">\n {tr('tourBuilder.customModuleId', 'Custom module ID')}\n </option>\n </select>\n {customModuleEntry ? (\n <input\n id=\"module-id-custom\"\n aria-label={tr('tourBuilder.customModuleId', 'Custom module ID')}\n type=\"text\"\n value={formData.moduleId || ''}\n onChange={(e) =>\n setFormData({\n ...formData,\n moduleId: e.target.value || undefined,\n pageId: undefined,\n })\n }\n className=\"mt-2 w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n placeholder={tr('tourBuilder.moduleSlugPlaceholder', 'vibecontrols')}\n />\n ) : null}\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"page-id\">\n {tr('tourBuilder.labelPageId', 'Page ID')}\n </label>\n <select\n id=\"page-id\"\n value={customPageEntry ? '__custom__' : formData.pageId || ''}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n setCustomPageEntry(true);\n setFormData({ ...formData, pageId: '' });\n return;\n }\n\n setCustomPageEntry(false);\n setFormData({ ...formData, pageId: e.target.value || undefined });\n }}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n disabled={!formData.productId}\n aria-label={tr('tourBuilder.labelPageId', 'Page ID')}\n >\n <option value=\"\">{tr('tourBuilder.allPages', 'All pages')}</option>\n {pageOptions.map((pageOption) => (\n <option key={pageOption.pageId} value={pageOption.pageId}>\n {pageOption.label} ({pageOption.pageId})\n </option>\n ))}\n {showCurrentPageOption ? (\n <option value={formData.pageId}>\n {tr('tourBuilder.currentValue', 'Current: {{value}}', {\n value: formData.pageId ?? '',\n })}\n </option>\n ) : null}\n <option value=\"__custom__\">\n {tr('tourBuilder.customPageId', 'Custom page ID')}\n </option>\n </select>\n {customPageEntry ? (\n <input\n id=\"page-id-custom\"\n aria-label={tr('tourBuilder.customPageId', 'Custom page ID')}\n type=\"text\"\n value={formData.pageId || ''}\n onChange={(e) =>\n setFormData({ ...formData, pageId: e.target.value || undefined })\n }\n className=\"mt-2 w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n placeholder={tr('tourBuilder.pageSlugPlaceholder', 'agents')}\n />\n ) : null}\n </div>\n </div>\n\n <label className=\"flex items-center gap-3 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={formData.isActive ?? true}\n onChange={(e) => setFormData({ ...formData, isActive: e.target.checked })}\n className=\"size-4 rounded\"\n aria-label={tr('tourBuilder.labelActive', 'Active')}\n />\n <span className=\"text-sm font-medium\">{tr('tourBuilder.labelActive', 'Active')}</span>\n </label>\n </div>\n </GlassCard>\n\n {/* Trigger Settings */}\n <GlassCard treatment=\"plain\" className=\"p-4 sm:p-6 border-border-seam\">\n <h2 className=\"text-lg font-semibold mb-4\">{tr('tourBuilder.sectionTriggerSettings')}</h2>\n\n <div className=\"space-y-4\">\n {/* Trigger Type */}\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"trigger-type\">\n {tr('tourBuilder.labelTriggerType')}\n </label>\n <select\n id=\"trigger-type\"\n value={formData.triggerType || 'MANUAL'}\n onChange={(e) =>\n setFormData({ ...formData, triggerType: e.target.value as TourTriggerType })\n }\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n aria-label={tr('tourBuilder.labelTriggerType')}\n >\n <option value=\"MANUAL\">{tr('tourBuilder.triggerManual')}</option>\n <option value=\"AUTO_FIRST_VISIT\">{tr('tourBuilder.triggerAutoFirstVisit')}</option>\n <option value=\"AUTO_ALWAYS\">{tr('tourBuilder.triggerAutoAlways')}</option>\n <option value=\"ON_EVENT\">{tr('tourBuilder.triggerOnEvent')}</option>\n <option value=\"SCHEDULED\">{tr('tourBuilder.triggerScheduled')}</option>\n </select>\n </div>\n\n {/* Priority */}\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"priority\">\n {tr('tourBuilder.labelPriority')}\n </label>\n <input\n id=\"priority\"\n type=\"number\"\n min=\"1\"\n max=\"100\"\n value={formData.priority || 50}\n onChange={(e) => {\n const priority = Number.parseInt(e.target.value, 10) || 50;\n setFormData({ ...formData, priority });\n }}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n aria-label={tr('tourBuilder.labelPriority')}\n />\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"tour-start-date\">\n {tr('tourBuilder.labelStartDate', 'Start Date')}\n </label>\n <input\n id=\"tour-start-date\"\n type=\"datetime-local\"\n value={formatDateTimeLocal(formData.startDate)}\n onChange={(e) =>\n setFormData({\n ...formData,\n startDate: e.target.value\n ? new Date(e.target.value).toISOString()\n : undefined,\n })\n }\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n aria-label={tr('tourBuilder.labelStartDate', 'Start Date')}\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"tour-end-date\">\n {tr('tourBuilder.labelEndDate', 'End Date')}\n </label>\n <input\n id=\"tour-end-date\"\n type=\"datetime-local\"\n value={formatDateTimeLocal(formData.endDate)}\n onChange={(e) =>\n setFormData({\n ...formData,\n endDate: e.target.value ? new Date(e.target.value).toISOString() : undefined,\n })\n }\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n aria-label={tr('tourBuilder.labelEndDate', 'End Date')}\n />\n </div>\n </div>\n </div>\n </GlassCard>\n\n {/* API Error */}\n {error && (\n <div className=\"border border-status-error-border rounded-md p-4 bg-status-error-bg/10\">\n <h3 className=\"font-semibold text-status-error-text mb-2\">\n {tr('tourBuilder.errorTitle')}\n </h3>\n <p className=\"text-sm text-status-error-text\">{error.message}</p>\n </div>\n )}\n\n {/* Validation Errors */}\n {validationErrors.length > 0 && (\n <div className=\"border border-status-error-border rounded-md p-4 bg-status-error-bg/10\">\n <h3 className=\"font-semibold text-status-error-text mb-2\">\n {tr('tourBuilder.validationErrorsTitle')}\n </h3>\n <ul className=\"list-disc list-inside space-y-1\">\n {validationErrors.map((err) => (\n <li key={err.field} className=\"text-sm text-status-error-text\">\n {tr(err.message, err.params)}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Actions — one primary submit CTA, related navigation collapsed into the overflow menu */}\n <div className=\"flex flex-wrap items-center gap-3\">\n <PermissionGate\n permission={isNew ? TOUR_PERMISSIONS.TOUR_CREATE : TOUR_PERMISSIONS.TOUR_UPDATE}\n >\n <Button\n type=\"submit\"\n disabled={saving || !canSave}\n className=\"flex-1 min-w-[200px] min-h-[44px]\"\n >\n <Save size={20} />\n {saving\n ? tr('tourBuilder.saving')\n : tourId && tourId !== 'new'\n ? tr('tourBuilder.updateTour')\n : tr('tourBuilder.createAndAddSteps')}\n </Button>\n </PermissionGate>\n {tourId && tourId !== 'new' && secondaryActions.length > 0 && (\n <CTAOverflowMenu actions={secondaryActions} />\n )}\n </div>\n </form>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsCA,IAAM,KAAgC,KAEhC,KAA+B,CAAG;;;;;;;;;;;;;;;;;GAmBlC,KAA4B,CAAG;;;;;;;;;;;;;;;;;;AA4CrC,SAAS,GAAwB,GAAiB,GAAwC;AACxF,KAAI,CAAC,KAAU,OAAO,KAAW,SAAU,QAAO;CAElD,IAAM,IAAS,GACT,IAAc,EAAO;AAC3B,KAAI,aAAuB,MAAO,QAAO,EAAY;CAErD,IAAM,IAAS,EAAO;AACtB,KAAI,CAAC,MAAM,QAAQ,EAAO,IAAI,EAAO,WAAW,EAAG,QAAO;CAE1D,IAAM,IAAW,EACd,KAAK,MAAU;AACd,MAAI,aAAiB,MAAO,QAAO,EAAM;AACzC,MAAI,CAAC,KAAS,OAAO,KAAU,SAAU,QAAO;EAEhD,IAAM,IAAW,EAAgC;AACjD,SAAO,OAAO,KAAY,WAAW,IAAU;GAC/C,CACD,QAAQ,MAA+B,EAAQ,EAAS;AAE3D,QAAO,EAAS,SAAS,IAAI,EAAS,KAAK,KAAK,GAAG;;AAyBrD,IAAM,IAAuD;CAC3D;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,U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"}
1
+ {"version":3,"file":"TourBuilderPage.js","names":[],"sources":["../../../src/tours/pages/TourBuilderPage.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useParams, useNavigate } from 'react-router';\nimport {\n Save,\n ArrowLeft,\n Eye,\n ListOrdered,\n BarChart3,\n Calendar,\n LayoutTemplate,\n Sparkles,\n} from 'lucide-react';\nimport { gql } from '@apollo/client/core';\nimport { PermissionGate } from '@burdenoff/fe-libs/shared/components';\nimport {\n Button,\n GlassCard,\n EmphasisPanel,\n PagePurpose,\n NextSteps,\n type NextStep,\n CTAOverflowMenu,\n type CTAAction,\n} from '@burdenoff/fe-libs/ui';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\nimport { useGatewayClient } from '@burdenoff/fe-libs/shared/graphql';\nimport { MarkdownEditor } from '../components/MarkdownEditor';\nimport { useTourBuilder } from '../hooks/useTourBuilder';\nimport { useTourLifecycle } from '../hooks/useTourLifecycle';\nimport { useToursPermissionAccess } from '../hooks/useToursPermissionAccess';\nimport { useToursContext } from '../providers/ToursProvider';\nimport { TOUR_PERMISSIONS } from '../../constants/permissions';\nimport type { Tour, TourTriggerType } from '../types';\nimport { useToursI18n } from '../i18n';\nimport { emitToursApiFailed } from '../telemetry';\nimport { useGetPlatformProductsForToursQuery } from '../../generated/global-operations';\n\n// Covers the current platform catalog with room for planned products; custom slug entry remains the fallback.\nconst PLATFORM_PRODUCTS_QUERY_LIMIT = 250;\n\nconst SEED_VIBECONTROLS_USER_TOURS = gql`\n mutation SeedVibeControlsUserTours {\n seedVibeControlsUserTours {\n productId\n workspaceId\n createdCount\n updatedCount\n totalCount\n tours {\n tourId\n slug\n name\n action\n stepCount\n }\n }\n }\n`;\n\nconst SEED_BUILDMYIQ_USER_TOURS = gql`\n mutation SeedBuildmyiqUserTours {\n seedBuildmyiqUserTours {\n productId\n workspaceId\n createdCount\n updatedCount\n totalCount\n tours {\n tourId\n slug\n name\n action\n stepCount\n }\n }\n }\n`;\n\ninterface SeededUserTourResult {\n tourId: string;\n slug: string;\n name: string;\n action: string;\n stepCount: number;\n}\n\ninterface SeedVibeControlsUserToursPayload {\n productId: string;\n workspaceId: string;\n createdCount: number;\n updatedCount: number;\n totalCount: number;\n tours: SeededUserTourResult[];\n}\n\ninterface SeedVibeControlsUserToursMutation {\n seedVibeControlsUserTours: SeedVibeControlsUserToursPayload;\n}\n\ninterface SeedBuildmyiqUserToursMutation {\n seedBuildmyiqUserTours: SeedVibeControlsUserToursPayload;\n}\n\nfunction getMutationErrorMessage(result: unknown, fallbackMessage: string): string | null {\n if (!result || typeof result !== 'object') return null;\n\n const record = result as Record<string, unknown>;\n const singleError = record.error;\n if (singleError instanceof Error) return singleError.message;\n\n const errors = record.errors;\n if (!Array.isArray(errors) || errors.length === 0) return null;\n\n const messages = errors\n .map((error) => {\n if (error instanceof Error) return error.message;\n if (!error || typeof error !== 'object') return null;\n\n const message = (error as { message?: unknown }).message;\n return typeof message === 'string' ? message : null;\n })\n .filter((message): message is string => Boolean(message));\n\n return messages.length > 0 ? messages.join('; ') : fallbackMessage;\n}\n\ninterface TourRouteModuleOption {\n moduleId: string;\n label: string;\n path: string;\n}\n\ninterface TourRoutePageOption {\n pageId: string;\n label: string;\n path: string;\n}\n\ninterface TourRouteCatalogEntry {\n productId: string;\n moduleId: string;\n moduleLabel: string;\n pageId: string;\n pageLabel: string;\n path: string;\n isModuleHome?: boolean;\n}\n\nconst TOUR_ROUTE_CATALOG: readonly TourRouteCatalogEntry[] = [\n {\n productId: 'vibecontrols',\n moduleId: 'dashboard',\n moduleLabel: 'Dashboard',\n pageId: 'dashboard',\n pageLabel: 'Dashboard',\n path: '/dashboard',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'home',\n pageLabel: 'Overview',\n path: '/vibecontrols',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'agents',\n pageLabel: 'Targets & Agents',\n path: '/vibecontrols/agents',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'vibes',\n pageLabel: 'Vibes',\n path: '/vibecontrols/vibes',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'sessions',\n pageLabel: 'Sessions',\n path: '/vibecontrols/sessions',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'ai',\n pageLabel: 'AI',\n path: '/vibecontrols/ai',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'catalogs',\n pageLabel: 'Catalogs',\n path: '/vibecontrols/catalogs',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'components',\n pageLabel: 'Components',\n path: '/vibecontrols/components',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'templates',\n pageLabel: 'Templates',\n path: '/vibecontrols/templates',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'actions',\n pageLabel: 'Actions',\n path: '/vibecontrols/actions',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'vibedeck',\n pageLabel: 'Decks',\n path: '/vibecontrols/vibedeck',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'calendar',\n pageLabel: 'Calendar',\n path: '/vibecontrols/calendar',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'tunnels',\n pageLabel: 'Tunnels',\n path: '/vibecontrols/tunnels',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'analytics',\n pageLabel: 'Analytics',\n path: '/vibecontrols/analytics',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'audit',\n pageLabel: 'Audit Log',\n path: '/vibecontrols/audit',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'health',\n pageLabel: 'Health',\n path: '/vibecontrols/health',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'vibecontrols',\n moduleLabel: 'VibeControls',\n pageId: 'settings',\n pageLabel: 'Settings',\n path: '/vibecontrols/settings',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'scheduler',\n moduleLabel: 'Scheduler',\n pageId: 'scheduler',\n pageLabel: 'Scheduler',\n path: '/scheduler',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'sandbox',\n moduleLabel: 'Sandbox',\n pageId: 'sandbox',\n pageLabel: 'Sandbox',\n path: '/sandbox',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'support',\n moduleLabel: 'Support',\n pageId: 'tickets',\n pageLabel: 'Tickets',\n path: '/support/tickets',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'support',\n moduleLabel: 'Support',\n pageId: 'knowledge-base',\n pageLabel: 'Knowledge Base',\n path: '/support/kb',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'notifications',\n moduleLabel: 'Notifications',\n pageId: 'center',\n pageLabel: 'Notification Center',\n path: '/notifications/center',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'notifications',\n moduleLabel: 'Notifications',\n pageId: 'history',\n pageLabel: 'History',\n path: '/notifications/history',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'notifications',\n moduleLabel: 'Notifications',\n pageId: 'preferences',\n pageLabel: 'Preferences',\n path: '/notifications/preferences',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'conversations',\n moduleLabel: 'Conversations',\n pageId: 'home',\n pageLabel: 'All Conversations',\n path: '/conversations',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'conversations',\n moduleLabel: 'Conversations',\n pageId: 'list',\n pageLabel: 'Conversation List',\n path: '/conversations/list',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'conversations',\n moduleLabel: 'Conversations',\n pageId: 'new',\n pageLabel: 'New Conversation',\n path: '/conversations/new',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'conversations',\n moduleLabel: 'Conversations',\n pageId: 'settings',\n pageLabel: 'Settings',\n path: '/conversations/settings',\n },\n {\n productId: 'vibecontrols',\n moduleId: 'auth',\n moduleLabel: 'Auth',\n pageId: 'home',\n pageLabel: 'Auth',\n path: '/auth/security',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'groups',\n moduleLabel: 'Groups and Teams',\n pageId: 'home',\n pageLabel: 'Groups and Teams',\n path: '/groups',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'tags',\n moduleLabel: 'Tags',\n pageId: 'home',\n pageLabel: 'Tags',\n path: '/tags',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'files',\n moduleLabel: 'Files',\n pageId: 'home',\n pageLabel: 'Files',\n path: '/files/browse',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'security',\n moduleLabel: 'Vault',\n pageId: 'home',\n pageLabel: 'Vault',\n path: '/security',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'integrations',\n moduleLabel: 'Integrations',\n pageId: 'home',\n pageLabel: 'Integrations',\n path: '/integrations',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'export',\n moduleLabel: 'Exports',\n pageId: 'home',\n pageLabel: 'Exports',\n path: '/export',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'organizations',\n moduleLabel: 'Organizations',\n pageId: 'home',\n pageLabel: 'Organizations',\n path: '/organizations',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'workspaces',\n moduleLabel: 'Workspaces',\n pageId: 'home',\n pageLabel: 'Workspaces',\n path: '/workspaces',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'billing',\n moduleLabel: 'Billing',\n pageId: 'home',\n pageLabel: 'Billing',\n path: '/billing/overview',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'store',\n moduleLabel: 'Marketplace',\n pageId: 'home',\n pageLabel: 'Marketplace',\n path: '/store/marketplace',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'channels',\n moduleLabel: 'Channels',\n pageId: 'home',\n pageLabel: 'Channels',\n path: '/channels',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'devportal',\n moduleLabel: 'Developer Portal',\n pageId: 'home',\n pageLabel: 'Developer Portal',\n path: '/devportal',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'feature-previews',\n moduleLabel: 'Feature Previews',\n pageId: 'home',\n pageLabel: 'Feature Previews',\n path: '/feature-previews',\n isModuleHome: true,\n },\n {\n productId: 'vibecontrols',\n moduleId: 'search',\n moduleLabel: 'Search',\n pageId: 'home',\n pageLabel: 'Search',\n path: '/search',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'dashboard',\n moduleLabel: 'Dashboard',\n pageId: 'dashboard',\n pageLabel: 'Dashboard',\n path: '/dashboard',\n isModuleHome: true,\n },\n {\n productId: 'fluidgrids',\n moduleId: 'workflows',\n moduleLabel: 'Workflows',\n pageId: 'list',\n pageLabel: 'My Workflows',\n path: '/workflows/list',\n isModuleHome: true,\n },\n {\n productId: 'fluidgrids',\n moduleId: 'workflows',\n moduleLabel: 'Workflows',\n pageId: 'builder',\n pageLabel: 'Workflow Builder',\n path: '/workflows/workflow',\n },\n {\n productId: 'fluidgrids',\n moduleId: 'workflows',\n moduleLabel: 'Workflows',\n pageId: 'runs',\n pageLabel: 'Runs',\n path: '/workflows/runs',\n },\n {\n productId: 'fluidgrids',\n moduleId: 'workflows',\n moduleLabel: 'Workflows',\n pageId: 'history',\n pageLabel: 'History',\n path: '/workflows/history',\n },\n {\n productId: 'fluidgrids',\n moduleId: 'workflows',\n moduleLabel: 'Workflows',\n pageId: 'templates',\n pageLabel: 'Templates',\n path: '/workflows/templates',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'catalog',\n moduleLabel: 'Course Catalog',\n pageId: 'home',\n pageLabel: 'Catalog',\n path: '/catalog',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'catalog',\n moduleLabel: 'Course Catalog',\n pageId: 'detail',\n pageLabel: 'Course Detail',\n path: '/catalog/:courseId',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'learning',\n moduleLabel: 'My Learning',\n pageId: 'home',\n pageLabel: 'My Learning',\n path: '/learning',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'learning',\n moduleLabel: 'My Learning',\n pageId: 'player',\n pageLabel: 'Lesson Player',\n path: '/learning/:enrollmentId',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'paths',\n moduleLabel: 'Skill Journeys',\n pageId: 'home',\n pageLabel: 'Skill Journeys',\n path: '/paths',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'authoring',\n moduleLabel: 'Authoring',\n pageId: 'home',\n pageLabel: 'Authoring',\n path: '/authoring',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'authoring',\n moduleLabel: 'Authoring',\n pageId: 'builder',\n pageLabel: 'Course Builder',\n path: '/authoring/:courseId',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'assessments',\n moduleLabel: 'Assessments',\n pageId: 'home',\n pageLabel: 'Assessments',\n path: '/assessments',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'assessments',\n moduleLabel: 'Assessments',\n pageId: 'detail',\n pageLabel: 'Assessment Detail',\n path: '/assessments/:assessmentId',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'assessments',\n moduleLabel: 'Assessments',\n pageId: 'take',\n pageLabel: 'Take Assessment',\n path: '/assessments/:assessmentId/take',\n },\n {\n productId: 'buildmyiq',\n moduleId: 'insights',\n moduleLabel: 'Insights',\n pageId: 'home',\n pageLabel: 'Insights',\n path: '/insights',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'submissions',\n moduleLabel: 'Submissions',\n pageId: 'home',\n pageLabel: 'Submissions',\n path: '/submissions',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'cohorts',\n moduleLabel: 'Cohorts',\n pageId: 'home',\n pageLabel: 'Cohorts',\n path: '/cohorts',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'skills',\n moduleLabel: 'Skills',\n pageId: 'home',\n pageLabel: 'Skills',\n path: '/skills',\n isModuleHome: true,\n },\n {\n productId: 'buildmyiq',\n moduleId: 'certificates',\n moduleLabel: 'Certificates',\n pageId: 'home',\n pageLabel: 'Certificates',\n path: '/certificates',\n isModuleHome: true,\n },\n // moduleId/pageId values match the shell's runtime route derivation\n // (deriveRouteContext): moduleId is the product slug, pageId the second\n // path segment ('home' at the root) — same convention as vibecontrols.\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'home',\n pageLabel: 'Dashboard',\n path: '/collabkin',\n isModuleHome: true,\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'trees',\n pageLabel: 'Family Trees',\n path: '/collabkin/trees',\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'people',\n pageLabel: 'People',\n path: '/collabkin/people',\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'memories',\n pageLabel: 'Memories',\n path: '/collabkin/memories',\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'stories',\n pageLabel: 'Stories',\n path: '/collabkin/stories',\n },\n {\n productId: 'collabkin',\n moduleId: 'collabkin',\n moduleLabel: 'CollabKin',\n pageId: 'timeline',\n pageLabel: 'Timeline',\n path: '/collabkin/timeline',\n },\n] as const;\n\nfunction normalizeCatalogValue(value: string | null | undefined): string | undefined {\n const normalized = value?.trim();\n return normalized ? normalized : undefined;\n}\n\nfunction getRouteCatalog(productId: string | null | undefined): TourRouteCatalogEntry[] {\n const productKey = normalizeCatalogValue(productId);\n if (!productKey) return [];\n return TOUR_ROUTE_CATALOG.filter((entry) => entry.productId === productKey);\n}\n\nfunction getTourRouteModules(productId: string | null | undefined): TourRouteModuleOption[] {\n const modules = new Map<string, TourRouteModuleOption>();\n\n for (const entry of getRouteCatalog(productId)) {\n const existing = modules.get(entry.moduleId);\n if (!existing || entry.isModuleHome) {\n modules.set(entry.moduleId, {\n moduleId: entry.moduleId,\n label: entry.moduleLabel,\n path: entry.path,\n });\n }\n }\n\n return [...modules.values()];\n}\n\nfunction getTourRoutePages(\n productId: string | null | undefined,\n moduleId: string | null | undefined\n): TourRoutePageOption[] {\n const moduleKey = normalizeCatalogValue(moduleId);\n if (!moduleKey) return [];\n\n return getRouteCatalog(productId).flatMap((entry) =>\n entry.moduleId === moduleKey\n ? [{ pageId: entry.pageId, label: entry.pageLabel, path: entry.path }]\n : []\n );\n}\n\n/**\n * Tour builder page\n * Create or edit tour metadata\n */\nexport function TourBuilderPage() {\n const { tr } = useToursI18n();\n const { tourId } = useParams();\n const navigate = useNavigate();\n const toursContext = useToursContext();\n const { basePath = '/' } = toursContext;\n const eventBus = useEventBus();\n const globalClient = useGatewayClient('global');\n const { hasPermission, isLoading: permissionsLoading } = useToursPermissionAccess();\n const isNew = !tourId || tourId === 'new';\n const canCreate = hasPermission(TOUR_PERMISSIONS.TOUR_CREATE);\n const canUpdate = hasPermission(TOUR_PERMISSIONS.TOUR_UPDATE);\n const canCreateTemplate = hasPermission(TOUR_PERMISSIONS.TOUR_TEMPLATE_CREATE);\n const canSave = isNew ? canCreate : canUpdate;\n const canSeedVibeControlsUserTours = canCreate && canUpdate;\n const canSeedBuildmyiqUserTours = canCreate && canUpdate;\n\n const { tour, loadTour, createTour, updateTour, saving, validationErrors, error } =\n useTourBuilder(tourId);\n const { saveAsTemplate } = useTourLifecycle();\n const { data: productsData, loading: productsLoading } = useGetPlatformProductsForToursQuery({\n variables: { limit: PLATFORM_PRODUCTS_QUERY_LIMIT, offset: 0 },\n fetchPolicy: 'cache-and-network',\n skip: permissionsLoading || !canSave,\n });\n\n const defaultFormData = {\n name: '',\n description: '',\n productId: '',\n moduleId: '',\n pageId: '',\n isActive: true,\n status: 'DRAFT' as const,\n triggerType: 'MANUAL' as const,\n priority: 50,\n displayOrder: 1,\n startDate: '',\n endDate: '',\n };\n\n const [formData, setFormData] = useState<Partial<Tour>>(defaultFormData);\n const [customProductEntry, setCustomProductEntry] = useState(false);\n const [customModuleEntry, setCustomModuleEntry] = useState(false);\n const [customPageEntry, setCustomPageEntry] = useState(false);\n const [seedLoading, setSeedLoading] = useState(false);\n const [seedResult, setSeedResult] = useState<SeedVibeControlsUserToursPayload | null>(null);\n const [seedError, setSeedError] = useState<string | null>(null);\n const [seedBuildmyiqLoading, setSeedBuildmyiqLoading] = useState(false);\n const [seedBuildmyiqResult, setSeedBuildmyiqResult] =\n useState<SeedVibeControlsUserToursPayload | null>(null);\n const [seedBuildmyiqError, setSeedBuildmyiqError] = useState<string | null>(null);\n\n const formInitializedRef = useRef(false);\n\n const productOptions = useMemo(() => {\n return [...(productsData?.platformProducts.items ?? [])].sort((a, b) =>\n a.name.localeCompare(b.name)\n );\n }, [productsData]);\n\n const productOptionSlugs = useMemo(\n () => new Set(productOptions.map((product) => product.slug)),\n [productOptions]\n );\n\n const moduleOptions = useMemo(\n () => getTourRouteModules(formData.productId),\n [formData.productId]\n );\n\n const moduleOptionIds = useMemo(\n () => new Set(moduleOptions.map((moduleOption) => moduleOption.moduleId)),\n [moduleOptions]\n );\n\n const pageOptions = useMemo(\n () => getTourRoutePages(formData.productId, formData.moduleId),\n [formData.moduleId, formData.productId]\n );\n\n const pageOptionIds = useMemo(\n () => new Set(pageOptions.map((pageOption) => pageOption.pageId)),\n [pageOptions]\n );\n\n useEffect(() => {\n if (formInitializedRef.current) return;\n if (!permissionsLoading && canSave && tourId && tourId !== 'new') {\n loadTour(tourId);\n }\n }, [canSave, loadTour, permissionsLoading, tourId]);\n\n useEffect(() => {\n if (tour && !formInitializedRef.current) {\n setFormData(tour);\n formInitializedRef.current = true;\n }\n }, [tour]);\n\n useEffect(() => {\n if (!formData.productId || productsLoading) {\n setCustomProductEntry(false);\n return;\n }\n setCustomProductEntry(productOptions.length > 0 && !productOptionSlugs.has(formData.productId));\n }, [formData.productId, productOptionSlugs, productOptions.length, productsLoading]);\n\n useEffect(() => {\n if (!formData.productId || !formData.moduleId) {\n setCustomModuleEntry(false);\n return;\n }\n setCustomModuleEntry(moduleOptions.length === 0 || !moduleOptionIds.has(formData.moduleId));\n }, [formData.moduleId, formData.productId, moduleOptionIds, moduleOptions.length]);\n\n useEffect(() => {\n if (!formData.productId || !formData.pageId) {\n setCustomPageEntry(false);\n return;\n }\n setCustomPageEntry(pageOptions.length === 0 || !pageOptionIds.has(formData.pageId));\n }, [formData.pageId, formData.productId, pageOptionIds, pageOptions.length]);\n\n const showCurrentProductOption = Boolean(\n formData.productId && !customProductEntry && !productOptionSlugs.has(formData.productId)\n );\n const showCurrentModuleOption = Boolean(\n formData.moduleId && !customModuleEntry && !moduleOptionIds.has(formData.moduleId)\n );\n const showCurrentPageOption = Boolean(\n formData.pageId && !customPageEntry && !pageOptionIds.has(formData.pageId)\n );\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n try {\n if (tourId && tourId !== 'new') {\n await updateTour(tourId, formData);\n } else {\n await createTour(formData);\n }\n } catch {\n emitToursApiFailed(eventBus, 'tour.save', toursContext);\n }\n };\n\n const handleBack = () => {\n navigate(`${basePath}/list`);\n };\n\n const formatDateTimeLocal = (value?: string) => {\n if (!value) return '';\n\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) {\n return '';\n }\n\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().slice(0, 16);\n };\n\n const handleSaveTemplate = async () => {\n if (!tourId || tourId === 'new') return;\n\n const defaultName = tr('tourBuilder.templateDefaultName', '{{name}} Template', {\n name: formData.name || tour?.name || 'Tour',\n });\n const name = window.prompt(tr('tourBuilder.templateNamePrompt', 'Template name'), defaultName);\n if (!name) return;\n\n const category =\n window.prompt(\n tr(\n 'tourBuilder.templateCategoryPrompt',\n 'Template category (ONBOARDING, FEATURE_ANNOUNCEMENT, HELP, CUSTOM)'\n ),\n 'ONBOARDING'\n ) || 'ONBOARDING';\n\n try {\n await saveAsTemplate(tourId, {\n name,\n description: formData.description,\n category,\n isPublic: false,\n });\n navigate(`${basePath}/templates`);\n } catch {\n emitToursApiFailed(eventBus, 'template.save', toursContext);\n }\n };\n\n const handleSeedVibeControlsUserTours = async () => {\n const confirmed = window.confirm(tr('tourBuilder.seedVibeControls.confirm'));\n if (!confirmed) return;\n\n setSeedLoading(true);\n setSeedResult(null);\n setSeedError(null);\n\n try {\n const result = await globalClient.mutate<SeedVibeControlsUserToursMutation>({\n mutation: SEED_VIBECONTROLS_USER_TOURS,\n });\n\n const mutationErrorMessage = getMutationErrorMessage(\n result,\n tr('tourBuilder.seedMutationErrors', 'Seed mutation returned errors.')\n );\n if (mutationErrorMessage) {\n throw new Error(mutationErrorMessage);\n }\n\n const payload = result.data?.seedVibeControlsUserTours;\n if (!payload) {\n throw new Error(\n tr('tourBuilder.seedMutationNoResult', 'Seed mutation returned no result.')\n );\n }\n\n setSeedResult(payload);\n } catch (seedMutationError) {\n const errorMessage =\n seedMutationError instanceof Error\n ? seedMutationError.message\n : tr('tourBuilder.seedVibeControls.error');\n setSeedError(errorMessage);\n eventBus.emit(\n 'tours.api.failed',\n {\n route: '/tours',\n operation: 'tour.seed_vibecontrols_user_tours',\n errorMessage,\n productId: toursContext.productId,\n workspaceId: toursContext.workspaceId,\n },\n { component: 'microfe-tours' }\n );\n } finally {\n setSeedLoading(false);\n }\n };\n\n const handleSeedBuildmyiqUserTours = async () => {\n const confirmed = window.confirm(tr('tourBuilder.seedBuildmyiq.confirm'));\n if (!confirmed) return;\n\n setSeedBuildmyiqLoading(true);\n setSeedBuildmyiqResult(null);\n setSeedBuildmyiqError(null);\n\n try {\n const result = await globalClient.mutate<SeedBuildmyiqUserToursMutation>({\n mutation: SEED_BUILDMYIQ_USER_TOURS,\n });\n\n const mutationErrorMessage = getMutationErrorMessage(\n result,\n tr('tourBuilder.seedMutationErrors', 'Seed mutation returned errors.')\n );\n if (mutationErrorMessage) {\n throw new Error(mutationErrorMessage);\n }\n\n const payload = result.data?.seedBuildmyiqUserTours;\n if (!payload) {\n throw new Error(\n tr('tourBuilder.seedMutationNoResult', 'Seed mutation returned no result.')\n );\n }\n\n setSeedBuildmyiqResult(payload);\n } catch (seedMutationError) {\n const errorMessage =\n seedMutationError instanceof Error\n ? seedMutationError.message\n : tr('tourBuilder.seedBuildmyiq.error');\n setSeedBuildmyiqError(errorMessage);\n eventBus.emit(\n 'tours.api.failed',\n {\n route: '/tours',\n operation: 'tour.seed_buildmyiq_user_tours',\n errorMessage,\n productId: toursContext.productId,\n workspaceId: toursContext.workspaceId,\n },\n { component: 'microfe-tours' }\n );\n } finally {\n setSeedBuildmyiqLoading(false);\n }\n };\n\n const secondaryActions: CTAAction[] =\n tourId && tourId !== 'new'\n ? [\n {\n label:\n tour?.steps && tour.steps.length > 0\n ? `${tr('tourBuilder.editSteps')} (${tour.steps.length})`\n : tr('tourBuilder.editSteps'),\n onSelect: () => navigate(`${basePath}/${tourId}/steps`),\n icon: <ListOrdered size={16} />,\n },\n {\n label: tr('tourBuilder.preview'),\n onSelect: () => navigate(`${basePath}/${tourId}/preview`),\n icon: <Eye size={16} />,\n },\n {\n label: tr('tourBuilder.analytics'),\n onSelect: () => navigate(`${basePath}/${tourId}/analytics`),\n icon: <BarChart3 size={16} />,\n },\n {\n label: tr('tourBuilder.schedule', 'Schedule'),\n onSelect: () => navigate(`${basePath}/${tourId}/schedule`),\n icon: <Calendar size={16} />,\n },\n ...(canCreateTemplate\n ? [\n {\n label: tr('tourBuilder.saveAsTemplate', 'Save as Template'),\n onSelect: () => void handleSaveTemplate(),\n icon: <LayoutTemplate size={16} />,\n } satisfies CTAAction,\n ]\n : []),\n ]\n : [];\n\n // Concrete, real-handler next steps for the (complex) edit view so a new\n // author isn't left guessing what to do after saving the tour's metadata.\n const isExistingTour = Boolean(tourId && tourId !== 'new');\n const nextSteps: NextStep[] =\n isExistingTour && canUpdate\n ? [\n {\n id: 'edit-steps',\n label: tr('tourBuilder.nextStepEditSteps'),\n description: tr('tourBuilder.nextStepEditStepsDesc'),\n icon: <ListOrdered size={16} />,\n onClick: () => navigate(`${basePath}/${tourId}/steps`),\n },\n {\n id: 'preview',\n label: tr('tourBuilder.nextStepPreview'),\n description: tr('tourBuilder.nextStepPreviewDesc'),\n icon: <Eye size={16} />,\n onClick: () => navigate(`${basePath}/${tourId}/preview`),\n },\n {\n id: 'schedule',\n label: tr('tourBuilder.nextStepSchedule'),\n description: tr('tourBuilder.nextStepScheduleDesc'),\n icon: <Calendar size={16} />,\n onClick: () => navigate(`${basePath}/${tourId}/schedule`),\n },\n {\n id: 'analytics',\n label: tr('tourBuilder.nextStepAnalytics'),\n description: tr('tourBuilder.nextStepAnalyticsDesc'),\n icon: <BarChart3 size={16} />,\n onClick: () => navigate(`${basePath}/${tourId}/analytics`),\n },\n ]\n : [];\n\n if (permissionsLoading) {\n return (\n <div className=\"flex h-full items-center justify-center p-3 sm:p-6\">\n <p className=\"text-sm text-text-secondary\">{tr('tourBuilder.loading')}</p>\n </div>\n );\n }\n\n if (!canSave) {\n return (\n <div className=\"flex h-full items-center justify-center p-3 sm:p-6\">\n <div className=\"text-center space-y-4\">\n <div>\n <h2 className=\"text-lg font-semibold text-text-primary mb-2\">\n {tr('tourBuilder.accessDeniedTitle')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {isNew\n ? tr('tourBuilder.createAccessDeniedMessage')\n : tr('tourBuilder.updateAccessDeniedMessage')}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={handleBack}\n className=\"inline-flex items-center justify-center rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-accent\"\n >\n {tr('tourBuilder.goBack')}\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-4 sm:space-y-6 p-3 sm:p-6 max-w-4xl mx-auto\">\n {/* Header */}\n <div className=\"flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={handleBack}\n className=\"p-2 hover:bg-accent rounded-md\"\n aria-label={tr('tourBuilder.goBack')}\n >\n <ArrowLeft size={20} />\n </button>\n <div className=\"flex-1\">\n <h1 className=\"text-xl sm:text-2xl font-bold text-text-primary\">\n {tourId && tourId !== 'new'\n ? tr('tourBuilder.titleEdit')\n : tr('tourBuilder.titleCreate')}\n </h1>\n <p className=\"text-sm text-text-secondary\">{tr('tourBuilder.subtitle')}</p>\n </div>\n </div>\n\n <PagePurpose>{tr('tourBuilder.purpose')}</PagePurpose>\n\n {nextSteps.length > 0 ? (\n <NextSteps\n storageKey=\"tours-builder\"\n title={tr('tourBuilder.nextStepsTitle')}\n steps={nextSteps}\n />\n ) : null}\n\n {isNew ? (\n <>\n <EmphasisPanel className=\"p-4 sm:p-6\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"space-y-1\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {tr('tourBuilder.seedVibeControls.title')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tr('tourBuilder.seedVibeControls.description')}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => void handleSeedVibeControlsUserTours()}\n disabled={seedLoading || !canSeedVibeControlsUserTours}\n className=\"inline-flex min-h-11 items-center justify-center gap-2 rounded-md border border-border-subtle bg-secondary px-4 py-2 text-sm font-medium text-secondary-foreground hover:bg-secondary/80 disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <Sparkles size={18} />\n {seedLoading\n ? tr('tourBuilder.seedVibeControls.loading')\n : tr('tourBuilder.seedVibeControls.button')}\n </button>\n </div>\n {!canSeedVibeControlsUserTours ? (\n <p className=\"mt-3 text-sm text-text-secondary\">\n {tr('tourBuilder.seedVibeControls.permissionHint')}\n </p>\n ) : null}\n {seedError ? <p className=\"mt-3 text-sm text-status-error-text\">{seedError}</p> : null}\n {seedResult ? (\n <div className=\"mt-3 rounded-md border border-border-seam bg-bg-surface p-3 text-sm text-text-secondary\">\n {tr('tourBuilder.seedVibeControls.result', {\n totalCount: seedResult.totalCount,\n productId: seedResult.productId,\n workspaceId: seedResult.workspaceId,\n createdCount: seedResult.createdCount,\n updatedCount: seedResult.updatedCount,\n })}\n </div>\n ) : null}\n </EmphasisPanel>\n\n <EmphasisPanel className=\"p-4 sm:p-6\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"space-y-1\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {tr('tourBuilder.seedBuildmyiq.title')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tr('tourBuilder.seedBuildmyiq.description')}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => void handleSeedBuildmyiqUserTours()}\n disabled={seedBuildmyiqLoading || !canSeedBuildmyiqUserTours}\n className=\"inline-flex min-h-11 items-center justify-center gap-2 rounded-md border border-border-subtle bg-secondary px-4 py-2 text-sm font-medium text-secondary-foreground hover:bg-secondary/80 disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <Sparkles size={18} />\n {seedBuildmyiqLoading\n ? tr('tourBuilder.seedBuildmyiq.loading')\n : tr('tourBuilder.seedBuildmyiq.button')}\n </button>\n </div>\n {!canSeedBuildmyiqUserTours ? (\n <p className=\"mt-3 text-sm text-text-secondary\">\n {tr('tourBuilder.seedBuildmyiq.permissionHint')}\n </p>\n ) : null}\n {seedBuildmyiqError ? (\n <p className=\"mt-3 text-sm text-status-error-text\">{seedBuildmyiqError}</p>\n ) : null}\n {seedBuildmyiqResult ? (\n <div className=\"mt-3 rounded-md border border-border-seam bg-bg-surface p-3 text-sm text-text-secondary\">\n {tr('tourBuilder.seedBuildmyiq.result', {\n totalCount: seedBuildmyiqResult.totalCount,\n productId: seedBuildmyiqResult.productId,\n workspaceId: seedBuildmyiqResult.workspaceId,\n createdCount: seedBuildmyiqResult.createdCount,\n updatedCount: seedBuildmyiqResult.updatedCount,\n })}\n </div>\n ) : null}\n </EmphasisPanel>\n </>\n ) : null}\n\n {/* Form */}\n <form onSubmit={handleSubmit} className=\"space-y-6\">\n {/* Basic Info */}\n <GlassCard treatment=\"plain\" className=\"p-4 sm:p-6 border-border-seam\">\n <h2 className=\"text-lg font-semibold mb-4\">{tr('tourBuilder.sectionBasicInfo')}</h2>\n\n <div className=\"space-y-4\">\n {/* Name */}\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"tour-name\">\n {tr('tourBuilder.labelName')}\n </label>\n <input\n id=\"tour-name\"\n type=\"text\"\n value={formData.name || ''}\n onChange={(e) => setFormData({ ...formData, name: e.target.value })}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n required\n aria-label={tr('tourBuilder.labelName')}\n />\n </div>\n\n {/* Description */}\n <MarkdownEditor\n id=\"tour-description\"\n label={tr('tourBuilder.labelDescription')}\n value={formData.description || ''}\n onChange={(description) => setFormData({ ...formData, description })}\n rows={4}\n aria-label={tr('tourBuilder.labelDescription')}\n />\n\n {/* Product ID */}\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"product-id\">\n {tr('tourBuilder.labelProductId')}\n </label>\n <select\n id=\"product-id\"\n value={customProductEntry ? '__custom__' : formData.productId || ''}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n setCustomProductEntry(true);\n setFormData({\n ...formData,\n productId: '',\n moduleId: undefined,\n pageId: undefined,\n });\n return;\n }\n\n setCustomProductEntry(false);\n setCustomModuleEntry(false);\n setCustomPageEntry(false);\n setFormData({\n ...formData,\n productId: e.target.value,\n moduleId: undefined,\n pageId: undefined,\n });\n }}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n required\n aria-label={tr('tourBuilder.labelProductId')}\n >\n <option value=\"\">{tr('tourBuilder.selectProduct', 'Select product')}</option>\n {productsLoading ? (\n <option disabled>{tr('tourBuilder.loadingProducts', 'Loading products…')}</option>\n ) : null}\n {productOptions.map((product) => (\n <option key={product.id} value={product.slug}>\n {product.name} ({product.slug})\n </option>\n ))}\n {showCurrentProductOption ? (\n <option value={formData.productId}>\n {tr('tourBuilder.currentValue', 'Current: {{value}}', {\n value: formData.productId ?? '',\n })}\n </option>\n ) : null}\n <option value=\"__custom__\">\n {tr('tourBuilder.customProductSlug', 'Custom product slug')}\n </option>\n </select>\n {customProductEntry ? (\n <input\n id=\"product-id-custom\"\n aria-label={tr('tourBuilder.customProductSlug', 'Custom product slug')}\n type=\"text\"\n value={formData.productId || ''}\n onChange={(e) =>\n setFormData({\n ...formData,\n productId: e.target.value,\n moduleId: undefined,\n pageId: undefined,\n })\n }\n className=\"mt-2 w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n placeholder={tr('tourBuilder.productSlugPlaceholder', 'vibecontrols')}\n required\n />\n ) : null}\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"module-id\">\n {tr('tourBuilder.labelModuleId', 'Module ID')}\n </label>\n <select\n id=\"module-id\"\n value={customModuleEntry ? '__custom__' : formData.moduleId || ''}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n setCustomModuleEntry(true);\n setFormData({ ...formData, moduleId: '', pageId: undefined });\n return;\n }\n\n setCustomModuleEntry(false);\n setCustomPageEntry(false);\n setFormData({\n ...formData,\n moduleId: e.target.value || undefined,\n pageId: undefined,\n });\n }}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n disabled={!formData.productId}\n aria-label={tr('tourBuilder.labelModuleId', 'Module ID')}\n >\n <option value=\"\">{tr('tourBuilder.allModules', 'All modules')}</option>\n {moduleOptions.map((moduleOption) => (\n <option key={moduleOption.moduleId} value={moduleOption.moduleId}>\n {moduleOption.label} ({moduleOption.moduleId})\n </option>\n ))}\n {showCurrentModuleOption ? (\n <option value={formData.moduleId}>\n {tr('tourBuilder.currentValue', 'Current: {{value}}', {\n value: formData.moduleId ?? '',\n })}\n </option>\n ) : null}\n <option value=\"__custom__\">\n {tr('tourBuilder.customModuleId', 'Custom module ID')}\n </option>\n </select>\n {customModuleEntry ? (\n <input\n id=\"module-id-custom\"\n aria-label={tr('tourBuilder.customModuleId', 'Custom module ID')}\n type=\"text\"\n value={formData.moduleId || ''}\n onChange={(e) =>\n setFormData({\n ...formData,\n moduleId: e.target.value || undefined,\n pageId: undefined,\n })\n }\n className=\"mt-2 w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n placeholder={tr('tourBuilder.moduleSlugPlaceholder', 'vibecontrols')}\n />\n ) : null}\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"page-id\">\n {tr('tourBuilder.labelPageId', 'Page ID')}\n </label>\n <select\n id=\"page-id\"\n value={customPageEntry ? '__custom__' : formData.pageId || ''}\n onChange={(e) => {\n if (e.target.value === '__custom__') {\n setCustomPageEntry(true);\n setFormData({ ...formData, pageId: '' });\n return;\n }\n\n setCustomPageEntry(false);\n setFormData({ ...formData, pageId: e.target.value || undefined });\n }}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n disabled={!formData.productId}\n aria-label={tr('tourBuilder.labelPageId', 'Page ID')}\n >\n <option value=\"\">{tr('tourBuilder.allPages', 'All pages')}</option>\n {pageOptions.map((pageOption) => (\n <option key={pageOption.pageId} value={pageOption.pageId}>\n {pageOption.label} ({pageOption.pageId})\n </option>\n ))}\n {showCurrentPageOption ? (\n <option value={formData.pageId}>\n {tr('tourBuilder.currentValue', 'Current: {{value}}', {\n value: formData.pageId ?? '',\n })}\n </option>\n ) : null}\n <option value=\"__custom__\">\n {tr('tourBuilder.customPageId', 'Custom page ID')}\n </option>\n </select>\n {customPageEntry ? (\n <input\n id=\"page-id-custom\"\n aria-label={tr('tourBuilder.customPageId', 'Custom page ID')}\n type=\"text\"\n value={formData.pageId || ''}\n onChange={(e) =>\n setFormData({ ...formData, pageId: e.target.value || undefined })\n }\n className=\"mt-2 w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n placeholder={tr('tourBuilder.pageSlugPlaceholder', 'agents')}\n />\n ) : null}\n </div>\n </div>\n\n <label className=\"flex items-center gap-3 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={formData.isActive ?? true}\n onChange={(e) => setFormData({ ...formData, isActive: e.target.checked })}\n className=\"size-4 rounded\"\n aria-label={tr('tourBuilder.labelActive', 'Active')}\n />\n <span className=\"text-sm font-medium\">{tr('tourBuilder.labelActive', 'Active')}</span>\n </label>\n </div>\n </GlassCard>\n\n {/* Trigger Settings */}\n <GlassCard treatment=\"plain\" className=\"p-4 sm:p-6 border-border-seam\">\n <h2 className=\"text-lg font-semibold mb-4\">{tr('tourBuilder.sectionTriggerSettings')}</h2>\n\n <div className=\"space-y-4\">\n {/* Trigger Type */}\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"trigger-type\">\n {tr('tourBuilder.labelTriggerType')}\n </label>\n <select\n id=\"trigger-type\"\n value={formData.triggerType || 'MANUAL'}\n onChange={(e) =>\n setFormData({ ...formData, triggerType: e.target.value as TourTriggerType })\n }\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n aria-label={tr('tourBuilder.labelTriggerType')}\n >\n <option value=\"MANUAL\">{tr('tourBuilder.triggerManual')}</option>\n <option value=\"AUTO_FIRST_VISIT\">{tr('tourBuilder.triggerAutoFirstVisit')}</option>\n <option value=\"AUTO_ALWAYS\">{tr('tourBuilder.triggerAutoAlways')}</option>\n <option value=\"ON_EVENT\">{tr('tourBuilder.triggerOnEvent')}</option>\n <option value=\"SCHEDULED\">{tr('tourBuilder.triggerScheduled')}</option>\n </select>\n </div>\n\n {/* Priority */}\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"priority\">\n {tr('tourBuilder.labelPriority')}\n </label>\n <input\n id=\"priority\"\n type=\"number\"\n min=\"1\"\n max=\"100\"\n value={formData.priority || 50}\n onChange={(e) => {\n const priority = Number.parseInt(e.target.value, 10) || 50;\n setFormData({ ...formData, priority });\n }}\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n aria-label={tr('tourBuilder.labelPriority')}\n />\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"tour-start-date\">\n {tr('tourBuilder.labelStartDate', 'Start Date')}\n </label>\n <input\n id=\"tour-start-date\"\n type=\"datetime-local\"\n value={formatDateTimeLocal(formData.startDate)}\n onChange={(e) =>\n setFormData({\n ...formData,\n startDate: e.target.value\n ? new Date(e.target.value).toISOString()\n : undefined,\n })\n }\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n aria-label={tr('tourBuilder.labelStartDate', 'Start Date')}\n />\n </div>\n\n <div>\n <label className=\"block text-sm font-medium mb-2\" htmlFor=\"tour-end-date\">\n {tr('tourBuilder.labelEndDate', 'End Date')}\n </label>\n <input\n id=\"tour-end-date\"\n type=\"datetime-local\"\n value={formatDateTimeLocal(formData.endDate)}\n onChange={(e) =>\n setFormData({\n ...formData,\n endDate: e.target.value ? new Date(e.target.value).toISOString() : undefined,\n })\n }\n className=\"w-full px-3 py-2 border border-border-subtle rounded-md bg-bg-surface text-text-primary\"\n aria-label={tr('tourBuilder.labelEndDate', 'End Date')}\n />\n </div>\n </div>\n </div>\n </GlassCard>\n\n {/* API Error */}\n {error && (\n <div className=\"border border-status-error-border rounded-md p-4 bg-status-error-bg/10\">\n <h3 className=\"font-semibold text-status-error-text mb-2\">\n {tr('tourBuilder.errorTitle')}\n </h3>\n <p className=\"text-sm text-status-error-text\">{error.message}</p>\n </div>\n )}\n\n {/* Validation Errors */}\n {validationErrors.length > 0 && (\n <div className=\"border border-status-error-border rounded-md p-4 bg-status-error-bg/10\">\n <h3 className=\"font-semibold text-status-error-text mb-2\">\n {tr('tourBuilder.validationErrorsTitle')}\n </h3>\n <ul className=\"list-disc list-inside space-y-1\">\n {validationErrors.map((err) => (\n <li key={err.field} className=\"text-sm text-status-error-text\">\n {tr(err.message, err.params)}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Actions — one primary submit CTA, related navigation collapsed into the overflow menu */}\n <div className=\"flex flex-wrap items-center gap-3\">\n <PermissionGate\n permission={isNew ? TOUR_PERMISSIONS.TOUR_CREATE : TOUR_PERMISSIONS.TOUR_UPDATE}\n >\n <Button\n type=\"submit\"\n disabled={saving || !canSave}\n className=\"flex-1 min-w-[200px] min-h-[44px]\"\n >\n <Save size={20} />\n {saving\n ? tr('tourBuilder.saving')\n : tourId && tourId !== 'new'\n ? tr('tourBuilder.updateTour')\n : tr('tourBuilder.createAndAddSteps')}\n </Button>\n </PermissionGate>\n {tourId && tourId !== 'new' && secondaryActions.length > 0 && (\n <CTAOverflowMenu actions={secondaryActions} />\n )}\n </div>\n </form>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsCA,IAAM,KAAgC,KAEhC,KAA+B,CAAG;;;;;;;;;;;;;;;;;GAmBlC,KAA4B,CAAG;;;;;;;;;;;;;;;;;;AA4CrC,SAAS,GAAwB,GAAiB,GAAwC;AACxF,KAAI,CAAC,KAAU,OAAO,KAAW,SAAU,QAAO;CAElD,IAAM,IAAS,GACT,IAAc,EAAO;AAC3B,KAAI,aAAuB,MAAO,QAAO,EAAY;CAErD,IAAM,IAAS,EAAO;AACtB,KAAI,CAAC,MAAM,QAAQ,EAAO,IAAI,EAAO,WAAW,EAAG,QAAO;CAE1D,IAAM,IAAW,EACd,KAAK,MAAU;AACd,MAAI,aAAiB,MAAO,QAAO,EAAM;AACzC,MAAI,CAAC,KAAS,OAAO,KAAU,SAAU,QAAO;EAEhD,IAAM,IAAW,EAAgC;AACjD,SAAO,OAAO,KAAY,WAAW,IAAU;GAC/C,CACD,QAAQ,MAA+B,EAAQ,EAAS;AAE3D,QAAO,EAAS,SAAS,IAAI,EAAS,KAAK,KAAK,GAAG;;AAyBrD,IAAM,IAAuD;CAC3D;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACN,cAAc;EACf;CACD;EACE,WAAW;EACX,UAAU;EACV,aAAa;EACb,QAAQ;EACR,WAAW;EACX,MAAM;EACP;CACD;EACE,WAAW;EACX,UAAU;EACV,a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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-tours",
3
- "version": "2026.830.2",
3
+ "version": "2026.1002.1",
4
4
  "description": "Burdenoff Tours Microfrontend - Complete product tours and onboarding interface",
5
5
  "type": "module",
6
6
  "files": [