@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,30 @@
1
+ /**
2
+ * DrawerToggle — fixed-position chevron toggle docked to the menu drawer's edge.
3
+ *
4
+ * Override handle: .byline-admin-drawer-toggle
5
+ */
6
+
7
+ .root,
8
+ :global(.byline-admin-drawer-toggle) {
9
+ position: fixed;
10
+ top: 38px;
11
+ z-index: 50;
12
+ transition: all 300ms ease-in-out;
13
+ }
14
+
15
+ .rootClosed,
16
+ :global(.byline-admin-drawer-toggle-closed) {
17
+ left: 8px;
18
+ }
19
+
20
+ .rootOpen,
21
+ :global(.byline-admin-drawer-toggle-open) {
22
+ left: 160px;
23
+ }
24
+
25
+ .button,
26
+ :global(.byline-admin-drawer-toggle-button) {
27
+ outline: none;
28
+ min-width: 42px;
29
+ height: 36px;
30
+ }
@@ -0,0 +1,62 @@
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 { IconButton, Tooltip } from '@infonomic/uikit/react'
10
+ import cx from 'classnames'
11
+
12
+ import styles from './drawer-toggle.module.css'
13
+ import { useAdminMenu } from './menu-provider.js'
14
+
15
+ export function DrawerToggle() {
16
+ const { toggleDrawer, drawerOpen } = useAdminMenu()
17
+
18
+ return (
19
+ <div
20
+ className={cx('byline-admin-drawer-toggle', styles.root, {
21
+ 'byline-admin-drawer-toggle-open': drawerOpen,
22
+ [styles.rootOpen]: drawerOpen,
23
+ 'byline-admin-drawer-toggle-closed': !drawerOpen,
24
+ [styles.rootClosed]: !drawerOpen,
25
+ })}
26
+ >
27
+ <Tooltip
28
+ text={drawerOpen ? 'Collapse sidebar' : 'Expand sidebar'}
29
+ side="right"
30
+ sideOffset={8}
31
+ >
32
+ <IconButton
33
+ type="button"
34
+ className={cx('byline-admin-drawer-toggle-button', styles.button)}
35
+ variant="text"
36
+ intent="noeffect"
37
+ square={true}
38
+ size="sm"
39
+ onClick={toggleDrawer}
40
+ aria-label={drawerOpen ? 'Collapse admin menu' : 'Expand admin menu'}
41
+ aria-controls="admin-menu"
42
+ >
43
+ <svg
44
+ xmlns="http://www.w3.org/2000/svg"
45
+ width="18"
46
+ height="18"
47
+ viewBox="0 0 24 24"
48
+ fill="none"
49
+ stroke="currentColor"
50
+ strokeWidth="2"
51
+ strokeLinecap="round"
52
+ aria-label={drawerOpen ? 'Collapse sidebar' : 'Expand sidebar'}
53
+ strokeLinejoin="round"
54
+ >
55
+ <rect width="18" height="18" x="3" y="3" rx="2" />
56
+ <path d="M9 3v18" />
57
+ </svg>
58
+ </IconButton>
59
+ </Tooltip>
60
+ </div>
61
+ )
62
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Hamburger — icon button that toggles the admin menu drawer.
3
+ *
4
+ * Override handle: .byline-admin-hamburger
5
+ *
6
+ * Uses uikit's pre-existing global `.component--hamburger` styles for
7
+ * the bar visuals; this module just hosts the wrapper override surface.
8
+ */
9
+
10
+ .button,
11
+ :global(.byline-admin-hamburger) {
12
+ background: transparent;
13
+ border: 0;
14
+ padding: 0;
15
+ cursor: pointer;
16
+ }
@@ -0,0 +1,56 @@
1
+ 'use client'
2
+
3
+ import type React from 'react'
4
+
5
+ import cx from 'classnames'
6
+
7
+ import styles from './hamburger.module.css'
8
+ import { useAdminMenu } from './menu-provider.js'
9
+
10
+ interface HamburgerProps {
11
+ className?: string
12
+ /** Tailwind/utility class string applied to the inner bar; defaults to a white-on-dark fill. */
13
+ color?: string
14
+ activeBorderColor?: string
15
+ }
16
+
17
+ export function Hamburger({
18
+ className,
19
+ color = 'bg-white before:bg-white after:bg-white',
20
+ activeBorderColor: _activeBorderColor,
21
+ ...other
22
+ }: HamburgerProps): React.JSX.Element {
23
+ const { toggleDrawer } = useAdminMenu()
24
+
25
+ // Hard code the drawer hamburger to always closed
26
+ // to prevent the 'X' pattern from being the default
27
+ // on desktop. For a drawer like this - the hamburger
28
+ // icon doesn't have to animate.
29
+ const drawerOpen = false
30
+
31
+ const handleClick = (event: React.MouseEvent<HTMLButtonElement>): void => {
32
+ if (event != null) event.stopPropagation()
33
+ toggleDrawer()
34
+ }
35
+
36
+ return (
37
+ <button
38
+ onClick={handleClick}
39
+ className={cx(
40
+ 'byline-admin-hamburger',
41
+ styles.button,
42
+ `component--hamburger ${drawerOpen ? 'is_active' : ''}`,
43
+ className
44
+ )}
45
+ tabIndex={0}
46
+ aria-label="Open admin menu"
47
+ aria-controls="admin-menu"
48
+ aria-haspopup="true"
49
+ {...other}
50
+ >
51
+ <span className="box" aria-hidden="true">
52
+ <span className={cx('inner', color)} />
53
+ </span>
54
+ </button>
55
+ )
56
+ }
@@ -0,0 +1,47 @@
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
+ * Loosely-typed re-exports of TanStack Router primitives. The package
9
+ * has no view of the host's generated route tree at type-check time, so
10
+ * the strict generic typing on `Link` and `useNavigate` collapses
11
+ * `params`/`search`/`to` to `never`. These wrappers relax the call
12
+ * signature; runtime behaviour is identical.
13
+ */
14
+
15
+ import type React from 'react'
16
+ import { Link as TanStackLink, useNavigate as useTanStackNavigate } from '@tanstack/react-router'
17
+
18
+ export interface LooseLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
19
+ to?: string
20
+ // biome-ignore lint/suspicious/noExplicitAny: untyped router params
21
+ params?: Record<string, any>
22
+ // biome-ignore lint/suspicious/noExplicitAny: untyped router search
23
+ search?: any
24
+ resetScroll?: boolean
25
+ replace?: boolean
26
+ // biome-ignore lint/suspicious/noExplicitAny: untyped passthrough props
27
+ [key: string]: any
28
+ }
29
+
30
+ export const Link = TanStackLink as unknown as (props: LooseLinkProps) => React.JSX.Element
31
+
32
+ export interface LooseNavigateOpts {
33
+ to?: string
34
+ // biome-ignore lint/suspicious/noExplicitAny: untyped router params
35
+ params?: Record<string, any>
36
+ // biome-ignore lint/suspicious/noExplicitAny: untyped router search
37
+ search?: any
38
+ replace?: boolean
39
+ // biome-ignore lint/suspicious/noExplicitAny: untyped passthrough
40
+ [key: string]: any
41
+ }
42
+
43
+ export type LooseNavigate = (opts: LooseNavigateOpts) => void
44
+
45
+ export function useNavigate(): LooseNavigate {
46
+ return useTanStackNavigate() as unknown as LooseNavigate
47
+ }
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Admin menu drawer.
3
+ *
4
+ * Override handles:
5
+ * .byline-admin-menu-drawer-aside — outer <aside> wrapper
6
+ * .byline-admin-menu-drawer — <nav> inside the aside
7
+ * .byline-admin-menu-item — each <li.menu-item>
8
+ * .byline-admin-menu-separator — divider <li>
9
+ *
10
+ * Inner classnames (`.menu-item`, `.menu-separator`, `.icon`, `.label`,
11
+ * `.compact`, `.active`) stay as plain string class names so the CSS rule
12
+ * chains stay readable; targeted via :global in this module.
13
+ */
14
+
15
+ .aside,
16
+ :global(.byline-admin-menu-drawer-aside) {
17
+ display: flex;
18
+ flex-direction: column;
19
+ border-right: var(--border-width-thin) var(--border-style-solid) var(--gray-50);
20
+ background-color: var(--canvas-25);
21
+ z-index: 15;
22
+ transition: all 300ms ease-in-out;
23
+ }
24
+
25
+ :is([data-theme="dark"], :global(.dark)) .aside,
26
+ :is([data-theme="dark"], :global(.dark)) :global(.byline-admin-menu-drawer-aside) {
27
+ border-right-color: var(--canvas-700);
28
+ background-color: var(--canvas-800);
29
+ }
30
+
31
+ .asideMobile,
32
+ :global(.byline-admin-menu-drawer-aside-mobile) {
33
+ position: fixed;
34
+ top: 45px;
35
+ bottom: 0;
36
+ left: 0;
37
+ }
38
+
39
+ .asideMobileOpen,
40
+ :global(.byline-admin-menu-drawer-aside-mobile-open) {
41
+ width: 210px;
42
+ }
43
+
44
+ .asideMobileClosed,
45
+ :global(.byline-admin-menu-drawer-aside-mobile-closed) {
46
+ width: 0;
47
+ overflow: hidden;
48
+ }
49
+
50
+ .asideDesktop,
51
+ :global(.byline-admin-menu-drawer-aside-desktop) {
52
+ position: relative;
53
+ align-self: stretch;
54
+ flex-shrink: 0;
55
+ }
56
+
57
+ .asideDesktopOpen,
58
+ :global(.byline-admin-menu-drawer-aside-desktop-open) {
59
+ width: 210px;
60
+ }
61
+
62
+ .asideDesktopClosed,
63
+ :global(.byline-admin-menu-drawer-aside-desktop-closed) {
64
+ width: 60px;
65
+ }
66
+
67
+ .nav,
68
+ :global(.byline-admin-menu-drawer) {
69
+ position: sticky;
70
+ top: 55px;
71
+ margin: 0;
72
+ max-height: calc(100vh - 60px);
73
+ overflow-y: auto;
74
+ }
75
+
76
+ .nav ul,
77
+ :global(.byline-admin-menu-drawer) ul {
78
+ margin: 1.4rem 0.5rem 0.5rem;
79
+ padding: 0;
80
+ list-style: none;
81
+ list-style-position: outside;
82
+ }
83
+
84
+ .nav ul :global(li.menu-item),
85
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item) {
86
+ border-radius: 4px;
87
+ margin: 0;
88
+ transition: all 200ms ease;
89
+ }
90
+
91
+ .nav ul :global(li.menu-item .icon),
92
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item .icon) {
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: center;
96
+ width: 24px;
97
+ }
98
+
99
+ .nav ul :global(li.menu-item .label),
100
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item .label) {
101
+ line-height: 0;
102
+ }
103
+
104
+ .nav ul :global(li.menu-item.compact .label),
105
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item.compact .label) {
106
+ display: none;
107
+ }
108
+
109
+ .nav ul :global(li.menu-item.active),
110
+ .nav ul :global(li.menu-item:hover),
111
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item.active),
112
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item:hover) {
113
+ background-color: var(--canvas-50);
114
+ }
115
+
116
+ .nav ul :global(li.menu-item) :is(a, button),
117
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item) :is(a, button) {
118
+ display: flex;
119
+ align-items: center;
120
+ justify-content: flex-start;
121
+ width: 100%;
122
+ padding: 7px;
123
+ gap: 8px;
124
+ color: #111111;
125
+ font-size: 0.9rem;
126
+ font-weight: normal;
127
+ text-decoration: none;
128
+ background: none;
129
+ border: none;
130
+ cursor: pointer;
131
+ text-align: left;
132
+ }
133
+
134
+ .nav ul :global(li.menu-item) :is(a, button):disabled,
135
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item) :is(a, button):disabled {
136
+ cursor: not-allowed;
137
+ opacity: 0.6;
138
+ }
139
+
140
+ .nav ul :global(li.menu-item.compact) :is(a, button),
141
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item.compact) :is(a, button) {
142
+ justify-content: center;
143
+ }
144
+
145
+ .nav ul :global(li.menu-item.active) :is(a, button),
146
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-item.active) :is(a, button) {
147
+ color: #111111;
148
+ text-decoration: none;
149
+ }
150
+
151
+ .nav ul :global(li.menu-separator),
152
+ :global(.byline-admin-menu-drawer) ul :global(li.menu-separator) {
153
+ padding-top: 0.5px;
154
+ margin: 0.75rem auto;
155
+ width: 90%;
156
+ background-color: #dddddd;
157
+ }
158
+
159
+ :is([data-theme="dark"], :global(.dark)) .nav ul :global(li.menu-item) :is(a, button),
160
+ :is([data-theme="dark"], :global(.dark))
161
+ :global(.byline-admin-menu-drawer)
162
+ ul
163
+ :global(li.menu-item)
164
+ :is(a, button) {
165
+ color: #dddddd;
166
+ }
167
+
168
+ :is([data-theme="dark"], :global(.dark)) .nav ul :global(li.menu-item.active) :is(a, button),
169
+ :is([data-theme="dark"], :global(.dark))
170
+ :global(.byline-admin-menu-drawer)
171
+ ul
172
+ :global(li.menu-item.active)
173
+ :is(a, button) {
174
+ color: #ffffff;
175
+ }
176
+
177
+ :is([data-theme="dark"], :global(.dark)) .nav ul :global(li.menu-item.active),
178
+ :is([data-theme="dark"], :global(.dark)) .nav ul :global(li.menu-item:hover),
179
+ :is([data-theme="dark"], :global(.dark))
180
+ :global(.byline-admin-menu-drawer)
181
+ ul
182
+ :global(li.menu-item.active),
183
+ :is([data-theme="dark"], :global(.dark))
184
+ :global(.byline-admin-menu-drawer)
185
+ ul
186
+ :global(li.menu-item:hover) {
187
+ background-color: oklch(from var(--canvas-700) calc(l * 0.95) c h);
188
+ }
189
+
190
+ :is([data-theme="dark"], :global(.dark)) .nav ul :global(li.menu-separator),
191
+ :is([data-theme="dark"], :global(.dark))
192
+ :global(.byline-admin-menu-drawer)
193
+ ul
194
+ :global(li.menu-separator) {
195
+ background-color: #444444;
196
+ }
@@ -0,0 +1,155 @@
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 type React from 'react'
10
+ import { useRouterState } from '@tanstack/react-router'
11
+
12
+ import { ADMIN_PERMISSIONS_ABILITIES } from '@byline/admin/admin-permissions'
13
+ import { ADMIN_ROLES_ABILITIES } from '@byline/admin/admin-roles'
14
+ import { ADMIN_USERS_ABILITIES } from '@byline/admin/admin-users'
15
+ import {
16
+ HomeIcon,
17
+ RolesIcon,
18
+ SettingsSlidersIcon,
19
+ UserIcon,
20
+ UsersIcon,
21
+ } from '@infonomic/uikit/react'
22
+ import cx from 'classnames'
23
+ import { useSwipeable } from 'react-swipeable'
24
+
25
+ import { useAbilities } from '../../integrations/abilities.js'
26
+ import { Link } from './loose-router.js'
27
+ import styles from './menu-drawer.module.css'
28
+ import { useAdminMenu } from './menu-provider.js'
29
+ import { PreviewToggle } from './preview-toggle.js'
30
+
31
+ const isActive = (currentPath: string, linkHref: string): boolean => {
32
+ // Root admin highlights only on exact match so it doesn't stay lit on
33
+ // every admin subpath.
34
+ if (linkHref === '/admin') return currentPath === '/admin'
35
+ return currentPath.startsWith(linkHref)
36
+ }
37
+
38
+ interface MenuItemProps {
39
+ to: string
40
+ label: string
41
+ icon: React.ReactNode
42
+ pathname: string
43
+ compact: boolean
44
+ }
45
+
46
+ function MenuItem({ to, label, icon, pathname, compact }: MenuItemProps) {
47
+ return (
48
+ <li className={cx('menu-item', { active: isActive(pathname, to), compact })}>
49
+ <Link to={to}>
50
+ <span className="icon">{icon}</span>
51
+ <span className="label">{label}</span>
52
+ </Link>
53
+ </li>
54
+ )
55
+ }
56
+
57
+ export function AdminMenuDrawer(): React.JSX.Element | null {
58
+ const pathname = useRouterState({ select: (s) => s.location.pathname })
59
+ const { mobile, drawerOpen, closeDrawer } = useAdminMenu()
60
+
61
+ // Cosmetic ability cues — hide the admin-management section entirely
62
+ // when the user holds none of its read abilities. Server-side
63
+ // `assertAdminActor` is the actual gate for each module's commands;
64
+ // these checks just keep the drawer from advertising areas the user
65
+ // can't enter.
66
+ const { has } = useAbilities()
67
+ const canReadUsers = has(ADMIN_USERS_ABILITIES.read)
68
+ const canReadRoles = has(ADMIN_ROLES_ABILITIES.read)
69
+ const canReadPermissions = has(ADMIN_PERMISSIONS_ABILITIES.read)
70
+ const showAdminSection = canReadUsers || canReadRoles || canReadPermissions
71
+
72
+ const handlers = useSwipeable({
73
+ onSwipedLeft: () => {
74
+ closeDrawer()
75
+ },
76
+ })
77
+
78
+ // Compact = icon-only. Only applies to the desktop-closed state; the
79
+ // mobile overlay always renders with full labels for readability.
80
+ const compact = mobile === false && drawerOpen === false
81
+
82
+ return (
83
+ <aside
84
+ id="admin-menu"
85
+ className={cx('byline-admin-menu-drawer-aside', styles.aside, {
86
+ 'byline-admin-menu-drawer-aside-mobile': mobile === true,
87
+ [styles.asideMobile]: mobile === true,
88
+ 'byline-admin-menu-drawer-aside-mobile-open': mobile === true && drawerOpen === true,
89
+ [styles.asideMobileOpen]: mobile === true && drawerOpen === true,
90
+ 'byline-admin-menu-drawer-aside-mobile-closed': mobile === true && drawerOpen === false,
91
+ [styles.asideMobileClosed]: mobile === true && drawerOpen === false,
92
+ 'byline-admin-menu-drawer-aside-desktop': mobile === false,
93
+ [styles.asideDesktop]: mobile === false,
94
+ 'byline-admin-menu-drawer-aside-desktop-open': mobile === false && drawerOpen === true,
95
+ [styles.asideDesktopOpen]: mobile === false && drawerOpen === true,
96
+ 'byline-admin-menu-drawer-aside-desktop-closed': mobile === false && drawerOpen === false,
97
+ [styles.asideDesktopClosed]: mobile === false && drawerOpen === false,
98
+ })}
99
+ {...handlers}
100
+ >
101
+ <nav className={cx('byline-admin-menu-drawer admin-menu-drawer', styles.nav)}>
102
+ <ul>
103
+ <MenuItem
104
+ to="/admin"
105
+ label="Dashboard"
106
+ icon={<HomeIcon width="20px" height="20px" />}
107
+ pathname={pathname}
108
+ compact={compact}
109
+ />
110
+ {showAdminSection && (
111
+ <>
112
+ <li className="menu-separator" />
113
+ {canReadUsers && (
114
+ <MenuItem
115
+ to="/admin/users"
116
+ label="Admin Users"
117
+ icon={<UsersIcon width="20px" height="20px" />}
118
+ pathname={pathname}
119
+ compact={compact}
120
+ />
121
+ )}
122
+ {canReadRoles && (
123
+ <MenuItem
124
+ to="/admin/roles"
125
+ label="Admin Roles"
126
+ icon={<RolesIcon width="20px" height="20px" />}
127
+ pathname={pathname}
128
+ compact={compact}
129
+ />
130
+ )}
131
+ {canReadPermissions && (
132
+ <MenuItem
133
+ to="/admin/permissions"
134
+ label="Permissions"
135
+ icon={<SettingsSlidersIcon width="20px" height="20px" />}
136
+ pathname={pathname}
137
+ compact={compact}
138
+ />
139
+ )}
140
+ </>
141
+ )}
142
+ <li className="menu-separator" />
143
+ <PreviewToggle compact={compact} />
144
+ <MenuItem
145
+ to="/admin/account"
146
+ label="Account"
147
+ icon={<UserIcon />}
148
+ pathname={pathname}
149
+ compact={compact}
150
+ />
151
+ </ul>
152
+ </nav>
153
+ </aside>
154
+ )
155
+ }
@@ -0,0 +1,95 @@
1
+ 'use client'
2
+
3
+ /**
4
+ * This Source Code is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+ *
8
+ * Copyright (c) Infonomic Company Limited
9
+ */
10
+
11
+ import type React from 'react'
12
+ import { createContext, useContext, useEffect, useMemo, useRef, useState } from 'react'
13
+ import { useRouterState } from '@tanstack/react-router'
14
+
15
+ import { useMediaQuery } from './use-media-query.js'
16
+
17
+ interface AdminMenuContextType {
18
+ mobile: boolean
19
+ drawerOpen: boolean
20
+ toggleDrawer: () => void
21
+ closeDrawer: () => void
22
+ }
23
+ const MenuContext = createContext<AdminMenuContextType | undefined>(undefined)
24
+
25
+ interface AdminMenuProviderProps {
26
+ children: React.ReactNode
27
+ }
28
+
29
+ /**
30
+ * Routes that want the drawer closed by default to maximise workspace.
31
+ * Currently collection list / detail / history / api views — a non-admin
32
+ * editor is rarely looking at the left nav while laying out a document.
33
+ *
34
+ * The rule fires on *transitions* into and out of the wide region: entering
35
+ * closes the drawer, leaving restores it open. Moving between pages inside
36
+ * the region preserves whatever the user last did with the hamburger, so a
37
+ * deliberate open stays open.
38
+ */
39
+ function isWideRoute(pathname: string): boolean {
40
+ return pathname.startsWith('/admin/collections')
41
+ }
42
+
43
+ export function AdminMenuProvider({ children }: AdminMenuProviderProps): React.JSX.Element {
44
+ const pathname = useRouterState({ select: (s) => s.location.pathname })
45
+ // Mobile-first: assume mobile until the media query resolves so the drawer
46
+ // doesn't flash open before closing on small screens.
47
+ const mobile = useMediaQuery('(max-width: 800px)') ?? true
48
+ const [drawerOpen, setDrawerState] = useState(false)
49
+ // `null` = first effect run; after that we only reset drawer state on
50
+ // narrow ↔ wide transitions so manual toggles survive same-area navigation.
51
+ const prevIsWideRef = useRef<boolean | null>(null)
52
+
53
+ useEffect(() => {
54
+ const nowWide = isWideRoute(pathname)
55
+ const prevWide = prevIsWideRef.current
56
+ prevIsWideRef.current = nowWide
57
+
58
+ if (mobile) {
59
+ setDrawerState(false)
60
+ return
61
+ }
62
+
63
+ if (prevWide === null || prevWide !== nowWide) {
64
+ // Mount, or a wide ↔ narrow transition.
65
+ setDrawerState(!nowWide)
66
+ }
67
+ // Same-area navigation — preserve the user's manual toggle.
68
+ }, [pathname, mobile])
69
+
70
+ const contextValue = useMemo(() => {
71
+ const toggleDrawer = (): void => {
72
+ setDrawerState((prev) => !prev)
73
+ }
74
+
75
+ const closeDrawer = (): void => {
76
+ if (mobile === true) {
77
+ setDrawerState(false)
78
+ }
79
+ }
80
+
81
+ return { mobile, drawerOpen, toggleDrawer, closeDrawer }
82
+ }, [mobile, drawerOpen])
83
+
84
+ return <MenuContext.Provider value={contextValue}>{children}</MenuContext.Provider>
85
+ }
86
+
87
+ function useAdminMenu(): AdminMenuContextType {
88
+ const context = useContext(MenuContext)
89
+ if (context === undefined) {
90
+ throw new Error('useAdminMenu must be used within an AdminMenuProvider')
91
+ }
92
+ return context
93
+ }
94
+
95
+ export { useAdminMenu }