@burdenoff/microfe-mybodyshield 2026.706.2 → 2026.713.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/dev/main.d.ts +2 -0
  2. package/dist/dev/main.d.ts.map +1 -0
  3. package/dist/generated/global-operations.d.ts +2 -0
  4. package/dist/generated/global-operations.d.ts.map +1 -0
  5. package/dist/generated/global-types.d.ts +18199 -0
  6. package/dist/generated/global-types.d.ts.map +1 -0
  7. package/dist/generated/wspace-operations.d.ts +2 -0
  8. package/dist/generated/wspace-operations.d.ts.map +1 -0
  9. package/dist/generated/wspace-types.d.ts +43046 -0
  10. package/dist/generated/wspace-types.d.ts.map +1 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +2 -1
  14. package/dist/mybodyshield/MyBodyShieldRoot.d.ts +5 -0
  15. package/dist/mybodyshield/MyBodyShieldRoot.d.ts.map +1 -0
  16. package/dist/mybodyshield/MyBodyShieldRoutes.d.ts +4 -0
  17. package/dist/mybodyshield/MyBodyShieldRoutes.d.ts.map +1 -0
  18. package/dist/mybodyshield/MyBodyShieldRoutes.js +77 -36
  19. package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -1
  20. package/dist/mybodyshield/components/DataTable.d.ts +28 -0
  21. package/dist/mybodyshield/components/DataTable.d.ts.map +1 -0
  22. package/dist/mybodyshield/components/EmptyState.d.ts +18 -0
  23. package/dist/mybodyshield/components/EmptyState.d.ts.map +1 -0
  24. package/dist/mybodyshield/components/EvidenceUpload.d.ts +14 -0
  25. package/dist/mybodyshield/components/EvidenceUpload.d.ts.map +1 -0
  26. package/dist/mybodyshield/components/FeatureFlagGuard.d.ts +11 -0
  27. package/dist/mybodyshield/components/FeatureFlagGuard.d.ts.map +1 -0
  28. package/dist/mybodyshield/components/FeatureFlagGuard.js +27 -0
  29. package/dist/mybodyshield/components/FeatureFlagGuard.js.map +1 -0
  30. package/dist/mybodyshield/components/FileLink.d.ts +15 -0
  31. package/dist/mybodyshield/components/FileLink.d.ts.map +1 -0
  32. package/dist/mybodyshield/components/FilterTabs.d.ts +18 -0
  33. package/dist/mybodyshield/components/FilterTabs.d.ts.map +1 -0
  34. package/dist/mybodyshield/components/MetricsCard.d.ts +23 -0
  35. package/dist/mybodyshield/components/MetricsCard.d.ts.map +1 -0
  36. package/dist/mybodyshield/components/MiniBar.d.ts +16 -0
  37. package/dist/mybodyshield/components/MiniBar.d.ts.map +1 -0
  38. package/dist/mybodyshield/components/MybDiscussion.d.ts +18 -0
  39. package/dist/mybodyshield/components/MybDiscussion.d.ts.map +1 -0
  40. package/dist/mybodyshield/components/MybDiscussion.js +5 -5
  41. package/dist/mybodyshield/components/MybTags.d.ts +17 -0
  42. package/dist/mybodyshield/components/MybTags.d.ts.map +1 -0
  43. package/dist/mybodyshield/components/PageDisabled.d.ts +9 -0
  44. package/dist/mybodyshield/components/PageDisabled.d.ts.map +1 -0
  45. package/dist/mybodyshield/components/PageDisabled.js +17 -0
  46. package/dist/mybodyshield/components/PageDisabled.js.map +1 -0
  47. package/dist/mybodyshield/components/PageLayout.d.ts +16 -0
  48. package/dist/mybodyshield/components/PageLayout.d.ts.map +1 -0
  49. package/dist/mybodyshield/components/Pagination.d.ts +22 -0
  50. package/dist/mybodyshield/components/Pagination.d.ts.map +1 -0
  51. package/dist/mybodyshield/components/StateViews.d.ts +25 -0
  52. package/dist/mybodyshield/components/StateViews.d.ts.map +1 -0
  53. package/dist/mybodyshield/components/StateViews.js +2 -1
  54. package/dist/mybodyshield/components/StateViews.js.map +1 -1
  55. package/dist/mybodyshield/components/StatusBadge.d.ts +9 -0
  56. package/dist/mybodyshield/components/StatusBadge.d.ts.map +1 -0
  57. package/dist/mybodyshield/components/Tabs.d.ts +17 -0
  58. package/dist/mybodyshield/components/Tabs.d.ts.map +1 -0
  59. package/dist/mybodyshield/components/UserSearchSelect.d.ts +28 -0
  60. package/dist/mybodyshield/components/UserSearchSelect.d.ts.map +1 -0
  61. package/dist/mybodyshield/components/index.d.ts +22 -0
  62. package/dist/mybodyshield/components/index.d.ts.map +1 -0
  63. package/dist/mybodyshield/components/index.js +4 -2
  64. package/dist/mybodyshield/context/MyBodyShieldContext.d.ts +16 -0
  65. package/dist/mybodyshield/context/MyBodyShieldContext.d.ts.map +1 -0
  66. package/dist/mybodyshield/context/index.d.ts +6 -0
  67. package/dist/mybodyshield/context/index.d.ts.map +1 -0
  68. package/dist/mybodyshield/hooks/index.d.ts +12 -0
  69. package/dist/mybodyshield/hooks/index.d.ts.map +1 -0
  70. package/dist/mybodyshield/hooks/index.js +1 -0
  71. package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.d.ts +21 -0
  72. package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.d.ts.map +1 -0
  73. package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js +35 -0
  74. package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js.map +1 -0
  75. package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts +83 -0
  76. package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts.map +1 -0
  77. package/dist/mybodyshield/hooks/useMybComments.d.ts +36 -0
  78. package/dist/mybodyshield/hooks/useMybComments.d.ts.map +1 -0
  79. package/dist/mybodyshield/hooks/useMybFiles.d.ts +47 -0
  80. package/dist/mybodyshield/hooks/useMybFiles.d.ts.map +1 -0
  81. package/dist/mybodyshield/hooks/useMybTags.d.ts +44 -0
  82. package/dist/mybodyshield/hooks/useMybTags.d.ts.map +1 -0
  83. package/dist/mybodyshield/hooks/useMybUsers.d.ts +27 -0
  84. package/dist/mybodyshield/hooks/useMybUsers.d.ts.map +1 -0
  85. package/dist/mybodyshield/hooks/usePager.d.ts +29 -0
  86. package/dist/mybodyshield/hooks/usePager.d.ts.map +1 -0
  87. package/dist/mybodyshield/index.d.ts +9 -0
  88. package/dist/mybodyshield/index.d.ts.map +1 -0
  89. package/dist/mybodyshield/pages/DashboardPage.d.ts +10 -0
  90. package/dist/mybodyshield/pages/DashboardPage.d.ts.map +1 -0
  91. package/dist/mybodyshield/pages/DashboardPage.js +91 -86
  92. package/dist/mybodyshield/pages/DashboardPage.js.map +1 -1
  93. package/dist/mybodyshield/pages/_shared/visuals.d.ts +77 -0
  94. package/dist/mybodyshield/pages/_shared/visuals.d.ts.map +1 -0
  95. package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts +11 -0
  96. package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts.map +1 -0
  97. package/dist/mybodyshield/pages/coaching/CoachingPage.js +60 -60
  98. package/dist/mybodyshield/pages/goals/GoalsPage.d.ts +11 -0
  99. package/dist/mybodyshield/pages/goals/GoalsPage.d.ts.map +1 -0
  100. package/dist/mybodyshield/pages/goals/GoalsPage.js +125 -125
  101. package/dist/mybodyshield/pages/goals/GoalsPage.js.map +1 -1
  102. package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts +13 -0
  103. package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts.map +1 -0
  104. package/dist/mybodyshield/pages/nutrition/NutritionPage.js +129 -129
  105. package/dist/mybodyshield/pages/nutrition/NutritionPage.js.map +1 -1
  106. package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts +10 -0
  107. package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts.map +1 -0
  108. package/dist/mybodyshield/pages/programs/ProgramDetailPage.js +218 -191
  109. package/dist/mybodyshield/pages/programs/ProgramDetailPage.js.map +1 -1
  110. package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts +11 -0
  111. package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts.map +1 -0
  112. package/dist/mybodyshield/pages/programs/ProgramsPage.js +197 -193
  113. package/dist/mybodyshield/pages/programs/ProgramsPage.js.map +1 -1
  114. package/dist/mybodyshield/pages/progress/ProgressPage.d.ts +13 -0
  115. package/dist/mybodyshield/pages/progress/ProgressPage.d.ts.map +1 -0
  116. package/dist/mybodyshield/pages/progress/ProgressPage.js +143 -143
  117. package/dist/mybodyshield/pages/progress/ProgressPage.js.map +1 -1
  118. package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts +11 -0
  119. package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts.map +1 -0
  120. package/dist/mybodyshield/pages/recovery/RecoveryPage.js +60 -60
  121. package/dist/mybodyshield/pages/recovery/RecoveryPage.js.map +1 -1
  122. package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts +11 -0
  123. package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts.map +1 -0
  124. package/dist/mybodyshield/pages/train/SessionDetailPage.js +184 -181
  125. package/dist/mybodyshield/pages/train/SessionDetailPage.js.map +1 -1
  126. package/dist/mybodyshield/pages/train/SessionsPage.d.ts +11 -0
  127. package/dist/mybodyshield/pages/train/SessionsPage.d.ts.map +1 -0
  128. package/dist/mybodyshield/pages/train/SessionsPage.js +119 -115
  129. package/dist/mybodyshield/pages/train/SessionsPage.js.map +1 -1
  130. package/dist/mybodyshield/services/createSandboxAssistantTransport.d.ts +24 -0
  131. package/dist/mybodyshield/services/createSandboxAssistantTransport.d.ts.map +1 -0
  132. package/dist/mybodyshield/services/createSandboxAssistantTransport.js +14 -0
  133. package/dist/mybodyshield/services/createSandboxAssistantTransport.js.map +1 -0
  134. package/dist/mybodyshield/types/assistant.d.ts +55 -0
  135. package/dist/mybodyshield/types/assistant.d.ts.map +1 -0
  136. package/dist/mybodyshield/types/index.d.ts +419 -0
  137. package/dist/mybodyshield/types/index.d.ts.map +1 -0
  138. package/dist/mybodyshield/utils/cn.d.ts +4 -0
  139. package/dist/mybodyshield/utils/cn.d.ts.map +1 -0
  140. package/dist/mybodyshield/utils/formatters.d.ts +32 -0
  141. package/dist/mybodyshield/utils/formatters.d.ts.map +1 -0
  142. package/dist/mybodyshield/utils/i18n.d.ts +6 -0
  143. package/dist/mybodyshield/utils/i18n.d.ts.map +1 -0
  144. package/dist/mybodyshield/utils/index.d.ts +9 -0
  145. package/dist/mybodyshield/utils/index.d.ts.map +1 -0
  146. package/dist/mybodyshield/utils/navigation.d.ts +14 -0
  147. package/dist/mybodyshield/utils/navigation.d.ts.map +1 -0
  148. package/dist/mybodyshield/utils/pageContext.d.ts +28 -0
  149. package/dist/mybodyshield/utils/pageContext.d.ts.map +1 -0
  150. package/dist/mybodyshield/utils/pageContext.js +62 -0
  151. package/dist/mybodyshield/utils/pageContext.js.map +1 -0
  152. package/package.json +8 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/components/Pagination.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,EACZ,SAAS,GACV,EAAE,eAAe,sCAuCjB"}
@@ -0,0 +1,25 @@
1
+ import { FC, ReactNode } from 'react';
2
+
3
+ interface LoadingViewProps {
4
+ label?: string;
5
+ className?: string;
6
+ }
7
+ export declare const LoadingView: FC<LoadingViewProps>;
8
+ interface ErrorViewProps {
9
+ title?: string;
10
+ message?: string;
11
+ onRetry?: () => void;
12
+ className?: string;
13
+ }
14
+ export declare const ErrorView: FC<ErrorViewProps>;
15
+ interface SectionProps {
16
+ title: string;
17
+ description?: string;
18
+ action?: ReactNode;
19
+ children: ReactNode;
20
+ className?: string;
21
+ 'data-tour'?: string;
22
+ }
23
+ export declare const Section: FC<SectionProps>;
24
+ export {};
25
+ //# sourceMappingURL=StateViews.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateViews.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/components/StateViews.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAK3C,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAK5C,CAAC;AAEF,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA2BxC,CAAC;AAEF,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,OAAO,EAAE,EAAE,CAAC,YAAY,CAkBpC,CAAC"}
@@ -27,7 +27,8 @@ var a = ({ label: t = "Loading…", className: a }) => /* @__PURE__ */ r("div",
27
27
  children: "Retry"
28
28
  })
29
29
  ]
30
- }), s = ({ title: t, description: i, action: a, children: o, className: s }) => /* @__PURE__ */ r("section", {
30
+ }), s = ({ title: t, description: i, action: a, children: o, className: s, "data-tour": c }) => /* @__PURE__ */ r("section", {
31
+ "data-tour": c,
31
32
  className: e("mt-8 first:mt-0", s),
32
33
  children: [/* @__PURE__ */ r("div", {
33
34
  className: "mb-3 flex items-end justify-between gap-3",
@@ -1 +1 @@
1
- {"version":3,"file":"StateViews.js","names":[],"sources":["../../../src/mybodyshield/components/StateViews.tsx"],"sourcesContent":["/**\n * Shared loading / error / section state views\n * @module mybodyshield/components\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { AlertCircle } from 'lucide-react';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { cn } from '../utils/cn';\n\ninterface LoadingViewProps {\n label?: string;\n className?: string;\n}\n\nexport const LoadingView: FC<LoadingViewProps> = ({ label = 'Loading…', className }) => (\n <div className={cn('flex min-h-[40vh] flex-col items-center justify-center gap-3', className)}>\n <Spinner size=\"lg\" />\n <p className=\"text-sm text-text-secondary\">{label}</p>\n </div>\n);\n\ninterface ErrorViewProps {\n title?: string;\n message?: string;\n onRetry?: () => void;\n className?: string;\n}\n\nexport const ErrorView: FC<ErrorViewProps> = ({\n title = 'Something went wrong',\n message,\n onRetry,\n className,\n}) => (\n <div\n className={cn(\n 'flex min-h-[40vh] flex-col items-center justify-center gap-4 text-center',\n className\n )}\n >\n <AlertCircle className=\"h-10 w-10 text-status-error-text\" />\n <div>\n <h2 className=\"text-lg font-semibold text-text-primary\">{title}</h2>\n {message && <p className=\"mt-1 max-w-md text-sm text-text-secondary\">{message}</p>}\n </div>\n {onRetry && (\n <button\n type=\"button\"\n onClick={onRetry}\n className=\"rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90\"\n >\n Retry\n </button>\n )}\n </div>\n);\n\ninterface SectionProps {\n title: string;\n description?: string;\n action?: ReactNode;\n children: ReactNode;\n className?: string;\n}\n\nexport const Section: FC<SectionProps> = ({ title, description, action, children, className }) => (\n <section className={cn('mt-8 first:mt-0', className)}>\n <div className=\"mb-3 flex items-end justify-between gap-3\">\n <div>\n <h2 className=\"text-base font-semibold text-text-primary\">{title}</h2>\n {description && <p className=\"mt-0.5 text-sm text-text-secondary\">{description}</p>}\n </div>\n {action && <div className=\"shrink-0\">{action}</div>}\n </div>\n {children}\n </section>\n);\n"],"mappings":";;;;;AAeA,IAAa,KAAqC,EAAE,WAAQ,YAAY,mBACtE,kBAAC,OAAD;CAAK,WAAW,EAAG,gEAAgE,EAAU;WAA7F,CACE,kBAAC,GAAD,EAAS,MAAK,MAAO,CAAA,EACrB,kBAAC,KAAD;EAAG,WAAU;YAA+B;EAAU,CAAA,CAClD;IAUK,KAAiC,EAC5C,WAAQ,wBACR,YACA,YACA,mBAEA,kBAAC,OAAD;CACE,WAAW,EACT,4EACA,EACD;WAJH;EAME,kBAAC,GAAD,EAAa,WAAU,oCAAqC,CAAA;EAC5D,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aAA2C;GAAW,CAAA,EACnE,KAAW,kBAAC,KAAD;GAAG,WAAU;aAA6C;GAAY,CAAA,CAC9E,EAAA,CAAA;EACL,KACC,kBAAC,UAAD;GACE,MAAK;GACL,SAAS;GACT,WAAU;aACX;GAEQ,CAAA;EAEP;IAWK,KAA6B,EAAE,UAAO,gBAAa,WAAQ,aAAU,mBAChF,kBAAC,WAAD;CAAS,WAAW,EAAG,mBAAmB,EAAU;WAApD,CACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aAA6C;GAAW,CAAA,EACrE,KAAe,kBAAC,KAAD;GAAG,WAAU;aAAsC;GAAgB,CAAA,CAC/E,EAAA,CAAA,EACL,KAAU,kBAAC,OAAD;GAAK,WAAU;aAAY;GAAa,CAAA,CAC/C;KACL,EACO"}
1
+ {"version":3,"file":"StateViews.js","names":[],"sources":["../../../src/mybodyshield/components/StateViews.tsx"],"sourcesContent":["/**\n * Shared loading / error / section state views\n * @module mybodyshield/components\n */\n\nimport type { FC, ReactNode } from 'react';\nimport { AlertCircle } from 'lucide-react';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { cn } from '../utils/cn';\n\ninterface LoadingViewProps {\n label?: string;\n className?: string;\n}\n\nexport const LoadingView: FC<LoadingViewProps> = ({ label = 'Loading…', className }) => (\n <div className={cn('flex min-h-[40vh] flex-col items-center justify-center gap-3', className)}>\n <Spinner size=\"lg\" />\n <p className=\"text-sm text-text-secondary\">{label}</p>\n </div>\n);\n\ninterface ErrorViewProps {\n title?: string;\n message?: string;\n onRetry?: () => void;\n className?: string;\n}\n\nexport const ErrorView: FC<ErrorViewProps> = ({\n title = 'Something went wrong',\n message,\n onRetry,\n className,\n}) => (\n <div\n className={cn(\n 'flex min-h-[40vh] flex-col items-center justify-center gap-4 text-center',\n className\n )}\n >\n <AlertCircle className=\"h-10 w-10 text-status-error-text\" />\n <div>\n <h2 className=\"text-lg font-semibold text-text-primary\">{title}</h2>\n {message && <p className=\"mt-1 max-w-md text-sm text-text-secondary\">{message}</p>}\n </div>\n {onRetry && (\n <button\n type=\"button\"\n onClick={onRetry}\n className=\"rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:opacity-90\"\n >\n Retry\n </button>\n )}\n </div>\n);\n\ninterface SectionProps {\n title: string;\n description?: string;\n action?: ReactNode;\n children: ReactNode;\n className?: string;\n 'data-tour'?: string;\n}\n\nexport const Section: FC<SectionProps> = ({\n title,\n description,\n action,\n children,\n className,\n 'data-tour': dataTour,\n}) => (\n <section data-tour={dataTour} className={cn('mt-8 first:mt-0', className)}>\n <div className=\"mb-3 flex items-end justify-between gap-3\">\n <div>\n <h2 className=\"text-base font-semibold text-text-primary\">{title}</h2>\n {description && <p className=\"mt-0.5 text-sm text-text-secondary\">{description}</p>}\n </div>\n {action && <div className=\"shrink-0\">{action}</div>}\n </div>\n {children}\n </section>\n);\n"],"mappings":";;;;;AAeA,IAAa,KAAqC,EAAE,WAAQ,YAAY,mBACtE,kBAAC,OAAD;CAAK,WAAW,EAAG,gEAAgE,EAAU;WAA7F,CACE,kBAAC,GAAD,EAAS,MAAK,MAAO,CAAA,EACrB,kBAAC,KAAD;EAAG,WAAU;YAA+B;EAAU,CAAA,CAClD;IAUK,KAAiC,EAC5C,WAAQ,wBACR,YACA,YACA,mBAEA,kBAAC,OAAD;CACE,WAAW,EACT,4EACA,EACD;WAJH;EAME,kBAAC,GAAD,EAAa,WAAU,oCAAqC,CAAA;EAC5D,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aAA2C;GAAW,CAAA,EACnE,KAAW,kBAAC,KAAD;GAAG,WAAU;aAA6C;GAAY,CAAA,CAC9E,EAAA,CAAA;EACL,KACC,kBAAC,UAAD;GACE,MAAK;GACL,SAAS;GACT,WAAU;aACX;GAEQ,CAAA;EAEP;IAYK,KAA6B,EACxC,UACA,gBACA,WACA,aACA,cACA,aAAa,QAEb,kBAAC,WAAD;CAAS,aAAW;CAAU,WAAW,EAAG,mBAAmB,EAAU;WAAzE,CACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;GAAI,WAAU;aAA6C;GAAW,CAAA,EACrE,KAAe,kBAAC,KAAD;GAAG,WAAU;aAAsC;GAAgB,CAAA,CAC/E,EAAA,CAAA,EACL,KAAU,kBAAC,OAAD;GAAK,WAAU;aAAY;GAAa,CAAA,CAC/C;KACL,EACO"}
@@ -0,0 +1,9 @@
1
+ import { FC } from 'react';
2
+
3
+ interface StatusBadgeProps {
4
+ status: string;
5
+ className?: string;
6
+ }
7
+ export declare const StatusBadge: FC<StatusBadgeProps>;
8
+ export {};
9
+ //# sourceMappingURL=StatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/components/StatusBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAsB5C,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ export interface TabItem<V extends string> {
4
+ value: V;
5
+ label: string;
6
+ icon?: ReactNode;
7
+ count?: number;
8
+ }
9
+ interface TabsProps<V extends string> {
10
+ items: TabItem<V>[];
11
+ value: V;
12
+ onChange: (value: V) => void;
13
+ className?: string;
14
+ }
15
+ export declare function Tabs<V extends string>({ items, value, onChange, className }: TabsProps<V>): import("react").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=Tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/components/Tabs.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,MAAM;IACvC,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,SAAS,CAAC,CAAC,SAAS,MAAM;IAClC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,+BAyCzF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * User picker (identity reuse)
3
+ * @module mybodyshield/components
4
+ *
5
+ * Resolves a real user by name or email from the global user directory so a
6
+ * coach/member can be chosen without pasting a raw UUID. Degrades gracefully:
7
+ * if the directory is unavailable (RBAC), the user can still paste an id.
8
+ * Semantic tokens only.
9
+ */
10
+ export interface UserSelectValue {
11
+ userId: string;
12
+ displayName: string;
13
+ }
14
+ interface UserSearchSelectProps {
15
+ /** Field label (e.g. "Coach", "Member"). */
16
+ label: string;
17
+ /** Currently selected user id. */
18
+ userId: string;
19
+ /** Display name currently chosen (echoed back so the parent can prefill). */
20
+ displayName: string;
21
+ onSelect: (value: UserSelectValue) => void;
22
+ required?: boolean;
23
+ /** Optional id for the label/input association in manual mode. */
24
+ htmlId?: string;
25
+ }
26
+ export declare function UserSearchSelect({ label, userId, displayName, onSelect, required, htmlId, }: UserSearchSelectProps): import("react").JSX.Element;
27
+ export {};
28
+ //# sourceMappingURL=UserSearchSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserSearchSelect.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/components/UserSearchSelect.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAQ,EACR,QAAgB,EAChB,MAAsB,GACvB,EAAE,qBAAqB,+BA+HvB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Components index
3
+ * @module mybodyshield/components
4
+ */
5
+ export { PageLayout } from './PageLayout';
6
+ export { MetricsCard } from './MetricsCard';
7
+ export { StatusBadge } from './StatusBadge';
8
+ export { EmptyState } from './EmptyState';
9
+ export { LoadingView, ErrorView, Section } from './StateViews';
10
+ export { DataTable, type Column } from './DataTable';
11
+ export { FilterTabs, type FilterOption } from './FilterTabs';
12
+ export { Tabs, type TabItem } from './Tabs';
13
+ export { Pagination } from './Pagination';
14
+ export { MiniBar } from './MiniBar';
15
+ export { EvidenceUpload } from './EvidenceUpload';
16
+ export { FileLink } from './FileLink';
17
+ export { MybDiscussion } from './MybDiscussion';
18
+ export { MybTags } from './MybTags';
19
+ export { UserSearchSelect, type UserSelectValue } from './UserSearchSelect';
20
+ export { FeatureFlagGuard } from './FeatureFlagGuard';
21
+ export { PageDisabled } from './PageDisabled';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/components/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,15 +1,17 @@
1
1
  import "./PageLayout.js";
2
2
  import "./MetricsCard.js";
3
3
  import "./StatusBadge.js";
4
- import "./MiniBar.js";
5
- import "./StateViews.js";
6
4
  import "./EmptyState.js";
5
+ import "./StateViews.js";
7
6
  import "./DataTable.js";
8
7
  import "./FilterTabs.js";
9
8
  import "./Tabs.js";
10
9
  import "./Pagination.js";
10
+ import "./MiniBar.js";
11
11
  import "./EvidenceUpload.js";
12
12
  import "./FileLink.js";
13
13
  import "./MybDiscussion.js";
14
14
  import "./MybTags.js";
15
15
  import "./UserSearchSelect.js";
16
+ import "./FeatureFlagGuard.js";
17
+ import "./PageDisabled.js";
@@ -0,0 +1,16 @@
1
+ import { FC, PropsWithChildren } from 'react';
2
+ import { MyBodyShieldRootProps } from '../types';
3
+
4
+ interface MyBodyShieldContextValue extends Omit<MyBodyShieldRootProps, 'registerNavItems' | 'registerFooterItems' | 'navigate'> {
5
+ isStandalone: boolean;
6
+ /** Shell's navigate function (only available in integrated mode). */
7
+ navigate?: (path: string) => void;
8
+ /** Navigate to a path relative to basePath. */
9
+ navigateTo: (relativePath: string) => void;
10
+ /** Get the full path for a relative path. */
11
+ getPath: (relativePath: string) => string;
12
+ }
13
+ export declare function useMyBodyShield(): MyBodyShieldContextValue;
14
+ export declare const MyBodyShieldProvider: FC<PropsWithChildren<MyBodyShieldRootProps>>;
15
+ export {};
16
+ //# sourceMappingURL=MyBodyShieldContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyBodyShieldContext.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/context/MyBodyShieldContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGtD,UAAU,wBAAyB,SAAQ,IAAI,CAC7C,qBAAqB,EACrB,kBAAkB,GAAG,qBAAqB,GAAG,UAAU,CACxD;IACC,YAAY,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,+CAA+C;IAC/C,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,6CAA6C;IAC7C,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAID,wBAAgB,eAAe,IAAI,wBAAwB,CAM1D;AAqHD,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAmB7E,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Context index
3
+ * @module mybodyshield/context
4
+ */
5
+ export { MyBodyShieldProvider, useMyBodyShield } from './MyBodyShieldContext';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/context/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Hooks index
3
+ * @module mybodyshield/hooks
4
+ */
5
+ export * from './useMyBodyShieldApi';
6
+ export * from './usePager';
7
+ export * from './useMybFiles';
8
+ export * from './useMybComments';
9
+ export * from './useMybTags';
10
+ export * from './useMybUsers';
11
+ export * from './useMyBodyShieldAnalytics';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC"}
@@ -4,3 +4,4 @@ import "./useMybFiles.js";
4
4
  import "./useMybComments.js";
5
5
  import "./useMybTags.js";
6
6
  import "./useMybUsers.js";
7
+ import "./useMyBodyShieldAnalytics.js";
@@ -0,0 +1,21 @@
1
+ /**
2
+ * MyBodyShield product-analytics helpers.
3
+ *
4
+ * Wraps the shared event bus so every MFE page can emit intent/fact pairs
5
+ * without importing the bus directly. Event names follow the
6
+ * `<product>.<entity>.<verb>` convention and are forwarded to Rybbit by the
7
+ * app-shell `RybbitSink` once they are allow-listed in fe-libs.
8
+ */
9
+ export type MyBodyShieldEntity = 'program' | 'workout' | 'exercise' | 'session' | 'set' | 'goal' | 'nutrition_plan' | 'meal' | 'body_metric' | 'recovery_log' | 'coaching';
10
+ export interface MyBodyShieldAnalyticsPayload {
11
+ workspaceId?: string;
12
+ entityType: MyBodyShieldEntity;
13
+ entityId?: string;
14
+ memberId?: string;
15
+ }
16
+ export declare function useMyBodyShieldAnalytics(): {
17
+ emitIntent: (entity: MyBodyShieldEntity, action: string, payload?: Omit<MyBodyShieldAnalyticsPayload, "entityType">) => void;
18
+ emitFact: (entity: MyBodyShieldEntity, action: string, payload?: Omit<MyBodyShieldAnalyticsPayload, "entityType">) => void;
19
+ emitPageView: (page: string, payload?: Omit<MyBodyShieldAnalyticsPayload, "entityType">) => void;
20
+ };
21
+ //# sourceMappingURL=useMyBodyShieldAnalytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMyBodyShieldAnalytics.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMyBodyShieldAnalytics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,UAAU,GACV,SAAS,GACT,KAAK,GACL,MAAM,GACN,gBAAgB,GAChB,MAAM,GACN,aAAa,GACb,cAAc,GACd,UAAU,CAAC;AAEf,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,wBAAwB;yBAK1B,kBAAkB,UAClB,MAAM,YACJ,IAAI,CAAC,4BAA4B,EAAE,YAAY,CAAC;uBAclD,kBAAkB,UAClB,MAAM,YACJ,IAAI,CAAC,4BAA4B,EAAE,YAAY,CAAC;yBAarD,MAAM,YAAY,IAAI,CAAC,4BAA4B,EAAE,YAAY,CAAC;EAW5E"}
@@ -0,0 +1,35 @@
1
+ import { useCallback as e } from "react";
2
+ import { useEventBus as t } from "@burdenoff/fe-libs/shared/events";
3
+ //#region src/mybodyshield/hooks/useMyBodyShieldAnalytics.ts
4
+ function n() {
5
+ let n = t();
6
+ return {
7
+ emitIntent: e((e, t, r) => {
8
+ n.emitCustom(`mybodyshield.${e}.${t}_clicked`, {
9
+ workspaceId: r?.workspaceId,
10
+ entityType: e,
11
+ entityId: r?.entityId,
12
+ memberId: r?.memberId
13
+ });
14
+ }, [n]),
15
+ emitFact: e((e, t, r) => {
16
+ n.emitCustom(`mybodyshield.${e}.${t}`, {
17
+ workspaceId: r?.workspaceId,
18
+ entityType: e,
19
+ entityId: r?.entityId,
20
+ memberId: r?.memberId
21
+ });
22
+ }, [n]),
23
+ emitPageView: e((e, t) => {
24
+ n.emitCustom("mybodyshield.page.viewed", {
25
+ workspaceId: t?.workspaceId,
26
+ page: e,
27
+ entityId: t?.entityId
28
+ });
29
+ }, [n])
30
+ };
31
+ }
32
+ //#endregion
33
+ export { n as useMyBodyShieldAnalytics };
34
+
35
+ //# sourceMappingURL=useMyBodyShieldAnalytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMyBodyShieldAnalytics.js","names":[],"sources":["../../../src/mybodyshield/hooks/useMyBodyShieldAnalytics.ts"],"sourcesContent":["/**\n * MyBodyShield product-analytics helpers.\n *\n * Wraps the shared event bus so every MFE page can emit intent/fact pairs\n * without importing the bus directly. Event names follow the\n * `<product>.<entity>.<verb>` convention and are forwarded to Rybbit by the\n * app-shell `RybbitSink` once they are allow-listed in fe-libs.\n */\n\nimport { useCallback } from 'react';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\n\nexport type MyBodyShieldEntity =\n | 'program'\n | 'workout'\n | 'exercise'\n | 'session'\n | 'set'\n | 'goal'\n | 'nutrition_plan'\n | 'meal'\n | 'body_metric'\n | 'recovery_log'\n | 'coaching';\n\nexport interface MyBodyShieldAnalyticsPayload {\n workspaceId?: string;\n entityType: MyBodyShieldEntity;\n entityId?: string;\n memberId?: string;\n}\n\nexport function useMyBodyShieldAnalytics() {\n const bus = useEventBus();\n\n const emitIntent = useCallback(\n (\n entity: MyBodyShieldEntity,\n action: string,\n payload?: Omit<MyBodyShieldAnalyticsPayload, 'entityType'>\n ) => {\n bus.emitCustom(`mybodyshield.${entity}.${action}_clicked`, {\n workspaceId: payload?.workspaceId,\n entityType: entity,\n entityId: payload?.entityId,\n memberId: payload?.memberId,\n });\n },\n [bus]\n );\n\n const emitFact = useCallback(\n (\n entity: MyBodyShieldEntity,\n action: string,\n payload?: Omit<MyBodyShieldAnalyticsPayload, 'entityType'>\n ) => {\n bus.emitCustom(`mybodyshield.${entity}.${action}`, {\n workspaceId: payload?.workspaceId,\n entityType: entity,\n entityId: payload?.entityId,\n memberId: payload?.memberId,\n });\n },\n [bus]\n );\n\n const emitPageView = useCallback(\n (page: string, payload?: Omit<MyBodyShieldAnalyticsPayload, 'entityType'>) => {\n bus.emitCustom('mybodyshield.page.viewed', {\n workspaceId: payload?.workspaceId,\n page,\n entityId: payload?.entityId,\n });\n },\n [bus]\n );\n\n return { emitIntent, emitFact, emitPageView };\n}\n"],"mappings":";;;AAgCA,SAAgB,IAA2B;CACzC,IAAM,IAAM,GAAa;AA6CzB,QAAO;EAAE,YA3CU,GAEf,GACA,GACA,MACG;AACH,KAAI,WAAW,gBAAgB,EAAO,GAAG,EAAO,WAAW;IACzD,aAAa,GAAS;IACtB,YAAY;IACZ,UAAU,GAAS;IACnB,UAAU,GAAS;IACpB,CAAC;KAEJ,CAAC,EAAI,CACN;EA6BoB,UA3BJ,GAEb,GACA,GACA,MACG;AACH,KAAI,WAAW,gBAAgB,EAAO,GAAG,KAAU;IACjD,aAAa,GAAS;IACtB,YAAY;IACZ,UAAU,GAAS;IACnB,UAAU,GAAS;IACpB,CAAC;KAEJ,CAAC,EAAI,CACN;EAa8B,cAXV,GAClB,GAAc,MAA+D;AAC5E,KAAI,WAAW,4BAA4B;IACzC,aAAa,GAAS;IACtB;IACA,UAAU,GAAS;IACpB,CAAC;KAEJ,CAAC,EAAI,CACN;EAE4C"}
@@ -0,0 +1,83 @@
1
+ import { MybConnection, MybProgram, MybProgramStatus, MybWorkout, MybWorkoutSession, MybSessionStatus, MybSessionSet, MybGoal, MybGoalStatus, MybMealLog, MybMealType, MybNutritionPlan, MybDailyMacros, MybBodyMetric, MybBodyMetricType, MybRecoveryLog, MybRecoveryMetric, MybCoachingRelationship, MybCoachingStatus, MybCreateProgramInput, MybUpdateProgramInput, MybCreateWorkoutInput, MybCreateExerciseInput, MybStartSessionInput, MybLogSetInput, MybCompleteSessionInput, MybCreateGoalInput, MybUpdateGoalInput, MybCreateNutritionPlanInput, MybUpdateNutritionPlanInput, MybLogMealInput, MybRecordMetricInput, MybLogRecoveryInput, MybCreateCoachingInput, PaginationInput } from '../types';
2
+
3
+ export interface ProgramFilters {
4
+ status?: MybProgramStatus;
5
+ memberId?: string;
6
+ pagination?: PaginationInput;
7
+ }
8
+ export declare const useMybPrograms: (filters?: ProgramFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybConnection<MybProgram>>, Error>;
9
+ export declare const useMybProgram: (id: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybProgram | null>, Error>;
10
+ export declare const useMybProgramWorkouts: (programId: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybWorkout[]>, Error>;
11
+ export declare const useMybCreateProgram: () => import('@tanstack/react-query').UseMutationResult<MybProgram, Error, MybCreateProgramInput, unknown>;
12
+ export declare const useMybUpdateProgram: () => import('@tanstack/react-query').UseMutationResult<MybProgram, Error, {
13
+ id: string;
14
+ input: MybUpdateProgramInput;
15
+ }, unknown>;
16
+ export declare const useMybTransitionProgram: () => import('@tanstack/react-query').UseMutationResult<MybProgram, Error, {
17
+ id: string;
18
+ status: MybProgramStatus;
19
+ }, unknown>;
20
+ export declare const useMybArchiveProgram: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, string, unknown>;
21
+ export declare const useMybAddWorkout: () => import('@tanstack/react-query').UseMutationResult<MybWorkout, Error, MybCreateWorkoutInput, unknown>;
22
+ export declare const useMybAddExercise: () => import('@tanstack/react-query').UseMutationResult<{
23
+ id: string;
24
+ workoutId: string;
25
+ }, Error, MybCreateExerciseInput, unknown>;
26
+ export interface SessionFilters {
27
+ status?: MybSessionStatus;
28
+ programId?: string;
29
+ pagination?: PaginationInput;
30
+ }
31
+ export declare const useMybSessions: (filters?: SessionFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybConnection<MybWorkoutSession>>, Error>;
32
+ export declare const useMybSession: (id: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybWorkoutSession | null>, Error>;
33
+ export declare const useMybStartSession: () => import('@tanstack/react-query').UseMutationResult<MybWorkoutSession, Error, MybStartSessionInput, unknown>;
34
+ export declare const useMybLogSet: () => import('@tanstack/react-query').UseMutationResult<MybSessionSet, Error, MybLogSetInput, unknown>;
35
+ export declare const useMybCompleteSession: () => import('@tanstack/react-query').UseMutationResult<MybWorkoutSession, Error, {
36
+ id: string;
37
+ input: MybCompleteSessionInput;
38
+ }, unknown>;
39
+ export interface GoalFilters {
40
+ status?: MybGoalStatus;
41
+ memberId?: string;
42
+ pagination?: PaginationInput;
43
+ }
44
+ export declare const useMybGoals: (filters?: GoalFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybConnection<MybGoal>>, Error>;
45
+ export declare const useMybCreateGoal: () => import('@tanstack/react-query').UseMutationResult<MybGoal, Error, MybCreateGoalInput, unknown>;
46
+ export declare const useMybUpdateGoal: () => import('@tanstack/react-query').UseMutationResult<MybGoal, Error, {
47
+ id: string;
48
+ input: MybUpdateGoalInput;
49
+ }, unknown>;
50
+ export declare const useMybAchieveGoal: () => import('@tanstack/react-query').UseMutationResult<MybGoal, Error, string, unknown>;
51
+ export declare const useMybActiveNutritionPlan: (memberId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybNutritionPlan | null>, Error>;
52
+ export declare const useMybNutritionPlan: (id: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybNutritionPlan | null>, Error>;
53
+ export interface MealFilters {
54
+ mealType?: MybMealType;
55
+ planId?: string;
56
+ pagination?: PaginationInput;
57
+ }
58
+ export declare const useMybMeals: (filters?: MealFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybConnection<MybMealLog>>, Error>;
59
+ export declare const useMybDailyMacros: (date?: string, memberId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybDailyMacros>, Error>;
60
+ export declare const useMybCreateNutritionPlan: () => import('@tanstack/react-query').UseMutationResult<MybNutritionPlan, Error, MybCreateNutritionPlanInput, unknown>;
61
+ export declare const useMybUpdateNutritionPlan: () => import('@tanstack/react-query').UseMutationResult<MybNutritionPlan, Error, {
62
+ id: string;
63
+ input: MybUpdateNutritionPlanInput;
64
+ }, unknown>;
65
+ export declare const useMybActivateNutritionPlan: () => import('@tanstack/react-query').UseMutationResult<MybNutritionPlan, Error, string, unknown>;
66
+ export declare const useMybLogMeal: () => import('@tanstack/react-query').UseMutationResult<MybMealLog, Error, MybLogMealInput, unknown>;
67
+ export declare const useMybDeleteMeal: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, string, unknown>;
68
+ export interface BodyMetricFilters {
69
+ type?: MybBodyMetricType;
70
+ memberId?: string;
71
+ pagination?: PaginationInput;
72
+ }
73
+ export declare const useMybBodyMetrics: (filters?: BodyMetricFilters) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybConnection<MybBodyMetric>>, Error>;
74
+ export declare const useMybRecordBodyMetric: () => import('@tanstack/react-query').UseMutationResult<MybBodyMetric, Error, MybRecordMetricInput, unknown>;
75
+ export declare const useMybRecoveryLogs: (metric?: MybRecoveryMetric, memberId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybRecoveryLog[]>, Error>;
76
+ export declare const useMybLogRecovery: () => import('@tanstack/react-query').UseMutationResult<MybRecoveryLog, Error, MybLogRecoveryInput, unknown>;
77
+ export declare const useMybCoaching: (status?: MybCoachingStatus, memberId?: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybCoachingRelationship[]>, Error>;
78
+ export declare const useMybCreateCoaching: () => import('@tanstack/react-query').UseMutationResult<MybCoachingRelationship, Error, MybCreateCoachingInput, unknown>;
79
+ export declare const useMybTransitionCoaching: () => import('@tanstack/react-query').UseMutationResult<MybCoachingRelationship, Error, {
80
+ id: string;
81
+ status: MybCoachingStatus;
82
+ }, unknown>;
83
+ //# sourceMappingURL=useMyBodyShieldApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMyBodyShieldApi.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMyBodyShieldApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * MyBodyShield — wspace-conversations-svc EntityComment REUSE hooks (Integration B).
3
+ * @module mybodyshield/hooks/useMybComments
4
+ *
5
+ * Adds a discussion surface to mybodyshield entities WITHOUT any mybodyshield-svc change by
6
+ * reusing the generic EntityComment API composed into the WORKSPACE supergraph.
7
+ * Comments attach to any entity by `(entityType, entityId)`:
8
+ * - `getEntityComments(input): EntityCommentConnection!`
9
+ * - `createEntityComment(input): EntityComment!`
10
+ *
11
+ * Transport reuses `wspaceFetch` from `useMybFiles` (workspace gateway +
12
+ * workspace token). Lives in a separate file; `useMyBodyShieldApi.ts` is
13
+ * untouched.
14
+ */
15
+ export interface MybComment {
16
+ id: string;
17
+ authorId: string;
18
+ authorType: string;
19
+ content: {
20
+ text: string | null;
21
+ markdown: string | null;
22
+ };
23
+ createdAt: string;
24
+ edited: boolean;
25
+ parentCommentId: string | null;
26
+ replyCount: number;
27
+ }
28
+ /** Top-level (root) comments for an mybodyshield entity, oldest first. */
29
+ export declare const useMybComments: (entityType: string, entityId: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<{
30
+ items: MybComment[];
31
+ total: number;
32
+ }>, Error>;
33
+ export declare const useMybCreateComment: (entityType: string, entityId: string) => import('@tanstack/react-query').UseMutationResult<{
34
+ id: string;
35
+ }, Error, string, unknown>;
36
+ //# sourceMappingURL=useMybComments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMybComments.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMybComments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAKD,0EAA0E;AAC1E,eAAO,MAAM,cAAc,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS;;;UAwC9E,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM;QAKN,MAAM;0BAmBvE,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * MyBodyShield — wspace-files-svc REUSE hooks (Integration A).
3
+ * @module mybodyshield/hooks/useMybFiles
4
+ *
5
+ * Reuses the platform file store (`wspace-files-svc`) WITHOUT any mybodyshield-svc
6
+ * change: the eco schema already exposes `MybObservation.evidenceFileId` /
7
+ * `MybReport.fileId`; this module lets the UI actually produce a `fileId` via
8
+ * the canonical 3-step upload flow composed into the WORKSPACE supergraph:
9
+ * 1. `initiateUpload(input)` → `{ uploadUrl, session { id } }`
10
+ * 2. HTTP `PUT` the bytes to the returned signed `uploadUrl`
11
+ * 3. `completeUpload(input: { sessionId })` → `{ fileId }`
12
+ * plus `getFile(id)` to resolve an existing evidence/report file's name + URL.
13
+ *
14
+ * Transport mirrors `useMyBodyShieldApi` exactly — `graphqlFetch({ gateway:
15
+ * 'workspace', workspaceToken: true })` — so no ApolloProvider is required.
16
+ * These hooks live in a SEPARATE file by design; `useMyBodyShieldApi.ts` is
17
+ * left untouched.
18
+ */
19
+ /** Execute a workspace-gateway GraphQL operation with the workspace token. */
20
+ export declare const wspaceFetch: <TData>(query: string, variables: Record<string, unknown>, baseUrl?: string) => Promise<TData>;
21
+ export interface UploadedMybFile {
22
+ fileId: string;
23
+ fileName: string;
24
+ }
25
+ export interface UseMybFileUploadResult {
26
+ upload: (file: File) => Promise<UploadedMybFile>;
27
+ isUploading: boolean;
28
+ /** 0–100 byte-progress of the signed-URL PUT. */
29
+ progress: number;
30
+ error: string | null;
31
+ reset: () => void;
32
+ }
33
+ /**
34
+ * Imperative upload hook: `await upload(file)` runs the platform 3-step flow and
35
+ * resolves to `{ fileId, fileName }`. `fileId` is what the eco mutations accept
36
+ * (`MybRecordMetricInput.photoFileId`, `MybCreateExerciseInput.demoFileId`).
37
+ */
38
+ export declare const useMybFileUpload: () => UseMybFileUploadResult;
39
+ export interface MybFileMeta {
40
+ id: string;
41
+ name: string;
42
+ downloadUrl: string | null;
43
+ mimeType: string;
44
+ size: string;
45
+ }
46
+ export declare const useMybFile: (id: string | null | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybFileMeta | null>, Error>;
47
+ //# sourceMappingURL=useMybFiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMybFiles.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMybFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA8BH,8EAA8E;AAC9E,eAAO,MAAM,WAAW,GAAU,KAAK,EACrC,OAAO,MAAM,EACb,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,UAAU,MAAM,KACf,OAAO,CAAC,KAAK,CAmBf,CAAC;AAMF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AA+BD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACjD,WAAW,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAO,sBAoFnC,CAAC;AAMF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,uFAsBvD,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * MyBodyShield — wspace-tags-svc UniversalTag REUSE hooks (Integration C).
3
+ * @module mybodyshield/hooks/useMybTags
4
+ *
5
+ * The mybodyshield svc does NOT expose a tags field, so we drive the platform tag
6
+ * assignment store directly (approach (b) in the reuse audit) — no mybodyshield-svc
7
+ * change. All operations are composed into the WORKSPACE supergraph:
8
+ * - `getEntityTags(entityType, entityId)` → current assignments (display)
9
+ * - `searchTags(query)` → pick an existing tag
10
+ * - `createTag(input)` → create a new tag (needs a vocabulary)
11
+ * - `assignTag(input)` → link tag ↔ entity
12
+ * - `removeTagAssignment(id)` → unlink
13
+ *
14
+ * `createTag` requires a `vocabularyId`; we resolve a stable, workspace-scoped
15
+ * "mybodyshield" vocabulary (`getVocabularyByKey`, creating it on first use).
16
+ *
17
+ * Transport reuses `wspaceFetch` from `useMybFiles`. Lives in a separate file;
18
+ * `useMyBodyShieldApi.ts` is untouched.
19
+ */
20
+ export interface MybTag {
21
+ id: string;
22
+ label: string;
23
+ color: string | null;
24
+ key: string;
25
+ }
26
+ export interface MybTagAssignment {
27
+ id: string;
28
+ tag: MybTag;
29
+ }
30
+ /** Current tag assignments for an mybodyshield entity. */
31
+ export declare const useMybEntityTags: (entityType: string, entityId: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybTagAssignment[]>, Error>;
32
+ /** Search existing tags (enabled only for a non-empty query). */
33
+ export declare const useMybTagSearch: (query: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<MybTag[]>, Error>;
34
+ /** Assign an existing tag to the entity. */
35
+ export declare const useMybAssignTag: (entityType: string, entityId: string) => import('@tanstack/react-query').UseMutationResult<{
36
+ id: string;
37
+ }, Error, string, unknown>;
38
+ /** Remove a tag assignment by its assignment id. */
39
+ export declare const useMybRemoveTagAssignment: (entityType: string, entityId: string) => import('@tanstack/react-query').UseMutationResult<boolean, Error, string, unknown>;
40
+ /** Create a new tag from a free-text label and assign it to the entity. */
41
+ export declare const useMybCreateAndAssignTag: (entityType: string, entityId: string) => import('@tanstack/react-query').UseMutationResult<{
42
+ id: string;
43
+ }, Error, string, unknown>;
44
+ //# sourceMappingURL=useMybTags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMybTags.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMybTags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAiBD,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,uFAmBhF,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,6EAiB5C,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,eAAe,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM;QAKZ,MAAM;0BAW7D,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,yBAAyB,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM,uFAgB7E,CAAC;AA+BF,2EAA2E;AAC3E,eAAO,MAAM,wBAAwB,GAAI,YAAY,MAAM,EAAE,UAAU,MAAM;QAalB,MAAM;0BAkBhE,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * MyBodyShield — global user directory search (identity reuse).
3
+ * @module mybodyshield/hooks/useMybUsers
4
+ *
5
+ * Resolves real users (coach / member) from the global auth directory so the
6
+ * coaching form can pick a person by name/email instead of pasting a raw UUID.
7
+ * Reuses the composed GLOBAL supergraph `users(filter, pagination)` op — no
8
+ * bespoke identity storage in the mybodyshield svc. Transport mirrors the other
9
+ * hooks (`graphqlFetch`) but targets the GLOBAL gateway.
10
+ */
11
+ export interface DirectoryUser {
12
+ id: string;
13
+ name: string | null;
14
+ firstName: string | null;
15
+ lastName: string | null;
16
+ email: string;
17
+ username: string;
18
+ }
19
+ /** Best display name for a directory user (name → first+last → username → email). */
20
+ export declare const directoryUserName: (user: DirectoryUser) => string;
21
+ /**
22
+ * Search the tenant user directory by name/email. Enabled once the term is at
23
+ * least two characters; failures are surfaced to the caller (which offers a
24
+ * manual-id fallback) rather than as a global error toast.
25
+ */
26
+ export declare const useMybUserSearch: (search: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<DirectoryUser[]>, Error>;
27
+ //# sourceMappingURL=useMybUsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMybUsers.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/useMybUsers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,GAAI,MAAM,aAAa,KAAG,MAMvD,CAAC;AAgBF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,oFAsB9C,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * useOffsetPager — offset/limit pagination for Myb* list connections.
3
+ * @module mybodyshield/hooks
4
+ *
5
+ * The workspaces public gateway's composed `PaginationInput` does NOT reliably
6
+ * carry `cursor` (the federated intersection drops it) — sending
7
+ * `pagination.cursor` fails (GRAPHQL_VALIDATION_FAILED, or INTERNAL_SERVER_ERROR
8
+ * on a null end-cursor). So MFE lists paginate by **offset**: pass
9
+ * `pagination: { limit, offset: page * limit }` and drive "Next" from
10
+ * `pageInfo.hasMore`. This hook keeps a 0-indexed `page` and derives `offset`.
11
+ */
12
+ export interface OffsetPager {
13
+ /** 0-indexed page number for display. */
14
+ page: number;
15
+ /** Number of rows to skip — pass as `pagination.offset`. */
16
+ offset: number;
17
+ /** Rows per page. */
18
+ pageSize: number;
19
+ /** Advance to the next page. */
20
+ next: () => void;
21
+ /** Go back one page (no-op on the first page). */
22
+ prev: () => void;
23
+ /** Reset to the first page (call when filters change). */
24
+ reset: () => void;
25
+ /** Adapter for `<Pagination onPageChange>` — jumps to an absolute 0-indexed page. */
26
+ onPageChange: (targetPage: number) => void;
27
+ }
28
+ export declare function useOffsetPager(pageSize?: number): OffsetPager;
29
+ //# sourceMappingURL=usePager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePager.d.ts","sourceRoot":"","sources":["../../../src/mybodyshield/hooks/usePager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,kDAAkD;IAClD,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,qFAAqF;IACrF,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,cAAc,CAAC,QAAQ,SAAK,GAAG,WAAW,CAczD"}