@ydtb/tk-scope-app 0.14.7

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 (504) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -0
  3. package/dist/src/auth/AuthStrategyGate.d.ts +27 -0
  4. package/dist/src/auth/AuthStrategyGate.d.ts.map +1 -0
  5. package/dist/src/auth/AuthStrategyGate.js +58 -0
  6. package/dist/src/auth/AuthStrategyGate.js.map +1 -0
  7. package/dist/src/auth/components/DefaultDeviceLogin.d.ts +7 -0
  8. package/dist/src/auth/components/DefaultDeviceLogin.d.ts.map +1 -0
  9. package/dist/src/auth/components/DefaultDeviceLogin.js +21 -0
  10. package/dist/src/auth/components/DefaultDeviceLogin.js.map +1 -0
  11. package/dist/src/auth/components/DefaultPinLogin.d.ts +8 -0
  12. package/dist/src/auth/components/DefaultPinLogin.d.ts.map +1 -0
  13. package/dist/src/auth/components/DefaultPinLogin.js +85 -0
  14. package/dist/src/auth/components/DefaultPinLogin.js.map +1 -0
  15. package/dist/src/auth/components/DefaultSessionLogin.d.ts +7 -0
  16. package/dist/src/auth/components/DefaultSessionLogin.d.ts.map +1 -0
  17. package/dist/src/auth/components/DefaultSessionLogin.js +21 -0
  18. package/dist/src/auth/components/DefaultSessionLogin.js.map +1 -0
  19. package/dist/src/auth/components/index.d.ts +12 -0
  20. package/dist/src/auth/components/index.d.ts.map +1 -0
  21. package/dist/src/auth/components/index.js +21 -0
  22. package/dist/src/auth/components/index.js.map +1 -0
  23. package/dist/src/auth/index.d.ts +8 -0
  24. package/dist/src/auth/index.d.ts.map +1 -0
  25. package/dist/src/auth/index.js +7 -0
  26. package/dist/src/auth/index.js.map +1 -0
  27. package/dist/src/auth/persistence/pin-storage.d.ts +19 -0
  28. package/dist/src/auth/persistence/pin-storage.d.ts.map +1 -0
  29. package/dist/src/auth/persistence/pin-storage.js +80 -0
  30. package/dist/src/auth/persistence/pin-storage.js.map +1 -0
  31. package/dist/src/auth/strategies/device.d.ts +16 -0
  32. package/dist/src/auth/strategies/device.d.ts.map +1 -0
  33. package/dist/src/auth/strategies/device.js +51 -0
  34. package/dist/src/auth/strategies/device.js.map +1 -0
  35. package/dist/src/auth/strategies/index.d.ts +13 -0
  36. package/dist/src/auth/strategies/index.d.ts.map +1 -0
  37. package/dist/src/auth/strategies/index.js +24 -0
  38. package/dist/src/auth/strategies/index.js.map +1 -0
  39. package/dist/src/auth/strategies/none.d.ts +9 -0
  40. package/dist/src/auth/strategies/none.d.ts.map +1 -0
  41. package/dist/src/auth/strategies/none.js +10 -0
  42. package/dist/src/auth/strategies/none.js.map +1 -0
  43. package/dist/src/auth/strategies/pin.d.ts +9 -0
  44. package/dist/src/auth/strategies/pin.d.ts.map +1 -0
  45. package/dist/src/auth/strategies/pin.js +48 -0
  46. package/dist/src/auth/strategies/pin.js.map +1 -0
  47. package/dist/src/auth/strategies/session.d.ts +9 -0
  48. package/dist/src/auth/strategies/session.d.ts.map +1 -0
  49. package/dist/src/auth/strategies/session.js +42 -0
  50. package/dist/src/auth/strategies/session.js.map +1 -0
  51. package/dist/src/auth/types.d.ts +2 -0
  52. package/dist/src/auth/types.d.ts.map +1 -0
  53. package/dist/src/auth/types.js +2 -0
  54. package/dist/src/auth/types.js.map +1 -0
  55. package/dist/src/client.d.ts +63 -0
  56. package/dist/src/client.d.ts.map +1 -0
  57. package/dist/src/client.js +81 -0
  58. package/dist/src/client.js.map +1 -0
  59. package/dist/src/components/BackendErrorGate.d.ts +10 -0
  60. package/dist/src/components/BackendErrorGate.d.ts.map +1 -0
  61. package/dist/src/components/BackendErrorGate.js +19 -0
  62. package/dist/src/components/BackendErrorGate.js.map +1 -0
  63. package/dist/src/components/ErrorBoundary.d.ts +17 -0
  64. package/dist/src/components/ErrorBoundary.d.ts.map +1 -0
  65. package/dist/src/components/ErrorBoundary.js +23 -0
  66. package/dist/src/components/ErrorBoundary.js.map +1 -0
  67. package/dist/src/components/NotificationPanel.d.ts +9 -0
  68. package/dist/src/components/NotificationPanel.d.ts.map +1 -0
  69. package/dist/src/components/NotificationPanel.js +146 -0
  70. package/dist/src/components/NotificationPanel.js.map +1 -0
  71. package/dist/src/components/scope/ChildScopeDetailPage.d.ts +8 -0
  72. package/dist/src/components/scope/ChildScopeDetailPage.d.ts.map +1 -0
  73. package/dist/src/components/scope/ChildScopeDetailPage.js +79 -0
  74. package/dist/src/components/scope/ChildScopeDetailPage.js.map +1 -0
  75. package/dist/src/components/scope/ChildScopeListPage.d.ts +6 -0
  76. package/dist/src/components/scope/ChildScopeListPage.d.ts.map +1 -0
  77. package/dist/src/components/scope/ChildScopeListPage.js +111 -0
  78. package/dist/src/components/scope/ChildScopeListPage.js.map +1 -0
  79. package/dist/src/components/scope/CreateChildScopeButton.d.ts +14 -0
  80. package/dist/src/components/scope/CreateChildScopeButton.d.ts.map +1 -0
  81. package/dist/src/components/scope/CreateChildScopeButton.js +18 -0
  82. package/dist/src/components/scope/CreateChildScopeButton.js.map +1 -0
  83. package/dist/src/components/scope/CreateScopeDialog.d.ts +9 -0
  84. package/dist/src/components/scope/CreateScopeDialog.d.ts.map +1 -0
  85. package/dist/src/components/scope/CreateScopeDialog.js +137 -0
  86. package/dist/src/components/scope/CreateScopeDialog.js.map +1 -0
  87. package/dist/src/components/scope/JoinScopeDialog.d.ts +8 -0
  88. package/dist/src/components/scope/JoinScopeDialog.d.ts.map +1 -0
  89. package/dist/src/components/scope/JoinScopeDialog.js +115 -0
  90. package/dist/src/components/scope/JoinScopeDialog.js.map +1 -0
  91. package/dist/src/components/scope/ProfileScopeSection.d.ts +11 -0
  92. package/dist/src/components/scope/ProfileScopeSection.d.ts.map +1 -0
  93. package/dist/src/components/scope/ProfileScopeSection.js +63 -0
  94. package/dist/src/components/scope/ProfileScopeSection.js.map +1 -0
  95. package/dist/src/components/scope/ScopeSwitcher.d.ts +14 -0
  96. package/dist/src/components/scope/ScopeSwitcher.d.ts.map +1 -0
  97. package/dist/src/components/scope/ScopeSwitcher.js +131 -0
  98. package/dist/src/components/scope/ScopeSwitcher.js.map +1 -0
  99. package/dist/src/components/scope/SwitchScopeDialog.d.ts +8 -0
  100. package/dist/src/components/scope/SwitchScopeDialog.d.ts.map +1 -0
  101. package/dist/src/components/scope/SwitchScopeDialog.js +60 -0
  102. package/dist/src/components/scope/SwitchScopeDialog.js.map +1 -0
  103. package/dist/src/components/scope/useChildScopePermissions.d.ts +7 -0
  104. package/dist/src/components/scope/useChildScopePermissions.d.ts.map +1 -0
  105. package/dist/src/components/scope/useChildScopePermissions.js +34 -0
  106. package/dist/src/components/scope/useChildScopePermissions.js.map +1 -0
  107. package/dist/src/contexts/auth/AuthContext.d.ts +13 -0
  108. package/dist/src/contexts/auth/AuthContext.d.ts.map +1 -0
  109. package/dist/src/contexts/auth/AuthContext.js +23 -0
  110. package/dist/src/contexts/auth/AuthContext.js.map +1 -0
  111. package/dist/src/contexts/backend/BackendStatusContext.d.ts +21 -0
  112. package/dist/src/contexts/backend/BackendStatusContext.d.ts.map +1 -0
  113. package/dist/src/contexts/backend/BackendStatusContext.js +36 -0
  114. package/dist/src/contexts/backend/BackendStatusContext.js.map +1 -0
  115. package/dist/src/contexts/command/CommandContext.d.ts +30 -0
  116. package/dist/src/contexts/command/CommandContext.d.ts.map +1 -0
  117. package/dist/src/contexts/command/CommandContext.js +75 -0
  118. package/dist/src/contexts/command/CommandContext.js.map +1 -0
  119. package/dist/src/contexts/command/PanelSlotsContext.d.ts +2 -0
  120. package/dist/src/contexts/command/PanelSlotsContext.d.ts.map +1 -0
  121. package/dist/src/contexts/command/PanelSlotsContext.js +2 -0
  122. package/dist/src/contexts/command/PanelSlotsContext.js.map +1 -0
  123. package/dist/src/contexts/command/PanelStackContext.d.ts +2 -0
  124. package/dist/src/contexts/command/PanelStackContext.d.ts.map +1 -0
  125. package/dist/src/contexts/command/PanelStackContext.js +2 -0
  126. package/dist/src/contexts/command/PanelStackContext.js.map +1 -0
  127. package/dist/src/contexts/command/SearchPanelContext.d.ts +55 -0
  128. package/dist/src/contexts/command/SearchPanelContext.d.ts.map +1 -0
  129. package/dist/src/contexts/command/SearchPanelContext.js +327 -0
  130. package/dist/src/contexts/command/SearchPanelContext.js.map +1 -0
  131. package/dist/src/contexts/config/AppConfigContext.d.ts +8 -0
  132. package/dist/src/contexts/config/AppConfigContext.d.ts.map +1 -0
  133. package/dist/src/contexts/config/AppConfigContext.js +21 -0
  134. package/dist/src/contexts/config/AppConfigContext.js.map +1 -0
  135. package/dist/src/contexts/help/HelpContext.d.ts +30 -0
  136. package/dist/src/contexts/help/HelpContext.d.ts.map +1 -0
  137. package/dist/src/contexts/help/HelpContext.js +73 -0
  138. package/dist/src/contexts/help/HelpContext.js.map +1 -0
  139. package/dist/src/contexts/index.d.ts +10 -0
  140. package/dist/src/contexts/index.d.ts.map +1 -0
  141. package/dist/src/contexts/index.js +10 -0
  142. package/dist/src/contexts/index.js.map +1 -0
  143. package/dist/src/contexts/navigation/NavigationContext.d.ts +23 -0
  144. package/dist/src/contexts/navigation/NavigationContext.d.ts.map +1 -0
  145. package/dist/src/contexts/navigation/NavigationContext.js +294 -0
  146. package/dist/src/contexts/navigation/NavigationContext.js.map +1 -0
  147. package/dist/src/contexts/navigation/NavigationRegistryContext.d.ts +9 -0
  148. package/dist/src/contexts/navigation/NavigationRegistryContext.d.ts.map +1 -0
  149. package/dist/src/contexts/navigation/NavigationRegistryContext.js +17 -0
  150. package/dist/src/contexts/navigation/NavigationRegistryContext.js.map +1 -0
  151. package/dist/src/contexts/scope/ScopeContext.d.ts +40 -0
  152. package/dist/src/contexts/scope/ScopeContext.d.ts.map +1 -0
  153. package/dist/src/contexts/scope/ScopeContext.js +141 -0
  154. package/dist/src/contexts/scope/ScopeContext.js.map +1 -0
  155. package/dist/src/contexts/scope/index.d.ts +3 -0
  156. package/dist/src/contexts/scope/index.d.ts.map +1 -0
  157. package/dist/src/contexts/scope/index.js +3 -0
  158. package/dist/src/contexts/scope/index.js.map +1 -0
  159. package/dist/src/contexts/scope/scopeRef.d.ts +10 -0
  160. package/dist/src/contexts/scope/scopeRef.d.ts.map +1 -0
  161. package/dist/src/contexts/scope/scopeRef.js +10 -0
  162. package/dist/src/contexts/scope/scopeRef.js.map +1 -0
  163. package/dist/src/contexts/sidebar/use-sidebar.d.ts +2 -0
  164. package/dist/src/contexts/sidebar/use-sidebar.d.ts.map +1 -0
  165. package/dist/src/contexts/sidebar/use-sidebar.js +2 -0
  166. package/dist/src/contexts/sidebar/use-sidebar.js.map +1 -0
  167. package/dist/src/contexts/theme/ThemeContext.d.ts +21 -0
  168. package/dist/src/contexts/theme/ThemeContext.d.ts.map +1 -0
  169. package/dist/src/contexts/theme/ThemeContext.js +79 -0
  170. package/dist/src/contexts/theme/ThemeContext.js.map +1 -0
  171. package/dist/src/create-app.d.ts +47 -0
  172. package/dist/src/create-app.d.ts.map +1 -0
  173. package/dist/src/create-app.js +242 -0
  174. package/dist/src/create-app.js.map +1 -0
  175. package/dist/src/dashboard/command/CommandDialog.d.ts +2 -0
  176. package/dist/src/dashboard/command/CommandDialog.d.ts.map +1 -0
  177. package/dist/src/dashboard/command/CommandDialog.js +18 -0
  178. package/dist/src/dashboard/command/CommandDialog.js.map +1 -0
  179. package/dist/src/dashboard/command/SearchPanelBody.d.ts +2 -0
  180. package/dist/src/dashboard/command/SearchPanelBody.d.ts.map +1 -0
  181. package/dist/src/dashboard/command/SearchPanelBody.js +178 -0
  182. package/dist/src/dashboard/command/SearchPanelBody.js.map +1 -0
  183. package/dist/src/dashboard/command/SearchPanelHeader.d.ts +2 -0
  184. package/dist/src/dashboard/command/SearchPanelHeader.d.ts.map +1 -0
  185. package/dist/src/dashboard/command/SearchPanelHeader.js +13 -0
  186. package/dist/src/dashboard/command/SearchPanelHeader.js.map +1 -0
  187. package/dist/src/dashboard/command/panels/GeneralPanel.d.ts +9 -0
  188. package/dist/src/dashboard/command/panels/GeneralPanel.d.ts.map +1 -0
  189. package/dist/src/dashboard/command/panels/GeneralPanel.js +12 -0
  190. package/dist/src/dashboard/command/panels/GeneralPanel.js.map +1 -0
  191. package/dist/src/dashboard/command/panels/NavigationPanel.d.ts +2 -0
  192. package/dist/src/dashboard/command/panels/NavigationPanel.d.ts.map +1 -0
  193. package/dist/src/dashboard/command/panels/NavigationPanel.js +74 -0
  194. package/dist/src/dashboard/command/panels/NavigationPanel.js.map +1 -0
  195. package/dist/src/dashboard/command/panels/PlaceholderPanel.d.ts +9 -0
  196. package/dist/src/dashboard/command/panels/PlaceholderPanel.d.ts.map +1 -0
  197. package/dist/src/dashboard/command/panels/PlaceholderPanel.js +12 -0
  198. package/dist/src/dashboard/command/panels/PlaceholderPanel.js.map +1 -0
  199. package/dist/src/dashboard/command/panels/ProfilePanel.d.ts +2 -0
  200. package/dist/src/dashboard/command/panels/ProfilePanel.d.ts.map +1 -0
  201. package/dist/src/dashboard/command/panels/ProfilePanel.js +133 -0
  202. package/dist/src/dashboard/command/panels/ProfilePanel.js.map +1 -0
  203. package/dist/src/dashboard/command/panels/SecurityPanel.d.ts +2 -0
  204. package/dist/src/dashboard/command/panels/SecurityPanel.d.ts.map +1 -0
  205. package/dist/src/dashboard/command/panels/SecurityPanel.js +237 -0
  206. package/dist/src/dashboard/command/panels/SecurityPanel.js.map +1 -0
  207. package/dist/src/dashboard/command/panels/ThemePanel.d.ts +2 -0
  208. package/dist/src/dashboard/command/panels/ThemePanel.d.ts.map +1 -0
  209. package/dist/src/dashboard/command/panels/ThemePanel.js +11 -0
  210. package/dist/src/dashboard/command/panels/ThemePanel.js.map +1 -0
  211. package/dist/src/dashboard/headers/MainHeader.d.ts +16 -0
  212. package/dist/src/dashboard/headers/MainHeader.d.ts.map +1 -0
  213. package/dist/src/dashboard/headers/MainHeader.js +16 -0
  214. package/dist/src/dashboard/headers/MainHeader.js.map +1 -0
  215. package/dist/src/dashboard/headers/MainHeaderDesktop.d.ts +4 -0
  216. package/dist/src/dashboard/headers/MainHeaderDesktop.d.ts.map +1 -0
  217. package/dist/src/dashboard/headers/MainHeaderDesktop.js +120 -0
  218. package/dist/src/dashboard/headers/MainHeaderDesktop.js.map +1 -0
  219. package/dist/src/dashboard/headers/MainHeaderMobile.d.ts +4 -0
  220. package/dist/src/dashboard/headers/MainHeaderMobile.d.ts.map +1 -0
  221. package/dist/src/dashboard/headers/MainHeaderMobile.js +14 -0
  222. package/dist/src/dashboard/headers/MainHeaderMobile.js.map +1 -0
  223. package/dist/src/dashboard/headers/NotificationsPopover.d.ts +2 -0
  224. package/dist/src/dashboard/headers/NotificationsPopover.d.ts.map +1 -0
  225. package/dist/src/dashboard/headers/NotificationsPopover.js +14 -0
  226. package/dist/src/dashboard/headers/NotificationsPopover.js.map +1 -0
  227. package/dist/src/dashboard/headers/ProfilePopover.d.ts +2 -0
  228. package/dist/src/dashboard/headers/ProfilePopover.d.ts.map +1 -0
  229. package/dist/src/dashboard/headers/ProfilePopover.js +83 -0
  230. package/dist/src/dashboard/headers/ProfilePopover.js.map +1 -0
  231. package/dist/src/dashboard/headers/ToolHeader.d.ts +2 -0
  232. package/dist/src/dashboard/headers/ToolHeader.d.ts.map +1 -0
  233. package/dist/src/dashboard/headers/ToolHeader.js +16 -0
  234. package/dist/src/dashboard/headers/ToolHeader.js.map +1 -0
  235. package/dist/src/dashboard/help/HelpPanel.d.ts +3 -0
  236. package/dist/src/dashboard/help/HelpPanel.d.ts.map +1 -0
  237. package/dist/src/dashboard/help/HelpPanel.js +451 -0
  238. package/dist/src/dashboard/help/HelpPanel.js.map +1 -0
  239. package/dist/src/dashboard/index.d.ts +16 -0
  240. package/dist/src/dashboard/index.d.ts.map +1 -0
  241. package/dist/src/dashboard/index.js +16 -0
  242. package/dist/src/dashboard/index.js.map +1 -0
  243. package/dist/src/dashboard/layout/DashboardLayout.d.ts +23 -0
  244. package/dist/src/dashboard/layout/DashboardLayout.d.ts.map +1 -0
  245. package/dist/src/dashboard/layout/DashboardLayout.js +15 -0
  246. package/dist/src/dashboard/layout/DashboardLayout.js.map +1 -0
  247. package/dist/src/dashboard/layout/DashboardSidebarContent.d.ts +2 -0
  248. package/dist/src/dashboard/layout/DashboardSidebarContent.d.ts.map +1 -0
  249. package/dist/src/dashboard/layout/DashboardSidebarContent.js +33 -0
  250. package/dist/src/dashboard/layout/DashboardSidebarContent.js.map +1 -0
  251. package/dist/src/dashboard/layout/SidebarDrawer.d.ts +2 -0
  252. package/dist/src/dashboard/layout/SidebarDrawer.d.ts.map +1 -0
  253. package/dist/src/dashboard/layout/SidebarDrawer.js +33 -0
  254. package/dist/src/dashboard/layout/SidebarDrawer.js.map +1 -0
  255. package/dist/src/dashboard/layout/ToolSidebar.d.ts +9 -0
  256. package/dist/src/dashboard/layout/ToolSidebar.d.ts.map +1 -0
  257. package/dist/src/dashboard/layout/ToolSidebar.js +11 -0
  258. package/dist/src/dashboard/layout/ToolSidebar.js.map +1 -0
  259. package/dist/src/dashboard/navigation/IconRail.d.ts +11 -0
  260. package/dist/src/dashboard/navigation/IconRail.d.ts.map +1 -0
  261. package/dist/src/dashboard/navigation/IconRail.js +47 -0
  262. package/dist/src/dashboard/navigation/IconRail.js.map +1 -0
  263. package/dist/src/dashboard/navigation/MoreToolsPopover.d.ts +2 -0
  264. package/dist/src/dashboard/navigation/MoreToolsPopover.d.ts.map +1 -0
  265. package/dist/src/dashboard/navigation/MoreToolsPopover.js +22 -0
  266. package/dist/src/dashboard/navigation/MoreToolsPopover.js.map +1 -0
  267. package/dist/src/dashboard/navigation/icon-rail.d.ts +8 -0
  268. package/dist/src/dashboard/navigation/icon-rail.d.ts.map +1 -0
  269. package/dist/src/dashboard/navigation/icon-rail.js +36 -0
  270. package/dist/src/dashboard/navigation/icon-rail.js.map +1 -0
  271. package/dist/src/dashboard/navigation/use-active-tool.d.ts +2 -0
  272. package/dist/src/dashboard/navigation/use-active-tool.d.ts.map +1 -0
  273. package/dist/src/dashboard/navigation/use-active-tool.js +41 -0
  274. package/dist/src/dashboard/navigation/use-active-tool.js.map +1 -0
  275. package/dist/src/dashboard/settings/ThemeSettings.d.ts +2 -0
  276. package/dist/src/dashboard/settings/ThemeSettings.d.ts.map +1 -0
  277. package/dist/src/dashboard/settings/ThemeSettings.js +49 -0
  278. package/dist/src/dashboard/settings/ThemeSettings.js.map +1 -0
  279. package/dist/src/guards/SetupGate.d.ts +9 -0
  280. package/dist/src/guards/SetupGate.d.ts.map +1 -0
  281. package/dist/src/guards/SetupGate.js +30 -0
  282. package/dist/src/guards/SetupGate.js.map +1 -0
  283. package/dist/src/guards/UnifiedGuard.d.ts +32 -0
  284. package/dist/src/guards/UnifiedGuard.d.ts.map +1 -0
  285. package/dist/src/guards/UnifiedGuard.js +258 -0
  286. package/dist/src/guards/UnifiedGuard.js.map +1 -0
  287. package/dist/src/guards/index.d.ts +3 -0
  288. package/dist/src/guards/index.d.ts.map +1 -0
  289. package/dist/src/guards/index.js +3 -0
  290. package/dist/src/guards/index.js.map +1 -0
  291. package/dist/src/hooks/index.d.ts +9 -0
  292. package/dist/src/hooks/index.d.ts.map +1 -0
  293. package/dist/src/hooks/index.js +9 -0
  294. package/dist/src/hooks/index.js.map +1 -0
  295. package/dist/src/hooks/useCheckAccess.d.ts +16 -0
  296. package/dist/src/hooks/useCheckAccess.d.ts.map +1 -0
  297. package/dist/src/hooks/useCheckAccess.js +25 -0
  298. package/dist/src/hooks/useCheckAccess.js.map +1 -0
  299. package/dist/src/hooks/useCreateScope.d.ts +42 -0
  300. package/dist/src/hooks/useCreateScope.d.ts.map +1 -0
  301. package/dist/src/hooks/useCreateScope.js +28 -0
  302. package/dist/src/hooks/useCreateScope.js.map +1 -0
  303. package/dist/src/hooks/useInvitations.d.ts +82 -0
  304. package/dist/src/hooks/useInvitations.d.ts.map +1 -0
  305. package/dist/src/hooks/useInvitations.js +39 -0
  306. package/dist/src/hooks/useInvitations.js.map +1 -0
  307. package/dist/src/hooks/useJoinCode.d.ts +52 -0
  308. package/dist/src/hooks/useJoinCode.d.ts.map +1 -0
  309. package/dist/src/hooks/useJoinCode.js +37 -0
  310. package/dist/src/hooks/useJoinCode.js.map +1 -0
  311. package/dist/src/hooks/usePreference.d.ts +20 -0
  312. package/dist/src/hooks/usePreference.d.ts.map +1 -0
  313. package/dist/src/hooks/usePreference.js +132 -0
  314. package/dist/src/hooks/usePreference.js.map +1 -0
  315. package/dist/src/hooks/useScopeList.d.ts +32 -0
  316. package/dist/src/hooks/useScopeList.d.ts.map +1 -0
  317. package/dist/src/hooks/useScopeList.js +24 -0
  318. package/dist/src/hooks/useScopeList.js.map +1 -0
  319. package/dist/src/hooks/useScopeMenuPolicy.d.ts +23 -0
  320. package/dist/src/hooks/useScopeMenuPolicy.d.ts.map +1 -0
  321. package/dist/src/hooks/useScopeMenuPolicy.js +59 -0
  322. package/dist/src/hooks/useScopeMenuPolicy.js.map +1 -0
  323. package/dist/src/hooks/useScopePermissions.d.ts +9 -0
  324. package/dist/src/hooks/useScopePermissions.d.ts.map +1 -0
  325. package/dist/src/hooks/useScopePermissions.js +84 -0
  326. package/dist/src/hooks/useScopePermissions.js.map +1 -0
  327. package/dist/src/lib/api-client.d.ts +27 -0
  328. package/dist/src/lib/api-client.d.ts.map +1 -0
  329. package/dist/src/lib/api-client.js +45 -0
  330. package/dist/src/lib/api-client.js.map +1 -0
  331. package/dist/src/lib/backend-status.d.ts +14 -0
  332. package/dist/src/lib/backend-status.d.ts.map +1 -0
  333. package/dist/src/lib/backend-status.js +27 -0
  334. package/dist/src/lib/backend-status.js.map +1 -0
  335. package/dist/src/lib/config.d.ts +71 -0
  336. package/dist/src/lib/config.d.ts.map +1 -0
  337. package/dist/src/lib/config.js +7 -0
  338. package/dist/src/lib/config.js.map +1 -0
  339. package/dist/src/lib/icon-resolver.d.ts +2 -0
  340. package/dist/src/lib/icon-resolver.d.ts.map +1 -0
  341. package/dist/src/lib/icon-resolver.js +2 -0
  342. package/dist/src/lib/icon-resolver.js.map +1 -0
  343. package/dist/src/lib/index.d.ts +13 -0
  344. package/dist/src/lib/index.d.ts.map +1 -0
  345. package/dist/src/lib/index.js +13 -0
  346. package/dist/src/lib/index.js.map +1 -0
  347. package/dist/src/lib/navigation-tools.d.ts +27 -0
  348. package/dist/src/lib/navigation-tools.d.ts.map +1 -0
  349. package/dist/src/lib/navigation-tools.js +49 -0
  350. package/dist/src/lib/navigation-tools.js.map +1 -0
  351. package/dist/src/lib/onboarding-registry.d.ts +14 -0
  352. package/dist/src/lib/onboarding-registry.d.ts.map +1 -0
  353. package/dist/src/lib/onboarding-registry.js +12 -0
  354. package/dist/src/lib/onboarding-registry.js.map +1 -0
  355. package/dist/src/lib/permissions-store.d.ts +12 -0
  356. package/dist/src/lib/permissions-store.d.ts.map +1 -0
  357. package/dist/src/lib/permissions-store.js +12 -0
  358. package/dist/src/lib/permissions-store.js.map +1 -0
  359. package/dist/src/lib/platform-api.d.ts +3527 -0
  360. package/dist/src/lib/platform-api.d.ts.map +1 -0
  361. package/dist/src/lib/platform-api.js +26 -0
  362. package/dist/src/lib/platform-api.js.map +1 -0
  363. package/dist/src/lib/resolve-redirect.d.ts +36 -0
  364. package/dist/src/lib/resolve-redirect.d.ts.map +1 -0
  365. package/dist/src/lib/resolve-redirect.js +91 -0
  366. package/dist/src/lib/resolve-redirect.js.map +1 -0
  367. package/dist/src/lib/scope-menu-policy.d.ts +13 -0
  368. package/dist/src/lib/scope-menu-policy.d.ts.map +1 -0
  369. package/dist/src/lib/scope-menu-policy.js +15 -0
  370. package/dist/src/lib/scope-menu-policy.js.map +1 -0
  371. package/dist/src/lib/scope-query-keys.d.ts +38 -0
  372. package/dist/src/lib/scope-query-keys.d.ts.map +1 -0
  373. package/dist/src/lib/scope-query-keys.js +35 -0
  374. package/dist/src/lib/scope-query-keys.js.map +1 -0
  375. package/dist/src/lib/scopeLink.d.ts +24 -0
  376. package/dist/src/lib/scopeLink.d.ts.map +1 -0
  377. package/dist/src/lib/scopeLink.js +57 -0
  378. package/dist/src/lib/scopeLink.js.map +1 -0
  379. package/dist/src/lib/tool-api-types.d.ts +40 -0
  380. package/dist/src/lib/tool-api-types.d.ts.map +1 -0
  381. package/dist/src/lib/tool-api-types.js +23 -0
  382. package/dist/src/lib/tool-api-types.js.map +1 -0
  383. package/dist/src/lib/types.d.ts +122 -0
  384. package/dist/src/lib/types.d.ts.map +1 -0
  385. package/dist/src/lib/types.js +47 -0
  386. package/dist/src/lib/types.js.map +1 -0
  387. package/dist/src/lib/withDashboardChrome.d.ts +18 -0
  388. package/dist/src/lib/withDashboardChrome.d.ts.map +1 -0
  389. package/dist/src/lib/withDashboardChrome.js +46 -0
  390. package/dist/src/lib/withDashboardChrome.js.map +1 -0
  391. package/dist/src/onboarding/CreateScopeWizardStep.d.ts +14 -0
  392. package/dist/src/onboarding/CreateScopeWizardStep.d.ts.map +1 -0
  393. package/dist/src/onboarding/CreateScopeWizardStep.js +109 -0
  394. package/dist/src/onboarding/CreateScopeWizardStep.js.map +1 -0
  395. package/dist/src/onboarding/ResolveStep.d.ts +17 -0
  396. package/dist/src/onboarding/ResolveStep.d.ts.map +1 -0
  397. package/dist/src/onboarding/ResolveStep.js +101 -0
  398. package/dist/src/onboarding/ResolveStep.js.map +1 -0
  399. package/dist/src/onboarding/StepProps.d.ts +10 -0
  400. package/dist/src/onboarding/StepProps.d.ts.map +1 -0
  401. package/dist/src/onboarding/StepProps.js +2 -0
  402. package/dist/src/onboarding/StepProps.js.map +1 -0
  403. package/dist/src/onboarding/WizardContext.d.ts +20 -0
  404. package/dist/src/onboarding/WizardContext.d.ts.map +1 -0
  405. package/dist/src/onboarding/WizardContext.js +17 -0
  406. package/dist/src/onboarding/WizardContext.js.map +1 -0
  407. package/dist/src/onboarding/WizardPage.d.ts +18 -0
  408. package/dist/src/onboarding/WizardPage.d.ts.map +1 -0
  409. package/dist/src/onboarding/WizardPage.js +9 -0
  410. package/dist/src/onboarding/WizardPage.js.map +1 -0
  411. package/dist/src/onboarding/WizardShell.d.ts +43 -0
  412. package/dist/src/onboarding/WizardShell.d.ts.map +1 -0
  413. package/dist/src/onboarding/WizardShell.js +162 -0
  414. package/dist/src/onboarding/WizardShell.js.map +1 -0
  415. package/dist/src/onboarding/index.d.ts +11 -0
  416. package/dist/src/onboarding/index.d.ts.map +1 -0
  417. package/dist/src/onboarding/index.js +8 -0
  418. package/dist/src/onboarding/index.js.map +1 -0
  419. package/dist/src/onboarding/sortSteps.d.ts +15 -0
  420. package/dist/src/onboarding/sortSteps.d.ts.map +1 -0
  421. package/dist/src/onboarding/sortSteps.js +93 -0
  422. package/dist/src/onboarding/sortSteps.js.map +1 -0
  423. package/dist/src/onboarding/steps/AddPasskeyStep.d.ts +3 -0
  424. package/dist/src/onboarding/steps/AddPasskeyStep.d.ts.map +1 -0
  425. package/dist/src/onboarding/steps/AddPasskeyStep.js +54 -0
  426. package/dist/src/onboarding/steps/AddPasskeyStep.js.map +1 -0
  427. package/dist/src/onboarding/steps/SetupWizardPage.d.ts +2 -0
  428. package/dist/src/onboarding/steps/SetupWizardPage.d.ts.map +1 -0
  429. package/dist/src/onboarding/steps/SetupWizardPage.js +93 -0
  430. package/dist/src/onboarding/steps/SetupWizardPage.js.map +1 -0
  431. package/dist/src/onboarding/steps/setup-steps.d.ts +6 -0
  432. package/dist/src/onboarding/steps/setup-steps.d.ts.map +1 -0
  433. package/dist/src/onboarding/steps/setup-steps.js +75 -0
  434. package/dist/src/onboarding/steps/setup-steps.js.map +1 -0
  435. package/dist/src/pages/AcceptInvitePage.d.ts +2 -0
  436. package/dist/src/pages/AcceptInvitePage.d.ts.map +1 -0
  437. package/dist/src/pages/AcceptInvitePage.js +103 -0
  438. package/dist/src/pages/AcceptInvitePage.js.map +1 -0
  439. package/dist/src/pages/BackendErrorPage.d.ts +6 -0
  440. package/dist/src/pages/BackendErrorPage.d.ts.map +1 -0
  441. package/dist/src/pages/BackendErrorPage.js +6 -0
  442. package/dist/src/pages/BackendErrorPage.js.map +1 -0
  443. package/dist/src/pages/ContextSelectionPage.d.ts +2 -0
  444. package/dist/src/pages/ContextSelectionPage.d.ts.map +1 -0
  445. package/dist/src/pages/ContextSelectionPage.js +166 -0
  446. package/dist/src/pages/ContextSelectionPage.js.map +1 -0
  447. package/dist/src/pages/DefaultCreateScopePage.d.ts +17 -0
  448. package/dist/src/pages/DefaultCreateScopePage.d.ts.map +1 -0
  449. package/dist/src/pages/DefaultCreateScopePage.js +50 -0
  450. package/dist/src/pages/DefaultCreateScopePage.js.map +1 -0
  451. package/dist/src/pages/ForgotPasswordPage.d.ts +2 -0
  452. package/dist/src/pages/ForgotPasswordPage.d.ts.map +1 -0
  453. package/dist/src/pages/ForgotPasswordPage.js +44 -0
  454. package/dist/src/pages/ForgotPasswordPage.js.map +1 -0
  455. package/dist/src/pages/GetStartedPage.d.ts +6 -0
  456. package/dist/src/pages/GetStartedPage.d.ts.map +1 -0
  457. package/dist/src/pages/GetStartedPage.js +49 -0
  458. package/dist/src/pages/GetStartedPage.js.map +1 -0
  459. package/dist/src/pages/InviteErrorPage.d.ts +2 -0
  460. package/dist/src/pages/InviteErrorPage.d.ts.map +1 -0
  461. package/dist/src/pages/InviteErrorPage.js +42 -0
  462. package/dist/src/pages/InviteErrorPage.js.map +1 -0
  463. package/dist/src/pages/LoginPage.d.ts +2 -0
  464. package/dist/src/pages/LoginPage.d.ts.map +1 -0
  465. package/dist/src/pages/LoginPage.js +63 -0
  466. package/dist/src/pages/LoginPage.js.map +1 -0
  467. package/dist/src/pages/NoAccessPage.d.ts +2 -0
  468. package/dist/src/pages/NoAccessPage.d.ts.map +1 -0
  469. package/dist/src/pages/NoAccessPage.js +35 -0
  470. package/dist/src/pages/NoAccessPage.js.map +1 -0
  471. package/dist/src/pages/NotFoundPage.d.ts +2 -0
  472. package/dist/src/pages/NotFoundPage.d.ts.map +1 -0
  473. package/dist/src/pages/NotFoundPage.js +8 -0
  474. package/dist/src/pages/NotFoundPage.js.map +1 -0
  475. package/dist/src/pages/PostLoginResolver.d.ts +9 -0
  476. package/dist/src/pages/PostLoginResolver.d.ts.map +1 -0
  477. package/dist/src/pages/PostLoginResolver.js +50 -0
  478. package/dist/src/pages/PostLoginResolver.js.map +1 -0
  479. package/dist/src/pages/ProfilePage.d.ts +2 -0
  480. package/dist/src/pages/ProfilePage.d.ts.map +1 -0
  481. package/dist/src/pages/ProfilePage.js +353 -0
  482. package/dist/src/pages/ProfilePage.js.map +1 -0
  483. package/dist/src/pages/ResetPasswordPage.d.ts +2 -0
  484. package/dist/src/pages/ResetPasswordPage.d.ts.map +1 -0
  485. package/dist/src/pages/ResetPasswordPage.js +55 -0
  486. package/dist/src/pages/ResetPasswordPage.js.map +1 -0
  487. package/dist/src/pages/SignupPage.d.ts +2 -0
  488. package/dist/src/pages/SignupPage.d.ts.map +1 -0
  489. package/dist/src/pages/SignupPage.js +54 -0
  490. package/dist/src/pages/SignupPage.js.map +1 -0
  491. package/dist/src/pages/index.d.ts +15 -0
  492. package/dist/src/pages/index.d.ts.map +1 -0
  493. package/dist/src/pages/index.js +15 -0
  494. package/dist/src/pages/index.js.map +1 -0
  495. package/dist/src/platform-surface.d.ts +26 -0
  496. package/dist/src/platform-surface.d.ts.map +1 -0
  497. package/dist/src/platform-surface.js +302 -0
  498. package/dist/src/platform-surface.js.map +1 -0
  499. package/dist/testing/index.d.ts +2 -0
  500. package/dist/testing/index.d.ts.map +1 -0
  501. package/dist/testing/index.js +2 -0
  502. package/dist/testing/index.js.map +1 -0
  503. package/dist/tsconfig.tsbuildinfo +1 -0
  504. package/package.json +119 -0
@@ -0,0 +1,258 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback } from "react";
3
+ import { Navigate, useParams, useLocation } from "@tanstack/react-router";
4
+ import { scopeHasUrlScopeId, queryScopeType } from "@ydtb/tk-scope/client";
5
+ import { useQuery, useQueryClient } from "@ydtb/tk-scope-query-client";
6
+ import { BrandedLoader } from "@ydtb/tk-scope-ui/components/branded-loader";
7
+ import { toast } from "@ydtb/tk-scope-ui/components/sonner";
8
+ import { useAuth } from "../contexts/auth/AuthContext.js";
9
+ import { AuthStrategyGate } from "../auth/AuthStrategyGate.js";
10
+ import { saveLastVisitedScope } from "../lib/resolve-redirect.js";
11
+ import { useScopeContext } from "../contexts/scope/ScopeContext.js";
12
+ import { useCurrentPermissions } from "../lib/permissions-store.js";
13
+ import { WizardShell } from "../onboarding/WizardShell.js";
14
+ import { useScopePermissions } from "../hooks/useScopePermissions.js";
15
+ import { platformApi, onboardingApi } from "../lib/platform-api.js";
16
+ /**
17
+ * Unified route guard that replaces the older route/auth/scope guard layers
18
+ * with a single declarative pipeline.
19
+ *
20
+ * Pipeline steps:
21
+ * 1. Auth check (session / pin / device / none)
22
+ * 2. Scope check (specific scope type or null)
23
+ * 3. Onboarding check (true / false)
24
+ * 4. Permissions check (auto / none)
25
+ */
26
+ export function UnifiedGuard({ guard, children }) {
27
+ // Step 1: Auth
28
+ if (guard.auth === "none") {
29
+ return _jsx(ScopeStep, { guard: guard, children: children });
30
+ }
31
+ if (guard.auth === "session") {
32
+ return _jsx(SessionAuthStep, { guard: guard, children: children });
33
+ }
34
+ // pin / device / other strategies — delegate to AuthStrategyGate
35
+ return (_jsx(AuthStrategyGate, { strategy: guard.auth, children: _jsx(ScopeStep, { guard: guard, children: children }) }));
36
+ }
37
+ // ---------------------------------------------------------------------------
38
+ // Step 1a: Session auth
39
+ // ---------------------------------------------------------------------------
40
+ function SessionAuthStep({ guard, children }) {
41
+ const { session, isPending } = useAuth();
42
+ if (isPending) {
43
+ return _jsx(BrandedLoader, {});
44
+ }
45
+ if (!session) {
46
+ return _jsx(Navigate, { to: "/login" });
47
+ }
48
+ return _jsx(ScopeStep, { guard: guard, children: children });
49
+ }
50
+ // ---------------------------------------------------------------------------
51
+ // Step 2: Scope check
52
+ // ---------------------------------------------------------------------------
53
+ function ScopeStep({ guard, children }) {
54
+ if (guard.scope === null) {
55
+ return _jsx(PostScopeSteps, { guard: guard, children: children });
56
+ }
57
+ return _jsx(GenericScopeStep, { guard: guard, children: children });
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // Generic scope step — handles any configured scope type
61
+ // ---------------------------------------------------------------------------
62
+ function GenericScopeStep({ guard, children }) {
63
+ const params = useParams({ strict: false });
64
+ const scopeId = params.scopeId;
65
+ const scopeType = guard.scope;
66
+ const hasUrlScopeId = scopeHasUrlScopeId(scopeType);
67
+ if (hasUrlScopeId && !scopeId) {
68
+ return _jsx(Navigate, { to: "/select-context" });
69
+ }
70
+ // Singleton/root scopes have no scopeId param — use a separate access check
71
+ if (!scopeId) {
72
+ return _jsx(SingletonScopeAccessStep, { guard: guard, children: children });
73
+ }
74
+ return (_jsx(ScopeIdStep, { guard: guard, scopeId: scopeId, scopeType: scopeType, children: children }));
75
+ }
76
+ // ---------------------------------------------------------------------------
77
+ // Scope ID step — validates scopeId against the loaded scope entity
78
+ // ---------------------------------------------------------------------------
79
+ function ScopeIdStep({ guard, scopeId, scopeType, children, }) {
80
+ const { entity, isPending } = useScopeContext();
81
+ if (isPending) {
82
+ return _jsx(BrandedLoader, {});
83
+ }
84
+ if (entity && entity.id === scopeId) {
85
+ saveLastVisitedScope(scopeId, scopeType);
86
+ return _jsx(PostScopeSteps, { guard: guard, children: children });
87
+ }
88
+ toast.error(`You do not have access to this ${scopeType}.`);
89
+ return _jsx(Navigate, { to: "/select-context" });
90
+ }
91
+ // ---------------------------------------------------------------------------
92
+ // Singleton access step — binary access check for scopes without a URL scopeId
93
+ // ---------------------------------------------------------------------------
94
+ function SingletonScopeAccessStep({ guard, children, }) {
95
+ // SystemProvider isn't available at this point in the component tree
96
+ // (it's inside the shell layout, not above the guard).
97
+ const { data, isPending } = useQuery(platformApi.me.queryOptions());
98
+ if (isPending) {
99
+ return _jsx(BrandedLoader, {});
100
+ }
101
+ if (data?.hasAccess !== true) {
102
+ return _jsx(Navigate, { to: "/dashboard" });
103
+ }
104
+ return _jsx(PostScopeSteps, { guard: guard, children: children });
105
+ }
106
+ // ---------------------------------------------------------------------------
107
+ // Post-scope steps: onboarding → permissions → children
108
+ // ---------------------------------------------------------------------------
109
+ function PostScopeSteps({ guard, children }) {
110
+ // Resolve permissions immediately after scope validates.
111
+ // This fires the checkAccess + permissions.resolve queries so
112
+ // that downstream steps (onboarding, permission gate) have
113
+ // permissions loaded by the time they need them.
114
+ // Only runs for scoped guards — null-scope guards (authenticated shell) skip this.
115
+ useScopePermissions({
116
+ enabled: guard.scope !== null,
117
+ scope: guard.scope,
118
+ });
119
+ if (guard.onboarding) {
120
+ return _jsx(OnboardingStep, { guard: guard, children: children });
121
+ }
122
+ if (guard.permissions === "auto") {
123
+ return _jsx(PermissionsStep, { scope: guard.scope, children: children });
124
+ }
125
+ return _jsx(_Fragment, { children: children });
126
+ }
127
+ // ---------------------------------------------------------------------------
128
+ // Step 3: Onboarding check (renders wizard inline instead of redirecting)
129
+ // ---------------------------------------------------------------------------
130
+ function OnboardingStep({ guard, children }) {
131
+ if (!guard.scope) {
132
+ throw new Error("OnboardingStep requires a scoped guard");
133
+ }
134
+ const params = useParams({ strict: false });
135
+ const queryClient = useQueryClient();
136
+ const scope = guard.scope;
137
+ const hasUrlScopeId = scopeHasUrlScopeId(scope);
138
+ // Singleton scopes (no $scopeId in URL) use the scope type as their entity ID
139
+ // (set by root-setup.ts: scopeId defaults to rootScopeType)
140
+ const scopeId = hasUrlScopeId ? (params.scopeId ?? "") : scope;
141
+ const { data, isPending } = useQuery(onboardingApi.checkStatus.queryOptions({
142
+ input: { scope, scopeId },
143
+ enabled: !hasUrlScopeId || !!params.scopeId,
144
+ staleTime: 5 * 60 * 1000,
145
+ }));
146
+ const handleOnboardingComplete = useCallback(() => {
147
+ queryClient.invalidateQueries({
148
+ queryKey: onboardingApi.checkStatus.queryOptions({
149
+ input: { scope, scopeId },
150
+ }).queryKey,
151
+ });
152
+ }, [queryClient, scope, scopeId]);
153
+ if (isPending) {
154
+ return _jsx(BrandedLoader, {});
155
+ }
156
+ // If onboarding is complete (or we couldn't check), continue
157
+ if (data?.completed !== false) {
158
+ if (guard.permissions === "auto") {
159
+ return _jsx(PermissionsStep, { scope: guard.scope, children: children });
160
+ }
161
+ return _jsx(_Fragment, { children: children });
162
+ }
163
+ // Render the onboarding wizard inline
164
+ return _jsx(WizardShell, { scope: scope, scopeId: scopeId, onComplete: handleOnboardingComplete });
165
+ }
166
+ /**
167
+ * Tool-level onboarding gate. Checks whether a specific tool's onboarding
168
+ * steps are complete and renders the wizard inline if not.
169
+ *
170
+ * Not yet wired into any route — defined and exported for future use.
171
+ */
172
+ export function ToolOnboardingStep({ scope, scopeId, toolId, children }) {
173
+ const queryClient = useQueryClient();
174
+ const { data, isPending } = useQuery(onboardingApi.checkToolStatus.queryOptions({
175
+ input: { scope, scopeId, toolId },
176
+ enabled: !!scopeId && !!toolId,
177
+ staleTime: 5 * 60 * 1000,
178
+ }));
179
+ const handleOnboardingComplete = useCallback(() => {
180
+ queryClient.invalidateQueries({
181
+ queryKey: onboardingApi.checkToolStatus.queryOptions({
182
+ input: { scope, scopeId, toolId },
183
+ }).queryKey,
184
+ });
185
+ }, [queryClient, scope, scopeId, toolId]);
186
+ if (isPending) {
187
+ return _jsx(BrandedLoader, {});
188
+ }
189
+ if (data?.completed !== false) {
190
+ return _jsx(_Fragment, { children: children });
191
+ }
192
+ return (_jsx(WizardShell, { scope: scope, scopeId: scopeId, toolId: toolId, onComplete: handleOnboardingComplete }));
193
+ }
194
+ // ---------------------------------------------------------------------------
195
+ // Step 4: Permission check (scope-aware)
196
+ // ---------------------------------------------------------------------------
197
+ /**
198
+ * Extract toolId from pathname based on scope URL prefix pattern.
199
+ *
200
+ * Uses the scope config's urlPrefix to determine where toolId is located:
201
+ * - Scopes with $scopeId (e.g., '/w/$scopeId'): toolId is at index 2 (after prefix and scopeId)
202
+ * - Scopes without $scopeId (e.g., '/s'): toolId is at index 1 (after prefix)
203
+ *
204
+ * Returns empty string for routes that aren't tool routes (e.g., child scope
205
+ * list pages like /companys). Only segments matching the scope's `includes`
206
+ * list are treated as tool routes subject to {toolId}.view permission checks.
207
+ */
208
+ function extractToolId(pathname, scope) {
209
+ const segments = pathname.split("/").filter(Boolean);
210
+ if (!scope) {
211
+ return segments[segments.length - 1] || "";
212
+ }
213
+ const config = queryScopeType(scope);
214
+ const urlPrefix = config?.urlPrefix;
215
+ if (!urlPrefix) {
216
+ return segments[segments.length - 1] || "";
217
+ }
218
+ let segment;
219
+ if (urlPrefix.includes("$scopeId")) {
220
+ segment = segments[2] || "";
221
+ }
222
+ else {
223
+ segment = segments[1] || "";
224
+ }
225
+ // Only return the segment if it's a registered tool for this scope.
226
+ // Non-tool routes (child scope pages, create pages, etc.) should not
227
+ // be subject to {toolId}.view permission checks.
228
+ if (segment && config?.includes.includes(segment)) {
229
+ return segment;
230
+ }
231
+ return "";
232
+ }
233
+ function PermissionsStep({ scope, children }) {
234
+ const location = useLocation();
235
+ return (_jsx(ScopePermissionsCheck, { scope: scope, pathname: location.pathname, children: children }));
236
+ }
237
+ function ScopePermissionsCheck({ scope, pathname, children, }) {
238
+ const permissions = useCurrentPermissions();
239
+ // Wait for permissions to load before making redirect decisions
240
+ if (!permissions.loaded) {
241
+ return _jsx(BrandedLoader, {});
242
+ }
243
+ const toolId = extractToolId(pathname, scope);
244
+ if (!toolId) {
245
+ return _jsx(_Fragment, { children: children });
246
+ }
247
+ // Check {toolId}.view permission
248
+ const viewPermission = `${toolId}.view`;
249
+ const hasPermission = permissions.effectivePermissions.includes(viewPermission);
250
+ if (hasPermission) {
251
+ return _jsx(_Fragment, { children: children });
252
+ }
253
+ // No permission — redirect to no-access page.
254
+ // NavigationProvider isn't available at this point in the component tree,
255
+ // so we can't look up the first permitted route here.
256
+ return _jsx(Navigate, { to: "/no-access" });
257
+ }
258
+ //# sourceMappingURL=UnifiedGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnifiedGuard.js","sourceRoot":"","sources":["../../../src/guards/UnifiedGuard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { UnifiedGuard } from "./UnifiedGuard.tsx";
2
+ export { SetupGate } from "./SetupGate.tsx";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/guards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { UnifiedGuard } from "./UnifiedGuard.js";
2
+ export { SetupGate } from "./SetupGate.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/guards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAA"}
@@ -0,0 +1,9 @@
1
+ export { useCheckAccess } from "./useCheckAccess.ts";
2
+ export { createScope, checkSlugAvailability } from "./useCreateScope.ts";
3
+ export { getInvitation, listInvitations, acceptInvitation, rejectInvitation, invitationKeys, } from "./useInvitations.ts";
4
+ export { validateJoinCode, redeemJoinCode } from "./useJoinCode.ts";
5
+ export { usePreference } from "./usePreference.ts";
6
+ export { useScopeList } from "./useScopeList.ts";
7
+ export { useScopePermissions } from "./useScopePermissions.ts";
8
+ export { useScopeMenuPolicy } from "./useScopeMenuPolicy.ts";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,9 @@
1
+ export { useCheckAccess } from "./useCheckAccess.js";
2
+ export { createScope, checkSlugAvailability } from "./useCreateScope.js";
3
+ export { getInvitation, listInvitations, acceptInvitation, rejectInvitation, invitationKeys, } from "./useInvitations.js";
4
+ export { validateJoinCode, redeemJoinCode } from "./useJoinCode.js";
5
+ export { usePreference } from "./usePreference.js";
6
+ export { useScopeList } from "./useScopeList.js";
7
+ export { useScopePermissions } from "./useScopePermissions.js";
8
+ export { useScopeMenuPolicy } from "./useScopeMenuPolicy.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Scope access check hook.
3
+ *
4
+ * Wraps scopeApi.get() to extract membership info. The scope extension's
5
+ * get endpoint returns both the scope entity and the user's membership.
6
+ *
7
+ * Used by useChildScopePermissions. (useScopePermissions uses scopeApi.get
8
+ * directly — same underlying call.)
9
+ */
10
+ export declare function useCheckAccess(scopeId: string | null | undefined): {
11
+ hasAccess: boolean;
12
+ memberId: string;
13
+ role: string | undefined;
14
+ isPending: boolean;
15
+ };
16
+ //# sourceMappingURL=useCheckAccess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCheckAccess.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCheckAccess.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;;;;;EAchE"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Scope access check hook.
3
+ *
4
+ * Wraps scopeApi.get() to extract membership info. The scope extension's
5
+ * get endpoint returns both the scope entity and the user's membership.
6
+ *
7
+ * Used by useChildScopePermissions. (useScopePermissions uses scopeApi.get
8
+ * directly — same underlying call.)
9
+ */
10
+ import { useQuery } from "@ydtb/tk-scope-query-client";
11
+ import { scopeApi } from "../lib/platform-api.js";
12
+ export function useCheckAccess(scopeId) {
13
+ const { data, isPending } = useQuery({
14
+ ...scopeApi.get.queryOptions({ input: { scopeId: scopeId } }),
15
+ enabled: !!scopeId,
16
+ });
17
+ const membership = data?.membership;
18
+ return {
19
+ hasAccess: !!membership,
20
+ memberId: membership?.id ?? "",
21
+ role: membership?.role,
22
+ isPending,
23
+ };
24
+ }
25
+ //# sourceMappingURL=useCheckAccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCheckAccess.js","sourceRoot":"","sources":["../../../src/hooks/useCheckAccess.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,MAAM,UAAU,cAAc,CAAC,OAAkC;IAC/D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;QACnC,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAQ,EAAE,EAAE,CAAC;QAC9D,OAAO,EAAE,CAAC,CAAC,OAAO;KACnB,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,IAAI,EAAE,UAAuD,CAAA;IAEhF,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE;QAC9B,IAAI,EAAE,UAAU,EAAE,IAAI;QACtB,SAAS;KACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Scope creation hooks — checkSlug + create.
3
+ *
4
+ * Single source of truth for scope creation logic. Used by
5
+ * CreateScopeDialog and CreateScopeWizardStep.
6
+ */
7
+ /**
8
+ * Check if a slug is available for a scope type.
9
+ * Returns null while not checked, true if available, false if taken.
10
+ */
11
+ export declare function checkSlugAvailability(type: string, slug: string): Promise<boolean>;
12
+ /**
13
+ * Create a new scope entity.
14
+ * Returns the created scope data.
15
+ */
16
+ export declare function createScope(params: {
17
+ type: string;
18
+ name: string;
19
+ slug: string;
20
+ parentScopeId?: string;
21
+ }): Promise<{
22
+ scope: {
23
+ slug: string;
24
+ id: string;
25
+ name: string;
26
+ scope: string;
27
+ parentScope: string | null;
28
+ parentScopeId: string | null;
29
+ logo: string | null;
30
+ metadata: unknown;
31
+ createdAt: Date;
32
+ updatedAt: Date;
33
+ };
34
+ member: {
35
+ id: string;
36
+ createdAt: Date;
37
+ scopeId: string;
38
+ userId: string;
39
+ role: string;
40
+ };
41
+ }>;
42
+ //# sourceMappingURL=useCreateScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreateScope.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCreateScope.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxF;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;;;;;;;;;;;;;;;;;;;;GAEA"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Scope creation hooks — checkSlug + create.
3
+ *
4
+ * Single source of truth for scope creation logic. Used by
5
+ * CreateScopeDialog and CreateScopeWizardStep.
6
+ */
7
+ import { scopeApi } from "../lib/platform-api.js";
8
+ /**
9
+ * Check if a slug is available for a scope type.
10
+ * Returns null while not checked, true if available, false if taken.
11
+ */
12
+ export async function checkSlugAvailability(type, slug) {
13
+ try {
14
+ const result = await scopeApi.$client.checkSlug({ type, slug });
15
+ return result?.available ?? false;
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }
21
+ /**
22
+ * Create a new scope entity.
23
+ * Returns the created scope data.
24
+ */
25
+ export async function createScope(params) {
26
+ return scopeApi.$client.create(params);
27
+ }
28
+ //# sourceMappingURL=useCreateScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCreateScope.js","sourceRoot":"","sources":["../../../src/hooks/useCreateScope.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY,EAAE,IAAY;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/D,OAAQ,MAAkC,EAAE,SAAS,IAAI,KAAK,CAAA;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAKjC;IACC,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Invitation hooks — get, list, accept, reject.
3
+ *
4
+ * Single source of truth for invitation operations.
5
+ * Used by AcceptInvitePage and ProfileScopeSection.
6
+ */
7
+ /**
8
+ * Fetch a single invitation by ID.
9
+ */
10
+ export declare function getInvitation(id: string): Promise<{
11
+ id: string;
12
+ scopeId: string;
13
+ scopeName: string;
14
+ scopeSlug: string;
15
+ inviterEmail: string;
16
+ email: string;
17
+ role: string;
18
+ status: string;
19
+ createdAt: Date;
20
+ }>;
21
+ /**
22
+ * Fetch all pending invitations for the current user.
23
+ */
24
+ export declare function listInvitations(): Promise<{
25
+ invitations: {
26
+ id: string;
27
+ scopeId: string;
28
+ role: string;
29
+ scopeType: string;
30
+ scopeName: string;
31
+ scopeSlug: string;
32
+ scopeLogo: string | null;
33
+ createdAt: Date;
34
+ }[];
35
+ }>;
36
+ /**
37
+ * Accept an invitation.
38
+ * Callers should invalidate scope list and invitation queries on success.
39
+ */
40
+ export declare function acceptInvitation(invitationId: string): Promise<{
41
+ member: {
42
+ id: string;
43
+ };
44
+ alreadyMember: boolean;
45
+ scope?: undefined;
46
+ } | {
47
+ scope: {
48
+ id: string;
49
+ scope: string;
50
+ parentScope: string | null;
51
+ parentScopeId: string | null;
52
+ name: string;
53
+ slug: string;
54
+ logo: string | null;
55
+ metadata: unknown;
56
+ createdAt: Date;
57
+ updatedAt: Date;
58
+ } | undefined;
59
+ member: {
60
+ id: string;
61
+ createdAt: Date;
62
+ scopeId: string;
63
+ userId: string;
64
+ role: string;
65
+ };
66
+ alreadyMember: boolean;
67
+ }>;
68
+ /**
69
+ * Reject an invitation.
70
+ * Callers should invalidate invitation queries on success.
71
+ */
72
+ export declare function rejectInvitation(invitationId: string): Promise<{
73
+ success: boolean;
74
+ }>;
75
+ /** Query key helpers for cache invalidation */
76
+ export declare const invitationKeys: {
77
+ list: () => import("@orpc/tanstack-query").OperationKey<import("@orpc/tanstack-query").OperationType, Record<string, never>>;
78
+ scopeList: () => import("@orpc/tanstack-query").OperationKey<import("@orpc/tanstack-query").OperationType, {
79
+ type?: string | undefined;
80
+ }>;
81
+ };
82
+ //# sourceMappingURL=useInvitations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInvitations.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInvitations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;GAE7C;AAED;;GAEG;AACH,wBAAsB,eAAe;;;;;;;;;;;GAEpC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE1D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM;;GAE1D;AAED,+CAA+C;AAC/C,eAAO,MAAM,cAAc;;;;;CAG1B,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Invitation hooks — get, list, accept, reject.
3
+ *
4
+ * Single source of truth for invitation operations.
5
+ * Used by AcceptInvitePage and ProfileScopeSection.
6
+ */
7
+ import { invitationsApi, scopeApi } from "../lib/platform-api.js";
8
+ /**
9
+ * Fetch a single invitation by ID.
10
+ */
11
+ export async function getInvitation(id) {
12
+ return invitationsApi.$client.get({ id });
13
+ }
14
+ /**
15
+ * Fetch all pending invitations for the current user.
16
+ */
17
+ export async function listInvitations() {
18
+ return invitationsApi.$client.list({});
19
+ }
20
+ /**
21
+ * Accept an invitation.
22
+ * Callers should invalidate scope list and invitation queries on success.
23
+ */
24
+ export async function acceptInvitation(invitationId) {
25
+ return invitationsApi.$client.accept({ invitationId });
26
+ }
27
+ /**
28
+ * Reject an invitation.
29
+ * Callers should invalidate invitation queries on success.
30
+ */
31
+ export async function rejectInvitation(invitationId) {
32
+ return invitationsApi.$client.reject({ invitationId });
33
+ }
34
+ /** Query key helpers for cache invalidation */
35
+ export const invitationKeys = {
36
+ list: () => invitationsApi.list.key(),
37
+ scopeList: () => scopeApi.list.key(),
38
+ };
39
+ //# sourceMappingURL=useInvitations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInvitations.js","sourceRoot":"","sources":["../../../src/hooks/useInvitations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAU;IAC5C,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAoB;IACzD,OAAO,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAoB;IACzD,OAAO,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;AACxD,CAAC;AAED,+CAA+C;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;IACrC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;CACrC,CAAA"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Join code hooks — validate + redeem.
3
+ *
4
+ * Adapts the scope extension's joinCodes.use endpoint to match the
5
+ * old authClient.scope.joinCode.validate/redeem API shape.
6
+ *
7
+ * Used by JoinScopeDialog.
8
+ */
9
+ interface ValidateResult {
10
+ valid: boolean;
11
+ scope?: {
12
+ id: string;
13
+ name: string;
14
+ logo: string | null;
15
+ } | null;
16
+ error?: string;
17
+ }
18
+ /**
19
+ * Validate a join code. Returns the old-style { valid, scope, error } shape.
20
+ *
21
+ * The scope extension's `use` endpoint throws on invalid codes rather than
22
+ * returning `{ valid: false }`. This function adapts that to the shape
23
+ * JoinScopeDialog expects.
24
+ */
25
+ export declare function validateJoinCode(code: string): Promise<ValidateResult>;
26
+ /**
27
+ * Redeem a join code (join the scope).
28
+ */
29
+ export declare function redeemJoinCode(code: string): Promise<{
30
+ scope: {
31
+ id: string;
32
+ scope: string;
33
+ parentScope: string | null;
34
+ parentScopeId: string | null;
35
+ name: string;
36
+ slug: string;
37
+ logo: string | null;
38
+ metadata: unknown;
39
+ createdAt: Date;
40
+ updatedAt: Date;
41
+ };
42
+ member: {
43
+ id: string;
44
+ scopeId: string;
45
+ userId: string;
46
+ role: string;
47
+ createdAt: Date;
48
+ };
49
+ alreadyMember: boolean;
50
+ }>;
51
+ export {};
52
+ //# sourceMappingURL=useJoinCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useJoinCode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useJoinCode.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,UAAU,cAAc;IACtB,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IAChE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAY5E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;GAEhD"}