@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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024-present Your Digital Toolbox
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# @ydtb/tk-scope-app
|
|
2
|
+
|
|
3
|
+
Runtime-aware app host for tk-scope.
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
This package owns the **live application integration layer**.
|
|
8
|
+
|
|
9
|
+
Examples:
|
|
10
|
+
- app assembly
|
|
11
|
+
- routing integration
|
|
12
|
+
- auth wiring
|
|
13
|
+
- scope querying
|
|
14
|
+
- permissions wiring
|
|
15
|
+
- command/help/notification runtime behavior
|
|
16
|
+
- adapting live app state into shell props
|
|
17
|
+
|
|
18
|
+
Rule of thumb:
|
|
19
|
+
- if it needs real app state, router state, backend data, permissions, or platform policy, it belongs here
|
|
20
|
+
|
|
21
|
+
## Relationship to other workspace packages
|
|
22
|
+
|
|
23
|
+
- **Consumes `@ydtb/tk-scope-shell`** for reusable dashboard chrome
|
|
24
|
+
- **Consumes `@ydtb/tk-scope-ui`** for generic reusable components
|
|
25
|
+
- Sits above both of those packages as the runtime host layer
|
|
26
|
+
|
|
27
|
+
## Boundary
|
|
28
|
+
|
|
29
|
+
`@ydtb/tk-scope-app` should:
|
|
30
|
+
- wire runtime state into the shell
|
|
31
|
+
- adapt platform/tool data into presentational shell props
|
|
32
|
+
- assemble the real application host
|
|
33
|
+
|
|
34
|
+
`@ydtb/tk-scope-app` should not:
|
|
35
|
+
- become the long-term owner of reusable shell chrome
|
|
36
|
+
- push generic reusable components down into app-local code
|
|
37
|
+
|
|
38
|
+
## Dependency direction
|
|
39
|
+
|
|
40
|
+
- `@ydtb/tk-scope-ui` → reusable components
|
|
41
|
+
- `@ydtb/tk-scope-shell` → reusable dashboard shell/chrome
|
|
42
|
+
- `@ydtb/tk-scope-app` → runtime-aware host adapter
|
|
43
|
+
|
|
44
|
+
## Mental model
|
|
45
|
+
|
|
46
|
+
- **ui** = components
|
|
47
|
+
- **shell** = chrome
|
|
48
|
+
- **app** = runtime wiring
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ReactNode, type ComponentType } from "react";
|
|
2
|
+
import type { AuthComponentProps, BrandingConfig } from "../lib/types.ts";
|
|
3
|
+
interface AuthStrategyGateProps {
|
|
4
|
+
/** Auth strategy name(s) — determines which validator + default component to use */
|
|
5
|
+
strategy: string | string[];
|
|
6
|
+
/** Optional custom auth component (overrides the default for the strategy) */
|
|
7
|
+
component?: ComponentType<AuthComponentProps>;
|
|
8
|
+
/** Optional branding configuration for the login UI */
|
|
9
|
+
branding?: BrandingConfig;
|
|
10
|
+
/** Content to render once authenticated */
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Auth gate component that conditionally renders children based on strategy authentication.
|
|
15
|
+
*
|
|
16
|
+
* Flow:
|
|
17
|
+
* 1. Checks if user is authenticated for the current strategy
|
|
18
|
+
* 2. If not: renders the auth component (custom or default)
|
|
19
|
+
* 3. If yes: renders children
|
|
20
|
+
* 4. Manages the onAuthenticate -> validator -> result flow
|
|
21
|
+
* 5. Handles error/loading state
|
|
22
|
+
*
|
|
23
|
+
* For 'none' strategy, children are rendered immediately without any gate.
|
|
24
|
+
*/
|
|
25
|
+
export declare function AuthStrategyGate({ strategy, component: AuthComponent, branding, children, }: AuthStrategyGateProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=AuthStrategyGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthStrategyGate.d.ts","sourceRoot":"","sources":["../../../src/auth/AuthStrategyGate.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAIrF,UAAU,qBAAqB;IAC7B,oFAAoF;IACpF,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC3B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAA;IAC7C,uDAAuD;IACvD,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,2CAA2C;IAC3C,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,QAAa,EACb,QAAQ,GACT,EAAE,qBAAqB,2CAoDvB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback } from "react";
|
|
3
|
+
import { getValidator } from "./strategies/index.js";
|
|
4
|
+
import { getDefaultComponent } from "./components/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Auth gate component that conditionally renders children based on strategy authentication.
|
|
7
|
+
*
|
|
8
|
+
* Flow:
|
|
9
|
+
* 1. Checks if user is authenticated for the current strategy
|
|
10
|
+
* 2. If not: renders the auth component (custom or default)
|
|
11
|
+
* 3. If yes: renders children
|
|
12
|
+
* 4. Manages the onAuthenticate -> validator -> result flow
|
|
13
|
+
* 5. Handles error/loading state
|
|
14
|
+
*
|
|
15
|
+
* For 'none' strategy, children are rendered immediately without any gate.
|
|
16
|
+
*/
|
|
17
|
+
export function AuthStrategyGate({ strategy, component: AuthComponent, branding = {}, children, }) {
|
|
18
|
+
const [authenticated, setAuthenticated] = useState(false);
|
|
19
|
+
const [error, setError] = useState(null);
|
|
20
|
+
const [loading, setLoading] = useState(false);
|
|
21
|
+
const handleAuth = useCallback(async (credentials) => {
|
|
22
|
+
setLoading(true);
|
|
23
|
+
setError(null);
|
|
24
|
+
try {
|
|
25
|
+
const validator = getValidator(strategy);
|
|
26
|
+
const result = await validator(credentials);
|
|
27
|
+
if (result.success) {
|
|
28
|
+
setAuthenticated(true);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
setError(result.error ?? "Authentication failed");
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
const failResult = {
|
|
37
|
+
success: false,
|
|
38
|
+
error: "An unexpected error occurred",
|
|
39
|
+
};
|
|
40
|
+
setError(failResult.error);
|
|
41
|
+
return failResult;
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
setLoading(false);
|
|
45
|
+
}
|
|
46
|
+
}, [strategy]);
|
|
47
|
+
// 'none' strategy bypasses the gate entirely
|
|
48
|
+
const strategyName = Array.isArray(strategy) ? strategy[0] : strategy;
|
|
49
|
+
if (strategyName === "none") {
|
|
50
|
+
return _jsx(_Fragment, { children: children });
|
|
51
|
+
}
|
|
52
|
+
const LoginComponent = AuthComponent ?? getDefaultComponent(strategy);
|
|
53
|
+
if (!authenticated) {
|
|
54
|
+
return (_jsx(LoginComponent, { onAuthenticate: handleAuth, branding: branding, error: error, loading: loading }));
|
|
55
|
+
}
|
|
56
|
+
return _jsx(_Fragment, { children: children });
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=AuthStrategyGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthStrategyGate.js","sourceRoot":"","sources":["../../../src/auth/AuthStrategyGate.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAsC,MAAM,OAAO,CAAA;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAa3D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,QAAQ,GAAG,EAAE,EACb,QAAQ,GACc;IACtB,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzD,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,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EAAE,WAAoB,EAAuB,EAAE;QAClD,UAAU,CAAC,IAAI,CAAC,CAAA;QAChB,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;YACxC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAA;YAC3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,gBAAgB,CAAC,IAAI,CAAC,CAAA;YACxB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAA;YACnD,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,UAAU,GAAe;gBAC7B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,8BAA8B;aACtC,CAAA;YACD,QAAQ,CAAC,UAAU,CAAC,KAAM,CAAC,CAAA;YAC3B,OAAO,UAAU,CAAA;QACnB,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,6CAA6C;IAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IACrE,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,4BAAG,QAAQ,GAAI,CAAA;IACxB,CAAC;IAED,MAAM,cAAc,GAAG,aAAa,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAErE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CACL,KAAC,cAAc,IACb,cAAc,EAAE,UAAU,EAC1B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GAChB,CACH,CAAA;IACH,CAAC;IAED,OAAO,4BAAG,QAAQ,GAAI,CAAA;AACxB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AuthComponentProps } from "../../lib/types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Default device login component — API key + employee ID form.
|
|
4
|
+
* Implements AuthComponentProps for use with the 'device' auth strategy.
|
|
5
|
+
*/
|
|
6
|
+
export declare function DefaultDeviceLogin({ onAuthenticate, branding, error, loading, }: AuthComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=DefaultDeviceLogin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultDeviceLogin.d.ts","sourceRoot":"","sources":["../../../../src/auth/components/DefaultDeviceLogin.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAG5D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,QAAQ,EACR,KAAK,EACL,OAAO,GACR,EAAE,kBAAkB,2CAoHpB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Key, Hash, ArrowRight, Loader2 } from "lucide-react";
|
|
4
|
+
/**
|
|
5
|
+
* Default device login component — API key + employee ID form.
|
|
6
|
+
* Implements AuthComponentProps for use with the 'device' auth strategy.
|
|
7
|
+
*/
|
|
8
|
+
export function DefaultDeviceLogin({ onAuthenticate, branding, error, loading, }) {
|
|
9
|
+
const [apiKey, setApiKey] = useState("");
|
|
10
|
+
const [employeeId, setEmployeeId] = useState("");
|
|
11
|
+
const handleSubmit = async (e) => {
|
|
12
|
+
e.preventDefault();
|
|
13
|
+
const trimmedKey = apiKey.trim();
|
|
14
|
+
const trimmedId = employeeId.trim();
|
|
15
|
+
if (!trimmedKey || !trimmedId)
|
|
16
|
+
return;
|
|
17
|
+
await onAuthenticate({ apiKey: trimmedKey, employeeId: trimmedId });
|
|
18
|
+
};
|
|
19
|
+
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: [branding.logoUrl ? (_jsx("img", { src: branding.logoUrl, alt: `${branding.name ?? "App"} logo`, className: "h-14 w-14 rounded-2xl object-contain mb-4" })) : (_jsx("div", { className: "flex items-center justify-center w-14 h-14 rounded-2xl bg-primary text-primary-foreground mb-4", children: _jsx("span", { className: "text-xl font-bold", children: (branding.name ?? "A").charAt(0).toUpperCase() }) })), _jsx("h1", { className: "text-2xl font-bold text-foreground tracking-tight", children: branding.name ?? "Device Login" }), _jsx("p", { className: "text-muted-foreground text-sm mt-1", children: "Authenticate this device" })] }), _jsxs("form", { onSubmit: handleSubmit, noValidate: true, 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: "auth-api-key", className: "block text-sm font-semibold text-foreground mb-1.5", children: "API Key" }), _jsxs("div", { className: "relative", children: [_jsx(Key, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx("input", { id: "auth-api-key", type: "password", autoComplete: "off", value: apiKey, onChange: (e) => setApiKey(e.target.value), placeholder: "Enter API key", disabled: loading, 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", { children: [_jsx("label", { htmlFor: "auth-employee-id", className: "block text-sm font-semibold text-foreground mb-1.5", children: "Employee ID" }), _jsxs("div", { className: "relative", children: [_jsx(Hash, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx("input", { id: "auth-employee-id", type: "text", autoComplete: "off", value: employeeId, onChange: (e) => setEmployeeId(e.target.value), placeholder: "Enter Employee ID", disabled: loading, 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" })] })] }), _jsx("button", { type: "submit", disabled: loading || !apiKey.trim() || !employeeId.trim(), 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", children: loading ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Authenticating..."] })) : (_jsxs(_Fragment, { children: ["Authenticate", _jsx(ArrowRight, { className: "h-4 w-4" })] })) })] }), branding.poweredByText && (_jsx("p", { className: "text-center text-xs text-muted-foreground mt-5 px-4", children: branding.poweredByText }))] }) }) }));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=DefaultDeviceLogin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultDeviceLogin.js","sourceRoot":"","sources":["../../../../src/auth/components/DefaultDeviceLogin.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AuthComponentProps } from "../../lib/types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Default PIN login component — employee ID + PIN numpad.
|
|
4
|
+
* Implements AuthComponentProps for use with the 'pin' auth strategy.
|
|
5
|
+
* Generalized from the offers portal ServerAuthPage pattern.
|
|
6
|
+
*/
|
|
7
|
+
export declare function DefaultPinLogin({ onAuthenticate, branding, error, loading }: AuthComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=DefaultPinLogin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultPinLogin.d.ts","sourceRoot":"","sources":["../../../../src/auth/components/DefaultPinLogin.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAU5D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CA+M/F"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback } from "react";
|
|
3
|
+
import { ArrowRight, Loader2, Delete } from "lucide-react";
|
|
4
|
+
import { getStoredPinEmployeeId, getStoredPinEmployeeName, clearPinStorage, } from "../persistence/pin-storage.js";
|
|
5
|
+
/**
|
|
6
|
+
* Default PIN login component — employee ID + PIN numpad.
|
|
7
|
+
* Implements AuthComponentProps for use with the 'pin' auth strategy.
|
|
8
|
+
* Generalized from the offers portal ServerAuthPage pattern.
|
|
9
|
+
*/
|
|
10
|
+
export function DefaultPinLogin({ onAuthenticate, branding, error, loading }) {
|
|
11
|
+
const storedId = getStoredPinEmployeeId();
|
|
12
|
+
const storedName = getStoredPinEmployeeName();
|
|
13
|
+
const isReturningUser = !!storedId;
|
|
14
|
+
const [step, setStep] = useState(isReturningUser ? "pin" : "employee-id");
|
|
15
|
+
const [employeeId, setEmployeeId] = useState(storedId ?? "");
|
|
16
|
+
const [pin, setPin] = useState("");
|
|
17
|
+
const [localError, setLocalError] = useState(null);
|
|
18
|
+
const displayError = error ?? localError;
|
|
19
|
+
const handleNotYou = useCallback(() => {
|
|
20
|
+
clearPinStorage();
|
|
21
|
+
setEmployeeId("");
|
|
22
|
+
setPin("");
|
|
23
|
+
setLocalError(null);
|
|
24
|
+
setStep("employee-id");
|
|
25
|
+
}, []);
|
|
26
|
+
const handleAdvanceToPin = useCallback(() => {
|
|
27
|
+
const trimmed = employeeId.trim();
|
|
28
|
+
if (!trimmed) {
|
|
29
|
+
setLocalError("Please enter your Employee ID.");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
setLocalError(null);
|
|
33
|
+
setStep("pin");
|
|
34
|
+
setPin("");
|
|
35
|
+
}, [employeeId]);
|
|
36
|
+
const handlePinSubmit = useCallback(async () => {
|
|
37
|
+
const trimmedPin = pin.trim();
|
|
38
|
+
if (!trimmedPin) {
|
|
39
|
+
setLocalError("Please enter your PIN.");
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
setLocalError(null);
|
|
43
|
+
const result = await onAuthenticate({
|
|
44
|
+
employeeId: employeeId.trim(),
|
|
45
|
+
pin: trimmedPin,
|
|
46
|
+
});
|
|
47
|
+
if (!result.success) {
|
|
48
|
+
setPin("");
|
|
49
|
+
}
|
|
50
|
+
}, [employeeId, pin, onAuthenticate]);
|
|
51
|
+
const handleNumpadPress = (digit) => {
|
|
52
|
+
if (step === "employee-id") {
|
|
53
|
+
setEmployeeId((prev) => prev + digit);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
setPin((prev) => prev + digit);
|
|
57
|
+
}
|
|
58
|
+
if (displayError)
|
|
59
|
+
setLocalError(null);
|
|
60
|
+
};
|
|
61
|
+
const handleBackspace = () => {
|
|
62
|
+
if (step === "employee-id") {
|
|
63
|
+
setEmployeeId((prev) => prev.slice(0, -1));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
setPin((prev) => prev.slice(0, -1));
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const handleSubmit = () => {
|
|
70
|
+
if (step === "employee-id") {
|
|
71
|
+
handleAdvanceToPin();
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
void handlePinSubmit();
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const currentValue = step === "employee-id" ? employeeId : pin;
|
|
78
|
+
const maskedValue = step === "pin" ? "*".repeat(pin.length) : employeeId;
|
|
79
|
+
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: [branding.logoUrl ? (_jsx("img", { src: branding.logoUrl, alt: `${branding.name ?? "App"} logo`, className: "h-14 w-14 rounded-2xl object-contain mb-4" })) : (_jsx("div", { className: "flex items-center justify-center w-14 h-14 rounded-2xl bg-primary text-primary-foreground mb-4", children: _jsx("span", { className: "text-xl font-bold", children: (branding.name ?? "A").charAt(0).toUpperCase() }) })), _jsx("h1", { className: "text-2xl font-bold text-foreground tracking-tight", children: branding.name ?? "Sign In" }), _jsx("p", { className: "text-muted-foreground text-sm mt-1", children: "Sign in to continue" })] }), step === "pin" && isReturningUser && storedName && (_jsxs("div", { className: "-mt-2 mb-5 space-y-1 text-center", children: [_jsxs("p", { className: "text-sm font-medium text-foreground", children: ["Welcome back, ", storedName] }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Employee ID: ", storedId] }), _jsx("button", { type: "button", className: "text-sm font-medium text-primary hover:underline underline-offset-4", onClick: handleNotYou, children: "Not you?" })] })), displayError && (_jsx("div", { className: "rounded-lg bg-destructive/10 text-destructive text-sm text-center py-2 px-3 mb-4", children: displayError })), _jsxs("div", { className: "mb-4", children: [_jsx("label", { className: "block text-sm font-semibold text-foreground mb-1.5", children: step === "employee-id" ? "Employee ID" : "PIN" }), _jsx("div", { className: "flex h-[3.25rem] w-full items-center rounded-xl border border-border bg-muted/30 px-4 text-lg font-mono tracking-widest text-foreground", children: maskedValue || (_jsx("span", { className: "text-muted-foreground text-sm font-sans tracking-normal", children: step === "employee-id" ? "Enter your Employee ID" : "Enter your PIN" })) })] }), _jsxs("div", { className: "mx-auto grid w-full max-w-[17rem] grid-cols-3 gap-3", children: [["1", "2", "3", "4", "5", "6", "7", "8", "9"].map((digit) => (_jsx("button", { type: "button", onClick: () => handleNumpadPress(digit), disabled: loading, className: "flex items-center justify-center h-14 rounded-lg border border-border bg-card text-lg font-semibold text-foreground hover:bg-muted/50 active:bg-muted transition-colors disabled:opacity-50", children: digit }, digit))), _jsx("button", { type: "button", onClick: handleBackspace, disabled: loading || !currentValue, className: "flex items-center justify-center h-14 rounded-lg border border-border bg-card text-muted-foreground hover:bg-muted/50 active:bg-muted transition-colors disabled:opacity-50", children: _jsx(Delete, { className: "h-5 w-5" }) }), _jsx("button", { type: "button", onClick: () => handleNumpadPress("0"), disabled: loading, className: "flex items-center justify-center h-14 rounded-lg border border-border bg-card text-lg font-semibold text-foreground hover:bg-muted/50 active:bg-muted transition-colors disabled:opacity-50", children: "0" }), _jsx("button", { type: "button", onClick: handleSubmit, disabled: loading || !currentValue, className: "flex items-center justify-center h-14 rounded-lg bg-foreground text-background font-semibold hover:opacity-90 active:opacity-80 transition-opacity disabled:opacity-50", children: loading ? (_jsx(Loader2, { className: "h-5 w-5 animate-spin" })) : step === "employee-id" ? (_jsx(ArrowRight, { className: "h-5 w-5" })) : (_jsx(ArrowRight, { className: "h-5 w-5" })) })] }), step === "pin" && !isReturningUser && (_jsx("div", { className: "text-center mt-4", children: _jsx("button", { type: "button", className: "text-sm font-medium text-muted-foreground hover:text-foreground transition-colors", onClick: () => {
|
|
80
|
+
setStep("employee-id");
|
|
81
|
+
setPin("");
|
|
82
|
+
setLocalError(null);
|
|
83
|
+
}, children: "\u2190 Change Employee ID" }) })), branding.poweredByText && (_jsx("p", { className: "text-center text-xs text-muted-foreground mt-5 px-4", children: branding.poweredByText }))] }) }) }));
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=DefaultPinLogin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultPinLogin.js","sourceRoot":"","sources":["../../../../src/auth/components/DefaultPinLogin.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,eAAe,GAChB,MAAM,+BAA+B,CAAA;AAItC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAsB;IAC9F,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAA;IACzC,MAAM,UAAU,GAAG,wBAAwB,EAAE,CAAA;IAC7C,MAAM,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAA;IAElC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAW,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;IACnF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAC5D,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAEjE,MAAM,YAAY,GAAG,KAAK,IAAI,UAAU,CAAA;IAExC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,eAAe,EAAE,CAAA;QACjB,aAAa,CAAC,EAAE,CAAC,CAAA;QACjB,MAAM,CAAC,EAAE,CAAC,CAAA;QACV,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,CAAC,aAAa,CAAC,CAAA;IACxB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAA;QACjC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,aAAa,CAAC,gCAAgC,CAAC,CAAA;YAC/C,OAAM;QACR,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,MAAM,CAAC,EAAE,CAAC,CAAA;IACZ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhB,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,aAAa,CAAC,wBAAwB,CAAC,CAAA;YACvC,OAAM;QACR,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;YAC7B,GAAG,EAAE,UAAU;SAChB,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,EAAE,CAAC,CAAA;QACZ,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAA;IAErC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE;QAC1C,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAA;QAChC,CAAC;QACD,IAAI,YAAY;YAAE,aAAa,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,CAAC;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3B,kBAAkB,EAAE,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,KAAK,eAAe,EAAE,CAAA;QACxB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAA;IAC9D,MAAM,WAAW,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IAExE,OAAO,CACL,cAAK,SAAS,EAAC,8DAA8D,YAC3E,cAAK,SAAS,EAAC,sBAAsB,YACnC,eAAK,SAAS,EAAC,wDAAwD,aAErE,eAAK,SAAS,EAAC,iCAAiC,aAC7C,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAClB,cACE,GAAG,EAAE,QAAQ,CAAC,OAAO,EACrB,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,IAAI,KAAK,OAAO,EACrC,SAAS,EAAC,2CAA2C,GACrD,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,gGAAgG,YAC7G,eAAM,SAAS,EAAC,mBAAmB,YAChC,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAC1C,GACH,CACP,EACD,aAAI,SAAS,EAAC,mDAAmD,YAC9D,QAAQ,CAAC,IAAI,IAAI,SAAS,GACxB,EACL,YAAG,SAAS,EAAC,oCAAoC,oCAAwB,IACrE,EAGL,IAAI,KAAK,KAAK,IAAI,eAAe,IAAI,UAAU,IAAI,CAClD,eAAK,SAAS,EAAC,kCAAkC,aAC/C,aAAG,SAAS,EAAC,qCAAqC,+BAAgB,UAAU,IAAK,EACjF,aAAG,SAAS,EAAC,+BAA+B,8BAAe,QAAQ,IAAK,EACxE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qEAAqE,EAC/E,OAAO,EAAE,YAAY,yBAGd,IACL,CACP,EAGA,YAAY,IAAI,CACf,cAAK,SAAS,EAAC,kFAAkF,YAC9F,YAAY,GACT,CACP,EAGD,eAAK,SAAS,EAAC,MAAM,aACnB,gBAAO,SAAS,EAAC,oDAAoD,YAClE,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,GACzC,EACR,cAAK,SAAS,EAAC,yIAAyI,YACrJ,WAAW,IAAI,CACd,eAAM,SAAS,EAAC,yDAAyD,YACtE,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,gBAAgB,GAChE,CACR,GACG,IACF,EAGN,eAAK,SAAS,EAAC,qDAAqD,aACjE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC5D,iBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACvC,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAC,6LAA6L,YAEtM,KAAK,IAND,KAAK,CAOH,CACV,CAAC,EACF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,OAAO,IAAI,CAAC,YAAY,EAClC,SAAS,EAAC,6KAA6K,YAEvL,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,GAAG,GACvB,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,EACrC,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAC,6LAA6L,kBAGhM,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,OAAO,IAAI,CAAC,YAAY,EAClC,SAAS,EAAC,wKAAwK,YAEjL,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,OAAO,IAAC,SAAS,EAAC,sBAAsB,GAAG,CAC7C,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAC3B,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,GAAG,CACnC,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,GAAG,CACnC,GACM,IACL,EAGL,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,IAAI,CACrC,cAAK,SAAS,EAAC,kBAAkB,YAC/B,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mFAAmF,EAC7F,OAAO,EAAE,GAAG,EAAE;gCACZ,OAAO,CAAC,aAAa,CAAC,CAAA;gCACtB,MAAM,CAAC,EAAE,CAAC,CAAA;gCACV,aAAa,CAAC,IAAI,CAAC,CAAA;4BACrB,CAAC,0CAGM,GACL,CACP,EAEA,QAAQ,CAAC,aAAa,IAAI,CACzB,YAAG,SAAS,EAAC,qDAAqD,YAC/D,QAAQ,CAAC,aAAa,GACrB,CACL,IACG,GACF,GACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AuthComponentProps } from "../../lib/types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Default session login component — email + password form.
|
|
4
|
+
* Implements AuthComponentProps for use with the 'session' auth strategy.
|
|
5
|
+
*/
|
|
6
|
+
export declare function DefaultSessionLogin({ onAuthenticate, branding, error, loading, }: AuthComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=DefaultSessionLogin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultSessionLogin.d.ts","sourceRoot":"","sources":["../../../../src/auth/components/DefaultSessionLogin.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAG5D;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,cAAc,EACd,QAAQ,EACR,KAAK,EACL,OAAO,GACR,EAAE,kBAAkB,2CA2HpB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { Mail, Lock, Eye, EyeOff, ArrowRight, Loader2 } from "lucide-react";
|
|
4
|
+
/**
|
|
5
|
+
* Default session login component — email + password form.
|
|
6
|
+
* Implements AuthComponentProps for use with the 'session' auth strategy.
|
|
7
|
+
*/
|
|
8
|
+
export function DefaultSessionLogin({ onAuthenticate, branding, error, loading, }) {
|
|
9
|
+
const [email, setEmail] = useState("");
|
|
10
|
+
const [password, setPassword] = useState("");
|
|
11
|
+
const [showPassword, setShowPassword] = useState(false);
|
|
12
|
+
const handleSubmit = async (e) => {
|
|
13
|
+
e.preventDefault();
|
|
14
|
+
const trimmedEmail = email.trim();
|
|
15
|
+
if (!trimmedEmail || !password)
|
|
16
|
+
return;
|
|
17
|
+
await onAuthenticate({ email: trimmedEmail, password });
|
|
18
|
+
};
|
|
19
|
+
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: [branding.logoUrl ? (_jsx("img", { src: branding.logoUrl, alt: `${branding.name ?? "App"} logo`, className: "h-14 w-14 rounded-2xl object-contain mb-4" })) : (_jsx("div", { className: "flex items-center justify-center w-14 h-14 rounded-2xl bg-primary text-primary-foreground mb-4", children: _jsx("span", { className: "text-xl font-bold", children: (branding.name ?? "A").charAt(0).toUpperCase() }) })), _jsx("h1", { className: "text-2xl font-bold text-foreground tracking-tight", children: branding.name ?? "Sign In" }), _jsx("p", { className: "text-muted-foreground text-sm mt-1", children: "Sign in to continue" })] }), _jsxs("form", { onSubmit: handleSubmit, noValidate: true, 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: "auth-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: "auth-email", type: "email", autoComplete: "email", value: email, onChange: (e) => setEmail(e.target.value), placeholder: "name@example.com", disabled: loading, 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", { children: [_jsx("label", { htmlFor: "auth-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: "auth-password", type: showPassword ? "text" : "password", autoComplete: "current-password", value: password, onChange: (e) => setPassword(e.target.value), placeholder: "********", disabled: loading, 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("button", { type: "submit", disabled: loading || !email.trim() || !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 disabled:opacity-50", children: loading ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Signing in..."] })) : (_jsxs(_Fragment, { children: ["Sign In", _jsx(ArrowRight, { className: "h-4 w-4" })] })) })] }), branding.poweredByText && (_jsx("p", { className: "text-center text-xs text-muted-foreground mt-5 px-4", children: branding.poweredByText }))] }) }) }));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=DefaultSessionLogin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultSessionLogin.js","sourceRoot":"","sources":["../../../../src/auth/components/DefaultSessionLogin.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ComponentType } from "react";
|
|
2
|
+
import type { AuthComponentProps } from "../../lib/types.ts";
|
|
3
|
+
import { DefaultSessionLogin } from "./DefaultSessionLogin.tsx";
|
|
4
|
+
import { DefaultPinLogin } from "./DefaultPinLogin.tsx";
|
|
5
|
+
import { DefaultDeviceLogin } from "./DefaultDeviceLogin.tsx";
|
|
6
|
+
/**
|
|
7
|
+
* Get the default login component for a given strategy.
|
|
8
|
+
* Falls back to DefaultSessionLogin for unknown strategies.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getDefaultComponent(strategy: string | string[]): ComponentType<AuthComponentProps>;
|
|
11
|
+
export { DefaultSessionLogin, DefaultPinLogin, DefaultDeviceLogin };
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/auth/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAW7D;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAC1B,aAAa,CAAC,kBAAkB,CAAC,CAGnC;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DefaultSessionLogin } from "./DefaultSessionLogin.js";
|
|
2
|
+
import { DefaultPinLogin } from "./DefaultPinLogin.js";
|
|
3
|
+
import { DefaultDeviceLogin } from "./DefaultDeviceLogin.js";
|
|
4
|
+
/**
|
|
5
|
+
* Registry of default auth components by strategy name.
|
|
6
|
+
*/
|
|
7
|
+
const defaultComponents = {
|
|
8
|
+
session: DefaultSessionLogin,
|
|
9
|
+
pin: DefaultPinLogin,
|
|
10
|
+
device: DefaultDeviceLogin,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Get the default login component for a given strategy.
|
|
14
|
+
* Falls back to DefaultSessionLogin for unknown strategies.
|
|
15
|
+
*/
|
|
16
|
+
export function getDefaultComponent(strategy) {
|
|
17
|
+
const name = Array.isArray(strategy) ? strategy[0] : strategy;
|
|
18
|
+
return defaultComponents[name ?? "session"] ?? DefaultSessionLogin;
|
|
19
|
+
}
|
|
20
|
+
export { DefaultSessionLogin, DefaultPinLogin, DefaultDeviceLogin };
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/auth/components/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA2B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAA;AAE7D;;GAEG;AACH,MAAM,iBAAiB,GAAsD;IAC3E,OAAO,EAAE,mBAAmB;IAC5B,GAAG,EAAE,eAAe;IACpB,MAAM,EAAE,kBAAkB;CAC3B,CAAA;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA2B;IAE3B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC7D,OAAO,iBAAiB,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,mBAAmB,CAAA;AACpE,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { AuthStrategyGate } from "./AuthStrategyGate.tsx";
|
|
2
|
+
export type { AuthStrategy } from "./types.ts";
|
|
3
|
+
export { getValidator } from "./strategies/index.ts";
|
|
4
|
+
export { getDefaultComponent } from "./components/index.ts";
|
|
5
|
+
export { DefaultSessionLogin } from "./components/DefaultSessionLogin.tsx";
|
|
6
|
+
export { DefaultPinLogin } from "./components/DefaultPinLogin.tsx";
|
|
7
|
+
export { DefaultDeviceLogin } from "./components/DefaultDeviceLogin.tsx";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { AuthStrategyGate } from "./AuthStrategyGate.js";
|
|
2
|
+
export { getValidator } from "./strategies/index.js";
|
|
3
|
+
export { getDefaultComponent } from "./components/index.js";
|
|
4
|
+
export { DefaultSessionLogin } from "./components/DefaultSessionLogin.js";
|
|
5
|
+
export { DefaultPinLogin } from "./components/DefaultPinLogin.js";
|
|
6
|
+
export { DefaultDeviceLogin } from "./components/DefaultDeviceLogin.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAsC,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAkC,CAAA;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAqC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PIN strategy localStorage persistence.
|
|
3
|
+
*
|
|
4
|
+
* Stores the last employee ID and name for quick re-login on
|
|
5
|
+
* returning visits. Modeled after tools/offers/src/lib/portalIdentity.ts.
|
|
6
|
+
*/
|
|
7
|
+
/** Read the stored Employee ID from localStorage. */
|
|
8
|
+
export declare function getStoredPinEmployeeId(): string | null;
|
|
9
|
+
/** Read the stored Employee Name from localStorage. */
|
|
10
|
+
export declare function getStoredPinEmployeeName(): string | null;
|
|
11
|
+
/** Read the stored session token from localStorage. */
|
|
12
|
+
export declare function getStoredPinSessionToken(): string | null;
|
|
13
|
+
/** Persist Employee ID + name to localStorage after successful auth. */
|
|
14
|
+
export declare function persistPinIdentity(id: string, name: string): void;
|
|
15
|
+
/** Persist a session token for the current PIN auth session. */
|
|
16
|
+
export declare function persistPinSessionToken(token: string): void;
|
|
17
|
+
/** Clear all stored PIN identity data (explicit logout). */
|
|
18
|
+
export declare function clearPinStorage(): void;
|
|
19
|
+
//# sourceMappingURL=pin-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin-storage.d.ts","sourceRoot":"","sources":["../../../../src/auth/persistence/pin-storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,qDAAqD;AACrD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAOtD;AAED,uDAAuD;AACvD,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAOxD;AAED,uDAAuD;AACvD,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAOxD;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQjE;AAED,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAO1D;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,IAAI,IAAI,CAStC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PIN strategy localStorage persistence.
|
|
3
|
+
*
|
|
4
|
+
* Stores the last employee ID and name for quick re-login on
|
|
5
|
+
* returning visits. Modeled after tools/offers/src/lib/portalIdentity.ts.
|
|
6
|
+
*/
|
|
7
|
+
const LS_PREFIX = "auth-pin-";
|
|
8
|
+
const LS_EMPLOYEE_ID = `${LS_PREFIX}employee-id`;
|
|
9
|
+
const LS_EMPLOYEE_NAME = `${LS_PREFIX}employee-name`;
|
|
10
|
+
const LS_SESSION_TOKEN = `${LS_PREFIX}session-token`;
|
|
11
|
+
/** Read the stored Employee ID from localStorage. */
|
|
12
|
+
export function getStoredPinEmployeeId() {
|
|
13
|
+
if (typeof window === "undefined")
|
|
14
|
+
return null;
|
|
15
|
+
try {
|
|
16
|
+
return localStorage.getItem(LS_EMPLOYEE_ID);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/** Read the stored Employee Name from localStorage. */
|
|
23
|
+
export function getStoredPinEmployeeName() {
|
|
24
|
+
if (typeof window === "undefined")
|
|
25
|
+
return null;
|
|
26
|
+
try {
|
|
27
|
+
return localStorage.getItem(LS_EMPLOYEE_NAME);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Read the stored session token from localStorage. */
|
|
34
|
+
export function getStoredPinSessionToken() {
|
|
35
|
+
if (typeof window === "undefined")
|
|
36
|
+
return null;
|
|
37
|
+
try {
|
|
38
|
+
return localStorage.getItem(LS_SESSION_TOKEN);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Persist Employee ID + name to localStorage after successful auth. */
|
|
45
|
+
export function persistPinIdentity(id, name) {
|
|
46
|
+
if (typeof window === "undefined")
|
|
47
|
+
return;
|
|
48
|
+
try {
|
|
49
|
+
localStorage.setItem(LS_EMPLOYEE_ID, id);
|
|
50
|
+
localStorage.setItem(LS_EMPLOYEE_NAME, name);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// localStorage may be unavailable (e.g. private browsing)
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Persist a session token for the current PIN auth session. */
|
|
57
|
+
export function persistPinSessionToken(token) {
|
|
58
|
+
if (typeof window === "undefined")
|
|
59
|
+
return;
|
|
60
|
+
try {
|
|
61
|
+
localStorage.setItem(LS_SESSION_TOKEN, token);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Ignore
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** Clear all stored PIN identity data (explicit logout). */
|
|
68
|
+
export function clearPinStorage() {
|
|
69
|
+
if (typeof window === "undefined")
|
|
70
|
+
return;
|
|
71
|
+
try {
|
|
72
|
+
localStorage.removeItem(LS_EMPLOYEE_ID);
|
|
73
|
+
localStorage.removeItem(LS_EMPLOYEE_NAME);
|
|
74
|
+
localStorage.removeItem(LS_SESSION_TOKEN);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Ignore
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=pin-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pin-storage.js","sourceRoot":"","sources":["../../../../src/auth/persistence/pin-storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,SAAS,GAAG,WAAW,CAAA;AAC7B,MAAM,cAAc,GAAG,GAAG,SAAS,aAAa,CAAA;AAChD,MAAM,gBAAgB,GAAG,GAAG,SAAS,eAAe,CAAA;AACpD,MAAM,gBAAgB,GAAG,GAAG,SAAS,eAAe,CAAA;AAEpD,qDAAqD;AACrD,MAAM,UAAU,sBAAsB;IACpC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,wBAAwB;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,wBAAwB;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,kBAAkB,CAAC,EAAU,EAAE,IAAY;IACzD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAM;IACzC,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;QACxC,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAM;IACzC,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,eAAe;IAC7B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAM;IACzC,IAAI,CAAC;QACH,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;QACvC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;QACzC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AuthResult } from "../../lib/types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Validate credentials via API key + employee lookup.
|
|
4
|
+
*
|
|
5
|
+
* This strategy is for shared/kiosk devices where the device itself
|
|
6
|
+
* is authenticated via an API key, and individual employees identify
|
|
7
|
+
* themselves by employee ID.
|
|
8
|
+
*
|
|
9
|
+
* API key verification is done server-side via a fetch to the auth
|
|
10
|
+
* endpoint. The client sends the key in the Authorization header.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateDevice(credentials: {
|
|
13
|
+
apiKey: string;
|
|
14
|
+
employeeId: string;
|
|
15
|
+
}): Promise<AuthResult>;
|
|
16
|
+
//# sourceMappingURL=device.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../../src/auth/strategies/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE;IAChD,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,UAAU,CAAC,CA0CtB"}
|