@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,353 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * Profile page — personal settings (theme, profile info, notifications, security).
4
+ *
5
+ * Registered as a scoped route in every scope shell via boot-client.tsx.
6
+ * Uses the shell's portal system (SidebarPortal + HeaderPortal) for layout.
7
+ */
8
+ import { useState, useRef } from "react";
9
+ import { useParams, useNavigate } from "@tanstack/react-router";
10
+ import { useScopeLink } from "@ydtb/tk-scope/client";
11
+ import { Palette, User, Bell, Shield, Lock, Fingerprint, Monitor, Trash2, Mail } from "lucide-react";
12
+ import { Button } from "@ydtb/tk-scope-ui/components/button";
13
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from "@ydtb/tk-scope-ui/components/dialog";
14
+ import { Input } from "@ydtb/tk-scope-ui/components/input";
15
+ import { Switch } from "@ydtb/tk-scope-ui/components/switch";
16
+ import { Label } from "@ydtb/tk-scope-ui/components/label";
17
+ import { useQuery, useMutation, useQueryClient } from "@ydtb/tk-scope-query-client";
18
+ import { toast } from "@ydtb/tk-scope-ui/components/sonner";
19
+ import { ThemeSettings } from "../dashboard/settings/ThemeSettings.js";
20
+ import { IconPicker, AvatarPreview, } from "@ydtb/tk-scope-ui/components/icon-picker";
21
+ import { HeaderPortal, SidebarPortal } from "@ydtb/tk-scope/client";
22
+ import { createNotificationPreferencesClient, } from "../lib/tool-api-types.js";
23
+ // Typed with a lightweight interface to avoid coupling to the notifications tool package.
24
+ const notificationsApi = createNotificationPreferencesClient();
25
+ import { authClient } from "@ydtb/tk-scope-auth/client";
26
+ import { useAuth } from "../contexts/auth/AuthContext.js";
27
+ const SECTION_META = {
28
+ theme: {
29
+ title: "Theme",
30
+ description: "Customize appearance, accent color, and background pattern",
31
+ },
32
+ profile: { title: "Profile", description: "Manage your profile information" },
33
+ notifications: {
34
+ title: "Notifications",
35
+ description: "Control how and when you receive notifications",
36
+ },
37
+ security: { title: "Security", description: "Manage password and authentication methods" },
38
+ };
39
+ // ─── Profile Sidebar ────────────────────────────────────────────
40
+ function ProfileSidebar({ activeSection, onSectionChange, }) {
41
+ const itemClass = (active) => `w-full flex items-center gap-2.5 px-3 py-1.5 rounded-lg text-sm transition-colors ${active
42
+ ? "bg-muted text-foreground font-medium"
43
+ : "text-muted-foreground hover:bg-muted/50 hover:text-foreground"}`;
44
+ const groups = [
45
+ {
46
+ label: "General",
47
+ items: [
48
+ { id: "theme", label: "Theme", icon: Palette },
49
+ { id: "profile", label: "Profile", icon: User },
50
+ ],
51
+ },
52
+ {
53
+ label: "Account",
54
+ items: [
55
+ { id: "notifications", label: "Notifications", icon: Bell },
56
+ { id: "security", label: "Security", icon: Shield },
57
+ ],
58
+ },
59
+ ];
60
+ return (_jsx(SidebarPortal, { children: _jsx("div", { className: "flex-1 overflow-y-auto px-3 py-2", children: groups.map((group, i) => (_jsxs("div", { children: [i > 0 && _jsx("div", { className: "my-3 border-t border-border" }), _jsx("div", { className: "px-3 mb-1", children: _jsx("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-primary", children: group.label }) }), _jsx("div", { className: "space-y-0.5", children: group.items.map((item) => {
61
+ const Icon = item.icon;
62
+ return (_jsxs("button", { className: itemClass(activeSection === item.id), onClick: () => onSectionChange(item.id), children: [_jsx(Icon, { className: "h-4 w-4 shrink-0" }), _jsx("span", { className: "flex-1 text-left", children: item.label })] }, item.id));
63
+ }) })] }, group.label))) }) }));
64
+ }
65
+ // ─── Theme Section ──────────────────────────────────────────────
66
+ function ThemeSection() {
67
+ return _jsx(ThemeSettings, {});
68
+ }
69
+ // ─── Profile Section ────────────────────────────────────────────
70
+ function getInitials(name) {
71
+ if (!name)
72
+ return "?";
73
+ return name
74
+ .split(" ")
75
+ .map((n) => n[0])
76
+ .join("")
77
+ .toUpperCase()
78
+ .slice(0, 2);
79
+ }
80
+ /** Parse user.image as JSON AvatarPickerData, or return null */
81
+ function parseAvatarData(image) {
82
+ if (!image)
83
+ return null;
84
+ try {
85
+ const parsed = JSON.parse(image);
86
+ if (parsed && typeof parsed === "object" && "iconType" in parsed)
87
+ return parsed;
88
+ }
89
+ catch {
90
+ // Not JSON — might be a plain URL from before
91
+ if (image.startsWith("http") || image.startsWith("data:")) {
92
+ return { icon: image, iconType: "image" };
93
+ }
94
+ }
95
+ return null;
96
+ }
97
+ function ProfileSection() {
98
+ const { session } = useAuth();
99
+ const user = session?.user;
100
+ const [firstName, setFirstName] = useState(user?.firstName ?? "");
101
+ const [lastName, setLastName] = useState(user?.lastName ?? "");
102
+ const [saving, setSaving] = useState(false);
103
+ const [pickerOpen, setPickerOpen] = useState(false);
104
+ const [avatarData, setAvatarData] = useState(parseAvatarData(user?.image) ?? {
105
+ iconType: "lucide",
106
+ icon: undefined,
107
+ iconColor: "indigo",
108
+ backgroundColor: "indigo",
109
+ });
110
+ // Save avatar to DB immediately when picker data changes (after picker closes)
111
+ const saveAvatar = async (data) => {
112
+ try {
113
+ const { error } = await authClient.updateUser({
114
+ image: JSON.stringify(data),
115
+ });
116
+ if (error) {
117
+ toast.error("Failed to save avatar");
118
+ return;
119
+ }
120
+ await authClient.getSession();
121
+ }
122
+ catch {
123
+ toast.error("Failed to save avatar");
124
+ }
125
+ };
126
+ // Track latest avatar data in a ref so save always uses current value
127
+ const avatarDataRef = useRef(avatarData);
128
+ avatarDataRef.current = avatarData;
129
+ const handleAvatarUpdate = (updates) => {
130
+ setAvatarData((prev) => {
131
+ const next = { ...prev, ...updates };
132
+ avatarDataRef.current = next;
133
+ return next;
134
+ });
135
+ };
136
+ const handlePickerClose = (open) => {
137
+ setPickerOpen(open);
138
+ if (!open) {
139
+ // Use ref to get the latest state (setState may not have flushed yet)
140
+ saveAvatar(avatarDataRef.current);
141
+ }
142
+ };
143
+ const handleSave = async () => {
144
+ setSaving(true);
145
+ try {
146
+ const { error } = await authClient.updateUser({
147
+ name: `${firstName} ${lastName}`.trim(),
148
+ firstName,
149
+ lastName,
150
+ });
151
+ if (error)
152
+ throw new Error(error.message ?? "Failed to update profile");
153
+ await authClient.getSession();
154
+ toast.success("Profile updated");
155
+ }
156
+ catch (err) {
157
+ toast.error(err instanceof Error ? err.message : "Failed to update profile");
158
+ }
159
+ finally {
160
+ setSaving(false);
161
+ }
162
+ };
163
+ const hasAvatar = avatarData.icon != null;
164
+ return (_jsxs("div", { className: "rounded-xl border border-border bg-card p-6 space-y-6", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-lg font-semibold text-foreground", children: "Profile Information" }), _jsx("p", { className: "text-sm text-muted-foreground mt-0.5", children: "Update your photo and personal details." })] }), _jsxs("div", { className: "flex items-start gap-8", children: [_jsxs("div", { className: "flex flex-col items-center gap-2 shrink-0", children: [_jsx("button", { type: "button", onClick: () => setPickerOpen(true), className: "cursor-pointer hover:opacity-80 transition-opacity", children: hasAvatar ? (_jsx(AvatarPreview, { data: avatarData, size: "xl", className: "border-2 border-primary/20" })) : (_jsx("div", { className: "flex h-24 w-24 items-center justify-center rounded-full bg-primary text-primary-foreground text-3xl font-bold border-2 border-primary/20 shrink-0", children: getInitials(user?.name) })) }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => setPickerOpen(true), children: "Change Photo" })] }), _jsxs("div", { className: "flex-1 space-y-4", children: [_jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { children: "First Name" }), _jsxs("div", { className: "relative", children: [_jsx(User, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx(Input, { value: firstName, onChange: (e) => setFirstName(e.target.value), placeholder: "Jane", className: "pl-9" })] })] }), _jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { children: "Last Name" }), _jsx(Input, { value: lastName, onChange: (e) => setLastName(e.target.value), placeholder: "Doe" })] })] }), _jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { children: "Email Address" }), _jsxs("div", { className: "relative", children: [_jsx(Mail, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx(Input, { value: user?.email ?? "", disabled: true, className: "pl-9" })] }), _jsx("p", { className: "text-xs text-muted-foreground", children: "This is the email you will use to login." })] })] })] }), _jsx("div", { className: "flex justify-end pt-2 border-t border-border", children: _jsx(Button, { onClick: handleSave, disabled: saving, children: saving ? "Saving..." : "Save Changes" }) }), _jsx(IconPicker, { open: pickerOpen, onOpenChange: handlePickerClose, data: avatarData, updateData: handleAvatarUpdate })] }));
165
+ }
166
+ // ─── Notifications Section ──────────────────────────────────────
167
+ function NotificationsSection() {
168
+ const queryClient = useQueryClient();
169
+ const { data: providers } = useQuery(notificationsApi.getProviders.queryOptions({ input: {} }));
170
+ const { data: preferences } = useQuery(notificationsApi.getPreferences.queryOptions({ input: {} }));
171
+ const { data: subscriptions } = useQuery(notificationsApi.listSubscriptions.queryOptions({ input: {} }));
172
+ const setPreferenceMutation = useMutation(notificationsApi.setPreference.mutationOptions({
173
+ onSuccess: () => {
174
+ queryClient.invalidateQueries({ queryKey: notificationsApi.getPreferences.key() });
175
+ },
176
+ }));
177
+ const unsubscribeMutation = useMutation(notificationsApi.unsubscribe.mutationOptions({
178
+ onSuccess: () => {
179
+ queryClient.invalidateQueries({ queryKey: notificationsApi.listSubscriptions.key() });
180
+ toast.success("Unsubscribed");
181
+ },
182
+ }));
183
+ const providerList = (Array.isArray(providers) ? providers : []).flatMap((provider) => provider.events);
184
+ const prefMap = new Map((Array.isArray(preferences) ? preferences : []).map((p) => [
185
+ `${p.eventType}:${p.channel}`,
186
+ p.enabled,
187
+ ]));
188
+ const subList = Array.isArray(subscriptions) ? subscriptions : [];
189
+ return (_jsxs("div", { className: "space-y-6", children: [providerList.length > 0 ? (_jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-sm font-medium text-foreground", children: "Notification Preferences" }), providerList.map((provider) => (_jsxs("div", { className: "flex items-center justify-between py-2", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: provider.label }), _jsx("div", { className: "flex items-center gap-3", children: provider.defaultChannels.map((channel) => {
190
+ const key = `${provider.type}:${channel}`;
191
+ const enabled = prefMap.get(key) ?? true;
192
+ return (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(Switch, { checked: enabled, onCheckedChange: (checked) => {
193
+ setPreferenceMutation.mutate({
194
+ eventType: provider.type,
195
+ channel,
196
+ enabled: checked,
197
+ });
198
+ } }), _jsx("span", { className: "text-xs text-muted-foreground capitalize", children: channel })] }, channel));
199
+ }) })] }, provider.type)))] })) : (_jsx("p", { className: "text-sm text-muted-foreground", children: "No notification types configured." })), subList.length > 0 && (_jsxs("div", { className: "space-y-4", children: [_jsx("h3", { className: "text-sm font-medium text-foreground", children: "Watched Items" }), subList.map((sub) => (_jsxs("div", { className: "flex items-center justify-between py-2", children: [_jsxs("p", { className: "text-sm text-foreground", children: [sub.entityType, " \u2014 ", sub.entityId] }), _jsx(Button, { variant: "ghost", size: "sm", onClick: () => unsubscribeMutation.mutate({
200
+ entityType: sub.entityType,
201
+ entityId: sub.entityId ?? "",
202
+ }), children: "Unwatch" })] }, sub.id)))] }))] }));
203
+ }
204
+ // ─── Security Section ───────────────────────────────────────────
205
+ const MIN_PASSWORD_LENGTH = 8;
206
+ function getDefaultPasskeyName() {
207
+ const ua = navigator.userAgent;
208
+ if (/iPad/.test(ua))
209
+ return "iPad";
210
+ if (/iPhone/.test(ua))
211
+ return "iPhone";
212
+ if (/Macintosh/.test(ua))
213
+ return "Mac";
214
+ if (/Windows/.test(ua))
215
+ return "Windows PC";
216
+ if (/Android/.test(ua))
217
+ return "Android Device";
218
+ if (/Linux/.test(ua))
219
+ return "Linux PC";
220
+ if (/CrOS/.test(ua))
221
+ return "Chromebook";
222
+ return "My Device";
223
+ }
224
+ function ChangePasswordSubsection() {
225
+ const [currentPassword, setCurrentPassword] = useState("");
226
+ const [newPassword, setNewPassword] = useState("");
227
+ const [confirmPassword, setConfirmPassword] = useState("");
228
+ const [validationError, setValidationError] = useState(null);
229
+ const changePasswordMutation = useMutation({
230
+ mutationFn: async () => {
231
+ const { error } = await authClient.changePassword({
232
+ currentPassword,
233
+ newPassword,
234
+ revokeOtherSessions: false,
235
+ });
236
+ if (error)
237
+ throw new Error(error.message ?? "Failed to change password");
238
+ },
239
+ onSuccess: () => {
240
+ toast.success("Password updated successfully");
241
+ setCurrentPassword("");
242
+ setNewPassword("");
243
+ setConfirmPassword("");
244
+ setValidationError(null);
245
+ },
246
+ onError: (error) => toast.error(error.message || "Failed to change password"),
247
+ });
248
+ const handleSubmit = () => {
249
+ if (!currentPassword) {
250
+ setValidationError("Current password is required");
251
+ return;
252
+ }
253
+ if (newPassword.length < MIN_PASSWORD_LENGTH) {
254
+ setValidationError(`New password must be at least ${MIN_PASSWORD_LENGTH} characters`);
255
+ return;
256
+ }
257
+ if (newPassword !== confirmPassword) {
258
+ setValidationError("New passwords do not match");
259
+ return;
260
+ }
261
+ setValidationError(null);
262
+ changePasswordMutation.mutate();
263
+ };
264
+ return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-foreground", children: [_jsx(Lock, { className: "size-4" }), " Change Password"] }), _jsxs("div", { className: "grid grid-cols-3 gap-4", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { children: "Current Password" }), _jsx(Input, { type: "password", value: currentPassword, onChange: (e) => {
265
+ setCurrentPassword(e.target.value);
266
+ setValidationError(null);
267
+ } })] }), _jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { children: "New Password" }), _jsx(Input, { type: "password", value: newPassword, onChange: (e) => {
268
+ setNewPassword(e.target.value);
269
+ setValidationError(null);
270
+ } })] }), _jsxs("div", { className: "space-y-1.5", children: [_jsx(Label, { children: "Confirm Password" }), _jsx(Input, { type: "password", value: confirmPassword, onChange: (e) => {
271
+ setConfirmPassword(e.target.value);
272
+ setValidationError(null);
273
+ } })] })] }), validationError && _jsx("p", { className: "text-sm text-destructive", children: validationError }), _jsx("div", { className: "flex justify-end", children: _jsx(Button, { variant: "outline", onClick: handleSubmit, disabled: changePasswordMutation.isPending, children: changePasswordMutation.isPending ? "Updating..." : "Update Password" }) })] }));
274
+ }
275
+ function PasskeySubsection() {
276
+ const queryClient = useQueryClient();
277
+ const [nameDialogOpen, setNameDialogOpen] = useState(false);
278
+ const [passkeyName, setPasskeyName] = useState("");
279
+ const [isRegistering, setIsRegistering] = useState(false);
280
+ const passkeysQuery = useQuery({
281
+ queryKey: ["passkeys"],
282
+ queryFn: async () => {
283
+ const { data, error } = await authClient.passkey.listUserPasskeys();
284
+ if (error)
285
+ throw new Error(error.message ?? "Failed to load passkeys");
286
+ return data ?? [];
287
+ },
288
+ });
289
+ const handleStartAdd = () => {
290
+ setPasskeyName(getDefaultPasskeyName());
291
+ setNameDialogOpen(true);
292
+ };
293
+ const handleConfirmAdd = async () => {
294
+ setIsRegistering(true);
295
+ setNameDialogOpen(false);
296
+ try {
297
+ const { error } = await authClient.passkey.addPasskey({
298
+ name: passkeyName.trim() || getDefaultPasskeyName(),
299
+ });
300
+ if (error) {
301
+ if (error.message?.includes("cancelled") || error.message?.includes("abort"))
302
+ return;
303
+ toast.error(error.message ?? "Failed to add passkey");
304
+ return;
305
+ }
306
+ toast.success("Passkey added successfully");
307
+ queryClient.invalidateQueries({ queryKey: ["passkeys"] });
308
+ }
309
+ catch {
310
+ toast.error("Failed to add passkey");
311
+ }
312
+ finally {
313
+ setIsRegistering(false);
314
+ }
315
+ };
316
+ const deletePasskeyMutation = useMutation({
317
+ mutationFn: async (id) => {
318
+ const { error } = await authClient.passkey.deletePasskey({ id });
319
+ if (error)
320
+ throw new Error(error.message ?? "Failed to delete passkey");
321
+ },
322
+ onSuccess: () => {
323
+ toast.success("Passkey removed");
324
+ queryClient.invalidateQueries({ queryKey: ["passkeys"] });
325
+ },
326
+ onError: (error) => toast.error(error.message || "Failed to remove passkey"),
327
+ });
328
+ const passkeys = passkeysQuery.data ?? [];
329
+ const hasPasskeys = passkeys.length > 0;
330
+ return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-foreground", children: [_jsx(Fingerprint, { className: "size-4" }), " Passkey Authentication"] }), hasPasskeys ? (_jsxs("div", { className: "space-y-3", children: [passkeys.map((pk) => (_jsxs("div", { className: "flex items-center gap-3 rounded-lg border border-border bg-card p-3", children: [_jsx("div", { className: "flex size-10 items-center justify-center rounded-lg bg-primary/10", children: _jsx(Monitor, { className: "size-5 text-primary" }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm font-medium text-foreground", children: pk.name || "Passkey" }), _jsx("span", { className: "inline-flex items-center rounded-md bg-green-100 px-1.5 py-0.5 text-xs font-medium text-green-700 dark:bg-green-900/30 dark:text-green-400", children: "Active" })] }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Added on ", pk.createdAt ? new Date(pk.createdAt).toLocaleDateString() : "unknown"] })] }), _jsx(Button, { variant: "ghost", size: "icon", className: "text-muted-foreground hover:text-destructive", onClick: () => deletePasskeyMutation.mutate(pk.id), disabled: deletePasskeyMutation.isPending, children: _jsx(Trash2, { className: "size-4" }) })] }, pk.id))), _jsxs("button", { type: "button", className: "flex w-full items-center justify-center gap-2 rounded-lg border-2 border-dashed border-border py-3 text-sm text-muted-foreground transition-colors hover:border-primary hover:text-primary", onClick: handleStartAdd, disabled: isRegistering, children: [_jsx(Fingerprint, { className: "size-4" }), isRegistering ? "Waiting for browser..." : "Add Another Passkey"] })] })) : (_jsxs("div", { className: "flex items-center gap-3 rounded-lg border border-border bg-card p-3", children: [_jsx("div", { className: "flex size-10 items-center justify-center rounded-lg bg-primary/10", children: _jsx(Fingerprint, { className: "size-5 text-primary" }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: "Biometric Login" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Log in securely using your device's fingerprint or face recognition." })] }), _jsx(Button, { variant: "outline", onClick: handleStartAdd, disabled: isRegistering, children: isRegistering ? "Waiting..." : "Add Passkey" })] })), _jsx(Dialog, { open: nameDialogOpen, onOpenChange: setNameDialogOpen, children: _jsxs(DialogContent, { className: "sm:max-w-md", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Name your passkey" }), _jsx(DialogDescription, { children: "Give this passkey a name so you can identify it later." })] }), _jsx(Input, { value: passkeyName, onChange: (e) => setPasskeyName(e.target.value), placeholder: "e.g. MacBook Pro, Work Laptop", onKeyDown: (e) => {
331
+ if (e.key === "Enter")
332
+ handleConfirmAdd();
333
+ }, autoFocus: true }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "outline", onClick: () => setNameDialogOpen(false), children: "Cancel" }), _jsx(Button, { onClick: handleConfirmAdd, children: "Continue" })] })] }) })] }));
334
+ }
335
+ function SecuritySection() {
336
+ return (_jsxs("div", { className: "space-y-6", children: [_jsx(ChangePasswordSubsection, {}), _jsx("hr", { className: "border-border" }), _jsx(PasskeySubsection, {})] }));
337
+ }
338
+ // ─── Profile Page ───────────────────────────────────────────────
339
+ const VALID_SECTIONS = new Set(["theme", "profile", "notifications", "security"]);
340
+ export function ProfilePage() {
341
+ const { section } = useParams({ strict: false });
342
+ const navigate = useNavigate();
343
+ const sl = useScopeLink();
344
+ const activeSection = VALID_SECTIONS.has(section ?? "")
345
+ ? section
346
+ : "profile";
347
+ const meta = SECTION_META[activeSection];
348
+ const handleSectionChange = (id) => {
349
+ navigate({ to: sl(`/profile/${id}`) });
350
+ };
351
+ return (_jsxs(_Fragment, { children: [_jsx(ProfileSidebar, { activeSection: activeSection, onSectionChange: handleSectionChange }), _jsx(HeaderPortal, { children: _jsx("div", { className: "flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 sm:gap-4 px-4 sm:px-6 py-4 sm:py-5 border-b border-border", children: _jsxs("div", { className: "min-w-0", children: [_jsx("h1", { className: "text-lg font-bold text-foreground", children: meta.title }), _jsx("p", { className: "text-sm text-muted-foreground mt-0.5", children: meta.description })] }) }) }), _jsxs("div", { className: "p-4 sm:p-6 max-w-3xl mx-auto", children: [activeSection === "theme" && _jsx(ThemeSection, {}), activeSection === "profile" && _jsx(ProfileSection, {}), activeSection === "notifications" && _jsx(NotificationsSection, {}), activeSection === "security" && _jsx(SecuritySection, {})] })] }));
352
+ }
353
+ //# sourceMappingURL=ProfilePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfilePage.js","sourceRoot":"","sources":["../../../src/pages/ProfilePage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function ResetPasswordPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ResetPasswordPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResetPasswordPage.d.ts","sourceRoot":"","sources":["../../../src/pages/ResetPasswordPage.tsx"],"names":[],"mappings":"AAMA,wBAAgB,iBAAiB,4CAmNhC"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { useSearch, Link } from "@tanstack/react-router";
4
+ import { authClient } from "@ydtb/tk-scope-auth/client";
5
+ import { Lock, KeyRound, ArrowRight, Eye, EyeOff, CheckCircle2, AlertCircle } from "lucide-react";
6
+ import { PasswordStrengthMeter } from "@ydtb/tk-scope-ui/components/password-strength-meter";
7
+ export function ResetPasswordPage() {
8
+ const search = useSearch({ strict: false });
9
+ const token = search.token;
10
+ const [newPassword, setNewPassword] = useState("");
11
+ const [confirmPassword, setConfirmPassword] = useState("");
12
+ const [showNewPassword, setShowNewPassword] = useState(false);
13
+ const [showConfirmPassword, setShowConfirmPassword] = useState(false);
14
+ const [error, setError] = useState(null);
15
+ const [loading, setLoading] = useState(false);
16
+ const [success, setSuccess] = useState(false);
17
+ const handleSubmit = async (e) => {
18
+ e.preventDefault();
19
+ setError(null);
20
+ if (newPassword.length < 12) {
21
+ setError("Password must be at least 12 characters");
22
+ return;
23
+ }
24
+ if (newPassword !== confirmPassword) {
25
+ setError("Passwords do not match");
26
+ return;
27
+ }
28
+ if (!token) {
29
+ setError("No reset token provided");
30
+ return;
31
+ }
32
+ setLoading(true);
33
+ const { error: resetError } = await authClient.resetPassword({
34
+ newPassword,
35
+ token,
36
+ });
37
+ setLoading(false);
38
+ if (resetError) {
39
+ setError(resetError.message || "Invalid or expired token. Please request a new reset link.");
40
+ return;
41
+ }
42
+ setSuccess(true);
43
+ };
44
+ // No token provided
45
+ if (!token) {
46
+ return (_jsx("div", { className: "flex min-h-dvh items-center justify-center bg-background p-4", children: _jsx("div", { className: "w-full max-w-[420px]", children: _jsxs("div", { className: "rounded-2xl border border-border bg-card p-8 shadow-sm", children: [_jsxs("div", { className: "flex flex-col items-center mb-6", children: [_jsx("div", { className: "flex items-center justify-center w-14 h-14 rounded-2xl bg-destructive/10 text-destructive mb-4", children: _jsx(AlertCircle, { className: "h-7 w-7" }) }), _jsx("h1", { className: "text-2xl font-bold text-foreground tracking-tight", children: "Reset Password" }), _jsx("p", { className: "text-muted-foreground text-sm mt-2 text-center", children: "No reset token provided. Please request a new password reset link." })] }), _jsxs(Link, { to: "/forgot-password", className: "flex items-center justify-center gap-2 w-full h-12 rounded-xl bg-foreground text-background text-sm font-semibold shadow-md hover:opacity-90 transition-opacity", children: ["Request Reset Link", _jsx(ArrowRight, { className: "h-4 w-4" })] })] }) }) }));
47
+ }
48
+ // Success state
49
+ if (success) {
50
+ return (_jsx("div", { className: "flex min-h-dvh items-center justify-center bg-background p-4", children: _jsx("div", { className: "w-full max-w-[420px]", children: _jsxs("div", { className: "rounded-2xl border border-border bg-card p-8 shadow-sm", children: [_jsxs("div", { className: "flex flex-col items-center mb-6", children: [_jsx("div", { className: "flex items-center justify-center w-14 h-14 rounded-2xl bg-emerald-500/10 text-emerald-500 mb-4", children: _jsx(CheckCircle2, { className: "h-7 w-7" }) }), _jsx("h1", { className: "text-2xl font-bold text-foreground tracking-tight", children: "Password Reset Successfully" }), _jsx("p", { className: "text-muted-foreground text-sm mt-2 text-center", children: "Your password has been updated. You can now log in with your new password." })] }), _jsxs(Link, { to: "/login", className: "flex items-center justify-center gap-2 w-full h-12 rounded-xl bg-foreground text-background text-sm font-semibold shadow-md hover:opacity-90 transition-opacity", children: ["Back to Login", _jsx(ArrowRight, { className: "h-4 w-4" })] })] }) }) }));
51
+ }
52
+ // Reset password form
53
+ return (_jsx("div", { className: "flex min-h-dvh items-center justify-center bg-background p-4", children: _jsx("div", { className: "w-full max-w-[420px]", children: _jsxs("div", { className: "rounded-2xl border border-border bg-card p-8 shadow-sm", children: [_jsxs("div", { className: "flex flex-col items-center mb-6", children: [_jsx("div", { className: "flex items-center justify-center w-14 h-14 rounded-2xl bg-primary text-primary-foreground mb-4", children: _jsx(KeyRound, { className: "h-7 w-7" }) }), _jsx("h1", { className: "text-2xl font-bold text-foreground tracking-tight", children: "Reset Password" }), _jsx("p", { className: "text-muted-foreground text-sm mt-1", children: "Enter your new password below." })] }), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [error && (_jsx("div", { className: "rounded-lg bg-destructive/10 text-destructive text-sm text-center py-2 px-3", children: error })), _jsxs("div", { children: [_jsx("label", { htmlFor: "newPassword", className: "block text-sm font-semibold text-foreground mb-1.5", children: "New Password" }), _jsxs("div", { className: "relative", children: [_jsx(Lock, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx("input", { id: "newPassword", type: showNewPassword ? "text" : "password", value: newPassword, onChange: (e) => setNewPassword(e.target.value), placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", required: true, minLength: 12, className: "flex h-11 w-full rounded-xl border border-border bg-muted/30 pl-10 pr-10 text-sm text-foreground transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary" }), _jsx("button", { type: "button", onClick: () => setShowNewPassword(!showNewPassword), className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors", children: showNewPassword ? _jsx(EyeOff, { className: "h-4 w-4" }) : _jsx(Eye, { className: "h-4 w-4" }) })] }), _jsx(PasswordStrengthMeter, { password: newPassword, minLength: 12 })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "confirmPassword", className: "block text-sm font-semibold text-foreground mb-1.5", children: "Confirm Password" }), _jsxs("div", { className: "relative", children: [_jsx(Lock, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx("input", { id: "confirmPassword", type: showConfirmPassword ? "text" : "password", value: confirmPassword, onChange: (e) => setConfirmPassword(e.target.value), placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", required: true, minLength: 12, className: "flex h-11 w-full rounded-xl border border-border bg-muted/30 pl-10 pr-10 text-sm text-foreground transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary" }), _jsx("button", { type: "button", onClick: () => setShowConfirmPassword(!showConfirmPassword), className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors", children: showConfirmPassword ? (_jsx(EyeOff, { className: "h-4 w-4" })) : (_jsx(Eye, { className: "h-4 w-4" })) })] })] }), _jsxs("button", { type: "submit", disabled: loading, className: "flex items-center justify-center gap-2 w-full h-12 rounded-xl bg-foreground text-background text-sm font-semibold shadow-md hover:opacity-90 transition-opacity disabled:opacity-50 mt-2", children: [loading ? "Resetting password..." : "Reset Password", !loading && _jsx(ArrowRight, { className: "h-4 w-4" })] })] }), _jsx("div", { className: "mt-6 text-center", children: _jsx(Link, { to: "/login", className: "text-sm font-medium text-primary hover:underline underline-offset-4", children: "Back to Login" }) })] }) }) }));
54
+ }
55
+ //# sourceMappingURL=ResetPasswordPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResetPasswordPage.js","sourceRoot":"","sources":["../../../src/pages/ResetPasswordPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function SignupPage(): import("react/jsx-runtime").JSX.Element | null;
2
+ //# sourceMappingURL=SignupPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignupPage.d.ts","sourceRoot":"","sources":["../../../src/pages/SignupPage.tsx"],"names":[],"mappings":"AAOA,wBAAgB,UAAU,mDA0NzB"}
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { useSearch, Link, Navigate } from "@tanstack/react-router";
4
+ import { authClient } from "@ydtb/tk-scope-auth/client";
5
+ import { useAuth } from "../contexts/auth/AuthContext.js";
6
+ import { PasswordStrengthMeter } from "@ydtb/tk-scope-ui/components/password-strength-meter";
7
+ import { Mail, Lock, User, ArrowRight, Eye, EyeOff, UserPlus } from "lucide-react";
8
+ export function SignupPage() {
9
+ const { session, isPending } = useAuth();
10
+ const search = useSearch({ strict: false });
11
+ const inviteEmail = search.email || "";
12
+ const [firstName, setFirstName] = useState("");
13
+ const [lastName, setLastName] = useState("");
14
+ const [email, setEmail] = useState(inviteEmail);
15
+ const [password, setPassword] = useState("");
16
+ const [showPassword, setShowPassword] = useState(false);
17
+ const [error, setError] = useState(null);
18
+ const [loading, setLoading] = useState(false);
19
+ if (isPending)
20
+ return null;
21
+ if (session)
22
+ return _jsx(Navigate, { to: search.redirect || "/" });
23
+ const handleSubmit = async (e) => {
24
+ e.preventDefault();
25
+ setError(null);
26
+ if (password.length < 12) {
27
+ setError("Password must be at least 12 characters long");
28
+ return;
29
+ }
30
+ setLoading(true);
31
+ const { data, error: signUpError } = await authClient.signUp.email({
32
+ email,
33
+ password,
34
+ name: `${firstName} ${lastName}`.trim(),
35
+ firstName,
36
+ lastName,
37
+ });
38
+ if (signUpError) {
39
+ setLoading(false);
40
+ console.error("Signup error:", signUpError);
41
+ setError(signUpError.message || signUpError.statusText || "Failed to create account");
42
+ return;
43
+ }
44
+ if (!data) {
45
+ setLoading(false);
46
+ setError("No response from server");
47
+ return;
48
+ }
49
+ await authClient.getSession();
50
+ setLoading(false);
51
+ };
52
+ return (_jsx("div", { className: "flex min-h-dvh items-center justify-center bg-background p-4", children: _jsxs("div", { className: "w-full max-w-[420px]", children: [_jsxs("div", { className: "rounded-2xl border border-border bg-card p-8 shadow-sm", children: [_jsxs("div", { className: "flex flex-col items-center mb-6", children: [_jsx("div", { className: "flex items-center justify-center w-14 h-14 rounded-2xl bg-primary text-primary-foreground mb-4", children: _jsx(User, { className: "h-7 w-7" }) }), _jsx("h1", { className: "text-2xl font-bold text-foreground tracking-tight", children: "Create your account" }), _jsx("p", { className: "text-muted-foreground text-sm mt-1", children: "Get started with your free account" })] }), search.inviter && search.scopeName && (_jsxs("div", { className: "flex items-center gap-3 rounded-xl bg-primary/5 border border-primary/20 px-5 py-3 mb-5", children: [_jsx(UserPlus, { className: "h-5 w-5 text-primary shrink-0" }), _jsxs("p", { className: "text-sm text-foreground text-center flex-1", children: [_jsx("span", { className: "font-semibold", children: search.inviter }), " has invited you to join", " ", _jsx("span", { className: "font-semibold", children: search.scopeName }), ".", _jsx("br", {}), "Create an account to accept."] })] })), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [error && (_jsx("div", { className: "rounded-lg bg-destructive/10 text-destructive text-sm text-center py-2 px-3", children: error })), _jsxs("div", { className: "flex gap-3", children: [_jsxs("div", { className: "flex-1", children: [_jsx("label", { htmlFor: "firstName", className: "block text-sm font-semibold text-foreground mb-1.5", children: "First Name" }), _jsxs("div", { className: "relative", children: [_jsx(User, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx("input", { id: "firstName", type: "text", value: firstName, onChange: (e) => setFirstName(e.target.value), placeholder: "John", required: true, className: "flex h-11 w-full rounded-xl border border-border bg-muted/30 pl-10 pr-3 text-sm text-foreground transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary" })] })] }), _jsxs("div", { className: "flex-1", children: [_jsx("label", { htmlFor: "lastName", className: "block text-sm font-semibold text-foreground mb-1.5", children: "Last Name" }), _jsx("div", { className: "relative", children: _jsx("input", { id: "lastName", type: "text", value: lastName, onChange: (e) => setLastName(e.target.value), placeholder: "Doe", required: true, className: "flex h-11 w-full rounded-xl border border-border bg-muted/30 pl-3 pr-3 text-sm text-foreground transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary" }) })] })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "email", className: "block text-sm font-semibold text-foreground mb-1.5", children: "Email" }), _jsxs("div", { className: "relative", children: [_jsx(Mail, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx("input", { id: "email", type: "email", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "name@example.com", required: true, disabled: !!inviteEmail, className: `flex h-11 w-full rounded-xl border border-border bg-muted/30 pl-10 pr-3 text-sm text-foreground transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary ${inviteEmail ? "opacity-60 cursor-not-allowed" : ""}` })] })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "password", className: "block text-sm font-semibold text-foreground mb-1.5", children: "Password" }), _jsxs("div", { className: "relative", children: [_jsx(Lock, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx("input", { id: "password", type: showPassword ? "text" : "password", value: password, onChange: (e) => setPassword(e.target.value), placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022", required: true, className: "flex h-11 w-full rounded-xl border border-border bg-muted/30 pl-10 pr-10 text-sm text-foreground transition-colors placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary" }), _jsx("button", { type: "button", onClick: () => setShowPassword(!showPassword), className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors", children: showPassword ? _jsx(EyeOff, { className: "h-4 w-4" }) : _jsx(Eye, { className: "h-4 w-4" }) })] }), _jsx(PasswordStrengthMeter, { password: password, minLength: 12 })] }), _jsxs("button", { type: "submit", disabled: loading, className: "flex items-center justify-center gap-2 w-full h-12 rounded-xl bg-foreground text-background text-sm font-semibold shadow-md hover:opacity-90 transition-opacity disabled:opacity-50 mt-2", children: [loading ? "Creating account..." : "Create Account", !loading && _jsx(ArrowRight, { className: "h-4 w-4" })] })] }), _jsxs("div", { className: "flex mt-6 rounded-xl border border-border overflow-hidden", children: [_jsx(Link, { to: "/login", search: search, className: "flex-1 flex items-center justify-center h-10 bg-muted/30 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors border-r border-border", children: "Sign In" }), _jsx("div", { className: "flex-1 flex items-center justify-center h-10 bg-card text-sm font-semibold text-foreground", children: "Sign Up" })] })] }), _jsxs("p", { className: "text-center text-xs text-muted-foreground mt-5 px-4", children: ["By clicking continue, you agree to our", " ", _jsx("button", { type: "button", className: "underline underline-offset-2 hover:text-foreground", children: "Terms of Service" }), " ", "and", " ", _jsx("button", { type: "button", className: "underline underline-offset-2 hover:text-foreground", children: "Privacy Policy" }), "."] })] }) }));
53
+ }
54
+ //# sourceMappingURL=SignupPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignupPage.js","sourceRoot":"","sources":["../../../src/pages/SignupPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export { AcceptInvitePage } from "./AcceptInvitePage.tsx";
2
+ export { BackendErrorPage } from "./BackendErrorPage.tsx";
3
+ export { ContextSelectionPage } from "./ContextSelectionPage.tsx";
4
+ export { DefaultCreateScopePage } from "./DefaultCreateScopePage.tsx";
5
+ export { ForgotPasswordPage } from "./ForgotPasswordPage.tsx";
6
+ export { GetStartedPage } from "./GetStartedPage.tsx";
7
+ export { InviteErrorPage } from "./InviteErrorPage.tsx";
8
+ export { LoginPage } from "./LoginPage.tsx";
9
+ export { NoAccessPage } from "./NoAccessPage.tsx";
10
+ export { NotFoundPage } from "./NotFoundPage.tsx";
11
+ export { PostLoginResolver } from "./PostLoginResolver.tsx";
12
+ export { ProfilePage } from "./ProfilePage.tsx";
13
+ export { ResetPasswordPage } from "./ResetPasswordPage.tsx";
14
+ export { SignupPage } from "./SignupPage.tsx";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,15 @@
1
+ export { AcceptInvitePage } from "./AcceptInvitePage.js";
2
+ export { BackendErrorPage } from "./BackendErrorPage.js";
3
+ export { ContextSelectionPage } from "./ContextSelectionPage.js";
4
+ export { DefaultCreateScopePage } from "./DefaultCreateScopePage.js";
5
+ export { ForgotPasswordPage } from "./ForgotPasswordPage.js";
6
+ export { GetStartedPage } from "./GetStartedPage.js";
7
+ export { InviteErrorPage } from "./InviteErrorPage.js";
8
+ export { LoginPage } from "./LoginPage.js";
9
+ export { NoAccessPage } from "./NoAccessPage.js";
10
+ export { NotFoundPage } from "./NotFoundPage.js";
11
+ export { PostLoginResolver } from "./PostLoginResolver.js";
12
+ export { ProfilePage } from "./ProfilePage.js";
13
+ export { ResetPasswordPage } from "./ResetPasswordPage.js";
14
+ export { SignupPage } from "./SignupPage.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA4B,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA8B,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAiB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAA"}