@ydtb/tk-scope-app 0.14.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -0
  3. package/dist/src/auth/AuthStrategyGate.d.ts +27 -0
  4. package/dist/src/auth/AuthStrategyGate.d.ts.map +1 -0
  5. package/dist/src/auth/AuthStrategyGate.js +58 -0
  6. package/dist/src/auth/AuthStrategyGate.js.map +1 -0
  7. package/dist/src/auth/components/DefaultDeviceLogin.d.ts +7 -0
  8. package/dist/src/auth/components/DefaultDeviceLogin.d.ts.map +1 -0
  9. package/dist/src/auth/components/DefaultDeviceLogin.js +21 -0
  10. package/dist/src/auth/components/DefaultDeviceLogin.js.map +1 -0
  11. package/dist/src/auth/components/DefaultPinLogin.d.ts +8 -0
  12. package/dist/src/auth/components/DefaultPinLogin.d.ts.map +1 -0
  13. package/dist/src/auth/components/DefaultPinLogin.js +85 -0
  14. package/dist/src/auth/components/DefaultPinLogin.js.map +1 -0
  15. package/dist/src/auth/components/DefaultSessionLogin.d.ts +7 -0
  16. package/dist/src/auth/components/DefaultSessionLogin.d.ts.map +1 -0
  17. package/dist/src/auth/components/DefaultSessionLogin.js +21 -0
  18. package/dist/src/auth/components/DefaultSessionLogin.js.map +1 -0
  19. package/dist/src/auth/components/index.d.ts +12 -0
  20. package/dist/src/auth/components/index.d.ts.map +1 -0
  21. package/dist/src/auth/components/index.js +21 -0
  22. package/dist/src/auth/components/index.js.map +1 -0
  23. package/dist/src/auth/index.d.ts +8 -0
  24. package/dist/src/auth/index.d.ts.map +1 -0
  25. package/dist/src/auth/index.js +7 -0
  26. package/dist/src/auth/index.js.map +1 -0
  27. package/dist/src/auth/persistence/pin-storage.d.ts +19 -0
  28. package/dist/src/auth/persistence/pin-storage.d.ts.map +1 -0
  29. package/dist/src/auth/persistence/pin-storage.js +80 -0
  30. package/dist/src/auth/persistence/pin-storage.js.map +1 -0
  31. package/dist/src/auth/strategies/device.d.ts +16 -0
  32. package/dist/src/auth/strategies/device.d.ts.map +1 -0
  33. package/dist/src/auth/strategies/device.js +51 -0
  34. package/dist/src/auth/strategies/device.js.map +1 -0
  35. package/dist/src/auth/strategies/index.d.ts +13 -0
  36. package/dist/src/auth/strategies/index.d.ts.map +1 -0
  37. package/dist/src/auth/strategies/index.js +24 -0
  38. package/dist/src/auth/strategies/index.js.map +1 -0
  39. package/dist/src/auth/strategies/none.d.ts +9 -0
  40. package/dist/src/auth/strategies/none.d.ts.map +1 -0
  41. package/dist/src/auth/strategies/none.js +10 -0
  42. package/dist/src/auth/strategies/none.js.map +1 -0
  43. package/dist/src/auth/strategies/pin.d.ts +9 -0
  44. package/dist/src/auth/strategies/pin.d.ts.map +1 -0
  45. package/dist/src/auth/strategies/pin.js +48 -0
  46. package/dist/src/auth/strategies/pin.js.map +1 -0
  47. package/dist/src/auth/strategies/session.d.ts +9 -0
  48. package/dist/src/auth/strategies/session.d.ts.map +1 -0
  49. package/dist/src/auth/strategies/session.js +42 -0
  50. package/dist/src/auth/strategies/session.js.map +1 -0
  51. package/dist/src/auth/types.d.ts +2 -0
  52. package/dist/src/auth/types.d.ts.map +1 -0
  53. package/dist/src/auth/types.js +2 -0
  54. package/dist/src/auth/types.js.map +1 -0
  55. package/dist/src/client.d.ts +63 -0
  56. package/dist/src/client.d.ts.map +1 -0
  57. package/dist/src/client.js +81 -0
  58. package/dist/src/client.js.map +1 -0
  59. package/dist/src/components/BackendErrorGate.d.ts +10 -0
  60. package/dist/src/components/BackendErrorGate.d.ts.map +1 -0
  61. package/dist/src/components/BackendErrorGate.js +19 -0
  62. package/dist/src/components/BackendErrorGate.js.map +1 -0
  63. package/dist/src/components/ErrorBoundary.d.ts +17 -0
  64. package/dist/src/components/ErrorBoundary.d.ts.map +1 -0
  65. package/dist/src/components/ErrorBoundary.js +23 -0
  66. package/dist/src/components/ErrorBoundary.js.map +1 -0
  67. package/dist/src/components/NotificationPanel.d.ts +9 -0
  68. package/dist/src/components/NotificationPanel.d.ts.map +1 -0
  69. package/dist/src/components/NotificationPanel.js +146 -0
  70. package/dist/src/components/NotificationPanel.js.map +1 -0
  71. package/dist/src/components/scope/ChildScopeDetailPage.d.ts +8 -0
  72. package/dist/src/components/scope/ChildScopeDetailPage.d.ts.map +1 -0
  73. package/dist/src/components/scope/ChildScopeDetailPage.js +79 -0
  74. package/dist/src/components/scope/ChildScopeDetailPage.js.map +1 -0
  75. package/dist/src/components/scope/ChildScopeListPage.d.ts +6 -0
  76. package/dist/src/components/scope/ChildScopeListPage.d.ts.map +1 -0
  77. package/dist/src/components/scope/ChildScopeListPage.js +111 -0
  78. package/dist/src/components/scope/ChildScopeListPage.js.map +1 -0
  79. package/dist/src/components/scope/CreateChildScopeButton.d.ts +14 -0
  80. package/dist/src/components/scope/CreateChildScopeButton.d.ts.map +1 -0
  81. package/dist/src/components/scope/CreateChildScopeButton.js +18 -0
  82. package/dist/src/components/scope/CreateChildScopeButton.js.map +1 -0
  83. package/dist/src/components/scope/CreateScopeDialog.d.ts +9 -0
  84. package/dist/src/components/scope/CreateScopeDialog.d.ts.map +1 -0
  85. package/dist/src/components/scope/CreateScopeDialog.js +137 -0
  86. package/dist/src/components/scope/CreateScopeDialog.js.map +1 -0
  87. package/dist/src/components/scope/JoinScopeDialog.d.ts +8 -0
  88. package/dist/src/components/scope/JoinScopeDialog.d.ts.map +1 -0
  89. package/dist/src/components/scope/JoinScopeDialog.js +115 -0
  90. package/dist/src/components/scope/JoinScopeDialog.js.map +1 -0
  91. package/dist/src/components/scope/ProfileScopeSection.d.ts +11 -0
  92. package/dist/src/components/scope/ProfileScopeSection.d.ts.map +1 -0
  93. package/dist/src/components/scope/ProfileScopeSection.js +63 -0
  94. package/dist/src/components/scope/ProfileScopeSection.js.map +1 -0
  95. package/dist/src/components/scope/ScopeSwitcher.d.ts +14 -0
  96. package/dist/src/components/scope/ScopeSwitcher.d.ts.map +1 -0
  97. package/dist/src/components/scope/ScopeSwitcher.js +131 -0
  98. package/dist/src/components/scope/ScopeSwitcher.js.map +1 -0
  99. package/dist/src/components/scope/SwitchScopeDialog.d.ts +8 -0
  100. package/dist/src/components/scope/SwitchScopeDialog.d.ts.map +1 -0
  101. package/dist/src/components/scope/SwitchScopeDialog.js +60 -0
  102. package/dist/src/components/scope/SwitchScopeDialog.js.map +1 -0
  103. package/dist/src/components/scope/useChildScopePermissions.d.ts +7 -0
  104. package/dist/src/components/scope/useChildScopePermissions.d.ts.map +1 -0
  105. package/dist/src/components/scope/useChildScopePermissions.js +34 -0
  106. package/dist/src/components/scope/useChildScopePermissions.js.map +1 -0
  107. package/dist/src/contexts/auth/AuthContext.d.ts +13 -0
  108. package/dist/src/contexts/auth/AuthContext.d.ts.map +1 -0
  109. package/dist/src/contexts/auth/AuthContext.js +23 -0
  110. package/dist/src/contexts/auth/AuthContext.js.map +1 -0
  111. package/dist/src/contexts/backend/BackendStatusContext.d.ts +21 -0
  112. package/dist/src/contexts/backend/BackendStatusContext.d.ts.map +1 -0
  113. package/dist/src/contexts/backend/BackendStatusContext.js +36 -0
  114. package/dist/src/contexts/backend/BackendStatusContext.js.map +1 -0
  115. package/dist/src/contexts/command/CommandContext.d.ts +30 -0
  116. package/dist/src/contexts/command/CommandContext.d.ts.map +1 -0
  117. package/dist/src/contexts/command/CommandContext.js +75 -0
  118. package/dist/src/contexts/command/CommandContext.js.map +1 -0
  119. package/dist/src/contexts/command/PanelSlotsContext.d.ts +2 -0
  120. package/dist/src/contexts/command/PanelSlotsContext.d.ts.map +1 -0
  121. package/dist/src/contexts/command/PanelSlotsContext.js +2 -0
  122. package/dist/src/contexts/command/PanelSlotsContext.js.map +1 -0
  123. package/dist/src/contexts/command/PanelStackContext.d.ts +2 -0
  124. package/dist/src/contexts/command/PanelStackContext.d.ts.map +1 -0
  125. package/dist/src/contexts/command/PanelStackContext.js +2 -0
  126. package/dist/src/contexts/command/PanelStackContext.js.map +1 -0
  127. package/dist/src/contexts/command/SearchPanelContext.d.ts +55 -0
  128. package/dist/src/contexts/command/SearchPanelContext.d.ts.map +1 -0
  129. package/dist/src/contexts/command/SearchPanelContext.js +327 -0
  130. package/dist/src/contexts/command/SearchPanelContext.js.map +1 -0
  131. package/dist/src/contexts/config/AppConfigContext.d.ts +8 -0
  132. package/dist/src/contexts/config/AppConfigContext.d.ts.map +1 -0
  133. package/dist/src/contexts/config/AppConfigContext.js +21 -0
  134. package/dist/src/contexts/config/AppConfigContext.js.map +1 -0
  135. package/dist/src/contexts/help/HelpContext.d.ts +30 -0
  136. package/dist/src/contexts/help/HelpContext.d.ts.map +1 -0
  137. package/dist/src/contexts/help/HelpContext.js +73 -0
  138. package/dist/src/contexts/help/HelpContext.js.map +1 -0
  139. package/dist/src/contexts/index.d.ts +10 -0
  140. package/dist/src/contexts/index.d.ts.map +1 -0
  141. package/dist/src/contexts/index.js +10 -0
  142. package/dist/src/contexts/index.js.map +1 -0
  143. package/dist/src/contexts/navigation/NavigationContext.d.ts +23 -0
  144. package/dist/src/contexts/navigation/NavigationContext.d.ts.map +1 -0
  145. package/dist/src/contexts/navigation/NavigationContext.js +294 -0
  146. package/dist/src/contexts/navigation/NavigationContext.js.map +1 -0
  147. package/dist/src/contexts/navigation/NavigationRegistryContext.d.ts +9 -0
  148. package/dist/src/contexts/navigation/NavigationRegistryContext.d.ts.map +1 -0
  149. package/dist/src/contexts/navigation/NavigationRegistryContext.js +17 -0
  150. package/dist/src/contexts/navigation/NavigationRegistryContext.js.map +1 -0
  151. package/dist/src/contexts/scope/ScopeContext.d.ts +40 -0
  152. package/dist/src/contexts/scope/ScopeContext.d.ts.map +1 -0
  153. package/dist/src/contexts/scope/ScopeContext.js +141 -0
  154. package/dist/src/contexts/scope/ScopeContext.js.map +1 -0
  155. package/dist/src/contexts/scope/index.d.ts +3 -0
  156. package/dist/src/contexts/scope/index.d.ts.map +1 -0
  157. package/dist/src/contexts/scope/index.js +3 -0
  158. package/dist/src/contexts/scope/index.js.map +1 -0
  159. package/dist/src/contexts/scope/scopeRef.d.ts +10 -0
  160. package/dist/src/contexts/scope/scopeRef.d.ts.map +1 -0
  161. package/dist/src/contexts/scope/scopeRef.js +10 -0
  162. package/dist/src/contexts/scope/scopeRef.js.map +1 -0
  163. package/dist/src/contexts/sidebar/use-sidebar.d.ts +2 -0
  164. package/dist/src/contexts/sidebar/use-sidebar.d.ts.map +1 -0
  165. package/dist/src/contexts/sidebar/use-sidebar.js +2 -0
  166. package/dist/src/contexts/sidebar/use-sidebar.js.map +1 -0
  167. package/dist/src/contexts/theme/ThemeContext.d.ts +21 -0
  168. package/dist/src/contexts/theme/ThemeContext.d.ts.map +1 -0
  169. package/dist/src/contexts/theme/ThemeContext.js +79 -0
  170. package/dist/src/contexts/theme/ThemeContext.js.map +1 -0
  171. package/dist/src/create-app.d.ts +47 -0
  172. package/dist/src/create-app.d.ts.map +1 -0
  173. package/dist/src/create-app.js +242 -0
  174. package/dist/src/create-app.js.map +1 -0
  175. package/dist/src/dashboard/command/CommandDialog.d.ts +2 -0
  176. package/dist/src/dashboard/command/CommandDialog.d.ts.map +1 -0
  177. package/dist/src/dashboard/command/CommandDialog.js +18 -0
  178. package/dist/src/dashboard/command/CommandDialog.js.map +1 -0
  179. package/dist/src/dashboard/command/SearchPanelBody.d.ts +2 -0
  180. package/dist/src/dashboard/command/SearchPanelBody.d.ts.map +1 -0
  181. package/dist/src/dashboard/command/SearchPanelBody.js +178 -0
  182. package/dist/src/dashboard/command/SearchPanelBody.js.map +1 -0
  183. package/dist/src/dashboard/command/SearchPanelHeader.d.ts +2 -0
  184. package/dist/src/dashboard/command/SearchPanelHeader.d.ts.map +1 -0
  185. package/dist/src/dashboard/command/SearchPanelHeader.js +13 -0
  186. package/dist/src/dashboard/command/SearchPanelHeader.js.map +1 -0
  187. package/dist/src/dashboard/command/panels/GeneralPanel.d.ts +9 -0
  188. package/dist/src/dashboard/command/panels/GeneralPanel.d.ts.map +1 -0
  189. package/dist/src/dashboard/command/panels/GeneralPanel.js +12 -0
  190. package/dist/src/dashboard/command/panels/GeneralPanel.js.map +1 -0
  191. package/dist/src/dashboard/command/panels/NavigationPanel.d.ts +2 -0
  192. package/dist/src/dashboard/command/panels/NavigationPanel.d.ts.map +1 -0
  193. package/dist/src/dashboard/command/panels/NavigationPanel.js +74 -0
  194. package/dist/src/dashboard/command/panels/NavigationPanel.js.map +1 -0
  195. package/dist/src/dashboard/command/panels/PlaceholderPanel.d.ts +9 -0
  196. package/dist/src/dashboard/command/panels/PlaceholderPanel.d.ts.map +1 -0
  197. package/dist/src/dashboard/command/panels/PlaceholderPanel.js +12 -0
  198. package/dist/src/dashboard/command/panels/PlaceholderPanel.js.map +1 -0
  199. package/dist/src/dashboard/command/panels/ProfilePanel.d.ts +2 -0
  200. package/dist/src/dashboard/command/panels/ProfilePanel.d.ts.map +1 -0
  201. package/dist/src/dashboard/command/panels/ProfilePanel.js +133 -0
  202. package/dist/src/dashboard/command/panels/ProfilePanel.js.map +1 -0
  203. package/dist/src/dashboard/command/panels/SecurityPanel.d.ts +2 -0
  204. package/dist/src/dashboard/command/panels/SecurityPanel.d.ts.map +1 -0
  205. package/dist/src/dashboard/command/panels/SecurityPanel.js +237 -0
  206. package/dist/src/dashboard/command/panels/SecurityPanel.js.map +1 -0
  207. package/dist/src/dashboard/command/panels/ThemePanel.d.ts +2 -0
  208. package/dist/src/dashboard/command/panels/ThemePanel.d.ts.map +1 -0
  209. package/dist/src/dashboard/command/panels/ThemePanel.js +11 -0
  210. package/dist/src/dashboard/command/panels/ThemePanel.js.map +1 -0
  211. package/dist/src/dashboard/headers/MainHeader.d.ts +16 -0
  212. package/dist/src/dashboard/headers/MainHeader.d.ts.map +1 -0
  213. package/dist/src/dashboard/headers/MainHeader.js +16 -0
  214. package/dist/src/dashboard/headers/MainHeader.js.map +1 -0
  215. package/dist/src/dashboard/headers/MainHeaderDesktop.d.ts +4 -0
  216. package/dist/src/dashboard/headers/MainHeaderDesktop.d.ts.map +1 -0
  217. package/dist/src/dashboard/headers/MainHeaderDesktop.js +120 -0
  218. package/dist/src/dashboard/headers/MainHeaderDesktop.js.map +1 -0
  219. package/dist/src/dashboard/headers/MainHeaderMobile.d.ts +4 -0
  220. package/dist/src/dashboard/headers/MainHeaderMobile.d.ts.map +1 -0
  221. package/dist/src/dashboard/headers/MainHeaderMobile.js +14 -0
  222. package/dist/src/dashboard/headers/MainHeaderMobile.js.map +1 -0
  223. package/dist/src/dashboard/headers/NotificationsPopover.d.ts +2 -0
  224. package/dist/src/dashboard/headers/NotificationsPopover.d.ts.map +1 -0
  225. package/dist/src/dashboard/headers/NotificationsPopover.js +14 -0
  226. package/dist/src/dashboard/headers/NotificationsPopover.js.map +1 -0
  227. package/dist/src/dashboard/headers/ProfilePopover.d.ts +2 -0
  228. package/dist/src/dashboard/headers/ProfilePopover.d.ts.map +1 -0
  229. package/dist/src/dashboard/headers/ProfilePopover.js +83 -0
  230. package/dist/src/dashboard/headers/ProfilePopover.js.map +1 -0
  231. package/dist/src/dashboard/headers/ToolHeader.d.ts +2 -0
  232. package/dist/src/dashboard/headers/ToolHeader.d.ts.map +1 -0
  233. package/dist/src/dashboard/headers/ToolHeader.js +16 -0
  234. package/dist/src/dashboard/headers/ToolHeader.js.map +1 -0
  235. package/dist/src/dashboard/help/HelpPanel.d.ts +3 -0
  236. package/dist/src/dashboard/help/HelpPanel.d.ts.map +1 -0
  237. package/dist/src/dashboard/help/HelpPanel.js +451 -0
  238. package/dist/src/dashboard/help/HelpPanel.js.map +1 -0
  239. package/dist/src/dashboard/index.d.ts +16 -0
  240. package/dist/src/dashboard/index.d.ts.map +1 -0
  241. package/dist/src/dashboard/index.js +16 -0
  242. package/dist/src/dashboard/index.js.map +1 -0
  243. package/dist/src/dashboard/layout/DashboardLayout.d.ts +23 -0
  244. package/dist/src/dashboard/layout/DashboardLayout.d.ts.map +1 -0
  245. package/dist/src/dashboard/layout/DashboardLayout.js +15 -0
  246. package/dist/src/dashboard/layout/DashboardLayout.js.map +1 -0
  247. package/dist/src/dashboard/layout/DashboardSidebarContent.d.ts +2 -0
  248. package/dist/src/dashboard/layout/DashboardSidebarContent.d.ts.map +1 -0
  249. package/dist/src/dashboard/layout/DashboardSidebarContent.js +33 -0
  250. package/dist/src/dashboard/layout/DashboardSidebarContent.js.map +1 -0
  251. package/dist/src/dashboard/layout/SidebarDrawer.d.ts +2 -0
  252. package/dist/src/dashboard/layout/SidebarDrawer.d.ts.map +1 -0
  253. package/dist/src/dashboard/layout/SidebarDrawer.js +33 -0
  254. package/dist/src/dashboard/layout/SidebarDrawer.js.map +1 -0
  255. package/dist/src/dashboard/layout/ToolSidebar.d.ts +9 -0
  256. package/dist/src/dashboard/layout/ToolSidebar.d.ts.map +1 -0
  257. package/dist/src/dashboard/layout/ToolSidebar.js +11 -0
  258. package/dist/src/dashboard/layout/ToolSidebar.js.map +1 -0
  259. package/dist/src/dashboard/navigation/IconRail.d.ts +11 -0
  260. package/dist/src/dashboard/navigation/IconRail.d.ts.map +1 -0
  261. package/dist/src/dashboard/navigation/IconRail.js +47 -0
  262. package/dist/src/dashboard/navigation/IconRail.js.map +1 -0
  263. package/dist/src/dashboard/navigation/MoreToolsPopover.d.ts +2 -0
  264. package/dist/src/dashboard/navigation/MoreToolsPopover.d.ts.map +1 -0
  265. package/dist/src/dashboard/navigation/MoreToolsPopover.js +22 -0
  266. package/dist/src/dashboard/navigation/MoreToolsPopover.js.map +1 -0
  267. package/dist/src/dashboard/navigation/icon-rail.d.ts +8 -0
  268. package/dist/src/dashboard/navigation/icon-rail.d.ts.map +1 -0
  269. package/dist/src/dashboard/navigation/icon-rail.js +36 -0
  270. package/dist/src/dashboard/navigation/icon-rail.js.map +1 -0
  271. package/dist/src/dashboard/navigation/use-active-tool.d.ts +2 -0
  272. package/dist/src/dashboard/navigation/use-active-tool.d.ts.map +1 -0
  273. package/dist/src/dashboard/navigation/use-active-tool.js +41 -0
  274. package/dist/src/dashboard/navigation/use-active-tool.js.map +1 -0
  275. package/dist/src/dashboard/settings/ThemeSettings.d.ts +2 -0
  276. package/dist/src/dashboard/settings/ThemeSettings.d.ts.map +1 -0
  277. package/dist/src/dashboard/settings/ThemeSettings.js +49 -0
  278. package/dist/src/dashboard/settings/ThemeSettings.js.map +1 -0
  279. package/dist/src/guards/SetupGate.d.ts +9 -0
  280. package/dist/src/guards/SetupGate.d.ts.map +1 -0
  281. package/dist/src/guards/SetupGate.js +30 -0
  282. package/dist/src/guards/SetupGate.js.map +1 -0
  283. package/dist/src/guards/UnifiedGuard.d.ts +32 -0
  284. package/dist/src/guards/UnifiedGuard.d.ts.map +1 -0
  285. package/dist/src/guards/UnifiedGuard.js +258 -0
  286. package/dist/src/guards/UnifiedGuard.js.map +1 -0
  287. package/dist/src/guards/index.d.ts +3 -0
  288. package/dist/src/guards/index.d.ts.map +1 -0
  289. package/dist/src/guards/index.js +3 -0
  290. package/dist/src/guards/index.js.map +1 -0
  291. package/dist/src/hooks/index.d.ts +9 -0
  292. package/dist/src/hooks/index.d.ts.map +1 -0
  293. package/dist/src/hooks/index.js +9 -0
  294. package/dist/src/hooks/index.js.map +1 -0
  295. package/dist/src/hooks/useCheckAccess.d.ts +16 -0
  296. package/dist/src/hooks/useCheckAccess.d.ts.map +1 -0
  297. package/dist/src/hooks/useCheckAccess.js +25 -0
  298. package/dist/src/hooks/useCheckAccess.js.map +1 -0
  299. package/dist/src/hooks/useCreateScope.d.ts +42 -0
  300. package/dist/src/hooks/useCreateScope.d.ts.map +1 -0
  301. package/dist/src/hooks/useCreateScope.js +28 -0
  302. package/dist/src/hooks/useCreateScope.js.map +1 -0
  303. package/dist/src/hooks/useInvitations.d.ts +82 -0
  304. package/dist/src/hooks/useInvitations.d.ts.map +1 -0
  305. package/dist/src/hooks/useInvitations.js +39 -0
  306. package/dist/src/hooks/useInvitations.js.map +1 -0
  307. package/dist/src/hooks/useJoinCode.d.ts +52 -0
  308. package/dist/src/hooks/useJoinCode.d.ts.map +1 -0
  309. package/dist/src/hooks/useJoinCode.js +37 -0
  310. package/dist/src/hooks/useJoinCode.js.map +1 -0
  311. package/dist/src/hooks/usePreference.d.ts +20 -0
  312. package/dist/src/hooks/usePreference.d.ts.map +1 -0
  313. package/dist/src/hooks/usePreference.js +132 -0
  314. package/dist/src/hooks/usePreference.js.map +1 -0
  315. package/dist/src/hooks/useScopeList.d.ts +32 -0
  316. package/dist/src/hooks/useScopeList.d.ts.map +1 -0
  317. package/dist/src/hooks/useScopeList.js +24 -0
  318. package/dist/src/hooks/useScopeList.js.map +1 -0
  319. package/dist/src/hooks/useScopeMenuPolicy.d.ts +23 -0
  320. package/dist/src/hooks/useScopeMenuPolicy.d.ts.map +1 -0
  321. package/dist/src/hooks/useScopeMenuPolicy.js +59 -0
  322. package/dist/src/hooks/useScopeMenuPolicy.js.map +1 -0
  323. package/dist/src/hooks/useScopePermissions.d.ts +9 -0
  324. package/dist/src/hooks/useScopePermissions.d.ts.map +1 -0
  325. package/dist/src/hooks/useScopePermissions.js +84 -0
  326. package/dist/src/hooks/useScopePermissions.js.map +1 -0
  327. package/dist/src/lib/api-client.d.ts +27 -0
  328. package/dist/src/lib/api-client.d.ts.map +1 -0
  329. package/dist/src/lib/api-client.js +45 -0
  330. package/dist/src/lib/api-client.js.map +1 -0
  331. package/dist/src/lib/backend-status.d.ts +14 -0
  332. package/dist/src/lib/backend-status.d.ts.map +1 -0
  333. package/dist/src/lib/backend-status.js +27 -0
  334. package/dist/src/lib/backend-status.js.map +1 -0
  335. package/dist/src/lib/config.d.ts +71 -0
  336. package/dist/src/lib/config.d.ts.map +1 -0
  337. package/dist/src/lib/config.js +7 -0
  338. package/dist/src/lib/config.js.map +1 -0
  339. package/dist/src/lib/icon-resolver.d.ts +2 -0
  340. package/dist/src/lib/icon-resolver.d.ts.map +1 -0
  341. package/dist/src/lib/icon-resolver.js +2 -0
  342. package/dist/src/lib/icon-resolver.js.map +1 -0
  343. package/dist/src/lib/index.d.ts +13 -0
  344. package/dist/src/lib/index.d.ts.map +1 -0
  345. package/dist/src/lib/index.js +13 -0
  346. package/dist/src/lib/index.js.map +1 -0
  347. package/dist/src/lib/navigation-tools.d.ts +27 -0
  348. package/dist/src/lib/navigation-tools.d.ts.map +1 -0
  349. package/dist/src/lib/navigation-tools.js +49 -0
  350. package/dist/src/lib/navigation-tools.js.map +1 -0
  351. package/dist/src/lib/onboarding-registry.d.ts +14 -0
  352. package/dist/src/lib/onboarding-registry.d.ts.map +1 -0
  353. package/dist/src/lib/onboarding-registry.js +12 -0
  354. package/dist/src/lib/onboarding-registry.js.map +1 -0
  355. package/dist/src/lib/permissions-store.d.ts +12 -0
  356. package/dist/src/lib/permissions-store.d.ts.map +1 -0
  357. package/dist/src/lib/permissions-store.js +12 -0
  358. package/dist/src/lib/permissions-store.js.map +1 -0
  359. package/dist/src/lib/platform-api.d.ts +3527 -0
  360. package/dist/src/lib/platform-api.d.ts.map +1 -0
  361. package/dist/src/lib/platform-api.js +26 -0
  362. package/dist/src/lib/platform-api.js.map +1 -0
  363. package/dist/src/lib/resolve-redirect.d.ts +36 -0
  364. package/dist/src/lib/resolve-redirect.d.ts.map +1 -0
  365. package/dist/src/lib/resolve-redirect.js +91 -0
  366. package/dist/src/lib/resolve-redirect.js.map +1 -0
  367. package/dist/src/lib/scope-menu-policy.d.ts +13 -0
  368. package/dist/src/lib/scope-menu-policy.d.ts.map +1 -0
  369. package/dist/src/lib/scope-menu-policy.js +15 -0
  370. package/dist/src/lib/scope-menu-policy.js.map +1 -0
  371. package/dist/src/lib/scope-query-keys.d.ts +38 -0
  372. package/dist/src/lib/scope-query-keys.d.ts.map +1 -0
  373. package/dist/src/lib/scope-query-keys.js +35 -0
  374. package/dist/src/lib/scope-query-keys.js.map +1 -0
  375. package/dist/src/lib/scopeLink.d.ts +24 -0
  376. package/dist/src/lib/scopeLink.d.ts.map +1 -0
  377. package/dist/src/lib/scopeLink.js +57 -0
  378. package/dist/src/lib/scopeLink.js.map +1 -0
  379. package/dist/src/lib/tool-api-types.d.ts +40 -0
  380. package/dist/src/lib/tool-api-types.d.ts.map +1 -0
  381. package/dist/src/lib/tool-api-types.js +23 -0
  382. package/dist/src/lib/tool-api-types.js.map +1 -0
  383. package/dist/src/lib/types.d.ts +122 -0
  384. package/dist/src/lib/types.d.ts.map +1 -0
  385. package/dist/src/lib/types.js +47 -0
  386. package/dist/src/lib/types.js.map +1 -0
  387. package/dist/src/lib/withDashboardChrome.d.ts +18 -0
  388. package/dist/src/lib/withDashboardChrome.d.ts.map +1 -0
  389. package/dist/src/lib/withDashboardChrome.js +46 -0
  390. package/dist/src/lib/withDashboardChrome.js.map +1 -0
  391. package/dist/src/onboarding/CreateScopeWizardStep.d.ts +14 -0
  392. package/dist/src/onboarding/CreateScopeWizardStep.d.ts.map +1 -0
  393. package/dist/src/onboarding/CreateScopeWizardStep.js +109 -0
  394. package/dist/src/onboarding/CreateScopeWizardStep.js.map +1 -0
  395. package/dist/src/onboarding/ResolveStep.d.ts +17 -0
  396. package/dist/src/onboarding/ResolveStep.d.ts.map +1 -0
  397. package/dist/src/onboarding/ResolveStep.js +101 -0
  398. package/dist/src/onboarding/ResolveStep.js.map +1 -0
  399. package/dist/src/onboarding/StepProps.d.ts +10 -0
  400. package/dist/src/onboarding/StepProps.d.ts.map +1 -0
  401. package/dist/src/onboarding/StepProps.js +2 -0
  402. package/dist/src/onboarding/StepProps.js.map +1 -0
  403. package/dist/src/onboarding/WizardContext.d.ts +20 -0
  404. package/dist/src/onboarding/WizardContext.d.ts.map +1 -0
  405. package/dist/src/onboarding/WizardContext.js +17 -0
  406. package/dist/src/onboarding/WizardContext.js.map +1 -0
  407. package/dist/src/onboarding/WizardPage.d.ts +18 -0
  408. package/dist/src/onboarding/WizardPage.d.ts.map +1 -0
  409. package/dist/src/onboarding/WizardPage.js +9 -0
  410. package/dist/src/onboarding/WizardPage.js.map +1 -0
  411. package/dist/src/onboarding/WizardShell.d.ts +43 -0
  412. package/dist/src/onboarding/WizardShell.d.ts.map +1 -0
  413. package/dist/src/onboarding/WizardShell.js +162 -0
  414. package/dist/src/onboarding/WizardShell.js.map +1 -0
  415. package/dist/src/onboarding/index.d.ts +11 -0
  416. package/dist/src/onboarding/index.d.ts.map +1 -0
  417. package/dist/src/onboarding/index.js +8 -0
  418. package/dist/src/onboarding/index.js.map +1 -0
  419. package/dist/src/onboarding/sortSteps.d.ts +15 -0
  420. package/dist/src/onboarding/sortSteps.d.ts.map +1 -0
  421. package/dist/src/onboarding/sortSteps.js +93 -0
  422. package/dist/src/onboarding/sortSteps.js.map +1 -0
  423. package/dist/src/onboarding/steps/AddPasskeyStep.d.ts +3 -0
  424. package/dist/src/onboarding/steps/AddPasskeyStep.d.ts.map +1 -0
  425. package/dist/src/onboarding/steps/AddPasskeyStep.js +54 -0
  426. package/dist/src/onboarding/steps/AddPasskeyStep.js.map +1 -0
  427. package/dist/src/onboarding/steps/SetupWizardPage.d.ts +2 -0
  428. package/dist/src/onboarding/steps/SetupWizardPage.d.ts.map +1 -0
  429. package/dist/src/onboarding/steps/SetupWizardPage.js +93 -0
  430. package/dist/src/onboarding/steps/SetupWizardPage.js.map +1 -0
  431. package/dist/src/onboarding/steps/setup-steps.d.ts +6 -0
  432. package/dist/src/onboarding/steps/setup-steps.d.ts.map +1 -0
  433. package/dist/src/onboarding/steps/setup-steps.js +75 -0
  434. package/dist/src/onboarding/steps/setup-steps.js.map +1 -0
  435. package/dist/src/pages/AcceptInvitePage.d.ts +2 -0
  436. package/dist/src/pages/AcceptInvitePage.d.ts.map +1 -0
  437. package/dist/src/pages/AcceptInvitePage.js +103 -0
  438. package/dist/src/pages/AcceptInvitePage.js.map +1 -0
  439. package/dist/src/pages/BackendErrorPage.d.ts +6 -0
  440. package/dist/src/pages/BackendErrorPage.d.ts.map +1 -0
  441. package/dist/src/pages/BackendErrorPage.js +6 -0
  442. package/dist/src/pages/BackendErrorPage.js.map +1 -0
  443. package/dist/src/pages/ContextSelectionPage.d.ts +2 -0
  444. package/dist/src/pages/ContextSelectionPage.d.ts.map +1 -0
  445. package/dist/src/pages/ContextSelectionPage.js +166 -0
  446. package/dist/src/pages/ContextSelectionPage.js.map +1 -0
  447. package/dist/src/pages/DefaultCreateScopePage.d.ts +17 -0
  448. package/dist/src/pages/DefaultCreateScopePage.d.ts.map +1 -0
  449. package/dist/src/pages/DefaultCreateScopePage.js +50 -0
  450. package/dist/src/pages/DefaultCreateScopePage.js.map +1 -0
  451. package/dist/src/pages/ForgotPasswordPage.d.ts +2 -0
  452. package/dist/src/pages/ForgotPasswordPage.d.ts.map +1 -0
  453. package/dist/src/pages/ForgotPasswordPage.js +44 -0
  454. package/dist/src/pages/ForgotPasswordPage.js.map +1 -0
  455. package/dist/src/pages/GetStartedPage.d.ts +6 -0
  456. package/dist/src/pages/GetStartedPage.d.ts.map +1 -0
  457. package/dist/src/pages/GetStartedPage.js +49 -0
  458. package/dist/src/pages/GetStartedPage.js.map +1 -0
  459. package/dist/src/pages/InviteErrorPage.d.ts +2 -0
  460. package/dist/src/pages/InviteErrorPage.d.ts.map +1 -0
  461. package/dist/src/pages/InviteErrorPage.js +42 -0
  462. package/dist/src/pages/InviteErrorPage.js.map +1 -0
  463. package/dist/src/pages/LoginPage.d.ts +2 -0
  464. package/dist/src/pages/LoginPage.d.ts.map +1 -0
  465. package/dist/src/pages/LoginPage.js +63 -0
  466. package/dist/src/pages/LoginPage.js.map +1 -0
  467. package/dist/src/pages/NoAccessPage.d.ts +2 -0
  468. package/dist/src/pages/NoAccessPage.d.ts.map +1 -0
  469. package/dist/src/pages/NoAccessPage.js +35 -0
  470. package/dist/src/pages/NoAccessPage.js.map +1 -0
  471. package/dist/src/pages/NotFoundPage.d.ts +2 -0
  472. package/dist/src/pages/NotFoundPage.d.ts.map +1 -0
  473. package/dist/src/pages/NotFoundPage.js +8 -0
  474. package/dist/src/pages/NotFoundPage.js.map +1 -0
  475. package/dist/src/pages/PostLoginResolver.d.ts +9 -0
  476. package/dist/src/pages/PostLoginResolver.d.ts.map +1 -0
  477. package/dist/src/pages/PostLoginResolver.js +50 -0
  478. package/dist/src/pages/PostLoginResolver.js.map +1 -0
  479. package/dist/src/pages/ProfilePage.d.ts +2 -0
  480. package/dist/src/pages/ProfilePage.d.ts.map +1 -0
  481. package/dist/src/pages/ProfilePage.js +353 -0
  482. package/dist/src/pages/ProfilePage.js.map +1 -0
  483. package/dist/src/pages/ResetPasswordPage.d.ts +2 -0
  484. package/dist/src/pages/ResetPasswordPage.d.ts.map +1 -0
  485. package/dist/src/pages/ResetPasswordPage.js +55 -0
  486. package/dist/src/pages/ResetPasswordPage.js.map +1 -0
  487. package/dist/src/pages/SignupPage.d.ts +2 -0
  488. package/dist/src/pages/SignupPage.d.ts.map +1 -0
  489. package/dist/src/pages/SignupPage.js +54 -0
  490. package/dist/src/pages/SignupPage.js.map +1 -0
  491. package/dist/src/pages/index.d.ts +15 -0
  492. package/dist/src/pages/index.d.ts.map +1 -0
  493. package/dist/src/pages/index.js +15 -0
  494. package/dist/src/pages/index.js.map +1 -0
  495. package/dist/src/platform-surface.d.ts +26 -0
  496. package/dist/src/platform-surface.d.ts.map +1 -0
  497. package/dist/src/platform-surface.js +302 -0
  498. package/dist/src/platform-surface.js.map +1 -0
  499. package/dist/testing/index.d.ts +2 -0
  500. package/dist/testing/index.d.ts.map +1 -0
  501. package/dist/testing/index.js +2 -0
  502. package/dist/testing/index.js.map +1 -0
  503. package/dist/tsconfig.tsbuildinfo +1 -0
  504. package/package.json +119 -0
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":"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"}
@@ -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"}