@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,137 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect, useRef } from "react";
3
+ import { useNavigate } from "@tanstack/react-router";
4
+ import { useQueryClient } from "@ydtb/tk-scope-query-client";
5
+ import { checkSlugAvailability, createScope } from "../../hooks/useCreateScope.js";
6
+ import { scopeQueryKeys } from "../../lib/scope-query-keys.js";
7
+ import { scopeLink } from "@ydtb/tk-scope/client";
8
+ import { queryScopeType } from "@ydtb/tk-scope/client";
9
+ import { Loader2, Check, X } from "lucide-react";
10
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@ydtb/tk-scope-ui/components/dialog";
11
+ import { useScopeLabel } from "@ydtb/tk-scope/client";
12
+ import { slugify } from "@ydtb/tk-scope-lib/slug";
13
+ export function CreateScopeDialog({ scopeType, parentScopeId, open, onOpenChange, }) {
14
+ const navigate = useNavigate();
15
+ const queryClient = useQueryClient();
16
+ const label = useScopeLabel(scopeType);
17
+ const [name, setName] = useState("");
18
+ const [slug, setSlug] = useState("");
19
+ const [slugEdited, setSlugEdited] = useState(false);
20
+ const [submitting, setSubmitting] = useState(false);
21
+ const [error, setError] = useState(null);
22
+ const [slugStatus, setSlugStatus] = useState("idle");
23
+ const checkTimerRef = useRef(null);
24
+ const lastCheckedRef = useRef("");
25
+ useEffect(() => {
26
+ if (open) {
27
+ setName("");
28
+ setSlug("");
29
+ setSlugEdited(false);
30
+ setSubmitting(false);
31
+ setError(null);
32
+ setSlugStatus("idle");
33
+ lastCheckedRef.current = "";
34
+ }
35
+ }, [open]);
36
+ useEffect(() => {
37
+ if (!slugEdited) {
38
+ setSlug(slugify(name));
39
+ }
40
+ }, [name, slugEdited]);
41
+ useEffect(() => {
42
+ if (slug.length < 3) {
43
+ setSlugStatus("idle");
44
+ lastCheckedRef.current = "";
45
+ return;
46
+ }
47
+ if (slug === lastCheckedRef.current)
48
+ return;
49
+ setSlugStatus("checking");
50
+ if (checkTimerRef.current)
51
+ clearTimeout(checkTimerRef.current);
52
+ checkTimerRef.current = setTimeout(async () => {
53
+ try {
54
+ const available = await checkSlugAvailability(scopeType, slug);
55
+ lastCheckedRef.current = slug;
56
+ setSlugStatus(available ? "available" : "taken");
57
+ }
58
+ catch {
59
+ lastCheckedRef.current = slug;
60
+ setSlugStatus("taken");
61
+ }
62
+ }, 400);
63
+ return () => {
64
+ if (checkTimerRef.current)
65
+ clearTimeout(checkTimerRef.current);
66
+ };
67
+ }, [slug, scopeType]);
68
+ const isSlugTaken = slugStatus === "taken";
69
+ const handleSlugChange = (value) => {
70
+ setSlugEdited(true);
71
+ setSlug(value
72
+ .toLowerCase()
73
+ .replace(/[^a-z0-9-]+/g, "-")
74
+ .replace(/^-|-$/g, "")
75
+ .slice(0, 50));
76
+ };
77
+ const isValid = name.trim().length > 0 && slug.length >= 3 && slug.length <= 50;
78
+ const handleSubmit = async (e) => {
79
+ e.preventDefault();
80
+ if (!isValid || submitting || isSlugTaken)
81
+ return;
82
+ setSubmitting(true);
83
+ setError(null);
84
+ try {
85
+ const result = await createScope({
86
+ type: scopeType,
87
+ name: name.trim(),
88
+ slug,
89
+ parentScopeId,
90
+ });
91
+ await queryClient.refetchQueries({ queryKey: scopeQueryKeys.list(scopeType) });
92
+ await queryClient.invalidateQueries();
93
+ onOpenChange(false);
94
+ // Navigate to the new scope's default route
95
+ const config = queryScopeType(scopeType);
96
+ const defaultRoute = config?.defaultRoute ?? "/dashboard";
97
+ const newScopeId = result?.scope?.id;
98
+ if (newScopeId) {
99
+ navigate({
100
+ to: scopeLink(defaultRoute, { scope: scopeType, scopeId: newScopeId }),
101
+ });
102
+ }
103
+ else {
104
+ navigate({ to: "/dashboard" });
105
+ }
106
+ }
107
+ catch (err) {
108
+ const message = err instanceof Error ? err.message : `Failed to create ${label.singular.toLowerCase()}`;
109
+ if (message.toLowerCase().includes("slug") &&
110
+ (message.toLowerCase().includes("taken") ||
111
+ message.toLowerCase().includes("exists") ||
112
+ message.toLowerCase().includes("unique") ||
113
+ message.toLowerCase().includes("duplicate"))) {
114
+ setError("This slug is already taken. Please choose a different one.");
115
+ }
116
+ else {
117
+ setError(message);
118
+ }
119
+ }
120
+ finally {
121
+ setSubmitting(false);
122
+ }
123
+ };
124
+ return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "sm:max-w-md", children: [_jsxs(DialogHeader, { children: [_jsxs(DialogTitle, { children: ["Create ", label.singular === label.plural ? label.singular : `a ${label.singular}`] }), _jsxs(DialogDescription, { children: ["Set up a new ", label.singular.toLowerCase(), "."] })] }), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-4 py-1", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsxs("label", { htmlFor: "scope-name", className: "text-sm font-medium", style: { color: "var(--color-foreground)" }, children: [label.singular, " Name"] }), _jsx("input", { id: "scope-name", type: "text", required: true, autoFocus: true, value: name, onChange: (e) => setName(e.target.value), placeholder: `My ${label.singular}`, className: "w-full h-9 px-3 rounded-md border text-sm bg-transparent outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary transition-colors", style: {
125
+ borderColor: "var(--color-border)",
126
+ color: "var(--color-foreground)",
127
+ } })] }), _jsxs("div", { className: "space-y-1.5", children: [_jsx("label", { htmlFor: "scope-slug", className: "text-sm font-medium", style: { color: "var(--color-foreground)" }, children: "Slug" }), _jsx("input", { id: "scope-slug", type: "text", required: true, value: slug, onChange: (e) => handleSlugChange(e.target.value), placeholder: `my-${label.singular.toLowerCase()}`, className: `w-full h-9 px-3 rounded-md border text-sm bg-transparent outline-none font-mono focus:ring-2 focus:ring-primary/30 focus:border-primary transition-colors ${error || isSlugTaken
128
+ ? "border-destructive focus:ring-destructive/30 focus:border-destructive"
129
+ : ""}`, style: {
130
+ borderColor: error || isSlugTaken ? undefined : "var(--color-border)",
131
+ color: "var(--color-foreground)",
132
+ } }), error && _jsx("p", { className: "text-xs text-destructive", children: error }), !error && isSlugTaken && (_jsxs("p", { className: "text-xs text-destructive inline-flex items-center gap-1", children: [_jsx(X, { className: "h-3 w-3" }), "This slug is already taken."] })), !error && slugStatus === "checking" && (_jsxs("p", { className: "text-xs inline-flex items-center gap-1", style: { color: "var(--color-muted-foreground)" }, children: [_jsx(Loader2, { className: "h-3 w-3 animate-spin" }), "Checking availability..."] })), !error && slugStatus === "available" && (_jsxs("p", { className: "text-xs inline-flex items-center gap-1 text-emerald-600", children: [_jsx(Check, { className: "h-3 w-3" }), "Slug is available."] })), !error && slugStatus === "idle" && slug.length > 0 && slug.length < 3 && (_jsx("p", { className: "text-xs", style: { color: "var(--color-muted-foreground)" }, children: "Slug must be at least 3 characters." }))] }), _jsxs(DialogFooter, { children: [_jsx("button", { type: "button", onClick: () => onOpenChange(false), disabled: submitting, className: "border rounded-lg h-9 px-4 text-sm font-medium transition-colors hover:bg-muted disabled:opacity-50", style: {
133
+ borderColor: "var(--color-border)",
134
+ color: "var(--color-foreground)",
135
+ }, children: "Cancel" }), _jsxs("button", { type: "submit", disabled: !isValid || submitting || isSlugTaken, className: "bg-primary text-primary-foreground rounded-lg h-9 px-4 text-sm font-medium transition-colors hover:bg-primary/90 disabled:opacity-50 inline-flex items-center gap-2", children: [submitting && _jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Create"] })] })] })] }) }));
136
+ }
137
+ //# sourceMappingURL=CreateScopeDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateScopeDialog.js","sourceRoot":"","sources":["../../../../src/components/scope/CreateScopeDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface JoinScopeDialogProps {
2
+ scopeType: string;
3
+ open: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ }
6
+ export declare function JoinScopeDialog({ scopeType, open, onOpenChange }: JoinScopeDialogProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=JoinScopeDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JoinScopeDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/scope/JoinScopeDialog.tsx"],"names":[],"mappings":"AAqCA,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,oBAAoB,2CA2NtF"}
@@ -0,0 +1,115 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect } from "react";
3
+ import { useNavigate } from "@tanstack/react-router";
4
+ import { validateJoinCode, redeemJoinCode } from "../../hooks/useJoinCode.js";
5
+ import { Loader2, ArrowLeft } from "lucide-react";
6
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@ydtb/tk-scope-ui/components/dialog";
7
+ import { useScopeLabel } from "@ydtb/tk-scope/client";
8
+ const avatarColors = [
9
+ "bg-indigo-600",
10
+ "bg-emerald-600",
11
+ "bg-amber-600",
12
+ "bg-rose-600",
13
+ "bg-violet-600",
14
+ "bg-sky-600",
15
+ ];
16
+ function getColorFromName(name) {
17
+ let hash = 0;
18
+ for (let i = 0; i < name.length; i++) {
19
+ hash = name.charCodeAt(i) + ((hash << 5) - hash);
20
+ }
21
+ return avatarColors[Math.abs(hash) % avatarColors.length] ?? avatarColors[0];
22
+ }
23
+ export function JoinScopeDialog({ scopeType, open, onOpenChange }) {
24
+ const navigate = useNavigate();
25
+ const label = useScopeLabel(scopeType);
26
+ const [step, setStep] = useState(1);
27
+ const [code, setCode] = useState("");
28
+ const [validating, setValidating] = useState(false);
29
+ const [joining, setJoining] = useState(false);
30
+ const [error, setError] = useState(null);
31
+ const [validatedScope, setValidatedScope] = useState(null);
32
+ useEffect(() => {
33
+ if (open) {
34
+ setStep(1);
35
+ setCode("");
36
+ setValidating(false);
37
+ setJoining(false);
38
+ setError(null);
39
+ setValidatedScope(null);
40
+ }
41
+ }, [open]);
42
+ const handleCodeChange = (value) => {
43
+ const cleaned = value
44
+ .toUpperCase()
45
+ .replace(/[^A-Z0-9]/g, "")
46
+ .slice(0, 9);
47
+ setCode(cleaned);
48
+ setError(null);
49
+ };
50
+ const handleValidate = async () => {
51
+ if (code.length !== 9 || validating)
52
+ return;
53
+ setValidating(true);
54
+ setError(null);
55
+ try {
56
+ const data = await validateJoinCode(code);
57
+ if (data.valid && data.scope) {
58
+ setValidatedScope(data.scope);
59
+ setStep(2);
60
+ }
61
+ else {
62
+ setError(data.error ?? "Invalid or expired code");
63
+ }
64
+ }
65
+ catch {
66
+ setError("Invalid or expired code");
67
+ }
68
+ finally {
69
+ setValidating(false);
70
+ }
71
+ };
72
+ const handleJoin = async () => {
73
+ if (!validatedScope || joining)
74
+ return;
75
+ setJoining(true);
76
+ try {
77
+ await redeemJoinCode(code);
78
+ onOpenChange(false);
79
+ navigate({ to: "/dashboard" });
80
+ }
81
+ catch {
82
+ setError(`Failed to join ${label.singular.toLowerCase()}. Please try again.`);
83
+ }
84
+ finally {
85
+ setJoining(false);
86
+ }
87
+ };
88
+ const handleBack = () => {
89
+ setStep(1);
90
+ setError(null);
91
+ };
92
+ const handleKeyDown = (e) => {
93
+ if (e.key === "Enter" && code.length === 9 && !validating) {
94
+ e.preventDefault();
95
+ handleValidate();
96
+ }
97
+ };
98
+ const articleLabel = label.singular.toLowerCase();
99
+ return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "sm:max-w-md", children: [_jsxs(DialogHeader, { children: [_jsxs(DialogTitle, { children: ["Join ", label.singular === label.plural ? label.singular : `a ${label.singular}`] }), _jsx(DialogDescription, { children: step === 1
100
+ ? `Enter the join code provided by the ${articleLabel}.`
101
+ : `Review the ${articleLabel} before joining.` })] }), step === 1 ? (_jsxs("div", { className: "space-y-4 py-1", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx("label", { htmlFor: "join-code", className: "text-sm font-medium", style: { color: "var(--color-foreground)" }, children: "Enter your join code" }), _jsx("input", { id: "join-code", type: "text", value: code, onChange: (e) => handleCodeChange(e.target.value), onKeyDown: handleKeyDown, placeholder: "ABC123DEF", autoFocus: true, className: `w-full h-11 px-3 rounded-md border text-sm bg-transparent outline-none font-mono text-center tracking-[0.25em] uppercase focus:ring-2 focus:ring-primary/30 focus:border-primary transition-colors ${error
102
+ ? "border-destructive focus:ring-destructive/30 focus:border-destructive"
103
+ : ""}`, style: {
104
+ borderColor: error ? undefined : "var(--color-border)",
105
+ color: "var(--color-foreground)",
106
+ fontSize: "1rem",
107
+ } }), error && _jsx("p", { className: "text-xs text-destructive", children: error })] }), _jsxs(DialogFooter, { children: [_jsx("button", { type: "button", onClick: () => onOpenChange(false), disabled: validating, className: "border rounded-lg h-9 px-4 text-sm font-medium transition-colors hover:bg-muted disabled:opacity-50", style: {
108
+ borderColor: "var(--color-border)",
109
+ color: "var(--color-foreground)",
110
+ }, children: "Cancel" }), _jsxs("button", { type: "button", onClick: handleValidate, disabled: code.length !== 9 || validating, className: "bg-primary text-primary-foreground rounded-lg h-9 px-4 text-sm font-medium transition-colors hover:bg-primary/90 disabled:opacity-50 inline-flex items-center gap-2", children: [validating && _jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Validate"] })] })] })) : (_jsxs("div", { className: "space-y-4 py-1", children: [validatedScope && (_jsxs("div", { className: "flex items-center gap-3 rounded-lg border p-4", style: { borderColor: "var(--color-border)" }, children: [validatedScope.logo ? (_jsx("img", { src: validatedScope.logo, alt: validatedScope.name, className: "w-12 h-12 rounded-lg object-cover shrink-0" })) : (_jsx("div", { className: `flex items-center justify-center w-12 h-12 rounded-lg text-white text-lg font-bold shrink-0 ${getColorFromName(validatedScope.name)}`, children: validatedScope.name.charAt(0).toUpperCase() })), _jsx("div", { className: "min-w-0", children: _jsx("p", { className: "text-sm font-semibold truncate", style: { color: "var(--color-foreground)" }, children: validatedScope.name }) })] })), _jsxs("p", { className: "text-sm", style: { color: "var(--color-foreground)" }, children: [_jsx("strong", { children: validatedScope?.name }), " will have full access to this scope. You will be able to disconnect at any time."] }), error && _jsx("p", { className: "text-xs text-destructive", children: error }), _jsxs(DialogFooter, { children: [_jsxs("button", { type: "button", onClick: handleBack, disabled: joining, className: "border rounded-lg h-9 px-4 text-sm font-medium transition-colors hover:bg-muted disabled:opacity-50 inline-flex items-center gap-1.5", style: {
111
+ borderColor: "var(--color-border)",
112
+ color: "var(--color-foreground)",
113
+ }, children: [_jsx(ArrowLeft, { className: "h-3.5 w-3.5" }), "Back"] }), _jsxs("button", { type: "button", onClick: handleJoin, disabled: joining, className: "bg-primary text-primary-foreground rounded-lg h-9 px-4 text-sm font-medium transition-colors hover:bg-primary/90 disabled:opacity-50 inline-flex items-center gap-2", children: [joining && _jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Join"] })] })] }))] }) }));
114
+ }
115
+ //# sourceMappingURL=JoinScopeDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JoinScopeDialog.js","sourceRoot":"","sources":["../../../../src/components/scope/JoinScopeDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface ProfileScopeSectionProps {
2
+ scopeType: string;
3
+ onClose: () => void;
4
+ }
5
+ /**
6
+ * Generic profile section for any scope type.
7
+ * Shows user memberships, pending invitations, and switch/create/join actions.
8
+ * Registered via the 'profile:sections' filter by each tier that supports multiple instances.
9
+ */
10
+ export declare function ProfileScopeSection({ scopeType, onClose }: ProfileScopeSectionProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=ProfileScopeSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileScopeSection.d.ts","sourceRoot":"","sources":["../../../../src/components/scope/ProfileScopeSection.tsx"],"names":[],"mappings":"AAgCA,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,wBAAwB,2CAgKnF"}
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState, lazy, Suspense } from "react";
3
+ import { ArrowLeftRight, UserPlus, Plus, Mail, Check, X } from "lucide-react";
4
+ import { useQuery, useQueryClient } from "@ydtb/tk-scope-query-client";
5
+ import { useScopeList } from "../../hooks/useScopeList.js";
6
+ import { listInvitations, acceptInvitation, rejectInvitation, invitationKeys, } from "../../hooks/useInvitations.js";
7
+ import { scopeQueryKeys } from "../../lib/scope-query-keys.js";
8
+ import { useScopeLabel } from "@ydtb/tk-scope/client";
9
+ import { withIndefiniteArticle } from "@ydtb/tk-scope-lib/string";
10
+ const SwitchScopeDialog = lazy(() => import("./SwitchScopeDialog.js").then((m) => ({ default: m.SwitchScopeDialog })));
11
+ const CreateScopeDialog = lazy(() => import("./CreateScopeDialog.js").then((m) => ({ default: m.CreateScopeDialog })));
12
+ const JoinScopeDialog = lazy(() => import("./JoinScopeDialog.js").then((m) => ({ default: m.JoinScopeDialog })));
13
+ /**
14
+ * Generic profile section for any scope type.
15
+ * Shows user memberships, pending invitations, and switch/create/join actions.
16
+ * Registered via the 'profile:sections' filter by each tier that supports multiple instances.
17
+ */
18
+ export function ProfileScopeSection({ scopeType, onClose }) {
19
+ const [switchDialogOpen, setSwitchDialogOpen] = useState(false);
20
+ const [createDialogOpen, setCreateDialogOpen] = useState(false);
21
+ const [joinDialogOpen, setJoinDialogOpen] = useState(false);
22
+ const queryClient = useQueryClient();
23
+ const label = useScopeLabel(scopeType);
24
+ const { scopes } = useScopeList({ type: scopeType });
25
+ const { data: pendingInvitations = [] } = useQuery({
26
+ queryKey: scopeQueryKeys.invitationsByType(scopeType),
27
+ queryFn: async () => {
28
+ const result = (await listInvitations());
29
+ const all = result?.invitations ?? [];
30
+ return all.filter((inv) => inv.scopeType === scopeType);
31
+ },
32
+ });
33
+ const handleAcceptInvitation = async (invitationId) => {
34
+ await acceptInvitation(invitationId);
35
+ queryClient.invalidateQueries({ queryKey: invitationKeys.scopeList() });
36
+ queryClient.invalidateQueries({
37
+ queryKey: scopeQueryKeys.invitationsByType(scopeType),
38
+ });
39
+ onClose();
40
+ };
41
+ const handleRejectInvitation = async (invitationId) => {
42
+ await rejectInvitation(invitationId);
43
+ queryClient.invalidateQueries({
44
+ queryKey: scopeQueryKeys.invitationsByType(scopeType),
45
+ });
46
+ };
47
+ const articleLabel = withIndefiniteArticle(label.singular);
48
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "py-1.5", style: { borderTop: "1px solid var(--color-border, #e4e4e7)" }, children: scopes.length > 0 ? (_jsxs("button", { className: "flex items-center gap-2.5 w-full px-4 py-2 text-sm transition-colors hover:bg-muted/50", style: { color: "var(--color-foreground, #09090b)" }, onClick: () => {
49
+ onClose();
50
+ setSwitchDialogOpen(true);
51
+ }, children: [_jsx(ArrowLeftRight, { className: "h-4 w-4", style: { color: "var(--color-muted-foreground, #71717a)" } }), "Switch ", label.singular] })) : pendingInvitations.length > 0 ? (_jsxs("div", { className: "px-4 py-2", children: [_jsx("div", { className: "text-xs font-medium mb-1.5", style: { color: "var(--color-muted-foreground, #71717a)" }, children: "Pending Invitations" }), pendingInvitations.map((inv) => (_jsxs("div", { className: "flex items-center justify-between gap-2 py-1.5", children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0", children: [_jsx(Mail, { className: "h-4 w-4 shrink-0", style: {
52
+ color: "var(--color-muted-foreground, #71717a)",
53
+ } }), _jsx("span", { className: "text-sm truncate", style: { color: "var(--color-foreground, #09090b)" }, children: inv.scopeName })] }), _jsxs("div", { className: "flex items-center gap-1 shrink-0", children: [_jsx("button", { className: "p-1 rounded hover:bg-muted/50 transition-colors", title: "Accept invitation", onClick: () => handleAcceptInvitation(inv.id), children: _jsx(Check, { className: "h-4 w-4", style: { color: "var(--color-primary, #22c55e)" } }) }), _jsx("button", { className: "p-1 rounded hover:bg-muted/50 transition-colors", title: "Reject invitation", onClick: () => handleRejectInvitation(inv.id), children: _jsx(X, { className: "h-4 w-4", style: {
54
+ color: "var(--color-destructive, #ef4444)",
55
+ } }) })] })] }, inv.id)))] })) : (_jsxs(_Fragment, { children: [_jsxs("button", { className: "flex items-center gap-2.5 w-full px-4 py-2 text-sm transition-colors hover:bg-muted/50", style: { color: "var(--color-foreground, #09090b)" }, onClick: () => {
56
+ onClose();
57
+ setJoinDialogOpen(true);
58
+ }, children: [_jsx(UserPlus, { className: "h-4 w-4", style: { color: "var(--color-muted-foreground, #71717a)" } }), "Join ", articleLabel] }), _jsxs("button", { className: "flex items-center gap-2.5 w-full px-4 py-2 text-sm transition-colors hover:bg-muted/50", style: { color: "var(--color-foreground, #09090b)" }, onClick: () => {
59
+ onClose();
60
+ setCreateDialogOpen(true);
61
+ }, children: [_jsx(Plus, { className: "h-4 w-4", style: { color: "var(--color-muted-foreground, #71717a)" } }), "Create ", articleLabel] })] })) }), _jsxs(Suspense, { fallback: null, children: [switchDialogOpen && (_jsx(SwitchScopeDialog, { scopeType: scopeType, open: switchDialogOpen, onOpenChange: setSwitchDialogOpen })), createDialogOpen && (_jsx(CreateScopeDialog, { scopeType: scopeType, open: createDialogOpen, onOpenChange: setCreateDialogOpen })), joinDialogOpen && (_jsx(JoinScopeDialog, { scopeType: scopeType, open: joinDialogOpen, onOpenChange: setJoinDialogOpen }))] })] }));
62
+ }
63
+ //# sourceMappingURL=ProfileScopeSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileScopeSection.js","sourceRoot":"","sources":["../../../../src/components/scope/ProfileScopeSection.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ScopeTypeInfo } from "@ydtb/tk-scope/client";
2
+ export interface ScopeSwitcherDialogProps {
3
+ scopeConfig: ScopeTypeInfo;
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ }
7
+ export declare function ScopeSwitcherDialog({ scopeConfig, open, onOpenChange }: ScopeSwitcherDialogProps): import("react/jsx-runtime").JSX.Element;
8
+ export interface ScopeSwitcherPanelProps {
9
+ scopeConfig: ScopeTypeInfo;
10
+ onClose: () => void;
11
+ onNavigate?: () => void;
12
+ }
13
+ export declare function ScopeSwitcherPanel(props: ScopeSwitcherPanelProps): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=ScopeSwitcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeSwitcher.d.ts","sourceRoot":"","sources":["../../../../src/components/scope/ScopeSwitcher.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAoD1D,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,aAAa,CAAA;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,wBAAwB,2CAsGhG;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,aAAa,CAAA;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CA2IhE"}
@@ -0,0 +1,131 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from "react";
3
+ import { useNavigate } from "@tanstack/react-router";
4
+ import { useScopeList } from "../../hooks/useScopeList.js";
5
+ import { Loader2, Check, Plus } from "lucide-react";
6
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from "@ydtb/tk-scope-ui/components/dialog";
7
+ import { useScopeContext } from "../../contexts/scope/ScopeContext.js";
8
+ import { scopeLink, useScopeLink } from "@ydtb/tk-scope/client";
9
+ import { ScopeActionsPanel, ScopeAvatar } from "@ydtb/tk-scope-shell";
10
+ import { useChildScopePermissions } from "./useChildScopePermissions.js";
11
+ import { useScopeMenuPolicy } from "../../hooks/useScopeMenuPolicy.js";
12
+ import { useScopeLabel, useChildScopeLabel } from "@ydtb/tk-scope/client";
13
+ import { CreateChildScopeButton } from "./CreateChildScopeButton.js";
14
+ function useScopeSwitcherList(scopeType, enabled) {
15
+ return useScopeList({ type: scopeType, enabled });
16
+ }
17
+ function ScopeCreateAction({ config, parentScopeId, parentScopeType, onClose, }) {
18
+ const navigate = useNavigate();
19
+ const { canCreate } = useChildScopePermissions();
20
+ if (config.selfCreate === false || config.selfCreate === "initial")
21
+ return null;
22
+ if (!canCreate)
23
+ return null;
24
+ const handleCreate = () => {
25
+ onClose?.();
26
+ if (parentScopeId && parentScopeType) {
27
+ navigate({
28
+ to: scopeLink(`/create/${config.type}`, {
29
+ scope: parentScopeType,
30
+ scopeId: parentScopeId,
31
+ }),
32
+ });
33
+ }
34
+ };
35
+ return (_jsxs("button", { type: "button", onClick: handleCreate, className: "w-full flex items-center justify-center gap-2 rounded-lg h-9 text-sm font-semibold transition-colors bg-primary text-primary-foreground hover:bg-primary/90", children: [_jsx(Plus, { className: "h-4 w-4" }), "New ", config.label] }));
36
+ }
37
+ export function ScopeSwitcherDialog({ scopeConfig, open, onOpenChange }) {
38
+ const navigate = useNavigate();
39
+ const { scopeId: activeScopeId, scopeType: activeScopeType } = useScopeContext();
40
+ const { scopes, isPending } = useScopeSwitcherList(scopeConfig.type, open);
41
+ const handleSwitch = (scopeId) => {
42
+ if (scopeId === activeScopeId)
43
+ return;
44
+ onOpenChange(false);
45
+ navigate({
46
+ to: scopeLink("/dashboard", {
47
+ scope: scopeConfig.type,
48
+ scopeId,
49
+ }),
50
+ });
51
+ };
52
+ return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "sm:max-w-md", children: [_jsxs(DialogHeader, { children: [_jsxs(DialogTitle, { children: ["Switch ", scopeConfig.label] }), _jsxs(DialogDescription, { children: ["Select a ", scopeConfig.label.toLowerCase(), " to manage."] })] }), _jsx("div", { className: "space-y-2 py-1", children: isPending ? (_jsx("div", { className: "flex items-center justify-center py-8", children: _jsx(Loader2, { className: "h-5 w-5 animate-spin", style: { color: "var(--color-muted-foreground)" } }) })) : scopes && scopes.length > 0 ? (scopes.map((scope) => {
53
+ const isCurrent = scope.id === activeScopeId;
54
+ return (_jsxs("button", { type: "button", onClick: () => handleSwitch(scope.id), className: `w-full flex items-center gap-3 rounded-lg border p-4 text-left transition-all cursor-pointer ${isCurrent
55
+ ? "border-primary/50 bg-primary/5"
56
+ : "hover:border-primary hover:shadow-sm"}`, style: {
57
+ borderColor: isCurrent ? undefined : "var(--color-border)",
58
+ }, children: [_jsx(ScopeAvatar, { scope: scope }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm font-semibold truncate", style: { color: "var(--color-foreground)" }, children: scope.name }), isCurrent && (_jsxs("span", { className: "inline-flex items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-[11px] font-medium text-primary shrink-0", children: [_jsx(Check, { className: "h-3 w-3" }), "Current"] }))] }), _jsx("div", { className: "flex items-center gap-2 mt-0.5", children: _jsx("span", { className: "inline-flex items-center rounded-md bg-muted px-1.5 py-0.5 text-[10px] font-medium capitalize", style: { color: "var(--color-muted-foreground)" }, children: scope.role }) })] })] }, scope.id));
59
+ })) : (_jsx("div", { className: "flex flex-col items-center justify-center py-8", children: _jsxs("p", { className: "text-sm", style: { color: "var(--color-muted-foreground)" }, children: ["No ", (scopeConfig.labelPlural ?? scopeConfig.label + "s").toLowerCase(), " found."] }) })) }), _jsx("div", { className: "pt-2", style: { borderTop: "1px solid var(--color-border)" }, children: _jsx(ScopeCreateAction, { config: scopeConfig, parentScopeId: activeScopeId, parentScopeType: activeScopeType, onClose: () => onOpenChange(false) }) })] }) }));
60
+ }
61
+ export function ScopeSwitcherPanel(props) {
62
+ const { onClose, onNavigate } = props;
63
+ const navigate = useNavigate();
64
+ const sl = useScopeLink();
65
+ const { scopeType, entity } = useScopeContext();
66
+ const [search, setSearch] = useState("");
67
+ const { mode, childScopeType, currentScope, parentScope, siblingScopes, childScopes, allScopes, canSwitchScopes, canViewChildScopes, canCreateChildScopes, hasCreateChildAction, } = useScopeMenuPolicy();
68
+ const scopeLabel = useScopeLabel(scopeType ?? "");
69
+ const childLabel = useChildScopeLabel(scopeType ?? "");
70
+ const currentScopeName = currentScope?.name || entity?.name || "Current scope";
71
+ const navLabel = childLabel ?? scopeLabel;
72
+ const filteredSiblings = useMemo(() => search
73
+ ? siblingScopes.filter((scope) => scope.name.toLowerCase().includes(search.toLowerCase()))
74
+ : siblingScopes, [search, siblingScopes]);
75
+ const filteredChildren = useMemo(() => search
76
+ ? childScopes.filter((scope) => scope.name.toLowerCase().includes(search.toLowerCase()))
77
+ : childScopes, [childScopes, search]);
78
+ const showSearch = (canSwitchScopes && siblingScopes.length > 0) || (canViewChildScopes && childScopes.length > 0);
79
+ const showSwitchActions = canSwitchScopes && (Boolean(parentScope) || allScopes.length > 1);
80
+ const showChildSection = canViewChildScopes && filteredChildren.length > 0;
81
+ const showSiblingSection = canSwitchScopes && filteredSiblings.length > 0;
82
+ const showCreateChildAction = canCreateChildScopes && hasCreateChildAction && Boolean(childScopeType);
83
+ const hasAnyMenuAction = showSwitchActions ||
84
+ (canViewChildScopes && childScopes.length > 0) ||
85
+ (canSwitchScopes && siblingScopes.length > 0) ||
86
+ showCreateChildAction;
87
+ const isAlwaysEmptyState = mode === "always" && !hasAnyMenuAction;
88
+ const showNoSearchResults = search.length > 0 &&
89
+ showSearch &&
90
+ filteredSiblings.length === 0 &&
91
+ filteredChildren.length === 0;
92
+ const closeAndNavigate = (to) => {
93
+ onNavigate?.();
94
+ navigate({ to });
95
+ };
96
+ return (_jsx(ScopeActionsPanel, { onClose: onClose, currentScope: { name: currentScopeName, logo: currentScope?.logo }, currentScopeLabel: `Current ${scopeLabel.singular}`, showCurrentScopeCard: true, showSearch: showSearch, searchValue: search, onSearchChange: setSearch, searchPlaceholder: `Find ${navLabel.singular.toLowerCase()}...`, parentAction: parentScope
97
+ ? {
98
+ label: parentScope.name,
99
+ onClick: () => closeAndNavigate(scopeLink("/dashboard", {
100
+ scope: parentScope.type,
101
+ scopeId: parentScope.id,
102
+ })),
103
+ }
104
+ : undefined, contextAction: allScopes.length > 1
105
+ ? {
106
+ onClick: () => closeAndNavigate("/select-context"),
107
+ }
108
+ : undefined, childSection: showChildSection
109
+ ? {
110
+ title: `Managed ${navLabel.plural}`,
111
+ items: filteredChildren,
112
+ onSelect: (scope) => closeAndNavigate(scopeLink("/dashboard", {
113
+ scope: scope.type,
114
+ scopeId: scope.id,
115
+ })),
116
+ listClassName: "max-h-[160px] overflow-y-auto px-1.5",
117
+ showChevron: true,
118
+ }
119
+ : undefined, siblingSection: showSiblingSection
120
+ ? {
121
+ title: `Switch ${scopeLabel.singular}`,
122
+ items: filteredSiblings,
123
+ onSelect: (scope) => closeAndNavigate(scopeLink("/dashboard", {
124
+ scope: scope.type,
125
+ scopeId: scope.id,
126
+ })),
127
+ listClassName: "flex-1 overflow-y-auto px-1.5",
128
+ }
129
+ : undefined, showNoSearchResults: showNoSearchResults, noSearchResultsLabel: `No matching ${navLabel.plural.toLowerCase()} found`, emptyStateLabel: isAlwaysEmptyState ? "No additional scope actions available." : undefined, footer: showCreateChildAction && childScopeType ? (_jsx("div", { className: "p-2 border-t border-border mt-auto", children: _jsx(CreateChildScopeButton, { onClick: () => closeAndNavigate(sl(`/${childScopeType}s`)) }) })) : undefined }));
130
+ }
131
+ //# sourceMappingURL=ScopeSwitcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopeSwitcher.js","sourceRoot":"","sources":["../../../../src/components/scope/ScopeSwitcher.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface SwitchScopeDialogProps {
2
+ scopeType: string;
3
+ open: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ }
6
+ export declare function SwitchScopeDialog({ scopeType, open, onOpenChange }: SwitchScopeDialogProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=SwitchScopeDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwitchScopeDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/scope/SwitchScopeDialog.tsx"],"names":[],"mappings":"AAkCA,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,sBAAsB,2CAqI1F"}