@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.
- package/LICENSE +21 -0
- package/README.md +48 -0
- package/dist/src/auth/AuthStrategyGate.d.ts +27 -0
- package/dist/src/auth/AuthStrategyGate.d.ts.map +1 -0
- package/dist/src/auth/AuthStrategyGate.js +58 -0
- package/dist/src/auth/AuthStrategyGate.js.map +1 -0
- package/dist/src/auth/components/DefaultDeviceLogin.d.ts +7 -0
- package/dist/src/auth/components/DefaultDeviceLogin.d.ts.map +1 -0
- package/dist/src/auth/components/DefaultDeviceLogin.js +21 -0
- package/dist/src/auth/components/DefaultDeviceLogin.js.map +1 -0
- package/dist/src/auth/components/DefaultPinLogin.d.ts +8 -0
- package/dist/src/auth/components/DefaultPinLogin.d.ts.map +1 -0
- package/dist/src/auth/components/DefaultPinLogin.js +85 -0
- package/dist/src/auth/components/DefaultPinLogin.js.map +1 -0
- package/dist/src/auth/components/DefaultSessionLogin.d.ts +7 -0
- package/dist/src/auth/components/DefaultSessionLogin.d.ts.map +1 -0
- package/dist/src/auth/components/DefaultSessionLogin.js +21 -0
- package/dist/src/auth/components/DefaultSessionLogin.js.map +1 -0
- package/dist/src/auth/components/index.d.ts +12 -0
- package/dist/src/auth/components/index.d.ts.map +1 -0
- package/dist/src/auth/components/index.js +21 -0
- package/dist/src/auth/components/index.js.map +1 -0
- package/dist/src/auth/index.d.ts +8 -0
- package/dist/src/auth/index.d.ts.map +1 -0
- package/dist/src/auth/index.js +7 -0
- package/dist/src/auth/index.js.map +1 -0
- package/dist/src/auth/persistence/pin-storage.d.ts +19 -0
- package/dist/src/auth/persistence/pin-storage.d.ts.map +1 -0
- package/dist/src/auth/persistence/pin-storage.js +80 -0
- package/dist/src/auth/persistence/pin-storage.js.map +1 -0
- package/dist/src/auth/strategies/device.d.ts +16 -0
- package/dist/src/auth/strategies/device.d.ts.map +1 -0
- package/dist/src/auth/strategies/device.js +51 -0
- package/dist/src/auth/strategies/device.js.map +1 -0
- package/dist/src/auth/strategies/index.d.ts +13 -0
- package/dist/src/auth/strategies/index.d.ts.map +1 -0
- package/dist/src/auth/strategies/index.js +24 -0
- package/dist/src/auth/strategies/index.js.map +1 -0
- package/dist/src/auth/strategies/none.d.ts +9 -0
- package/dist/src/auth/strategies/none.d.ts.map +1 -0
- package/dist/src/auth/strategies/none.js +10 -0
- package/dist/src/auth/strategies/none.js.map +1 -0
- package/dist/src/auth/strategies/pin.d.ts +9 -0
- package/dist/src/auth/strategies/pin.d.ts.map +1 -0
- package/dist/src/auth/strategies/pin.js +48 -0
- package/dist/src/auth/strategies/pin.js.map +1 -0
- package/dist/src/auth/strategies/session.d.ts +9 -0
- package/dist/src/auth/strategies/session.d.ts.map +1 -0
- package/dist/src/auth/strategies/session.js +42 -0
- package/dist/src/auth/strategies/session.js.map +1 -0
- package/dist/src/auth/types.d.ts +2 -0
- package/dist/src/auth/types.d.ts.map +1 -0
- package/dist/src/auth/types.js +2 -0
- package/dist/src/auth/types.js.map +1 -0
- package/dist/src/client.d.ts +63 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +81 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/components/BackendErrorGate.d.ts +10 -0
- package/dist/src/components/BackendErrorGate.d.ts.map +1 -0
- package/dist/src/components/BackendErrorGate.js +19 -0
- package/dist/src/components/BackendErrorGate.js.map +1 -0
- package/dist/src/components/ErrorBoundary.d.ts +17 -0
- package/dist/src/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/src/components/ErrorBoundary.js +23 -0
- package/dist/src/components/ErrorBoundary.js.map +1 -0
- package/dist/src/components/NotificationPanel.d.ts +9 -0
- package/dist/src/components/NotificationPanel.d.ts.map +1 -0
- package/dist/src/components/NotificationPanel.js +146 -0
- package/dist/src/components/NotificationPanel.js.map +1 -0
- package/dist/src/components/scope/ChildScopeDetailPage.d.ts +8 -0
- package/dist/src/components/scope/ChildScopeDetailPage.d.ts.map +1 -0
- package/dist/src/components/scope/ChildScopeDetailPage.js +79 -0
- package/dist/src/components/scope/ChildScopeDetailPage.js.map +1 -0
- package/dist/src/components/scope/ChildScopeListPage.d.ts +6 -0
- package/dist/src/components/scope/ChildScopeListPage.d.ts.map +1 -0
- package/dist/src/components/scope/ChildScopeListPage.js +111 -0
- package/dist/src/components/scope/ChildScopeListPage.js.map +1 -0
- package/dist/src/components/scope/CreateChildScopeButton.d.ts +14 -0
- package/dist/src/components/scope/CreateChildScopeButton.d.ts.map +1 -0
- package/dist/src/components/scope/CreateChildScopeButton.js +18 -0
- package/dist/src/components/scope/CreateChildScopeButton.js.map +1 -0
- package/dist/src/components/scope/CreateScopeDialog.d.ts +9 -0
- package/dist/src/components/scope/CreateScopeDialog.d.ts.map +1 -0
- package/dist/src/components/scope/CreateScopeDialog.js +137 -0
- package/dist/src/components/scope/CreateScopeDialog.js.map +1 -0
- package/dist/src/components/scope/JoinScopeDialog.d.ts +8 -0
- package/dist/src/components/scope/JoinScopeDialog.d.ts.map +1 -0
- package/dist/src/components/scope/JoinScopeDialog.js +115 -0
- package/dist/src/components/scope/JoinScopeDialog.js.map +1 -0
- package/dist/src/components/scope/ProfileScopeSection.d.ts +11 -0
- package/dist/src/components/scope/ProfileScopeSection.d.ts.map +1 -0
- package/dist/src/components/scope/ProfileScopeSection.js +63 -0
- package/dist/src/components/scope/ProfileScopeSection.js.map +1 -0
- package/dist/src/components/scope/ScopeSwitcher.d.ts +14 -0
- package/dist/src/components/scope/ScopeSwitcher.d.ts.map +1 -0
- package/dist/src/components/scope/ScopeSwitcher.js +131 -0
- package/dist/src/components/scope/ScopeSwitcher.js.map +1 -0
- package/dist/src/components/scope/SwitchScopeDialog.d.ts +8 -0
- package/dist/src/components/scope/SwitchScopeDialog.d.ts.map +1 -0
- package/dist/src/components/scope/SwitchScopeDialog.js +60 -0
- package/dist/src/components/scope/SwitchScopeDialog.js.map +1 -0
- package/dist/src/components/scope/useChildScopePermissions.d.ts +7 -0
- package/dist/src/components/scope/useChildScopePermissions.d.ts.map +1 -0
- package/dist/src/components/scope/useChildScopePermissions.js +34 -0
- package/dist/src/components/scope/useChildScopePermissions.js.map +1 -0
- package/dist/src/contexts/auth/AuthContext.d.ts +13 -0
- package/dist/src/contexts/auth/AuthContext.d.ts.map +1 -0
- package/dist/src/contexts/auth/AuthContext.js +23 -0
- package/dist/src/contexts/auth/AuthContext.js.map +1 -0
- package/dist/src/contexts/backend/BackendStatusContext.d.ts +21 -0
- package/dist/src/contexts/backend/BackendStatusContext.d.ts.map +1 -0
- package/dist/src/contexts/backend/BackendStatusContext.js +36 -0
- package/dist/src/contexts/backend/BackendStatusContext.js.map +1 -0
- package/dist/src/contexts/command/CommandContext.d.ts +30 -0
- package/dist/src/contexts/command/CommandContext.d.ts.map +1 -0
- package/dist/src/contexts/command/CommandContext.js +75 -0
- package/dist/src/contexts/command/CommandContext.js.map +1 -0
- package/dist/src/contexts/command/PanelSlotsContext.d.ts +2 -0
- package/dist/src/contexts/command/PanelSlotsContext.d.ts.map +1 -0
- package/dist/src/contexts/command/PanelSlotsContext.js +2 -0
- package/dist/src/contexts/command/PanelSlotsContext.js.map +1 -0
- package/dist/src/contexts/command/PanelStackContext.d.ts +2 -0
- package/dist/src/contexts/command/PanelStackContext.d.ts.map +1 -0
- package/dist/src/contexts/command/PanelStackContext.js +2 -0
- package/dist/src/contexts/command/PanelStackContext.js.map +1 -0
- package/dist/src/contexts/command/SearchPanelContext.d.ts +55 -0
- package/dist/src/contexts/command/SearchPanelContext.d.ts.map +1 -0
- package/dist/src/contexts/command/SearchPanelContext.js +327 -0
- package/dist/src/contexts/command/SearchPanelContext.js.map +1 -0
- package/dist/src/contexts/config/AppConfigContext.d.ts +8 -0
- package/dist/src/contexts/config/AppConfigContext.d.ts.map +1 -0
- package/dist/src/contexts/config/AppConfigContext.js +21 -0
- package/dist/src/contexts/config/AppConfigContext.js.map +1 -0
- package/dist/src/contexts/help/HelpContext.d.ts +30 -0
- package/dist/src/contexts/help/HelpContext.d.ts.map +1 -0
- package/dist/src/contexts/help/HelpContext.js +73 -0
- package/dist/src/contexts/help/HelpContext.js.map +1 -0
- package/dist/src/contexts/index.d.ts +10 -0
- package/dist/src/contexts/index.d.ts.map +1 -0
- package/dist/src/contexts/index.js +10 -0
- package/dist/src/contexts/index.js.map +1 -0
- package/dist/src/contexts/navigation/NavigationContext.d.ts +23 -0
- package/dist/src/contexts/navigation/NavigationContext.d.ts.map +1 -0
- package/dist/src/contexts/navigation/NavigationContext.js +294 -0
- package/dist/src/contexts/navigation/NavigationContext.js.map +1 -0
- package/dist/src/contexts/navigation/NavigationRegistryContext.d.ts +9 -0
- package/dist/src/contexts/navigation/NavigationRegistryContext.d.ts.map +1 -0
- package/dist/src/contexts/navigation/NavigationRegistryContext.js +17 -0
- package/dist/src/contexts/navigation/NavigationRegistryContext.js.map +1 -0
- package/dist/src/contexts/scope/ScopeContext.d.ts +40 -0
- package/dist/src/contexts/scope/ScopeContext.d.ts.map +1 -0
- package/dist/src/contexts/scope/ScopeContext.js +141 -0
- package/dist/src/contexts/scope/ScopeContext.js.map +1 -0
- package/dist/src/contexts/scope/index.d.ts +3 -0
- package/dist/src/contexts/scope/index.d.ts.map +1 -0
- package/dist/src/contexts/scope/index.js +3 -0
- package/dist/src/contexts/scope/index.js.map +1 -0
- package/dist/src/contexts/scope/scopeRef.d.ts +10 -0
- package/dist/src/contexts/scope/scopeRef.d.ts.map +1 -0
- package/dist/src/contexts/scope/scopeRef.js +10 -0
- package/dist/src/contexts/scope/scopeRef.js.map +1 -0
- package/dist/src/contexts/sidebar/use-sidebar.d.ts +2 -0
- package/dist/src/contexts/sidebar/use-sidebar.d.ts.map +1 -0
- package/dist/src/contexts/sidebar/use-sidebar.js +2 -0
- package/dist/src/contexts/sidebar/use-sidebar.js.map +1 -0
- package/dist/src/contexts/theme/ThemeContext.d.ts +21 -0
- package/dist/src/contexts/theme/ThemeContext.d.ts.map +1 -0
- package/dist/src/contexts/theme/ThemeContext.js +79 -0
- package/dist/src/contexts/theme/ThemeContext.js.map +1 -0
- package/dist/src/create-app.d.ts +47 -0
- package/dist/src/create-app.d.ts.map +1 -0
- package/dist/src/create-app.js +242 -0
- package/dist/src/create-app.js.map +1 -0
- package/dist/src/dashboard/command/CommandDialog.d.ts +2 -0
- package/dist/src/dashboard/command/CommandDialog.d.ts.map +1 -0
- package/dist/src/dashboard/command/CommandDialog.js +18 -0
- package/dist/src/dashboard/command/CommandDialog.js.map +1 -0
- package/dist/src/dashboard/command/SearchPanelBody.d.ts +2 -0
- package/dist/src/dashboard/command/SearchPanelBody.d.ts.map +1 -0
- package/dist/src/dashboard/command/SearchPanelBody.js +178 -0
- package/dist/src/dashboard/command/SearchPanelBody.js.map +1 -0
- package/dist/src/dashboard/command/SearchPanelHeader.d.ts +2 -0
- package/dist/src/dashboard/command/SearchPanelHeader.d.ts.map +1 -0
- package/dist/src/dashboard/command/SearchPanelHeader.js +13 -0
- package/dist/src/dashboard/command/SearchPanelHeader.js.map +1 -0
- package/dist/src/dashboard/command/panels/GeneralPanel.d.ts +9 -0
- package/dist/src/dashboard/command/panels/GeneralPanel.d.ts.map +1 -0
- package/dist/src/dashboard/command/panels/GeneralPanel.js +12 -0
- package/dist/src/dashboard/command/panels/GeneralPanel.js.map +1 -0
- package/dist/src/dashboard/command/panels/NavigationPanel.d.ts +2 -0
- package/dist/src/dashboard/command/panels/NavigationPanel.d.ts.map +1 -0
- package/dist/src/dashboard/command/panels/NavigationPanel.js +74 -0
- package/dist/src/dashboard/command/panels/NavigationPanel.js.map +1 -0
- package/dist/src/dashboard/command/panels/PlaceholderPanel.d.ts +9 -0
- package/dist/src/dashboard/command/panels/PlaceholderPanel.d.ts.map +1 -0
- package/dist/src/dashboard/command/panels/PlaceholderPanel.js +12 -0
- package/dist/src/dashboard/command/panels/PlaceholderPanel.js.map +1 -0
- package/dist/src/dashboard/command/panels/ProfilePanel.d.ts +2 -0
- package/dist/src/dashboard/command/panels/ProfilePanel.d.ts.map +1 -0
- package/dist/src/dashboard/command/panels/ProfilePanel.js +133 -0
- package/dist/src/dashboard/command/panels/ProfilePanel.js.map +1 -0
- package/dist/src/dashboard/command/panels/SecurityPanel.d.ts +2 -0
- package/dist/src/dashboard/command/panels/SecurityPanel.d.ts.map +1 -0
- package/dist/src/dashboard/command/panels/SecurityPanel.js +237 -0
- package/dist/src/dashboard/command/panels/SecurityPanel.js.map +1 -0
- package/dist/src/dashboard/command/panels/ThemePanel.d.ts +2 -0
- package/dist/src/dashboard/command/panels/ThemePanel.d.ts.map +1 -0
- package/dist/src/dashboard/command/panels/ThemePanel.js +11 -0
- package/dist/src/dashboard/command/panels/ThemePanel.js.map +1 -0
- package/dist/src/dashboard/headers/MainHeader.d.ts +16 -0
- package/dist/src/dashboard/headers/MainHeader.d.ts.map +1 -0
- package/dist/src/dashboard/headers/MainHeader.js +16 -0
- package/dist/src/dashboard/headers/MainHeader.js.map +1 -0
- package/dist/src/dashboard/headers/MainHeaderDesktop.d.ts +4 -0
- package/dist/src/dashboard/headers/MainHeaderDesktop.d.ts.map +1 -0
- package/dist/src/dashboard/headers/MainHeaderDesktop.js +120 -0
- package/dist/src/dashboard/headers/MainHeaderDesktop.js.map +1 -0
- package/dist/src/dashboard/headers/MainHeaderMobile.d.ts +4 -0
- package/dist/src/dashboard/headers/MainHeaderMobile.d.ts.map +1 -0
- package/dist/src/dashboard/headers/MainHeaderMobile.js +14 -0
- package/dist/src/dashboard/headers/MainHeaderMobile.js.map +1 -0
- package/dist/src/dashboard/headers/NotificationsPopover.d.ts +2 -0
- package/dist/src/dashboard/headers/NotificationsPopover.d.ts.map +1 -0
- package/dist/src/dashboard/headers/NotificationsPopover.js +14 -0
- package/dist/src/dashboard/headers/NotificationsPopover.js.map +1 -0
- package/dist/src/dashboard/headers/ProfilePopover.d.ts +2 -0
- package/dist/src/dashboard/headers/ProfilePopover.d.ts.map +1 -0
- package/dist/src/dashboard/headers/ProfilePopover.js +83 -0
- package/dist/src/dashboard/headers/ProfilePopover.js.map +1 -0
- package/dist/src/dashboard/headers/ToolHeader.d.ts +2 -0
- package/dist/src/dashboard/headers/ToolHeader.d.ts.map +1 -0
- package/dist/src/dashboard/headers/ToolHeader.js +16 -0
- package/dist/src/dashboard/headers/ToolHeader.js.map +1 -0
- package/dist/src/dashboard/help/HelpPanel.d.ts +3 -0
- package/dist/src/dashboard/help/HelpPanel.d.ts.map +1 -0
- package/dist/src/dashboard/help/HelpPanel.js +451 -0
- package/dist/src/dashboard/help/HelpPanel.js.map +1 -0
- package/dist/src/dashboard/index.d.ts +16 -0
- package/dist/src/dashboard/index.d.ts.map +1 -0
- package/dist/src/dashboard/index.js +16 -0
- package/dist/src/dashboard/index.js.map +1 -0
- package/dist/src/dashboard/layout/DashboardLayout.d.ts +23 -0
- package/dist/src/dashboard/layout/DashboardLayout.d.ts.map +1 -0
- package/dist/src/dashboard/layout/DashboardLayout.js +15 -0
- package/dist/src/dashboard/layout/DashboardLayout.js.map +1 -0
- package/dist/src/dashboard/layout/DashboardSidebarContent.d.ts +2 -0
- package/dist/src/dashboard/layout/DashboardSidebarContent.d.ts.map +1 -0
- package/dist/src/dashboard/layout/DashboardSidebarContent.js +33 -0
- package/dist/src/dashboard/layout/DashboardSidebarContent.js.map +1 -0
- package/dist/src/dashboard/layout/SidebarDrawer.d.ts +2 -0
- package/dist/src/dashboard/layout/SidebarDrawer.d.ts.map +1 -0
- package/dist/src/dashboard/layout/SidebarDrawer.js +33 -0
- package/dist/src/dashboard/layout/SidebarDrawer.js.map +1 -0
- package/dist/src/dashboard/layout/ToolSidebar.d.ts +9 -0
- package/dist/src/dashboard/layout/ToolSidebar.d.ts.map +1 -0
- package/dist/src/dashboard/layout/ToolSidebar.js +11 -0
- package/dist/src/dashboard/layout/ToolSidebar.js.map +1 -0
- package/dist/src/dashboard/navigation/IconRail.d.ts +11 -0
- package/dist/src/dashboard/navigation/IconRail.d.ts.map +1 -0
- package/dist/src/dashboard/navigation/IconRail.js +47 -0
- package/dist/src/dashboard/navigation/IconRail.js.map +1 -0
- package/dist/src/dashboard/navigation/MoreToolsPopover.d.ts +2 -0
- package/dist/src/dashboard/navigation/MoreToolsPopover.d.ts.map +1 -0
- package/dist/src/dashboard/navigation/MoreToolsPopover.js +22 -0
- package/dist/src/dashboard/navigation/MoreToolsPopover.js.map +1 -0
- package/dist/src/dashboard/navigation/icon-rail.d.ts +8 -0
- package/dist/src/dashboard/navigation/icon-rail.d.ts.map +1 -0
- package/dist/src/dashboard/navigation/icon-rail.js +36 -0
- package/dist/src/dashboard/navigation/icon-rail.js.map +1 -0
- package/dist/src/dashboard/navigation/use-active-tool.d.ts +2 -0
- package/dist/src/dashboard/navigation/use-active-tool.d.ts.map +1 -0
- package/dist/src/dashboard/navigation/use-active-tool.js +41 -0
- package/dist/src/dashboard/navigation/use-active-tool.js.map +1 -0
- package/dist/src/dashboard/settings/ThemeSettings.d.ts +2 -0
- package/dist/src/dashboard/settings/ThemeSettings.d.ts.map +1 -0
- package/dist/src/dashboard/settings/ThemeSettings.js +49 -0
- package/dist/src/dashboard/settings/ThemeSettings.js.map +1 -0
- package/dist/src/guards/SetupGate.d.ts +9 -0
- package/dist/src/guards/SetupGate.d.ts.map +1 -0
- package/dist/src/guards/SetupGate.js +30 -0
- package/dist/src/guards/SetupGate.js.map +1 -0
- package/dist/src/guards/UnifiedGuard.d.ts +32 -0
- package/dist/src/guards/UnifiedGuard.d.ts.map +1 -0
- package/dist/src/guards/UnifiedGuard.js +258 -0
- package/dist/src/guards/UnifiedGuard.js.map +1 -0
- package/dist/src/guards/index.d.ts +3 -0
- package/dist/src/guards/index.d.ts.map +1 -0
- package/dist/src/guards/index.js +3 -0
- package/dist/src/guards/index.js.map +1 -0
- package/dist/src/hooks/index.d.ts +9 -0
- package/dist/src/hooks/index.d.ts.map +1 -0
- package/dist/src/hooks/index.js +9 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/useCheckAccess.d.ts +16 -0
- package/dist/src/hooks/useCheckAccess.d.ts.map +1 -0
- package/dist/src/hooks/useCheckAccess.js +25 -0
- package/dist/src/hooks/useCheckAccess.js.map +1 -0
- package/dist/src/hooks/useCreateScope.d.ts +42 -0
- package/dist/src/hooks/useCreateScope.d.ts.map +1 -0
- package/dist/src/hooks/useCreateScope.js +28 -0
- package/dist/src/hooks/useCreateScope.js.map +1 -0
- package/dist/src/hooks/useInvitations.d.ts +82 -0
- package/dist/src/hooks/useInvitations.d.ts.map +1 -0
- package/dist/src/hooks/useInvitations.js +39 -0
- package/dist/src/hooks/useInvitations.js.map +1 -0
- package/dist/src/hooks/useJoinCode.d.ts +52 -0
- package/dist/src/hooks/useJoinCode.d.ts.map +1 -0
- package/dist/src/hooks/useJoinCode.js +37 -0
- package/dist/src/hooks/useJoinCode.js.map +1 -0
- package/dist/src/hooks/usePreference.d.ts +20 -0
- package/dist/src/hooks/usePreference.d.ts.map +1 -0
- package/dist/src/hooks/usePreference.js +132 -0
- package/dist/src/hooks/usePreference.js.map +1 -0
- package/dist/src/hooks/useScopeList.d.ts +32 -0
- package/dist/src/hooks/useScopeList.d.ts.map +1 -0
- package/dist/src/hooks/useScopeList.js +24 -0
- package/dist/src/hooks/useScopeList.js.map +1 -0
- package/dist/src/hooks/useScopeMenuPolicy.d.ts +23 -0
- package/dist/src/hooks/useScopeMenuPolicy.d.ts.map +1 -0
- package/dist/src/hooks/useScopeMenuPolicy.js +59 -0
- package/dist/src/hooks/useScopeMenuPolicy.js.map +1 -0
- package/dist/src/hooks/useScopePermissions.d.ts +9 -0
- package/dist/src/hooks/useScopePermissions.d.ts.map +1 -0
- package/dist/src/hooks/useScopePermissions.js +84 -0
- package/dist/src/hooks/useScopePermissions.js.map +1 -0
- package/dist/src/lib/api-client.d.ts +27 -0
- package/dist/src/lib/api-client.d.ts.map +1 -0
- package/dist/src/lib/api-client.js +45 -0
- package/dist/src/lib/api-client.js.map +1 -0
- package/dist/src/lib/backend-status.d.ts +14 -0
- package/dist/src/lib/backend-status.d.ts.map +1 -0
- package/dist/src/lib/backend-status.js +27 -0
- package/dist/src/lib/backend-status.js.map +1 -0
- package/dist/src/lib/config.d.ts +71 -0
- package/dist/src/lib/config.d.ts.map +1 -0
- package/dist/src/lib/config.js +7 -0
- package/dist/src/lib/config.js.map +1 -0
- package/dist/src/lib/icon-resolver.d.ts +2 -0
- package/dist/src/lib/icon-resolver.d.ts.map +1 -0
- package/dist/src/lib/icon-resolver.js +2 -0
- package/dist/src/lib/icon-resolver.js.map +1 -0
- package/dist/src/lib/index.d.ts +13 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +13 -0
- package/dist/src/lib/index.js.map +1 -0
- package/dist/src/lib/navigation-tools.d.ts +27 -0
- package/dist/src/lib/navigation-tools.d.ts.map +1 -0
- package/dist/src/lib/navigation-tools.js +49 -0
- package/dist/src/lib/navigation-tools.js.map +1 -0
- package/dist/src/lib/onboarding-registry.d.ts +14 -0
- package/dist/src/lib/onboarding-registry.d.ts.map +1 -0
- package/dist/src/lib/onboarding-registry.js +12 -0
- package/dist/src/lib/onboarding-registry.js.map +1 -0
- package/dist/src/lib/permissions-store.d.ts +12 -0
- package/dist/src/lib/permissions-store.d.ts.map +1 -0
- package/dist/src/lib/permissions-store.js +12 -0
- package/dist/src/lib/permissions-store.js.map +1 -0
- package/dist/src/lib/platform-api.d.ts +3527 -0
- package/dist/src/lib/platform-api.d.ts.map +1 -0
- package/dist/src/lib/platform-api.js +26 -0
- package/dist/src/lib/platform-api.js.map +1 -0
- package/dist/src/lib/resolve-redirect.d.ts +36 -0
- package/dist/src/lib/resolve-redirect.d.ts.map +1 -0
- package/dist/src/lib/resolve-redirect.js +91 -0
- package/dist/src/lib/resolve-redirect.js.map +1 -0
- package/dist/src/lib/scope-menu-policy.d.ts +13 -0
- package/dist/src/lib/scope-menu-policy.d.ts.map +1 -0
- package/dist/src/lib/scope-menu-policy.js +15 -0
- package/dist/src/lib/scope-menu-policy.js.map +1 -0
- package/dist/src/lib/scope-query-keys.d.ts +38 -0
- package/dist/src/lib/scope-query-keys.d.ts.map +1 -0
- package/dist/src/lib/scope-query-keys.js +35 -0
- package/dist/src/lib/scope-query-keys.js.map +1 -0
- package/dist/src/lib/scopeLink.d.ts +24 -0
- package/dist/src/lib/scopeLink.d.ts.map +1 -0
- package/dist/src/lib/scopeLink.js +57 -0
- package/dist/src/lib/scopeLink.js.map +1 -0
- package/dist/src/lib/tool-api-types.d.ts +40 -0
- package/dist/src/lib/tool-api-types.d.ts.map +1 -0
- package/dist/src/lib/tool-api-types.js +23 -0
- package/dist/src/lib/tool-api-types.js.map +1 -0
- package/dist/src/lib/types.d.ts +122 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +47 -0
- package/dist/src/lib/types.js.map +1 -0
- package/dist/src/lib/withDashboardChrome.d.ts +18 -0
- package/dist/src/lib/withDashboardChrome.d.ts.map +1 -0
- package/dist/src/lib/withDashboardChrome.js +46 -0
- package/dist/src/lib/withDashboardChrome.js.map +1 -0
- package/dist/src/onboarding/CreateScopeWizardStep.d.ts +14 -0
- package/dist/src/onboarding/CreateScopeWizardStep.d.ts.map +1 -0
- package/dist/src/onboarding/CreateScopeWizardStep.js +109 -0
- package/dist/src/onboarding/CreateScopeWizardStep.js.map +1 -0
- package/dist/src/onboarding/ResolveStep.d.ts +17 -0
- package/dist/src/onboarding/ResolveStep.d.ts.map +1 -0
- package/dist/src/onboarding/ResolveStep.js +101 -0
- package/dist/src/onboarding/ResolveStep.js.map +1 -0
- package/dist/src/onboarding/StepProps.d.ts +10 -0
- package/dist/src/onboarding/StepProps.d.ts.map +1 -0
- package/dist/src/onboarding/StepProps.js +2 -0
- package/dist/src/onboarding/StepProps.js.map +1 -0
- package/dist/src/onboarding/WizardContext.d.ts +20 -0
- package/dist/src/onboarding/WizardContext.d.ts.map +1 -0
- package/dist/src/onboarding/WizardContext.js +17 -0
- package/dist/src/onboarding/WizardContext.js.map +1 -0
- package/dist/src/onboarding/WizardPage.d.ts +18 -0
- package/dist/src/onboarding/WizardPage.d.ts.map +1 -0
- package/dist/src/onboarding/WizardPage.js +9 -0
- package/dist/src/onboarding/WizardPage.js.map +1 -0
- package/dist/src/onboarding/WizardShell.d.ts +43 -0
- package/dist/src/onboarding/WizardShell.d.ts.map +1 -0
- package/dist/src/onboarding/WizardShell.js +162 -0
- package/dist/src/onboarding/WizardShell.js.map +1 -0
- package/dist/src/onboarding/index.d.ts +11 -0
- package/dist/src/onboarding/index.d.ts.map +1 -0
- package/dist/src/onboarding/index.js +8 -0
- package/dist/src/onboarding/index.js.map +1 -0
- package/dist/src/onboarding/sortSteps.d.ts +15 -0
- package/dist/src/onboarding/sortSteps.d.ts.map +1 -0
- package/dist/src/onboarding/sortSteps.js +93 -0
- package/dist/src/onboarding/sortSteps.js.map +1 -0
- package/dist/src/onboarding/steps/AddPasskeyStep.d.ts +3 -0
- package/dist/src/onboarding/steps/AddPasskeyStep.d.ts.map +1 -0
- package/dist/src/onboarding/steps/AddPasskeyStep.js +54 -0
- package/dist/src/onboarding/steps/AddPasskeyStep.js.map +1 -0
- package/dist/src/onboarding/steps/SetupWizardPage.d.ts +2 -0
- package/dist/src/onboarding/steps/SetupWizardPage.d.ts.map +1 -0
- package/dist/src/onboarding/steps/SetupWizardPage.js +93 -0
- package/dist/src/onboarding/steps/SetupWizardPage.js.map +1 -0
- package/dist/src/onboarding/steps/setup-steps.d.ts +6 -0
- package/dist/src/onboarding/steps/setup-steps.d.ts.map +1 -0
- package/dist/src/onboarding/steps/setup-steps.js +75 -0
- package/dist/src/onboarding/steps/setup-steps.js.map +1 -0
- package/dist/src/pages/AcceptInvitePage.d.ts +2 -0
- package/dist/src/pages/AcceptInvitePage.d.ts.map +1 -0
- package/dist/src/pages/AcceptInvitePage.js +103 -0
- package/dist/src/pages/AcceptInvitePage.js.map +1 -0
- package/dist/src/pages/BackendErrorPage.d.ts +6 -0
- package/dist/src/pages/BackendErrorPage.d.ts.map +1 -0
- package/dist/src/pages/BackendErrorPage.js +6 -0
- package/dist/src/pages/BackendErrorPage.js.map +1 -0
- package/dist/src/pages/ContextSelectionPage.d.ts +2 -0
- package/dist/src/pages/ContextSelectionPage.d.ts.map +1 -0
- package/dist/src/pages/ContextSelectionPage.js +166 -0
- package/dist/src/pages/ContextSelectionPage.js.map +1 -0
- package/dist/src/pages/DefaultCreateScopePage.d.ts +17 -0
- package/dist/src/pages/DefaultCreateScopePage.d.ts.map +1 -0
- package/dist/src/pages/DefaultCreateScopePage.js +50 -0
- package/dist/src/pages/DefaultCreateScopePage.js.map +1 -0
- package/dist/src/pages/ForgotPasswordPage.d.ts +2 -0
- package/dist/src/pages/ForgotPasswordPage.d.ts.map +1 -0
- package/dist/src/pages/ForgotPasswordPage.js +44 -0
- package/dist/src/pages/ForgotPasswordPage.js.map +1 -0
- package/dist/src/pages/GetStartedPage.d.ts +6 -0
- package/dist/src/pages/GetStartedPage.d.ts.map +1 -0
- package/dist/src/pages/GetStartedPage.js +49 -0
- package/dist/src/pages/GetStartedPage.js.map +1 -0
- package/dist/src/pages/InviteErrorPage.d.ts +2 -0
- package/dist/src/pages/InviteErrorPage.d.ts.map +1 -0
- package/dist/src/pages/InviteErrorPage.js +42 -0
- package/dist/src/pages/InviteErrorPage.js.map +1 -0
- package/dist/src/pages/LoginPage.d.ts +2 -0
- package/dist/src/pages/LoginPage.d.ts.map +1 -0
- package/dist/src/pages/LoginPage.js +63 -0
- package/dist/src/pages/LoginPage.js.map +1 -0
- package/dist/src/pages/NoAccessPage.d.ts +2 -0
- package/dist/src/pages/NoAccessPage.d.ts.map +1 -0
- package/dist/src/pages/NoAccessPage.js +35 -0
- package/dist/src/pages/NoAccessPage.js.map +1 -0
- package/dist/src/pages/NotFoundPage.d.ts +2 -0
- package/dist/src/pages/NotFoundPage.d.ts.map +1 -0
- package/dist/src/pages/NotFoundPage.js +8 -0
- package/dist/src/pages/NotFoundPage.js.map +1 -0
- package/dist/src/pages/PostLoginResolver.d.ts +9 -0
- package/dist/src/pages/PostLoginResolver.d.ts.map +1 -0
- package/dist/src/pages/PostLoginResolver.js +50 -0
- package/dist/src/pages/PostLoginResolver.js.map +1 -0
- package/dist/src/pages/ProfilePage.d.ts +2 -0
- package/dist/src/pages/ProfilePage.d.ts.map +1 -0
- package/dist/src/pages/ProfilePage.js +353 -0
- package/dist/src/pages/ProfilePage.js.map +1 -0
- package/dist/src/pages/ResetPasswordPage.d.ts +2 -0
- package/dist/src/pages/ResetPasswordPage.d.ts.map +1 -0
- package/dist/src/pages/ResetPasswordPage.js +55 -0
- package/dist/src/pages/ResetPasswordPage.js.map +1 -0
- package/dist/src/pages/SignupPage.d.ts +2 -0
- package/dist/src/pages/SignupPage.d.ts.map +1 -0
- package/dist/src/pages/SignupPage.js +54 -0
- package/dist/src/pages/SignupPage.js.map +1 -0
- package/dist/src/pages/index.d.ts +15 -0
- package/dist/src/pages/index.d.ts.map +1 -0
- package/dist/src/pages/index.js +15 -0
- package/dist/src/pages/index.js.map +1 -0
- package/dist/src/platform-surface.d.ts +26 -0
- package/dist/src/platform-surface.d.ts.map +1 -0
- package/dist/src/platform-surface.js +302 -0
- package/dist/src/platform-surface.js.map +1 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +2 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAkC,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAA;AAC5F,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAElF,MAAM,UAAU,UAAU;IACxB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAKzC,CAAA;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;IACtC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC5C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7C,IAAI,SAAS;QAAE,OAAO,IAAI,CAAA;IAC1B,IAAI,OAAO;QAAE,OAAO,KAAC,QAAQ,IAAC,EAAE,EAAG,MAAM,CAAC,QAA+B,IAAI,GAAG,GAAI,CAAA;IAEpF,MAAM,YAAY,GAAG,KAAK,EAAE,CAAkB,EAAE,EAAE;QAChD,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEd,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACzB,QAAQ,CAAC,8CAA8C,CAAC,CAAA;YACxD,OAAM;QACR,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;YACjE,KAAK;YACL,QAAQ;YACR,IAAI,EAAE,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,IAAI,EAAE;YACvC,SAAS;YACT,QAAQ;SACwC,CAAC,CAAA;QAEnD,IAAI,WAAW,EAAE,CAAC;YAChB,UAAU,CAAC,KAAK,CAAC,CAAA;YACjB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;YAC3C,QAAQ,CAAC,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,UAAU,IAAI,0BAA0B,CAAC,CAAA;YACrF,OAAM;QACR,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,UAAU,CAAC,KAAK,CAAC,CAAA;YACjB,QAAQ,CAAC,yBAAyB,CAAC,CAAA;YACnC,OAAM;QACR,CAAC;QAED,MAAM,UAAU,CAAC,UAAU,EAAE,CAAA;QAC7B,UAAU,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC,CAAA;IAED,OAAO,CACL,cAAK,SAAS,EAAC,8DAA8D,YAC3E,eAAK,SAAS,EAAC,sBAAsB,aACnC,eAAK,SAAS,EAAC,wDAAwD,aACrE,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cAAK,SAAS,EAAC,gGAAgG,YAC7G,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,GACxB,EACN,aAAI,SAAS,EAAC,mDAAmD,oCAE5D,EACL,YAAG,SAAS,EAAC,oCAAoC,mDAAuC,IACpF,EAEL,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,IAAI,CACrC,eAAK,SAAS,EAAC,yFAAyF,aACtG,KAAC,QAAQ,IAAC,SAAS,EAAC,+BAA+B,GAAG,EACtD,aAAG,SAAS,EAAC,4CAA4C,aACvD,eAAM,SAAS,EAAC,eAAe,YAAE,MAAM,CAAC,OAAO,GAAQ,8BAAyB,GAAG,EACnF,eAAM,SAAS,EAAC,eAAe,YAAE,MAAM,CAAC,SAAS,GAAQ,OAEzD,cAAM,oCAEJ,IACA,CACP,EAED,gBAAM,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAC,WAAW,aAChD,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,6EAA6E,YACzF,KAAK,GACF,CACP,EAED,eAAK,SAAS,EAAC,YAAY,aACzB,eAAK,SAAS,EAAC,QAAQ,aACrB,gBACE,OAAO,EAAC,WAAW,EACnB,SAAS,EAAC,oDAAoD,2BAGxD,EACR,eAAK,SAAS,EAAC,UAAU,aACvB,KAAC,IAAI,IAAC,SAAS,EAAC,wEAAwE,GAAG,EAC3F,gBACE,EAAE,EAAC,WAAW,EACd,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7C,WAAW,EAAC,MAAM,EAClB,QAAQ,QACR,SAAS,EAAC,gOAAgO,GAC1O,IACE,IACF,EACN,eAAK,SAAS,EAAC,QAAQ,aACrB,gBACE,OAAO,EAAC,UAAU,EAClB,SAAS,EAAC,oDAAoD,0BAGxD,EACR,cAAK,SAAS,EAAC,UAAU,YACvB,gBACE,EAAE,EAAC,UAAU,EACb,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,WAAW,EAAC,KAAK,EACjB,QAAQ,QACR,SAAS,EAAC,+NAA+N,GACzO,GACE,IACF,IACF,EAEN,0BACE,gBAAO,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,oDAAoD,sBAE7E,EACR,eAAK,SAAS,EAAC,UAAU,aACvB,KAAC,IAAI,IAAC,SAAS,EAAC,wEAAwE,GAAG,EAC3F,gBACE,EAAE,EAAC,OAAO,EACV,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,WAAW,EAAC,kBAAkB,EAC9B,QAAQ,QACR,QAAQ,EAAE,CAAC,CAAC,WAAW,EACvB,SAAS,EAAE,kOAAkO,WAAW,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAAE,EAAE,GACjS,IACE,IACF,EAEN,0BACE,gBACE,OAAO,EAAC,UAAU,EAClB,SAAS,EAAC,oDAAoD,yBAGxD,EACR,eAAK,SAAS,EAAC,UAAU,aACvB,KAAC,IAAI,IAAC,SAAS,EAAC,wEAAwE,GAAG,EAC3F,gBACE,EAAE,EAAC,UAAU,EACb,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EACxC,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,WAAW,EAAC,kDAAU,EACtB,QAAQ,QACR,SAAS,EAAC,iOAAiO,GAC3O,EACF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,EAC7C,SAAS,EAAC,yGAAyG,YAElH,YAAY,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAC,GAAG,IAAC,SAAS,EAAC,SAAS,GAAG,GACrE,IACL,EACN,KAAC,qBAAqB,IAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,GAAI,IACxD,EAEN,kBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAC,0LAA0L,aAEnM,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,EAClD,CAAC,OAAO,IAAI,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,GAAG,IACxC,IACJ,EAEP,eAAK,SAAS,EAAC,2DAA2D,aACxE,KAAC,IAAI,IACH,EAAE,EAAC,QAAQ,EACX,MAAM,EAAE,MAAgC,EACxC,SAAS,EAAC,mKAAmK,wBAGxK,EACP,cAAK,SAAS,EAAC,4FAA4F,wBAErG,IACF,IACF,EAEN,aAAG,SAAS,EAAC,qDAAqD,uDACzB,GAAG,EAC1C,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,oDAAoD,iCAE3E,EAAC,GAAG,SACT,GAAG,EACP,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,oDAAoD,+BAE3E,SAEP,IACA,GACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -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"}
|