@burdenoff/microfe-tours 2026.510.112

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +342 -0
  2. package/dist/__tests__/setup.d.ts +2 -0
  3. package/dist/__tests__/setup.d.ts.map +1 -0
  4. package/dist/constants/featureFlags.d.ts +25 -0
  5. package/dist/constants/featureFlags.d.ts.map +1 -0
  6. package/dist/constants/featureFlags.js +9 -0
  7. package/dist/constants/featureFlags.js.map +1 -0
  8. package/dist/constants/permissions.d.ts +49 -0
  9. package/dist/constants/permissions.d.ts.map +1 -0
  10. package/dist/constants/permissions.js +38 -0
  11. package/dist/constants/permissions.js.map +1 -0
  12. package/dist/dev/main.d.ts +2 -0
  13. package/dist/dev/main.d.ts.map +1 -0
  14. package/dist/generated/global-operations.d.ts +1270 -0
  15. package/dist/generated/global-operations.d.ts.map +1 -0
  16. package/dist/generated/global-operations.js +650 -0
  17. package/dist/generated/global-operations.js.map +1 -0
  18. package/dist/generated/global-types.d.ts +20448 -0
  19. package/dist/generated/global-types.d.ts.map +1 -0
  20. package/dist/generated/wspace-operations.d.ts +2 -0
  21. package/dist/generated/wspace-operations.d.ts.map +1 -0
  22. package/dist/generated/wspace-types.d.ts +53398 -0
  23. package/dist/generated/wspace-types.d.ts.map +1 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +6 -0
  27. package/dist/tours/ToursAdminRoot.d.ts +16 -0
  28. package/dist/tours/ToursAdminRoot.d.ts.map +1 -0
  29. package/dist/tours/ToursAdminRoot.js +42 -0
  30. package/dist/tours/ToursAdminRoot.js.map +1 -0
  31. package/dist/tours/ToursAdminRoutes.d.ts +12 -0
  32. package/dist/tours/ToursAdminRoutes.d.ts.map +1 -0
  33. package/dist/tours/ToursAdminRoutes.js +109 -0
  34. package/dist/tours/ToursAdminRoutes.js.map +1 -0
  35. package/dist/tours/ToursRoot.d.ts +10 -0
  36. package/dist/tours/ToursRoot.d.ts.map +1 -0
  37. package/dist/tours/ToursRoot.js +1 -0
  38. package/dist/tours/ToursRoutes.d.ts +8 -0
  39. package/dist/tours/ToursRoutes.d.ts.map +1 -0
  40. package/dist/tours/ToursUserRoot.d.ts +15 -0
  41. package/dist/tours/ToursUserRoot.d.ts.map +1 -0
  42. package/dist/tours/ToursUserRoot.js +48 -0
  43. package/dist/tours/ToursUserRoot.js.map +1 -0
  44. package/dist/tours/ToursUserRoutes.d.ts +15 -0
  45. package/dist/tours/ToursUserRoutes.d.ts.map +1 -0
  46. package/dist/tours/ToursUserRoutes.js +66 -0
  47. package/dist/tours/ToursUserRoutes.js.map +1 -0
  48. package/dist/tours/components/RouteHelpers.d.ts +33 -0
  49. package/dist/tours/components/RouteHelpers.d.ts.map +1 -0
  50. package/dist/tours/components/RouteHelpers.js +75 -0
  51. package/dist/tours/components/RouteHelpers.js.map +1 -0
  52. package/dist/tours/components/ToursAdminNavRegistrar.d.ts +25 -0
  53. package/dist/tours/components/ToursAdminNavRegistrar.d.ts.map +1 -0
  54. package/dist/tours/components/ToursAdminNavRegistrar.js +60 -0
  55. package/dist/tours/components/ToursAdminNavRegistrar.js.map +1 -0
  56. package/dist/tours/components/ui.d.ts +2 -0
  57. package/dist/tours/components/ui.d.ts.map +1 -0
  58. package/dist/tours/hooks/useMediaLibrary.d.ts +22 -0
  59. package/dist/tours/hooks/useMediaLibrary.d.ts.map +1 -0
  60. package/dist/tours/hooks/useMediaLibrary.js +82 -0
  61. package/dist/tours/hooks/useMediaLibrary.js.map +1 -0
  62. package/dist/tours/hooks/useStepSequencer.d.ts +20 -0
  63. package/dist/tours/hooks/useStepSequencer.d.ts.map +1 -0
  64. package/dist/tours/hooks/useStepSequencer.js +53 -0
  65. package/dist/tours/hooks/useStepSequencer.js.map +1 -0
  66. package/dist/tours/hooks/useTourAnalytics.d.ts +32 -0
  67. package/dist/tours/hooks/useTourAnalytics.d.ts.map +1 -0
  68. package/dist/tours/hooks/useTourAnalytics.js +70 -0
  69. package/dist/tours/hooks/useTourAnalytics.js.map +1 -0
  70. package/dist/tours/hooks/useTourBuilder.d.ts +61 -0
  71. package/dist/tours/hooks/useTourBuilder.d.ts.map +1 -0
  72. package/dist/tours/hooks/useTourBuilder.js +192 -0
  73. package/dist/tours/hooks/useTourBuilder.js.map +1 -0
  74. package/dist/tours/hooks/useTourLifecycle.d.ts +22 -0
  75. package/dist/tours/hooks/useTourLifecycle.d.ts.map +1 -0
  76. package/dist/tours/hooks/useTourLifecycle.js +28 -0
  77. package/dist/tours/hooks/useTourLifecycle.js.map +1 -0
  78. package/dist/tours/hooks/useTourPreview.d.ts +33 -0
  79. package/dist/tours/hooks/useTourPreview.d.ts.map +1 -0
  80. package/dist/tours/hooks/useTourPreview.js +70 -0
  81. package/dist/tours/hooks/useTourPreview.js.map +1 -0
  82. package/dist/tours/hooks/useToursList.d.ts +30 -0
  83. package/dist/tours/hooks/useToursList.d.ts.map +1 -0
  84. package/dist/tours/hooks/useToursList.js +49 -0
  85. package/dist/tours/hooks/useToursList.js.map +1 -0
  86. package/dist/tours/hooks/useToursPermissionAccess.d.ts +16 -0
  87. package/dist/tours/hooks/useToursPermissionAccess.d.ts.map +1 -0
  88. package/dist/tours/hooks/useToursPermissionAccess.js +9 -0
  89. package/dist/tours/hooks/useToursPermissionAccess.js.map +1 -0
  90. package/dist/tours/i18n.d.ts +172 -0
  91. package/dist/tours/i18n.d.ts.map +1 -0
  92. package/dist/tours/i18n.js +175 -0
  93. package/dist/tours/i18n.js.map +1 -0
  94. package/dist/tours/index.d.ts +21 -0
  95. package/dist/tours/index.d.ts.map +1 -0
  96. package/dist/tours/index.js +5 -0
  97. package/dist/tours/pages/AnalyticsDashboardPage.d.ts +6 -0
  98. package/dist/tours/pages/AnalyticsDashboardPage.d.ts.map +1 -0
  99. package/dist/tours/pages/AnalyticsDashboardPage.js +230 -0
  100. package/dist/tours/pages/AnalyticsDashboardPage.js.map +1 -0
  101. package/dist/tours/pages/MediaLibraryPage.d.ts +6 -0
  102. package/dist/tours/pages/MediaLibraryPage.d.ts.map +1 -0
  103. package/dist/tours/pages/MediaLibraryPage.js +195 -0
  104. package/dist/tours/pages/MediaLibraryPage.js.map +1 -0
  105. package/dist/tours/pages/MyToursPage.d.ts +11 -0
  106. package/dist/tours/pages/MyToursPage.d.ts.map +1 -0
  107. package/dist/tours/pages/MyToursPage.js +103 -0
  108. package/dist/tours/pages/MyToursPage.js.map +1 -0
  109. package/dist/tours/pages/MyToursProgressPage.d.ts +6 -0
  110. package/dist/tours/pages/MyToursProgressPage.d.ts.map +1 -0
  111. package/dist/tours/pages/MyToursProgressPage.js +142 -0
  112. package/dist/tours/pages/MyToursProgressPage.js.map +1 -0
  113. package/dist/tours/pages/SchedulerPage.d.ts +6 -0
  114. package/dist/tours/pages/SchedulerPage.d.ts.map +1 -0
  115. package/dist/tours/pages/SchedulerPage.js +231 -0
  116. package/dist/tours/pages/SchedulerPage.js.map +1 -0
  117. package/dist/tours/pages/StepEditorPage.d.ts +7 -0
  118. package/dist/tours/pages/StepEditorPage.d.ts.map +1 -0
  119. package/dist/tours/pages/StepEditorPage.js +586 -0
  120. package/dist/tours/pages/StepEditorPage.js.map +1 -0
  121. package/dist/tours/pages/SystemAnalyticsPage.d.ts +6 -0
  122. package/dist/tours/pages/SystemAnalyticsPage.d.ts.map +1 -0
  123. package/dist/tours/pages/SystemAnalyticsPage.js +155 -0
  124. package/dist/tours/pages/SystemAnalyticsPage.js.map +1 -0
  125. package/dist/tours/pages/TemplateLibraryPage.d.ts +6 -0
  126. package/dist/tours/pages/TemplateLibraryPage.d.ts.map +1 -0
  127. package/dist/tours/pages/TemplateLibraryPage.js +207 -0
  128. package/dist/tours/pages/TemplateLibraryPage.js.map +1 -0
  129. package/dist/tours/pages/TourBuilderPage.d.ts +6 -0
  130. package/dist/tours/pages/TourBuilderPage.d.ts.map +1 -0
  131. package/dist/tours/pages/TourBuilderPage.js +363 -0
  132. package/dist/tours/pages/TourBuilderPage.js.map +1 -0
  133. package/dist/tours/pages/TourPreviewPage.d.ts +6 -0
  134. package/dist/tours/pages/TourPreviewPage.d.ts.map +1 -0
  135. package/dist/tours/pages/TourPreviewPage.js +239 -0
  136. package/dist/tours/pages/TourPreviewPage.js.map +1 -0
  137. package/dist/tours/pages/ToursListPage.d.ts +6 -0
  138. package/dist/tours/pages/ToursListPage.d.ts.map +1 -0
  139. package/dist/tours/pages/ToursListPage.js +310 -0
  140. package/dist/tours/pages/ToursListPage.js.map +1 -0
  141. package/dist/tours/providers/ToursProvider.d.ts +27 -0
  142. package/dist/tours/providers/ToursProvider.d.ts.map +1 -0
  143. package/dist/tours/providers/ToursProvider.js +28 -0
  144. package/dist/tours/providers/ToursProvider.js.map +1 -0
  145. package/dist/tours/store/toursStore.d.ts +39 -0
  146. package/dist/tours/store/toursStore.d.ts.map +1 -0
  147. package/dist/tours/store/toursStore.js +143 -0
  148. package/dist/tours/store/toursStore.js.map +1 -0
  149. package/dist/tours/types/index.d.ts +350 -0
  150. package/dist/tours/types/index.d.ts.map +1 -0
  151. package/dist/tours/utils/cn.d.ts +8 -0
  152. package/dist/tours/utils/cn.d.ts.map +1 -0
  153. package/dist/tours/utils/index.d.ts +102 -0
  154. package/dist/tours/utils/index.d.ts.map +1 -0
  155. package/dist/tours/utils/index.js +28 -0
  156. package/dist/tours/utils/index.js.map +1 -0
  157. package/dist/tours/utils/joinPath.d.ts +9 -0
  158. package/dist/tours/utils/joinPath.d.ts.map +1 -0
  159. package/dist/tours/utils/joinPath.js +8 -0
  160. package/dist/tours/utils/joinPath.js.map +1 -0
  161. package/dist/utils/nativeBridge.d.ts +3 -0
  162. package/dist/utils/nativeBridge.d.ts.map +1 -0
  163. package/dist/utils/nativeBridge.js +2 -0
  164. package/package.json +114 -0
package/README.md ADDED
@@ -0,0 +1,342 @@
1
+ # @burdenoff/microfe-tours
2
+
3
+ > Product tours and interactive onboarding system for the Burdenoff platform
4
+
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue.svg)](https://www.typescriptlang.org/)
6
+ [![React](https://img.shields.io/badge/React-19-61dafb.svg)](https://reactjs.org/)
7
+ [![Vite](https://img.shields.io/badge/Vite-7-646cff.svg)](https://vitejs.dev/)
8
+
9
+ ## Overview
10
+
11
+ The Tours microfrontend provides tools for creating interactive product tours and onboarding experiences. Build step-by-step guides, schedule tours for specific user segments, track engagement, and improve user adoption with data-driven insights.
12
+
13
+ **Port:** `5155`
14
+ **Module Type:** Tenant Module
15
+ **API Gateway:** Port 4013
16
+
17
+ ## Features
18
+
19
+ - **Tour Builder**
20
+ - Visual tour editor
21
+ - Drag-and-drop step sequencing
22
+ - Multi-step tours
23
+ - Branching logic
24
+ - Target element selection
25
+ - Position customization
26
+
27
+ - **Step Types**
28
+ - Tooltip - Point to UI elements
29
+ - Modal - Full-screen overlay
30
+ - Highlight - Spotlight elements
31
+ - Announcement - Feature announcements
32
+ - Video - Embedded videos
33
+ - Custom - HTML content
34
+
35
+ - **Media Library**
36
+ - Upload images and videos
37
+ - Media management
38
+ - Screenshot capture
39
+ - GIF support
40
+ - CDN integration
41
+
42
+ - **Scheduling**
43
+ - Schedule tours for specific times
44
+ - Target user segments
45
+ - Trigger conditions
46
+ - Recurring schedules
47
+ - Time zone support
48
+
49
+ - **Templates**
50
+ - Pre-built tour templates
51
+ - Industry-specific templates
52
+ - Clone and customize
53
+ - Template marketplace
54
+ - Version control
55
+
56
+ - **Analytics**
57
+ - Tour completion rates
58
+ - Step-by-step analytics
59
+ - Drop-off points
60
+ - Time spent per step
61
+ - User engagement metrics
62
+ - A/B testing results
63
+
64
+ ## Installation
65
+
66
+ ```bash
67
+ # Install dependencies
68
+ bun install
69
+
70
+ # Generate GraphQL types
71
+ bun run codegen
72
+ ```
73
+
74
+ ## Development
75
+
76
+ ```bash
77
+ # Start development server (port 5155)
78
+ bun run dev
79
+
80
+ # Run linter
81
+ bun run lint
82
+
83
+ # Format code
84
+ bun run format
85
+
86
+ # Type check
87
+ bun run type:check
88
+
89
+ # Build for production
90
+ bun run build
91
+
92
+ # Run all quality checks
93
+ bun run sanity
94
+ ```
95
+
96
+ ## Project Structure
97
+
98
+ ```
99
+ src/
100
+ ├── dev/ # Development harness
101
+ ├── tours/ # Main module
102
+ │ ├── components/ # React components
103
+ │ │ └── ui.tsx # UI components
104
+ │ ├── graphql/ # GraphQL operations
105
+ │ │ └── operations/ # Queries/Mutations
106
+ │ ├── hooks/ # Custom React hooks
107
+ │ │ ├── useMediaLibrary.ts
108
+ │ │ ├── useStepSequencer.ts
109
+ │ │ ├── useTourAnalytics.ts
110
+ │ │ ├── useTourBuilder.ts
111
+ │ │ ├── useTourPreview.ts
112
+ │ │ └── useToursList.ts
113
+ │ ├── pages/ # Page components
114
+ │ │ ├── AnalyticsDashboardPage.tsx
115
+ │ │ ├── MediaLibraryPage.tsx
116
+ │ │ ├── SchedulerPage.tsx
117
+ │ │ ├── StepEditorPage.tsx
118
+ │ │ ├── TemplateLibraryPage.tsx
119
+ │ │ ├── TourBuilderPage.tsx
120
+ │ │ ├── TourPreviewPage.tsx
121
+ │ │ └── ToursListPage.tsx
122
+ │ ├── providers/ # Context providers
123
+ │ ├── store/ # State management
124
+ │ ├── types/ # TypeScript types
125
+ │ ├── utils/ # Utility functions
126
+ │ └── README.md # Module documentation
127
+ ```
128
+
129
+ ## GraphQL Operations
130
+
131
+ ### Queries
132
+ - `getTours` - List all tours
133
+ - `getTour` - Get tour details
134
+ - `getTourAnalytics` - Get analytics data
135
+ - `getTourTemplates` - List templates
136
+ - `getTourMedia` - List media files
137
+
138
+ ### Mutations
139
+ - `createTour` - Create new tour
140
+ - `updateTour` - Update tour configuration
141
+ - `deleteTour` - Remove a tour
142
+ - `createTourFromTemplate` - Create from template
143
+ - `syncTourSteps` - Update step sequence
144
+ - `createTourMedia` - Upload media
145
+ - `attachMediaToStep` - Attach media to step
146
+ - `createTourSchedule` - Schedule tour
147
+
148
+ ## Configuration
149
+
150
+ ### Environment Variables
151
+
152
+ ```env
153
+ VITE_API_GATEWAY_URL=http://localhost:4013/graphql
154
+ VITE_TENANT_ID=your-tenant-id
155
+ VITE_WORKSPACE_ID=your-workspace-id
156
+ ```
157
+
158
+ ### Integration with Shell
159
+
160
+ ```tsx
161
+ import { ToursRoot } from '@burdenoff/microfe-tours';
162
+
163
+ function App() {
164
+ return (
165
+ <ToursRoot
166
+ basePath="/tours"
167
+ navigate={navigate}
168
+ apiGatewayUrl="http://localhost:4013/graphql"
169
+ workspaceId="workspace-123"
170
+ currentUser={{
171
+ id: 'user-1',
172
+ email: 'admin@example.com',
173
+ firstName: 'Admin',
174
+ lastName: 'User',
175
+ }}
176
+ />
177
+ );
178
+ }
179
+ ```
180
+
181
+ ## Tour Configuration
182
+
183
+ ### Basic Tour Structure
184
+ ```typescript
185
+ {
186
+ name: "Welcome Tour",
187
+ description: "Onboarding for new users",
188
+ status: "PUBLISHED",
189
+ steps: [
190
+ {
191
+ title: "Welcome!",
192
+ content: "Let's get you started",
193
+ type: "modal",
194
+ order: 0
195
+ },
196
+ {
197
+ title: "Dashboard",
198
+ content: "This is your dashboard",
199
+ type: "tooltip",
200
+ target: "#dashboard",
201
+ position: "bottom",
202
+ order: 1
203
+ }
204
+ ]
205
+ }
206
+ ```
207
+
208
+ ### Step Configuration
209
+ ```typescript
210
+ {
211
+ title: "Step Title",
212
+ content: "Step description (supports HTML)",
213
+ type: "tooltip" | "modal" | "highlight",
214
+ target: "#element-selector",
215
+ position: "top" | "bottom" | "left" | "right",
216
+ primaryButton: {
217
+ text: "Next",
218
+ action: "next"
219
+ },
220
+ secondaryButton: {
221
+ text: "Skip",
222
+ action: "skip"
223
+ }
224
+ }
225
+ ```
226
+
227
+ ## Tour Statuses
228
+
229
+ - **Draft** - Being created/edited
230
+ - **Published** - Live and active
231
+ - **Archived** - No longer active
232
+ - **Scheduled** - Will activate at scheduled time
233
+
234
+ ## Trigger Conditions
235
+
236
+ Tours can be triggered by:
237
+ - **Page Load** - Show on specific page
238
+ - **Element Click** - Trigger on button click
239
+ - **Time Delay** - Show after X seconds
240
+ - **User Segment** - Target specific users
241
+ - **Feature Flag** - Show when feature enabled
242
+ - **Custom Event** - Custom JavaScript event
243
+
244
+ ## User Targeting
245
+
246
+ Target tours to specific users:
247
+ - New users (first login)
248
+ - Role-based (admin, user, etc.)
249
+ - Plan-based (free, pro, enterprise)
250
+ - Location-based (country, timezone)
251
+ - Custom attributes
252
+
253
+ ## Analytics Metrics
254
+
255
+ | Metric | Description | Good Benchmark |
256
+ |--------|-------------|----------------|
257
+ | **Start Rate** | % who started tour | >40% |
258
+ | **Completion Rate** | % who finished tour | >60% |
259
+ | **Avg. Time** | Time to complete | 2-5 minutes |
260
+ | **Drop-off Rate** | % who quit early | <30% |
261
+ | **Skip Rate** | % who skipped steps | <20% |
262
+
263
+ ## Best Practices
264
+
265
+ 1. **Keep it Short**
266
+ - 3-7 steps ideal
267
+ - Under 5 minutes total
268
+ - One concept per step
269
+
270
+ 2. **Clear Navigation**
271
+ - Always show progress (Step 2 of 5)
272
+ - Provide "Skip" option
273
+ - Allow "Previous" navigation
274
+
275
+ 3. **Visual Elements**
276
+ - Use screenshots/GIFs
277
+ - Highlight important areas
278
+ - Keep text concise
279
+
280
+ 4. **Timing**
281
+ - Don't interrupt critical tasks
282
+ - Show at natural breakpoints
283
+ - Allow users to defer
284
+
285
+ 5. **Mobile Optimization**
286
+ - Test on mobile devices
287
+ - Use responsive positioning
288
+ - Simplify for small screens
289
+
290
+ ## Available Scripts
291
+
292
+ | Script | Description |
293
+ |--------|-------------|
294
+ | `bun run dev` | Start development server |
295
+ | `bun run build` | Build for production |
296
+ | `bun run lint` | Run ESLint |
297
+ | `bun run format` | Format with Prettier |
298
+ | `bun run type:check` | TypeScript type checking |
299
+ | `bun run codegen` | Generate GraphQL types |
300
+ | `bun run sanity` | Run all quality checks |
301
+
302
+ ## Technology Stack
303
+
304
+ - **Framework:** React 19 with TypeScript 5.9
305
+ - **Build Tool:** Vite 7
306
+ - **State Management:** Zustand 5
307
+ - **GraphQL Client:** Apollo Client (planned)
308
+ - **Styling:** Tailwind CSS v4
309
+ - **UI Components:** Radix UI
310
+ - **Icons:** Lucide React
311
+ - **Routing:** React Router DOM 7
312
+
313
+ ## Use Cases
314
+
315
+ - **User Onboarding** - Guide new users through key features
316
+ - **Feature Announcements** - Introduce new features
317
+ - **Product Updates** - Highlight changes and improvements
318
+ - **Training** - Educate users on complex workflows
319
+ - **Best Practices** - Share tips and tricks
320
+ - **Compliance** - Guide through regulatory requirements
321
+
322
+ ## Template Categories
323
+
324
+ - **Onboarding** - Welcome new users
325
+ - **Feature Discovery** - Highlight features
326
+ - **Workflow Guides** - Step-by-step processes
327
+ - **Tips & Tricks** - Power user features
328
+ - **Updates** - What's new announcements
329
+
330
+ ## Roadmap
331
+
332
+ - [ ] A/B testing for tours
333
+ - [ ] Interactive elements (forms, quizzes)
334
+ - [ ] Advanced branching logic
335
+ - [ ] Tour versioning
336
+ - [ ] Multi-language support
337
+ - [ ] Video tours
338
+ - [ ] Voice-over support
339
+
340
+ ## License
341
+
342
+ Proprietary - Copyright © 2025 Burdenoff Consultancy Services Pvt. Ltd.
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Tours feature flag keys.
3
+ *
4
+ * INVARIANT: keys here must match entries in `DEFAULT_PLATFORM_FLAGS` at
5
+ * `global-tenant-svc/src/modules/feature-flag/services/feature-flag.service.ts`.
6
+ * If a key is added/removed/renamed here, the backend seed must mirror the
7
+ * change (and vice versa) — otherwise the frontend falls through to the
8
+ * provider's `defaultEnabled` and the flag appears broken.
9
+ *
10
+ * Only genuinely incomplete features should have a flag. Features that are
11
+ * 100% E2E complete and stable must NOT be gated.
12
+ */
13
+ export declare const TOURS_FEATURES: {
14
+ /** Gates the stable user-facing My Tours and My Progress surface. */
15
+ readonly USER: "tours.user";
16
+ /**
17
+ * Gates the Media Library page and its CRUD. The feature is Partial —
18
+ * `useMediaLibrary.uploadMedia` currently writes a hardcoded `storageUrl`
19
+ * because the real upload pipeline (S3/Ceph/pre-signed URL) is not yet
20
+ * implemented. The flag must remain until the pipeline lands.
21
+ */
22
+ readonly MEDIA: "tours.media";
23
+ };
24
+ export type ToursFeatureKey = (typeof TOURS_FEATURES)[keyof typeof TOURS_FEATURES];
25
+ //# sourceMappingURL=featureFlags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featureFlags.d.ts","sourceRoot":"","sources":["../../src/constants/featureFlags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc;IACzB,qEAAqE;;IAErE;;;;;OAKG;;CAEK,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ //#region src/constants/featureFlags.ts
2
+ var e = {
3
+ USER: "tours.user",
4
+ MEDIA: "tours.media"
5
+ };
6
+ //#endregion
7
+ export { e as TOURS_FEATURES };
8
+
9
+ //# sourceMappingURL=featureFlags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featureFlags.js","names":[],"sources":["../../src/constants/featureFlags.ts"],"sourcesContent":["/**\n * Tours feature flag keys.\n *\n * INVARIANT: keys here must match entries in `DEFAULT_PLATFORM_FLAGS` at\n * `global-tenant-svc/src/modules/feature-flag/services/feature-flag.service.ts`.\n * If a key is added/removed/renamed here, the backend seed must mirror the\n * change (and vice versa) — otherwise the frontend falls through to the\n * provider's `defaultEnabled` and the flag appears broken.\n *\n * Only genuinely incomplete features should have a flag. Features that are\n * 100% E2E complete and stable must NOT be gated.\n */\nexport const TOURS_FEATURES = {\n /** Gates the stable user-facing My Tours and My Progress surface. */\n USER: 'tours.user',\n /**\n * Gates the Media Library page and its CRUD. The feature is Partial —\n * `useMediaLibrary.uploadMedia` currently writes a hardcoded `storageUrl`\n * because the real upload pipeline (S3/Ceph/pre-signed URL) is not yet\n * implemented. The flag must remain until the pipeline lands.\n */\n MEDIA: 'tours.media',\n} as const;\n\nexport type ToursFeatureKey = (typeof TOURS_FEATURES)[keyof typeof TOURS_FEATURES];\n"],"mappings":";AAYA,IAAa,IAAiB;CAE5B,MAAM;CAON,OAAO;CACR"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Tours Permission Constants
3
+ *
4
+ * All permission strings for Tours resources.
5
+ * Use with fe-libs usePermissions hook: hasPermission(TOUR_PERMISSIONS.TOUR_CREATE)
6
+ *
7
+ * Resource types:
8
+ * - tour: list, read, create, update, delete, publish, archive, duplicate
9
+ * - tour-step: list, read, create, update, delete
10
+ * - tour-media: list, read, create, update, delete
11
+ * - tour-template: list, read, use
12
+ * - tour-analytics: list, read
13
+ * - tour-schedule: list, read, create, update, delete
14
+ */
15
+ export declare const TOUR_PERMISSIONS: {
16
+ readonly TOUR_LIST: "tour:list";
17
+ readonly TOUR_READ: "tour:read";
18
+ readonly TOUR_CREATE: "tour:create";
19
+ readonly TOUR_UPDATE: "tour:update";
20
+ readonly TOUR_DELETE: "tour:delete";
21
+ readonly TOUR_PUBLISH: "tour:publish";
22
+ readonly TOUR_ARCHIVE: "tour:archive";
23
+ readonly TOUR_DUPLICATE: "tour:duplicate";
24
+ readonly TOUR_STEP_LIST: "tour-step:list";
25
+ readonly TOUR_STEP_READ: "tour-step:read";
26
+ readonly TOUR_STEP_CREATE: "tour-step:create";
27
+ readonly TOUR_STEP_UPDATE: "tour-step:update";
28
+ readonly TOUR_STEP_DELETE: "tour-step:delete";
29
+ readonly TOUR_MEDIA_LIST: "tour-media:list";
30
+ readonly TOUR_MEDIA_READ: "tour-media:read";
31
+ readonly TOUR_MEDIA_CREATE: "tour-media:create";
32
+ readonly TOUR_MEDIA_UPDATE: "tour-media:update";
33
+ readonly TOUR_MEDIA_DELETE: "tour-media:delete";
34
+ readonly TOUR_TEMPLATE_CREATE: "tour-template:create";
35
+ readonly TOUR_TEMPLATE_LIST: "tour-template:list";
36
+ readonly TOUR_TEMPLATE_READ: "tour-template:read";
37
+ readonly TOUR_TEMPLATE_USE: "tour-template:use";
38
+ readonly TOUR_TEMPLATE_UPDATE: "tour-template:update";
39
+ readonly TOUR_TEMPLATE_DELETE: "tour-template:delete";
40
+ readonly TOUR_ANALYTICS_LIST: "tour-analytics:list";
41
+ readonly TOUR_ANALYTICS_READ: "tour-analytics:read";
42
+ readonly TOUR_SCHEDULE_LIST: "tour-schedule:list";
43
+ readonly TOUR_SCHEDULE_READ: "tour-schedule:read";
44
+ readonly TOUR_SCHEDULE_CREATE: "tour-schedule:create";
45
+ readonly TOUR_SCHEDULE_UPDATE: "tour-schedule:update";
46
+ readonly TOUR_SCHEDULE_DELETE: "tour-schedule:delete";
47
+ };
48
+ export type TourPermission = (typeof TOUR_PERMISSIONS)[keyof typeof TOUR_PERMISSIONS];
49
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/constants/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ //#region src/constants/permissions.ts
2
+ var e = {
3
+ TOUR_LIST: "tour:list",
4
+ TOUR_READ: "tour:read",
5
+ TOUR_CREATE: "tour:create",
6
+ TOUR_UPDATE: "tour:update",
7
+ TOUR_DELETE: "tour:delete",
8
+ TOUR_PUBLISH: "tour:publish",
9
+ TOUR_ARCHIVE: "tour:archive",
10
+ TOUR_DUPLICATE: "tour:duplicate",
11
+ TOUR_STEP_LIST: "tour-step:list",
12
+ TOUR_STEP_READ: "tour-step:read",
13
+ TOUR_STEP_CREATE: "tour-step:create",
14
+ TOUR_STEP_UPDATE: "tour-step:update",
15
+ TOUR_STEP_DELETE: "tour-step:delete",
16
+ TOUR_MEDIA_LIST: "tour-media:list",
17
+ TOUR_MEDIA_READ: "tour-media:read",
18
+ TOUR_MEDIA_CREATE: "tour-media:create",
19
+ TOUR_MEDIA_UPDATE: "tour-media:update",
20
+ TOUR_MEDIA_DELETE: "tour-media:delete",
21
+ TOUR_TEMPLATE_CREATE: "tour-template:create",
22
+ TOUR_TEMPLATE_LIST: "tour-template:list",
23
+ TOUR_TEMPLATE_READ: "tour-template:read",
24
+ TOUR_TEMPLATE_USE: "tour-template:use",
25
+ TOUR_TEMPLATE_UPDATE: "tour-template:update",
26
+ TOUR_TEMPLATE_DELETE: "tour-template:delete",
27
+ TOUR_ANALYTICS_LIST: "tour-analytics:list",
28
+ TOUR_ANALYTICS_READ: "tour-analytics:read",
29
+ TOUR_SCHEDULE_LIST: "tour-schedule:list",
30
+ TOUR_SCHEDULE_READ: "tour-schedule:read",
31
+ TOUR_SCHEDULE_CREATE: "tour-schedule:create",
32
+ TOUR_SCHEDULE_UPDATE: "tour-schedule:update",
33
+ TOUR_SCHEDULE_DELETE: "tour-schedule:delete"
34
+ };
35
+ //#endregion
36
+ export { e as TOUR_PERMISSIONS };
37
+
38
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","names":[],"sources":["../../src/constants/permissions.ts"],"sourcesContent":["/**\n * Tours Permission Constants\n *\n * All permission strings for Tours resources.\n * Use with fe-libs usePermissions hook: hasPermission(TOUR_PERMISSIONS.TOUR_CREATE)\n *\n * Resource types:\n * - tour: list, read, create, update, delete, publish, archive, duplicate\n * - tour-step: list, read, create, update, delete\n * - tour-media: list, read, create, update, delete\n * - tour-template: list, read, use\n * - tour-analytics: list, read\n * - tour-schedule: list, read, create, update, delete\n */\n\nexport const TOUR_PERMISSIONS = {\n // Tour resources\n TOUR_LIST: 'tour:list',\n TOUR_READ: 'tour:read',\n TOUR_CREATE: 'tour:create',\n TOUR_UPDATE: 'tour:update',\n TOUR_DELETE: 'tour:delete',\n TOUR_PUBLISH: 'tour:publish',\n TOUR_ARCHIVE: 'tour:archive',\n TOUR_DUPLICATE: 'tour:duplicate',\n\n // Tour step resources\n TOUR_STEP_LIST: 'tour-step:list',\n TOUR_STEP_READ: 'tour-step:read',\n TOUR_STEP_CREATE: 'tour-step:create',\n TOUR_STEP_UPDATE: 'tour-step:update',\n TOUR_STEP_DELETE: 'tour-step:delete',\n\n // Tour media resources\n TOUR_MEDIA_LIST: 'tour-media:list',\n TOUR_MEDIA_READ: 'tour-media:read',\n TOUR_MEDIA_CREATE: 'tour-media:create',\n TOUR_MEDIA_UPDATE: 'tour-media:update',\n TOUR_MEDIA_DELETE: 'tour-media:delete',\n\n // Tour template resources\n TOUR_TEMPLATE_CREATE: 'tour-template:create',\n TOUR_TEMPLATE_LIST: 'tour-template:list',\n TOUR_TEMPLATE_READ: 'tour-template:read',\n TOUR_TEMPLATE_USE: 'tour-template:use',\n TOUR_TEMPLATE_UPDATE: 'tour-template:update',\n TOUR_TEMPLATE_DELETE: 'tour-template:delete',\n\n // Tour analytics resources\n TOUR_ANALYTICS_LIST: 'tour-analytics:list',\n TOUR_ANALYTICS_READ: 'tour-analytics:read',\n\n // Tour schedule resources\n TOUR_SCHEDULE_LIST: 'tour-schedule:list',\n TOUR_SCHEDULE_READ: 'tour-schedule:read',\n TOUR_SCHEDULE_CREATE: 'tour-schedule:create',\n TOUR_SCHEDULE_UPDATE: 'tour-schedule:update',\n TOUR_SCHEDULE_DELETE: 'tour-schedule:delete',\n} as const;\n\nexport type TourPermission = (typeof TOUR_PERMISSIONS)[keyof typeof TOUR_PERMISSIONS];\n"],"mappings":";AAeA,IAAa,IAAmB;CAE9B,WAAW;CACX,WAAW;CACX,aAAa;CACb,aAAa;CACb,aAAa;CACb,cAAc;CACd,cAAc;CACd,gBAAgB;CAGhB,gBAAgB;CAChB,gBAAgB;CAChB,kBAAkB;CAClB,kBAAkB;CAClB,kBAAkB;CAGlB,iBAAiB;CACjB,iBAAiB;CACjB,mBAAmB;CACnB,mBAAmB;CACnB,mBAAmB;CAGnB,sBAAsB;CACtB,oBAAoB;CACpB,oBAAoB;CACpB,mBAAmB;CACnB,sBAAsB;CACtB,sBAAsB;CAGtB,qBAAqB;CACrB,qBAAqB;CAGrB,oBAAoB;CACpB,oBAAoB;CACpB,sBAAsB;CACtB,sBAAsB;CACtB,sBAAsB;CACvB"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/dev/main.tsx"],"names":[],"mappings":"AAYA,OAAO,cAAc,CAAC"}