@byline/host-tanstack-start 0.9.3

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 (511) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +48 -0
  3. package/dist/admin-shell/admin-roles/container.d.ts +34 -0
  4. package/dist/admin-shell/admin-roles/container.d.ts.map +1 -0
  5. package/dist/admin-shell/admin-roles/container.js +259 -0
  6. package/dist/admin-shell/admin-roles/container.module.js +17 -0
  7. package/dist/admin-shell/admin-roles/container_module.css +93 -0
  8. package/dist/admin-shell/admin-roles/delete.d.ts +9 -0
  9. package/dist/admin-shell/admin-roles/delete.d.ts.map +1 -0
  10. package/dist/admin-shell/admin-roles/delete.js +107 -0
  11. package/dist/admin-shell/admin-roles/delete.module.js +10 -0
  12. package/dist/admin-shell/admin-roles/delete_module.css +35 -0
  13. package/dist/admin-shell/admin-roles/list.d.ts +25 -0
  14. package/dist/admin-shell/admin-roles/list.d.ts.map +1 -0
  15. package/dist/admin-shell/admin-roles/list.js +292 -0
  16. package/dist/admin-shell/admin-roles/list.module.js +24 -0
  17. package/dist/admin-shell/admin-roles/list_module.css +113 -0
  18. package/dist/admin-shell/admin-users/container.d.ts +18 -0
  19. package/dist/admin-shell/admin-users/container.d.ts.map +1 -0
  20. package/dist/admin-shell/admin-users/container.js +418 -0
  21. package/dist/admin-shell/admin-users/container.module.js +22 -0
  22. package/dist/admin-shell/admin-users/container_module.css +136 -0
  23. package/dist/admin-shell/admin-users/delete.d.ts +9 -0
  24. package/dist/admin-shell/admin-users/delete.d.ts.map +1 -0
  25. package/dist/admin-shell/admin-users/delete.js +115 -0
  26. package/dist/admin-shell/admin-users/delete.module.js +10 -0
  27. package/dist/admin-shell/admin-users/delete_module.css +35 -0
  28. package/dist/admin-shell/admin-users/list.d.ts +13 -0
  29. package/dist/admin-shell/admin-users/list.d.ts.map +1 -0
  30. package/dist/admin-shell/admin-users/list.js +328 -0
  31. package/dist/admin-shell/admin-users/list.module.js +22 -0
  32. package/dist/admin-shell/admin-users/list_module.css +112 -0
  33. package/dist/admin-shell/chrome/admin-app-bar.d.ts +7 -0
  34. package/dist/admin-shell/chrome/admin-app-bar.d.ts.map +1 -0
  35. package/dist/admin-shell/chrome/admin-app-bar.js +71 -0
  36. package/dist/admin-shell/chrome/admin-app-bar.module.js +9 -0
  37. package/dist/admin-shell/chrome/admin-app-bar_module.css +54 -0
  38. package/dist/admin-shell/chrome/admin-layout.module.js +5 -0
  39. package/dist/admin-shell/chrome/admin-layout_module.css +8 -0
  40. package/dist/admin-shell/chrome/branding.d.ts +9 -0
  41. package/dist/admin-shell/chrome/branding.d.ts.map +1 -0
  42. package/dist/admin-shell/chrome/branding.js +17 -0
  43. package/dist/admin-shell/chrome/branding.module.js +6 -0
  44. package/dist/admin-shell/chrome/branding_module.css +11 -0
  45. package/dist/admin-shell/chrome/breadcrumbs/@types.d.ts +6 -0
  46. package/dist/admin-shell/chrome/breadcrumbs/@types.d.ts.map +1 -0
  47. package/dist/admin-shell/chrome/breadcrumbs/@types.js +1 -0
  48. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-client.d.ts +7 -0
  49. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-client.d.ts.map +1 -0
  50. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-client.js +20 -0
  51. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.d.ts +24 -0
  52. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.d.ts.map +1 -0
  53. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.js +23 -0
  54. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.d.ts +15 -0
  55. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  56. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.js +77 -0
  57. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs.module.js +12 -0
  58. package/dist/admin-shell/chrome/breadcrumbs/breadcrumbs_module.css +81 -0
  59. package/dist/admin-shell/chrome/byline-logo.d.ts +12 -0
  60. package/dist/admin-shell/chrome/byline-logo.d.ts.map +1 -0
  61. package/dist/admin-shell/chrome/byline-logo.js +178 -0
  62. package/dist/admin-shell/chrome/content.d.ts +24 -0
  63. package/dist/admin-shell/chrome/content.d.ts.map +1 -0
  64. package/dist/admin-shell/chrome/content.js +31 -0
  65. package/dist/admin-shell/chrome/content.module.js +5 -0
  66. package/dist/admin-shell/chrome/content_module.css +10 -0
  67. package/dist/admin-shell/chrome/dashboard.d.ts +14 -0
  68. package/dist/admin-shell/chrome/dashboard.d.ts.map +1 -0
  69. package/dist/admin-shell/chrome/dashboard.js +129 -0
  70. package/dist/admin-shell/chrome/dashboard.module.js +19 -0
  71. package/dist/admin-shell/chrome/dashboard_module.css +175 -0
  72. package/dist/admin-shell/chrome/drawer-toggle.d.ts +9 -0
  73. package/dist/admin-shell/chrome/drawer-toggle.d.ts.map +1 -0
  74. package/dist/admin-shell/chrome/drawer-toggle.js +57 -0
  75. package/dist/admin-shell/chrome/drawer-toggle.module.js +8 -0
  76. package/dist/admin-shell/chrome/drawer-toggle_module.css +21 -0
  77. package/dist/admin-shell/chrome/hamburger.d.ts +10 -0
  78. package/dist/admin-shell/chrome/hamburger.d.ts.map +1 -0
  79. package/dist/admin-shell/chrome/hamburger.js +30 -0
  80. package/dist/admin-shell/chrome/hamburger.module.js +5 -0
  81. package/dist/admin-shell/chrome/hamburger_module.css +7 -0
  82. package/dist/admin-shell/chrome/loose-router.d.ts +33 -0
  83. package/dist/admin-shell/chrome/loose-router.d.ts.map +1 -0
  84. package/dist/admin-shell/chrome/loose-router.js +6 -0
  85. package/dist/admin-shell/chrome/menu-drawer.d.ts +10 -0
  86. package/dist/admin-shell/chrome/menu-drawer.d.ts.map +1 -0
  87. package/dist/admin-shell/chrome/menu-drawer.js +141 -0
  88. package/dist/admin-shell/chrome/menu-drawer.module.js +12 -0
  89. package/dist/admin-shell/chrome/menu-drawer_module.css +137 -0
  90. package/dist/admin-shell/chrome/menu-provider.d.ts +21 -0
  91. package/dist/admin-shell/chrome/menu-provider.d.ts.map +1 -0
  92. package/dist/admin-shell/chrome/menu-provider.js +54 -0
  93. package/dist/admin-shell/chrome/preview-toggle.d.ts +13 -0
  94. package/dist/admin-shell/chrome/preview-toggle.d.ts.map +1 -0
  95. package/dist/admin-shell/chrome/preview-toggle.js +75 -0
  96. package/dist/admin-shell/chrome/route-error.d.ts +22 -0
  97. package/dist/admin-shell/chrome/route-error.d.ts.map +1 -0
  98. package/dist/admin-shell/chrome/route-error.js +119 -0
  99. package/dist/admin-shell/chrome/route-error.module.js +14 -0
  100. package/dist/admin-shell/chrome/route-error_module.css +94 -0
  101. package/dist/admin-shell/chrome/router-pager.d.ts +19 -0
  102. package/dist/admin-shell/chrome/router-pager.d.ts.map +1 -0
  103. package/dist/admin-shell/chrome/router-pager.js +91 -0
  104. package/dist/admin-shell/chrome/sign-in-page.d.ts +19 -0
  105. package/dist/admin-shell/chrome/sign-in-page.d.ts.map +1 -0
  106. package/dist/admin-shell/chrome/sign-in-page.js +20 -0
  107. package/dist/admin-shell/chrome/sign-in-page.module.js +6 -0
  108. package/dist/admin-shell/chrome/sign-in-page_module.css +22 -0
  109. package/dist/admin-shell/chrome/sort-icons.d.ts +10 -0
  110. package/dist/admin-shell/chrome/sort-icons.d.ts.map +1 -0
  111. package/dist/admin-shell/chrome/sort-icons.js +103 -0
  112. package/dist/admin-shell/chrome/th-sortable.d.ts +23 -0
  113. package/dist/admin-shell/chrome/th-sortable.d.ts.map +1 -0
  114. package/dist/admin-shell/chrome/th-sortable.js +75 -0
  115. package/dist/admin-shell/chrome/th-sortable.module.js +10 -0
  116. package/dist/admin-shell/chrome/th-sortable_module.css +37 -0
  117. package/dist/admin-shell/chrome/use-media-query.d.ts +9 -0
  118. package/dist/admin-shell/chrome/use-media-query.d.ts.map +1 -0
  119. package/dist/admin-shell/chrome/use-media-query.js +20 -0
  120. package/dist/admin-shell/chrome/utils.d.ts +12 -0
  121. package/dist/admin-shell/chrome/utils.d.ts.map +1 -0
  122. package/dist/admin-shell/chrome/utils.js +8 -0
  123. package/dist/admin-shell/collections/api.d.ts +28 -0
  124. package/dist/admin-shell/collections/api.d.ts.map +1 -0
  125. package/dist/admin-shell/collections/api.js +51 -0
  126. package/dist/admin-shell/collections/api.module.js +9 -0
  127. package/dist/admin-shell/collections/api_module.css +42 -0
  128. package/dist/admin-shell/collections/create.d.ts +14 -0
  129. package/dist/admin-shell/collections/create.d.ts.map +1 -0
  130. package/dist/admin-shell/collections/create.js +77 -0
  131. package/dist/admin-shell/collections/edit.d.ts +19 -0
  132. package/dist/admin-shell/collections/edit.d.ts.map +1 -0
  133. package/dist/admin-shell/collections/edit.js +279 -0
  134. package/dist/admin-shell/collections/history.d.ts +20 -0
  135. package/dist/admin-shell/collections/history.d.ts.map +1 -0
  136. package/dist/admin-shell/collections/history.js +252 -0
  137. package/dist/admin-shell/collections/history.module.js +18 -0
  138. package/dist/admin-shell/collections/history_module.css +121 -0
  139. package/dist/admin-shell/collections/list.d.ts +16 -0
  140. package/dist/admin-shell/collections/list.d.ts.map +1 -0
  141. package/dist/admin-shell/collections/list.js +253 -0
  142. package/dist/admin-shell/collections/list.module.js +16 -0
  143. package/dist/admin-shell/collections/list_module.css +88 -0
  144. package/dist/admin-shell/collections/preview-link.d.ts +32 -0
  145. package/dist/admin-shell/collections/preview-link.d.ts.map +1 -0
  146. package/dist/admin-shell/collections/preview-link.js +54 -0
  147. package/dist/admin-shell/collections/tanstack-navigation-guard.d.ts +16 -0
  148. package/dist/admin-shell/collections/tanstack-navigation-guard.d.ts.map +1 -0
  149. package/dist/admin-shell/collections/tanstack-navigation-guard.js +19 -0
  150. package/dist/admin-shell/collections/view-menu.d.ts +58 -0
  151. package/dist/admin-shell/collections/view-menu.d.ts.map +1 -0
  152. package/dist/admin-shell/collections/view-menu.js +203 -0
  153. package/dist/admin-shell/collections/view-menu.module.js +11 -0
  154. package/dist/admin-shell/collections/view-menu_module.css +43 -0
  155. package/dist/auth/auth-context.d.ts +38 -0
  156. package/dist/auth/auth-context.d.ts.map +1 -0
  157. package/dist/auth/auth-context.js +57 -0
  158. package/dist/auth/auth-cookies.d.ts +35 -0
  159. package/dist/auth/auth-cookies.d.ts.map +1 -0
  160. package/dist/auth/auth-cookies.js +46 -0
  161. package/dist/auth/preview-cookies.d.ts +20 -0
  162. package/dist/auth/preview-cookies.d.ts.map +1 -0
  163. package/dist/auth/preview-cookies.js +26 -0
  164. package/dist/index.d.ts +43 -0
  165. package/dist/index.d.ts.map +1 -0
  166. package/dist/index.js +1 -0
  167. package/dist/integrations/abilities.d.ts +67 -0
  168. package/dist/integrations/abilities.d.ts.map +1 -0
  169. package/dist/integrations/abilities.js +25 -0
  170. package/dist/integrations/api-utils.d.ts +34 -0
  171. package/dist/integrations/api-utils.d.ts.map +1 -0
  172. package/dist/integrations/api-utils.js +22 -0
  173. package/dist/integrations/byline-admin-services.d.ts +25 -0
  174. package/dist/integrations/byline-admin-services.d.ts.map +1 -0
  175. package/dist/integrations/byline-admin-services.js +26 -0
  176. package/dist/integrations/byline-client.d.ts +22 -0
  177. package/dist/integrations/byline-client.d.ts.map +1 -0
  178. package/dist/integrations/byline-client.js +13 -0
  179. package/dist/integrations/byline-core.d.ts +28 -0
  180. package/dist/integrations/byline-core.d.ts.map +1 -0
  181. package/dist/integrations/byline-core.js +5 -0
  182. package/dist/integrations/byline-field-services.d.ts +19 -0
  183. package/dist/integrations/byline-field-services.d.ts.map +1 -0
  184. package/dist/integrations/byline-field-services.js +14 -0
  185. package/dist/integrations/byline-public-client.d.ts +10 -0
  186. package/dist/integrations/byline-public-client.d.ts.map +1 -0
  187. package/dist/integrations/byline-public-client.js +15 -0
  188. package/dist/integrations/byline-viewer-client.d.ts +21 -0
  189. package/dist/integrations/byline-viewer-client.d.ts.map +1 -0
  190. package/dist/integrations/byline-viewer-client.js +39 -0
  191. package/dist/integrations/start-errors.d.ts +23 -0
  192. package/dist/integrations/start-errors.d.ts.map +1 -0
  193. package/dist/integrations/start-errors.js +32 -0
  194. package/dist/routes/create-admin-account-route.d.ts +9 -0
  195. package/dist/routes/create-admin-account-route.d.ts.map +1 -0
  196. package/dist/routes/create-admin-account-route.js +68 -0
  197. package/dist/routes/create-admin-dashboard-route.d.ts +9 -0
  198. package/dist/routes/create-admin-dashboard-route.d.ts.map +1 -0
  199. package/dist/routes/create-admin-dashboard-route.js +44 -0
  200. package/dist/routes/create-admin-layout-route.d.ts +14 -0
  201. package/dist/routes/create-admin-layout-route.d.ts.map +1 -0
  202. package/dist/routes/create-admin-layout-route.js +64 -0
  203. package/dist/routes/create-admin-permissions-route.d.ts +9 -0
  204. package/dist/routes/create-admin-permissions-route.d.ts.map +1 -0
  205. package/dist/routes/create-admin-permissions-route.js +39 -0
  206. package/dist/routes/create-admin-role-edit-route.d.ts +9 -0
  207. package/dist/routes/create-admin-role-edit-route.d.ts.map +1 -0
  208. package/dist/routes/create-admin-role-edit-route.js +79 -0
  209. package/dist/routes/create-admin-roles-list-route.d.ts +9 -0
  210. package/dist/routes/create-admin-roles-list-route.d.ts.map +1 -0
  211. package/dist/routes/create-admin-roles-list-route.js +39 -0
  212. package/dist/routes/create-admin-user-edit-route.d.ts +9 -0
  213. package/dist/routes/create-admin-user-edit-route.d.ts.map +1 -0
  214. package/dist/routes/create-admin-user-edit-route.js +86 -0
  215. package/dist/routes/create-admin-users-list-route.d.ts +9 -0
  216. package/dist/routes/create-admin-users-list-route.d.ts.map +1 -0
  217. package/dist/routes/create-admin-users-list-route.js +71 -0
  218. package/dist/routes/create-collection-api-route.d.ts +15 -0
  219. package/dist/routes/create-collection-api-route.d.ts.map +1 -0
  220. package/dist/routes/create-collection-api-route.js +71 -0
  221. package/dist/routes/create-collection-create-route.d.ts +9 -0
  222. package/dist/routes/create-collection-create-route.d.ts.map +1 -0
  223. package/dist/routes/create-collection-create-route.js +53 -0
  224. package/dist/routes/create-collection-edit-route.d.ts +15 -0
  225. package/dist/routes/create-collection-edit-route.d.ts.map +1 -0
  226. package/dist/routes/create-collection-edit-route.js +65 -0
  227. package/dist/routes/create-collection-history-route.d.ts +15 -0
  228. package/dist/routes/create-collection-history-route.d.ts.map +1 -0
  229. package/dist/routes/create-collection-history-route.js +94 -0
  230. package/dist/routes/create-collection-list-route.d.ts +9 -0
  231. package/dist/routes/create-collection-list-route.d.ts.map +1 -0
  232. package/dist/routes/create-collection-list-route.js +130 -0
  233. package/dist/routes/create-sign-in-route.d.ts +9 -0
  234. package/dist/routes/create-sign-in-route.d.ts.map +1 -0
  235. package/dist/routes/create-sign-in-route.js +21 -0
  236. package/dist/routes/index.d.ts +35 -0
  237. package/dist/routes/index.d.ts.map +1 -0
  238. package/dist/routes/index.js +14 -0
  239. package/dist/server-fns/admin-account/change-password.d.ts +30 -0
  240. package/dist/server-fns/admin-account/change-password.d.ts.map +1 -0
  241. package/dist/server-fns/admin-account/change-password.js +13 -0
  242. package/dist/server-fns/admin-account/get.d.ts +31 -0
  243. package/dist/server-fns/admin-account/get.d.ts.map +1 -0
  244. package/dist/server-fns/admin-account/get.js +13 -0
  245. package/dist/server-fns/admin-account/index.d.ts +22 -0
  246. package/dist/server-fns/admin-account/index.d.ts.map +1 -0
  247. package/dist/server-fns/admin-account/index.js +3 -0
  248. package/dist/server-fns/admin-account/update.d.ts +34 -0
  249. package/dist/server-fns/admin-account/update.d.ts.map +1 -0
  250. package/dist/server-fns/admin-account/update.js +13 -0
  251. package/dist/server-fns/admin-permissions/get-role-abilities.d.ts +16 -0
  252. package/dist/server-fns/admin-permissions/get-role-abilities.d.ts.map +1 -0
  253. package/dist/server-fns/admin-permissions/get-role-abilities.js +14 -0
  254. package/dist/server-fns/admin-permissions/index.d.ts +25 -0
  255. package/dist/server-fns/admin-permissions/index.d.ts.map +1 -0
  256. package/dist/server-fns/admin-permissions/index.js +4 -0
  257. package/dist/server-fns/admin-permissions/list-registered.d.ts +33 -0
  258. package/dist/server-fns/admin-permissions/list-registered.d.ts.map +1 -0
  259. package/dist/server-fns/admin-permissions/list-registered.js +14 -0
  260. package/dist/server-fns/admin-permissions/set-role-abilities.d.ts +16 -0
  261. package/dist/server-fns/admin-permissions/set-role-abilities.d.ts.map +1 -0
  262. package/dist/server-fns/admin-permissions/set-role-abilities.js +14 -0
  263. package/dist/server-fns/admin-permissions/who-has.d.ts +26 -0
  264. package/dist/server-fns/admin-permissions/who-has.d.ts.map +1 -0
  265. package/dist/server-fns/admin-permissions/who-has.js +14 -0
  266. package/dist/server-fns/admin-roles/create.d.ts +24 -0
  267. package/dist/server-fns/admin-roles/create.d.ts.map +1 -0
  268. package/dist/server-fns/admin-roles/create.js +13 -0
  269. package/dist/server-fns/admin-roles/delete.d.ts +17 -0
  270. package/dist/server-fns/admin-roles/delete.d.ts.map +1 -0
  271. package/dist/server-fns/admin-roles/delete.js +13 -0
  272. package/dist/server-fns/admin-roles/get.d.ts +22 -0
  273. package/dist/server-fns/admin-roles/get.d.ts.map +1 -0
  274. package/dist/server-fns/admin-roles/get.js +13 -0
  275. package/dist/server-fns/admin-roles/index.d.ts +23 -0
  276. package/dist/server-fns/admin-roles/index.d.ts.map +1 -0
  277. package/dist/server-fns/admin-roles/index.js +6 -0
  278. package/dist/server-fns/admin-roles/list.d.ts +26 -0
  279. package/dist/server-fns/admin-roles/list.d.ts.map +1 -0
  280. package/dist/server-fns/admin-roles/list.js +13 -0
  281. package/dist/server-fns/admin-roles/reorder.d.ts +15 -0
  282. package/dist/server-fns/admin-roles/reorder.d.ts.map +1 -0
  283. package/dist/server-fns/admin-roles/reorder.js +13 -0
  284. package/dist/server-fns/admin-roles/update.d.ts +27 -0
  285. package/dist/server-fns/admin-roles/update.d.ts.map +1 -0
  286. package/dist/server-fns/admin-roles/update.js +13 -0
  287. package/dist/server-fns/admin-users/create.d.ts +35 -0
  288. package/dist/server-fns/admin-users/create.d.ts.map +1 -0
  289. package/dist/server-fns/admin-users/create.js +13 -0
  290. package/dist/server-fns/admin-users/delete.d.ts +17 -0
  291. package/dist/server-fns/admin-users/delete.d.ts.map +1 -0
  292. package/dist/server-fns/admin-users/delete.js +13 -0
  293. package/dist/server-fns/admin-users/disable.d.ts +15 -0
  294. package/dist/server-fns/admin-users/disable.d.ts.map +1 -0
  295. package/dist/server-fns/admin-users/disable.js +13 -0
  296. package/dist/server-fns/admin-users/enable.d.ts +15 -0
  297. package/dist/server-fns/admin-users/enable.d.ts.map +1 -0
  298. package/dist/server-fns/admin-users/enable.js +13 -0
  299. package/dist/server-fns/admin-users/get-user-roles.d.ts +25 -0
  300. package/dist/server-fns/admin-users/get-user-roles.d.ts.map +1 -0
  301. package/dist/server-fns/admin-users/get-user-roles.js +13 -0
  302. package/dist/server-fns/admin-users/get.d.ts +29 -0
  303. package/dist/server-fns/admin-users/get.d.ts.map +1 -0
  304. package/dist/server-fns/admin-users/get.js +13 -0
  305. package/dist/server-fns/admin-users/index.d.ts +28 -0
  306. package/dist/server-fns/admin-users/index.d.ts.map +1 -0
  307. package/dist/server-fns/admin-users/index.js +10 -0
  308. package/dist/server-fns/admin-users/list.d.ts +51 -0
  309. package/dist/server-fns/admin-users/list.d.ts.map +1 -0
  310. package/dist/server-fns/admin-users/list.js +13 -0
  311. package/dist/server-fns/admin-users/set-password.d.ts +30 -0
  312. package/dist/server-fns/admin-users/set-password.d.ts.map +1 -0
  313. package/dist/server-fns/admin-users/set-password.js +13 -0
  314. package/dist/server-fns/admin-users/set-user-roles.d.ts +25 -0
  315. package/dist/server-fns/admin-users/set-user-roles.d.ts.map +1 -0
  316. package/dist/server-fns/admin-users/set-user-roles.js +13 -0
  317. package/dist/server-fns/admin-users/update.d.ts +37 -0
  318. package/dist/server-fns/admin-users/update.d.ts.map +1 -0
  319. package/dist/server-fns/admin-users/update.js +13 -0
  320. package/dist/server-fns/auth/current-user.d.ts +38 -0
  321. package/dist/server-fns/auth/current-user.d.ts.map +1 -0
  322. package/dist/server-fns/auth/current-user.js +52 -0
  323. package/dist/server-fns/auth/index.d.ts +11 -0
  324. package/dist/server-fns/auth/index.d.ts.map +1 -0
  325. package/dist/server-fns/auth/index.js +3 -0
  326. package/dist/server-fns/auth/sign-in.d.ts +19 -0
  327. package/dist/server-fns/auth/sign-in.d.ts.map +1 -0
  328. package/dist/server-fns/auth/sign-in.js +31 -0
  329. package/dist/server-fns/auth/sign-out.d.ts +11 -0
  330. package/dist/server-fns/auth/sign-out.d.ts.map +1 -0
  331. package/dist/server-fns/auth/sign-out.js +17 -0
  332. package/dist/server-fns/collections/create.d.ts +21 -0
  333. package/dist/server-fns/collections/create.d.ts.map +1 -0
  334. package/dist/server-fns/collections/create.js +40 -0
  335. package/dist/server-fns/collections/delete.d.ts +18 -0
  336. package/dist/server-fns/collections/delete.d.ts.map +1 -0
  337. package/dist/server-fns/collections/delete.js +44 -0
  338. package/dist/server-fns/collections/get.d.ts +26 -0
  339. package/dist/server-fns/collections/get.d.ts.map +1 -0
  340. package/dist/server-fns/collections/get.js +133 -0
  341. package/dist/server-fns/collections/history.d.ts +43 -0
  342. package/dist/server-fns/collections/history.d.ts.map +1 -0
  343. package/dist/server-fns/collections/history.js +29 -0
  344. package/dist/server-fns/collections/index.d.ts +16 -0
  345. package/dist/server-fns/collections/index.d.ts.map +1 -0
  346. package/dist/server-fns/collections/index.js +9 -0
  347. package/dist/server-fns/collections/list.d.ts +54 -0
  348. package/dist/server-fns/collections/list.d.ts.map +1 -0
  349. package/dist/server-fns/collections/list.js +65 -0
  350. package/dist/server-fns/collections/stats.d.ts +17 -0
  351. package/dist/server-fns/collections/stats.d.ts.map +1 -0
  352. package/dist/server-fns/collections/stats.js +28 -0
  353. package/dist/server-fns/collections/status.d.ts +31 -0
  354. package/dist/server-fns/collections/status.d.ts.map +1 -0
  355. package/dist/server-fns/collections/status.js +79 -0
  356. package/dist/server-fns/collections/update.d.ts +26 -0
  357. package/dist/server-fns/collections/update.d.ts.map +1 -0
  358. package/dist/server-fns/collections/update.js +41 -0
  359. package/dist/server-fns/collections/upload.d.ts +57 -0
  360. package/dist/server-fns/collections/upload.d.ts.map +1 -0
  361. package/dist/server-fns/collections/upload.js +132 -0
  362. package/dist/server-fns/collections/utils.d.ts +15 -0
  363. package/dist/server-fns/collections/utils.d.ts.map +1 -0
  364. package/dist/server-fns/collections/utils.js +4 -0
  365. package/dist/server-fns/preview/disable.d.ts +12 -0
  366. package/dist/server-fns/preview/disable.d.ts.map +1 -0
  367. package/dist/server-fns/preview/disable.js +12 -0
  368. package/dist/server-fns/preview/enable.d.ts +12 -0
  369. package/dist/server-fns/preview/enable.d.ts.map +1 -0
  370. package/dist/server-fns/preview/enable.js +14 -0
  371. package/dist/server-fns/preview/index.d.ts +11 -0
  372. package/dist/server-fns/preview/index.d.ts.map +1 -0
  373. package/dist/server-fns/preview/index.js +3 -0
  374. package/dist/server-fns/preview/state.d.ts +11 -0
  375. package/dist/server-fns/preview/state.d.ts.map +1 -0
  376. package/dist/server-fns/preview/state.js +8 -0
  377. package/package.json +164 -0
  378. package/src/admin-shell/admin-roles/container.module.css +132 -0
  379. package/src/admin-shell/admin-roles/container.tsx +209 -0
  380. package/src/admin-shell/admin-roles/delete.module.css +52 -0
  381. package/src/admin-shell/admin-roles/delete.tsx +117 -0
  382. package/src/admin-shell/admin-roles/list.module.css +158 -0
  383. package/src/admin-shell/admin-roles/list.tsx +308 -0
  384. package/src/admin-shell/admin-users/container.module.css +199 -0
  385. package/src/admin-shell/admin-users/container.tsx +344 -0
  386. package/src/admin-shell/admin-users/delete.module.css +52 -0
  387. package/src/admin-shell/admin-users/delete.tsx +129 -0
  388. package/src/admin-shell/admin-users/list.module.css +164 -0
  389. package/src/admin-shell/admin-users/list.tsx +314 -0
  390. package/src/admin-shell/chrome/admin-app-bar.module.css +72 -0
  391. package/src/admin-shell/chrome/admin-app-bar.tsx +74 -0
  392. package/src/admin-shell/chrome/admin-layout.module.css +16 -0
  393. package/src/admin-shell/chrome/branding.module.css +20 -0
  394. package/src/admin-shell/chrome/branding.tsx +23 -0
  395. package/src/admin-shell/chrome/breadcrumbs/@types.ts +5 -0
  396. package/src/admin-shell/chrome/breadcrumbs/breadcrumbs-client.tsx +30 -0
  397. package/src/admin-shell/chrome/breadcrumbs/breadcrumbs-provider.tsx +48 -0
  398. package/src/admin-shell/chrome/breadcrumbs/breadcrumbs.module.css +93 -0
  399. package/src/admin-shell/chrome/breadcrumbs/breadcrumbs.tsx +96 -0
  400. package/src/admin-shell/chrome/byline-logo.tsx +151 -0
  401. package/src/admin-shell/chrome/content.module.css +16 -0
  402. package/src/admin-shell/chrome/content.tsx +60 -0
  403. package/src/admin-shell/chrome/dashboard.module.css +245 -0
  404. package/src/admin-shell/chrome/dashboard.tsx +128 -0
  405. package/src/admin-shell/chrome/drawer-toggle.module.css +30 -0
  406. package/src/admin-shell/chrome/drawer-toggle.tsx +62 -0
  407. package/src/admin-shell/chrome/hamburger.module.css +16 -0
  408. package/src/admin-shell/chrome/hamburger.tsx +56 -0
  409. package/src/admin-shell/chrome/loose-router.ts +47 -0
  410. package/src/admin-shell/chrome/menu-drawer.module.css +196 -0
  411. package/src/admin-shell/chrome/menu-drawer.tsx +155 -0
  412. package/src/admin-shell/chrome/menu-provider.tsx +95 -0
  413. package/src/admin-shell/chrome/preview-toggle.tsx +107 -0
  414. package/src/admin-shell/chrome/route-error.module.css +114 -0
  415. package/src/admin-shell/chrome/route-error.tsx +125 -0
  416. package/src/admin-shell/chrome/router-pager.tsx +179 -0
  417. package/src/admin-shell/chrome/sign-in-page.module.css +32 -0
  418. package/src/admin-shell/chrome/sign-in-page.tsx +35 -0
  419. package/src/admin-shell/chrome/sort-icons.tsx +127 -0
  420. package/src/admin-shell/chrome/th-sortable.module.css +51 -0
  421. package/src/admin-shell/chrome/th-sortable.tsx +114 -0
  422. package/src/admin-shell/chrome/use-media-query.ts +28 -0
  423. package/src/admin-shell/chrome/utils.ts +20 -0
  424. package/src/admin-shell/collections/api.module.css +62 -0
  425. package/src/admin-shell/collections/api.tsx +70 -0
  426. package/src/admin-shell/collections/create.tsx +108 -0
  427. package/src/admin-shell/collections/edit.tsx +319 -0
  428. package/src/admin-shell/collections/history.module.css +156 -0
  429. package/src/admin-shell/collections/history.tsx +352 -0
  430. package/src/admin-shell/collections/list.module.css +124 -0
  431. package/src/admin-shell/collections/list.tsx +313 -0
  432. package/src/admin-shell/collections/preview-link.tsx +138 -0
  433. package/src/admin-shell/collections/tanstack-navigation-guard.ts +43 -0
  434. package/src/admin-shell/collections/view-menu.module.css +60 -0
  435. package/src/admin-shell/collections/view-menu.tsx +238 -0
  436. package/src/auth/auth-context.test.node.ts +200 -0
  437. package/src/auth/auth-context.ts +119 -0
  438. package/src/auth/auth-cookies.ts +113 -0
  439. package/src/auth/preview-cookies.ts +73 -0
  440. package/src/declarations.d.ts +4 -0
  441. package/src/index.ts +44 -0
  442. package/src/integrations/abilities.tsx +90 -0
  443. package/src/integrations/api-utils.ts +66 -0
  444. package/src/integrations/byline-admin-services.ts +86 -0
  445. package/src/integrations/byline-client.ts +40 -0
  446. package/src/integrations/byline-core.ts +32 -0
  447. package/src/integrations/byline-field-services.ts +35 -0
  448. package/src/integrations/byline-public-client.ts +53 -0
  449. package/src/integrations/byline-viewer-client.ts +99 -0
  450. package/src/integrations/start-errors.ts +86 -0
  451. package/src/routes/create-admin-account-route.tsx +65 -0
  452. package/src/routes/create-admin-dashboard-route.tsx +52 -0
  453. package/src/routes/create-admin-layout-route.tsx +89 -0
  454. package/src/routes/create-admin-permissions-route.tsx +43 -0
  455. package/src/routes/create-admin-role-edit-route.tsx +88 -0
  456. package/src/routes/create-admin-roles-list-route.tsx +39 -0
  457. package/src/routes/create-admin-user-edit-route.tsx +105 -0
  458. package/src/routes/create-admin-users-list-route.tsx +84 -0
  459. package/src/routes/create-collection-api-route.tsx +111 -0
  460. package/src/routes/create-collection-create-route.tsx +66 -0
  461. package/src/routes/create-collection-edit-route.tsx +102 -0
  462. package/src/routes/create-collection-history-route.tsx +130 -0
  463. package/src/routes/create-collection-list-route.tsx +175 -0
  464. package/src/routes/create-sign-in-route.tsx +39 -0
  465. package/src/routes/index.ts +36 -0
  466. package/src/server-fns/admin-account/change-password.ts +27 -0
  467. package/src/server-fns/admin-account/get.ts +27 -0
  468. package/src/server-fns/admin-account/index.ts +28 -0
  469. package/src/server-fns/admin-account/update.ts +31 -0
  470. package/src/server-fns/admin-permissions/get-role-abilities.ts +27 -0
  471. package/src/server-fns/admin-permissions/index.ts +36 -0
  472. package/src/server-fns/admin-permissions/list-registered.ts +36 -0
  473. package/src/server-fns/admin-permissions/set-role-abilities.ts +32 -0
  474. package/src/server-fns/admin-permissions/who-has.ts +24 -0
  475. package/src/server-fns/admin-roles/create.ts +28 -0
  476. package/src/server-fns/admin-roles/delete.ts +25 -0
  477. package/src/server-fns/admin-roles/get.ts +21 -0
  478. package/src/server-fns/admin-roles/index.ts +25 -0
  479. package/src/server-fns/admin-roles/list.ts +27 -0
  480. package/src/server-fns/admin-roles/reorder.ts +21 -0
  481. package/src/server-fns/admin-roles/update.ts +31 -0
  482. package/src/server-fns/admin-users/create.ts +32 -0
  483. package/src/server-fns/admin-users/delete.ts +21 -0
  484. package/src/server-fns/admin-users/disable.ts +24 -0
  485. package/src/server-fns/admin-users/enable.ts +24 -0
  486. package/src/server-fns/admin-users/get-user-roles.ts +21 -0
  487. package/src/server-fns/admin-users/get.ts +21 -0
  488. package/src/server-fns/admin-users/index.ts +35 -0
  489. package/src/server-fns/admin-users/list.ts +40 -0
  490. package/src/server-fns/admin-users/set-password.ts +27 -0
  491. package/src/server-fns/admin-users/set-user-roles.ts +26 -0
  492. package/src/server-fns/admin-users/update.ts +34 -0
  493. package/src/server-fns/auth/current-user.ts +117 -0
  494. package/src/server-fns/auth/index.ts +15 -0
  495. package/src/server-fns/auth/sign-in.ts +71 -0
  496. package/src/server-fns/auth/sign-out.ts +42 -0
  497. package/src/server-fns/collections/create.ts +58 -0
  498. package/src/server-fns/collections/delete.ts +62 -0
  499. package/src/server-fns/collections/get.ts +233 -0
  500. package/src/server-fns/collections/history.ts +73 -0
  501. package/src/server-fns/collections/index.ts +16 -0
  502. package/src/server-fns/collections/list.ts +121 -0
  503. package/src/server-fns/collections/stats.ts +52 -0
  504. package/src/server-fns/collections/status.ts +102 -0
  505. package/src/server-fns/collections/update.ts +67 -0
  506. package/src/server-fns/collections/upload.ts +274 -0
  507. package/src/server-fns/collections/utils.ts +17 -0
  508. package/src/server-fns/preview/disable.ts +24 -0
  509. package/src/server-fns/preview/enable.ts +27 -0
  510. package/src/server-fns/preview/index.ts +11 -0
  511. package/src/server-fns/preview/state.ts +30 -0
@@ -0,0 +1,86 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+
9
+ /**
10
+ * Serialization adapter for coded errors thrown from server fns.
11
+ *
12
+ * TanStack Start's default `ShallowErrorPlugin` matches any `Error` and
13
+ * serialises only `message` — `code`, `cause`, and custom fields are
14
+ * dropped on the wire. That makes client-side branching on `err.code`
15
+ * dead code: every failure reaches the caller as a plain `Error(message)`.
16
+ *
17
+ * This adapter is registered via `createStart(...)` in `src/start.ts`.
18
+ * TanStack prepends `serializationAdapters` before the default plugins,
19
+ * so our `test` matches first and our errors skip the shallow fallback.
20
+ *
21
+ * The adapter is intentionally duck-typed (`name + code`) rather than
22
+ * using `instanceof AdminUsersError` / `instanceof AuthError`. Both error
23
+ * classes live in packages whose barrel exports pull argon2 / other
24
+ * server-only code into whatever bundle imports them — a direct import
25
+ * here would drag that into the browser bundle. The string check is
26
+ * equally reliable in practice and keeps this module client-safe.
27
+ *
28
+ * On the client side we rebuild the error as `BylineCodedError` — a
29
+ * lightweight local class that preserves `name`, `code`, and `message`.
30
+ * The admin forms branch on `err.code === '...'` (string), not on the
31
+ * original class, so the UI behaves identically to a real throw.
32
+ */
33
+
34
+ import { createSerializationAdapter } from '@tanstack/react-router'
35
+
36
+ /**
37
+ * Names of server-side error classes we want to preserve across the
38
+ * server-fn boundary. Add a new entry when introducing another typed
39
+ * error class that carries a string `code`.
40
+ */
41
+ const CODED_ERROR_NAMES = new Set([
42
+ 'AdminAccountError',
43
+ 'AdminPermissionsError',
44
+ 'AdminRolesError',
45
+ 'AdminUsersError',
46
+ 'AuthError',
47
+ ])
48
+
49
+ export interface BylineCodedErrorPayload {
50
+ name: string
51
+ code: string
52
+ message: string
53
+ }
54
+
55
+ /**
56
+ * Minimal `Error` subclass reconstructed on the deserialize side. Does
57
+ * not reference the original server-side classes — intentional, to keep
58
+ * this module free of server-only dependencies.
59
+ */
60
+ export class BylineCodedError extends Error {
61
+ public readonly code: string
62
+
63
+ constructor(payload: BylineCodedErrorPayload) {
64
+ super(payload.message)
65
+ this.name = payload.name
66
+ this.code = payload.code
67
+ }
68
+ }
69
+
70
+ function isCodedError(value: unknown): value is Error & { code: string } {
71
+ if (!(value instanceof Error)) return false
72
+ if (!CODED_ERROR_NAMES.has(value.name)) return false
73
+ const code = (value as { code?: unknown }).code
74
+ return typeof code === 'string'
75
+ }
76
+
77
+ export const bylineCodedErrorAdapter = createSerializationAdapter({
78
+ key: 'BylineCodedError',
79
+ test: isCodedError,
80
+ toSerializable: (err): BylineCodedErrorPayload => ({
81
+ name: err.name,
82
+ code: err.code,
83
+ message: err.message,
84
+ }),
85
+ fromSerializable: (payload: BylineCodedErrorPayload) => new BylineCodedError(payload),
86
+ })
@@ -0,0 +1,65 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+
9
+ import { createFileRoute } from '@tanstack/react-router'
10
+
11
+ import { AccountSelfContainer } from '@byline/ui'
12
+ import { Container, Section } from '@infonomic/uikit/react'
13
+
14
+ import { BreadcrumbsClient } from '../admin-shell/chrome/breadcrumbs/breadcrumbs-client.js'
15
+ import { type AccountResponse, getAccount } from '../server-fns/admin-account/index.js'
16
+
17
+ function displayNameFor(account: {
18
+ given_name: string | null
19
+ family_name: string | null
20
+ email: string
21
+ }): string {
22
+ const parts = [account.given_name, account.family_name].filter(
23
+ (part): part is string => typeof part === 'string' && part.length > 0
24
+ )
25
+ return parts.length > 0 ? parts.join(' ') : account.email
26
+ }
27
+
28
+ export function createAdminAccountRoute(path: string) {
29
+ // biome-ignore lint/suspicious/noExplicitAny: dynamic path bypasses route-tree typing
30
+ const Route: any = createFileRoute(path as never)({
31
+ loader: async () => {
32
+ // The slim `user` on the admin route's context (CurrentAdminUser)
33
+ // doesn't carry `vid` or the createdAt/updatedAt/lastLogin
34
+ // timestamps, so the self-service drawer needs the full row.
35
+ const account = await getAccount({ data: {} })
36
+ return { account }
37
+ },
38
+ component: function AdminAccountComponent() {
39
+ const { account } = Route.useLoaderData() as { account: AccountResponse }
40
+ return (
41
+ <>
42
+ <BreadcrumbsClient
43
+ breadcrumbs={[
44
+ { label: 'Dashboard', href: '/admin' },
45
+ { label: 'Account', href: '/admin/account' },
46
+ ]}
47
+ />
48
+ <Section className="pb-2">
49
+ <Container>
50
+ <h1 className="mb-2">{displayNameFor(account)}</h1>
51
+ <p className="muted">Manage your own profile and password.</p>
52
+ </Container>
53
+ </Section>
54
+ <Section>
55
+ <Container>
56
+ <AccountSelfContainer account={account} />
57
+ </Container>
58
+ </Section>
59
+ </>
60
+ )
61
+ },
62
+ })
63
+
64
+ return Route
65
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+
9
+ import { createFileRoute } from '@tanstack/react-router'
10
+
11
+ import { getClientConfig } from '@byline/core'
12
+
13
+ import { BreadcrumbsClient } from '../admin-shell/chrome/breadcrumbs/breadcrumbs-client.js'
14
+ import { AdminDashboard } from '../admin-shell/chrome/dashboard.js'
15
+ import { type CollectionStatusCount, getCollectionStats } from '../server-fns/collections/index.js'
16
+
17
+ export function createAdminDashboardRoute(path: string) {
18
+ // biome-ignore lint/suspicious/noExplicitAny: dynamic path bypasses route-tree typing
19
+ const Route: any = createFileRoute(path as never)({
20
+ loader: async () => {
21
+ const { collections } = getClientConfig()
22
+ const statsMap: Record<string, CollectionStatusCount[]> = {}
23
+
24
+ await Promise.all(
25
+ collections
26
+ .filter((c) => c.showStats === true)
27
+ .map(async (c) => {
28
+ try {
29
+ statsMap[c.path] = await getCollectionStats(c.path)
30
+ } catch {
31
+ statsMap[c.path] = []
32
+ }
33
+ })
34
+ )
35
+
36
+ return { statsMap }
37
+ },
38
+ component: function AdminDashboardComponent() {
39
+ const { statsMap } = Route.useLoaderData() as {
40
+ statsMap: Record<string, CollectionStatusCount[]>
41
+ }
42
+ return (
43
+ <>
44
+ <BreadcrumbsClient breadcrumbs={[{ label: 'Dashboard', href: '/admin' }]} />
45
+ <AdminDashboard statsMap={statsMap} />
46
+ </>
47
+ )
48
+ },
49
+ })
50
+
51
+ return Route
52
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+
9
+ /**
10
+ * Admin shell layout — authenticated-only.
11
+ *
12
+ * `beforeLoad` resolves the current admin user (which internally verifies
13
+ * the session cookies, refreshes transparently when needed, and throws
14
+ * `ERR_UNAUTHENTICATED` when there is no session). On unauthenticated
15
+ * requests we redirect to `/sign-in` with a `callbackUrl` so the user
16
+ * lands back on the page they originally requested.
17
+ *
18
+ * The resolved user is returned as route context so every nested admin
19
+ * route (and the `AdminAppBar`) can read it without an extra fetch.
20
+ */
21
+
22
+ import { createFileRoute, Outlet, redirect } from '@tanstack/react-router'
23
+
24
+ import { BylineAdminServicesProvider, BylineFieldServicesProvider } from '@byline/ui'
25
+ import cx from 'classnames'
26
+
27
+ import { AdminAppBar } from '../admin-shell/chrome/admin-app-bar.js'
28
+ import layoutStyles from '../admin-shell/chrome/admin-layout.module.css'
29
+ import { Content } from '../admin-shell/chrome/content.js'
30
+ import { DrawerToggle } from '../admin-shell/chrome/drawer-toggle.js'
31
+ import { AdminMenuDrawer } from '../admin-shell/chrome/menu-drawer.js'
32
+ import { AdminMenuProvider } from '../admin-shell/chrome/menu-provider.js'
33
+ import { RouteError, RouteNotFound } from '../admin-shell/chrome/route-error.js'
34
+ import { bylineAdminServices } from '../integrations/byline-admin-services.js'
35
+ import { bylineFieldServices } from '../integrations/byline-field-services.js'
36
+ import { getCurrentAdminUser } from '../server-fns/auth/index.js'
37
+
38
+ interface AdminLayoutOpts {
39
+ /** Path users are redirected to when unauthenticated. Defaults to `/sign-in`. */
40
+ signInPath?: string
41
+ }
42
+
43
+ export function createAdminLayoutRoute(path: string, opts: AdminLayoutOpts = {}) {
44
+ const signInPath = opts.signInPath ?? '/sign-in'
45
+
46
+ // biome-ignore lint/suspicious/noExplicitAny: dynamic path bypasses route-tree typing
47
+ const Route: any = createFileRoute(path as never)({
48
+ beforeLoad: async ({ location }: { location: { href: string } }) => {
49
+ try {
50
+ const user = await getCurrentAdminUser()
51
+ return { user }
52
+ } catch {
53
+ // `getCurrentAdminUser` (via `getAdminRequestContext`) throws
54
+ // `ERR_UNAUTHENTICATED` or a related auth error when no valid
55
+ // session is present. Redirect to sign-in with the original path
56
+ // so we can send the user back after they authenticate.
57
+ throw redirect({
58
+ to: signInPath as never,
59
+ search: { callbackUrl: location.href } as never,
60
+ })
61
+ }
62
+ },
63
+ component: function AdminLayoutComponent() {
64
+ const { user } = Route.useRouteContext() as {
65
+ user: Awaited<ReturnType<typeof getCurrentAdminUser>>
66
+ }
67
+ return (
68
+ <BylineAdminServicesProvider services={bylineAdminServices}>
69
+ <BylineFieldServicesProvider services={bylineFieldServices}>
70
+ <AdminMenuProvider>
71
+ <AdminAppBar user={user} />
72
+ <main className={cx('byline-admin-layout-main', layoutStyles.main)}>
73
+ <DrawerToggle />
74
+ <AdminMenuDrawer />
75
+ <Content>
76
+ <Outlet />
77
+ </Content>
78
+ </main>
79
+ </AdminMenuProvider>
80
+ </BylineFieldServicesProvider>
81
+ </BylineAdminServicesProvider>
82
+ )
83
+ },
84
+ errorComponent: RouteError,
85
+ notFoundComponent: RouteNotFound,
86
+ })
87
+
88
+ return Route
89
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+
9
+ import { createFileRoute } from '@tanstack/react-router'
10
+
11
+ import { AbilitiesInspector } from '@byline/ui'
12
+
13
+ import { BreadcrumbsClient } from '../admin-shell/chrome/breadcrumbs/breadcrumbs-client.js'
14
+ import {
15
+ type ListRegisteredAbilitiesResponse,
16
+ listRegisteredAbilities,
17
+ } from '../server-fns/admin-permissions/index.js'
18
+
19
+ export function createAdminPermissionsRoute(path: string) {
20
+ // biome-ignore lint/suspicious/noExplicitAny: dynamic path bypasses route-tree typing
21
+ const Route: any = createFileRoute(path as never)({
22
+ loader: async () => {
23
+ const data = await listRegisteredAbilities()
24
+ return { data }
25
+ },
26
+ component: function AdminPermissionsComponent() {
27
+ const { data } = Route.useLoaderData() as { data: ListRegisteredAbilitiesResponse }
28
+ return (
29
+ <>
30
+ <BreadcrumbsClient
31
+ breadcrumbs={[
32
+ { label: 'Dashboard', href: '/admin' },
33
+ { label: 'Permissions', href: '/admin/permissions' },
34
+ ]}
35
+ />
36
+ <AbilitiesInspector data={data} />
37
+ </>
38
+ )
39
+ },
40
+ })
41
+
42
+ return Route
43
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+
9
+ import { createFileRoute, notFound } from '@tanstack/react-router'
10
+
11
+ import { Container, Section } from '@infonomic/uikit/react'
12
+
13
+ import { RoleContainer } from '../admin-shell/admin-roles/container.js'
14
+ import { BreadcrumbsClient } from '../admin-shell/chrome/breadcrumbs/breadcrumbs-client.js'
15
+ import {
16
+ getRoleAbilities,
17
+ type ListRegisteredAbilitiesResponse,
18
+ listRegisteredAbilities,
19
+ } from '../server-fns/admin-permissions/index.js'
20
+ import { type AdminRoleResponse, getAdminRole } from '../server-fns/admin-roles/index.js'
21
+
22
+ interface LoaderData {
23
+ role: AdminRoleResponse
24
+ registered: ListRegisteredAbilitiesResponse
25
+ initialAbilities: string[]
26
+ }
27
+
28
+ export function createAdminRoleEditRoute(path: string) {
29
+ // biome-ignore lint/suspicious/noExplicitAny: dynamic path bypasses route-tree typing
30
+ const Route: any = createFileRoute(path as never)({
31
+ loader: async ({ params }: { params: { id: string } }): Promise<LoaderData> => {
32
+ try {
33
+ // Three independent reads — fetch in parallel so the role-detail
34
+ // page lands ready to open the permissions editor without a
35
+ // second waterfall.
36
+ const [role, registered, currentAbilities] = await Promise.all([
37
+ getAdminRole({ data: { id: params.id } }),
38
+ listRegisteredAbilities(),
39
+ getRoleAbilities({ data: { id: params.id } }),
40
+ ])
41
+ return { role, registered, initialAbilities: currentAbilities.abilities }
42
+ } catch (err) {
43
+ // Match on the string code rather than importing the error class —
44
+ // the subpath would pull argon2 into the browser bundle transitively.
45
+ if (
46
+ typeof err === 'object' &&
47
+ err !== null &&
48
+ 'code' in err &&
49
+ ((err as { code?: unknown }).code === 'admin.roles.notFound' ||
50
+ (err as { code?: unknown }).code === 'admin.permissions.roleNotFound')
51
+ ) {
52
+ throw notFound()
53
+ }
54
+ throw err
55
+ }
56
+ },
57
+ component: function AdminRoleEditComponent() {
58
+ const { role, registered, initialAbilities } = Route.useLoaderData() as LoaderData
59
+ return (
60
+ <>
61
+ <BreadcrumbsClient
62
+ breadcrumbs={[
63
+ { label: 'Dashboard', href: '/admin' },
64
+ { label: 'Admin Roles', href: '/admin/roles' },
65
+ { label: 'Role', href: `/admin/roles/${role.id}` },
66
+ ]}
67
+ />
68
+ <Section className="py-5 pb-2">
69
+ <Container>
70
+ <h1 className="mb-2">{role.name}</h1>
71
+ </Container>
72
+ </Section>
73
+ <Section>
74
+ <Container>
75
+ <RoleContainer
76
+ role={role}
77
+ registered={registered}
78
+ initialAbilities={initialAbilities}
79
+ />
80
+ </Container>
81
+ </Section>
82
+ </>
83
+ )
84
+ },
85
+ })
86
+
87
+ return Route
88
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+
9
+ import { createFileRoute } from '@tanstack/react-router'
10
+
11
+ import { AdminRolesListView } from '../admin-shell/admin-roles/list.js'
12
+ import { BreadcrumbsClient } from '../admin-shell/chrome/breadcrumbs/breadcrumbs-client.js'
13
+ import { type AdminRoleListResponse, listAdminRoles } from '../server-fns/admin-roles/index.js'
14
+
15
+ export function createAdminRolesListRoute(path: string) {
16
+ // biome-ignore lint/suspicious/noExplicitAny: dynamic path bypasses route-tree typing
17
+ const Route: any = createFileRoute(path as never)({
18
+ loader: async () => {
19
+ const data = await listAdminRoles()
20
+ return { data }
21
+ },
22
+ component: function AdminRolesListComponent() {
23
+ const { data } = Route.useLoaderData() as { data: AdminRoleListResponse }
24
+ return (
25
+ <>
26
+ <BreadcrumbsClient
27
+ breadcrumbs={[
28
+ { label: 'Dashboard', href: '/admin' },
29
+ { label: 'Admin Roles', href: '/admin/roles' },
30
+ ]}
31
+ />
32
+ <AdminRolesListView data={data} />
33
+ </>
34
+ )
35
+ },
36
+ })
37
+
38
+ return Route
39
+ }
@@ -0,0 +1,105 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+
9
+ import { createFileRoute, notFound } from '@tanstack/react-router'
10
+
11
+ import { Container, Section } from '@infonomic/uikit/react'
12
+
13
+ import { AccountContainer } from '../admin-shell/admin-users/container.js'
14
+ import { BreadcrumbsClient } from '../admin-shell/chrome/breadcrumbs/breadcrumbs-client.js'
15
+ import { type AdminRoleResponse, listAdminRoles } from '../server-fns/admin-roles/index.js'
16
+ import {
17
+ type AdminUserResponse,
18
+ getAdminUser,
19
+ getUserRoles,
20
+ } from '../server-fns/admin-users/index.js'
21
+
22
+ interface LoaderData {
23
+ user: AdminUserResponse
24
+ allRoles: AdminRoleResponse[]
25
+ initialUserRoles: AdminRoleResponse[]
26
+ }
27
+
28
+ function displayNameFor(user: {
29
+ given_name: string | null
30
+ family_name: string | null
31
+ email: string
32
+ }): string {
33
+ const parts = [user.given_name, user.family_name].filter(
34
+ (part): part is string => typeof part === 'string' && part.length > 0
35
+ )
36
+ return parts.length > 0 ? parts.join(' ') : user.email
37
+ }
38
+
39
+ export function createAdminUserEditRoute(path: string) {
40
+ // biome-ignore lint/suspicious/noExplicitAny: dynamic path bypasses route-tree typing
41
+ const Route: any = createFileRoute(path as never)({
42
+ loader: async ({ params }: { params: { id: string } }): Promise<LoaderData> => {
43
+ try {
44
+ // Three independent reads in parallel — the user row, the full
45
+ // role catalog (for the roles drawer's checkbox list), and the
46
+ // user's current role assignments.
47
+ const [user, rolesList, userRoles] = await Promise.all([
48
+ getAdminUser({ data: { id: params.id } }),
49
+ listAdminRoles(),
50
+ getUserRoles({ data: { userId: params.id } }),
51
+ ])
52
+ return { user, allRoles: rolesList.roles, initialUserRoles: userRoles.roles }
53
+ } catch (err) {
54
+ // Service emits `AdminUsersError(NOT_FOUND)` when the id resolves
55
+ // to no row; the user-roles command uses
56
+ // `admin.roles.userNotFound` for the same condition. Map either
57
+ // to the framework `notFound()` so the route renders the 404
58
+ // boundary rather than the generic error boundary. Matching on
59
+ // the string avoids importing from `@byline/admin` in a
60
+ // client-reachable module — the subpath pulls argon2 into the
61
+ // browser bundle transitively.
62
+ if (
63
+ typeof err === 'object' &&
64
+ err !== null &&
65
+ 'code' in err &&
66
+ ((err as { code?: unknown }).code === 'admin.users.notFound' ||
67
+ (err as { code?: unknown }).code === 'admin.roles.userNotFound')
68
+ ) {
69
+ throw notFound()
70
+ }
71
+ throw err
72
+ }
73
+ },
74
+ component: function AdminUserEditComponent() {
75
+ const { user, allRoles, initialUserRoles } = Route.useLoaderData() as LoaderData
76
+ return (
77
+ <>
78
+ <BreadcrumbsClient
79
+ breadcrumbs={[
80
+ { label: 'Dashboard', href: '/admin' },
81
+ { label: 'Admin Users', href: '/admin/users' },
82
+ { label: 'User', href: `/admin/users/${user.id}` },
83
+ ]}
84
+ />
85
+ <Section className="py-5 pb-2">
86
+ <Container>
87
+ <h1 className="mb-2">{displayNameFor(user)}</h1>
88
+ </Container>
89
+ </Section>
90
+ <Section>
91
+ <Container>
92
+ <AccountContainer
93
+ user={user}
94
+ allRoles={allRoles}
95
+ initialUserRoles={initialUserRoles}
96
+ />
97
+ </Container>
98
+ </Section>
99
+ </>
100
+ )
101
+ },
102
+ })
103
+
104
+ return Route
105
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ */
8
+
9
+ import { createFileRoute } from '@tanstack/react-router'
10
+
11
+ import { z } from 'zod'
12
+
13
+ import { AdminUsersListView } from '../admin-shell/admin-users/list.js'
14
+ import { BreadcrumbsClient } from '../admin-shell/chrome/breadcrumbs/breadcrumbs-client.js'
15
+ import { type AdminUserListResponse, listAdminUsers } from '../server-fns/admin-users/index.js'
16
+
17
+ const orderSchema = z.enum([
18
+ 'given_name',
19
+ 'family_name',
20
+ 'email',
21
+ 'username',
22
+ 'created_at',
23
+ 'updated_at',
24
+ ])
25
+
26
+ const searchSchema = z.object({
27
+ page: z.coerce.number().int().min(1).optional(),
28
+ page_size: z.coerce.number().int().min(1).max(100).optional(),
29
+ query: z.string().optional(),
30
+ order: orderSchema.optional(),
31
+ desc: z.coerce.boolean().optional(),
32
+ })
33
+
34
+ export function createAdminUsersListRoute(path: string) {
35
+ // biome-ignore lint/suspicious/noExplicitAny: dynamic path bypasses route-tree typing
36
+ const Route: any = createFileRoute(path as never)({
37
+ validateSearch: searchSchema,
38
+ loaderDeps: ({ search }: { search: z.infer<typeof searchSchema> }) => ({
39
+ page: search.page,
40
+ page_size: search.page_size,
41
+ query: search.query,
42
+ order: search.order,
43
+ desc: search.desc,
44
+ }),
45
+ loader: async ({
46
+ deps,
47
+ }: {
48
+ deps: {
49
+ page?: number
50
+ page_size?: number
51
+ query?: string
52
+ order?: string
53
+ desc?: boolean
54
+ }
55
+ }) => {
56
+ const data = await listAdminUsers({
57
+ data: {
58
+ page: deps.page,
59
+ pageSize: deps.page_size,
60
+ query: deps.query,
61
+ order: deps.order as never,
62
+ desc: deps.desc,
63
+ },
64
+ })
65
+ return { data }
66
+ },
67
+ component: function AdminUsersListComponent() {
68
+ const { data } = Route.useLoaderData() as { data: AdminUserListResponse }
69
+ return (
70
+ <>
71
+ <BreadcrumbsClient
72
+ breadcrumbs={[
73
+ { label: 'Dashboard', href: '/admin' },
74
+ { label: 'Admin Users', href: '/admin/users' },
75
+ ]}
76
+ />
77
+ <AdminUsersListView data={data} />
78
+ </>
79
+ )
80
+ },
81
+ })
82
+
83
+ return Route
84
+ }