create-bluecopa-react-app 1.0.4 → 1.0.6

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 (108) hide show
  1. package/README.md +47 -10
  2. package/bin/create-bluecopa-react-app.js +257 -51
  3. package/package.json +6 -5
  4. package/templates/latest/Agent.md +254 -0
  5. package/templates/latest/Dockerfile +22 -0
  6. package/templates/latest/README.md +157 -221
  7. package/templates/latest/app/app.css +134 -0
  8. package/templates/latest/app/app.tsx +46 -0
  9. package/templates/latest/app/components/app-sidebar.tsx +174 -0
  10. package/templates/latest/app/components/chart-area-interactive.tsx +290 -0
  11. package/templates/latest/app/components/data-table.tsx +807 -0
  12. package/templates/latest/app/components/nav-documents.tsx +92 -0
  13. package/templates/latest/app/components/nav-main.tsx +56 -0
  14. package/templates/latest/app/components/nav-secondary.tsx +42 -0
  15. package/templates/latest/app/components/nav-user.tsx +112 -0
  16. package/templates/latest/app/components/section-cards.tsx +102 -0
  17. package/templates/latest/app/components/site-header.tsx +19 -0
  18. package/templates/latest/app/components/ui/avatar.tsx +53 -0
  19. package/templates/latest/app/components/ui/badge.tsx +46 -0
  20. package/templates/latest/app/components/ui/breadcrumb.tsx +109 -0
  21. package/templates/latest/app/components/ui/button.tsx +58 -0
  22. package/templates/latest/app/components/ui/card.tsx +92 -0
  23. package/templates/latest/app/components/ui/chart.tsx +352 -0
  24. package/templates/latest/app/components/ui/checkbox.tsx +30 -0
  25. package/templates/latest/app/components/ui/drawer.tsx +139 -0
  26. package/templates/latest/app/components/ui/dropdown-menu.tsx +258 -0
  27. package/templates/latest/app/components/ui/input.tsx +21 -0
  28. package/templates/latest/app/components/ui/label.tsx +24 -0
  29. package/templates/latest/app/components/ui/select.tsx +183 -0
  30. package/templates/latest/app/components/ui/separator.tsx +26 -0
  31. package/templates/latest/app/components/ui/sheet.tsx +139 -0
  32. package/templates/latest/app/components/ui/sidebar.tsx +731 -0
  33. package/templates/latest/app/components/ui/skeleton.tsx +13 -0
  34. package/templates/latest/app/components/ui/sonner.tsx +23 -0
  35. package/templates/latest/app/components/ui/table.tsx +117 -0
  36. package/templates/latest/app/components/ui/tabs.tsx +66 -0
  37. package/templates/latest/app/components/ui/toggle-group.tsx +73 -0
  38. package/templates/latest/app/components/ui/toggle.tsx +47 -0
  39. package/templates/latest/app/components/ui/tooltip.tsx +59 -0
  40. package/templates/latest/app/dashboard/data.json +614 -0
  41. package/templates/latest/app/hooks/use-bluecopa-user.ts +37 -0
  42. package/templates/latest/app/hooks/use-mobile.ts +19 -0
  43. package/templates/latest/{src → app}/lib/utils.ts +1 -1
  44. package/templates/latest/app/main.tsx +12 -0
  45. package/templates/latest/app/routes/home.tsx +40 -0
  46. package/templates/latest/app/routes.tsx +15 -0
  47. package/templates/latest/{src → app}/single-spa.tsx +38 -28
  48. package/templates/latest/components.json +22 -0
  49. package/templates/latest/dist/assets/__federation_expose_App-DRwKKpS2.js +91 -0
  50. package/templates/latest/dist/assets/__federation_fn_import-CzfA7kmP.js +438 -0
  51. package/templates/latest/dist/assets/__federation_shared_react-Bp6HVBS4.js +16 -0
  52. package/templates/latest/dist/assets/__federation_shared_react-dom-BCcRGiYp.js +17 -0
  53. package/templates/latest/dist/assets/client-DgSav55y.js +12658 -0
  54. package/templates/latest/dist/assets/home-DOL6GrYV.js +54951 -0
  55. package/templates/latest/dist/assets/index-BzNimew1.js +69 -0
  56. package/templates/latest/dist/assets/index-DMFtQdNS.js +412 -0
  57. package/templates/latest/dist/assets/index-DdYpcDMk.js +60 -0
  58. package/templates/latest/dist/assets/remoteEntry.js +88 -0
  59. package/templates/latest/dist/assets/style-36A39bNN.css +3683 -0
  60. package/templates/latest/dist/avatars/shadcn.svg +6 -0
  61. package/templates/latest/dist/favicon.ico +0 -0
  62. package/templates/latest/dist/index.html +19 -0
  63. package/templates/latest/index.html +1 -1
  64. package/templates/latest/package-lock.json +1227 -3353
  65. package/templates/latest/package.json +47 -43
  66. package/templates/latest/pnpm-lock.yaml +4767 -0
  67. package/templates/latest/preview/index.html +32 -2
  68. package/templates/latest/public/avatars/shadcn.svg +6 -0
  69. package/templates/latest/public/favicon.ico +0 -0
  70. package/templates/latest/tsconfig.json +18 -11
  71. package/templates/latest/vite.config.ts +41 -41
  72. package/templates/latest/.env.example +0 -14
  73. package/templates/latest/.eslintrc.cjs +0 -42
  74. package/templates/latest/AGENT.md +0 -284
  75. package/templates/latest/clean.sh +0 -39
  76. package/templates/latest/postcss.config.cjs +0 -6
  77. package/templates/latest/public/bluecopa-logo.svg +0 -30
  78. package/templates/latest/public/favicon-32x32.png +0 -0
  79. package/templates/latest/public/favicon-96x96.png +0 -0
  80. package/templates/latest/setup.sh +0 -55
  81. package/templates/latest/src/App.tsx +0 -15
  82. package/templates/latest/src/components/layout/dashboard-header.tsx +0 -139
  83. package/templates/latest/src/components/layout/dashboard-layout.tsx +0 -29
  84. package/templates/latest/src/components/layout/sidebar.tsx +0 -54
  85. package/templates/latest/src/components/page/dashboard.tsx +0 -1506
  86. package/templates/latest/src/components/page/navbar.tsx +0 -104
  87. package/templates/latest/src/components/tables/data-grid.tsx +0 -439
  88. package/templates/latest/src/components/ui/alert.tsx +0 -59
  89. package/templates/latest/src/components/ui/avatar.tsx +0 -50
  90. package/templates/latest/src/components/ui/badge.tsx +0 -36
  91. package/templates/latest/src/components/ui/bluecopa-logo.tsx +0 -54
  92. package/templates/latest/src/components/ui/button.tsx +0 -58
  93. package/templates/latest/src/components/ui/card.tsx +0 -79
  94. package/templates/latest/src/components/ui/dropdown-menu.tsx +0 -200
  95. package/templates/latest/src/components/ui/input.tsx +0 -24
  96. package/templates/latest/src/components/ui/label.tsx +0 -23
  97. package/templates/latest/src/components/ui/select.tsx +0 -29
  98. package/templates/latest/src/hooks/use-api.ts +0 -55
  99. package/templates/latest/src/index.css +0 -59
  100. package/templates/latest/src/main.tsx +0 -13
  101. package/templates/latest/src/pages/Dashboard.tsx +0 -13
  102. package/templates/latest/src/pages/Home.tsx +0 -622
  103. package/templates/latest/src/providers/query-provider.tsx +0 -48
  104. package/templates/latest/src/types/api.ts +0 -78
  105. package/templates/latest/src/vite-env.d.ts +0 -11
  106. package/templates/latest/tailwind.config.js +0 -88
  107. package/templates/latest/tsconfig.app.json +0 -26
  108. package/templates/latest/tsconfig.node.json +0 -10
@@ -0,0 +1,614 @@
1
+ [
2
+ {
3
+ "id": 1,
4
+ "header": "Cover page",
5
+ "type": "Cover page",
6
+ "status": "In Process",
7
+ "target": "18",
8
+ "limit": "5",
9
+ "reviewer": "Eddie Lake"
10
+ },
11
+ {
12
+ "id": 2,
13
+ "header": "Table of contents",
14
+ "type": "Table of contents",
15
+ "status": "Done",
16
+ "target": "29",
17
+ "limit": "24",
18
+ "reviewer": "Eddie Lake"
19
+ },
20
+ {
21
+ "id": 3,
22
+ "header": "Executive summary",
23
+ "type": "Narrative",
24
+ "status": "Done",
25
+ "target": "10",
26
+ "limit": "13",
27
+ "reviewer": "Eddie Lake"
28
+ },
29
+ {
30
+ "id": 4,
31
+ "header": "Technical approach",
32
+ "type": "Narrative",
33
+ "status": "Done",
34
+ "target": "27",
35
+ "limit": "23",
36
+ "reviewer": "Jamik Tashpulatov"
37
+ },
38
+ {
39
+ "id": 5,
40
+ "header": "Design",
41
+ "type": "Narrative",
42
+ "status": "In Process",
43
+ "target": "2",
44
+ "limit": "16",
45
+ "reviewer": "Jamik Tashpulatov"
46
+ },
47
+ {
48
+ "id": 6,
49
+ "header": "Capabilities",
50
+ "type": "Narrative",
51
+ "status": "In Process",
52
+ "target": "20",
53
+ "limit": "8",
54
+ "reviewer": "Jamik Tashpulatov"
55
+ },
56
+ {
57
+ "id": 7,
58
+ "header": "Integration with existing systems",
59
+ "type": "Narrative",
60
+ "status": "In Process",
61
+ "target": "19",
62
+ "limit": "21",
63
+ "reviewer": "Jamik Tashpulatov"
64
+ },
65
+ {
66
+ "id": 8,
67
+ "header": "Innovation and Advantages",
68
+ "type": "Narrative",
69
+ "status": "Done",
70
+ "target": "25",
71
+ "limit": "26",
72
+ "reviewer": "Assign reviewer"
73
+ },
74
+ {
75
+ "id": 9,
76
+ "header": "Overview of EMR's Innovative Solutions",
77
+ "type": "Technical content",
78
+ "status": "Done",
79
+ "target": "7",
80
+ "limit": "23",
81
+ "reviewer": "Assign reviewer"
82
+ },
83
+ {
84
+ "id": 10,
85
+ "header": "Advanced Algorithms and Machine Learning",
86
+ "type": "Narrative",
87
+ "status": "Done",
88
+ "target": "30",
89
+ "limit": "28",
90
+ "reviewer": "Assign reviewer"
91
+ },
92
+ {
93
+ "id": 11,
94
+ "header": "Adaptive Communication Protocols",
95
+ "type": "Narrative",
96
+ "status": "Done",
97
+ "target": "9",
98
+ "limit": "31",
99
+ "reviewer": "Assign reviewer"
100
+ },
101
+ {
102
+ "id": 12,
103
+ "header": "Advantages Over Current Technologies",
104
+ "type": "Narrative",
105
+ "status": "Done",
106
+ "target": "12",
107
+ "limit": "0",
108
+ "reviewer": "Assign reviewer"
109
+ },
110
+ {
111
+ "id": 13,
112
+ "header": "Past Performance",
113
+ "type": "Narrative",
114
+ "status": "Done",
115
+ "target": "22",
116
+ "limit": "33",
117
+ "reviewer": "Assign reviewer"
118
+ },
119
+ {
120
+ "id": 14,
121
+ "header": "Customer Feedback and Satisfaction Levels",
122
+ "type": "Narrative",
123
+ "status": "Done",
124
+ "target": "15",
125
+ "limit": "34",
126
+ "reviewer": "Assign reviewer"
127
+ },
128
+ {
129
+ "id": 15,
130
+ "header": "Implementation Challenges and Solutions",
131
+ "type": "Narrative",
132
+ "status": "Done",
133
+ "target": "3",
134
+ "limit": "35",
135
+ "reviewer": "Assign reviewer"
136
+ },
137
+ {
138
+ "id": 16,
139
+ "header": "Security Measures and Data Protection Policies",
140
+ "type": "Narrative",
141
+ "status": "In Process",
142
+ "target": "6",
143
+ "limit": "36",
144
+ "reviewer": "Assign reviewer"
145
+ },
146
+ {
147
+ "id": 17,
148
+ "header": "Scalability and Future Proofing",
149
+ "type": "Narrative",
150
+ "status": "Done",
151
+ "target": "4",
152
+ "limit": "37",
153
+ "reviewer": "Assign reviewer"
154
+ },
155
+ {
156
+ "id": 18,
157
+ "header": "Cost-Benefit Analysis",
158
+ "type": "Plain language",
159
+ "status": "Done",
160
+ "target": "14",
161
+ "limit": "38",
162
+ "reviewer": "Assign reviewer"
163
+ },
164
+ {
165
+ "id": 19,
166
+ "header": "User Training and Onboarding Experience",
167
+ "type": "Narrative",
168
+ "status": "Done",
169
+ "target": "17",
170
+ "limit": "39",
171
+ "reviewer": "Assign reviewer"
172
+ },
173
+ {
174
+ "id": 20,
175
+ "header": "Future Development Roadmap",
176
+ "type": "Narrative",
177
+ "status": "Done",
178
+ "target": "11",
179
+ "limit": "40",
180
+ "reviewer": "Assign reviewer"
181
+ },
182
+ {
183
+ "id": 21,
184
+ "header": "System Architecture Overview",
185
+ "type": "Technical content",
186
+ "status": "In Process",
187
+ "target": "24",
188
+ "limit": "18",
189
+ "reviewer": "Maya Johnson"
190
+ },
191
+ {
192
+ "id": 22,
193
+ "header": "Risk Management Plan",
194
+ "type": "Narrative",
195
+ "status": "Done",
196
+ "target": "15",
197
+ "limit": "22",
198
+ "reviewer": "Carlos Rodriguez"
199
+ },
200
+ {
201
+ "id": 23,
202
+ "header": "Compliance Documentation",
203
+ "type": "Legal",
204
+ "status": "In Process",
205
+ "target": "31",
206
+ "limit": "27",
207
+ "reviewer": "Sarah Chen"
208
+ },
209
+ {
210
+ "id": 24,
211
+ "header": "API Documentation",
212
+ "type": "Technical content",
213
+ "status": "Done",
214
+ "target": "8",
215
+ "limit": "12",
216
+ "reviewer": "Raj Patel"
217
+ },
218
+ {
219
+ "id": 25,
220
+ "header": "User Interface Mockups",
221
+ "type": "Visual",
222
+ "status": "In Process",
223
+ "target": "19",
224
+ "limit": "25",
225
+ "reviewer": "Leila Ahmadi"
226
+ },
227
+ {
228
+ "id": 26,
229
+ "header": "Database Schema",
230
+ "type": "Technical content",
231
+ "status": "Done",
232
+ "target": "22",
233
+ "limit": "20",
234
+ "reviewer": "Thomas Wilson"
235
+ },
236
+ {
237
+ "id": 27,
238
+ "header": "Testing Methodology",
239
+ "type": "Technical content",
240
+ "status": "In Process",
241
+ "target": "17",
242
+ "limit": "14",
243
+ "reviewer": "Assign reviewer"
244
+ },
245
+ {
246
+ "id": 28,
247
+ "header": "Deployment Strategy",
248
+ "type": "Narrative",
249
+ "status": "Done",
250
+ "target": "26",
251
+ "limit": "30",
252
+ "reviewer": "Eddie Lake"
253
+ },
254
+ {
255
+ "id": 29,
256
+ "header": "Budget Breakdown",
257
+ "type": "Financial",
258
+ "status": "In Process",
259
+ "target": "13",
260
+ "limit": "16",
261
+ "reviewer": "Jamik Tashpulatov"
262
+ },
263
+ {
264
+ "id": 30,
265
+ "header": "Market Analysis",
266
+ "type": "Research",
267
+ "status": "Done",
268
+ "target": "29",
269
+ "limit": "32",
270
+ "reviewer": "Sophia Martinez"
271
+ },
272
+ {
273
+ "id": 31,
274
+ "header": "Competitor Comparison",
275
+ "type": "Research",
276
+ "status": "In Process",
277
+ "target": "21",
278
+ "limit": "19",
279
+ "reviewer": "Assign reviewer"
280
+ },
281
+ {
282
+ "id": 32,
283
+ "header": "Maintenance Plan",
284
+ "type": "Technical content",
285
+ "status": "Done",
286
+ "target": "16",
287
+ "limit": "23",
288
+ "reviewer": "Alex Thompson"
289
+ },
290
+ {
291
+ "id": 33,
292
+ "header": "User Personas",
293
+ "type": "Research",
294
+ "status": "In Process",
295
+ "target": "27",
296
+ "limit": "24",
297
+ "reviewer": "Nina Patel"
298
+ },
299
+ {
300
+ "id": 34,
301
+ "header": "Accessibility Compliance",
302
+ "type": "Legal",
303
+ "status": "Done",
304
+ "target": "18",
305
+ "limit": "21",
306
+ "reviewer": "Assign reviewer"
307
+ },
308
+ {
309
+ "id": 35,
310
+ "header": "Performance Metrics",
311
+ "type": "Technical content",
312
+ "status": "In Process",
313
+ "target": "23",
314
+ "limit": "26",
315
+ "reviewer": "David Kim"
316
+ },
317
+ {
318
+ "id": 36,
319
+ "header": "Disaster Recovery Plan",
320
+ "type": "Technical content",
321
+ "status": "Done",
322
+ "target": "14",
323
+ "limit": "17",
324
+ "reviewer": "Jamik Tashpulatov"
325
+ },
326
+ {
327
+ "id": 37,
328
+ "header": "Third-party Integrations",
329
+ "type": "Technical content",
330
+ "status": "In Process",
331
+ "target": "25",
332
+ "limit": "28",
333
+ "reviewer": "Eddie Lake"
334
+ },
335
+ {
336
+ "id": 38,
337
+ "header": "User Feedback Summary",
338
+ "type": "Research",
339
+ "status": "Done",
340
+ "target": "20",
341
+ "limit": "15",
342
+ "reviewer": "Assign reviewer"
343
+ },
344
+ {
345
+ "id": 39,
346
+ "header": "Localization Strategy",
347
+ "type": "Narrative",
348
+ "status": "In Process",
349
+ "target": "12",
350
+ "limit": "19",
351
+ "reviewer": "Maria Garcia"
352
+ },
353
+ {
354
+ "id": 40,
355
+ "header": "Mobile Compatibility",
356
+ "type": "Technical content",
357
+ "status": "Done",
358
+ "target": "28",
359
+ "limit": "31",
360
+ "reviewer": "James Wilson"
361
+ },
362
+ {
363
+ "id": 41,
364
+ "header": "Data Migration Plan",
365
+ "type": "Technical content",
366
+ "status": "In Process",
367
+ "target": "19",
368
+ "limit": "22",
369
+ "reviewer": "Assign reviewer"
370
+ },
371
+ {
372
+ "id": 42,
373
+ "header": "Quality Assurance Protocols",
374
+ "type": "Technical content",
375
+ "status": "Done",
376
+ "target": "30",
377
+ "limit": "33",
378
+ "reviewer": "Priya Singh"
379
+ },
380
+ {
381
+ "id": 43,
382
+ "header": "Stakeholder Analysis",
383
+ "type": "Research",
384
+ "status": "In Process",
385
+ "target": "11",
386
+ "limit": "14",
387
+ "reviewer": "Eddie Lake"
388
+ },
389
+ {
390
+ "id": 44,
391
+ "header": "Environmental Impact Assessment",
392
+ "type": "Research",
393
+ "status": "Done",
394
+ "target": "24",
395
+ "limit": "27",
396
+ "reviewer": "Assign reviewer"
397
+ },
398
+ {
399
+ "id": 45,
400
+ "header": "Intellectual Property Rights",
401
+ "type": "Legal",
402
+ "status": "In Process",
403
+ "target": "17",
404
+ "limit": "20",
405
+ "reviewer": "Sarah Johnson"
406
+ },
407
+ {
408
+ "id": 46,
409
+ "header": "Customer Support Framework",
410
+ "type": "Narrative",
411
+ "status": "Done",
412
+ "target": "22",
413
+ "limit": "25",
414
+ "reviewer": "Jamik Tashpulatov"
415
+ },
416
+ {
417
+ "id": 47,
418
+ "header": "Version Control Strategy",
419
+ "type": "Technical content",
420
+ "status": "In Process",
421
+ "target": "15",
422
+ "limit": "18",
423
+ "reviewer": "Assign reviewer"
424
+ },
425
+ {
426
+ "id": 48,
427
+ "header": "Continuous Integration Pipeline",
428
+ "type": "Technical content",
429
+ "status": "Done",
430
+ "target": "26",
431
+ "limit": "29",
432
+ "reviewer": "Michael Chen"
433
+ },
434
+ {
435
+ "id": 49,
436
+ "header": "Regulatory Compliance",
437
+ "type": "Legal",
438
+ "status": "In Process",
439
+ "target": "13",
440
+ "limit": "16",
441
+ "reviewer": "Assign reviewer"
442
+ },
443
+ {
444
+ "id": 50,
445
+ "header": "User Authentication System",
446
+ "type": "Technical content",
447
+ "status": "Done",
448
+ "target": "28",
449
+ "limit": "31",
450
+ "reviewer": "Eddie Lake"
451
+ },
452
+ {
453
+ "id": 51,
454
+ "header": "Data Analytics Framework",
455
+ "type": "Technical content",
456
+ "status": "In Process",
457
+ "target": "21",
458
+ "limit": "24",
459
+ "reviewer": "Jamik Tashpulatov"
460
+ },
461
+ {
462
+ "id": 52,
463
+ "header": "Cloud Infrastructure",
464
+ "type": "Technical content",
465
+ "status": "Done",
466
+ "target": "16",
467
+ "limit": "19",
468
+ "reviewer": "Assign reviewer"
469
+ },
470
+ {
471
+ "id": 53,
472
+ "header": "Network Security Measures",
473
+ "type": "Technical content",
474
+ "status": "In Process",
475
+ "target": "29",
476
+ "limit": "32",
477
+ "reviewer": "Lisa Wong"
478
+ },
479
+ {
480
+ "id": 54,
481
+ "header": "Project Timeline",
482
+ "type": "Planning",
483
+ "status": "Done",
484
+ "target": "14",
485
+ "limit": "17",
486
+ "reviewer": "Eddie Lake"
487
+ },
488
+ {
489
+ "id": 55,
490
+ "header": "Resource Allocation",
491
+ "type": "Planning",
492
+ "status": "In Process",
493
+ "target": "27",
494
+ "limit": "30",
495
+ "reviewer": "Assign reviewer"
496
+ },
497
+ {
498
+ "id": 56,
499
+ "header": "Team Structure and Roles",
500
+ "type": "Planning",
501
+ "status": "Done",
502
+ "target": "20",
503
+ "limit": "23",
504
+ "reviewer": "Jamik Tashpulatov"
505
+ },
506
+ {
507
+ "id": 57,
508
+ "header": "Communication Protocols",
509
+ "type": "Planning",
510
+ "status": "In Process",
511
+ "target": "15",
512
+ "limit": "18",
513
+ "reviewer": "Assign reviewer"
514
+ },
515
+ {
516
+ "id": 58,
517
+ "header": "Success Metrics",
518
+ "type": "Planning",
519
+ "status": "Done",
520
+ "target": "30",
521
+ "limit": "33",
522
+ "reviewer": "Eddie Lake"
523
+ },
524
+ {
525
+ "id": 59,
526
+ "header": "Internationalization Support",
527
+ "type": "Technical content",
528
+ "status": "In Process",
529
+ "target": "23",
530
+ "limit": "26",
531
+ "reviewer": "Jamik Tashpulatov"
532
+ },
533
+ {
534
+ "id": 60,
535
+ "header": "Backup and Recovery Procedures",
536
+ "type": "Technical content",
537
+ "status": "Done",
538
+ "target": "18",
539
+ "limit": "21",
540
+ "reviewer": "Assign reviewer"
541
+ },
542
+ {
543
+ "id": 61,
544
+ "header": "Monitoring and Alerting System",
545
+ "type": "Technical content",
546
+ "status": "In Process",
547
+ "target": "25",
548
+ "limit": "28",
549
+ "reviewer": "Daniel Park"
550
+ },
551
+ {
552
+ "id": 62,
553
+ "header": "Code Review Guidelines",
554
+ "type": "Technical content",
555
+ "status": "Done",
556
+ "target": "12",
557
+ "limit": "15",
558
+ "reviewer": "Eddie Lake"
559
+ },
560
+ {
561
+ "id": 63,
562
+ "header": "Documentation Standards",
563
+ "type": "Technical content",
564
+ "status": "In Process",
565
+ "target": "27",
566
+ "limit": "30",
567
+ "reviewer": "Jamik Tashpulatov"
568
+ },
569
+ {
570
+ "id": 64,
571
+ "header": "Release Management Process",
572
+ "type": "Planning",
573
+ "status": "Done",
574
+ "target": "22",
575
+ "limit": "25",
576
+ "reviewer": "Assign reviewer"
577
+ },
578
+ {
579
+ "id": 65,
580
+ "header": "Feature Prioritization Matrix",
581
+ "type": "Planning",
582
+ "status": "In Process",
583
+ "target": "19",
584
+ "limit": "22",
585
+ "reviewer": "Emma Davis"
586
+ },
587
+ {
588
+ "id": 66,
589
+ "header": "Technical Debt Assessment",
590
+ "type": "Technical content",
591
+ "status": "Done",
592
+ "target": "24",
593
+ "limit": "27",
594
+ "reviewer": "Eddie Lake"
595
+ },
596
+ {
597
+ "id": 67,
598
+ "header": "Capacity Planning",
599
+ "type": "Planning",
600
+ "status": "In Process",
601
+ "target": "21",
602
+ "limit": "24",
603
+ "reviewer": "Jamik Tashpulatov"
604
+ },
605
+ {
606
+ "id": 68,
607
+ "header": "Service Level Agreements",
608
+ "type": "Legal",
609
+ "status": "Done",
610
+ "target": "26",
611
+ "limit": "29",
612
+ "reviewer": "Assign reviewer"
613
+ }
614
+ ]
@@ -0,0 +1,37 @@
1
+ import { useUser } from "@bluecopa/react";
2
+
3
+ export function useBluecopaUser() {
4
+ const { data: user, error, isLoading } = useUser();
5
+
6
+ // Fallback user data when API errors out
7
+ const fallbackUser = {
8
+ firstName: "Set Environment",
9
+ lastName: "Set Environment",
10
+ email: "setenv@email.com"
11
+ };
12
+ // Return fallback user if there's an error
13
+ if (error) {
14
+ console.error('Error fetching user data:', error);
15
+ return {
16
+ user: { user: fallbackUser },
17
+ isLoading: false,
18
+ error,
19
+ };
20
+ }
21
+
22
+ // Return loading state
23
+ if (isLoading) {
24
+ return {
25
+ user: null,
26
+ isLoading: true,
27
+ error: null,
28
+ };
29
+ }
30
+
31
+ // Return actual user data or fallback if no user data
32
+ return {
33
+ user: user || fallbackUser,
34
+ isLoading: false,
35
+ error: null,
36
+ };
37
+ }
@@ -0,0 +1,19 @@
1
+ import * as React from "react"
2
+
3
+ const MOBILE_BREAKPOINT = 768
4
+
5
+ export function useIsMobile() {
6
+ const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)
7
+
8
+ React.useEffect(() => {
9
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)
10
+ const onChange = () => {
11
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
12
+ }
13
+ mql.addEventListener("change", onChange)
14
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
15
+ return () => mql.removeEventListener("change", onChange)
16
+ }, [])
17
+
18
+ return !!isMobile
19
+ }
@@ -1,4 +1,4 @@
1
- import { type ClassValue, clsx } from "clsx"
1
+ import { clsx, type ClassValue } from "clsx"
2
2
  import { twMerge } from "tailwind-merge"
3
3
 
4
4
  export function cn(...inputs: ClassValue[]) {
@@ -0,0 +1,12 @@
1
+ import { BrowserRouter } from "react-router-dom";
2
+ import App from "./app";
3
+ import React from "react";
4
+ import ReactDOM from "react-dom/client";
5
+
6
+ ReactDOM.createRoot(document.getElementById("root")!).render(
7
+ <React.StrictMode>
8
+ <BrowserRouter>
9
+ <App />
10
+ </BrowserRouter>
11
+ </React.StrictMode>
12
+ );